mikrocontroller.net

Forum: Haus & Smart Home CAN: Busarbitrierung was macht TRX, was CTR


Autor: Akashi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bin gerade auf eine Frage gekommen, die hoffentlich jemand beantworten 
kann...

Wenn der Treiber des TRX im hochohmigen Zustand (Senden eines rezessiven 
Bits) eine Spannungsdifferenz (durch ein dominantes Bit) erkennt, bricht 
dieser das Senden ab und das Senden der anderen Nachricht mit der 
höheren Priorität (dominanter Zustand) wird fortgesetzt. Ein 
angebundener CAN-Controller registriert dies und bricht seinerseits das 
Versenden (serieller Bitstrom) der Nachricht ab.


Macht das wirklich der Treiber des TRX? Oder ergibt sich das Verhalten 
implizit durch die Beschaltung im Transceiver? Wenn der Transceiver eine 
1 anlegt und es kommt trotzdem eine 0 auf dem bus raus (wenn jemand 
anderes 0 sendet), muss dann der Controller abbrechen?


Herzlichen Dank für hilfreiche Antworten...

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, der Controller muss abbrechen, weil ein späteres dominantes Bit 
sonst den Datenframe ungewünscht verändert.

Autor: MBP-Bayern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Akashi,

Was einige Can-Transceiver machen ist,
dass sie eine Störung des CAN-Bus durch langfristige dominante BUS-Level 
verhindern, in dem sie die maximale Zeit für ein LOW-Bit am BUS 
begrenzen.

Dies bedeutet, wenn TX auf der Controler-Seite dauerhaft dominant ist, 
dass der Transmitter nach einer geweissen Zeit deaktiviert wird.
Somit können aber unter Umständen immer noch Nachrichten am Bus zerstört 
werden, wenn auch später wieder eine Kommunikation zwischen ungestörten 
Teilnehmern möglich ist.

Weiter können diese Transceiver dann auch verhindern, dass am BUS 
dominant gesendet wird, wenn der RX auf der Controler-Seite rezessiv 
gehalten wird.
Denn der Can-Controller würde den BUS für frei halten, und somit den 
Datenverkehr der anderen stören.

Ein Nachteil dabei: Minimale Bitrate bei TJA1040 z.B.: 40Kbit/s.

Die Übertragung muss, wie Fabian schreibt, immer sofort beendet werden, 
wenn das aktuell am BUS anligende Bit nicht zum gesendeten passt.

Ich bin nicht sicher, aber ich meine gelesen zu haben, dass diese 
sofortigen Abbrüche aber eben wirklich nur während der Arbitrierung 
gemacht werden.
Im Falle der darauf folgenden Nutzdaten kann das also abweichen.

Auch wichtig ist, dass alle aktiven Empfangs-Teilnehmer am BUS eine 
Nachricht mit ACK bestätigen, egal ob sie für den einzelnen zu 
gebrauchen war oder nicht.

Ein einzelner BUS-Teilnehemer würde endlos senden, wenn nicht mindestens 
ein "Zuhörer" am Bus hängt der das ACK macht.
Der Sender geht dabei auch nicht auf "ERROR BUS-OFF".

MFG:MBP
Markus.

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.