0% encontró este documento útil (0 votos)
135 vistas36 páginas

6 - TimerCounter 0 PDF

Este documento describe el Timer/Counter 0 (TC0) de 8 bits en el microcontrolador ATmega328P. TC0 puede usarse para temporización precisa de eventos, generación de frecuencias variables y señales PWM. Posee dos salidas de comparación independientes, varias fuentes de reloj y tres interrupciones. Ofrece modos de operación como normal, CTC, PWM rápido y PWM de fase correcta para diferentes aplicaciones de temporización y generación de formas de onda.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
135 vistas36 páginas

6 - TimerCounter 0 PDF

Este documento describe el Timer/Counter 0 (TC0) de 8 bits en el microcontrolador ATmega328P. TC0 puede usarse para temporización precisa de eventos, generación de frecuencias variables y señales PWM. Posee dos salidas de comparación independientes, varias fuentes de reloj y tres interrupciones. Ofrece modos de operación como normal, CTC, PWM rápido y PWM de fase correcta para diferentes aplicaciones de temporización y generación de formas de onda.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Timer/Counter 0 (8-bits)

INTRODUCCIÓN A LOS TEMPORIZADORES /


CONTADORES DEL ATMEGA328P
Timer/Counter 0 (TC0)

El Timer/Counter0 (TC0) es un módulo temporizador/contador de 8 bits


de uso general, con dos salidas independientes de unidad de
comparación y generador PWM.
Permite el tiempos precisos de ejecución del programa (gestión de
eventos) y generación de ondas.
Timer/Counter 0 (TC0)

Características:
 Dos unidades de comparación de salida independientes.
 Registros de comparación de salida con doble buffer.
 Borrar temporizador en comparación igual (recarga automática).
 Modulador de ancho de pulso correcto de fase y sin fallas (PWM).
 Periodo PWM variable.
 Generador de frecuencia.
 Tres fuentes de interrupción independientes (TOV0, OCF0A y
OCF0B).
Timer/Counter 0 (TC0)

Para el TC0:
n=0
TC0: Definbiciones

 BOTTOM: Señal de que el T/C llegó a 0x00.

 MAX: Señal de que el T/C llegó a 0xFF.

 TOP: Señal de que el T/C alcanzo el valor más alto establecido en la


secuencia de conteo. Puede ser el valor fijo MAX o el valor
almacenado en el registro OCR0A, según el modo de operación
seleccionado.
TC0: Registros

 El registro Timer/Counter 0 (TCNT0) and y los registros de


comparación de salida (OCR0A y OCR0B) son de 8-bits.

 Las señales de interrupción son visibles en el registro de banderas


del TC0 (TIFR0).

 Todas las interrupciones están enmascaradas individualmente con


el registro de mascara de interrupciones del TC0 (TIMSK0).

(TIFR0 and TIMSK0 no se muestran en el diagrama de bloques)


TC0: Registros

 El T/C puede ser dirigido internamente, a través del pre-escalador


(Temporizador), o por una fuente de reloj externa sobre el pin T0
(Contador de eventos).

 El bloque lógico de selección de reloj controla que fuente y flanco


de reloj es utilizado por el TC0. Sin fuente de reloj el TC0 se
desactiva.
TC0: Registros

 Los registros de comparación de salida con doble búfer (OCR0A y


OCR0B) se comparan con el valor del T/C en todo momento.

 El generador de forma de onda puede utilizar el resultado de la


comparación para generar una señal PWM o de frecuencia
variable en los pines de comparación de salida (OC0A y OC0B).

 El evento de comparación igual también establecerá el bandera


de comparación (OCF0A u OCF0B), que puede usarse para
generar una interrupción de comparación de salida.
TC0: Fuentes de reloj

 La fuente de reloj del TC0 se selecciona escribiendo sobre los bits


de selección de reloj (CS0[2:0]) en el registro de control B del TC0
(TCCRB0).

 El TC0 de 8-bits y TC1 de 16-bits comparten el mismo módulo de


