1. Interrupciones En Los Microcontroladores

1. INTERRUPCIONES EN LOS MICROCONTROLADORES Las interrupciones son recursos o mecanismos del microcontrolador para respo

Views 898 Downloads 7 File size 246KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

1. INTERRUPCIONES EN LOS MICROCONTROLADORES Las interrupciones son recursos o mecanismos del microcontrolador para responder a eventos, permitiendo suspender temporalmente el programa principal, para ejecutar una subrutina de servicio de interrupción (ISR por sus siglas en inglés Interrupt Service Routines); una vez terminada dicha subrutina, se reanuda la ejecución del programa principal [1]. Las interrupciones se generan cuando dispositivos periféricos conectados a la tarjeta electrónica solicitan enviar información al microcontrolador, esto puede ser de manera asíncrona. También el proceso de interrupción se puede generar de una manera periódica, es decir por medio de una señal digital conectada a un pin específico del microcontrolador (INT0 o INT1) se puede atender tareas determinadas como adquisición de datos, monitoreo de sensores, cálculos numéricos, envío de comandos robot, etc [1]. En los microcontroladores Atmega hay dos tipos de interrupciones, el primer tipo corresponde a eventos externos que generan un estado lógico y el segundo corresponde a interrupciones que pueden ser cambiadas o reasignadas por Software en los pins del microcontrolador [1].

1.1.

Interrupciones Externas

Las interrupciones externas sirven para detectar un estado lógico o un cambio de estado en alguna de las terminales de entrada de un microcontrolador, con su uso se evita un sondeo continuo en la terminal de interés. Son útiles para monitorear interruptores, botones o sensores con salida a relevador [2]. Las transiciones en INT0/INT1 requieren de la señal de reloj destinada a los módulos de los recursos (clkI/O, sección 2.8) para producir una interrupción, esta señal de reloj es anulada en la mayoría de los modos de bajo consumo. Por el contrario, un nivel bajo en INT0/INT1 y las transiciones en INT2 no requieren de una señal de reloj para producir una interrupción, puede decirse que son eventos asíncronos, por lo que éstos son adecuados para despertar al microcontrolador, sin importar el modo de reposo [2]. Las interrupciones externas pueden ser disparadas por flanco de subida, o flanco de bajada o nivel bajo. Esta configuración se puede hacer en el registro de control de

interrupciones externas ( EICRA ). Más adelante se muestra la tabla de vectores de interrupción que el microcontrolador puede atender. Normalmente, es necesario habilitar la interrupción con algún bit, en algún registro de control. Para notificar que se ha producido un evento de interrupción, un bit (flag) se pone a '1'. Cuando la interrupción es atendida, este bit automáticamente es limpiado ( clear ) por hardware [1].

Ilustración 1: Tabla de Vectores de Interrupción de Atmega 328P.

1.2.

Rutinas de servicio de interrupción

Las rutinas de servicio de interrupción ISR son funciones que realizan actividades de adquisición de datos, por ejemplo: lectura de señales analógicas por medio de

convertidores analógico digital, sensores digitales (encoders); también lleva a cabo manipulación y procesamiento de datos, cálculo numérico, envío de información digital o comandos a través de puertos y convertidores digital analógico. Generalmente este tipo de funciones o subrutinas no tienen parámetros o argumentos de entrada y tampoco retornan datos (salvo casos excepcionales) [1]. 1.3.

Manejo de Interrupciones

Para manejar una interrupción hay que seguir una serie de pasos para habilitarla, dependiendo de cuál sea, se programan los registros asociados a la fuente de interrupción: -

Habilitar la interrupción deseada en el registro correspondiente [3]. Agregar la función que contenga el código de interrupción [3]. Habilitar las interrupciones globales [3].

Bibliografía [1 A. Pérez, «NCB,» [En línea]. Available: ] http://www.incb.com.mx/index.php/articulos/78-microcontroladores-y-dsps/2546conociendo-el-microcontrolador-nucleo-core-atmega328p-de-arduino-uno-mic019s. [Último acceso: 27 Julio 2019]. [2 [En línea]. Available: ] http://www3.fi.mdp.edu.ar/electrica/opt_archivos/arduino/Manejo_de_Interrupcione s.pdf. [Último acceso: 27 Julio 2019].