www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USART-Problem


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

ich habe aus dem Tutorial den Quellcode für UART, Sender ohne Änderung
in mein ASM übernommen. Ich benutze einen Mega8515. Kompilieren ohne
Fehler. Aber wenn ich z.B. HTerm starte kommt nur Müll an (siehe Bild).
Also keine Zeichenfolge "Test". Hab schon den ganzen Abend das
Problem. Auf dem Stk500 ist ein 4MHz Quarz , Jumper auch richtig.
Board-Takt softwaremäßig gestoppt. Sollt also gehen.
Kein Plan woran das liegt.
Jemand eine Idee?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft der AVR auch mit 4MHz, d.h. sind die Fuses auf externen Takt
gesetzt?

Autor: Winni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha, ich dahcte es mir..die Fuses.

Hab noch nie mit Fuses gespielt, da vorher nen 90S8515 hatte, der hatte
sowas nicht.

Also ich hab nen 4MHz HC18 Quarz auf den vorgesehenen Sockel gesteckt
(STK500).
Im Fuses-Menü sind ja elend viele Möglichkeiten. Laut Datenblatt S.35
müsste ich einstellen:
CKSEL3..1=111, CKOPT=1
Nur ich find dieses CKOPT im Fuses-Menü nirgends. Steht nur was von Low
Frequency, Medium Freq., High Freq.
ja welcher ist denn nun 4MHz ?

Autor: Winni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habs grad gefunden.. die vorletzte Einstellung ist es.

Mal ne andere Frage

wieso die Zeile:
sbis UCSRA,UDRE                   ; Warten bis UDR für das nächste
                                          ; Byte bereit ist

und nicht so:
sbis UCSRA,TXC                   ; Warten bis UDR für das nächste
                                          ; Byte bereit ist

?

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das TXC-Bit gibt an, dass das Sendeschieberegister leer ist, also keine
Daten mehr auf der "Strecke" sind. Ist dies der Fall, nimmt sich die
UART - falls vorhanden - das Datenbyte aus dem UDR und versendet
dieses. Der Sinn des Ganzen ist der, dass Du auch dann einen
zusammenhängenden Datenstrom erhältst, wenn Du das UDRE Bit nicht mit
100% CPU-Auslastung pollst. Du musst also nur mit der Bytedatenrate
pollen um trotzdem maximale Datengeschwindigkeit zu erhalten. Im
Interruptbetrieb verschwindet mit Interrupt auf UDRE die
Interrupt-Latenzzeit zwischen den Datenbytes.
Umgekehrt kannst Du mit dem TXC-Bit aber herausfinden, ob eine
Datenbyte physikalisch versendet wurde.

Grüße

Christian

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.