Upload
tecnicaturaenelectronica
View
445
Download
3
Embed Size (px)
DESCRIPTION
Temporizadores en microcontroladores PIC
Citation preview
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
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
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.
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?
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?
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
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
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
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
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
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
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
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.
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
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.
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.
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.
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.
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
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 .
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
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.
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.
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
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.
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
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
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.