Hallo! Hat hier jemand Erfahrung damit Daten per UART vom LIN-Bus auszulesen bzw. auf den LIN-Bus zu schreiben? Mich würde interessieren wie ihr das Empfangen der Daten umgesetzt habt? Switcht ihr da zwischen verschiedenen Baudraten hin und her? Denn die LIN-Botschaften sind ja nicht völlig UART-konform... Danke im voraus, Johannes
Eigentlich doch, sollte die Schnittstelle einen hw-Break unterstützten.
Leider nicht, hw-break wird nicht unterstützt. Also der Syncbreak ist realisiert durch das Switchen auf eine niedrigere Baudrate. Aber wie behandele ich das ganze in Empfangsrichtung am besten?
> dafür gibt es Transceiver-Bausteine
Die machen aber kein Break-Commando, das muss die UART können.
Ja ... also ein LIN-Tranceiver habe ich natürlich, aber der ist ja kaum mehr als ein "dummer" Verstärker... Also die Frage ist, wie ich die LIN-Botschaften am besten empfangen kann wenn ich nur eine Standard-UART am µC habe. Kann mir da jemand Tipps geben, bzw. hat das schonmal jemand gemacht? Danke im voraus! Johannes
Hi, schau mal bei Microchip nach App-Notes zu diesem Thema, die haben da einiges.
Der Standart-Uart kann einen Break (hw-uart, kein billiger usb-dongle).
Atmel hat da auch was. Auf der HP nach AVR140 und AVR308 suchen.
Bei einem Slave kann man den Sync-Break per Framing Error detektieren. Beim Master muss man die Baudrate halbieren (oder 14400).
Danke schonmal für die Antworten! @Chris: Bei welchem Ereignis sollte ich denn die Baudrate ändern? Also woher weiß ich wann ich die Baudrate ändern soll...?
> Beim Master muss man die Baudrate halbieren (oder 14400).
Blödsinn. Gib der UART das Break-Commando und gut is.
Ich stehe gerade vor dem gleichen Problem. Meine Vorgehensweise wollte ich in etwa so machen. Frame error der UART sollte meinen synck-break erkennen. Im Vorfeld UART auf den externen Interrupt legen und die Pulslänge vom synch-field ausmessen. UART stoppen und dann mit neu berechnetem Wert initialisieren. Mann kann das auch über die Frequenz vom internen Oszil. machen. Natürlich nur wenn man den verwendet. Was bei mir aber nicht der Fall ist.
Ja, also wie gesagt, ich habe auch kein Break-Kommando zu Verfügung ... @Bruno: Wäre nett, wenn du dich bei mir mal melden könntest! Vielleicht kann man sich dann mal austauschen... Du kannst mich erreichen unter: joohaannes ät googlemail.com
Werde ich machen. Habe einen Kontakt bei Atmel den ich mal über die genaue Vorgehensweise ausquetschen werde. Leider habe ich ihn telephonisch nicht erreicht. Wird diese Woche auch nichts mehr werden. Wenn das der Fall ist melde ich mich aber. Habe mir auch überlegt das SBF über den externen Timer zu erkennen. Timerstart bei der ersten fallenden Flanke und bei der ersten steigenden Flanke wieder Triggern. Wenn der Timer einen bestimmten Wert überschritten hat war es das Break.
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.