mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART wieder einmal


Autor: Thomas K (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich benutze einen ATMega16 und programmiere mit AVR-GCC bzw. winavr.
Das Senden von einzelnen Zeichen funktioniert.
Im angehängten Programm soll "Test" and den PC geschickt werden.
Das erste Mal funktioniert auch super, doch dann wird nur noch "Te"
gesendet.

Was mache ich da falsch?


Danke,
Thomas K

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
liegt vielleicht daran, dass Du aus einer Interrupt-Routine heraus eine
andere Routine aufrufst. Irgendwann wird das zu langsam...
Warum überhaupt so kompliziert mit Timer etc?
Es würde völlig reichen, in der Main UARTsendChar nach Belieben
aufzurufen.
Ich denke, Du hast ein Timing-Problem zwischen Timer und
Hauptprogramm.
Ausserdem solltest Du die Baudrate entweder als "#define" übergeben
oder feste Werte eintragen. Variablen sind erst erforderlich, wenn Du
die Baudrate per Software vorgeben willst (eher selten).
Unsauber ist dein Programm auch noch wegen Mehrfachzuweisungen
(UBRRL).
Gruß Rahul

Autor: pauko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in UARTsendchar ist ein kleiner semantischer fehler mit großer
auswirkung: ein logisches "&&" statt einem bitweisen "&"!

du musst den AND-operator ("&") anwenden, um UDRE im UCSRA zu
maskieren.

Autor: Thomas K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ein Timing Problem kann ich mir nicht vorstellen.
Die Zeit zwischen den Interrupts ist länger als eine Sekunde!

Außerdem hat der Interrupt nur den Zweck nicht gleich den COM-Port zu
überfluten. Ist also sowieso nur mal zum Testen

Autor: Thomas K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Pauko! Das war's!!

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.