TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: aprada en 17 de Mayo de 2007, 14:32:03

Título: PWM en pic 16f877A
Publicado por: aprada en 17 de Mayo de 2007, 14:32:03
para comenzar tengo u nprograma que no me hace nada de nada .... y he leido varios ejemplos y los que realizan los ejemplos dicen que funcionana muy bn aqui les va mi programa si peude ayudarme :

#include <16F877A.h>
#device *=16
#fuses HS,NOWDT,NOPROTECT,NOLVP
//#priority rda,ad,rtcc,timer1,timer2
#use delay(clock=20000000)
//#use fast_io(a)
//#use fast_io(b)

void main()
{
   set_tris_c(0X00);
   setup_ccp1(CCP_PWM);                          // Configura CCP1 como PWM
   set_pwm1_duty(0);   // Frecuencia 0 de partida
   while(1)
   {
   set_pwm1_duty(16);
   setup_timer_2(T2_DIV_BY_16,32,1);      // f=10kHz (T=50us)
   }
}
Título: Re: PWM en pic 16f877A
Publicado por: micro_cadaver en 17 de Mayo de 2007, 14:35:23
hola andres jejeje que significa esto: #device *=16    :-)
Título: Re: PWM en pic 16f877A
Publicado por: aprada en 17 de Mayo de 2007, 14:37:49
como la porgaramacio nes en el CCS es para epecificar la familia 16 de pic :-/ :-/
Título: Re: PWM en pic 16f877A
Publicado por: micro_cadaver en 17 de Mayo de 2007, 14:52:44
pero si ya estas colocando el nombre del pic, no es necesario, te sale error si lo sacas del codigo?
Título: Re: PWM en pic 16f877A
Publicado por: aprada en 17 de Mayo de 2007, 14:54:05
bueno eso algo sin importancia lo que nesecito es ayuda con el PWM ..... help .. lo mas rapido profavor
Título: Re: PWM en pic 16f877A
Publicado por: aprada en 17 de Mayo de 2007, 15:02:52
encontre el error del codigo .... aqui le pongo el que funcion bn sacando un senal de 18.9KHz .... pues espero una senal  de 20K pero esta esta bn ... para mi aplicacion
#include <16F877A.h>
//#device *=16
#fuses HS,NOWDT,NOPROTECT,NOLVP
//#priority rda,ad,rtcc,timer1,timer2
#use delay(clock=20000000)
//#use fast_io(a)
//#use fast_io(b)


void main()
{
   set_tris_c(0X00);
   setup_ccp1(CCP_PWM);                          // Configura CCP1 como PWM
   set_pwm1_duty(0);   // Frecuencia 0 de partida
   setup_timer_2(T2_DIV_BY_16,16,1);
   while(1)
   {
   set_pwm1_duty(8);
        // f=10kHz (T=50us)
   }
}
Título: Re: PWM en pic 16f877A
Publicado por: micro_cadaver en 17 de Mayo de 2007, 17:56:04
 :mrgreen: cual era el error? jejeje
Título: Re: PWM en pic 16f877A
Publicado por: PalitroqueZ en 18 de Mayo de 2007, 13:59:47
como la porgaramacio nes en el CCS es para epecificar la familia 16 de pic :-/ :-/

concretamente sirve para seleccionar el ancho del puntero con el que trabajará el micro en cuestión. (pág 81 ccs_c_manual.pdf)

Esto no hace colocarlo, ya el ccs lo activa por defecto de acuerdo a la familia.

y es cierto no tiene que ver con el problema de aprada
Título: Re: PWM en pic 16f877A
Publicado por: aprada en 22 de Mayo de 2007, 15:39:29
el en el codigo era que estaba haciendo setup del timer 2 en while 1 entonces eso no dejaba que el pwm funcionara bn .... lo saque del while 1 y funciono muy bn
void main()
{
   set_tris_c(0X00);
   setup_ccp1(CCP_PWM);                          // Configura CCP1 como PWM
   set_pwm1_duty(0);   // Frecuencia 0 de partida
   setup_timer_2(T2_DIV_BY_16,16,1); // este es el stup que estaba ahciendo dentro del while !!
   while(1)
   {
   set_pwm1_duty(8);
        // f=10kHz (T=50us)
   }
}