Anfänger schrieb:
> Guten Tag,
>
> ich möchte gern vom HyperTerminal aus meine LED's am PORTC durch
> Eingaben wie "0b11101100" ansteuern.
?
Willst du tatsächlich 0b11101100 eingeben. Also
Die Taste '0' drücken.
Die Taste 'b' drücken.
Die Taste '1' drücken.
etc. etc.
Wenn ja, dann erzeugst du auf die Art erst mal einen String. Eine
Abfolge der Zeichen '0', 'b', '1', '1' ....
Die musst du natürlich auch so auf dem AVR empfangen, wieder zu einer
Zahl zusammensetzen und erst dann kannst du damit auf den Port gehen.
> Jedoch werden die eingegebenen
> Muster nicht korrekt übertragen
Wenn deine UART funktioniert, werden die schon korrekt übertragen. Das
Problem ist nur, dass dir nicht wirklich klar ist, was da eigentlich
übertragen wird.
> und schon allein durch Tippen der
> Leertaste springen die LED's wie wild herum.
Logisch. Die Leertaste hat den ASCII Code 0x20. In Binärer SChreibweise
ist das 0b00100000
Jedes Zeichen hat einen bestimmten ASCII Code. Wenn du das empfangene
Byte einfach auf den Port gibst
1 | c = uart_getc();
|
2 | PORTC = c;
|
dann zeigen dir die LED genau diesen Code des gerade empfangenen
Zeichens an.
Siehe ASCII Tabelle
Auf einer UART werden komplette Bytes übertragen. Keine einzelnen
Bits(*). Jedes Zeichen, jede Taste, hat einen bestimmten Bytewert je
nach Code-Tabelle, die heutzutage meistens die ASCII Tabelle ist.
Edit:
(*) Natürlich werden da einzelne Bits übertragen. Schliesslich besteht 1
Byte ja aus 8 Bits. Gemeint ist, dass du beim Sender nicht einfach nur 1
Bit auf den Weg schickst, sondern dass da immer 1 Byte rausgeht.