ArduinoNano als LinSlave

Hallo zusammen,
ich habe hier viele Beiträge zum LIN-Bus gelesen, aber in keinem wird gefragt/erklärt, wie
ein BREAK-Signal als Start-Kennung einer neuen Nachricht erkannt werden kann?

Im Detail: Der Lin-Master (serial:19200Baud 8N1) erzeugt zu Beginn einer Nachricht ein BREAK-Signal,
d.h. es werden mehr als 8bit-Zeiten dominanter Low-Pegel auf dem Eindraht-Bus ausgegeben
und somit ein "Protokoll-Fehler" auf dem Bus erzeugt.
Wenn man den Empfang der seriellen Schnittstelle eines LIN-Slaves zu Fuß programmiert, fragt man
beim Empfang eines Zeichens diesen Fehler in dem Status-Byte auf einen vorherigen Frame-Error ab und erkennt daran den Beginn einer neuen Nachricht.
Wie kann man diesen "Break"-Event denn nun in den SERIAL-Funktionen von Arduino abfragen/erkennen?
1000-Dank im voraus!!!

Da der Nano, wie bereits erwähnt, nicht über eine integrierte LIN-Funktion verfügt, können Sie das UART-Bit 'Frame error' verwenden, um ein Unterbrechungsfeld zu erkennen, indem Sie es mit einer Art Zeitstempel kombinieren.

dh im Pseudocode:
if (frame_error_bit == 1 && empfangenes Byte == 0) {
vorausgesetzt, es ist ein BREAKFIELD
breakfield_timestamp = this.timestamp
}
// wenn das nächste Byte empfangen wird
if (empfangenes Byte == 0x55 und this.timestamp - breakfield_timestamp <= Intervallzeit) {
BREAKFIELD bestätigt
SYNC-Feld empfangen
Bereiten Sie den Empfang des LIN-Rahmens vor
}

Ich habe eine LIN-Bibliothek zusammengestellt, mit der ich es versucht habe und die für mich in Ordnung zu sein scheint. Fühlen Sie sich frei, es durchzusehen, wenn Sie es wünschen! :wink:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.