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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.