اطلاعیه

Collapse
No announcement yet.

مشکل با تراشه eeprom خارجی مدل AT24C512

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

    مشکل با تراشه eeprom خارجی مدل AT24C512

    با سلام
    من با استفاده از برنامه ی موجود در این وبلاگ :
    http://powercontrol.mihanblog.com/extrapage/2126
    برنامه زیر رو نوشتم.
    در پروتئوس به درستی اجرا میشه ولی روی برد اصلیم که میبرم فقط صفر رو نمایش میده
    بیت رایت پروتکتد و آدرسها رو هم به زمین وصل کردم.

    راه حلی به ذهنم نمیرسه. ممنون میشم کسی راهنمایی و کمک کنه

    [code=cpp]/#include <mega32.h>

    /* the I2C bus is connect to PORTB */
    /* the SDA signal is bit 0 */
    /* the SCL signal is bit 1 */
    #include <i2c.h>
    #include <delay.h>
    #include <stdio.h>

    // Graphic LCD functions
    #include <glcd.h>

    // Font used for displaying text
    // on the graphic LCD
    #include <font5x7.h>

    #include <stdlib.h>

    #define EEPROM_BUS_ADDRESS 0XA0

    int data;
    char str[15];


    /* function eeprom_read for read
    a byte from the external eeprom*/
    unsigned char eeprom_read(unsigned char address)
    {
    unsigned char data;
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS);
    i2c_write(address);
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS | 1);
    data=i2c_read(0);
    i2c_stop();
    return data;
    }

    /* function eeprom_write for writ
    a byte to the external eeprom*/
    unsigned char eeprom_write(unsigned char address,unsigned char data)
    {
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS);
    i2c_write(address);
    i2c_write(data);
    i2c_stop();
    delay_ms(20); // 10 ms delay to complete the write opertion
    }

    void main(void)
    {
    // Declare your local variables here

    // Graphic LCD initialization data
    GLCDINIT_t glcd_init_data;


    // Specify the current font for displaying text
    glcd_init_data.font=font5x7;
    // No function is used for reading
    // image data from external memory
    glcd_init_data.readxmem=NULL;
    // No function is used for writing
    // image data to external memory
    glcd_init_data.writexmem=NULL;

    glcd_init(&glcd_init_data);

    DDRA=0XFF;

    /* initialize the i2c bus */
    i2c_init();

    eeprom_write(0x00,0xAB);
    PORTA= eeprom_read(0x00);

    data=eeprom_read(0x00);

    //SHow the result on GLCD
    itoa(data,str);
    glcd_outtextxy(14,6,str);


    while(1);
    }[/code]

    اضافه شده در تاریخ :
    کسی کار نکرده با این تراشه ؟؟!! :sad: :eek:
    امیدم به این فروم بود :biggrin:

    #2
    پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

    نوشته اصلی توسط raha.net
    کسی کار نکرده با این تراشه ؟؟!! :sad: :eek:
    امیدم به این فروم بود :biggrin:
    شماتیک سخت افزارتونو بزارین
    .The best question deserves a better answer
    =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
    «پناه»می برم «به خدا»
    از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
    محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

    دیدگاه


      #3
      پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

      نوشته اصلی توسط •.´™ مَسِِــــح`.•
      شماتیک سخت افزارتونو بزارین

      دیدگاه


        #4
        پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

        در ضمن پایه ی SDA ولتاژ صفر داره و پایه SCK ولتاژ یک

        دیدگاه


          #5
          پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

          متاسفانه کدویژن کار نمیکنم تقریبا
          با بسکام at24c02 04 08 16 رو بدون مشکل راه انداختم هیچ چیز خاصی نداشت نکته ای که هست اینه که بعد خواندن و نوشتن 5 تا 10 میلی ثانیه تاخیر الزامیه
          اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

          دیدگاه


            #6
            پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

            /* the I2C bus is connect to PORTB */

            شما از i2c نرم افزاری استفاده می کنید و طبق کامنت کد ویزراد باید به PORTB متصل کنید.

            SDA به PORTB.0

            SCL به PORTB.1


            .The best question deserves a better answer
            =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
            «پناه»می برم «به خدا»
            از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
            محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

            دیدگاه


              #7
              پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

              نوشته اصلی توسط •.´™ مَسِِــــح`.•
              /* the I2C bus is connect to PORTB */

              شما از i2c نرم افزاری استفاده می کنید و طبق کامنت کد ویزراد باید به PORTB متصل کنید.

              SDA به PORTB.0

              SCL به PORTB.1
              بله گفته ی شما درسته :biggrin:. ولی بعدش پایه هام رو تغییر دادم. بردم روی scl خود میکرو. گفتم شاید مشکل از اون باشه. ولی بازم حل نشد.

              دیدگاه


                #8
                پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

                نوشته اصلی توسط mehran901
                متاسفانه کدویژن کار نمیکنم تقریبا
                با بسکام at24c02 04 08 16 رو بدون مشکل راه انداختم هیچ چیز خاصی نداشت نکته ای که هست اینه که بعد خواندن و نوشتن 5 تا 10 میلی ثانیه تاخیر الزامیه
                با تاخیر هم فرقی نکرد.
                این که پایه ی SDA صفره نمیتونه سرنخ مشکل باشه ؟
                میتونید لطف کنید و با همون بسکام یه هگز و شماتیکش رو به من بدید؟ یه برنامه ی ساده که فقط یه عددی مثل 0XAB را روی پورت D نمایش بده.
                میخوام ببینم کلا مشکل از خود ایتوپیرام هست یا برنامه ی من
                سپاس :rolleyes:

                دیدگاه


                  #9
                  پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

                  نوشته اصلی توسط raha.net
                  با تاخیر هم فرقی نکرد.
                  این که پایه ی SDA صفره نمیتونه سرنخ مشکل باشه ؟
                  میتونید لطف کنید و با همون بسکام یه هگز و شماتیکش رو به من بدید؟ یه برنامه ی ساده که فقط یه عددی مثل 0XAB را روی پورت D نمایش بده.
                  میخوام ببینم کلا مشکل از خود ایتوپیرام هست یا برنامه ی من
                  سپاس :rolleyes:
                  نباید صفر باشه باید خطوط کلاک و دیتا i2c پول پ باشن
                  شماتیکش چیزی نداره همون شماتیک خودتون .... فقط پایه wp باید زمین باشه
                  در صورتی که از c02 04 08 استفاده کنید به ترتیب روی یک باس میتونید 2 4 8 عدد استفاده کنید و اگه یکی دارین پایه های آدرس سخت افزاری آیسی رو به زمین وصل کنید

                  برای نوشتن :
                  کد:
                    I2cstart                        
                    I2cwbyte Addressw                    
                    I2cwbyte Adres                     
                    I2cwbyte Value                    
                    I2cstop                         
                    Waitms 10
                  برای خواندن
                  کد:
                    I2cstart                         
                    I2cwbyte Addressw                   
                    I2cwbyte Adres 
                                       
                    I2cstart                         
                    I2cwbyte Addressr                    
                    I2crbyte Uu , Nack                   
                    I2cstop
                  از کریستال خارجی استفاده کنید خیلی بهتره

                  Addressw رو طبق دیتاشیت مقدار دهی باید کرد آدرس نرم افزاری



                  که بطور مثال وقتی از at24c02 استفاده میشه واسه تراشه ای که آدرس سخت افزاریش a2 a1 a0 : 0 0 0 هست یعنی پایه هاش به زمین متصل شده یا توسط میکرو آدرسش مشخص میشه داریم
                  10100001 lبیت آخر تا جایی که یادمه 0 برای نوشتن1 برای خوندن از آیسی
                  میشه معادل A0 ... مقدار متغییر addressw میشه

                  addressr هم به همین صورت A1 بدست میاد adrs دیگه هم که مشخص کننده آدرس نوشتن اطلاعات یا خوندن هست
                  اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

                  دیدگاه


                    #10
                    پاسخ : مشکل با تراشه eeprom خارجی مدل AT24C512

                    نوشته اصلی توسط mehran901
                    نباید صفر باشه باید خطوط کلاک و دیتا i2c پول پ باشن
                    شماتیکش چیزی نداره همون شماتیک خودتون .... فقط پایه wp باید زمین باشه
                    در صورتی که از c02 04 08 استفاده کنید به ترتیب روی یک باس میتونید 2 4 8 عدد استفاده کنید و اگه یکی دارین پایه های آدرس سخت افزاری آیسی رو به زمین وصل کنید

                    برای نوشتن :
                    کد:
                      I2cstart                        
                      I2cwbyte Addressw                    
                      I2cwbyte Adres                     
                      I2cwbyte Value                    
                      I2cstop                         
                      Waitms 10
                    برای خواندن
                    کد:
                      I2cstart                         
                      I2cwbyte Addressw                   
                      I2cwbyte Adres 
                                         
                      I2cstart                         
                      I2cwbyte Addressr                    
                      I2crbyte Uu , Nack                   
                      I2cstop
                    از کریستال خارجی استفاده کنید خیلی بهتره

                    Addressw رو طبق دیتاشیت مقدار دهی باید کرد آدرس نرم افزاری



                    که بطور مثال وقتی از at24c02 استفاده میشه واسه تراشه ای که آدرس سخت افزاریش a2 a1 a0 : 0 0 0 هست یعنی پایه هاش به زمین متصل شده یا توسط میکرو آدرسش مشخص میشه داریم
                    10100001 lبیت آخر تا جایی که یادمه 0 برای نوشتن1 برای خوندن از آیسی
                    میشه معادل A0 ... مقدار متغییر addressw میشه

                    addressr هم به همین صورت A1 بدست میاد adrs دیگه هم که مشخص کننده آدرس نوشتن اطلاعات یا خوندن هست
                    ممنون از توضیحاتتون. همش رو رعایت کرده بودم. نهایتا میرم یه آیسی دیگه میخرم. شاید مشکل از آیسی باشه !!
                    این خط یعنی چی ؟ I2crbyte Uu , Nack
                    معادل همین کده ؟ data=i2c_read(0);

                    دیدگاه

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