Gast
#403529
Habe folgendes Problem:
Ich benutze einen ATmega128 und die exteren Interrupts
(INT4,INT5,INT6)
so wenn ich nacheinander die geforderten Flanken an
INT4--> INT5--> INT6--> bekomme..... ist alles OK!
Aber wenn ich zuerste an INT6 eine Flanke bekommen, owohl ich auf INT 4
warte löst der INT6 aus. WARUM ??? der ist doch deaktiviert.
mache ich irgendein fehler?
PROGRAMMAUSCHNITT-->
SIGNAL (SIG_INTERRUPT4)
{LS_1=0xff;}
SIGNAL (SIG_INTERRUPT5)
{LS_2=0xff;}
SIGNAL (SIG_INTERRUPT6)
{LS_3=0xff;}
int main(void)
{.....
EICRB|= (1<<ISC41)|(0<<ISC40); //INT4 löst bei einer negativer Flanke
aus
EICRB|= (1<<ISC51)|(0<<ISC50); //INT5 löst bei einer negativer Flanke
aus
EICRB|= (1<<ISC61)|(1<<ISC60); //INT6 löst bei einer positiven Flanke
aus
....
EIMSK|=(1<<INT4)|(0<<INT5)|(0<<INT6); //INT4 aktivieren
while(LS_1==0xFF)
{asm volatile "NOP");}
EIMSK|=(0<<INT4)|(0<<INT5)|(0<<INT6); //INT4 deaktivieren
...........
EIMSK|=(0<<INT4)|(1<<INT5)|(0<<INT6); //INT5 aktivieren
while(LS_2==0xFF)
{asm volatile "NOP");}
EIMSK|=(0<<INT4)|(0<<INT5)|(0<<INT6); //INT5 deaktivieren
...........
EIMSK|=(<<INT4)|(0<<INT5)|(1<<INT6); //INT6 aktivieren
while(LS_3==0xFF)
{asm volatile "NOP");}
EIMSK|=(0<<INT4)|(0<<INT5)|(0<<INT6); //INT5 deaktivieren