PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 16Bit Integer in 2 8Bit integer



PcVirus
29.02.2008, 16:53
Hi,
ich möchte ein 16bit integer über den I2C Bus sende.
Dazu muss ich ihn ja in 2 Bytes aufteilen.
So sieht mein Code dazu aus:


uint16_t daten = 65000;
uint8_t byte_a = 0;
uint8_t byte_b = 0;

byte_a = daten;
byte_b = daten >> 8;


In "byte_b" steht nur immer ein "0". Egal bei welchem wert von daten.
Hab schon mehrere Beispiele von aufteilen in 2 Bytes ausprobiert. Gingen aber bisher alle nicht.
Wo ist der Fehler?

MfG Jörn

zerush
29.02.2008, 16:56
Versuchs mal so:

byte_a = (uint8_t)daten;
byte_b = (uint8_t)( daten >> 8 );

Es könnte nämlich sein, dass er optimieren will, und daten schon umwandelt, bevor er den rechts-shift macht...

mfg
zerush

PcVirus
29.02.2008, 16:57
Kaum schickt man nach einer Stunde fehler suchen den Beitrag ab, findet man ihn... Dabei war ich mir doch ganz sicher, dass "daten" auch wirklich 16bit lang ist ;)

Problem gelöst ;)