Probleme mit externem Interrupt

Gast #158851
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
Gast #158852
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.
Gast #158853
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren