Blog Archive

Con la tecnología de Blogger.

TIMERs

Temporizadores

Una de las labores más habituales en los programas de control de dispositivos suele ser determinar intervalos concretos de tiempo, y recibe el nombre de temporizador (TIMER) el elemento encargado de realizar esta función.También suele ser frecuente contar los impulsos que se producen en el exterior del sistema, y el elemento destinado a este fin se denomina contador.
  
Los TIMERS o Temporizadores son módulos integrados en el controlador que permiten realizar cuentas tanto de eventos internos como externos.

Tipos de Temporizadores:

Los dsPIC  presenta tres tipos de temporizadores; los de TIPO A ,TIPO B y EL TIPO C.
 

TIMER 1 (Tipo A):





Ejemplo1: dsPIC30f2010_Timerled.s

/****************************************************************/
// Realizar un programa que parpadear(en un periodo de un segundo) algunos
// pines del puerto E, utilizando para ello el cristal Interno y el modulo del
// timer 1 del dsPIC.
/****************************************************************/

.equ __30F2010, 1
.include "p30f2010.inc"

config __FOSC, FRC ;Trabajar con el Osc Interno
config __FWDT, WDT_OFF ;deshabilitar el Perro guardian
config __FBORPOR, MCLR_EN

.equ    Fcy, #7370000 ;Frecuencia del Osc.Interno
.equiv LEDS, 0x0007
;.................................................................................................................
;.................................................................................................................
.global __reset           ;The label for the first line of code.
.text             ;Start of Code section
 __reset:
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        
;-----------------------------------------------------------------------------------------------------------------
;Conficuarcion de Pines
             mov   #0x00,w0        ;Port E all como salida Digital
             mov    w0,TRISE
             mov    #LEDS,w0       ;Initialize LED pin data to off state
             mov    w0,LATE           
;-----------------------------------------------------------------------------------------------------------------
;Configuracion 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
;-----------------------------------------------------------------------------------------------------------------    buclePrincipal:  
btss  IFS0,#T1IF     ;Check if Timer1 interrupt flag is set
bra   buclePrincipal ;Loop back until set
bclr  IFS0,#T1IF     ;Clear Timer1 interrupt flag
com   LATE
bra   buclePrincipal    ;Retorno al Bucle 
;----------------------------------------------------------------------------------------------------------------- 
.end                ;End del codigo .asm