Hallo Leute, mein Beitrag hier ist wohl während dem Umbau der Site ins Nirvana verloren gegangen...
Hier nochmal:
Ich will einen möglichst einfachen (und daher leicht zu verstehenden) Interrupt programmieren können.
Mein Ansatz war der:
Code:
ISR (INT0_vect)
{
i++;
}
main ()
{
int i=0; // Zählervariable
sei(); // Interrupts global einschalten
GIMSK=(1<<6) // bzw. (1<<INT0) ?? Enable INT0
MCUCR=MCUCR|(1<<ISC01)|(1<<ISC001) // rising edge -> wenn
//PORTBx 5v wird
while(true)
{
if (i==100)
{
LED EIN, WARTREN UND LED AUS
i=0;
}
}
}
Dann kam die Antwort
Du kannst im Interrupt nicht die lokale Variable einer Funktion verändern. i muss global sein (und das "volatile" nicht vergessen).
Worauf meine Vermutung war, dass ich also unter # define F_CPU und #include<...>
noch int voltaile i=0 hinzufügen muss. Soweit korrekt??
Mfg
Lesezeichen