Hallo, ich habe ein Problem mit dem UART der Atmel AVRs. Ich schreibe meine Programme in Assembler und nur senden oder nur empfangen geht wunderbar. Habe ich jedoch sowohl den Reciever als auch dem Transmitter aktiviert (nicht mit Interrupts), bleibt der Controller beim Senden von Zeichenketten manchmal hängen. Ich nehme mal an, dass dies an meinem Befehl, welcher darauf warten soll, dass das UDR frei ist liegt. Analog zum Datenblatt und dem hiesigen UART Tutorial: ... ldi r16, 'T' rcall WAITFORTXD out UDR, r16 ; <- an dieser Stelle scheint der Controller manchmal zu hängen . . . WAITFORTXD: sbis UCSRA, UDRE rjmp WAITFORTXD ret Muss man diesen Befehl abändern, wenn man sowohl sendet als auch empfängt? Gruß hempel
Das ist dummes Zeug. Falls man pollen will, dann in einem Timerinterrupt. Und dann sicher nicht warten. Entweder ist gut, oder eben nicht. Die Konditionen, die gepruft werden muessen, sind : Gibt's was zu senden und ist das UART leer, ist was im Eingangspuffer. Nimm Interrupts. schau hier fuer Code : http://www.ibrtses.com/embedded/avrasmuartint.html
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.