Forum: Mikrocontroller und Digitale Elektronik MCP2515 - Fehlerbehandlung.


von N. N. (drnicolas)


Lesenswert?

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?

von Thomas F. (igel)


Lesenswert?

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
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von N. N. (drnicolas)


Lesenswert?

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"

von Harald (Gast)


Lesenswert?

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?

von Thomas F. (igel)


Lesenswert?

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.

von N. N. (drnicolas)


Lesenswert?

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 ?

von N. N. (drnicolas)


Lesenswert?

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
Noch kein Account? Hier anmelden.