Probleme mit MCP2515

OP #2370071
Lesenswert?
• ▲
▼
Hallo zusammen!

Ich beschäftige mich gerade mit dem CAN-Bus und habe mir hierzu ein paar 
Platinen mit Mega16/MCP2515/MCP2551 hergestellt. Um das Rad nicht neu 
erfinden zu müssen, habe ich die Lib von Creatives-Chaos verwendet. 
Allerdings bekomme ich sie nicht zum Laufen.  Init etc. läuft, aber bei 
mcp2515_static_filter bleibt er hängen. Er wartet in der Funktion auf 
das Bit OPMOD2, welches aber nie gesetzt wird.
Sämtliche Versuche, abgesehen von dem bei der Initialisierung (init 
liefert true zurück), in einen anderen Operation-Mode zu wechseln, 
scheitern kläglich. Die REQOPx Bits lassen sich setzen (bestätigt durch 
lesen der Register), führen aber zu nichts.

Es hatte schon einmal jemand das Problem hier: 
Beitrag "Problem mit CAN Interface MCP2515/2551"
tobias_k73 hat aber leider nicht auf eine Anfrage geantworten, immerhin 
scheint er das Problem gelöst zu haben.

Weiß jemand weiter?

MfG, GI
Angehängte Dateien:
Gast #2370174
Lesenswert?
• ▲
▼
Hast Du den Reset-PIN am MCP angeschlossen?

Denn nach dem Reset soll sich der MCP ohnehin im Konfigurationsmodus 
befinden. Das entspräche dem geforderten Bit OPMOD2.

Wenn sich der Controler nicht im Konfigurationsmodus befindet, dann 
lassen sich folgende Register nicht beschreiben:

CNF1, CNF2, CNF3
• TXRTSCTRL
• Filter Registers
• Mask Registers

siehe dazu auch Datenblatt Punkt 9.0 Modes of operation. (Seite ist 
versionsabhängig)


Verfügt der MCP über seinen eigenen Takt?

Hast Du schon irgend ein Byte auslesen können, dass nicht Null war? -> 
eventuell ein Register beschreiben,dass nicht vom 
Konfigurationsregistern abhängt. Dann funktioniert die Kommunikation. 
Ggf. zur Fehlersuche, Codestelle auskommentieren, wo der µC stehen 
bleibt.


Auch wenn Du jetzt eine andere Antwort erwartest. Es braucht seine Zeit 
Code zu rewieven, um mögliche Fehler zu finden. Aber da andere mit der 
Bibliothek erfolgreich waren, würde ich erst einmal die Hardware 
checken.
OP #2370196
Lesenswert?
• ▲
▼
Hardware sollte in Ordnung sein, SPI läuft (ich kann Register lesen, 
diese liefern plausible Ergebnisse), RESET ist fest auf VCC...
Ich habe alles zig mal überprüft, ich kann keinerlei Fehler erkennen.

Er setzt in can_static_filter() REQOP2 (durch auslesen des Registers 
überprüft), wechselt aber nie in den config-Modus (wartet also unendlich 
auf OPMOD2).
Gast #2370426
Lesenswert?
• ▲
▼
Da gab es letztes so einen Threas mit dem CAN128, der nach dem Reset auf 
den CAN-Leitung etwas zuckte. Dadurch entstanden gleich an den anderen 
CAN-Knoten eine Menge Error-Frames.

Aber ganz ehrlich, ich habe nicht diese Probleme und kann während des 
Betriebs den Reset durchführen. Da hackt auch nichts.

Ich habe mal versucht nachzuvollziehen, was da in Deinem Code abgeht. Da 
sind mir einige Aufrufe nciht plausibel. Von woher wird 
mcp2515_static_filter aufgerufen. Was macht canstat() usw...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.