Bist du sicher das kein Reset ausgelöst wird
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:
Vielen Dank für eure HilfeCode:#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) }
Bist du sicher das kein Reset ausgelöst wird
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.
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?
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ß
Ich frage mich mal, welche Programmversion nun aktuell ist,
diese hier oder diese hier
Linus TorvaldSoftware is like s e x: its better when its free.
Na wenn sich so viele Leute um Hilfe bemühen, dann muss es doch was werden...
Lesezeichen