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?
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
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 ;)
Ok ich habs... UCSZ2 existiert in UCSRB und nicht in UCSRC ... Andenkopffass
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.