Hallo! Wer kann sagen, was passiert, wenn ich eine Nachricht nach CAN2.0B extended Format an ein Gerät schicke, das nur CAN2.0A base Format versteht? Gibt es dann Probleme mit den Messagebuffern? Danke schon mal im Voraus.
Zusatz: Habe rausgefunden, daß das schon vom Mikrocontroller aussortiert wird. Wir haben einen Atmel AT89C51CC03, der kann 2.0A und 2.0B und betrachtet die extended frames als Fehler, wenn er im standard frame mode arbeitet. Große Frage ist nun: was macht er mit dem Fehler? Das sagt das Datenblatt von Atmel nicht. Legt er ihn als Wert/Zähler in einem der Register ab und dann ist es für ihn erledigt? Wäre logisch. Brauche nur Gewißheit.
normalerweise wird bei einem fehler nur der error counter inkrementiert, die message boxes bleiben dann davon unberührt, zumindest bei at90can128
Maik Staberock schrieb:
> Große Frage ist nun: was macht er mit dem Fehler?
Er wird einen Errorframe ranhängen und damit das Paket für alle als
ungültig markieren.
Die Nachricht wird zerstört, keiner kann sie empfangen.
Peter
Peter Dannegger schrieb: > Maik Staberock schrieb: >> Große Frage ist nun: was macht er mit dem Fehler? > > Er wird einen Errorframe ranhängen und damit das Paket für alle als > ungültig markieren. > Die Nachricht wird zerstört, keiner kann sie empfangen. > > > Peter Ist das definitiv? Wie könnte man dann Geräte mit 2.0A und 2.0B gleichzeitig am Bus betreiben? In Atmels Datenblatt steht
1 | There are three different types of CAN modules available: |
2 | – 2.0A - Considers 29 bit ID as an error |
3 | – 2.0B Passive - Ignores 29 bit ID messages |
4 | – 2.0B Active - Handles both 11 and 29 bit ID Messages |
woraus ich lese, daß also 2.0B passiv die bessere Betriebsart für gemischten Betrieb wäre. Nur, wie kriegt man den Prozessor dazu? Das CANCONCH Registerbit 4 läßt nur Wahl zwischen 2.0A und 2.0B zu.
Hallo Maik, die drei verschiedenen Arten der erwähnten CAN-Module gelten zunächst ganz allgemein(!) für alle möglichen CAN-Controller und nicht speziell für den CC03er. Der CC03er kann eben 2.0A und 2.0B unterscheiden. Ist er auf 2.0A programmiert, so erkennt auch auch 2.0B-Frames, sendet aber eben KEIN Error-Frame, sonderen ignoriert das 2.0B-Frame. Anders herum wäre es ja Unsinn, denn dann würde der µC ja jede Kommunikation auf dem Bus kaputt machen. Somit hat der CC03er also, wenn er auf 2.0A programmiert ist, 2.0B-Passives Verhalten. Damit können auch 2.0A und 2.0B-Stationen in einem System zusammenarbeiten. Das gilt aber nur beim Einsatz dieses µC´s in allen Stationen. Andere CAN-Controller können dann eben unter Umständen nur reines 2.0A-Protokoll und die machen dann die 2.0Ber-Frames mit Error-Frames platt, so daß hier eine Mischung nicht möglich ist. Bei den Fehler-Zählern bin ich mir nicht sicher was passiert, das haben wir auch noch nicht näher untersucht (wir hatten noch nicht so viele Fehler und haben noch nicht oft 2.0A und 2.0B gemischt). Carlos
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.