Gast
#2042609
Hallo Problem: ======== Der SJA 1000 läßt sich nach dem Initialisieren und Lesen/Schreiben einer Can-Message nicht in den Reset-Mode zurückschalten. Ich setzt das Reset-Bit, indem ich in das Mode-Register(Adresse 0) 0x01 schreibe. Dann polle ich das Reset-Bit einmal pro us über eine Zeitdauer von 1 ms. Leider wird aber nur 0x00 zurückgelesen (Reset-Bit nicht gesetzt). Frage: ====== Es scheint, als würde der SJA1000 sich "aufhängen". Sind im Forum möglicher Weise die Bedingungen bekannt, die das beobachtete Verhalten auslösen können ? Kann es zum Beispiel mit dem Timing bei der Bedienung der parallelen Schnittstelle des SJA1000 zusammenhängen ? Vielleicht ist der Chip defekt ? Hintegrundinfos =============== Modus: Pelican Betriebsystem: Linux (Treiber als Kernel-Modul) Treiber: Der Treiber basiert auf dem PCAN-Treiber von Peak Systems. Ich verwende keinen PCI-Bus, so dass ich die untere Schicht des Treibers ersetzen musste (statt Zugriff auf PCI, Zugriff auf ein VME-ähnliches Bussystem). Der Treiber an sich sollte aber funktionieren. Ablauf im Treiber: 1) Initialisieren: Es wird überprüft, ob ein SJA1000 vorhanden ist. Dann wird er in den Reset-Mode geschaltet, und anschliessend in den Pelican-Modus. Im nächsten Schritt werden die Acceptance-Code-Register und die Acceptance-Mask-Register auf die Default-Werte gesetzt (0 bzw 0xff). Dann wird eine BaudRate von 500 kbit/s für den CAN eingestellt und das Output Controll Register konfiguriert. zuletzt wird die Interrupts eingeschaltet. 2) Tx/Rx einer Can Message: Anschliessend wird entweder auf eine CAN-Message (wird über Interrupthandler gelesen) gewartet, oder eine Can-Message gesendet. 3) Aufräumen: Der Befehl "Abort Transmission" (Setzen des Bit 1 in Register 0x1) beendet die Übertragung. Anschliessend werden die Interrupts ausgeschaltet. Dann soll der SJA1000 wieder in den Reset-Mode gehen (durch Sezten des Reset-Bits im Mode-Register). Das verweigert er allerdings (siehe auch Anhang). Auch ein erneutes Initialisieren ist nicht möglich 4) Nach Ein- und Ausschalten der Versorgungsspannung kann im Rahmen der Initialisierung wieder in den Reset-Mode geschaltet werden. Ich schicke gerne auch noch detaillierte Informationen, wenn benötigt. Danke Tilman
