sesión 09: timer como base de tiempo.. 2009/1 circuitos digitales iii 2010/1 circuitos digitales...

46
Sistemas Digitales Sesión 09: TIMER como base de tiempo.

Upload: natalia-cabrera-perez

Post on 02-Feb-2016

227 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

Sistemas Digitales IISesión 09: TIMER como base de tiempo.

Page 2: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

A continuación…A continuación…

TIMER 2

TIMER 1

TIMER 0

TIMER como base de tiempoTIMER como base de tiempo

Page 3: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar

Conociendo la CPU y sus Periféricos…

IRQIRQ

SIMSIME/SE/S

SCISCI

CPUCPU MEMORIAMEMORIA

ADCADC

TIMERTIMER

CAJA NEGRACAJA NEGRA

Page 4: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar

Se requiere del uso del Timer cuando necesitamos suplir los siguientes requerimientos:

Reloj Sistema

1ms100ms

250ms1s

0.5s

5msCAJA NEGRACAJA NEGRA

Generador de Bases de Tiempo

Generador de Bases de Tiempo

Base de tiempo configurable…

Base de tiempo configurable…

CPUProcesando…

CPUProcesando…

Mínima intervención de

la CPU

Mínima intervención de

la CPU

Page 5: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar

Se requiere del uso del Timer cuando necesitamos suplir los siguientes requerimientos:

t

CAJA NEGRACAJA NEGRA

Tiempo de evento: X seg.

Medición de Tiempo

Medición de Tiempo

Mínima intervención de

la CPU

Mínima intervención de

la CPU

Midiendo…

Page 6: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar Se requiere del uso del Timer cuando

necesitamos suplir los siguientes requerimientos: Comunicación de datos, usando señales moduladas

(Modulación de pulso o PWM). Suponga la transmisión de ‘H’ ‘O’ ‘L’ ‘A’ NULL

CAJA NEGRA

CAJA NEGRATIMERTIMER

Equipo A

CAJA NEGRA

CAJA NEGRATIMERTIMER

Equipo B

Línea de Transmisión

‘H’ ‘O’ ‘L’ ‘A’ NULL

Generación de señales

cuadradas

Mínima intervención de

la CPU

Page 7: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar

Se requiere del uso del Timer cuando necesitamos suplir los siguientes requerimientos:

MOTOR DC

VDC

t

VDC

t

VDC

t

VDC

t

CAJA NEGRA

PWM

CAJA NEGRA

PWM

Generación de PWM

Generación de PWM

Mínima intervención de

la CPU

Mínima intervención de

la CPU

Page 8: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Módulo TIMERMódulo TIMER

Periódicos Bases de Tiempo.

Detectar Eventos Externos Medida de Frecuencia. Medida de ancho de dureza.

Generar Señales Modulación de Ancho de Pulso.

Combinaciones Control de Motores, Comunicaciones, etc…

Page 9: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Módulo TIMERMódulo TIMER

Temporizadores.

Medida del tiempo de eventos externos.

Generación de Señales Cuadradas.

TIMERTIMEREvento o INTEvento o INT543210

TIMEREvento I.C.

TIMEREvento I.C.

EventoEventot1t2t3t4

TIMEREvento O.C.

TIMEREvento O.C.

Page 10: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Módulo TIMERMódulo TIMER

Este módulo provee varias funciones Contador Rueda Libre con overflow programable. Captura de tiempos cuando ocurre un evento

externo (Input Capture). Generación de señales cuadradas con polaridad,

duración y frecuencia programables (Output Compare).

Se pueden generar señales PWM haciendo uso de Output Compare y Toggle on Overflow.

Page 11: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Módulo TIMERMódulo TIMER

TIMER como Base de Tiempo

MÓDULONFIN FOUT

CONT. 16-BITSFBUS

PRES: ÷1, ÷2, ÷4, ÷8, ÷16, ÷32, … FOVERFLOW

