اطلاعیه

Collapse
No announcement yet.

ذخیره چند آیتم در EEPROM

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

    ذخیره چند آیتم در EEPROM

    سلام، برای یک دستگاه حضور و غیاب چند تا آیتم مثل ساعت و تاریخ و کد کارت رو میخوام بر روی EEPROM ذخیره کنم ولی متاسفانه موفق نشدم
    کدی هم که استفاده کردم به صورت زیره اشکال کار کجاست؟ (از کامپایلر Codevision استفاده کردم)
    آیا من یک رشته کامل رو مثل"139406121233000123456" ذخیره کنم؟
    که البته رشته شبیه این باید برای هر کدی در ساعات و تاریخ مختلف ذخیره بشه
    برای ذخیره:
    کد:
    if(PINA.4 == 0)
           {
            while(PINA.4 == 0);
            
            ////////////Save to EEPROM
            ///Variables: *hr_to_eeprom,*min_to_eeprom,*yr_to_eeprom,*mn_to_eeprom,*dy_to_eeprom;
            
            //*ptr_to_eeprom=time_str[0]; 
            //ptr_to_eeprom++;
             
             hr_to_eeprom[j] = hour;
             min_to_eeprom[j] = mint;
             yr_to_eeprom[j] = year;
             mn_to_eeprom[j] = month;
             dy_to_eeprom[j] = date; 
             
             
             j++; //
             lcd_gotoxy(5,2);
             lcd_putchar(j);
             
             lcd_gotoxy(1,3);
             lcd_puts("          ");
             lcd_gotoxy(1,3);
             lcd_puts(" Saving Complete ");
           }
    برای خواندن:
    کد:
    for(i=0;i<100;i++)
              {
                s=hr_to_eeprom[i];
                m=min_to_eeprom[i];
                y=yr_to_eeprom[i];
                mn=mn_to_eeprom[i];
                d=dy_to_eeprom[i];
     
                delay_ms(50);
                lcd_gotoxy(0,0);
                lcd_putsf("          ");
                lcd_gotoxy(0,0);
                lcd_putsf("Loading...");   
                lcd_gotoxy(0,1);
                lcd_puts("          ");
                //
                strcpy(lcd2,""); 
                sprintf(lcd2,"%2u",s);
                strcat(lcd2,lcd2);
                sprintf(lcd2,"%2u",m);
                strcat(lcd2,lcd2);
                sprintf(lcd2,"%2u",y);
                strcat(lcd2,lcd2);
                sprintf(lcd2,"%2u",mn);
                strcat(lcd2,lcd2);
                sprintf(lcd2,"%2u",d);
                strcat(lcd2,lcd2);
                
                lcd_gotoxy(0,1);
                lcd_puts(lcd2); 
              } 
             
               s=0;
               m=0;
               y=0;
               mn=0;
               d=0;
               
               lcd_gotoxy(0,2);
               lcd_putsf("          ");
               lcd_gotoxy(0,3);
               lcd_puts("          ");
               delay_ms(100);
               lcd_gotoxy(0,2);
               lcd_putsf(" Loading Complete ");
               lcd_gotoxy(0,3);
               lcd_puts("          ");
               delay_ms(100);
               lcd_gotoxy(0,2);
               lcd_putsf("          ");
               lcd_gotoxy(0,3);
               lcd_puts("          ");
    رد و بدل اطلاعات باعث از بین رفتن مشکلات میشود.
    ...خودم...

    #2
    پاسخ : ذخیره چند آیتم در EEPROM

    پیسنهاد من اینه که به EEPROM AVR خیلی دل نبندید...راحت اطلاعاتش پاک میشه و به هم میریزه..کافیه وقتی که داره دیتا رو سیو میکنه برقش قطع بشه یا یه نویز به سیستم وارد بشع
    اگه میتونید از EEPRM خارجی استفده کنید
    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

    www.intelart.ir


    ساخت کنترلر دما PID فازي با AVR [آموزشی]

    دیدگاه


      #3
      پاسخ : ذخیره چند آیتم در EEPROM

      سلام و تشکر،
      EEPROM خارجی که مناسب دستگاه حضور و غیاب باشه چی پیشنهاد میدید؟
      کدی که من نوشتم کجاش ایراد داره؟
      رد و بدل اطلاعات باعث از بین رفتن مشکلات میشود.
      ...خودم...

      دیدگاه


        #4
        پاسخ : ذخیره چند آیتم در EEPROM

        سلام
        EEPROM های خارجی با اسم AT24CXX هست. با ظرفیت های مختلف هست. مثلا AT24C512 یا AT24C1024 که به ترتیب 512Kbit و 1024Kbit ظرفیت دارن
        با I2C کار میکنن.
        http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

        دیدگاه


          #5
          پاسخ : ذخیره چند آیتم در EEPROM

          لینک زیر رو ببینید:
          بسته به نیازتون انتخاب کنید
          کدتون رو نخوندم والا... :redface:
          تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

          www.intelart.ir


          ساخت کنترلر دما PID فازي با AVR [آموزشی]

          دیدگاه


            #6
            پاسخ : ذخیره چند آیتم در EEPROM

            لطفا لینک رو بذارید. متوجه نشدم کدوم لسنک رو گفتید؟
            رد و بدل اطلاعات باعث از بین رفتن مشکلات میشود.
            ...خودم...

            دیدگاه


              #7
              پاسخ : ذخیره چند آیتم در EEPROM

              ای بابا چرا لینک رو نذاشتم
              بفرمایید
              http://eshop.eca.ir/94-EEPROM
              تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

              www.intelart.ir


              ساخت کنترلر دما PID فازي با AVR [آموزشی]

              دیدگاه


                #8
                پاسخ : ذخیره چند آیتم در EEPROM

                طبق پیشنهاد شما تصمیم گرفتم ایپرام خارجی استفاده کنم. ولی چطور میتونم یه کد طولانی حدود ۱۶ کاراکتری رو درش ذخیره کرد؟
                رد و بدل اطلاعات باعث از بین رفتن مشکلات میشود.
                ...خودم...

                دیدگاه


                  #9
                  پاسخ : ذخیره چند آیتم در EEPROM

                  نوشته اصلی توسط fanfare_999
                  طبق پیشنهاد شما تصمیم گرفتم ایپرام خارجی استفاده کنم. ولی چطور میتونم یه کد طولانی حدود ۱۶ کاراکتری رو درش ذخیره کرد؟
                  کسی میتونه راهنمایی کنه؟
                  رد و بدل اطلاعات باعث از بین رفتن مشکلات میشود.
                  ...خودم...

                  دیدگاه


                    #10
                    پاسخ : ذخیره چند آیتم در EEPROM

                    برای استفاده از eeprom داخلی از توابع زیر کمک بگیرید.
                    کد:
                    void write_epr(unsigned char data2,unsigned char addr)
                    {
                        EEDR=data2;
                        EEAR=addr;
                        EECR=0x04;
                        EECR=0x02;
                    while( EECR & 0x02 );
                    }
                    unsigned char read_epr(unsigned char addr)
                    {
                        unsigned char data1=0;
                        EEAR=addr;
                        EECR=0x01;
                        data1=EEDR;
                        return data1;
                    }
                    فک نکنم اون قدر هم بد باشه.من خودم استفاده کردم مشکلی نبود.
                    توی دیتاشیت بخونید نوشته تغذیه نباید چه طوری باشه تا مشکلی پیش نیاد.
                    البته میگم من کلا باهاش مشکلی نداشتم.بچه خوبی بود :nice: :nice:
                    آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                    دیدگاه


                      #11
                      پاسخ : ذخیره چند آیتم در EEPROM

                      نوشته اصلی توسط pooyan-shafiei
                      برای استفاده از eeprom داخلی از توابع زیر کمک بگیرید.
                      کد:
                      void write_epr(unsigned char data2,unsigned char addr)
                      {
                          EEDR=data2;
                          EEAR=addr;
                          EECR=0x04;
                          EECR=0x02;
                      while( EECR & 0x02 );
                      }
                      unsigned char read_epr(unsigned char addr)
                      {
                          unsigned char data1=0;
                          EEAR=addr;
                          EECR=0x01;
                          data1=EEDR;
                          return data1;
                      }
                      فک نکنم اون قدر هم بد باشه.من خودم استفاده کردم مشکلی نبود.
                      توی دیتاشیت بخونید نوشته تغذیه نباید چه طوری باشه تا مشکلی پیش نیاد.
                      البته میگم من کلا باهاش مشکلی نداشتم.بچه خوبی بود :nice: :nice:
                      ممنون کد شما جواب میده با کد خودم هم تونستم جواب بگیرم ولی مشکل اصلی من اینه که چطور یه کاراکتر طولانی شامل ساعت و تاریخ و کد 12 رقمی (که در مجموع حداقل 26 کاراکتر میشه) رو در ایپرام ذخیره کنم!!! با هر بار فشردن کلید کدی ذخیره و با فشردن کلید دیگر تمام کدهای ذخیره شده نمایش داده بشوند
                      رد و بدل اطلاعات باعث از بین رفتن مشکلات میشود.
                      ...خودم...

                      دیدگاه


                        #12
                        پاسخ : ذخیره چند آیتم در EEPROM

                        ببینید پیشنهاد من اینه که این متغیر ها رو جداگانه ذخیره کنید و اگه قراره واسه جایی ارسالش کنید حین ارسال به هم بچسبونیدشون...ولی اگه باز هم تصمیمتون اینه میتونید یکی از خونه های EEPROM رو در نظر بگیرید و از اونجا شروع کنید به نوشتن کاراکتر ها تا زمانی که به انتهای رشته برسید...

                        [code=c]while(string[i++]!='\0&#039
                        }
                        //writing to e2prom
                        {
                        [/code]
                        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                        www.intelart.ir


                        ساخت کنترلر دما PID فازي با AVR [آموزشی]

                        دیدگاه

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