28
Clase: Puertos de los microcontroladores PIC 1 Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital II Tecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras ELECTRÓNICA DIGITAL II Clase 5

Clase - Temporizadores

Embed Size (px)

DESCRIPTION

Temporizadores en microcontroladores PIC

Citation preview

Page 1: Clase - Temporizadores

Clase: Puertos de los microcontroladores PIC

1

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

ELECTRÓNICA DIGITAL II

Clase 5

Page 2: Clase - Temporizadores

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

TEORIA PARTE 1: PERIFERICOS DE UN MICROCONTROLADOR: MÓDULO TEMPORIZADOR TIMER0

2Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

Page 3: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

3

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

¿Qué es un PERIFÉRICO?

Un periférico es un circuito o módulo interno del microcontrolador, que funciona en forma independiente de la ejecución normal del programa de control.

Los periféricos se configuran en general al inicio el programa para determinar su modo de funcionamiento y ponerlos en marcha.

Una vez en marcha, el programa de control puede hacer uso del periférico de dos maneras diferentes:

1- Observando su evolución a través de la lectura directa de sus registros de control asociados. Esto se conoce como ¨polling¨. En este caso el programa ocupa tiempo del micro en la acción.

2- Esperando a que el periférico produzca un llamado de interrupción. Hasta que esto sucede, el programa principal no tiene intervención en la evolución del periférico.

Page 4: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

4

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Un TIMER o temporizador es un contador binario que cuenta en forma ascendente, ciclos de instrucciones o pulsos externos.

Es un periférico usado para generar temporizaciones muy exactas, contar eventos, medir tiempos, etc.

Los TIMER’s, tienen asignados posiciones específicas del área de registros especiales de la memoria RAM. A través de estos registros, se configura su modo de funcionamiento y llevar la cuenta de los pulsos.

Estos registros pueden ser leídos y escritos por el usuario.

Las fuentes de reloj para el contador del Timer pueden ser el reloj interno del sistema o una señal externa aplicada a un pin específico del microcontrolador. Para ambos casos es posible aplicar un divisor de frecuencia de manera de lograr temporizados más largos.

¿Qué es un TIMER?

Page 5: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

5

Los TIMER’s cuentan los pulsos de entrada a partir de un valor prefijado por el usuario. Este valor se carga en el/los registros de conteo TMRx.

Cuando el contador llega al final de la cuenta (desborde) se resetea volviendo a cero, dando inicio a un nuevo ciclo. El usuario debe volver a cargar el valor inicial del conteo.

En el desborde, además de reiniciarse el contador, se colocan en estado alto las ¨banderas de interrupción¨ correspondientes avisando al programa principal que está lista la cuenta.

Los TIMERS pueden tener un ancho de palabra de 8 o 16 bits para las familias de rango medio de microcontroladores MICROCHIP.

Para 8 bits la cuenta máxima será desde 0 hasta 255 (00H a 0FFH).

Para 16 bits la cuenta máxima será desde 0 a 65535 (0000H a 0FFFFH)

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

¿Funcionamiento de un TIMER?

Page 6: Clase - Temporizadores

Clase: Módulos TemporizadoresTimer0, Timer1 y Timer2

6

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

El TIMER0 es el más simple de los contadores y cuenta con las siguientes características sobresalientes:

• Pude funcionar como temporizador (la cuenta se incrementa con cada ciclo de instrucción) o como contador de eventos (la cuenta se incrementa con el flanco ascendente o descendente de una señal externa)

• El ancho de palabra del contador es de 8 bits, la cuenta máxima va desde 0 a 255 (00H hasta FFH)

• Tiene un prescaler (divisor de la frecuencia de los pulso) de 3 bits, permitiendo seleccionar 8 factores de división. Este prescaler está compartido con el “perro guardián”, no pueden usarlos ambos a la vez.

• Fuente de reloj externa se aplica al pin T0CKI. Es posible seleccionar por software si el flanco activo del conteo será el ascendente o el descendente.

• Interrupción por desborde.

El TIMER0

Page 7: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

7

Diagrama de bloques interno del TIMER0

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Page 8: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

8

Registros asociados al TIMER0: OPTION-REG

Bit T0CS, permite seleccionar qué es lo que el TIMER va a contar: ciclos de reloj interno o pulsos externos.

