Pages: [1]   Go Down
Author Topic: Integer mit 24Bit über SPI versenden. Geht es nur Byteweise?  (Read 669 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
...
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?
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1407
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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".
Logged

0
Offline Offline
Faraday Member
**
Karma: 19
Posts: 3420
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Warum nicht

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

oder

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

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

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke an euch, werde gleich ausprobieren.
Logged

Pages: [1]   Go Up
Jump to: