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
"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?
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.
Und wer sendet diese invertierten Daten? Ist das eine Fehlfunktion des Senders?
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.
Es geht darum, ob das eine Fehlfunktion ist oder nicht. Warum wird invertiert und warum ändert man das nicht?
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 :)
> 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.
Da war ich mal wieder zu spät. Ignoriere mein Posting einfahc.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.