5 Timers Del Dspic30f.pdf

  • Uploaded by: bernardo
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 5 Timers Del Dspic30f.pdf as PDF for free.

More details

  • Words: 2,180
  • Pages: 35
MICROCONTROLADORES-DSPIC

TIMERS DEL DSPIC30F SESION5

MSc- Jacob Astocondor Villar -2016B

1

TIMERS DEL DSPIC30F 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. Cada temporizador/contador de 16 bits dispone de los siguientes registros que son susceptibles de leerse y escribirse. • TMRx: • PRx: • TxCON:

Registro Contador del Temporizador (16 bits). Registro de periodos asociados al temporizador (16 bits). 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

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

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.

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

PR1

OSC1 pin

COMPRADOR Ton

Reloj

Preescaler

U1:A

pin

.

3

TMR1

2

OSC2 TCS

oin

T1CK

TCKPS1 TCKPS0

1

Entrada Pulsos Externos

7409

T1IF

ESTRUCTURA INTERNA DEL TEMPORIZADOR TIPO A (TIMER 1)

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

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

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

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

REGISTROS DE CONTROL Registro base tipo A (TxCON) Byte superior

 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.

 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.

Registro base tipo B TxCON (TIMER 2 y TIMER 4

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

Byte inferior

 GATE (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

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

 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.

 TCKPS<1:0>: Bits para el leibles,borrables,escribibles.

prescaler. Son

2 bits

ambos

 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

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 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.

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)

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

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.

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.

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 <>  Se detecta un flanco descendente operando en modo <>  La puesta a ‘0’ del bit TxIF debera realizarse mediante software

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

ESTRUCTURA INTERNA DEL TEMPORIZADOR DE 32 BITS (Timers 2 y 3

EJERCICIO1 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.

Ejemplo1: dsPIC30f4013 COM TEMPORIZADOR Realizar un programa que parpadear (en un periodo de un segundo), algunos pines del puerto B, utilizando el modulo del timer1 del dsPIC. .equ __30F4013, 1 .include "p30f4013.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, 0x00FF .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

;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

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 }

hacer parpadear un led cada 2 segundos en cualquier puerto de un dspic30f4013, usando una interrupcion interna.

Related Documents

5 Timers Del Dspic30f.pdf
November 2019 24
Timers
May 2020 8
Timers Lecture
November 2019 14
A Series Timers
November 2019 15
Old Timers Menu
April 2020 14

More Documents from "Angela"