Hiho,
habe da ein kleines Problem. Wenn ich mir eine Schleife baue und mit
einer mit einer Hex gefütterten Variable etwas an einen Sensor schicken
mag, dann ist das Bitmuster verkehrt, ich muß die Variable quasi von
hinten auslesen, aber wie?!
- MicroC
- Atmega16
So sollte es gehen - tut es aber nicht:
1 | WTR_hex = 0xD5;
|
2 |
|
3 | for(i=0;i<8;i++)
|
4 | {
|
5 | SCL = 0;
|
6 | if((WTR_hex >> i) & 1) DIN = 1; else DIN = 0;
|
7 | SCL = 1;
|
8 | }
|
So funktioniert es aber:
1 | for(i=8;i>0;i--)
|
2 | {
|
3 | SCL = 0;
|
4 | if((WTR_hex >> (i-1)) & 1) DIN = 1; else DIN = 0;
|
5 | SCL = 1;
|
6 | }
|
Nun kann ich ihn ja problemlos so beschreiben, ist umständlich aber
funktionert, jedoch ist nun mein Problem: Wierum lese ich nun meine
Daten aus diesem Sensor wieder richtigrum ein damit ich damit rechnen
kann?!
1 | for(i=0;i<16;i++)
|
2 | {
|
3 | SCL = 1; asm nop;
|
4 | if(DOT == 1) Word1 |= ((unsigned long)1 << i);
|
5 | SCL = 0; asm nop;
|
6 | }
|
oder so:
1 | for(i=16;i>0;i--)
|
2 | {
|
3 | SCL = 1; asm nop;
|
4 | if(DOT == 1) Word1 |= ((unsigned long)1 << (i-1));
|
5 | SCL = 0; asm nop;
|
6 | }
|
Da es sich dort um 16Bit kalibrationsdaten handelt kann ich nicht genau
sagen in welchen Bereich diese liegen müssen?!