www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART: Probleme bei der Synchronisation


Autor: Uli Wurst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich experimentiere gerade etwas mit dem A90S4433 und habe ein Problem 
mit dem Hardware UART:

Ich lasse folgendes Testprogramm laufen

ldi temp, RAMEND
out SPL, temp

sbi UCSRB,TXEN                 ;TX aktivieren
sbi UCSRB,RXEN                ;RX (Empfang) aktivieren
ldi temp,12 ;Baudrate 19200 einstellen (4MHz)
out UBRR,temp

loop:
  ldi temp, 'T'
  rcall serout
  ldi temp, 'e'
  rcall serout
  ldi temp, 's'
  rcall serout
  ldi temp, 't'
  rcall serout
  ldi temp, '!'
  rcall serout
  ldi temp, 10
  rcall serout
  ldi temp, 13
  rcall serout
  rjmp loop

serout:
  sbis UCSRA,UDRE  ;bereit?
  rjmp serout
  out UDR, temp
  ret               ;zurück


und lasse mir PC-seitig mit minicom unter Linux die Kommunikation auf 
der seriellen Schnittstelle anzeigen.
Parameter von minicom sind 19200 bps/8N1, keine Hardware-Flusskontrolle, 
keine Software-Flusskontrolle.

Von Zeit zu Zeit scheint die Synchronisation mit dem AVR nach einem 
Reset (z.B. nach Neuprogrammierung des Flash) nicht zu tun, minicom 
zeigt mir Datenmüll an, und ich muss den AVR noch einige Male resetten 
bis es tut.

Wie kann ich dieses Problem beheben?

Viele Grüße,

Uli

Autor: Gerhard Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch mal 9k6. Bei 19k2 habe ich immer ähnliche Probleme gehabt, 
besonders mit längeren Kabeln.

MfG
Gerd

Autor: Uli Wurst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gerhard,

danke, aber ich konnte das Problem damit lösen, dass ich nach der 
Initialisierung des UART erstmal einige Zeit Nichts mache (>120000 
Takte).
Nachdem der Ruhepegel des UART einige Zeit anliegt klappt es anscheinend 
immer mit der Synchronisation.

Viele Grüße,

Uli

Autor: Gerhard Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint so, als ob beim Init schon das erste Zeichen gestartet wird, 
z.B. wenn der Treiber für TxD eingeschaltet wird. 120.000 Takte sind 
aber bei 19k6 etwas länger als ein kaputtes Zeichen.

MfG
Gerd

Autor: Uli Wurst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>120.000 Takte sind aber bei 19k6 etwas länger als ein
>kaputtes Zeichen

Ich dachte mir: Viel hilft viel, und nachdem mein AVR beim Start ohnehin 
erstmal 1-2 Sekunden mit dem key-schedule beschäftigt ist, kommt es 
darauf auch nicht mehr an :-)


Uli

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.