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!
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.
Roman Matwejew
Ignacio Vazquez-Abrams