Forum: Mikrocontroller und Digitale Elektronik Probleme mit externem Interrupt


von Taylor (Gast)


Lesenswert?

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

von bluemole (Gast)


Lesenswert?

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.

von Taylor (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.