mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART sendet letzte Zeichen falsch


Autor: Sebastian Enz (senz) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
meine ersten Gehversuche mit einem ATTINY 2313 und seinem UART sind bis 
auf ein Problem erfolgreich.
Beim Senden eines ASCII Strings aus dem Programmspeicher an den PC 
werden die letzten beiden Zeichen falsch gesendet.

String zu Senden: .db 27,"Test der RS232-Schnittstelle",13,0,0
im Terminal empfangen: <27>Test der RS232-SchnittstellÙÃ

Terminalprogramm: HTerm 0.6.5 beta

Quarz: 14,31818 MHz
UBRR:  185 (4800 Baud)
8 Datenbits
1 Stopbit
Parität keine

Unabhängig von der Länge des Strings werden die letzten Zeichen falsch 
übertragen. Fuses sind richtig gesetzt, AVR läuft mit der richtigen 
Freuqenz. Bei anderen Baudraten zeigt sich das selbe Ergebnis. 
Übertragung funktioniert bis 28.8KBaud!
Was ist hier falsch?
Ein Auszug aus dem Code ist im Anhang.

Grüße, Sebastian

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was ist bei dir t0?
soweit ich weiß kann der lpm befehl sachen nur nach r0 laden?!

µLuxx

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
µluxx .. wrote:
> was ist bei dir t0?
> soweit ich weiß kann der lpm befehl sachen nur nach r0 laden?!
Nö. Es gibt zwar eine Variante, bei der lpm ohne Parameter aufgerufen 
wird, und dabei ist das Ziel r0, aber der Tiny2313 kann auch die 
Varianten mit Parametern. Und da ist die Syntax korrekt.

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Sebastian,

was passiert in Deinem Programm, nachdem es das letzte Zeichen in UDR 
geschrieben hat?

Es darf nichts passieren, was die Übertragung stört, denn in dem Moment 
ist ein Zeichen noch unterwegs, und das andere ist gerade zum Absenden 
vorbereitet.

Beispiel RS-485, halbduplex: Da frage ich erst das Transmit Complete 
(oder so ähnlich) ab, bevor ich wieder auf Empfang schalte.


ciao
Wolfgang horn

Autor: Sebastian Enz (senz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach dem letzten Zeichen (Auswertung der 0) springt das Programm per ret 
zurück in eine 5 Sek Schleife, die eine LED blinken lässt, von da aus 
das Senden gestartet wird.

Das mit dem lpm und Parametern weiß ich auch erst seit heute als ich mir 
im Datenblatt die Instructionset des 2313 durchgelesen hatte. :) Hatte 
den code blind kopiert und mich gewundert, daß es trotzdem funktioniert.

Autor: Sebastian Enz (senz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Fehler gefunden!
Der Tip "Was passiert danach" hat geholfen! Nach dem Rücksprung lief das 
Programm ins Lehre bzw. in die folgende Senderoutine.
Also Augen auf beim wilden Hüpfen...

Danke für den Tip Wolfgang!

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian Enz wrote:
> Ich habe den Fehler gefunden!
> Der Tip "Was passiert danach" hat geholfen! Nach dem Rücksprung lief das
> Programm ins Lehre bzw. in die folgende Senderoutine.
> Also Augen auf beim wilden Hüpfen...
Und demnächst vielleicht sofort den kompletten Code schicken und nicht 
nur so einen Schnipsel! Ich weiß echt nicht, warum das immer wieder 
gesagt werden muss...

Autor: Sebastian Enz (senz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry,
ich geb' mir Mühe!

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.