Tim

Tim

(Parte 1 de 2)

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

68HC 08 CPU

System

Integration

Module (SIM)

Clock

Generation

Module (CGM)

Tim er

Interface Module (TIM)

Direct Me mory Access Module (DMA)

Serial

Comm unications

Interface (SCI)

Internal Bus (IBUS)

Serial

Peripheral Interface (SPI)

Rando m Access Me mory (RAM)

Electronically Progr am mable ROM

Monitor ROM

Cuatro canales programables

•Input captures –x flanco ascendente, descendente, o cualquier flanco de disparo

•Output compares –Set, clear, o “toggle action” como nivel de salida

•Pulse width modulation (PWM) ( Modulación por Ancho de Pulso ) –Generación de señal “Buffereada o no Buffereada”

Entrada de Clock programable

•Clock del sistema con “prescaler” de 7 pasos.

Modo de operación “Free-running’ o “ Modulo up-count” Acción “ togle” sobre cualquier pin de canal en “Overflow ” Stop y reset del TIM Counter !!!!!

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Diagrama en Bloques del Clock de refencia del TIM

Internal BusClock

PS2 PS1 PS0

INT Logic

16-Bit Counter TRST

16-Bit Comparator TMODH:TMODL

To Channel Logic

D a t a

B u s

16-Bit Latch

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

El módulo TIM como timer simple solamente…..

Como se puede observar en el cuadro anterior, el módulo de timerdel HC908, toma como referencia para su temporización el Clock interno del Bus (FBUS), que obviamente esta relacionado con la frecuencia del Xtal externo (Fxtal / 4)o bién con la frecuencia del oscilador interno en el caso que el dispositívo tenga la opción de oscilador interno o PLL.

El módulo posee un “prescaler” que divide “N”veces la frecuencia de referencia que entra al mismo, para de esta forma obtener mayor flexibilidad en los rangos de demoras a obtener. Este prescaler puede ser programado por medio de los bits PS2, PS1, PS0en el Timer Status and Control Register (TSC).

Luego que el clock há sido dividido en el prescaler, ingresa a un contador de 16 bits de longitud. Este contador es del tipo “free-running” (de cuenta libre) con rango desde $0 a $F. Existeun comparador de 16 bits vinculado al contador y a un registro, también de 16 bits, denominado “TMOD”(Timer Modulo register) que está dividido en parte “alta”(TMODH)y parte “baja” (TMODL).

Durante el funcionamiento del timer, el contador es comparado permanentemente con el registro TMOD (TMODH , TMODL), por medio del comparador asociado a ellos,cuando la cuenta del mismo coincide con el valor almacenado en dicho registro, se produce “desborde” del timer o “Timer Overflow” , provocando las siguientes acciones:

-Se genera un Señal de “Timer Overflow Flag” (TOF), que nos indicará la condición de overflow del contador/comparador.

-Se genera un pedido de interrupción (Timer Overflow Interrupt) si esta se encuentra habilitada y se atiende la misma saltando a la dirección indicada por el vector respectivo (TIMx Overflow Vector).

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

El módulo TIM como timer simple solamente…… continua.

-Se produce un RESET automático del contador “Free –Running” forzandolo a $0.

Esta configuración permite operar el timer en modo “Free –Running”,o en modo “Modulo Up Counter”, según el valor del registro TMOD.

Si el registro TMOD (TMODH y TMODL) tiene un valor igual a $F, el timer funcionará en modo freerunning, ya que al llegar a $F , recien allí, el comparador emitirá una señal de RESET del contador y de disparo del flag TOF y de la interrupción, si estubiera habilitada.

Si el registro TMOD, tiene un valor menor a $F, entonces el timer funcionará como “Módulo Up Counter”, ya que al llegar al valor establecido en TMOD, provocará el mismo efecto que en el modo “free –running”, lo que garantiza la generación de una temporización (delay) flexible y programable, a diferencia del tipico modo “free –running” del timer de los HC705.

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Timer Clock Reference

Los 2 canales de timer reciben sus clock reference desde: •Free running counter

•Modulo up counter

Consisten de : •Timer counter “ free running ” de solo lectura de 16 bits

•Modulo Register de 16 bit de lectura/escritura por software

•Comparador de 16 bits (timer counter vs. modulo register) –Cuando el contador concuerda con el modulo register..

•Se setea el Timer Overflow Flag (TOF)

•Resetea el contador a $0

•Los contadores comienzan las cuentas nuevamente !!!!

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Timer Status and Control Register (TSC)

Timer Status and Control Register (TSC)

•Clock select and prescaler bits(PS2-PS0)

•Timer Overflow Flag (TOF)

Seteado cuando el timer counter de 16 bits se resetea a $0

Limpiado por lectura del TSC y luego escritura de un “0” en el TOF

–Si ocurre un “overflow ” durante la operación de limpieza, la escritura no tiene efecto.

1 = Timer ha sido reseteado

0 = Timer no ha sido reseteado todavia

•Timer Overflow interrupt Enable (TOE) habilita interrupciones por “timer overflow “ 1 = Habilita interrupción 0 = Deshabilita interrupción

