mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Serielle Port des ATMEGAxx -> Detailfragen


Autor: Bernhard Roth (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten morgen!

Zu allererst: Der serielle Port des MCU funktioniert einwandfrei. Ich
hoffe ich finde auf diesem Wege einen Tipp, wie ich die folgende
Situation lösen kann:

Wir haben am seriellen Port eine Empfangsschaltung bei der es passieren
kann daß die Daten invertiert ankommen (Pegele im Datenbyte
invertiert). Der Ruhezustand auf der RXD-Leitung ist natürlich ein
High-Pegel.
Der serielle Port kann die eingehenden Daten nicht verarbeiten und zeig
Frame-Fehler an.
Damit der MCU die Daten trotzdem verarbeiten kann, werden (als
vorläufige Lösung) die Pegel auf RXD einfach mit einem Inverter
umgedreht. Daraufhin kann der MCU wieder Daten empfangen aber da dann
auch der Ruhezustand der RXD-Leitung invertiert ist (LOW) kann es
passieren daß das erste Byte (von z.B. 10) nicht richtig empfangen
wird.
Vor dem ersten Datenbyte bekommt der MCU bei 9k6 ein ca. 500µS langes
High-Signal. Das reicht aber nicht aus um das erste Byte richtig
erkennen zu können. Die Byte-Zeiten liegen ja schon bei 1,09ms.

Hat jmd einen Tipp wie man diese Sache entweder per Software oder durch
Ergänzung von Hardware lösen kann?
Die Baudrate ist übrigens nicht immer fest, kann von 300 - 230kBaud
variieren.

Danke und beste Grüße

Bernhard Roth

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Wir haben am seriellen Port eine Empfangsschaltung bei der es
passieren
kann daß die Daten invertiert ankommen " wie bitte kann das denn sein?
Mal so, mal so - oder wie soll ich das verstehen?

Autor: Bernhard Roth (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, mal so, mal so :)
Am MCU muss ich erkennen daß die Daten falsch ankommen und dann eben
mit einem digitalen Schalter auf die invertierten Daten umschalten um
diese wieder empfangen zu können. Das ganze ist als Diagnosegerät
geplant welches eben serielle Daten - wie auch immer sie ankommen - so
umformen kann daß sie eben korrekt verarbeitet werden können.

Mehr kann ich zu der Anwendung nicht sagen.

Autor: Dirk Dörr (dirkd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wer sendet diese invertierten Daten? Ist das eine Fehlfunktion des
Senders?

Autor: Bernhard Roth (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer diese invertierten Daten sendet ist doch eigentlich irrelevant,
oder?
Kommt ganz drauf an wie das Analysegerät angeschlossen ist kommen die
Daten normal, mal invertiert.

Autor: Dirk Dörr (dirkd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht darum, ob das eine Fehlfunktion ist oder nicht. Warum wird
invertiert und warum ändert man das nicht?

Autor: Bernhard Roth (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist keine Fehlfunktion, sondern nur ein verplanter Elektriker der
nicht checkt wenn er einen RS485-Bus falsch angeschlossen hat. Das
Gerät soll dann fehlertolerant sein und den Fehler halt "ausbügeln"
damit die Daten trotzdem korrekt empfangen werden können.
Nach diesem Ausflug können wir ja wieder auf das ursprüngliche Thema
zurückkehren :)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wer diese invertierten Daten sendet ist doch eigentlich
> irrelevant, oder?

Eigentlich nicht. Vielleicht könnte man den Sender ja reparieren, so
daß er immer korrekte Signale abgibt, statt auf der Empfängerseite
aufwendig die Signale zu rekonstruieren.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da war ich mal wieder zu spät. Ignoriere mein Posting einfahc.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würde einen MC mit 2 UARTs benutzen, eine fütterst du mit direkten
Daten, die andere mit invertierten. Das Programm sucht sich die
passende aus, die andere wird dann per Software stillgelegt.
Die bessere Alternative: qualifizierte Leute für Installationen
anheuern, es sollte eigentlich selbst jedem angelerntem Hilfsarbeiter
möglich sein, 2 Drähte richtig herum anzuschliessen.

Autor: Bernhard Roth (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das macht doch keinen Unterschied ob ich zwei UARTS verwende oder einen
wo ich zwischen invertierten und normalen Daten umschalten kann.
Desweiteren ändert das nichts daran das der UART bei invertierten Daten
natürlich auch ein invertiertes Ruhesignal bekommt -> LOW
Das ist genau mein Problem, der UART erkennt LOW als Startbit und
versucht nun das erste Byte zu empfangen. Das richtige Startbit wird
aber schon als Datenbit erkannt und voila, das erste Byte wird nicht
richtig empfangen.
Genau diesen Umstand bzw. Fehlerfall gilt es zu beseitigen, möglichst
auf Basis von Gattern (wegen Größe und Stromverbrauch).

Grüße

Bernhard

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.