Gast
#4154511
Hallo, bei der Vergewaltigung der Arduino IDE durch Umgehung der "Nutzfunktionen" bin ich derzeit an einer Interruptgeschichte über den INT0 dran. Leider weiss ich nicht ganz genau wann welches Bit gesetzt wird. Int Ereignis -> INTF0 ISR Routine -> CLI -> INTF0 = 0? Habe erstmal diese Makros definiert: #define INT0_DISABLE GIMSK &= ~_BV(INT0) #define INT0_ENABLE GIMSK |= _BV(INT0) #define INT0_CLEAR_PENDING GIFR |= _BV(INTF0) Wann genau wird das INTF0 gelöscht durch die Hardware? Beim Eintritt in die Routine oder beim Raustritt? Ich brauche das nämlich damit mir keine Pending Ints direkt nach der ISR wieder reinhauen, wenn SEI die Global Ints wieder zulässt. Ne blöde Frage: Wie kann man bei einem Level Interrupt verhindern, dass der ständig aufgerufen wird, wenn der Puls etwas länger ist als die Reaktionszeit der CPU? Wenn der ADXL345 Sensor nämlich seinen FIFO Overflow INT Pin auf HIGH lässt während meine CPU im Tiefschlaf schläft, dann kommt sie nie wieder da raus, wenn ich RISING einstelle. Idle Mode wäre eine Läsung aber mehr Strom eben. Gruss, Christian