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
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
> 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?
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."
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.