Go Down

Topic: Integer mit 24Bit über SPI versenden. Geht es nur Byteweise? (Read 786 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy