Microprocesadores: Funcionamiento del CCR, Reset, Interrupciones y Periféricos Clave HC908

Enviado por Programa Chuletas y clasificado en Electricidad y Electrónica

Escrito el en español con un tamaño de 12,46 KB

¿Qué indican los bits del CCR en un microprocesador?

Los bits o flags del CCR (Condition Code Register o Registro de Códigos de Condición) reflejan el resultado de la última operación aritmética o lógica ejecutada por la ALU (Unidad Aritmético-Lógica) del microprocesador. Estos son fundamentales para la toma de decisiones en el flujo del programa (saltos condicionales). Los bits más comunes son:

  • V (Overflow / Desbordamiento): Se activa (pone en 1) cuando el resultado de una operación aritmética con signo (utilizando complemento a 2) excede la capacidad de representación del registro destino, es decir, ocurre un desbordamiento (overflow).
  • H (Half-carry / Semi-acarreo): Se activa si ocurre un acarreo (carry) desde el bit 3 hacia el bit 4 del acumulador durante una operación. Este bit es especialmente útil para operaciones aritméticas en formato BCD (Decimal Codificado en Binario).
  • I (Interrupt Mask / Máscara de Interrupción): Cuando este bit está activado (en 1), las interrupciones enmascarables del CPU son deshabilitadas. Si está en 0, se permiten dichas interrupciones.
  • N (Negative / Negativo): Se activa si el bit más significativo (MSB) del resultado de una operación es 1. En la representación de números con signo en complemento a 2, esto indica que el resultado es negativo.
  • Z (Zero / Cero): Se activa si todos los bits del resultado de una operación son cero, indicando que el resultado es igual a cero.
  • C (Carry/Borrow / Acarreo/Préstamo): Se activa si se produce un acarreo (carry) al sumar dos números y el resultado excede la capacidad del registro, o si se necesita un préstamo (borrow) durante una operación de resta.

¿Qué ocurre en un microprocesador cuando se acciona el reset?

Cuando se acciona la señal de reset en un microprocesador, se inicia una secuencia que lleva al sistema a un estado inicial conocido y predeterminado. Las acciones típicas incluyen:

  • Inicialización del Contador de Programa (PC): El PC se carga con una dirección fija, conocida como vector de reset. Esta dirección apunta a la primera instrucción que el microprocesador ejecutará después del reinicio.
  • Inicialización de Registros Internos: Muchos registros internos, incluyendo el Puntero de Pila (SP), se inicializan a valores predefinidos. Por ejemplo, en algunos microcontroladores como los de la familia HC08, el SP puede ser forzado a una dirección como $00FF.
  • Configuración de Bits de Estado: Ciertos bits en registros de estado, como el bit I (Máscara de Interrupción) en el CCR, se configuran a un estado específico. Comúnmente, el bit I se pone en 1 para inhibir inicialmente las interrupciones enmascarables.
  • Reinicio de Periféricos: Los módulos periféricos integrados en el microprocesador suelen ser reiniciados a sus estados por defecto.
  • Cancelación de Modos de Bajo Consumo: Si el microprocesador se encontraba en un modo de bajo consumo (como STOP o WAIT), estos modos son cancelados, y los latches correspondientes son borrados.
  • Establecimiento de un Punto de Partida: Aunque no siempre se borran "todos" los datos de "todos" los registros (algunos pueden retener información o tener valores de reset específicos), la intención es establecer un punto de partida limpio para la operación del software.

¿Qué es un vector de interrupciones? ¿Por qué la prioridad de interrupción de un periférico es menor o mayor que otra? Proporcione un ejemplo.

Vector de Interrupciones

Un vector de interrupciones es una ubicación de memoria específica que almacena la dirección de inicio de la rutina de servicio de interrupción (ISR o Interrupt Service Routine) asociada a una fuente de interrupción particular. Cuando se produce una interrupción, el microprocesador consulta la tabla de vectores de interrupción para encontrar la dirección de la ISR que debe ejecutar para atender dicha interrupción.

Prioridad de Interrupción

La prioridad de interrupción establece el orden en que el microprocesador atiende múltiples solicitudes de interrupción que pueden ocurrir simultáneamente. Un periférico o evento tiene una prioridad mayor o menor basada en:

  • Diseño del hardware: Algunos sistemas tienen niveles de prioridad fijos asignados a diferentes fuentes de interrupción.
  • Criticidad del evento: Eventos más críticos para el funcionamiento del sistema suelen tener mayor prioridad.
  • Configuración por software: En algunos microprocesadores, las prioridades pueden ser programables.

Una interrupción de mayor prioridad puede, en algunos sistemas, interrumpir la ejecución de una ISR de menor prioridad (esto se conoce como anidamiento de interrupciones).

Ejemplo: En un sistema embebido, una interrupción generada por un temporizador que controla una tarea crítica en tiempo real (ej. control de un motor) podría tener mayor prioridad que una interrupción generada por la recepción de un carácter a través de un puerto serie (UART), que es menos sensible al tiempo. Si ambas interrupciones ocurren al mismo tiempo, el microprocesador atenderá primero la del temporizador.

Tipos de Interrupciones