Bit T0SE, permite seleccionar el flanco activo de los pulsos externos: ascendente o descendentes.

Bits PS2-PS0, permiten seleccionar uno de 8 factores de división del los pulsos a contar.

Bit PSA, permite seleccionar quiés va a usar el divisor de frecuencia o prescaler: el TIMER0 o el perro guardián.

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Page 9: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

9

Registros asociados al TIMER0: INTCON

Bit T0IE, habilita o inhibe la interrupción por desborde del TIMER0.Bit GIE, habilita o inhibe todas las interrupciones.

Bit T0IF, bandera de interrupción por desborde del TIMER0. Avisa a la CPU que ha finalizado la cuenta. Este bits debe ser borrado por el usuario.

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Page 10: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

10

Configuración y uso del TIMER0

El TIMER0 siempre está en funcionamiento. Sin embargo para poder utilizarlo en una aplicación es necesario realizar algunas configuraciones.

El compilador CCS provee tres funciones de librería para la configuración del TIMER0:

Función

setup_timer_0 (fuente de reloj, factor de división)

Permite realizar la configuración inicial del timer.

Admite dos argumentos: la fuente de reloj y el factor de división.

Función

set_timer_0 (valor inicial de conteo)

Permite fijar el valor de partida de la cuenta. Recordar que el periodo de conteo es el valor máximo de cuenta menos el valor inicial.

El argumento ¨valor inicial de conteo¨ no puede ser mayor que el máximo valor de conteo.

Función

get_timer_0 ()

Permite leer el valor actual de la cuenta. Esta función se usa cuando el programa trabaja haciendo ¨polling¨.

La función devuelve un valor que se transfiere a una variable.

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Page 11: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

11

Argumentos de las funciones del TIMER0

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Page 12: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

12

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

El TIMER1 es el más complejo de los temporizadores con que cuentan los microcontroladores de la línea media de MICROCHIP. Las características sobresalientes son:

• Pude funcionar como temporizador o como contador de eventos, aunque no se puede seleccionar el flanco activo de la señal externa.

• El ancho de palabra del contador es de 16 bits, la cuenta máxima va desde 0 a 64535 (0000H hasta FFFFH). La cuenta se guarda en el par de registros TMR1H-TMR1L.

• Tiene un prescaler de 2 bits, permitiendo seleccionar 2 factores de división.

• Fuente de reloj interna y externa seleccionables por software.

El TIMER1

Page 13: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

13

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

El TIMER1

• Para la fuente externa de reloj se puede optar por un cristal oscilador de 32 KHz colocados entre los pines T1OSI y T1OSO o una señal de reloj aplicada al pin T1CKI.

• Interrupción por desborde.

• Diferentes opciones de habilitación del conteo del temporizador: vía software (bit TMR1ON), disparado por la salida del módulo comparador o por una señal aplicada al pin T1G.

• El TIMER1 trabaja en conjunto con el módulo Captura/comparación/PWM.

• Funcionamiento sincronizado con el reloj interno o asincrónicamente.

Page 14: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

14

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Diagrama de bloques interno del TIMER1

Page 15: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

15

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Registros asociados al TIMER1: T1CON

Bits T1KPS1-T1KPS0, seleccionan uno de 4 factores posibles de división de la fuente de reloj.Bit T1OSCEN, habilita el oscilador que utiliza un cristal externo.

Bit TMR1CS, selecciona la fuente de reloj, interna o externa.

Bit TMR1ON, pone en funcionamiento o detiene al TIMER1.

Page 16: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

16

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Registros asociados al TIMER1: PIE1

Bit TMR1IE, habilita la interrupción por desborde del TIMER1.

Page 17: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

17

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Registros asociados al TIMER1: PIR1

Bit TMR1IF, bandera de aviso de interrupción por desborde del TIMER1.

Page 18: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

18

Configuración y uso del TIMER1

A diferencia del TIMER0 que siempre está en funcionamiento, al TIMER1 es necesario encenderlo luego de configurar su funcionamiento.

Para la configuración del TIMER1, se usan las mismas funciones que para el TIMER0, reemplazando solamente el 0 por el 1:

Función

get_timer1 ()

Permite leer el valor actual de la cuenta. Esta función se usa cuando el programa trabaja haciendo ¨polling¨.

La función devuelve un valor que se transfiere a una variable.

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Función

set_timer1 (valor inicial de conteo)

