Uso del timer2 para pwm con el pic 16 f877a con el compilador hi tech

carlosutp 2,236 views 5 slides Jan 02, 2014
Slide 1
Slide 1 of 5
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5

About This Presentation

Jajajaja


Slide Content

Programacion del PIC 16F877A

Buitrón Quispe Carlos E. Página 1

USO DEL TIMER2 PARA PWM CON EL PIC 16F877A con el COMPILADOR HI TECH

Programacion del PIC 16F877A

Buitrón Quispe Carlos E. Página 2



F:\ESCRITORIO DECIMO CICLO \ \fuses exporta y graba\PWM.c
#include <htc.h> // Directivas del Preprocesador
//__CONFIG(0x3F32); //Palabra de configuración para el pic 16F877A
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_ON & BOREN_OFF & LVP_OFF &
CPD_OFF & CP_OFF & DEBUG_OFF & WRT_OFF ); #define _XTAL_FREQ
20000000 //Oscilador Externo de 20MHZ
/* Declaración de variables GLOBALES con inicialización o sin inicialización*/
unsigned int x;

/* Declaración de funciones con o sin parámetros*/
void set_pwm(unsigned int duty); // prototipo de la función

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~ /* FUNCION PRINCIPAL*/
void main(void) // "función main" sin ningún valor de
retorno.
{
/* REGISTROS Y SIMBOLO DEFINIDOS POR EL PROGRAMADOR*/
// ~~~~~~~~~~PASOS PARA CON FIGURAR EL MODULO TIMER 0 ~~~~~~~~~~~
//OPTION_REG=0B10100000;
// voy al BANCO1 y configuro como usare el modulo timer

Programacion del PIC 16F877A

Buitrón Quispe Carlos E. Página 3

// mediante el registro OPTION_REG.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//T0CS - BIT5: Bit selector de fuente para el TMR0
//1 = Clock externo, pin RA4/T0CKI
//0 =Clock interno (CLKOUT)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//T0SE - BIT4: Bit selector de flanco
//1 = Incrementa en flanco de bajada en pin T0CKI
//0 = Incrementa en flanco de subida en pin T0CKI
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//PSA - BIT3: Bits de asignación del preescaler
//1 = Prescaler es asignado al WATCHDOG
//0 = Prescaler es asignado al modulo Timer0*/
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Si el preescaler vale 1:8 quiere decir por cada 8 eventos o 8 pulsos o 8 ciclos
que sucedan
// Solo aumentará una cuenta en un valor de "uno" en el registro TMR0 (y el
valor máximo de
// Cuentas será 8x256).
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ~~~~~~~´PASOS PARA CON FIGURAR EL REGISTRO INTCON ~~~~~~~~~~
// Es el controlador de Interrupciones, utilizar las banderas:
// bit 2 TMR0IF: Señalizador de desbordamiento del temporizador en TMR0
// 1 = se activa por defecto cuando hay desbordamiento de TMR0 (borrar por

Programacion del PIC 16F877A

Buitrón Quispe Carlos E. Página 4

software)
// 0 = TMR0 register did not overflow
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// bit 5 TMR0IE: Bit de permiso de interrupción del TMR0
// 1 = Enables the TMR0 interrupt
// 0 = Disables the TMR0 interrupt
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//TMR0=0X00; //Aseguramos que registro de conteo TMR0 está en 0

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//ADCON1 = 0x06;
// Configuro puerto A, para obtener E/S digital.
//TRISA=0XFF; // configuro puerto A como ENTRADA, PIN RA4: T0CKI se debe
leer el estado. //TRISB=0X00; // configuro puerto B como SALIDA.

TRISC=0X00; // configuro puerto C como SALIDA.
CCP1CON = 0b00001100; // Configurar el modulo CCP, utilizar como modo
PWM
T2CON = 0b00000110; // configurar TIMER2 para funcionar el PWM
PR2 = 255; // valor para calcular en resultado de frecuencia. PR = 0 o 255.
set_pwm(512); // iniciar el PWM en 50%. 1024 niveles - 100%, 512 niveles =
50%
x=0; // inicialización para ver como varia los niveles. (Cantidad de niveles)

while(1)
{
x++;
if(x>=1024) x=0;
set_pwm(x);
__delay_ms(10);
}
}

Programacion del PIC 16F877A

Buitrón Quispe Carlos E. Página 5

void set_pwm(unsigned int duty)
{
CCPR1L = duty>>2;
CCP1CONbits.CCP1X = duty>>1;
CCP1CONbits.CCP1Y = duty;
}


Medida del Frecuencímetro a 1.22Khz
Programa permite medir la intensidad de Luminosidad del Led cuando el Duty cicle llega al 100 el
Led deja de Iluminar y retorna en parpadear hasta alcanzar la máxima iluminación.
Tags