اطلاعیه

Collapse
No announcement yet.

مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

    تو این پروژه من میخوام رمز رو تو یه متغیر تو eeprom میکرو تعریف کنم بطوریکه هر دفعه بعد از راه اندازی مجدد رمز کاربر پاک نشه.برای تعریفش مشکلی ندارم ولی وقتی میخوام رمز تو eeprom رو با رمز وارد شده توسط کاربر مقایه کنم با این که به نظر میاد دو تا رمز یکی هستن ولی جواب مقایسه اشتباه در میاد. :angry:
    من رمز eeprom رو روی lcd هم نمایش دادم ولی به جای رمز فقط یه سری خونه ی مشکی نمایش میده. یه نمونه برنامه که تستش کردم ولی جواب نداد رو میذارم:
    کد:
    #include <mega32.h>
    #include <delay.h>
    #include <stdio.h>
    #include <string.h>
    
    // Alphanumeric LCD functions
    #include <alcd.h>
    
    eeprom char m[11]="1234567890";
    char m1[11]="";
    char m2[11]="1234567890";
    int i;
    
    // Declare your global variables here
    
    void main(void)
    {
    for (i=0;i<11;i++)
    {
    m1[i]=m[i];
    }
    while (1)
       {
        lcd_clear();
       lcd_gotoxy(0,0);
       lcd_putsf("test");
       delay_ms(500);
       if(!strcmp(m2,m1))
       {
       lcd_clear();
       lcd_gotoxy(0,1);
       lcd_puts(m2);
       delay_ms(500); 
       }
       }
    }
    Never regard study as a duty,but as a enviable opportunity to learn to know the liberating influence of beauty in the realm of the spirit for your own personal joy and to the profit of the community to which your later work belongs
    Albert Einstein

    #2
    پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

    سلام
    من اگه جای شما بودم اول ازمتغییر eeprom داخل متغییر ram میریختم بعد مقایسشون میکردم
    اینو چک کن
    گفت که دیوانه نهی لایق این خانه نهی

    دیدگاه


      #3
      پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

      نوشته اصلی توسط moslem1368
      سلام
      من اگه جای شما بودم اول ازمتغییر eeprom داخل متغییر ram میریختم بعد مقایسشون میکردم
      اینو چک کن
      متغیر m1 رو برای همین کار تعریف کردم و متغیر m که رمزو نگه میداره رو تو اون ریختم.البته یه نکته ای که باید بگم اینه که وقتی به جای eeprom متغیر رو از نوع flash تعریف میکنم برنامه درست کار میکنه،مشکل فقط با نوع eeprom پیش میاد.
      Never regard study as a duty,but as a enviable opportunity to learn to know the liberating influence of beauty in the realm of the spirit for your own personal joy and to the profit of the community to which your later work belongs
      Albert Einstein

      دیدگاه


        #4
        پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

        مربع نشان دادن LCD از غلط بودن دیتات نیست . LCD یه کانتراست داره که اونو باید با پتانسیومتر تنظیم کنی تا درست نشون بده .
        و بعدش ...
        داخل آرایه 9 بنویس . چون تو C عضو اول آرایه 0 هست . پس اگه شماره آرایه N باشه N+1 تا عضو داره .

        دیدگاه


          #5
          پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

          سلام
          متاسفانه من با C با AVR کار نکردم(bascom ای هستم)
          دوستمون hadi_hashemi_85
          داخل آرایه 9 بنویس . چون تو C عضو اول آرایه 0 هست . پس اگه شماره آرایه N باشه N+1 تا عضو داره .
          Array elements are countered from 0 to n-1.

          فکر کنم + و - رو اشتباه تایپ کردین چون آرایه ها از 0 تا n-1 هستن نه n+1

          نشان دادن کارکترهای تمام سیاه بر روی lcd یعنی در حافظه eeprom مقدار رشتتون ذخیره نشده و خروجی به شما 255 به ازای هر بایت می ده که یعنی همون خونه سیاه شدن به جای نمایش اعداد.
          من در bascom بعد از نوشتن در eeprom بعدش 10 میلی ثانیه وقت می دادم که طبق توضیحات اتمل باید بین نوشتن و دستورات بعدی 4 میلی ثانیه حداقل تاخیر ایجاد شده باشه یعنی بعد از دستور strcmp سعی کنین حتما 10 میلی ثانیه زمان تاخیر قرار بدین.
          هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

          دیدگاه


            #6
            پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

            معذرت می خوام . اصلاح میکنم : N-1

            ولی من هیچ موقع از اون تاخیری که میگین استفاده نکردم . مشکلیم تا حالا نداشتم . شاید پیش نیومده .




            دیدگاه


              #7
              پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

              معذرت می خوام . اصلاح میکنم : N-1

              ولی من هیچ موقع از اون تاخیری که میگین استفاده نکردم . مشکلیم تا حالا نداشتم . شاید پیش نیومده .
              سلام دوست من
              قصد بی احترامی یا جسارت نداشتم و بسیار خوشحال می شم که از بقیه دوستان سایت بیشتر یاد بگیرم ، همین که آرایه رو مطرح کردین به لحظه با ایجاد شک چند تا سایت رو مطالعه داشتم که علاوه بر اینکه مطمئن شدم نکات جدیدی هم به واسطه شما یاد گرفتم که برای تا آخر عمر یه پیشرفته ، یعنی من ممنونم از لطفتون

              تاخیر رو من به چشم دیدم که بسیار موثر هست و در صورت نگذاشتن این تاخیر اگر قرار باشه 10 بایت رو ذخیره کنین یا دادهاتون به درستی ذخیره نمی شه یا اصلا ذخیره نمی شه
              هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

              دیدگاه


                #8
                پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

                سلام
                اگه اشتباه نکنم شما بیا یک متغیر تعریف کن . بعد بیا تو یه حلقه هر بار که رمز چک کرد و اگه درست بود بیاد یکی به این متغیر اضافه کنه و بعد مثلا رمزت 5 رقمیه و هر موقه به 5 رسید یعنی رمز درسته و یه توجه : برنامه طوری بنویس که اگه یک بار یک رمز اشتباه زد همه پاک بشه .
                :nerd:

                رفيقان قدر يكديگر بدانيد چو معلوم است شرح از بر مخوانيد

                مقالات نصيحت گو همين است كه سنگ انداز هجران در كمين است

                دیدگاه


                  #9
                  پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

                  نوشته اصلی توسط hadi_hashemi_85
                  داخل آرایه 9 بنویس . چون تو C عضو اول آرایه 0 هست . پس اگه شماره آرایه N باشه N+1 تا عضو داره .
                  راستش تا اونجا که من یادم میاد وقتی یه رشته رو تعریف میکنیم یه عضو هم برای کاراکتر \0 که انتهای رشته رو مشخص میکنه اختصاص داده میشه.بخاطر همین من ارایه m رو 11 عضوی گرفتم.نمیدونم شاید من اشتباه میکنم.
                  نوشته اصلی توسط baby_1
                  نشان دادن کارکترهای تمام سیاه بر روی lcd یعنی در حافظه eeprom مقدار رشتتون ذخیره نشده و خروجی به شما 255 به ازای هر بایت می ده که یعنی همون خونه سیاه شدن به جای نمایش اعداد.
                  من در bascom بعد از نوشتن در eeprom بعدش 10 میلی ثانیه وقت می دادم که طبق توضیحات اتمل باید بین نوشتن و دستورات بعدی 4 میلی ثانیه حداقل تاخیر ایجاد شده باشه یعنی بعد از دستور strcmp سعی کنین حتما 10 میلی ثانیه زمان تاخیر قرار بدین.
                  مگه با مقدار دادن به یه متغیر اون مقدار داخلش ذخیره نمیشه ?مثلا
                  char name[]="hello"
                  اون 10 میلی ثانیه تاخیر رو هم دادم ولی تغییری نکرد. :cry2:
                  کسی یه مثال ساده درباره eeprom نداره بده تستش کنم؟
                  Never regard study as a duty,but as a enviable opportunity to learn to know the liberating influence of beauty in the realm of the spirit for your own personal joy and to the profit of the community to which your later work belongs
                  Albert Einstein

                  دیدگاه


                    #10
                    پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

                    راستش تا اونجا که من یادم میاد وقتی یه رشته رو تعریف میکنیم یه عضو هم برای کاراکتر \0 که انتهای رشته رو مشخص میکنه اختصاص داده میشه.بخاطر همین من ارایه m رو 11 عضوی گرفتم.نمیدونم شاید من اشتباه میکنم.
                    فک کنم ، اینی که شما میگین توی رشته ها باشه . وقتی از آرایه به عنوان رشته استفاده می کنین ، عضو آخرو null در نظر میگیره .

                    دیدگاه


                      #11
                      پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

                      در هر صورت مشکل من هنوز سر جاشه :cry2: یعنی تا حالا کسی به همچین مشکلی بر نخورده ؟
                      من حتی متغیر تو eeprom رو یه آرایه از نوع int تعریف کردم ولی بازم درست نشد.نمیدونم شاید مشکل از کامپایلر منه.(codevision 2.05.3)
                      Never regard study as a duty,but as a enviable opportunity to learn to know the liberating influence of beauty in the realm of the spirit for your own personal joy and to the profit of the community to which your later work belongs
                      Albert Einstein

                      دیدگاه


                        #12
                        پاسخ : مشکل با متغ?ر تعر?ف شده در eeprom برا? قفل د?ج?تال

                        سلام
                        ببخشید من چند وقتیه به سیستم
                        دسترسی ندارم ،با گوشی کامنت میزارم ،این کدی که تو پست اول گزاشتید
                        کل برنامه تون هست ؟

                        دیدگاه


                          #13
                          پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

                          نوشته اصلی توسط mojtaba_led
                          سلام
                          ببخشید من چند وقتیه به سیستم
                          دسترسی ندارم ،با گوشی کامنت میزارم ،این کدی که تو پست اول گزاشتید
                          کل برنامه تون هست ؟
                          نه،چون تو برنامه اصلیم به مشکل خوردم اینو برای تست کردن نوشتم تا اگه ازش جواب گرفتم بتونم تو برنامه اصلیم ازش استفاده کنم ولی با اینکه درست بنظر میاد ولی تو شبیه سازی به مشکلی که بهش اشاره کردم برمیخوره.وقتی رمز رو بصورت flash تعریف میکنم هم رو LCD درست نشون میده هم نتیجه مقایسه درست درمیاد ولی برای eeprom نتیجه عکس میشه و کار نمیکنه.چند تا سوال:
                          محل تعریف متغیرهای عمومی باید حتما بعد از کامنت declare your global ... باشه یا قبلش هم فرق نمیکنه؟
                          برای کار با eeprom تو کدویژن تنظیم خاصی احتیاج نیست؟
                          تو پروگرم کردن میکرو تو پروتئوس چطور،اونجا تنظیم خاصی نداره؟
                          Never regard study as a duty,but as a enviable opportunity to learn to know the liberating influence of beauty in the realm of the spirit for your own personal joy and to the profit of the community to which your later work belongs
                          Albert Einstein

                          دیدگاه


                            #14
                            پاسخ : مشکل با متغ?ر تعر?ف شده در eeprom برا? قفل د?ج?تال

                            خوب همونطور که دوستمون تو پست دوم عرض کردن
                            توی ایپرام فقط بنویسید و بخونید
                            منظورم اینه که اول
                            مقادیر رو داخل یه متغیر محلی بریزید و بعد ازش استفاده کنید
                            و البته به این مسئله هم توجه داشته باشید که خونه های ایپرام دارای یک عمر حدود صد هزار بار نوشتن و پاک کردن هستند.
                            در مورد پروگرام کردن هم نکته خاصی وجود نداره و البته پروگرام کردن ایپرام زمانی انجام میشه که در ابتدای برنامه متغیر های ایپرام رو مقدار دهی اولیه کرده باشیم.

                            دیدگاه


                              #15
                              پاسخ : مشکل با متغیر تعریف شده در eeprom برای قفل دیجیتال

                              نوشته اصلی توسط mojtaba_led
                              خوب همونطور که دوستمون تو پست دوم عرض کردن
                              توی ایپرام فقط بنویسید و بخونید
                              منظورم اینه که اول
                              مقادیر رو داخل یه متغیر محلی بریزید و بعد ازش استفاده کنید
                              و البته به این مسئله هم توجه داشته باشید که خونه های ایپرام دارای یک عمر حدود صد هزار بار نوشتن و پاک کردن هستند.
                              در مورد پروگرام کردن هم نکته خاصی وجود نداره و البته پروگرام کردن ایپرام زمانی انجام میشه که در ابتدای برنامه متغیر های ایپرام رو مقدار دهی اولیه کرده باشیم.
                              میدونم،منم متغیر m رو برای همین کار تعریف کردم ولی باز جواب نمیده.در مورد محدودیت eeprom تو نوشتن و خوندن ازش من هنوز سخت افزارشو نبستم فقط تو پروتئوس شبیه سازیش کردم.تنها مشکلی که تو برنامه هست همین درست ذخیره نشدن رشته تو eeprom هستش وگرنه بقیه برنامم درست کار میکنه.دیگه کلافه شدم حسابی :angry: یعنی تا الان هیچکس به همچین مشکلی برنخورده؟
                              Never regard study as a duty,but as a enviable opportunity to learn to know the liberating influence of beauty in the realm of the spirit for your own personal joy and to the profit of the community to which your later work belongs
                              Albert Einstein

                              دیدگاه

                              لطفا صبر کنید...
                              X