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


von Uli Wurst (Gast)


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

von Gerhard Schmidt (Gast)


Lesenswert?

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

MfG
Gerd

von Uli Wurst (Gast)


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

von Gerhard Schmidt (Gast)


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

von Uli Wurst (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.