Permite fijar el valor de partida de la cuenta. Recordar que el periodo de conteo es el valor máximo de cuenta menos el valor inicial.

El argumento ¨valor inicial de conteo¨ no puede ser mayor que el máximo valor de conteo.

Función

setup_timer1 (fuente de reloj, factor de división)

Permite realizar la configuración inicial del timer.

Admite dos argumentos: la fuente de reloj y el factor de división.

Page 19: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

19

Argumentos de las funciones del TIMER1

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Page 20: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

20

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

El TIMER2

El TIMER2 es un temporizador con características diferentes a los dos módulos estudiados con anterioridad:

• Posee un registro temporizador y un registro de período, TMR2 y PR2 respectivamente, ambos de 8 bits.

• Prescaler (divisor de la frecuencia del reloj interno) de 2 bits, 3 valores posibles.

• Postscaler (divisor de frecuencia de la salida del TIMER2) de 4 bits, 16 valores posibles.

• Interrupción cuando el registro TMR2 iguala el valor de PR2.

• No tiene posibilidad de seleccionar fuente de reloj, siempre cuenta ciclos de intrucciones .

Page 21: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

21

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Diagrama de bloques interno del TIMER2

Page 22: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

22

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Funcionamiento del TIMER2

El TIMER2 funciona de la siguiente manera:

El reloj de instrucciones (Fosc/4) alimenta el prescaler.

La salida del prescaler se usa para incrementar el registro TMR2, cuya cuenta se inicia desde 00H.

El valor del registro TMR2 es comparado constantemente y en forma automática con el contenido del registro PR2. Cuando ambos valores coinciden el TMR2 es reseteado y se incrementa el postscaler.

La salida del postscaler controla la bandera de interrupción del TIMER2, bit TMR2IF del registro PIR1.

El TIMER2 es usado por el módulo de Captura/Comparación/PWM como base de tiempo.

Page 23: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

23

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Configuración y uso del TIMER2

Al TIMER2 es necesario encenderlo luego de configurar su funcionamiento.

Para la configuración del TIMER2, se usan las mismas funciones que para el TIMER0 y TIMER1, reemplazando solamente el 0 o el 1 por un 2:

Función

setup_timer2 (factor de división prescaler, periodo, factor de división postscaler)

Factor de división de prescaler es el factor de división del reloj interno, admite tres valores posibles.

Periodo es un número entre 0 y 255 y determina el momento en que el TIMER2 se reinicia dando comienzo a un nuevo ciclo.

Factor de división del postscaler es el número de veces que se reiniciará el TIEMER2 antes de disparar la interrupción correspondiente.

Función

set_timer2 (valor de carga TMR2)

Permite alterar el valor de conteo del TIMER2. El valor a cargar debe ser menor o igual al del período que se estableció en la función setup_timer2().

Función

get_timer_2 ()

Permite leer el valor actual de la cuenta. Esta función se usa cuando el programa trabaja haciendo ¨polling¨.

La función devuelve un valor que se transfiere a una variable.

Page 24: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

24

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Registros asociados al TIMER2: T2CON

Bits T2KPS1-T2KPS0, seleccionan uno de 3 factores posibles de división de la fuente de reloj.Bit TMR2ON, enciende o apaga el TIMER2.

Bits TOUOP3-TOUTP0, seleccionan uno de 16 factores posibles de división del postscaler

Page 25: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

25

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Registros asociados al TIMER2: PIE1

Bit TMR2IE, habilita la interrupción por igualdad entre el TMR2 t el registro PR2.

Page 26: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

26

Registros asociados al TIMER2: PIR1

Bit TMR2IF, bandera de aviso de interrupción por igualdad de TMR2 y el registro PR2.

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Page 27: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2

27

Escuela Normal Superior Dr. Nicolás Avellaneda Asignatura: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Argumentos de las funciones del TIMER2

Page 28: Clase - Temporizadores

Clase: Módulos Temporizadores Timer0, Timer1 y Timer2 28

Escuela Normal Superior Dr. Nicolás Avellaneda Cátedra: Electrónica Digital IITecnicatura Superior en Electrónica Industrial Profesor: Ing. Gabriel Argañaras

Fuente de información

• Hoja de datos de los microcontroladores PIC16F84 y 16F873 proporcionadas por MICROCHIP en su página web.