AT90CAN128, Receive Interrupt

Gast #304024
Lesenswert?
• ▲
▼
Hallo,

Ich versuche gerade erfolglos den Receiver Interrupt des AT90CAN128
auszulösen. Ich nutze den ImageCraft Compiler und die Library die ich
gerade in der Codesammlung gepostet habe. Sonst klappt bis jetzt schon
einiges ;)
Ich schicke kontinuierlich mit einem Dongle Daten an den Controller.
Jedoch wird die ISR nicht aufgerufen.
Das einzigste was passiert das meine Tx Funktion gestört wird seit dem.
Die CAN IDs werden verfälscht.

Initialisierung:

CANGIE = 0x00100000;


ISR:

#pragma interrupt_handler can_transfer_complete_isr:19
void can_transfer_complete_isr(void)
{
  PORTA++;
}



Gruß und Danke,

Christian
Gast #304026
Lesenswert?
• ▲
▼
Hallo.

Das soll auch gar nicht die ganze Initialisierung sein. Das ist ein nur
ein Ausschnitt was ich nun speziell für den Interrupt enable
ausprobiere.

Der Rest klappt alles soweit. Die Funktionen für den Empfang per
Abfrage oder zum versenden klappen schon gut.

Ich weiß bloß gerade hierbei nicht weiter. Welche anderen Einstellungen
muss ich denn da noch beachten? Was kommt mir da sonst in die quere?

Gruß Christian
Gast #304029
Lesenswert?
• ▲
▼
Hallo,

etwas spät... aber Ich habe nun wieder Zeit dafür gefunden :-)

Ich probiere es zur Zeit so aus, und es klappt immer noch kein
bisschen. Leider weiß Ich da auch nun nicht mehr weiter. Die ganzen CAN
Register im Datenblatt machen mich noch zu schaffen ;)

Init:

  CANGIE = (1<<ENIT) | (1<<ENRX);      //enable receive interrupt

  CANIE1 = 0;
  CANIE2 = (1<<0);              //enable MOb0 interrupt

  CANSIT1 = 0;
  CANSIT2 = 0;



ISR:

#pragma interrupt_handler can_transfer_complete_isr:19
void can_transfer_complete_isr(void)
{
  PORTA++;


 CANSTMOB &= ~(1<<RXOK);          //clear interrupt flag
}


Wäre echt super wenn mir da jemand noch helfen könnte.

Schönen Tag euch, Christian
(Firma: Student) #618769
Lesenswert?
• ▲
▼
Hallo Christian,

kannst Du mir bitte sagen wie Du dein Problem gelöst hast.

Ich kämpfe schon seit 3 Wochen mit CAN und suche vergeblich nach dem
Fehler. Das Sende- und Empfangsprogramm geht bis der Warteschleife und
bleibt da hängen, da RXOK und TXOK nie auf eins gesetzt werden. Seit
zwei Wochen suche ich vergeblich, wo das Problem liegt und kann immer
noch nicht den Fehler einzugrenzen.

Ich habe 2 Boards mit je einem AT90CAN128, wobei einer Sender und
der andere Empfänger ist. Baudrate ist 250 kbit/s. Bit Timing habe ich
nicht selbst gerechnet sondern aus dem Datenblatt genommen. Weiss nicht,
ob es stimmt. Auch mit anderen Baudraten habe ich ausgetestet.
Im Internet habe ich einige Beispiele gefunden und habe da nichts
anderes gefunden. Die habe ich auch getestet. Geht auch nicht.

Hardwarefehler? Aber es ist alles richtig angeschlossen. Ich benutze
zwei Drähte je 2m mit 120 Ohm Abschlusswiderständen. Hast Du GND auch
benutzt? Braucht man den unbedingt? Welche Kabel hast Du angewendet?

Mich interessiert vor allem, ob Du mit AT90CAN128 die CAN-Nachrichten 
senden und empfangen kannst? Wießt Du vielleicht, wo kann bei mir der 
Fehler liegen?

Mit freundlichen Grüssen

Jon

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.