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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.