Está en la página 1de 9

19/05/2018

TIMERS DEL DSPIC30F

MICROCONTROLADORES‐DSPIC La familia dsPIC30F dispone de hasta cinco temporizadores de 16 bits


, de los cuales algunos poseen la características de poder combinarse
con el objetivo de formar temporizadores de 32 bits.
Los temporizadores ademas de controlar el tiempo autónomamente,
proporcionan la base de tiempo a otros perifericos como el de captura o
el de Comparador/PWM.
TIMERS DEL DSPIC30F 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).
SESION7 • 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
MSc‐ Jacob Astocondor Villar ‐2018V 1

TIPO A (TIMER 1)
TIPOS DE TEMPORIZADORES

Todos los temporizadores de 16 bits de la familia dsPIC Algunas características especiales de este tipo de temporizadores son las
son practicamente identicos en cuanto a su funcionalidad, siguientes:
existiendo minimas diferencias. Se pueden clasificar en  Pueden ser utilizados en modo oscilador LP (Low Power) u oscilador
tres grandes categorias: 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.
1. Temporizadores tipo A (TIMER 1) TIPO B (TIMER 2 – TIMER 4)
2. Temporizadores tipo B (TIMER 2 y TIMER 4) Sus características especificas son las siguientes:
3. Temporizadores tipo C (TIMER 3 y TIMER 5  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.
19/05/2018

TIPO C (TIMER 3 y TIMER 5)

Algunas características especiales de este tipo de


temporizadores son las PR1

siguientes: OSC1 COMPRADOR T1IF

 Pueden concatenarse con los tipo B para formar pin Reloj Ton Preescaler
U1:A
temporizadores de 32 bits. pin
. 1
3
TCKPS1 TCKPS0

OSC2 2 TMR1
TCS 7409
Entrada
 En un dispositivo dado, al menos un temporizador tipo C oin
Pulsos
tiene la capacidad de disparo (trigger) en una conversión T1CK Externos

analogico/digital (A/D

ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO A ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO B
(TIMER 1) (TIMER 2 y TIMER 4)
19/05/2018

ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO B ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO C
(TIMER 2 y TIMER 4) (TIMER 3 y TIMER5)

ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO C


(TIMER 3 y TIMER5)
19/05/2018

REGISTROS DE CONTROL
Registro base tipo A (TxCON)

Byte superior

 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.
 TON: Activación del temporizador. Es un bit que gobierna el permiso o  TSYNC: Sincronización con señal externa de reloj.
la prohibición del funcionamiento del temporizador. En caso de poner
Si TCS=1 y TSYNC=1 entonces se realizara la sincronizacion;
un ‘0’ en dicho bit, el temporizador no funcionara. Dado que es
si TCS=0, este bit sera ignorado.
susceptible de ser modificado, el bit es leible,borrable y escribible.
 TSIDL: Detención del temporizador en modo IDLE. Cuando TSIDL=1
 TCS: Selección de fuente de reloj. Cuando este bit se encuentra
indica que el temporizador estara detenido cuando se encuentra en el
activado, se utiliza un reloj externo aplicado a la patita TxCK. En
modo de espera IDLE,y para que pueda continuar nuevamente, sera
cambio,cuando TCS=0 el reloj interno es el que se emplea. Es un bit
necesario poner un 0. Se trata de un bit leible, borrable y escribible
leible, borrable y escribible.
El bit 14 y los 12 – 9 no se encuentran implementados y son leidos como
 Los bits 7, 3 y 0 no se encuentran implementados y son leidos como
cero.
0.

Registro base tipo B TxCON (TIMER 2 y TIMER 4 Byte inferior

 GATE (solo timer 2): Este bit se usa para habilitar el modo de
TON: Activación del temporizador. Es el encargado de la activación del disparo por acumulación de tiempo. El bit es leible, borrable y
temporizador y dependiendo del valor que posea el bit T32,se activara o escribible.
detendra el temporizador de 16 bit o el de 32 bits,el bit es leible,borrable  TCKPS<1:0>: Bits para el prescaler. Son 2 bits ambos
y escribible. leibles,borrables,escribibles.
Si T32=1 (Modo temporizador de 32 bits)  T32 (timer 2 y 3), T45 (timer 4 y 5): Selección del modo
1= Activa el temporizador de 32 bits. temporizador de 32 bits. Este bit posibilita la opción de elegir el
0= detiene el temporizador de 32bits. modo temporizador de 32 bits si T32=1, TMRx y TMRy forman un
TSIDL: Detención del temporizador en modo IDLE. Cuando TSIDL=1 temporizador de 32 bits.
indica que el temporizador estara detenido cuando se encuentra en el  TCS: Selección de fuente de reloj. Cuando este bit se encuentra
modo de espera IDLE,y para que pueda continuar nuevamente, sera activado, se utiliza un reloj externo aplicado a la patita TxCK. En
necesario poner un 0. Se trata de un bit leible, borrable y escribible. cambio, cuando TCS=0 el reloj interno es el que se emplea. Es un
El bit 14 y los bits 12 – 9 no se encuentran implementados y son leidos bit leible, borrable y escribible.
como 0
Los bits 7, 2 y 0 no se encuentran implementados y son leidos como 0
19/05/2018

Registro base tipo C TxCON (TIMER 3 y TIMER 5)

Byte superior

 TCKPS<1:0>: Bits para el prescaler. Son 2 bits ambos


 TON: Activación del temporizador. Es un bit que controla el permiso leibles,borrables,escribibles.
o la prohibición de funcionamiento del temporizador.
 TCS: Selección de fuente de reloj. Cuando este bit se encuentra
 TSIDL: Detención del temporizador en modo IDLE. Cuando activado, se utiliza un reloj externo aplicado a la patita TxCK. En
TSIDL=1 indica que el temporizador estara detenido cuando se cambio, cuando TCS=0 el reloj interno es el que se emplea. Es un
encuentra en el modo de espera IDLE,y para que pueda continuar bit leible, borrable y escribible.
nuevamente, sera necesario poner un 0. Se trata de un bit leible,
borrable y escribible. Los bits 7, 3 , 2 Y 0 no se encuentran implementados y son leidos
como 0
El bit 14 y los bits 12 – 9 no se encuentran implementados y son leidos
como 0.

MODOS DE FUNCIONAMIENTO MODO TEMPORIZADOR SINCRONO

Los temporizadores tienen la posibilidad de funcionar en 4 Los tres tipos de temporizadores antes comentados (tipo A, tipo B y tipo
C) pueden funcionar en este modo.
modos: Para ello la señal de reloj utilizada sera la del reloj interno del sistema
 Temporizador sincrono. (FOSC/4).
 Contador Sincrono. La selección del modo temporizador sincrono se lleva a cabo cuando el
 Contador Asincrono. bit TCS del registro de control del temporizador (TxCON) tiene valor ‘0’.
 Contaje por disparo por acumulación del tiempo <Gated
time accumulation> 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
El modo de funcionamiento del temporizador vendrá temporizador (TxCON) debera tener valor 1 para que señal de reloj sea
determinado por el valor de los bits de control externa.
TCS (TxCON)<1>), TCYNC (T1CON)<2>) y Para los temporizadores tipo A ademas de poner el valor de TCS=1, el
TGATE(TxCON)<6>). bit TSYNC (TxCON)<2>) debera igualmente tomar valor 1 para realizar
NOTA: hay una restricción en el modo contador asíncrono la sincronización con la señal de reloj externa.
Los temporizadores trabajando en modo contador sincrono no
que solo permite a los temporizadores tipo A trabajar en el. funcionaran dentro del modo de reposo(SLEEP)
19/05/2018