preescalador, pero ambos T/C pueden tener diferentes
configuraciones de preescalador.

 El pin de reloj externo T0 se sincroniza con el reloj del sistema para


evitar cuentas falsas.
TC0: El preescalador
TC0: Unidad contadora

Dependiendo del modo de operación utilizado, el contador se borra,


incrementa o disminuye en cada ciclo de reloj (𝑐𝑙𝑘 𝑇0 ).
La secuencia de cuenta está definida por los bits WGM01, WGM00 del
registro TCCR0A y el bit WGM02 del registro TCCR0B, que a su vez definen el
comportamiento de los generadores de onda en las salidas OC0A y OC0B.
La bandera de desbordamiento (TOV0) se setea de acuerdo con el modo
de funcionamiento de los bits WGM0[2:0].
TC0: Unidad de comparación
del salida
TC0: Unidad de salida de
comparación igual
TC0: Modos de operación

El modo de operación estará definido por los bits del generador de


onda (WGM0[2:0]) y del Comparador de Salida (COM0x[1:0]), y los
modos disponibles son:

 Normal: Contador incremental con desbordamiento.


 CTC: Similar al normal pero se manipula la resolución efectiva del
T/C (Frecuencia).
 Fast PWM: Generador de hasta dos señales PWM de alta
frecuencia.
 Phase Correct PWM: Generador de hasta dos señales PWM basado
en doble rampa.
TC0: Modo Normal

 Es el modo mas simple (WGM0[2:0] = 0x0).


 La dirección de conteo siempre es hacia arriba (incrementándose)
y no se realiza el borrado del contador.
 El contador simplemente se desborda cuando pasa su valor
máximo de 8 bits (TOP = 0xFF) y luego reinicia desde abajo (0x00).
 La bandera de desbordamiento del T/C (TOV0) se establecerá en
el mismo ciclo de reloj en el que TCNT0 se convierte en cero.
 Se puede escribir un nuevo valor de contador (TCNT0) en cualquier
momento.
 La unidad de comparación de salida se puede usar para generar
interrupciones en un momento dado.
 No se recomienda usar la comparación de salida para generar
formas de onda en modo Normal, ya que esto ocupará demasiado
tiempo de la CPU.
TC0: Modo Clear Timer on
Compare Match (CTC)

 En el modo Borrar temporizador en comparación igual (WGM0 [2: 0]


= 0x2), el registro OCR0A manipula la resolución del contador.
 El valor del contador (TCNT0) aumenta hasta que se produce una
coincidencia de comparación entre TCNT0 y OCR0A, y luego se
borra el contador (TCNT0).
 Este modo permite controlar la frecuencia de salida de
comparación.
 Simplifica el recuento de eventos externos.
 Puede generar una interrupción cada vez que TCNT0==OCR0A
configurando el indicador OCF0A.
 Si la interrupción está habilitada, la RTI puede usarse para actualizar
el valor de OCR0A.
TC0: Modo Clear Timer on
Compare Match (CTC)

 Es posible usar el Comparador de Salida para generar señales en el


pin OC0A.
 La señal solo se verá en el pin OC0A si dicho pin es configurado
como salida en su DDRX correspondiente.
 La frecuencia de la forma de onda se define mediante la siguiente
ecuación:
𝑓𝑐𝑙𝑘𝐼/𝑂
𝑓𝑂𝐶𝑛𝑥 =
2 ∙ 𝑁 ∙ (1 + 𝑂𝐶𝑅𝑛𝑥)
N representa el factor de preescalador (1, 8, 64, 256 o 1024).

𝑓𝑐𝑙𝑘𝐼/𝑂
 La frecuencia máx. obtenible es 𝑓𝑂𝐶0 = cuando OCR0A=0x00.
2
TC0: Ejemplo modo CTC
TC0: PWM Rápido (Fast PWM)

 El modo Fast PWM (WGM0[2:0]=0x3 o WGM0[2:0]=0x7), se utiliza


principalmente para generar señales PWM de alta frecuencia.
 El TC0 incrementa TCNT0 desde BOTTOM hasta TOP y luego reinicia
desde BOTTOM (Rampa simple).
 TOP es 0xFF cuando WGM0[2:0]=0x3 o es OCR0A cuando
WGM0[2:0]=0x7.
 Este tipo de señales es muy útil para modulación de potencia,
rectificación y operaciones DAC.
 La alta frecuencia permite la utilización de componentes externos
pequeños (Bobinas, capacitores), reduciendo costos.
TC0: PWM Rápido (Fast PWM)

 Los comparadores de salida son los responsables de generar las


formas de onda PWM en los pines OC0x.
 En el modo no-inversor COM0x[1:0]=0x2 se establece el pin OC0x
en BOTTOM y se borra cuando TCNT0=OCR0x.
 En el modo inversor COM0x[1:0]=0x3 se borra el pin OC0x en
BOTTOM y se establece cuando TCNT0=OCR0x.
 La frecuencia de la señal PWM se obtiene mediante la siguiente
ecuación:
𝑓𝑐𝑙𝑘𝐼/𝑂
𝑓𝑂𝐶𝑛𝑥𝑃𝑊𝑀 =
𝑁 ∙ 256
N representa el factor de preescalador (1, 8, 64, 256 o 1024).
 La señal solo se verá en el pin OC0x si dicho pin es configurado
como salida en su DDRX correspondiente.
TC0: PWM Rápido (Fast PWM)
TC0: PWM de Fase Correcta
(Phase Correct PWM)
 El modo Phase Correct PWM (WGM0[2:0]=0x1 o WGM0[2:0]=0x5)
permite la generación de señales PWM de fase correcta de alta
resolución.
 Está basado en la operación de doble rampa: el contador cuenta
repetidas veces desde BOTTOM a TOP y luego de TOP a BOTTOM.
 Cuando WGM0[2:0]=0x1 definimos TOP=0xFF, cuando
WGM0[2:0]=0x5, definimos TOP=OCR0A.
 La operación a doble rampa tiene una frecuencia de operación
máxima menor a la operación a rampa simple.
 Debido a la característica simétrica del modo PWM de doble
rampa, este modo es preferido para aplicaciones de control de
motores.
 En este modo el contador incrementa hasta TOP, cuando llega,
cambia la dirección a decremental pero permanece en
TCNT0=TOP durante un ciclo de reloj del TC0.
TC0: PWM Rápido (Fast PWM)

 Los comparadores de salida son los responsables de generar las


formas de onda PWM en los pines OC0x.
 En el modo no-inversor COM0x[1:0]=0x2 se establece el pin OC0x
en TCNT0=OCR0x durante la rampa descendente y se borra
cuando TCNT0=OCR0x durante la rampa ascendente.
 En el modo inversor COM0x[1:0]=0x3 se borra el pin OC0x en
TCNT0=OCR0x durante la rampa descendente y se establece
cuando TCNT0=OCR0x durante la rampa ascendente.
 La frecuencia de la señal PWM se obtiene mediante la siguiente
ecuación:
𝑓𝑐𝑙𝑘𝐼/𝑂
𝑓𝑂𝐶𝑛𝑥𝑃𝐶𝑃𝑊𝑀 =
𝑁 ∙ 510
N representa el factor de preescalador (1, 8, 64, 256 o 1024).
 La señal solo se verá en el pin OC0x si dicho pin es configurado
como salida en su DDRX correspondiente.
TC0: PWM Rápido (Fast PWM)
TC0: Registro de Control A

 COM0A[1:0]: Selector de modo del canal A del Comparador de Salida.


 COM0B[1:0]: Selector de modo del canal B del Comparador de Salida.
 WGM0[1:0]: Parte del selector de modo del Generador de Forma de
Onda.
Modos del Generador de
Onda (WGM0[2:0]):