WR IT E: 0 TRST READ: TOF 0

TOETSTOPPS2PS1PS0 TSC

–Detiene el conteo del timer 1 = Timer stopped 0 = Timer active

•Timer Reset (TRST)

–Resetea el timer counter y el prescaler –Limpieza automática despues del counter reset 1 = Reset contador y prescaler 0 = No tiene efecto

NOTA: Seteando ambos TSTOP y TRST detiene el contador en $0 !!!!!

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

PS2PS1PS0TIM Clock Source

Timer Prescale Select Bits (PS0-2)

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Timer Counter Register

Timer Counter Register (TCNTH, TCNTL) •Contador de solo lectura “free running” de 16 bits

•Se lee el byte alto manteniendo el byte bajo “latcheado” hasta la lectura

READ:BIT 15 BIT 14 BIT 13BIT 12BIT 1 BIT 10 B IT 9 BIT 8
READ:BIT 7BIT 6 B IT 5BIT 4BIT 3 BIT 2BIT 1 BIT 0
BIT 15BIT 14BIT 13 BIT 12BIT 1 BIT 10BIT 9 BIT 8
BIT 7 BIT 6BIT 5BIT 4 BIT 3BIT 2BIT 1 BIT 0

Timer Modulo Register (TMODH, TMODL) •El Contenido se compara con TCNTH, TCNTL para determinar el tiempo de reset

•Escribiendo el TMODH deshabilita TOF y overflow interrupts, hasta escribir el TMODL

Timer Modulo Register

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Resolución y Rango del Timer

La resolución de Timer está determinada por el Clock del sistemay el valor del prescaler Resolución (sec) = 1 ÷ (Bus Clock ÷ prescaler)

Rango = 0Resolución x valor de TMOD
Max Rango = 0Resolución x 65,535

El rango del Timer depende del valor en TMODH y TMODL

Ejemplo:

•Calculamos la resolución y el rango dado por un Bus clock de 4 Mhz, y un valor de prescaler de 4 (010), y TMOD = $0F

Resolución = 1 ÷ ( 4 MHz ÷ 4 ) = 1 ÷ 1 MHz = 1µs Rango = 1µs x $0F = 1µs x 255 = 255 µs

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Diagrama en Bloques del Timer del Canal

16-bit Comparator

CHANNEL X PTx

Logic

Int

Logic CHxIE

PTx/ TCHx

MSxA

TCHxH : TCHxL 16-bit Latch

EL SxB X EL SxA

CHxF

TO Vx CHxMAX

From TOF

D a t a

B u s

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Compare/ Capture Unit 16-bit Free Running Counter

16-bit Input Capture Latch

El Status Flag se setea durante la captura

Interrupt request to CPU08

LatchEdge Select

& Detect ICx

CHxF

CHxIE

Flancos Ascendentes Flancos Descendentes Cualquier Flanco

Mascara de Interrupción local opcional (habilitada por medio del software)

• Provee un mecanismo para capturar el tiempo en el cuál ocurre un evento externo

TCHxH:TCHxL

Función “Input Capture”

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Ejemplo de Input Capture -Medición del Ancho de Pulso -

T1 T2

1.Configurar el canal del timer para “ input capture” , “ rising edge” 2.Tiempo de CapturaT1 3.Tiempo de Captura T2 4.Periodo =T2-T1

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Compare/Capture Unit 16-Bit Free-Running Counter

16-Bit Compare

16-Bit Output Compare Register (programmed by software)

Pin Control Logic

Interrupt request to CPU08

OCx

CHxF

El Status Flag se setea cuando la comparación coincide

CHxIE

Mascara de Interrupción Local opcional (habilitada por medio del software)

• Provee un mecanismo para sacar una señal a un tiempo especifico

Set Pin Clear Pin

Toggle Pin La acción ocurre cuando coincide el contenido del compare register con el contador

TCHxH:TCHxL

Función “Output Compare”

Usos Posibles: •Generación de formas de ondas o pulsos

•Indicador de tiempo transcurrido (a un circuito externo)

•Disparo de eventos externos

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Ejemplo de “Output Compare” -Generación de Pulsos -

1.Setear el valor a comparar T1

2. Configurar el canal de timer para “output compare”, setear lasalida

3.Setear el valor a comparar T2

4.Configurar el canal de timer para “output compare”, limpiar la salida 5.Ancho de pulso generado= T2-T1

T1 T2

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Acción “Timer Overflow”

Timer Channel Status and Control Registers (TSCx)

•Toggle on Overflow (TOVx) –Tiene control solo en modo “Output Compare” y PWM

–No tiene efecto cuando el canal está configurado como “input capture”

1 = Cambia el estado de la salida cuando hay “ Timer Overflow ” 0 = No hace nada cuando hay “Timer Overflow ”

WRITE:0 READ:CHxF

CHxIEMSxBMSxAELSxB ELSxATOVxCHxMAX

TSCx

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Channel Timer Registers

Timer Channel registers (TCHx)

•Input Capture –El valor del “Timer register ” es memorizado cuando aparece un “input capture”

•Output Compare –Valor a comparar con el timer

