Datenformat i2c Routine

OP #2225533
Lesenswert?

Hallo Leser,
kann mir jemand hier bei meinem Anfängeproblem weiterhelfen:

Ich habe eine Routine zum versenden von Daten über den I2C Bus. Nun 
möchte ich einen Hex-Wert von 0x51 (binär=1010001) schicken und die 
routine hat die gestallt:

i2csend(unsigned char adress,unsigned char* data)

Wenn ich nun diese Routine von meiner main Methode aus aufrufe wie sieht 
dann der 2. Übergabewert für meinen Hex-Wert aus?


Vielen Dank fürs Lesen und eure Bemühungen :)
#2225551
Lesenswert?

Tim S. schrieb:
> Hallo Leser,
> kann mir jemand hier bei meinem Anfängeproblem weiterhelfen:
>
> Ich habe eine Routine zum versenden von Daten über den I2C Bus. Nun
> möchte ich einen Hex-Wert von 0x51 (binär=1010001) schicken und die
> routine hat die gestallt:
>
> i2csend(unsigned char adress,unsigned char* data)
>
> Wenn ich nun diese Routine von meiner main Methode aus aufrufe wie sieht
> dann der 2. Übergabewert für meinen Hex-Wert aus?

ein Array von unsigned char.

Da die Funktion keine Längenangabe haben will, gehe ich mal davon aus, 
dass die Funktion einen ganz banalen C-String haben will oder zumindest 
eine ähnliche Konvention benutzt, an der die Funktion erkennt, wo das 
Ende der Daten im Array liegt.
OP #2225577
Lesenswert?

Hallo Karl Heinz Buchegger,

danke für deine Antwort. Ich habe vergessen zu erwähnen das diese 
Routine noch einen dritten Parameter für die Länge hat also:

i2csend(unsigned char adress,unsigned char* data, int length)

wenn ich nun den hex-wert 0x51 senden möchte soll es dann so aussehen:


#define adress 0xE7

int main()
{
  ...
  i2csend(adress,data[0x51],1) //der 3. Übergabewert steht für 1 Byte
  ...
}

ist das nun so richtig?
ich kann das leider nicht testen.
Gast #2225610
Lesenswert?

Hallo Tim,
das was du da als Adressbyte übergibst, kann so nicht richtig sein. Der 
I2C-Slave hat eine 7 Bit Adresse, die zusammen mit dem R/W Bit als 
erstes Byte auf den Bus geschoben wird. R/W ist beim Schreibzugriff 
immer 0, d.h. das übergebene Adressbyte (incl. R/W-Bit) muß gerade sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren