Externer Pin Interrupt ruft Timer ISR auf

OP #3092762
Lesenswert?

Hallo zusammen,

Ich habe folgendes Problem. Ich habe auf meinem AtXmega32 einen externen 
Pin Interrupt auf Pin7 von PortD programmiert. Dazu habe ich den Treiber 
von port_driver von Atmel verwendet.

Code:
1
// Configure PD7 as input, triggered on rising edge
2
PORT_ConfigurePins( &PORTD, 0x80, false, false, PORT_OPC_TOTEM_gc, PORT_ISC_RISING_gc );
3
PORT_SetPinsAsInput( &PORTD, 0x80 ); 
4
 
5
// Configure Interrupt0 to have medium interrupt level, triggered by pin 7
6
PORT_ConfigureInterrupt0( &PORTD, PORT_INT0LVL_MED_gc, 0x80 );
7

8
// Enable medium level interrupts in the PMIC
9
PMIC.CTRL |= PMIC_MEDLVLEN_bm;

ISR:
1
// Power Switch Interrupt
2
ISR(PORTD_INT0_vect)
3
{
4
}


Die ISR wird ohne Probleme aufgerufen. Jetzt benötige ich noch einen 
Timer der bei einem gewissen compare Wert auslöst.

Code:
1
TCC0.CTRLA = 0x00;
2
TCC0.INTCTRLB = 0x03;    //Compare-Interrupts A activate as high-Level
3
TCC0.CCA = 1800;         // compare value
4
TCC0.PER = 2000;         //maximal value
5
TCC0.CTRLA = TC_CLKSEL_DIV1024_gc; //Prescaler auf 1024
6
PMIC.CTRL |= PMIC_HILVLEN_bm;
7
sei();

ISR:
1
ISR(TCC0_CCA_vect)
2
{  
3
}

Das Problem ist nun, sobald ich einen external Pin Interrupt am Port D, 
Pin7 bekomme springt mein Programm in die Timer ISR. Wodrann kann das 
liegen?
#3092790
Lesenswert?

T. F. schrieb:
> Das Problem ist nun, sobald ich einen external Pin Interrupt am Port D,
> Pin7 bekomme springt mein Programm in die Timer ISR. Wodrann kann das
> liegen?
Da in beiden ISRs ohnehin nichts drinsteht, ist es doch egal, welche 
ausgeführt wird.

Poste deinen kompletten Code. Mit diesen Codefetzten kann man nur raten 
und hellsehen.

mfg.
OP #3092825
Lesenswert?

Hallo Thomas..
vielen Dank für deine Schnelle Antwort.
Die ISR´s setzen letzendlich nur ein Flag, das in der Main später 
verwendet wird. Das ist für das Problem eigentlich irrelevant.
Ich hab es vermieden den ganzen Code zu Posten da es der noch unmengen 
an überflüssigen Code enthält. Im Prinzip besteht mein derzeitiges 
Testprogramm nur aus obenstehender Initialisierung.
#3092854
Lesenswert?

T. F. schrieb:
> Hallo Thomas..
> vielen Dank für deine Schnelle Antwort.
> Die ISR´s setzen letzendlich nur ein Flag, das in der Main später
> verwendet wird. Das ist für das Problem eigentlich irrelevant.
> Ich hab es vermieden den ganzen Code zu Posten da es der noch unmengen
> an überflüssigen Code enthält.

Dann speck ihn ab, so dass ein in sich lauffähiges Programm entsteht, 
welches den Fehler zeigt.
Du willst Hilfe, also ist dir das auch zuzumuten.
OP #3092923
Lesenswert?

Das Problem hat sich jetzt gelöst.
Ich habe mein Programm wie vorgeschlagen abgespeckt. Dort ist der Fehler 
nicht mehr aufgetreten. Im Anschluss habe ich entsprechende 
Programmteile wieder in mein ursprüngliches gebaut. Komischer ist jetzt 
das gewünschte Verhalten da. Ich vermute das es einfach ein Problem mit 
Atmel Studio gab.

Troztdem vielen Dank für Eure schnelle Hilfe! Beim nächsten Mal folgt 
direkt der Code ;-)

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