Forum: Mikrocontroller und Digitale Elektronik CAN Receive Interrupt löst nur einmal aus


von Fabi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich hab ein (hoffentlich) kleines Problem mit einem CAN-Programm. Das 
Programm soll sobald ich einen Schalter betätige eine Nachricht 
schicken, und sobald eine Nachricht kommt, diese zurücksenden an den 
Sender.
Hardware ist das olimex CAN-AVR Board sowie ein PEAK CAN-USB Adapter mit 
PCAN-View als Software.
Das Programm aufm AVR tut auch ohne Probleme, nur sendet der Controller 
nur beim ersten Empfang einer Nachricht diese wieder zurück. Bei der 2. 
Nachricht an den Controller springt er nichtmehr in die ISR.
Das Programm hab ich mal angehängt, wär klasse wenn einer ne Idee hat. 
Achja, Controller is ein AVR AT90CAN64

Liebe Grüße,
Fabi

von cskulkw (Gast)


Lesenswert?

Hi Fabi,

das Problem hatte ich auch seinerzeit.

Ich habe das so gelöscht:

void ReEnableRX_MOB(void)
{
  /* Das erneute Beschreiben des CDMOB-Registers ermöglicht erst das 
erneute */
  /* Empfangen des CAN-Datenrahmens */
  unsigned char varl_CANCDMOB_modify = CANCDMOB;
  CANCDMOB = varl_CANCDMOB_modify;
}

Im Prizip habe ich CANCDMOB zwischengespeichert und den selben Inhalt 
wieder beschrieben. Somit habe ich nichts verändert. Wichtig ist, dass 
dieses Register von der CANPAGE abhängt.

Den Funktionsinhalt vn ReEnalbeRX_MOB müßtest Du bei Dir in die ISR 
einfügen, wo das CANCDMOB beschrieben wird.

Probier es mal und viel Glück

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.