Post on 22-Feb-2015
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
TEMPORIZADORES
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
La familia dsPIC30F dispone de hasta cinco temporizadores de 16 bits , de los cuales
algunos poseen la caracteristicas de poder combinarse con el objetivo de formar
temporizadores de 32 bits. Los temporizadores ademas de controlar el tiempo
autonomamente, proporcionan la base de tiempo a otros perifericos como el de
captura o el de Comparador/PWM.
Cada temporizador /contador de 16 bits dispone de los siguientes registros que son
susceptibles de leerse y escribirse.
• TMRx: Registro Contador del Temporizador (16 bits).
• PRx: Registro de periodos asociados al temporizador (16 bits).
• TxCON: Registro de control asociado al temporizador (16 bits).
Por otra parte cada temporizador tiene asociado a su vez una serie de bits para el
control de interrupciones:
• TxIE: Bit de control para permiso de interrupción del Timer.
• TxIF: Bit de estado del señalizador de desbordamiento.
• TxIP <2:0>: Bits para determinar la prioridad de la interrupción.
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
TIPOS DE TEMPORIZADORES
Todos los temporizadores de 16 bits de la familia dsPIC son practicamente
identicos en cuanto a su funcionalidad, existiendo minimas diferencias. Se
pueden clasificar en tres grandes categorias:
1. Temporizadores tipo A (TIMER 1)
2. Temporizadores tipo B (TIMER 2 y TIMER 4)
3. Temporizadores tipo C (TIMER 3 y TIMER 5)
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
TIPO A (TIMER 1)
Algunas características especiales de este tipo de temporizadores son las siguientes:
• Pueden ser utilizados en modo oscilador LP (Low Power) u oscilador secundario de
32 Khz para aplicaciones de reloj de tiempo real (RTC).
• Pueden funcionar de forma asíncrona a través de una señal de reloj externa.
TIPO B (TIMER 2 – TIMER 4)
Sus características especificas son las siguientes:
• Los temporizadores tipo B pueden concatenarse con los tipo C para formar
temporizadores de 32 bits. El registro TxCON del temporizador tipo B contiene el bit de
control T32, que cuando tiene valor 1 permitirá el funcionamiento del temporizador de
32 bits.
• La sincronización de reloj se realiza después de atravesar la lógica del divisor de
frecuencia (Prescaler).
La estructura interna es similar a la del temporizador tipo A pero no cuenta con la
lógica que posibilitaba la sincronización con el reloj externo ni con la opción del
oscilador LP.
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
TIPO C (TIMER 3 y TIMER 5)
Algunas características especiales de este tipo de temporizadores son las
siguientes:
• Pueden concatenarse con los tipo B para formar temporizadores de 32 bits.
• En un dispositivo dado, al menos un temporizador tipo C tiene la capacidad
de disparo (trigger) en una conversión analogico/digital (A/D)
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO A (TIMER 1)
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO B (TIMER 2 y TIMER 4)
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO B (TIMER 2 y TIMER 4)
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO C (TIMER 3 y TIMER5)
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO C (TIMER 3 y TIMER5)
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
REGISTROS DE CONTROL
Registro base tipo A (TxCON)
Byte superior
Bit 15 Bit8
• TON: Activación del temporizador. Es un bit que gobierna el permiso o la
prohibición del funcionamiento del temporizador. En caso de poner un ‘0’ en
dicho bit, el temporizador no funcionara. Dado que es susceptible de ser
modificado, el bit es leible,borrable y escribible.
• TSIDL: Detención del temporizador en modo IDLE. Cuando TSIDL=1 indica
que el temporizador estara detenido cuando se encuentra en el modo de
espera IDLE,y para que pueda continuar nuevamente, sera necesario poner
un 0. Se trata de un bit leible, borrable y escribible.
El bit 14 y los 12 – 9 no se encuentran implementados y son leidos como
cero.
TON ------ TSID ------- ------- ------- ------- ------- -------
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
Byte inferior
Bit 7 Bit0
TGATE: Este bit se usa para habilitar el modo de disparo por acumulación de tiempo.
TGATE=1,encendido y en caso contrario, desactivado. Cuando TGATE=1, el bit TCS
debera tomar el valor 0 ya que en caso contrario TGATE sera leido siempre como 0.
TCKPS<1:0>: Bits para el prescaler.
TSYNC: Sincronización con señal externa de reloj. Si TCS=1 y TSYNC=1 entonces se
realizara la sincronizacion; si TCS=0, este bit sera ignorado.
TCS: Selección de fuente de reloj.Cuando este bit se encuentra activado, se utiliza un
reloj externo aplicado a la patita TxCK. En cambio,cuando TCS=0 el reloj interno es el
que se emplea.Es un bit leible, borrable y escribible.
Los bits 7, 3 y 0 no se encuentran implementados y son leidos como 0.
-- TGATE TCKPS<1:0> ------- TSYNC ----- TCS -------
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
Registro base tipo B TxCON (TIMER 2 y TIMER 4)
Byte superior
Bit 15 Bit8
TON: Activación del temporizador. Es el encargado de la activación del temporizador y
dependiendo del valor que posea el bit T32,se activara o detendra el temporizador de
16 bit o el de 32 bits,el bit es leible,borrable y escribible.
Si T32=1 (Modo temporizador de 32 bits)
1= Activa el temporizador de 32 bits.
0= detiene el temporizador de 32bits.
TSIDL: Detención del temporizador en modo IDLE. Cuando TSIDL=1 indica que el
temporizador estara detenido cuando se encuentra en el modo de espera IDLE,y para
que pueda continuar nuevamente, sera necesario poner un 0. Se trata de un bit leible,
borrable y escribible.
El bit 14 y los bits 12 – 9 no se encuentran implementados y son leidos como 0.
TON ------ TSIDL ----- ------ ------- ------- ------- -------
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
Byte inferior
Bit 7 Bit0
TGATE (solo timer 2): Este bit se usa para habilitar el modo de disparo por
acumulación de tiempo. El bit es leible, borrable y escribible.
TCKPS<1:0>: Bits para el prescaler. Son 2 bits ambos leibles,borrables,escribibles.
T32 (timer 2 y 3), T45 (timer 4 y 5): Selección del modo temporizador de 32 bits. Este
bit posibilita la opción de elegir el modo temporizador de 32 bits si T32=1, TMRx y
TMRy forman un temporizador de 32 bits.
TCS: Selección de fuente de reloj. Cuando este bit se encuentra activado, se utiliza un
reloj externo aplicado a la patita TxCK. En cambio, cuando TCS=0 el reloj interno es el
que se emplea. Es un bit leible, borrable y escribible.
Los bits 7, 2 y 0 no se encuentran implementados y son leidos como 0.
--- TGATE TCKPS<1:0> T32 -------- TCS -------
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
Registro base tipo C TxCON (TIMER 3 y TIMER 5)
Byte superior
Bit 15 Bit8
TON: Activación del temporizador. Es un bit que controla el permiso o la prohibición de
funcionamiento del temporizador.
TSIDL: Detención del temporizador en modo IDLE. Cuando TSIDL=1 indica que el
temporizador estara detenido cuando se encuentra en el modo de espera IDLE,y para
que pueda continuar nuevamente, sera necesario poner un 0. Se trata de un bit leible,
borrable y escribible.
El bit 14 y los bits 12 – 9 no se encuentran implementados y son leidos como 0.
TON ------ TSIDL ---- ------- ------- ------- ------- -------
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
Byte inferior
Bit 7 Bit0
TCKPS<1:0>: Bits para el prescaler. Son 2 bits ambos leibles,borrables,escribibles.
TCS: Selección de fuente de reloj. Cuando este bit se encuentra activado, se utiliza un
reloj externo aplicado a la patita TxCK. En cambio, cuando TCS=0 el reloj interno es el
que se emplea. Es un bit leible, borrable y escribible.
Los bits 7, 3 , 2 Y 0 no se encuentran implementados y son leidos como 0.
--- -------- TCKPS<1:0> ------- -------- TCS -------
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
MODOS DE FUNCIONAMIENTO
Los temporizadores tienen la posibilidad de funcionar en 4 modos:
• Temporizador sincrono.
• Contador Sincrono.
• Contador Asincrono.
• Contaje por disparo por acumulación del tiempo <Gated time accumulation>
El modo de funcionamiento del temporizador vendrá determinado por el valor de los
bits de control TCS (TxCON)<1>), TCYNC (T1CON)<2>) y TGATE(TxCON)<6>).
NOTA: hay una restricción en el modo contador asíncrono que solo permite a los
temporizadores tipo A trabajar en el.
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
MODO TEMPORIZADOR SINCRONO
Los tres tipos de temporizadores antes comentados (tipo A, tipo B y tipo C) pueden
funcionar en este modo. Para ello la señal de reloj utilizada sera la del reloj interno del
sistema (FOSC/4).
La selección del modo temporizador sincrono se lleva a cabo cuando el bit TCS del
registro de control del temporizador (TxCON) tiene valor ‘0’.
MODO CONTADOR SINCRONO
En este modo pueden funcionar los 3 tipos de temporizadores. Para operar en este
modo el bit TCS del registro de control del temporizador (TxCON) debera tener valor 1
para que señal de reloj sea externa. Para los temporizadores tipo A ademas de poner
el valor de TCS=1, el bit TSYNC (TxCON)<2>) debera igualmente tomar valor 1 para
realizar la sincronización con la señal de reloj externa. Los temporizadores trabajando
en modo contador sincrono no funcionaran dentro del modo de reposo(SLEEP).
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
MODO TEMPORIZADOR ASINCRONO
Este modo solo es posible en temporizadores tipo A. La señal de reloj sera la misma
que en el modo contador sincrono, es decir, la externa. La ventaja es que el
temporizador sigue funcionando cuando el dispositivo se encuentra en reposo y que se
puede generar una interrupción que saque al dispositivo de dicho estado, es importante
destacar que podrían producirse resultados no deseados.
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
MODO DE CONTAJE POR DISPARO POR ACUMULACIÓN DE TIEMPO
Este modo de funcionamiento permite que el registro contador del temporizador se
incremente en función de la duración de los pulsos aplicados en la patita TxCK y
utiliza la señal de reloj interna.
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
DIVISOR DE FRECUENCIA (PRESCALER)
Para la configuración del prescaler se utilizaran los bits de control TCKPS <1:0> del
registro TxCON. La tabla muestra los cuatro posibles valores que pueden tomar esos
bits para cada rango de prescaler
El divisor de frecuencia se borrara cada vez que se realice alguna de las siguientes
acciones:
• Escritura en el registro (TMRx).
• TON = ‘0’
• Cualquier Reset del dispositivo.
TCKPS<1:0> PRESCALER
00 1:1
01 1:8
10 1:64
11 1:256
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
LAS INTERUPCIONES DE LOS TEMPORIZADORES
Los temporizadores de 16 bits pueden provocar una interrupción cuando se produce la
coincidencia de periodos o un flanco descendente de la señal externa, dependiendo
del modo de trabajo en el que funcione. Para que los temporizadores sean capaz de
provocar una interrupción en dichas situaciones se debe habilitar el bit de control TxIE
e inicilizar el valor de los bits que indican la prioridad de la interrupción TxIP<2:0> con
un valor diferente de cero.
El bit que indica que se ha producido una interrupción es TxIF y se pone a 1 cuando se
produce alguna de las siguientes condiciones:
• El contador (TMRx) y el registro de periodo (PRx) coinciden y el temporizador no esta
funcionando en modo <<Gated time accumulation>>
• Se detecta un flanco descendente operando en modo <<Gated time accumulation>>
La puesta a ‘0’ del bit TxIF debera realizarse mediante software.
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
TEMPORIZADORES DE 32 BIT
Para formar temporizadores de 32 bits se deben concatenar un temporizador
tipo B y otro tipo C. Los bits de control que se encargan de gobernar el nuevo
temporizador son los asociados al temporizador tipo B, por los que los bits de
registro TxCON del temporizador tipo C, no tienen ningun efecto sobre el
nuevo temporizador.
Para el control de las interrupciones se utilizan los bits (TxIE, TxIF y TxIP
<2:0>) del temporizador tipo C.
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
ESTRUCTURA INTERNA DEL TEMPORIZADOR DE 32 BITS (Timers 2 y 3)
Bus interno 15:0
Escribe TMR2
Lee TMR2
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
Para esta aplicación se utilizaron los temporizadores 1, 2 y 3 para la
generación de señales a diferentes frecuencias y tres diodos LED
conectados al pin menos significativo de los puertos B, E y F para la
visualización de cada temporizador. Para ello se configuraron los
periodos
de cada temporizador con distintos valores y se habilitaron las
Interrupciones.
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
unsigned i=0,j=0,k=0; //Declaración de contadores
void timer1() org 0x1A //Función del Timer1
{
i++; //Incrementar contador i
PORTB=i;
IFS0bits.T1IF=0; //Desactivar bandera de interrupción del Timer1
}
void timer2() org 0x20 //Función del Timer2
{
j++; //Incrementar contador j
PORTE=j;
IFS0bits.T2IF=0; //Desactivar bandera de interrupción del Timer2
}
void timer3() org 0x22 //Función del Timer3
{
k++; //Incrementar contador k
PORTF=k;
IFS0bits.T3IF=0; //Desactivar bandera de interrupción del Timer3
}
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
void main()
{
ADPCFG=0xFFFF; //Configurar puertos como E/S digitales
TRISB=0; //Puerto B como salida
TRISE=0; //Puerto E como salida
TRISF=0; //Puerto F como salida
INTCON1bits.NSTDIS=1; //Deshabilitar interrupciones anidadas
INTCON2bits.ALTIVT=0; //Deshabilitar la AIVT
Prof. Rafael SurgaUNEXPO-Pto.Ordaz MICROPROCESADORES
Temporizadores del DSPIC30F4011/12
TMR1=0; //Inicializar Timer1
TMR2=0; //Inicializar Timer2
TMR3=0; //Inicializar Timer3
PR1=20000; //Definir periodo del Timer1
PR2=40000; //Definir periodo del Timer2
PR3=60000; //Definir periodo del Timer3
IEC0bits.T1IE=1; //Habilitar interrupción por Timer1
IFS0bits.T1IF=0; //Desactivar bandera de interrupción del Timer1
IEC0bits.T2IE=1; //Habilitar interrupción por Timer2
IFS0bits.T2IF=0; //Desactivar bandera de interrupción del Timer2
IEC0bits.T3IE=1; //Habilitar interrupción por Timer3
IFS0bits.T3IF=0; //Desactivar bandera de interrupción del Timer3
T1CONbits.TON=1; //Activar Timer1
T2CONbits.TON=1; //Activar Timer2
T3CONbits.TON=1; //Activar Timer3
while(1)
{}
}