Hallo, ich möchte einen Interrupt auslösen per XINT1. Vorab ich arbeite mit Code Composer C2xx. Ich starte mein Hauptprogramm, was in einer Endlosschleife endet und auf den Interrupt wartet. Wenn ich nun den Interrupt auslöse, wird auch das entsprechende flag gesetzt wenn ich das Register anschaue aber das Programm springt nicht in die Unterfunktion. Folgende Register habe ich gesetzt. XINT1CR = 0x8003; //0x0001 enable //0x0002 low priority ( vector address 0Ch ) int6 //0x0004 polarity ( interrupt on falling edge ) //0x8000 clear ( int flag by writing a 1 ) in meiner "vectors.asm" habe ich meine Subroutine so deklariert. ref _c_int0, _xint1_isr sect "vectors" rest: B _c_int0 ;00h reset .. .. int6: B _xint1_isr ;0Ch INT6 .. meine Unterfunktion ist so benannt: "interrupt void xint1_isr (void){}" Habe ich was vergessen oder wo liegt der Fehler.Ich arbeite mich grade in das Thema an. Ist zwar kein Atmel aber vielleicht gibts ja auch hier Leute die sich damit auskennen. Taylor
Hallo Taylor, ich vermute stark das Du diesen Befehl vergessen hast. EINT; // Enable Global interrupt INTM Ich hab' die Zeile aus den Examples für den F281x. MfG bluemole PS: Schau Dir die Examples an. Die findes Du auf der TI Homepage.
Hi, ne daran lags es nicht. Das hab ich mit mit asm(" CLRC INTM"); enabled Hab den Fehler aber schon gefunden. Hatte vergessen im IMR den Interrupt freizugeben. Aber so richtig verstanden hab ich den unterschied zwischen maskable und unmaskable Interrupt noch nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.