MODO TEMPORIZADOR ASINCRONO MODO DE CONTAJE POR DISPARO POR ACUMULACIÓN DE


TIEMPO

Este modo de funcionamiento permite que el registro


Este modo solo es posible en temporizadores tipo A.
La señal de reloj sera la misma que en el modo contador sincrono, es
contador del temporizador se incremente en función de la
decir, la externa. duración de los pulsos aplicados en la patita TxCK y utiliza
La ventaja es que el temporizador sigue funcionando cuando el la señal de reloj interna.
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

DIVISOR DE FRECUENCIA (PRESCALER) LAS INTERUPCIONES DE LOS TEMPORIZADORES


Los temporizadores de 16 bits pueden provocar una interrupción
Para la configuración del prescaler se utilizaran los bits de
cuando se produce la coincidencia de periodos o  un flanco
control TCKPS <1:0> del registro TxCON.
descendente de la señal externa, dependiendo del modo de
La tabla muestra los cuatro posibles valores que pueden
trabajo  en  el  que  funcione.  Para  que  los  temporizadores  sean
tomar esos bits para cada rango de prescaler
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
El divisor de frecuencia se borrara cada vez que se realice temporizador  no  esta funcionando  en  modo  <<Gated  time
alguna de las siguientes acciones: accumulation>>
• Escritura en el registro (TMRx).  Se detecta un flanco descendente operando en modo
• TON = ‘0’ <<Gated time accumulation>>
• Cualquier Reset del dispositivo.  La puesta a ‘0’ del bit TxIF debera realizarse mediante software
19/05/2018

TEMPORIZADORES DE 32 BIT
ESTRUCTURA INTERNA DEL TEMPORIZADOR DE 32
BITS (Timers 2 y 3
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

EJERCICIO1 Ejemplo1: dsPIC30f4013 COM TEMPORIZADOR


Realizar un programa que parpadear (en un periodo de un segundo),
Para esta aplicación se utilizaron los temporizadores 1, 2 y algunos pines del puerto B, utilizando el modulo del timer1 del dsPIC.
3 para la generación de señales a diferentes frecuencias y .equ 30F4013, 1
tres diodos LED conectados al pin menos significativo de .include "p30f4013.inc"
los puertos B, y F para la visualización de cada config FOSC, FRC ;Trabajar con el Osc Interno
temporizador. config FWDT, WDT_OFF ;deshabilitar el Perro guardian
config FBORPOR, MCLR_EN
Para ello se configuraron los periodos de cada .equ Fcy, #7370000 ;Frecuencia del Osc.Interno
temporizador con distintos valores y se habilitaron las .equiv LEDS, 0x00FF
Interrupciones. .global main ;The label for the first line of code.
.text ;Start of Code section
main:
mov # SP_init,w15 ;Initalize the Stack Pointer
mov # SPLIM_init,w0
mov w0,SPLIM ;Initialize the Stack Pointer Limit Register
nop ;Add NOP to follow SPLIM initialization
19/05/2018

;Conficuarcion de Pines
mov #0x00,w0 ;Port B all como salida Digital
mov w0,TRISB
mov #LEDS,w0 ;Initialize LED pin data to off state
mov w0,LATB
;------------------------------------------------------------------------------------------
;Configuración del Timer para un delay de 1s
clr T1CON ;Turn off Timer1 by clearing control register
clr TMR1 ;Start Timer1 at zero
mov #Fcy/1024,w0 ;Get period register value for 1/2 second
mov w0,PR1 ;Load Timer1 period register
mov #0x8030,w0 ;Get Timer1 settings (1:256 prescaler)
mov w0,T1CON ;Load Timer1 settings into control register
nop
bucle:
btss IFS0,#T1IF ;Check if Timer1 interrupt flag is set
bra bucle ;Loop back until set
bclr IFS0,#T1IF ;Clear Timer1 interrupt flag
com LATB ;cambia de alto a bajo o viciversa
bra bucle ;Retorno al Bucle
;----------------====================================
.end ;End del codigo .asm
19/05/2018

Programa en C : generar onda cuadrada en el pin RB7hacer parpadear un led ,cada 2 segundos en 
dspic30f4013,usando una interrupción interna.
include <30F4013.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES CKSFSM //Clock Switching is enabled, fail Safe clock monitor is enabled
#FUSES NOBROWNOUT //No brownout reset
#device ICSP=1
#use delay(clock=32MHz,crystal=8MHz)
#define LED PIN_A11
#bit RB7=0x06.7 //Identificador para el bit RB7
#INT_TIMER1
void  timer1_isr(void)
{
RB7=~RB7; //Togle RB7
set_timer1(0x0BDC); //carga del TMR1
}
void main()
{
set_tris_b(0b01111111); //configura RB7 como salida el resto como entrada
RB7=0; //Inicializo RB7
setup_timer1(TMR_INTERNAL | TMR_DIV_BY_1, 2);
enable_interrupts(INT_TIMER1);
enable_interrupts(INTR_GLOBAL);
set_timer1(0x0BDC); //Carga del TMR1
while(true); //Bucle infinito hasta interrupción
}

También podría gustarte