BIT 15BIT 14BIT 13BIT 12BIT 1 BIT 10BIT 9BIT 8 TCHxH

RESET:INDETERMINADO DESPUES DEL RESET x = número de canal 0, 1.

BIT 7 BIT 6BIT 5BIT 4 BIT 3BIT 2BIT 1BIT 0 TCHxL

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Selección de Modo, Flanco, y Nivel

X000Output PresetPin under port control; initial output lvl high X100Output PresetPin under port control; initial output lvl low 0001Input CaptureCapture on Rising Edge Only 0010Input CaptureCapture on Falling Edge Only 0011Input CaptureCapture on ANY (rising or falling) Edge 0101Output CompareToggle output line on Output Compare 0110OrClear output line to 0 on output compare 0111PWMSet output line to 1 on output compare 1X01Buffered OutputToggle output on compare 1X10Compare OrClear output on compare 1X10Buffered PWMSet output on compare

MSxB:MSx A ELS xB :ELSx A Mode Configurati on

WRITE:0 READ:CHxF

CHxIEMSxBMSxAELSxB ELSxATOVx CHxMAX

TSCx

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Interrupciones & Estados del canal

Timer Channel Status and Control Registers (TSCx)

•Channel x Interrupt Enable (CHxE)

–Habilita las interrupciones del TIM al CPU sobre el canal x. 1 = Canal x CPU interrupt requests habilitado 0 = Canal x CPU interrupt requests deshabilitado

•Channel Status Flag (CHxF)

–Input Capture •Seteado cuando ocurre un flanco activo

•Seteado cuando el valor en el “TIM counter registers” coincide con el valor en el TIM channel register

–Limpiado por la lectura del “status register “ luego de escribirun “ 1” en CHxF

1 = Input capture o output compare en canal x 0 = No evento capture o output compare en canal x

WRITE:0 READ:CHxF

CHxIE MSxB MSxA ELSxB ELSxA T OVx CHxMAX TSCx

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Señal PWM Unbuffered

(el más conocido de los modos de generación de PWM…)

Cualquier canal puede generar Unbuffered PWM •Se usa “output compare”

•La salida cambia de estado basada en el “timer overflow”

El período PWM puede fijarse por: •Valor de la cuenta del Modulo ( Modulo count value )

•La salida del “Clock prescaler”

La duración del ancho del pulso puede fijarse por:

•Valor del “Timer compare register”

–El canal del timer configurado para forzar el pin de salida para complementar nivel del ancho de pulso

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Generación de la señal PWM (Ejemplo)

T1= Período PWM = comandado por el Timer overflow •Calcular el valor del prescaler y TMOD = T1

Ejemplo:Quiero un PWM con un 50% de duty cycle y período de 100 µs desdeun

T2=Ancho del Pulso = Valor del “Output compare” system clock de 4 Mhz.

Selecciono un prescaler de 4, Resolución = 1 ÷ (4 MHz ÷ 4) = 1µs TMOD= T1 ÷ Resolución = 100µs ÷ 1µs = 100 TCHxH:TCHxL= T2 = Duty cycle x TMOD = 50% x 100 = 50

A = Output compare, limpia la salida cuando ocurreB= Timer overflow, “cambia” la salida

T2 T1

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Inicialización del Unbuffered PWM

1)Parar y Resetear el timer

2)Seleccionar el valor del “timer counter modulo” y el “ timer clock prescaler” para proveer período PWM requerido.

3)Cargar el “ Timer compare register” con el valor del ancho del pulso

4)Configurar el canal del timer para operación “output compare”

5)Seleccionar la función “timer counter toggle on overflow”

6)Configurar el canal del timer para forzar el pin de salida para complementar el nivel del ancho de pulso

•No debe ser usado “Toggle on output compare”

7)Habilitar el timer

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Limitación para el Unbuffered PWM

El metodo anterior para cambiar el ancho del pulso funciona bien en la mayoría de los casos, excepto cuando el cambio en el ancho del pulso es muy grande !!

Ejemplo: No se podría cambiar desde un duty cycle del 9% al 1%

ING. DANIEL DI LELLA DDFAEFor Motorola Products

Curso de Microcontroladores Familia HC908 Flash de Motorola Parte I

Que es un Buffered PWM?

Usa 2 output compare registers para controlar una sola salida

•Supera la “sincronización”y limitación en el ancho del pulsode los unbuffered PWMs •Se pueden “linkear” los Canales 0 para formar un Buffered PWM

Seleccionado por los bits MS0B y/o MS2B

•“Linkea” las salidas de los canales de timer como si fueran I/O

–Bajo el control del DDR y el data register –Independiente del seteo de TSC1

Operación del HC08 Buffered PWM

Configurar el canal 0 como para “unbuffered PWM”

•Excepto MSxB bit que es puesto a set en TSCx register El ancho del pulso inicial debe ser cargado en el output compareregister del canal 0

Subsequentes valores de ancho de pulso son escritos en el canal linkeado inactivo en cualquier tiempo •Escribiendo en el compare register del canal inactivo habilita ese canal

•Los cambios en el control de salida cambian después del prox. “counter overflow “ – Auto sincronización

(Parte 1 de 2)

Comentários