Forum: Mikrocontroller und Digitale Elektronik Interrupt CAN dsPic


von Markus (Gast)


Lesenswert?

Hallo Zusammen,

seit 2 Tagen kämpfe ich mit einem Problem mit einem dsPIC30F6012A und 
dessen CAN ISR. Kurze Umschreibung was ich machen möchte: Wenn CAN 
Botschaften ankommen (egal welche) soll der Controller wach bleiben und 
arbeiten, wenn keine CAN Botschaften mehr kommen soll er schlafen gehen.

Was soweit geht: Der Controller wacht auf und bleibt wach und geht auch 
immer in seine ISR für CAN. Er schläft ein sobald der CAN abgezogen wird 
und geht schlafen.
Hier beginnt das Problem: Er wacht auch wieder auf, geht dann aber nur 
noch einmal in die CAN ISR und geht deswegen sofort wieder schlafen.
Ich muss die ganze Schaltung von der Stromversorgung trennen, danach ist 
der Controller wieder richtig initialiert so das er wach bleibt.
D.h. nach einem wakeup vom sleep Modus ist der CAN nicht richtig 
initialiiert.

Ich habe auch mal per Debug die Control und Statusregiter ausgelesen:
Wenn alles geht hat
C2CTRL : 0x08802
C2INTF : 0xC023
Wenn nix mehr geht
C2CTRL : 0x08802
C2INTF : 0x8820

Es ist also RXEP: Receiver in Error State, Bus Passive bit
1 = Receiver in error state, bus passive
gesetzt.
Es ist also klar das da nix mehr geht. Nicht klar ist es mir wie das weg 
bekomme. Ich hab auch schon die APP-Note von Microchip durch und deren 
Beispiel Code für eine CAN-ISR umgesetzt. Diese sollte das Bit 
eigentlich löschen. Hilft aber nichts.

Bitte helft mir!
Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.