mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kommunikation auf LIN-Bus über UART


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich doch, sollte die Schnittstelle einen hw-Break unterstützten.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann nimm ne UART, die das kann.

Autor: MichiB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

dafür gibt es Transceiver-Bausteine

z.B. MCP2021

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> dafür gibt es Transceiver-Bausteine

Die machen aber kein Break-Commando, das muss die UART können.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: MichiB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

schau mal bei Microchip nach App-Notes zu diesem Thema,
die haben da einiges.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Standart-Uart kann einen Break (hw-uart, kein billiger usb-dongle).

Autor: Bruno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Atmel hat da auch was. Auf der HP nach AVR140 und AVR308 suchen.

Autor: marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei einem Slave kann man den Sync-Break per Framing Error detektieren. 
Beim Master muss man die Baudrate halbieren (oder 14400).

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...?

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Beim Master muss man die Baudrate halbieren (oder 14400).

Blödsinn. Gib der UART das Break-Commando und gut is.

Autor: Bruno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil auch jede UART das Break-Commando besitzt.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bruno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

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.