Forum: Mikrocontroller und Digitale Elektronik ATmega88 und framing error


von Gamma.Ray (Gast)


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

von Michael U. (amiga)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Oder könnte das an etwas anderem liegen?
Framing-Error heißt nur, dass zu dem Zeitpunkt, an der das Stop-Bit 
erwartet wird, eine '0' am Pin anliegt. EMV, ESD sind da Stichworte...
Wie ist deine Leitungführung?
Laufen da noch Geräte in der näheren Umgebung?

von Hannes B. (Firma: Technikum-Wien) (gammaray)


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."

von Hannes B. (Firma: Technikum-Wien) (gammaray)


Lesenswert?

Hi Lothar!

Ja es laufen noch andere Geräte - aber wie bereits gesagt ich hab mich 
schon eine ganze weile an die Rx und TX leitung mit dem Oszi gehängt und 
konnte keinerlei einstreuungen oder spannungsschwankungen finden...

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.