Operácie

Zbernica i2c: EEPROM: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Bez shrnutí editace
Balogh (diskusia | príspevky)
Riadok 93: Riadok 93:
   /*  Precitame hodnotu zapisanu v predchadzajucom kroku z EEPROM addresy 0  */
   /*  Precitame hodnotu zapisanu v predchadzajucom kroku z EEPROM addresy 0  */


     i2c_start_wait( (EEPROM_ADDR << 1) | I2C_WRITE);     // set device address and write mode
     i2c_start_wait( (EEPROM_ADDR << 1) | I2C_WRITE);     // set device address and write mode
     i2c_write(0x00);                                     // write address = 0
     i2c_write(0x00);                       // write address = 5
    i2c_rep_start(Dev24C02+I2C_READ);      // set device address and read mode


     val = i2c_readNak();                   // read one byte from EEPROM
    i2c_rep_start( (EEPROM_ADDR << 1) | I2C_READ );      // set device address and read mode
 
     val = i2c_readNak();                                 // read one byte from EEPROM
     i2c_stop();
     i2c_stop();
    for(;;);


</source>
</source>

Verzia z 09:25, 14. apríl 2023

Oboznámenie so zbernicou i2c

Úlohy:

  1. Pripojte k procesoru pamäť podľa schémy zapojenia
  2. Schému upravte tak, aby adresa zariadenia bola ?? - určí cvičiaci
  3. Zapíšte na prvé pamäťové miesto (adresa 0x00) znak 'A'
  4. Prečítajte, či je znak správne zapísaný
  5. Prečítajte obsah celej pamäte a vypíšte ho na terminál PC
  6. Zapíšte do pamäte 10 bytov nejakej informácie a zistite, ako dlho trvá zápis jedného byte, t.j. aká veľká musí byť prestávka medzi jednotlivými zápismi.


Literatúra


Datasheets



1. Schéma zapojenia


Správnosť zapojenia si môžete vyskúšať programom Médiá:i2c_scan.ino - nájde všetky obvody pripojené na zbernici.

2. Device address



3. Inicializácia

Pri tvorbe programu pre modul budeme využívať už hotovú knižnicu i2cmaster dostupnú odtiaľto http://senzor.robotika.sk/mmp/src/i2c/

Najprv je potrebné zbernicu inicializovať:

         i2c_init();                                       // initialize I2C library



4. Zápis

Zápis je jednoduchší, preto ním začneme:

       // zapis hodnotu  0x41 ('A') to EEPROM address 00 (Byte Write) 

     i2c_start_wait( (EEPROM_ADDR << 1) | I2C_WRITE);     // set device address and write mode
     i2c_write(0x00);                                     // write address = 0
     i2c_write(0x41);                                     // write value 0x41 to EEPROM
     i2c_stop();                                          // set stop conditon = release bus

Postupnosť pre zápis hodnoty z EEPROM pamäte.

5. Čítanie

Čítanie vyžaduje trocha viac krokov, pretože najprv musíme smerom do EEPROM nastaviť adresu, z ktorej chceme čítať a potom obrátime smer komunikácie a počkáme na data z pamäti.

  /*  Precitame hodnotu zapisanu v predchadzajucom kroku z EEPROM addresy 0   */

     i2c_start_wait( (EEPROM_ADDR << 1) | I2C_WRITE);      // set device address and write mode
     i2c_write(0x00);                                      // write address = 0

     i2c_rep_start( (EEPROM_ADDR << 1) | I2C_READ );       // set device address and read mode

     val = i2c_readNak();                                  // read one byte from EEPROM
     i2c_stop();

Program je samozrejme vhodné doplniť o zobrazenie prečítanej hodnoty v termináli cez sériové rozhranie.


Postupnosť pre čítanie hodnoty z EEPROM pamäte.