Forum: Mikrocontroller und Digitale Elektronik AVR UART - 9 Datenbits


von Daniel N. (bipak)


Lesenswert?

Hi,
Ich würde gerne das 9. Datenbit als Paritätsbit benutzen.
Da mein Programm Paritätsfehler verursachen soll, seh ich das als gute,
wenn nicht sogar einzige Möglichkeit.

Die zuständigen Register sind folgendermaßen konfiguiert:

UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)|(1<<UCSZ2);

Damit sollten doch 11 Bits gesendet werden, oder nicht?
Startbit + 9 Datenbits + Stopbit

Mein ATMega8 sendet aber nur 10 Bits! Auch wenn ich TXB8 in UCSRB
setze.

Hab ich irgendwas übersehen, was noch notwendig ist, damit er mit 9
Datenbits arbeitet?

von Michael Wilhelm (Gast)


Lesenswert?

Warum nimmst du nicht die Hardware Paritätserkennung?

Odd or Even Parity Generation and Parity Check Supported by Hardware

Auszug aus dem Datenblatt Seite 130.

MW

von Daniel N. (bipak)


Lesenswert?

Darum:
"Da mein Programm Paritätsfehler verursachen soll, seh ich das als
gute, wenn nicht sogar einzige Möglichkeit."

Der Hardware kann man nunmal nicht sagen, dass sie Fehler machen soll
;)

von Daniel N. (bipak)


Lesenswert?

Ok ich habs... UCSZ2 existiert in UCSRB und nicht in UCSRC ...

Andenkopffass

von Profi (Gast)


Lesenswert?

Einen Parity-Error kannst Du auch einfacher haben, indem Du beim Sender
einfach die andere Parität angibst als im Empfänger.
Also z.B.
Empfänger odd und dann  Sender auf even umschalten, wenn Du einen
Fehler haben willst.

Manche UARTs haben die Möglichkeit, neben no, even und odd  auch  mark
und space als Parity zu senden, das ist dann fast gleichbedeutend mit
9-bit Übertragung, da Du den Pegel L oder H angeben kannst.

von Daniel N. (bipak)


Lesenswert?

Stimmt...
Einfach die Parität in der Hardware umstellen, wenn ich ein Fehler
haben will. Das wär echt einfacher gewesen. Manchmal ist man einfach
nur blind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.