Forum: Mikrocontroller und Digitale Elektronik Das UART-Tutorial funktioniert nicht


von Marek (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

habe das UART-Tutorial (Senden) auf dieser Seite ausprobiert - und
stoße auf ein seltsames Phänomen. Bei beiden Beispielen (ATmega8 und
AT90S4433) wird nach 2 Durchläufen das UDRE-Flag (UART Data Register
Empty) im Simulator nicht mehr gesetzt und das Programm hängt sich
deshalb in einer Endlosschleife auf. Das UDR-Register ist aber leer und
das Flag müste deshalb gesetzt werden.

Das ist mein erstes AVR-Projekt, deshalb bin ich jetzt ziemlich
verunsichert. Kann der Simulator einen Bug haben? Habe aufgrund dieses
Verdachtes schon das AVR-Studio4 (Windwos-XP) neu installiert.

Schick das unveränderte Beispiel vom ATmega8 dieser Seite als Anhang
mit.

Vielen Dank

von Florian Pfanner (Gast)


Lesenswert?

Hallo,

hast du das auch schon mal länger simuliert? - Das erste byte, wo in
das UDR geschrieben wird, wird sofort an den RS232-Transmitter
weitergegeben. Also wird dann das 2. Byte in das Datenregister
geschrieben. Das Bit kann noch nicht übernommen werden, weil der
Transmitter noch nicht mit dem senden Fertig ist. Also wird das
UDRE-Flag gelöscht. Erst wenn der Transmitter fertig ist (das Dauert
vor allem im Simulator ziemlich lange), wird das byte aus dem UDR
geholt und gesendet. Das UDRE-Flag wird dann gelöscht und du kannst das
nächste Byte ins Register schreiben.
Am einfachsten setzt du einmal einen Breakpoint auf die Stelle, wo du
das Byte in das UDR-Register schreibst. Je nach Rechnergeschwindigkeit
kann es einige Zeit dauern, bis das nächste Byte gesendet wird.

Ich hab z.B. schon einen Timer als Sekundenzeitgeber benutzt. Bei der
Simulation hab ich richtig lange warten müssen, bis der nächste Impuls
kam.

Gruß, Florian

PS: Wenn das auch nicht funktioniert, dann stell doch bitte mal den
Source hier ins Forum. Mit der Datei, welche du angehängt hast, kann
ich nichts anfangen.

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.