Variable nach Interrupt zurückgesetzt

OP #4063400
Lesenswert?
• ▲
▼
Hallo!
Ich bin auf einem atmega32u4. Ich möchte die Variable, ich nenne sie 
auch REGISTER "spi_shift_data" im externen Interrupt INT1 das 0. Bit 
(X_EN) setzten. Das klappt auch soweit, aber wenn ich den ISR wieder 
verlasse, wir das 0. Bit wieder gelöscht. Wieso?
Angehängte Dateien:
#4063453
Lesenswert?
• ▲
▼
Gnaz einfach. Du hast keinen INT2 und INT3 Vektor definiert. 
Wahrscheinlich hängen deine IOs in der Luft und lösen damit zufällig 
einen INT2 oder INT3 aus. Da der aber nicht existiert, macht die CPU 
einen Reset (das regelt der avr gcc so).

Probier es mal so. Man darf IMMER nur die Interrupts freigeben, für die 
auch eine ISR definiert wurde!

EIMSK = _BV(INT1);
#4063495
Lesenswert?
• ▲
▼
Das ist dein ganzes Programm?

Wo ist dann die ISR, die zu
1
    TIMSK0 = _BV(OCIE0A);
gehört?

Du nimmst das nicht ernst!
WEnn du einen Interrupt freigibst, für den es keine ISR gibt, dann führt 
das zu einem Prozessorreset. Und es spielt dabei keine Rolle, welchen 
Interrupt du freigibst.
----> man gibt keine Interrupts frei, für die man keine ISR hat.

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