PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nach Interrupt werden die Ports zurückgesetzt



DanielV.
22.09.2007, 12:28
Hallo Zusammen,

ich habe ein Problem mit meinem AVR. Und zwar möchte ich mit den Externen Interrupts arbeiten. Innerhalb der Interrupt Routine verändere ich den Port C DOch nach dem die Interrupt Routine abgeschlossen ist wird der Port wieder zurückgesetzt.

NAchfolgen mein Programm:



#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>

volatile int temp;
uint8_t temp1;

ISR(INT0_vect) // Routine für die Behandlung des Interrupts für Bahnn 1
{
PORTC = 0x01;
}

int main (void) {

DDRC = 0xff; // Port C als Output
PORTC = 0x00;
DDRD = 0x00; // Port D als Input
MCUCR |= (1<<ISC01)|(1<<ISC11);
GIMSK |=(1<<INT0)|(1<<INT1);


sei();

while(1)
{
temp1++;
}
return 0; // (6)
}


Vielen Dank für eure Hilfe

Hubert.G
22.09.2007, 12:45
Bist du sicher das kein Reset ausgelöst wird

linux_80
22.09.2007, 12:53
Hallo,

auf jeden Fall wird auch der INT1 aktiviert, und wenn da ein IRQ auftritt, geht's ab in den Reset !
Lass' bei GIMSK (bzw. GICR) das INT 1 weg, dann sollte es laufen.

DanielV.
22.09.2007, 13:49
Danke für die Tips doch leider hat mich das nicht weitergebracht. Ich habe im eigentlichen Programm auch etwas für den Fall hinterlegt, wenn der INT1 aktiv wird. Wollte aber erstmal das grudsätzlich die Funktion da ist. Hat denn noch einer eine Idee?

Gock
22.09.2007, 16:52
Kann es sein, dass Dein INT1 Pin floated also in der Luft hängt?
Oder ihn irgendetwas anderes auslöst?
Du solltest unbedingt auch die INT1 ISR einbinden, auch wenn die nichts macht, sonst verabschiedet sich bei unbeabsichtigter Auslösung Dein µC ins Nirvana
Gruß

izaseba
22.09.2007, 17:18
:-s

Ich frage mich mal, welche Programmversion nun aktuell ist,
diese hier oder diese hier (http://www.mikrocontroller.net/topic/79139#new) :-k

Gock
22.09.2007, 19:20
Na wenn sich so viele Leute um Hilfe bemühen, dann muss es doch was werden...