Generalmente, se distinguen los siguientes tipos de interrupciones:

  • Interrupciones Enmascarables: Son aquellas que pueden ser habilitadas o deshabilitadas por software, típicamente mediante un bit global de habilitación de interrupciones (como el bit I en el CCR) y/o bits individuales para cada fuente de interrupción.
  • Interrupciones No Enmascarables (NMI): Estas interrupciones no pueden ser deshabilitadas por software y se reservan para eventos de alta criticidad que requieren atención inmediata, como un fallo de alimentación, errores de paridad en la memoria, o una señal de watchdog.
  • Interrupciones por Software (SWI o Trap): Son generadas intencionadamente por la ejecución de una instrucción específica en el programa. Se utilizan comúnmente para solicitar servicios del sistema operativo o para invocar rutinas de depuración.

Describa las características y funciones principales del conversor Analógico-Digital (A/D) de los dispositivos de la serie HC908

Los conversores Analógico-Digitales (A/D) en los microcontroladores de la serie HC908 (y similares) son periféricos clave para interactuar con el mundo real, convirtiendo señales analógicas (como voltajes de sensores) en valores digitales que el microprocesador puede procesar. Sus características y funciones principales incluyen:

  • Resolución: Es el número de bits (n) que el conversor utiliza para representar la señal analógica. Una resolución común es de 8, 10 o 12 bits. Cuanto mayor sea la resolución, más pequeños serán los "escalones" de cuantificación y más fiel será la representación digital. El valor de cada escalón (LSB - Least Significant Bit) se calcula como: Voltaje_de_Referencia_Máximo / 2n.
  • Linealidad: Idealmente, la relación entre la entrada analógica y la salida digital es lineal. Las desviaciones de esta linealidad se especifican como error de linealidad integral (INL) y diferencial (DNL). La mayoría de los ADC en MCUs son de tipo lineal, aunque existen conversores logarítmicos para aplicaciones específicas.
  • Frecuencia de Muestreo: Es la velocidad a la que el conversor puede realizar conversiones. Según el Teorema de Nyquist-Shannon, la frecuencia de muestreo (fs) debe ser al menos el doble de la frecuencia máxima (fmax) presente en la señal de entrada para evitar el solapamiento espectral o aliasing (fs ≥ 2 * fmax).
  • Precisión y Errores: La precisión global del conversor A/D se ve afectada por varios tipos de errores, como:
    • Error de cuantificación: Inherente al proceso de digitalización (típicamente ±0.5 LSB).
    • Error de offset: Una desviación en el valor de salida cuando la entrada es cero.
    • Error de ganancia: Una desviación en la pendiente de la función de transferencia del conversor.
    • Errores de no linealidad (INL y DNL).
    Un valor como "error de precisión = 0.4%" es un dato específico que dependerá del modelo exacto del dispositivo y las condiciones de operación.
  • Circuito de Muestreo y Retención (Sample and Hold - S/H): Dado que la conversión A/D no es instantánea, se requiere un circuito S/H. Este circuito toma una "muestra" del voltaje de entrada analógico en un instante de tiempo y "retiene" ese valor constante mientras el conversor realiza la digitalización. Esto es crucial para señales que varían rápidamente.
  • Canales de Entrada Múltiples: Muchos MCUs ofrecen múltiples canales de entrada analógica, permitiendo que un solo conversor A/D mida señales de varias fuentes mediante un multiplexor interno.
  • Voltajes de Referencia: El conversor utiliza voltajes de referencia (VREF+ y VREF-) para definir el rango de la señal analógica que puede convertir.

Módulos Periféricos Comunes en la Familia HC908

Además del conversor A/D, los microcontroladores de la familia HC908 suelen incluir otros módulos periféricos importantes:

SIM (System Integration Module / Módulo de Integración del Sistema)

El SIM es un componente central en la arquitectura de los HC908, presente en toda la familia, encargado de diversas funciones de gestión y control del sistema:

  • Generación y Distribución de Reloj (Clock): Deriva la señal de reloj principal desde el módulo generador de reloj (oscilador) y la distribuye al CPU (Unidad Central de Procesamiento), memoria y otros periféricos. Controla las velocidades de bus.
  • Control de Reset: Gestiona las diferentes fuentes de reset del sistema (encendido, externo, watchdog, etc.) y la secuencia de reinicio.
  • Control de Interrupciones: Puede estar involucrado en la gestión de las solicitudes de interrupción de los periféricos, incluyendo su priorización y enrutamiento al CPU.
  • Control de Modos de Operación: Administra los modos de bajo consumo del microcontrolador (MCU).

TIM (Timer Interface Module / Módulo de Interfaz de Temporizador)

El TIM es un módulo de temporización flexible y potente, fundamental para una amplia gama de aplicaciones. Sus características típicas son:

  • Canales Múltiples: Usualmente contiene uno o más canales de temporizador independientes (por ejemplo, dos canales), cada uno con su propio contador y registros de control.
  • Referencia de Tiempo: Proporciona una base de tiempo precisa para medir duraciones, generar retardos o crear eventos periódicos.
  • Funcionalidades Principales:
    • Captura de Entrada (Input Capture): Permite medir con precisión la duración de pulsos externos o el tiempo entre eventos, capturando el valor del contador del temporizador cuando ocurre una transición en una patilla de entrada.
    • Comparación de Salida (Output Compare): Genera una acción (como cambiar el estado de una patilla de salida o generar una interrupción) cuando el valor del contador del temporizador coincide con un valor preestablecido en un registro de comparación. Útil para generar formas de onda o eventos temporizados.
    • Modulación por Ancho de Pulso (PWM - Pulse Width Modulation): Permite generar una señal de onda cuadrada cuya relación entre el tiempo en alto y el período total (ciclo de trabajo) puede ser variada programáticamente. Es ampliamente utilizada para controlar la potencia de motores, la intensidad de LEDs, en conversores D/A, etc.

Entradas relacionadas: