So ich versuche eine Funkstrecke aufzubauen und benötige dazu das
jeweilige Byte in Manchestercodierung. Das ganze habe ich auch
verstanden nur spinnt mein Code etwas rum.
1 | //-----------------------------------------------------------
|
2 | // Generate one byte in Manchester code
|
3 | unsigned int generate_MANCHESTER(unsigned char rawbyte)
|
4 | //-----------------------------------------------------------
|
5 | {
|
6 | unsigned int manchester;
|
7 | unsigned char i;
|
8 |
|
9 | for (i=0; i<8; i=i+1)
|
10 | {
|
11 | if (rawbyte & 0x01)
|
12 | {
|
13 | manchester &= ~0x1000;
|
14 | manchester = manchester >> 1;
|
15 | manchester |= 0x1000;
|
16 | manchester = manchester >> 1;
|
17 | }
|
18 | else
|
19 | {
|
20 | manchester |= 0x1000;
|
21 | manchester = manchester >> 1;
|
22 | manchester &= ~0x1000;
|
23 | manchester = manchester >> 1;
|
24 | }
|
25 | rawbyte = rawbyte >> 1;
|
26 | }
|
27 | return (manchester);
|
28 | }
|
Wenn ich jetzt ein 0xFF uebergebe, erhalte ich nur ein 0xaaa und nicht
ein 0xaaaa. Meines achtens nach, schiebt er 4 mal eine 0 zu viel. Ich
verstehe aber nicht wie das zu stande kommen kann.
Ich benutzte einen MSP430x1232 und Eclipse3.1 + MSPGCC (aktuelle und
Version und auch schon die vom Mai 2006)
Vielleicht weiss hier ja eine Rat
Mfg
Stephan