El encabezado de la pregunta parecía demasiado largo. Lo siento por eso.
Así que tengo un esquema que genera un BAJO corto en el pin INT0 de ATmega48PA. A partir de la simulación, descubrí que el nivel BAJO estará allí durante unos 800 ns. Planeo cronometrar el AVR desde el RC interno con un divisor de 1:8, lo que significa 1 MHz Fosc.
¿Cómo me aseguro de que se activará la interrupción?
Leí un poco la hoja de datos pero estaba buscando en los capítulos equivocados o no hay tal información.
¿Podría indicarme la dirección correcta para encontrar la información necesaria?
¡Gracias!
De la hoja de datos, para la descripción de ISC11
, ISC10
:
Si se selecciona la interrupción de borde o alterna, los pulsos que duran más de un período de reloj generarán una interrupción. No se garantiza que los pulsos más cortos generen una interrupción. Si se selecciona la interrupción de bajo nivel, el nivel bajo debe mantenerse hasta que se complete la instrucción que se está ejecutando actualmente para generar una interrupción.
Dado que un reloj de 1 MHz significa que el pulso de interrupción de 800 ns durará menos de 1 ciclo, la interrupción no se generará de manera confiable. La instrucción AVR más larga requiere 4 ciclos, por lo que usar un reloj mínimo de 6 MHz garantizará que atrape todas las interrupciones mientras el chip está activo.
romano matveev
Ignacio Vázquez-Abrams