Externe AVR-Interrupt-Auslösung durch die fallende Flanke: Wie lange sollte ich das Signal niedrig halten, um eine Auslösung zu gewährleisten?

Der Fragenkopf schien zu lang zu sein. Das tut mir leid.

Ich habe also einen Schaltplan, der ein kurzes LOW am INT0-Pin von ATmega48PA erzeugt. Aus der Simulation habe ich herausgefunden, dass der LOW-Pegel für etwa 800 ns da sein wird. Ich plane, den AVR vom internen RC mit 1:8-Teiler zu takten, was 1 MHz Fosc bedeutet.

Wie stelle ich sicher, dass der Interrupt ausgelöst wird?

Ich habe das Datenblatt gelesen, aber ich habe in den falschen Kapiteln gesucht oder es gibt keine solchen Informationen.

Könnten Sie mich bitte in die richtige Richtung weisen, um die benötigten Informationen zu finden?

Danke schön!

Antworten (1)

Aus dem Datenblatt zur Beschreibung von ISC11, ISC10:

Wenn Flanken- oder Toggle-Interrupt ausgewählt ist, erzeugen Impulse, die länger als eine Taktperiode dauern, einen Interrupt. Kürzere Impulse erzeugen nicht garantiert einen Interrupt. Wenn eine Unterbrechung mit niedrigem Pegel ausgewählt wird, muss der niedrige Pegel bis zum Abschluss des aktuell ausgeführten Befehls gehalten werden, um eine Unterbrechung zu erzeugen.

Da ein 1-MHz-Takt bedeutet, dass der 800-ns-Interrupt-Impuls weniger als 1 Zyklus dauert, wird der Interrupt nicht zuverlässig generiert. Der längste AVR-Befehl erfordert 4 Zyklen, sodass die Verwendung eines Mindesttakts von 6 MHz sicherstellt, dass Sie alle Interrupts abfangen, während der Chip aktiv ist.

Wie ich aus der Zitatkante verstehe, die den Interrupt auslöst, muss keine Anweisung ausgeführt werden. Ich würde also sagen, dass ich in meinem speziellen Fall den niedrigen Pegel für 1000 ns erhöhen muss, um den Interrupt zu garantieren. Rechts?
Wenn Sie auf Triggerung mit fallender Flanke umschalten, ja.