Implementación y Control de Interrupciones en Microcontroladores AVR: SREG y EEPROM
Enviado por Programa Chuletas y clasificado en Electricidad y Electrónica
Escrito el en
español con un tamaño de 5,09 KB
Registro de Estado (SREG: 0x3F)
El Registro de Estado (SREG) contiene información sobre el resultado de la mayoría de las instrucciones aritméticas y lógicas. También incluye el Habilitador Global de Interrupciones (I).
Definición de Bits del SREG
- I: Habilitador Global de Interrupciones
- Si este bit está a 1 lógico, las interrupciones están habilitadas globalmente.
- T: Bit de Almacenamiento Temporal
- Usado para respaldo de un bit, se utiliza con la instrucción BLD (Carga) y BST (Almacenamiento).
- H: Bandera de Medio Acarreo (Half Carry)
- Indica el acarreo de los 4 bits inferiores.
- S: Bit de Signo
- Mantiene el resultado de una operación XOR entre las banderas N y V.
- V: Bandera de Desbordamiento (Overflow)
- Se activa en operaciones de complemento a dos.
- N: Bandera de Negativo
- Indica que el resultado de la operación es negativo.
- Z: Bandera de Cero
- Indica que el resultado de la operación es cero.
- C: Bandera de Acarreo (Carry)
- Indica el acarreo o préstamo de la operación.
Bits del Registro de Control de EEPROM
Estos bits controlan las operaciones de lectura y escritura en la memoria EEPROM del microcontrolador.
Configuración de Control de EEPROM
- EERIE: EEPROM Ready Interrupt Enable
- Al estar en alto (1), habilita la interrupción por EEPROM. La EEPROM genera una interrupción cuando el bit EEPE es limpiado, indicando que la escritura ha finalizado.
- EEMPE: EEPROM Master Write Enable
- Determina si la activación de EEPE producirá una escritura en la EEPROM. Al ponerse en alto, se dispone de 4 ciclos de reloj para iniciar la escritura con EEPE; de lo contrario, se limpiará automáticamente por hardware.
- EEPE: EEPROM Write Enable
- Debe ponerse a 1 lógico para dar inicio a un ciclo de escritura. Se limpia automáticamente por hardware al finalizar la escritura. Un programa de usuario puede monitorear este bit o, si EERIE está habilitado, se producirá una interrupción.
- EERE: EEPROM Read Enable
- Debe ponerse a 1 lógico para iniciar un ciclo de lectura. Se limpia automáticamente por hardware. El dato leído está disponible de manera inmediata. No es posible realizar una lectura si hay una operación de escritura en curso.
Sistema de Interrupciones
Una interrupción es la ocurrencia de una condición o evento generado por un recurso del MCU que ocasiona la suspensión temporal del programa principal. Este evento es atendido por una Rutina de Servicio a la Interrupción (ISR) o un manejador de interrupción.
Manejo de la ISR y el Vector de Interrupciones
La rutina de atención para una interrupción debe colocarse en una dirección preestablecida por hardware, formando parte del Vector de Interrupciones. Al concluir la ISR, la CPU reanuda la ejecución del programa principal. El uso eficiente de interrupciones permite la ilusión de realizar múltiples tareas de forma simultánea.
Fuentes de Interrupción en los AVRs
El número real de interrupciones disponibles depende del dispositivo específico (por ejemplo, el ATMega328 cuenta con 25 fuentes de interrupción, además del Reset).
- Interrupciones externas, generadas ante cambios en las terminales.
- Interrupciones por los temporizadores (por comparación, captura o desbordamiento).
- Al completar una transferencia serial (puerto SPI).
- Ocasionadas por el puerto serie (USART), por transmisión, recepción o buffer vacío.
- Por el convertidor analógico digital (ADC).
- Al finalizar una escritura en EEPROM.
- Por el comparador analógico.
- Por la interfaz serial a dos hilos (TWI).
- Al escribir en memoria de programa.
Activación y Secuencia de Interrupción
Las interrupciones no están activadas después de un reinicio (reset). Su activación requiere:
- Poner a 1 lógico el bit I en el Registro de Estado (SREG).
- Habilitar individualmente las fuentes de interrupción específicas en sus respectivos registros de control.
Cuando se genera una interrupción, ocurre la siguiente secuencia:
- El Contador de Programa (PC) se almacena en la pila.
- La CPU salta a la dirección correspondiente en el vector de interrupciones.
- El bit I se desactiva automáticamente para evitar la aceptación de interrupciones anidadas.
La ISR debe finalizar con la instrucción RETI (Return from Interrupt), la cual recupera el valor del PC de la pila y reactiva automáticamente el bit I, permitiendo que el sistema acepte nuevas interrupciones.