SEL. PS.

TIMER

CARGA

COMP

CONT

CARGA5

PTOF

Tiempo

INT_TIMER

INT. a CPU

012345010 ... 5ACK_SW

COMP

Componente Central: Contador 16

Bits

Componente Central: Contador 16

Bits

Divide la frecuencia de bus, el contador se

incrementa más lentamente

Divide la frecuencia de bus, el contador se

incrementa más lentamente

Page 12: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

Timer OverflowTimer Overflow Inicialización

Detener el conteo Resetear el contador del timer Seleccionar el preescalado Establecer el valor del módulo Quitar la máscara de interrupción Habilitar el conteo

Reconocimiento de la interrupción Leer el registro de estado y control Llevar la bandera de interrupción a cero

Page 13: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

A continuación…A continuación…

TIMER 2

TIMER 1

Timer 0

TIMER como base de tiempo

TIMER 0

Page 14: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0TIMER 0

El bloque funcional TIMER0/WATCHDOG es: Un contador (registro) de 8 bits. Incrementado por hardware y programable. La cuenta máxima es de 255. El incremento es constante e independiente.

Pude usarse como: Contador: cuenta los eventos externos (a través del pin

RA4/TOCK1). Temporizador: cuenta los pulsos internos de reloj.

Page 15: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0TIMER 0

Se puede insertar un preescalador (divisor de frecuencia programable) 2, 4, 8, 16,32, 64,128 o 256. La frecuencia de conteo es una cuarta parte de la

frecuencia de reloj (fosc/4).

Con el uso del preescalador se puede dividir la frecuencia.

El bloque del TIMER0 puede funcionar como WATCHDOG.

Page 16: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0TIMER 0

Los registros implicados en la configuración del TIMER0/WDT son los siguientes: OPTION_REG: configura el "hardware" del

TIMER0/WDT. INTCON: permite trabajar con la interrupción del

TIMER0/WDT. TRISA: habilita el pin RA4.

Page 17: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0TIMER 0

Los registros configuran los siguientes elementos: T0CS: Procedencia de las señales:

• 1 = RA4/TOCK1.• 0 = Reloj interno.

T0SE: Tipo de flanco en el T0CK1/RA4:• 1 = Flanco descendente.• 0 = Flanco ascendente.

PSA: Asignación del divisor de frecuencias:• 1 = WDT.• 0 = TMR0.

Seleccionar el divisor de frecuencias a actuar (preescalador)

Page 18: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0TIMER 0

El tiempo de desbordamiento del TIMER0 se calcula según la siguiente ecuación:

T = TCM·Prescaler·(256 - Carga TMR0)

Donde TCM es el ciclo máquina que se puede calcular mediante la ecuación:

TCM = 4/FOSC

Page 19: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0 en CTIMER 0 en C

La función para configurar el TlMER0 es:

setup_timer_0 (modo);

Donde modo está definido en el fichero de cabecera

Modo Descripción

RTCC_INTERNALProcedencia de la señal reloj interno flaco de subida

RTCC_EXT_L_TO_HProcedencia de la señal reloj externo flaco de subida

RTCC_EXT_H_TO_LProcedencia de la señal reloj externo flaco de bajada

RTCC_DIV_2 Preescalador 2

RTCC_DIV_4 Preescalador 4

RTCC_DIV_8 Preescalador 8

RTCC_DIV_16 Preescalador 16

RTCC_DIV_32 Preescalador 32

RTCC_DIV_64 Preescalador 64

RTCC_DIV_128 Preescalador 128

RTCC_DIV_256 Preescalador 256

Page 20: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0 en CTIMER 0 en C

Los distintos modos se pueden agrupar mediante el empleo de símbolo |.

setup_timer_0(RTCC_DIV_2 | RTCC_EXT_L_TO_H);

El compilador C suministra una serie de funciones para leer o escribir en el TlMER0/WDT. Para escribir un valor en el registro:

• set_timer0 (valor);

Para leer el valor actual del registro:• valor = get_timer0 ();

Page 21: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0 en CTIMER 0 en C

Para activar TIMER0 es necesario utilizar bits de configuración mediante la directiva #FUSES:

#fuses NOWDT //Watchdog Desactivado.

Page 22: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 0 en CTIMER 0 en C

Para trabajar con las interrupciones del TIMER0, se la siguiente directiva:

#INT_TIMER0 Esta indica que la función que esté a continuación

será la subrutina de atención de interrupción del módulo TIMER0.

Para habilitar la interrupción se emplea:

enable_interrups (INT_TIMER0);

Page 23: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

EjemploEjemplo

Generar una señal Cuadrada de 1KHz utilizando la interrupción del TIMER0.

Page 24: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

EjemploEjemplo

Solución: Para generar una señal de 1Khz se necesita un

semiperiodo de 500us. Según la ecuación de desbordamiento, utilizando un cristal de 4 MHz y un preescalador de 2:

T = TCM·Prescaler·(256 - CargaTMR0)

500us = (4/4000000)·2·(256 - Carga)

Carga = 6

Page 25: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

EjemploEjemplo

Generar una señal Cuadrada de 1Hz utilizando la interrupción del TIMER0.

Page 26: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

EjemploEjemplo

Solución: Para generar una señal de 1Hhz se necesita un

semiperiodo de 500ms. Según la ecuación de desbordamiento, utilizando un cristal de 4 MHz y un preescalador de 256:

T = TCM·Prescaler·(256 - CargaTMR0)

500ms = (4/4000000)·256·(256 - Carga)

Carga = -1697 ???

Page 27: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

A continuación…A continuación…

Timer 2

Timer 1

Timer 0

TIMER como base de tiempo

Timer 1

Page 28: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 1TIMER 1

El modulo TIMER1 es otro temporizador/contador con las siguientes características: Trabaja con 16 bits (con dos registros de 8 bits: TMR1H

y TMR1L). Ambos registros se pueden leer y escribir. Interrupción por desbordamiento de FFFFh a 0000h. Reset por disparo del módulo CCP Controlado por el registro T1CON. Con el bit TMR10N

(T1CON<0>) se puede habilitar o deshabilitar.

Page 29: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 1TIMER 1

Los registros configuran los siguientes elementos: Selección del valor del preescalador del reloj del TMR1. Habilitación del oscilador del TMR1. Sincronización de la entrada de reloj. Selección de la fuente de reloj para el TMR1: Habilitación del TMR1.

Page 30: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 1TIMER 1

El TlMER1 puede operar en los siguientes modos: Como temporizador. Como contador síncrono. Como contador asíncrono.

Page 31: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 1TIMER 1

El tiempo de desbordamiento del TIMER1 se calcula según la siguiente ecuación:

T = TCM·Prescaler·(65536 - Carga TMR1)

Donde TCM es el ciclo máquina que se puede calcular mediante la ecuación:

TCM = 4/FOSC

Page 32: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 1 en CTIMER 1 en C

La función para configurar el TlMER1 es:

setup_timer_1 (modo);

Donde modo está definido en el fichero de cabecera

Modo Descripción

T1_DISABLED Habilitar TIMER1

T1_INTERNALProcedencia de la señal reloj interno

T1_EXTERNALProcedencia de la señal reloj externo asíncrono

T1_EXTERNAL_SYNCProcedencia de la señal reloj externo síncrono

T1_CLK_OUT Oscilador habilitado

T1_DIV_BY_1 Preescalador 1

T1_DIV_BY_2 Preescalador 2

T1_DIV_BY_4 Preescalador 4

T1_DIV_BY_8 Preescalador 8

Page 33: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 1 en CTIMER 1 en C

Los distintos modos se pueden agrupar mediante el empleo de símbolo |.

La lectura y escritura en el módulo TMR1 se realiza a través de las siguientes funciones: valor = get_timer1 (); set_timer1 (valor);

