Operácie

Zbernica i2c: EEPROM: Rozdiel medzi revíziami

Z SensorWiki

(4. Zápis)
Riadok 66: Riadok 66:
  
 
=== 4. Zápis ===
 
=== 4. Zápis ===
 
[[Súbor:i2c_write.png|600px|center]]
 
  
 
Zápis je jednoduchší, preto ním začneme:
 
Zápis je jednoduchší, preto ním začneme:
Riadok 82: Riadok 80:
 
</source>
 
</source>
  
             
 
 
<div style='text-align: center;'>
 
<div style='text-align: center;'>
[[File:EEPROM_ReadValue.png]]<br>
+
  [[Súbor:i2c_write.png|600px|center]]<br>
 
''Postupnosť pre čítanie hodnoty z EEPROM pamäte.''
 
''Postupnosť pre čítanie hodnoty z EEPROM pamäte.''
 
</div>
 
</div>
 
 
<div style='text-align: center;'>
 
[[File:EEPROM_WriteValue.png]]<br>
 
''Postupnosť pre zápis hodnoty do obvodu 8591.''
 
</div>
 
 
 
 
  
 
=== 5. Čítanie ===
 
=== 5. Čítanie ===

Verzia zo dňa a času 19:13, 13. 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


I2c M24C02.jpg I2c M24C02 pinout.jpg


1. Schéma zapojenia

I2c schematic.png
I2c breadboard.png


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

I2c address.png



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
I2c write.png

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

5. Čítanie

I2c read.png
I2c readRandom.png


  /*  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 = 5
     i2c_rep_start(Dev24C02+I2C_READ);       // set device address and read mode

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

     for(;;);

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