Ich suche Informationen zur korrekten Fehlerbehandlung beim MCP2515. Ich finde die Fehlerlags MERRF und das Register EFLG. Dann aber auch noch Inofrmationen in CANSTAT. Beispielsweise ist mir nicht klar worin sich einzelne Fehlertypen auszeichnen. Mir fallen da vor allem 2 typische Fehler ein: 1. keine Kabelverbindung zu irgendeinem anderen Busteilnehmer 2. falsches Timing Vor allem durch 1. soll die Schaltung nicht blockiert werden Gibt es da eine gute Info-Seite?
N. N. schrieb: > 1. keine Kabelverbindung zu irgendeinem anderen Busteilnehmer > 2. falsches Timing In beiden Fällen wird der MCP die Error-Counter TEC bzw REC hochzählen bis zum Bus-off. Siehe Kapitel 6.7 im Datenblatt. Ist eines der beiden also bei 128 angekommen hast du ein Problem am Bus. Bei einem funktionierenden Bus sind beide fast immer 0.
:
Bearbeitet durch User
N. N. schrieb: > 1. keine Kabelverbindung zu irgendeinem anderen Busteilnehmer > Vor allem durch 1. soll die Schaltung nicht blockiert werden Definiere "Schaltung blockiert", denn natürlich ist in diesem Fall die Schaltung "blockiert", weil ja nichts übertragen werden kann. Ob deine Software blockiert, das kannst du entsprechend programmieren...
:
Bearbeitet durch Moderator
korrekt formuliert. Ich muss natürlich mit den verschiedenen Ursachen vernünftig umgehen. Beispielsweise würde ich bei "Kabel ab" anders vorgehen wollen als bei einem grundsätzlichen Fehler wie falsches Timing. Bei Kabel ab sol also eine Anzeige erfolgen, aber die Firmware soll weitermachen und ggf. irgendwann korrekt übertragen. Hingegen soll bei falschem Timing die Firmware "aussteigen"
An dieser Stelle werden ja gerne mal dumme Sprüche gemacht, von wegen man solle doch ins Datenblatt schauen. Ich habe das gerade noch einmal gemacht und ich muss sagen, dass das Fehlerverhalten dort wirklich exzellent beschrieben ist. Mit State-Diagramm und allen Detailinfos. Ich fand es auch gut, dass der MCP von alleine aus dem Bus-Off wieder rauskommt. Es gibt andere Controller, wo das wesentlich komplizierter ist. Was fehlt dir denn konkret?
N. N. schrieb: > Bei Kabel ab sol also eine Anzeige erfolgen, aber die Firmware soll > weitermachen und ggf. irgendwann korrekt übertragen. Verstehe ich so nicht. Die Firmware wird doch kaum selber die Busleitung reparieren, weshalb soll diese weiter senden wollen. Dies wäre doch ein typischer Fehler der nach Reparatur erst von einem "User" quittiert werden muss. Bis dahin braucht nicht gesendet zu werden. > Hingegen soll bei falschem Timing die Firmware "aussteigen" In diesem Fall könnte die Firmware doch erst mal andere CAN-Baudraten durchprobieren bevor sie gleich aufgibt.
Will ich aber so haben - sorry for that. Momentan mache ich nichts weiter als im Fehlerfall die Übertragung abzubrechen und die Flags zu löschen. Das mag Q&D sein. Da geht doch sicher zur Ursachenforschung mehr, oder ?
Ich habe Leider bislang keine wirkliche Lösung gefunden. Die Variante "keine Kabelverbindung" sehe ich auch als Simulation für "Kabelbruch" Meine Idee einfach die Übertragung abzubrechen scheint nicht zeilführend: Ich breche die Übertragung ab und lösche alle möglichen Fehlerfalgs und dennoch bekomme ich immer wieder dieselben Interrupts. Ich habe immerhin herausgefunden, daß das MERRF-Flag wohl im wesentlichen im Zusammenhand mit Mechniscmen zur automatischen Ermittlung des richtigen Timings benutzt wird. Bleibt noch die Bedeutung von ERRIF und EFLG, respektisve die ICOD Bits in CANSTAT. WIe komme ich soweit, daß keine neuen Interrupts mehr auftauchen im Fehlerfall?
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.