Donde valor es un entero de 16 bits.

Page 34: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 1 en CTIMER 1 en C

Para trabajar con las interrupciones del TIMER1, se la siguiente directiva:

#INT_TIMER1 Esta indica que la función que esté a continuación

será la subrutina de atención de interrupción del módulo TIMER1.

Para habilitar la interrupción se emplea:

enable_interrups (INT_TIMER1);

Page 35: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

EjemploEjemplo

Generar una función que permita realizar retardos de 1 segundo empleando el TIMER1

Page 36: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

EjemploEjemplo

Solución: Para generar retardos de 1seg se necesita un

semiperiodo de 500ms (¿por qué?). Según la ecuación de desbordamiento, utilizando un cristal de 4 MHz y un preescalador de 8:

T = TCM·Prescaler·(65536 - CargaTMR0)

500ms = (4/4000000)·8·(65536 - Carga)

Carga = 3036

Page 37: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

A continuación…A continuación…

Timer 2

Timer 1

Timer 0

TIMER como base de tiempo

Timer 2

Page 38: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 2TIMER 2

El TIMER2 es un modulo temporizador con las siguientes características: Temporización de 8 bits (registro TMR2). Registro de periodo de 8 bits (PR2). Ambos registros se pueden leer o escribir. Preesacalador programable por programa (1,4,16). Postescalador programable por programa (1 a 16). Interrupción controlada por PR2. El módulo SSP utiliza opcionalmente el TlMER2 para

generar una señal de reloj.

Page 39: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 2TIMER 2

Los registros configuran los siguientes elementos: Selección del valor del postescalador del TMR2. Habilitación del TMR2: Selección del valor del preescalador del TMR2.

Page 40: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 2TIMER 2

El tiempo de desbordamiento del TIMER1 se calcula según la siguiente ecuación:

T = TCM·Prescaler·(Carga TMR2+1)·Postescalador

Donde TCM es el ciclo máquina que se puede calcular mediante la ecuación:

TCM = 4/FOSC

Page 41: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 2 en CTIMER 2 en C

La función para configurar el TlMER2 es:

setup_timer_2 (modo, periodo, postscaler);

Donde: Periodo es un valor entero de 8 bits (0-255). Postscaler es el valor del postescalador (1 a 16). modo está definido en el fichero de cabecera

Modo Descripción

T2_DISABLED Habilitar TIMER2

T1_DIV_BY_1 Preescalador 1

T1_DIV_BY_4 Preescalador 4

T1_DIV_BY_16 Preescalador 16

Page 42: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 2 en CTIMER 2 en C

Los distintos modos se pueden agrupar mediante el empleo de símbolo |.

La lectura y escritura en el módulo TMR2 se realiza a través de las siguientes funciones: valor = get_timer2 (); set_timer2 (valor);

Donde valor es un entero de 8 bits.

Page 43: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

TIMER 2 en CTIMER 2 en C

Para trabajar con las interrupciones del TIMER2, se la siguiente directiva:

#INT_TIMER2 Esta indica que la función que esté a continuación

será la subrutina de atención de interrupción del módulo TIMER0.

Para habilitar la interrupción se emplea:

enable_interrups (INT_TIMER2);

Page 44: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

EjemploEjemplo

Generar una señal cuadrada de 1 KHz utilizando la interrrupción del TlMER2.

Page 45: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás

EjemploEjemplo

Solución: Para generar una señal de 1 Khz se necesita un

semiperiodo de 500us, según la ecuación del desbordamiento del TIMER2, utilizando un cristal de 4 MHz, un preescalador de 4 y un postescalador de 1:

T = TCM·Prescaler·(Carga TMR2+1)·Postscaler

500us = (4/4000000)·4·(Carga+1)·1

Carga = 125

Page 46: Sesión 09: TIMER como base de tiempo.. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales

Sistemas Digitales IIFin de la sesión 09