Hi Leute,
ich muss bei einer Datenübertragung zwei 12 Bit Messwerte Übertragen,
hab dazu aber nur drei 8 Bit Variablen zur Verfügung. Heißt ich muss die
Variablen splitten und der Empfänger muss diese wieder zusammen bauen.
Ich habs jetzt schon etliche male durchgedacht aber ich komm da auf
keinen Fehler.
Das Problem was auftritt ist dass der erste Messwert (unten ValueOne)
beim Empfänger als zweiter Messwert (unten ValueTwo) erkannt wird.
Könnt ihr mal drübersehen ob ihr evt. einen Fehler entdeckt?
Das beschreiben des Buffers geschieht wie folgt.
1 | unsigned char IC_TxBuffer[8];
|
2 |
|
3 | void fillBuffer(void){
|
4 | unsigned char temp;
|
5 | unsigned int tempWord;
|
6 | temp = 0;
|
7 | tempWord = 0;
|
8 |
|
9 | //Befüllen der ersten zwei Bytes ist OK
|
10 |
|
11 | tempWord = getValueOne() & 0x0FFF; //getValueOne() returned unsigned int
|
12 |
|
13 | temp = (tempWord & 0x0FF0) >> 4;
|
14 | IC_TxBuffer[2] = temp;
|
15 |
|
16 | temp = (tempWord & 0x000F) << 4;
|
17 |
|
18 | tempWord = getValueTwo() & 0x0FFF;
|
19 |
|
20 | temp |= (tempWord & 0x0F00) >> 8;
|
21 | IC_TxBuffer[3] = temp;
|
22 |
|
23 | temp = (tempWord & 0x00FF);
|
24 | IC_TxBuffer[4] = temp;
|
25 |
|
26 | //Befüllen der restlichen Bytes funktioniert auch
|
27 |
|
28 | }
|
Das Einlesen der Messwerte folgt sofort...