Probleme bei CAN Bus

OP #2317199
Lesenswert?

Hallo,

ich hab im Moment das Problem, dass ich keine Nachrichten ueber den CAN 
Bus empfangen oder senden kann.
Ich verwende einen ATMega32 der ueber SPI mit einem MCP2515 verbunden 
ist. Als Bustreiber verwende ich einen MCP2551. Schaltplan befindet sich 
im Anhang. Hab hier kein Eagle deswegen mal schnell einen mit Powerpoint 
gemacht.

Ich benutze die Bibliothek die vom Roboterclub Aachen entwickelt wurde.
Beim Erstellen der Bibliothek bin ich schon auf das erste Problem 
gestossen.
Beim builden bekam ich einen Fehler das er die Funktionen spi_wait und 
spi_start nicht kannte. Ich hab dann den spi.h includiert und den 
Funktionsprototypen etwas geaendert. Seit dem funktioniert es. Kann auch 
einwandfrei Register beschreiben und auch die richtigen Werte auslesen.

Beim Erstellen der Bibliothek fuer einen AT90CAN128 bekam ich eine 
Fehlermeldung von WinAVR, dass dieser Kontroller nicht unterstuetzt 
wird. Kann aber eigentlich nicht sein.

Falls jemand aehnliche Probleme damit hatte oder eine bessere Loesung 
dafuer hat waere ich sehr dankbar.

Nun zu dem schwierigeren Problem.
Verwende ich den LOOPBACK Mode des MCP2551 funktioniert alles 
einwandfrei.
Sprich ich kann Nachrichten senden und empfang diese auch. Also habe ich 
den selben Aufbau auf einen weiteren Steckbrett aufgebaut um ma ein paar 
Nachrichten hin und herzuschicken. Aber es funktioniert nicht. Es wird 
zwar eine Nachricht in den Sendepuffer geschoben aber es gibt 
offentsichtlich Probleme beim Senden den das Fehlercounter Register wird 
hochgezaehlt. Die entsprechenden Flags werden gesetzt bis beim Ueberlauf 
der Controller dann in den Bus OFF Zustand geht. Ich verwende auf beiden 
Steckbrettern das selbe Programm, sodass das Bittiming ja in Ordnung 
sein muesste.

Ich werde auch mal das c.file mit dem Hauptprogramm anhaengen
Hat jemand eine Idee was ich falsch mache?

Gruss Johannes
Angehängte Dateien:
Gast #2317507
Lesenswert?

Hallo,

> Verwende ich den LOOPBACK Mode des MCP2551 funktioniert alles einwandfrei.

Logisch; der MCP2551 ist falsch angeschlossen (siehe Datenblatt!). TxD 
an TXCAN und RxD an RXCAN anschliessen, nicht anders rum.

> rs solltest du offen lassen.

Besser nicht; Anschluss an GND ergibt höchste Slew-Rate auf dem Bus (was 
für HiSpeed-CAN auch erforderlich ist). Also Rs so belassen. Aber Vref 
gehört nicht an 5V; es ist ein Ausgang.

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