C Control PRO Unit Mega 128 198219 User Manual

Product codes
198219
Page of 429
282
Bibliotheken
© 2013 Conrad Electronic
Sub I2C_Write(addr As Byte, hdr As ULong, hdr_len As Byte,
              ByRef mem_addr As Byte, length As WordAs Byte
Beschreibung
Zuerst werden an das I2C device mit Adresse addr (I2C 7-bit  Adresse) bis  zu 4 Bytes  header Daten
geschrieben.  Die  Daten  werden  in  hdr  übergeben,  die  Anzahl  der  Bytes  in  hdr_len.  Dabei  darf
hdr_len Null sein,  d.h.  es  wird kein header übertragen.  Es  werden  immer  zuerst  die  höherwertigen
Bytes  des  header übertragen.  Anschließend werden length bytes  aus  array  mem_addr auf das  I2C
device geschrieben.
  Der Begriff header steht  hier nicht  für einen spezifischen I2C Term,  sondern für bis  zu 4 Bytes
die an das I2C device übertragen werden.  Viele I2C Geräte benutzen einen solchen header um z.B.
ein Register zu indizieren.
Parameter 
addr 
Adresse des I2C Gerätes
hdr 
Bis zu 4 byte header Daten
hdr_len 
Länge des headers
mem_addr  Array aus dem die I2C Daten geschrieben werden
length 
Anzahl der Daten die geschrieben werden
Rückgabewert
-1  = Übertragungsfehler
0 = erfolgreich
5.12.2.5
I2C Beispiel
Beispiel: EEPROM 24C64 lesen und schreiben
// I2C Geräte Adresse = 0x50, Bit Rate 100kHz
// EEPROM hat 16bit Speicher adresse
byte
 
data[
10
];
void main(void)
{
    
// Lese 10 bytes von Speicheradresse 0x20 in array data[]
    
I2C_Read(0x50,
 
0x20,
 
2
,
 
data,
 
10
);
    
// Schreibe 10 bytes aus array data[] nach EEPROM Speicheradresse 0x20
    
I2C_Write(0x50,
 
0x20,
 
2
,
 
data,
 
10
);
}