اطلاعیه

Collapse
No announcement yet.

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

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

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

    میگم چرا یکی یکی نمیکنی.
    رشته رو ول کن . تک تک اعضای آرایه رو عدد بده . موقع مقایسه یک به یک تک تکشونو با هم مچ کن

    دیدگاه


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

      فکر کنم پروتئوس برای EEPROM یه فایل ایمیج میخواد! شما این فایل رو بهش معرفی کردی؟

      دیدگاه


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

        نوشته اصلی توسط hadi_hashemi_85
        میگم چرا یکی یکی نمیکنی.
        رشته رو ول کن . تک تک اعضای آرایه رو عدد بده . موقع مقایسه یک به یک تک تکشونو با هم مچ کن
        منظورت اینجوریه مثلا:
        eeprom char pass[4]={'1','2','3',' 4'}
        اینجوری هم امتحان کردم ولی بازم نتیجه نمیده.حتی متغیر رو از نوع int تعریف کردم ولی بازم هیچی
        اگرم منظورت اینه که تک تک اعضای آرایه رو به صورت تک به تک مقدار دهی کنم خوب اون موقع باید یه متغیر دیگه تو eeprom تعریف کنم مثلا k بعد ابتدای برنامه بیام قبل از تابع main یه شرط بزارم اگه مقدار k مثلا 0 بود بیاد از کاربر بخواد رمز سیستمو تعیین کنه.بعدش اونو بریزم تو متغیر pass تو eeprom آخر سر بیام مقدار k رو یک کنم تا دفعه بعد دیگه این شرط اجرا نشه.خوب اینجوری شدنیه ولی برنامه یکمی گنگ میشه بنظرم.ولی امتحانش میکنم،ضرر نداره.
        نوشته اصلی توسط mojalan
        فکر کنم پروتئوس برای EEPROM یه فایل ایمیج میخواد! شما این فایل رو بهش معرفی کردی؟
        فایل ایمیج!؟ oo: میشه یکم بیشتر توضیح بدید.راستش برنامه رو که تو کد ویژن build میکنم وقتی میخوام با پروتئوس شبیه سازی کنم فقط فایل هگزی رو که میسازه لینکش میکنم.ولی من فایلی که ارتباطی با eeprom داشته باشه تو محل ذخیره کردن پروژه پیدا نکردم.راستی اگه کدویژن این فایلو نمیسازه چجوری قراره 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

        دیدگاه


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

          منظورت اینجوریه مثلا:
          eeprom char pass[4]={'1','2','3',' 4
          منظورم اینه :
          eeprom char pas[0]=1
          eeprom char pas[1]=2
          eeprom char pas[3]=3


          دیدگاه


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

            تو پروتئوس وقتی میخوای تنظیمات میکرو رو انجام بدی و فایل هگز رو بهش معرفی کنی. اون پایین تو قسمت advanced properties یه کامبو باکس هست که در حالت پیش فرض رو clock frequency هست و شما باهاش کلاکتون رو مشخص میکنید.
            اگه این کامبو باکس رو باز کنید فکر کنم گزینه دومش initial content of data eeprom هست که میشه مقادیر اولیه داده های EEprom و شما باید بهش یه فایل معرفی کنی
            در ضمن وقتی با کدویژن کامپایل میکنید چند فایل در فولدر Exe براتون تولید میشه.
            اولیش hex فایل هست که کد برنامتون (برای قرارگیری در داخل حافظه فلش) توش هست. فایل هگز رو با notepad باز کنید و داخلش رو ببینید. (برای اطلاعات بیشتر سرچ کنید intel HEX format)
            دو فایل دیگه هم در اختیارتون میذاره با پسوندهای rom که شامل داده های حافظه فلش هست با فرمت دیگه ای و فایل eep که شامل دادهای حافظه eeprom هست. اگه این فایلها برای شما تولید نمیشه داخل کدویژن منوی project>>Configure
            قسمتformat output file رو یه نگاه بندازین ببینین رو چی تنظیم شده.
            فایلهای دیگه ای هم تولید میشه که بدرد بخورن مثلا فایل COF که من برای شبیه سازی تو AVR studio از این فایل استفاده میکنم. فایل asm که برنامه اسمبلی کد C شما هست که برای سر درآوردن از کار کامپایلر و روال تولید توابع میشه ازش استفاده کرد

            دیدگاه


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

              منظورم اینه :
              eeprom char pas[0]=1
              eeprom char pas[1]=2
              eeprom char pas[3]=3
              :surprised:
              این روش جواب نمیده چون شما اومدی سه تا آرایه با اسم یکسان ولی تعداد عضوای مختلف تعریف کردی که کامپایلر تو این حالت خطا میده.
              آقای mojalan من یه برنامه ساده دیگه نوشتم که کدشو میزارم:
              کد:
              #include <mega32.h>
              #include <delay.h>
              #include <stdio.h>
              // Alphanumeric LCD Module functions
              #asm
                .equ __lcd_port=0x1B ;PORTA
              #endasm
              #include <lcd.h>
              
              // Declare your global variables here
              eeprom char pass[6]="12345";
              char pass_temp[6]="";
              char buf[10];
              int i;
              void main(void)
              {
              lcd_init(16);
              for (i=0;i<6;i++)
               {
                pass[i]='8';
                delay_ms(10);
               }
               for (i=0;i<6;i++)
               {
                pass_temp[i]=pass[i];
                delay_ms(10);
               }
              
              while (1)
                 {
                 // Place your code here
                  if(pass_temp[1]!=0xff)
                  {
                  lcd_clear();
                  lcd_gotoxy(0,0);
                  //sprintf(buf,"%f",pass_temp);
                  lcd_puts(pass_temp);
                  delay_ms(500);
                  }
                 };
              }
              تو این مثال اگه اون حلقه ای که به متغیر pass که تو eeprom ذخیره شده مقدار 8 رو اختصاص میده رو پاک کنم،شرط داخل حلقه while اجرا نمیشه یعنی خونه های آرایه pass تو ابتدای برنامه مقدار دهی نمیشن و مقدارش همون 0xff باقی میمونه.حالا من رفتم تو پروتئوس و advanced properties رو روی initial content of data eeprom گذاشتم.خوب تا ایجا که مشکلی نبود.ولی وقتی خوام فایل مربوط به eeprom رو پلود کنم تو میکرو نوع فایلی که میخواد Binary Image Files هست(اگه اشتباه نکنم با پسوند BIF باید باشه) اما کامپایلر همچین فایلی رو نمیسازه. :sad: تو پوشه Exe برنامه فقط یه فایل با پسوند eep هست که پروتئوس نمیشناسش.
              راستی تو تنظیمات مربوط به کدویژن تو قسمت c compiler گزینه file output format روی "cof rom hex eep" تنظیم شده.
              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

              دیدگاه


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

                یه نگاهی به فایل زیر بنداز نکات پروتوسه کمکت میکنه

                http://aminsheikhnajdi.persiangig.com/document/proteus node.pdf
                تو بگو ای سنگ صبور تو صبوری یا دل من
                تو بگو ای جام بلور تو شکستی یا دل من

                دیدگاه


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

                  برای تبدیل فایل ها به پسوند مناسب از نرم افزار eepromTool استفاده کن
                  تو بگو ای سنگ صبور تو صبوری یا دل من
                  تو بگو ای جام بلور تو شکستی یا دل من

                  دیدگاه


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

                    منظورم اینه :
                    eeprom char pas[0]=1
                    eeprom char pas[1]=2
                    eeprom char pas[3]=3

                    :surprised:
                    این روش جواب نمیده چون شما اومدی سه تا آرایه با اسم یکسان ولی تعداد عضوای مختلف تعریف کردی که کامپایلر تو این حالت خطا میده
                    معذرت می خوام .اینطوری بود :
                    eeprom char pas[3]={}
                    pas[1]=2
                    pas[3]=3

                    دیدگاه


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

                      با سلام خدمت دوستان.
                      اگه اشتباه نکنم برای ذخیره کرده دیتا توی ایپرام بین هردستور باید ۱۰ میلی ثانیه
                      زمان در نظر بگیری کد بالارو اینطوری بنویس شاید جواب بگیری

                      eeprom char pas[0]=1
                      delay_ms(10)
                      eeprom char pas[1]=2
                      delay_ms(10)
                      eeprom char pas[3]=3
                      delay_ms(10)

                      دیدگاه

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