اطلاعیه

Collapse
No announcement yet.

نحوه آدرس دهی یک EEPROM 2048x8 با 8 بیت؟

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

    نحوه آدرس دهی یک EEPROM 2048x8 با 8 بیت؟

    سلام دوستان.
    چه جوری یک EEPROM AT24C16A که دارای حافظه 2048x8 هست راو تو ATEML STUDIO آدرس دهی میکنن؟ مگه آدرساش 8 بیتی نیس؟ oo: oo:
    میبینید که memory_address از نوع unsigned char هست یعنی آدرس 0 تا 255، حالا ما چه جوری باید آخرین خونه رو آدرس دهی کنیم؟ یعنی خونه 2048؟
    کد:
    #include "I2C_Master.h"
    
    #define EEPROM_BUS_ADDRESS 0XA0
    
    
    unsigned char EEPROM_Read(unsigned char memory_address)
    {
    	return I2C_ReadRegister(EEPROM_BUS_ADDRESS,memory_address);
    }
    اللهم صل علی محمد و ال محمد و عجل فرجهم
    >>> www.DMF313.ir <<<
    اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
    در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
    است.

    #2
    پاسخ : نحوه آدرس دهی یک EEPROM 2048x8 با 8 بیت؟

    تو یه سایت چینی (شایدم کره ای و ژاپنی ) یه چیزایی پیدا کردم گفته که باید با 11 بیت ادرس دهی بشه تو صفحه 29 پی دی افی که لینکشو گذاشتم اون سه بیتی که به اسم P0,P1,P2 هست و تو آدرس اومده چیه؟
    اینم کدشه ولی تمیدونم چا آدرسشو OR کرده؟ اگه کسی میدون لطفا کمک کنه.
    کد:
    Byte Write
    void twi_write_byte(unsigned int addr, unsigned char byte)
    {
    twi start();
    
    twi_send_byte(0xA0 | ((addr >> 7) & 0x000E));
    twi_send_byte(addr & 0x00FF);
    twi send byte(byte);
    twi_send_byte(byte);
    twi_stop();
    delay(10);
    }
    دوستان کسی میدونه برا ادرس دهی چه جوری این رابطه به دست اومده ؟ چرا مقدار ادرس با اون اعداد OR شده؟ چرا شیفت خورده؟
    کد:
    twi_send_byte(0xA0 | ((addr >> 7) & 0x000E));
    اینم لینکش
    : http://read.pudn.com/downloads157/do...8-TWI-2008.pdf
    سپاس
    اللهم صل علی محمد و ال محمد و عجل فرجهم
    >>> www.DMF313.ir <<<
    اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
    در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
    است.

    دیدگاه


      #3
      پاسخ : نحوه آدرس دهی یک EEPROM 2048x8 با 8 بیت؟

      دیتاشیت آیسی رو بخونید مشخصه.

      برای آدرس دهی 11 بیت میخایم. 3 بیت توی کلمه ی اول. 8 بیت توی کلمه ی دوم.

      دیدگاه


        #4
        پاسخ : نحوه آدرس دهی یک EEPROM 2048x8 با 8 بیت؟

        ممنون از آقای freedom_truth
        برای آدرس دهی 11 بیت میخایم. 3 بیت توی کلمه ی اول. 8 بیت توی کلمه ی دوم.
        بعد از کلی فکر کردن :read: تازه فهمیدم چی شده :wow: :wow: :wow:
        این چیزی که فهمیدم اینه که برای آدرس دهی دو تا 8 بیت به عنوان آدرس میفرسته. توی 8 بیت اول فقط بیت های 1 و 2 و 3 استفاده می شه وبیت 0 هم مشخص می کنه عمل خواندن و نوشتنه و 4 بیت پر ارزشش هم به صورت پیش فرض 1010 هست. و اما هشت بیت دوم کل 8 بیتش به عنوان آدرس استفاده می شه. یعنی 11 بیت آدرس به شکل زیر در می آد.
        برای نوشتن مثلا توی خانه 1238 دو تا 8 بیت آدرس اینجوری میشن:
        کد:
        address = 0b10011010110; // address = 1238 decimal = 4D6 Hex
        char ad1 = 0b10101000;// 0xA8
        char ad2= 0b11010110; // 0xC6
        int add = 0x0000 |(ad1<<4 | (add2))
        twi_write_byte(add, data)
        برای خواندن هم بیاد بیت آخر از 8 بیت اول 1 باشه یعنی میشه:
        کد:
        address = 0b10011010110; // address = 1238 decimal = 4D6 Hex
        char ad1 = 0b10101001;// 0xA9
        char ad2= 0b11010110; // 0xC6
        بعدشم دو تا 8 بیت رو پشت سر هم میفرستیم برا EEPROM و بعد از اونم 8 بیت دیتا رو میفرستیم یا می گیریم.
        اینم انتقال تجربه هست دیگه ... :redface:
        اللهم صل علی محمد و ال محمد و عجل فرجهم
        >>> www.DMF313.ir <<<
        اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
        در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
        است.

        دیدگاه


          #5
          پاسخ : نحوه آدرس دهی یک EEPROM 2048x8 با 8 بیت؟

          داداش حداقل یه اشاره ای به وجود من میکردی یه وقت فکر نکنم نامرئی ام.

          دیدگاه


            #6
            پاسخ : نحوه آدرس دهی یک EEPROM 2048x8 با 8 بیت؟

            البته با تشکر از شما.... :applause: :applause: :applause:
            ببخشید همچی ذوق زده شده بودم نفهمیدم چی شد...
            ممنون از لطفتون :agree: :agree:
            اللهم صل علی محمد و ال محمد و عجل فرجهم
            >>> www.DMF313.ir <<<
            اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
            در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
            است.

            دیدگاه

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