Forum: Mikrocontroller und Digitale Elektronik MCP2515 - Fehlerbehandlung.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von N. N. (drnicolas)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

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]
  • [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.