clase 08 - temporizadores

30
Prof. Rafael Surga UNEXPO-Pto.Ordaz MICROPROCESADORES Temporizadores del DSPIC30F4011/12 TEMPORIZADORES

Upload: emeliyen-yepez-de-munoz

Post on 22-Feb-2015

296 views

Category:

Documents


4 download

TRANSCRIPT

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

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

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)

{}

}