Manchestercode Generierung auf einen MSP

OP #691292
Lesenswert?

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
Gast #691314
Lesenswert?

Du hast da wohl noch mehr Fehler:
1
unsigned int generate_MANCHESTER(unsigned char rawbyte)
2
//-----------------------------------------------------------
3
{
4
  unsigned int manchester = 0;
5
  unsigned char i;
6
  
7
  for (i=0; i < 8; i++)
8
  {
9
    if (rawbyte & 0x01)
10
    {
11
      manchester |= 0x8000; // -->0b1000...
12
      manchester >>= 2; // weniger schreibarbeit ;)
13
    }
14
    else 
15
    {
16
      manchester |= 0x4000;// --> 0b0100...
17
      manchester >>= 2;
18
    }
19
    rawbyte = rawbyte >> 1;
20
  }
21
  return (manchester);
22
}
hth. Jörg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren