Práctica 3-Timer1-Como Temporizador PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA


ESCUELA DE INGENIERIA ELECTRONICA

LABORATORIO: TIMER 1 COMO TEMPORIZADOR DSPIC33FJ32MC202

OBJETIVO: Configurar el temporizador para generar tiempos muertos o retardos.

INTRODUCCIÓN
Un temporizador es un dispositivo configurable, que permite medir el tiempo. Una vez
que ha transcurrido el lapso de tiempo deseado, se emite una alarma, la cual indica que
ha terminado el tiempo programado.

Diagrama de bloques del timer1


PR1

? T1IF
RA2 osc1 COMPARADOR
Flag de
9 Temporizador
desbordamiento
Y1
CRY STAL
RELOJ Fosc/2
TON
Fosc =0
RA2
10 TCS
TCKPS1TCKPS0 REGISTRO DE
CONTAJE
osc2 Reset
=1 TMR1
RA4 12 Contador
T1CK
Pulsos
externos
TCON1 IFS0
? ? ? ? ?
TON TCS b3 bo
T1IF
TCKPS1 TCKPS0
TGATE TSINC

Para la configuración del temporizador es necesario definir 𝐹𝐶𝑌 (Frecuencia de


Instrucción), la cual está definida por:

𝑓𝑂𝑆𝐶
𝑓𝐶𝑌 =
2
Donde:
FOSC representa la frecuencia de oscilación, la cual está determinada por el oscilador
externo del dsPIC, y que estaría dada por 𝐹𝑂𝑆𝐶 = 20 𝑚ℎ𝑧
Por lo que utilizando un reloj externo de 20 MHz, el dsPIC puede realizar 10 millones de
instrucciones por segundo.
Para generar el retardo, se utilizará el Timer1, el cual es de 16 bits, esto significa que
puede realizar una cuenta desde 0 hasta 65,535 (216 − 1). En el registro T1CON, se

JACOB ASTOCONDOR VILLAR 1


puede utilizar un divisor de frecuencia (Prescaler), el cual se configura con un valor de
prescaler de 256.

Para la práctica, se calculará un retardo de 20 ms:


 𝐹𝑜𝑠𝑐 = 20𝑀𝐻𝑧
𝐹𝑜𝑠𝑐
 𝐹𝑐𝑦 = 2
= 10𝑀𝐻𝑧

 Prescaler=256
𝑐𝑦 𝐹 10,000,000
Entonces: el ciclo máquina de incrementos será: 𝐹′𝑐𝑦 = 256 = 256
= 39062.5 𝐻𝑧

Por lo que podemos calcular el valor deseado del temporizador de la siguiente


manera:
El valor a cargar en el registro periódico es
1000ms---39065.5
20ms-----x
20 ∗ 39065.5
𝑥= = 781.25
1000
El valor de 781.25, se cargará en el temporizador, para qué una vez que haya llegado
a este valor se emitirá una alarma.
Para la configuración de la frecuencia de oscilación, se dividió mediante el prescaler,
pero cabe hacer mención que existe dentro del dsPIC un multiplicador (PLL) que
también permite incrementar la frecuencia de oscilación.

𝟐
Formula: 𝑻𝒎𝒆𝒅𝒊𝒓 = (𝑭 ) ∗ 𝑷𝑺 ∗ (𝑻𝑴𝑹𝟏 − 𝑷𝑹𝟏)
𝑶𝑺𝑪

1. MATERIAL
 1 dsPIC33FJ128GP802.
 Resistencia de 10 kO.
 1 Cristal de 20MHz.
 2 Capacitores de 30ρF (cerámicos).
 1 Capacitor de 4.7 µF (tantalio de preferencia).
 1 Osciloscopio virtual
 1 Fuente de CD de 3.3Volts
2. ACTIVIDADES
1. Armar el sistema mínimo del dsPIC. ( PROTEUS)
2. Cargar al dsPIC el programa proporcionado en la práctica.
3. Visualizar en osciloscopio la salida (RB13).
4. Realizar el cálculo para generar una onda cuadrada con frecuencia de 25 Hz
(periodo de 40 ms  20 ms en estado alto y 20 ms en estado bajo).

JACOB ASTOCONDOR VILLAR 2


3. DESARROLLO DEL DESCRIPCIÓN DEL PROGRAMA
El código de programa que a continuación se presenta, nos permite generar un cambio
de estado 0 ó 1 lógico en la salida.
Este cambio estará determinado por el valor que sea cargado en el registro del
temporizador, con lo que podemos obtener una salida que esté cambiando su nivel a
determinado tiempo.
Instrucciones
#include <p33FJ32mc202.h> // Incluir libreria del pic a utilizar

// * * * * BITS DE CONFIGURACION * * * * * * *
_FBS ( RBS_NO_RAM & BSS_NO_FLASH & BWRP_WRPROTECT_OFF );
_FSS ( RSS_NO_RAM & SSS_NO_FLASH & SWRP_WRPROTECT_OFF );
_FGS ( GSS_OFF & GWRP_OFF );
_FOSCSEL ( IESO_OFF & FNOSC_PRI );
_FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
_FPOR ( ALTI2C_OFF & FPWRT_PWR128 );
_FICD ( JTAGEN_OFF & ICS_PGD1 );

void retardo_ms (void); // Definen las funciones


int main (void);
// * * * P R O G R A M A * * *
int main(void) {
TRISB=0B1101111111111111; // Configura bit13 del puerto B como salida
while(1){
LATB=0B0010000000000000; // Pone a '1' bit13
retardo_ms(); // Llama función de retardo
LATB=0X0000; // Pone a '0' bit13
retardo_ms(); // Llama función de retardo
}
}
//**** Función Retardo ****************
void retardo_ms( void ){ // Función de retardo
T1CON = 0; // Resetear el timer
TMR1 = 0;
IPC0bits.T1IP = 1; // Interrupción con prioridad 1
PR1 = 781.25; // Valor en el registro (retardo de 20ms)
IFS0bits.T1IF = 0; // Interrupción cuando llega a 0
IEC0bits.T1IE = 0;
T1CON = 0X8030; // Prescaler 1:256
while(IFS0bits.T1IF==0);
}

Simulación del Sistema

R1
10k
U1
A
1 4
MCLR RB0/CN4/RP0/C2IN-/AN2/EMUD1/PGD1
20 5
VCAP/VDDCORE RB1/CN5/RP1/C2IN+/AN3/EMUC1/PGC1 B
6
RB2/CN6/RP2/AN4
2 7
1

RA0/CN2/VREF+/AN0 RB3/CN7/RP3/AN5 C
3 11
RA1/CN3/VREF-/AN1 RB4/CN1/RP4/SOSCI
X1 9
RA2/CN30/CLKI/OSCI RB5/CN27/RP5/ASDA1/EMUD3/PGD3
14
D
10mhz 10 15
RA3/CN29/CLKO/OSCO RB6/CN24/RP6/ASCL1/EMUC3/PGC3
12 16
RA4/CN0/T1CK/SOSCO RB7/CN23/RP7/INT0
2

17
RB8/CN22/RP8/SCL1/PWM2H1/TCK
18
RB9/CN21/RP9/SDA1/PWM2L1/TDO
21
RB10/CN16/RP10/PWM1H3/TDI/EMUD2/PGD2
22
RB11/CN15/RP11/PWM1L3/TMS/EMUC2/PGC2
23
RB12/CN14/RP12/PWM1H2
24
RB13/CN13/RP13/PWM1L2
28 25
AVDD RB14/CN12/RP14/PWM1H1
27
AVSS RB15/CN11/RP15/PWM1L1
26 D1
.
DSPIC33FJ32MC202

JACOB ASTOCONDOR VILLAR 3


4. Programa desarrollado con el MPLABX

#include <p33FJ32mc202.h> // Incluir libreria del pic a utilizar


#include"config2.h"
void retardo_ms (void); // Definen las funciones
int main (void);
// * * * P R O G R A M A * * *
int main(void) {
TRISB=0B1101111111111111; // Configura bit13 del puerto B como salida
while(1){
LATB=0B0010000000000000; // Pone a '1' bit13
retardo_ms(); // Llama función de retardo
LATB=0X0000; // Pone a '0' bit13
retardo_ms(); // Llama función de retardo
}
}
//**** Función Retardo ****************
void retardo_ms( void ){ // Función de retardo
T1CON = 0; // Resetear el timer
TMR1 = 0;
IPC0bits.T1IP = 1; // Interrupción con prioridad 1
PR1 = 781.25; // Valor en el registro (retardo de 20ms)
IFS0bits.T1IF = 0; // Interrupción cuando llega a 0
IEC0bits.T1IE = 0;
T1CON = 0X8030; // Prescaler 1:256
while(IFS0bits.T1IF==0);
}

5. Generar una onda cuadrada con una frecuencial de 1kHz, en el pin RB7, debe considerar
el TIMER1 del dsPIC33FJ32MC202, considere un cristal externo de 𝐹𝑜𝑠 = 4𝑀𝐻𝑧;
considere un prescaler de 𝑃𝑠 = 256
6. Verificar el funcionamiento del sistema mediante simulación

JACOB ASTOCONDOR VILLAR 4

También podría gustarte