www.mikrocontroller.net

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


Autor: Marek (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.