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

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