ATmega88 und framing error

Gast #1327779
Lesenswert?

Hallo!

Ich habe ein Problem mit der atmega88 UART.

Ich verwende den Receiver des UART zum empfangen von daten von einem 
vorhergehenden prozessor und sende diese daten mit dem Transmitter des 
selben UARTs zu einem anderen prozessor. Jetzt tritt ab und zu - alle 
paar Stunden mal - ein Framing error auf. Kann es daran liegen, dass ich 
den UART teile? Konnte nicht herausfinden ob er für bits lesen und 
schreiben den selben takt verwendet oder nicht...

Oder könnte das an etwas anderem liegen?

Ich verwende einen externen 3,686400 MHz oszillator und die BAUDRATE is 
19200 BAUD 8 daten und 1 stop bit. also eigtl error rate 0,00% laut 
Datenblatt.

Könnte es an Schwankungen des Oszillators liegen?


Habe auch schon die Rx und Tx leitung mit dem oszi angeschaut sehe 
keinerlei übersprechen, oder einstreueungen - flanken sind auch relativ 
steil...

Hat jemand eine Idee?

Hannes
#1327801
Lesenswert?

Hallo,

Deine Beschreibung des Problems ist mir noch unklar.

Du sendest ständig viele Daten und alle paar Stunden gibt es einen 
Frame-Error?

Du sendest in größeren Abständen Pakete und da ist manchmal eins kaputt?

Bei der ersten Version wäre meine Vermutung Störimpulse von außen,
die können es auch bei der 2. version sein, allerdings könnte ich mir da 
auch ein Softwareproblem vorstellen, race condition, die den 
Sender/Empfänger bedient bevor die Daten fertig bearbeitet wurden oder 
sowas.

Gruß aus Berlin
Michael
(Firma: Technikum-Wien) #1327828
Lesenswert?

ich sende ständig also alle 400ms um die 50 zeichen...

aber ich habe die tx und rx leitung mit dem oszi überprüft - die sind 
sehr sauber - und ich wüsste net woher da alle paar stunden ein 
störimpuls kommen sollte - obwohl es natürlich möglich ist...

kannst du vllt ein bisschen genauere erklären, was du mit der race 
condition meinst. soweit ich weiß kann eine UART transmission 
software-technisch nicht abgebrochen werden beim atmega, da er auch noch 
das letzte bit sendet bevor er die übertragung abbricht oder ein neues 
byte sendet...

Zitat aus dem datasheet:

"The disabling of the Transmitter (setting the TXEN to zero) will not 
become effective until ongoing
and pending transmissions are completed, i.e., when the Transmit Shift 
Register and
Transmit Buffer Register do not contain data to be transmitted. When 
disabled, the Transmitter
will no longer override the TxDn pin."

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren