Hi damaltor,
Nein, siehe mein Beitrag weiter oben:udre.. das müsste doch auch schreibbar sein. ...
Die Bits 1 und 0 sind wieder read/write! Sie haben ja auch nichts mit IRQ's zu tun!So jetzt zum Fall UCSRA (= USART Control and Status Register A):
Auf Seite 154 steht, dass nur das Flag TXC (=USART Transmit Complete, Bit #6) von den anwesenden IRQ-Flags les- UND schreibbar ist! (D.h., dass man die anderen {IRQ-}Bits #7, 5 - 2!) durch Schreiben NICHT verändern kann!
korrekt! Und das nutzt man dann in der Schleife bei SerWrite aus!... es wird doch 1, wenn udr leer ist, ...
Z.Bsp. in meiner abgespeckten Version:
"0x20" könnte man auch durch "(1<<UDRE)" ersetzen! (Das sieht dann professioneller aus!Code:void SerWrite(unsigned char data) { while(!(UCSRA & 0x20)); UDR = data; })
NEIN, siehe oben! Das Löschen geht automatisch, d.h. der Controller macht's!... und kann manuell wieder gelöscht werden, oder?![]()
Sonst würde ja obiger Code nicht funktionieren!
cu Helmut







Zitieren

Lesezeichen