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


von Bernhard Roth (Gast)


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

von crazy horse (Gast)


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?

von Bernhard Roth (Gast)


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.

von Dirk D. (dirkd)


Lesenswert?

Und wer sendet diese invertierten Daten? Ist das eine Fehlfunktion des
Senders?

von Bernhard Roth (Gast)


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.

von Dirk D. (dirkd)


Lesenswert?

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

von Bernhard Roth (Gast)


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 :)

von Rolf Magnus (Gast)


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.

von Rolf Magnus (Gast)


Lesenswert?

Da war ich mal wieder zu spät. Ignoriere mein Posting einfahc.

von crazy horse (Gast)


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.

von Bernhard Roth (Gast)


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

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.