Hallo,
das ist eigentlich ganz einfach:
zuerst muss man den buffer mit den Daten vorbereiten, also
1 | uint8_t buffer[3];
|
2 | buffer[0] = SLAVE_ADDRESS + TW_WRITE;
|
3 | buffer[1] = 2; //das register 2 lesen
|
und diese daten verschicken:
1 | TWI_Start_Transceiver_with_Data(buffer, 2);
|
Damit ist der erste Teil fertig.
DAnn geht es ans lesen der beiden Register:
Auch wieder den buffer vorbereiten und senden (Achtung: beim senden auf
die 3 achten! DAs ist 1x die Adresse vom Slave und dann die Anzahl der
zu Empfangenen Bytes)
1 | buffer[0] = SLAVE_ADDRESS + TW_READ;
|
2 | TWI_Start_Transceiver_with_Data(buffer, 3);
|
Dann eigentlich nur noch lesen:
1 | if (TWI_Get_Data_From_Transceiver(buffer, 3)) return (buffer[1] << 8) + buffer[2];
|
2 | else return CMPS03_READ_ERROR;
|
TWI_Get_Data_From_Transceiver gibt eine 0 zurück, wenn ein Fehler
aufgetreten ist. Mit der Abfrage geht man sicher, dass man nur mit
validen Daten rechnet.
PS: falls man sich wundert: buffer[0] enhält dann wieder die gesendete
Slave-Adresse + das Read-Bit.
mfG
N.G.