Thomsa A. schrieb:
> Hätte mir das jetzt so gedacht -> ( Pseudokode! )uint8_t *I2cTransfer[]
> =
> {
> ®_addr,
> reg_data
> };
Wenn dein Pseudocode ein Array beschreibt ist das gar nicht schlecht.
"I2cWriteBytes" wird nur ein Array der Länge "cnt" übertragen.
darin befindet sich dann auch die Register-Adresse, die du deinem
"reg_data"-Array voranstellen musst.
Das hängt damit zusammen, dass es I²C-Bauteine gibt, die
16Bit-Registeradressen verwenden, und welche die nur 8bit breite
RegisterAdressen verwenden.
(Die Info solltest du aber in der Doku zu der Funktion finden.)
Du brauchst also ein u8-Array, das um ein oder zwei Bytes länger ist,
als das, was an die Funktion übergeben wurde.
Da packst du zu erst die Registeradresse bytweise rein (bei 16bit die
Bytereiehenfolge beachten).
Hinter die Adresse kopierst du dann die Daten, die deine Funktion
übergeben bekommen hat.