Go Down

Topic: Integer mit 24Bit über SPI versenden. Geht es nur Byteweise? (Read 774 times) previous topic - next topic

hruendel

Versuche gerade einen Integer mit 24Bit über SPI zu versenden. Scheinbar geht es nur mit den 8Bit (1Byte) Paketen. Wie teile ich den Integer in 8Bit Teile um sie zu versenden?

Beispiel:
Code: [Select]

...
int data = 0x000110  // Ist gleich 272 dezimal

SPI.transfer(data);
...

Hier werden nur die ersten 8 Bits versendet.

Wie kann ich den Integer "data" in drei Einzelteile aufteilen um sie per SPI zu versenden?

mkl0815

Code: [Select]

int data = 0x102030;
for(int i=0;i<3;i++) {
    SPI.transfer(data & 0x0000ff);
    data = data >> 8;
}

Wäre ein einfacher Ansatz. Dabei wird der Wert in Data aber "zerstört".

Udo Klein

Warum nicht

Code: [Select]

int data = 0x102030;
for(int i=0;i<3;i++) {
    SPI.transfer((uint8_t)(data >> (i<<3)));   
}


oder

Code: [Select]

int data = 0x102030;
SPI.transfer((uint8_t)(data));   
SPI.transfer((uint8_t)(data >> 8));   
SPI.transfer((uint8_t)(data >> 16));   

Check out my experiments http://blog.blinkenlight.net


Go Up