Conectarea la controler.
Conectarea memoriei la MK este foarte simplă. Din bandă, sunt necesare numai o pereche de rezistențe cu o rezistență de aproximativ 4,7 kΩ.
Pentru a lucra cu memoria, a fost dezvoltată o bibliotecă care implementează următoarele funcții:
i2c_init - ajustează viteza impulsurilor ceasului de-a lungul liniei SCL.
Cipul 24LC16 suportă o frecvență de până la 400 kHz. Se calculează frecvența poate fi după cum urmează:
Frecvența ceasului CPU - frecvența microcontrolerului
TWBR - numărul înscris în același registru de nume.
TWPS - prescaler. Valorile prescaler sunt specificate de biții TWPS1 și TWPS0 din registrul TWSR
Pentru controlerul Atmega 32, tabelul următor este valabil:
i2c_stop - Trimite un pachet stop
i2c_send - trimite un octet
i2c_recive - acceptă un octet
i2c_recive_last - ia ultimul octet. Diferența față de funcția anterioară este că atunci când un octet este primit, microcontrolerul nu trimite un bit de confirmare. Dacă utilizați i2c_recive la primirea ultimului octet, linia SDA rămâne apăsată la sol.
Scrieți date în cipul de memorie
Bitii A, B, C sunt utilizați pentru a selecta blocul de memorie. Blocurile de memorie din cip sunt de 8 bucăți de câte 256 octeți fiecare. În consecință, biții ABC au valori de la 000 la 111.
Pentru a scrie un octet în chip, trebuie să efectuați următoarea secvență de acțiuni:
Un exemplu. Este necesar să scrie prima pagină a blocului 0.
Citirea datelor de pe un cip
Cu un fel de înregistrare, am început să citim. Pentru a citi un octet, procedați în felul următor:
În sfârșit, atașez oscilograma:
P.S. pentru a înțelege funcționarea anvelopei, vă recomandăm să citiți articolul din Di Halt'a