MCP2515 - Fehlerbehandlung.

OP #5324506
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?
#5324560
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.
Moderator (Firma: Titel) Persönliche Seite #5324577
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...
OP #5324677
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"
Gast #5324697
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?
#5325034
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.
OP #5327684
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren