Temporizadores y contadores del ATMega328: preescalador, modos CTC y registros clave

ElectrónicaActualizado el 4,5 KB

Resumen

El documento explica el uso y la configuración de los temporizadores/contadores del ATMega328, con ejemplos del Temporizador 1 y del Temporizador/Contador 0. Describe el funcionamiento del preescalador, el comparador de salida, los modos Normal y CTC, y la lista de registros clave para configurar el temporizador.

Puntos clave

  • El ATMega328 tiene 3 temporizadores/contadores; el TC0 es de 8 bits y se usa para conteo, comparación y PWM.
  • Con un reloj de 16 MHz y un preescalador de 1024, el temporizador cuenta a 15625 Hz (un período de 64 µs).
  • El comparador de 8 bits compara TCNT0 con OCR0A y OCR0B; una coincidencia activa el indicador OCF0A u OCF0B.
  • En modo Normal el contador cuenta de forma ascendente y se reinicia desde 0x00 al desbordarse.
  • En modo CTC, OCR0A define el valor superior y el contador se borra al coincidir con él.
  • Los registros clave son TCCR0A, TCCR0B, TIMSK0, TCNT0, OCR0A, OCR0B y TIFR0.

Ponte a prueba

Uso y Configuración de Temporizadores/Contadores

  • Es fundamental definir el modo de operación del temporizador, la fuente del reloj, el preescalador, las interrupciones y la generación de formas de onda.
  • Agregue el código necesario para la rutina de servicio de interrupción en su programa.
  • Aunque se utiliza el Temporizador 1 (16 bits) como ejemplo, el procedimiento es el mismo para otros temporizadores.
  • Solo se presentarán los registros relacionados con la funcionalidad básica del temporizador.

Funcionamiento del Preescalador en Temporizadores

  • El reloj de Arduino es de 16 MHz, lo que equivale a un período de 62.5 ns.
  • Un recuento completo (65535 ciclos) tomará 65535 * 62.5 ns = 4.0959375 ms.
  • El valor de preescalador más grande es 1024, lo que permite al temporizador contar a 16 MHz / 1024 = 15625 Hz, o un período de 64 µs.
  • Con este preescalador, un recuento completo tomará 4.19424 segundos.
  • Para contar hasta 1 segundo, el contador debe alcanzar 1 s / 64 µs = 15625.

Introducción a los Temporizadores/Contadores del ATMega328

El temporizador es un periférico muy común que se encuentra en los microcontroladores.

  • El ATMega328 tiene 3 temporizadores/contadores.
  • El Temporizador/Contador 0 (TC0) es un módulo de 8 bits de uso general que se utiliza típicamente para: conteo, comparación y PWM.
  • El TC0 se puede sincronizar internamente, a través del preescalador o mediante una fuente de reloj externa en el pin T0 (registro TCCR0B).
  • El comparador de 8 bits compara continuamente TCNT0 con los registros de comparación de salida (OCR0A y OCR0B).
    • Siempre que TCNT0 sea igual a OCR0A u OCR0B, el comparador señala una coincidencia.
    • Una coincidencia establecerá el indicador de comparación de salida (OCF0A u OCF0B) en el siguiente ciclo de reloj del temporizador.
    • Si la interrupción correspondiente está habilitada, el indicador de comparación de salida genera una interrupción de comparación de salida.

Modos de Operación del Temporizador/Contador

Modo Normal

La dirección de conteo siempre es ascendente y no se realiza la eliminación del contador.

  • El contador simplemente se desborda cuando excede su valor máximo de 8 bits y luego se reinicia desde 0x00.
  • El indicador de desbordamiento del temporizador/contador (TOV1) se establecerá en el mismo ciclo de reloj en el que TCNT se convierte en cero.
  • Se puede escribir un nuevo valor de contador en cualquier momento.
  • La unidad de comparación de salida se puede usar para generar interrupciones en un momento dado.

Modo CTC (Clear Timer on Compare Match)

  • El registro OCR0A define el valor superior para el contador.
  • El contador se borra a CERO cuando el valor de TCNT coincide con OCR0A.
  • Se puede generar una interrupción cada vez que el valor del contador alcanza el valor de OCR0A, configurando el indicador OCF0A.
  • Para generar una salida de forma de onda en modo CTC, la salida OC0A se puede configurar para alternar su nivel lógico en cada coincidencia de comparación, escribiendo el Registro de Control del Temporizador/Contador A en el modo de alternancia.

Otros Modos

  • Fast PWM
  • Phase Correct PWM

Lista de Registros Clave del Temporizador/Contador

  • TC0 Control Register A (TCCR0A): configura el modo de operación para los canales A y B.
  • TC0 Control Register B (TCCR0B): opciones de configuración adicionales.
    • Selección de reloj (Clock select).
  • TC0 Interrupt Mask Register (Registro de Máscara de Interrupción del TC0).
  • TC0 Counter Value Register (TCNT0) (Registro de Valor del Contador del TC0).
  • TC0 Output Compare Register A (OCR0A) (Registro de Comparación de Salida A del TC0).
  • TC0 Output Compare Register B (OCR0B) (Registro de Comparación de Salida B del TC0).
  • TC0 Interrupt Flag Register (TIFR0) (Registro de Banderas de Interrupción del TC0).

Descargar

PDF Word HTML

Preguntas frecuentes

¿Cuántos temporizadores/contadores tiene el ATMega328?

El ATMega328 tiene 3 temporizadores/contadores. El Temporizador/Contador 0 es un módulo de 8 bits de uso general.

¿Qué ocurre cuando TCNT0 coincide con OCR0A?

El comparador señala una coincidencia y establece el indicador OCF0A en el siguiente ciclo de reloj del temporizador. Si la interrupción está habilitada, se genera una interrupción de comparación de salida.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Cuál es el período de cada cuenta con un preescalador de 1024 y un reloj de 16 MHz?
2. ¿Qué registro define el valor superior del contador en modo CTC?
3. ¿Cuántos bits tiene el Temporizador/Contador 0 del ATMega328?
4. ¿Cuántos ciclos de reloj cuenta el temporizador de 16 bits hasta un recuento completo?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.