WGM0 WGM0 WGM0 OCR0x se Bandera TOV


Modo de operación TOP
[2] [1] [0] actualiza en se levanta en

0 0 0 Normal 0xFF Inmediato MAX

0 0 1 Phase Correct PWM 0xFF TOP BOTTOM

0 1 0 CTC OCR0A Inmediato MAX

0 1 1 Fast PWM 0xFF BOTTOM MAX

1 0 0 Reservado - - -

1 0 1 Phase Correct PWM OCR0A TOP BOTTOM

1 1 0 Reservado - - -

1 1 1 Fast PWM OCR0A BOTTOM TOP


TC0: Modos del Comparador
de Salida COM0X[1:0]

Para los modos No-PWM (X = A o B):


COM0X[1] COM0X[0] Descripción
0 0 Func. normal del puerto, OC0X desconectado
0 1 Intercambiar OC0X en comparación igual.
1 0 Borrar OC0X en comparación igual.
1 1 Establecer OC0X en comparación igual.
TC0: Modos del Comparador
de Salida COM0X[1:0]

Para los modos Fast-PWM (X = A o B):


COM0X[1] COM0X[0] Descripción
0 0 Func. normal del puerto, OC0X desconectado
0 1 Reservado.
Borrar OC0X en comparación igual, establecer
1 0
OC0X en BOTTOM (Modo NO-Inversor)
Establecer OC0X en comparación igual, borrar
1 1
OC0X en BOTTOM (Modo Inversor)
TC0: Modos del Comparador
de Salida COM0X[1:0]

Para los modos Phase Correct PWM (X = A o B):


COM0X[1] COM0X[0] Descripción
0 0 Func. normal del puerto, OC0X desconectado
0 1 Reservado.
Borrar OC0X en comparación igual durante el
conteo ascendente. Establecer OC0X en
1 0
comparación igual durante el conteo
descendente.
Establecer OC0X en comparación igual
durante el conteo ascendente. Borrar OC0X en
1 1
comparación igual durante el conteo
descendente.
TC0: Registro de Control B

 FOC0A[1:0]: Forzador del Comparador de Salida canal A.


 FOC0B[1:0]: Forzador del Comparador de Salida canal B.
 WGM02: Parte del selector de modo del Generador de Forma de
Onda.
 CS0[2:0]: Selector de Reloj del TC0.
TC0: Selector de Reloj CS0[2:0]

CS0[2] CS0[1] CS0[0] Descripción


0 0 0 Sin fuente de reloj (T/C detenido)
0 0 1 𝑐𝑙𝑘𝐼/𝑂 /1 (Sin pre-escalado)
0 1 0 𝑐𝑙𝑘𝐼/𝑂 /8 (Del preescalador)
0 1 1 𝑐𝑙𝑘𝐼/𝑂 /64 (Del preescalador)
1 0 0 𝑐𝑙𝑘𝐼/𝑂 /256 (Del preescalador)
1 0 1 𝑐𝑙𝑘𝐼/𝑂 /1024 (Del preescalador)
1 1 0 Reloj en pin T0 por flanco descendente.
1 1 1 Reloj en pin T0 por flanco ascendente

Si se usa el reloj externo por T0, las transiciones del pin serán registradas
por el contador incluso si el pin está configurado como salida.
TC0: Registro de Cuenta
TC0: Registro Comparador de
Salida A
TC0: Registro Comparador de
Salida B
TC0: Registro de Mascara de
Interrupciones

 TOIE0: Habilitación de interrupción por desbordamiento de TCNT0.


 OCIE0A: Hab. de Int. por comparación igual entre TCNT0 y OCR0A.
 OCIE0B: Hab. de Int. por comparación igual entre TCNT0 y OCR0B.
TC0: Registro de Banderas

 TOV0: Desbordamiento de TCNT0.


 OCF0A: Comparación igual entre TCNT0 y OCR0A.
 OCF0B: Comparación igual entre TCNT0 y OCR0B.

También podría gustarte