Re: Interrupt wird wiederholt ausgelöst Kategorie: Programmierung C (von PeterS - 15.05.2006 12:40) | ||
Als Antwort auf Interrupt wird wiederholt ausgelöst von Markus - 13.05.2006 19:43 | ||
| ||
Hallo Markus, ich hasse es zu sagen, aber wir haben einen Bug in der ExtIntEnable Routine beim Mega128. Allerdings funktioniert die Routine für Interrupt 0 und 4. Die mode Werte sind: 0: a low level triggers the interrupt 1: every changing edge triggers the interrupt 2: a falling edge triggers the interrupt 3: a rising edge triggers the interrupt Beispielproghramm das mit SW1 (IRQ 4) läuft: void Ext_ISR(void) { Port_WriteBit(PORT_LED1,0); AbsDelay(500); Port_WriteBit(PORT_LED1,1); Irq_GetCount(INT_4); } void main(void) { Port_DataDirBit(PORT_LED1, 1); Port_DataDirBit(PORT_SW1, 0); Port_WriteBit(PORT_SW1, 1); Irq_SetVect(INT_4, Ext_ISR); Ext_IntEnable(4, 3); while(1); } Gruss Peter > Hallo, > > Ein kurzes Minimalbeispiel (ähnlich EXT_INT1.cc aus dem Beispielcode): > ---- > void Ext_ISR(void) > { > int i; > Ext_IntDisable(INT_6); > Port_WriteBit(LED2,0); > for (i=0; i<5000; i++); > Port_WriteBit(LED2,1); > Ext_IntEnable(6, 4); > Irq_GetCount(SW_INT); > } > > void main(void) { > [...] > Port_DataDirBit(38, 0); > Port_WriteBit(38, 1); > Irq_SetVect(INT_6, Ext_ISR); > Ext_IntEnable(6, 4); > while(1); > } > ---- > > Ein Druck auf den Taster SW2 soll LED2 kurz leuchten lassen. Unerwarteterweise leuchtet die LED aber > dauerhaft, wenn man den Taster gedrückt lässt, obwohl der Interrupt flankengesteuert ausgelöst wird. > Woran kann das liegen? > > Gru�, > Markus | ||
Antwort schreiben Antworten: Re: Interrupt wird wiederholt ausgelöst (von Markus - 15.05.2006 22:05) Re: Interrupt wird wiederholt ausgelöst (von Markus - 15.05.2006 22:15) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum