Sei sulla pagina 1di 4

MICROCONTROLADORES

UNIVERSIDA NACIONAL DEL CALLAO


FACULTAD DE INGENIERÍA ELECTRICA Y ELECTRÓNICA
DEPARTAMENTO DE INGENIERÍA ELECTRONICA

MICROCONTROLADORES dcPIC30F4013

Tema: TIMERS

El dsPIC30F6010 contiene 5 temporizadores de 16 bits denominados TIMER1,


TIMER2,…TIMER5.
Vamos a utilizar el TIMER1

Anotaciones realizadas en aula

REGISTRO DE CONTROL DEL TIMER1

DIAGRAMA DE BLOQUES DEL TIMER1 simplificado

Para esto seleccionamos en Timer 1, que es un Timer de 16 bits,


Se tiene 3 tipos distintos de Timers , Este es el caso del dsPIC, en el que vas al datasheet del
Timer y te encontras que ocurre eso. El Timer 1 es un Tipo A.

Las indicaciones de como iniciar el Timer1.

El resumen es:
 Encender el Timer1. (Ponerlo a 1)
 Elegir el preescaler. (Ponerlo en 01)
 Seleccionar de donde proviene el clock. (Dejarlo en 0)
 Seleccionar si asincrono o sincrono. (Dejarlo en 0)
 Cargar el valor a comparar en PR1. (Cargarle 0x383B)

Prof: MSc. Jacob Astocondor 1


MICROCONTROLADORES

 Activar interrupciones si es necesario. (Dejarlo en 0)

Una diferencia que habrán notado es que existe un registro PR1, este registro lo que hace es
compararse con el valor del Timer y al momento en que ambos son iguales, se produce la
interrupción y además se resetea el Timer.
El preescaler elegir 1:8, ya que las demás opciones eran: 1:1 , 1:64, 1:256
Para empezar el desarrollo del código, debemos tener en cuenta las posibilidades del
temporizador y a partir de ahí estudiar las posibilidades para llevarlo a cabo.
Lo primero que vamos a hacer es mirar cuales son las máximas temporizaciones de interrupción
para el reloj interno seleccionado:

 El timer1 se desborda cuando los valores de los registros TMR1 y PR1 coinciden, es
decir cuando pasamos del valor precargado en TMR1 a FFFFh=65536d (valor por
defecto del registro PR1).
 Reloj interno de 4 MHz (elegido por nosotros)  Tcy = 250ns = 1/4 MHz (Tiempo de
Ciclo de instrucción).
 El timer1 dispone de los siguientes Prescaler: 1, 8, 64, 256. Con los cuales podemos
calcular las máximas temporizaciones de interrupción para reloj interno de 4 MHz,
atendiendo a la siguiente ecuación:

4
𝑇𝐶𝑌 = 𝐹
𝑜𝑠𝑐

T_interrupción _máximo = 250ns x Prescaler x (65536-0)  TMR1=0 y PR1=65536.


Prescaler 1  T_interrupción = 16,38ms
Prescaler 8  T_interrupción=0.131s

Prescaler 64 T_interrupción=1.048s
Prescaler 256 T_interrupción=4.194s

 El tiempo que tarda el temporizador (registro TMR1) en incrementar su cuenta en “1”


se calcula con la siguiente ecuación:

 El número total de incrementos del temporizador (registro TMR1) necesarios para


llegar a la temporización deseada se calcula con la siguiente ecuación:

 De todo lo anterior deducimos que la temporización de interrupción del timer1 atiende a


la siguiente ecuación (la misma que para el cálculo de las temporizaciones máximas):

Prof: MSc. Jacob Astocondor 2


MICROCONTROLADORES

Configuracion del TMIR1


MOV #0x8010,W0 ;T1ON=1 y Preescaler 1:8
MOV W0,T1CON
MOV #0x383B,W0
MOV W0,PR1

DESARROLLO DEL PROGRAMA


;** ENCENDER APAGAR UN LED CONSTANTEMENTE CADA UN SEGUNDO

.equ __30F4013, 1
.include "p30f4013.inc"
config __FOSC, XT ;Trabajar con el Osc Interno
config __FWDT, WDT_OFF ;deshabilitar el Perro guardian
config __FBORPOR, MCLR_EN

.global __main ; La etiqueta para la primera línea de código.


.text ; Inicio de la sección Código
_main:
;Configuracion de Puertos
mov #0x0000, W0
mov W0, LATB ; Limpio los valores de los latch
mov W0, TRISB ; Ponemos todos los pines de salida RB0-15
mov W0, ODCB ; Se configuran los pines para no trabajar como
; como colector abierto.
; Configuracion del Timer
MOV #0x8010,W0 ;T1ON=1 y Prescaler 1:8
MOV W0,T1CON
MOV #0x383B,W0 ;Cargo valor en PR1
MOV W0,PR1
BCLR IFS0,#T1IF ;Borro Flag
............................................
; Programa Principal
;..............................................................................

Loop:
BTSS IFS0,#T1IF
BRA Loop
BCLR IFS0,#T1IF ;Borro Flag
BTG LATB,#0 ; Alterno el valor de RB0
BRA Loop ; Inicio nuevamente

;----------------- Fin del codigo ---------------------------------------------


.end

EJERCICIOS para cálculos del TIMER1

1. Se generará una señal de onda cuadrada de 1 KHz en el pin RB0 de PORTB del
dsPIC30F4013 con reloj de 120 MHz. Temporizador1 (tipo A) Utilizado para generar
esta señal.
Calcular los valores de PR1 y TCKPS para lograr esto.

𝟒
Solution: 𝑻𝒓𝒆𝒕𝒂𝒓𝒅𝒐 = ∗ 𝑷𝒔 ∗ 𝑷𝑹𝟏
𝒇𝒐𝒔𝒄

Prof: MSc. Jacob Astocondor 3


MICROCONTROLADORES

Periodo de la onda cuadrada a generar


T = 1/f = 1/1000 = 1 mS
Delay Time= tiempo a temporizar = T/2 = 0.5 mS

Timer clock= frecuencia de ciclo maquina = Xtal / 4 = 120MHz / 4 = 30 MHz


Timer cycle time = tiempo de ciclo maquina= 1/30MHz = 33 nS
Delay Count = Delay Time/ Timer Cycle Time
= 0.5mS / 33nS = 15151

El conteo de retardo puede ajustarse mediante los valores de PR1 y TCKPS

Establecemos TCKPS = 1:1 y PR1= 15151

2. Escribir una secuencia de instrucciones para configurar el temporizador para lo anterior


ejemplo.
; Configuración de puerto
mov #0x0000, Wo
mov Wo, TRISB
; Configuracion del timer
mov # 15151d, Wo
mov Wo, PR1
mov #0x8000 ,W0 ;
MOV w0, T1CON
Nota:
REGISTOR DE CONFIGURACUON DEL TIMER1 T1CON
1 0 0 0 0 0 0
TON - TSIDL - - - - - TGATE TCKPS<1:0> - TSYNC TCS -

REGISTRO de estado de flag de interrupciones: IFS0

T1IF

Problema 3:
Repita los dos ejemplos anteriores para una aplicación para una frecuencia de 8 KHz

Prof: MSc. Jacob Astocondor 4

Potrebbero piacerti anche