Gast
#1929782
Hallo, habe einen Leistungsmess IC von Analog Devices (ADE7753) und wollte jetzt die von dem IC "produzierten" Interrupts auswerten. Dazu habe ich den INT0 auf der fallenden Flanke initialisiert. Das ganze funktioniert auch, aber meistens nur 1 oder 2 mal. dannach kommt nie mehr ein interrupt. Der pegel am irq pin liegt dann bei ca 1,4V (pull ups aktiviert) Ich habe eine Vermutung warum, das so ist: Der IRQ Pin bleibt so lange low, bis das passende Interruptstatus Register ausgelesen wurde. Tritt also ein Interrupt auf, während ich in der Interruptroutine bin, bekomme ich das nicht mit und lese daher auch nicht das Interruptstatusregister. Der PIN bleibt dann für immer LOW... Jetzt zu meiner Frage: War immer der Meinung, dass nach dem verlassen der IRQ Routine alle aufgetretenen Interrupts "nachgeholt" werden. Im Gcc-Artikel dieser Seite habe ich aber folgendes gelesen: Dieses Bit wird gesetzt, wenn am INT0-Pin eine Interrupt-Kondition, entsprechend der Konfiguration, erkannt wird. Wenn das Global Enable Interrupt Flag gesetzt ist, wird die Interruptroutine angesprungen. Das Flag wird automatisch gelöscht, wenn die Interruptroutine beendet ist. Alternativ kann das Flag gelöscht werden, indem der Wert 1(!) eingeschrieben wird.A Flag wird also gelöscht!?! Wird der INT0 dann nach verlassen der ISR und dem automatischen reaktivieren der globalen Interrupts gleich wieder aufgerufen oder nicht???? Hat sonst wer Erfahrunge mit dem ADE? Evt. Beispielprogramm wie man mit dem IRQ arbeitet? Ansonsten funktioniert der IC einwandfrei... Für jede Hilfe bin ich sehr dankbar... mfg Dominik