TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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)
}
}
-
hola andres jejeje que significa esto: #device *=16 :-)
-
como la porgaramacio nes en el CCS es para epecificar la familia 16 de pic :-/ :-/
-
pero si ya estas colocando el nombre del pic, no es necesario, te sale error si lo sacas del codigo?
-
bueno eso algo sin importancia lo que nesecito es ayuda con el PWM ..... help .. lo mas rapido profavor
-
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)
}
}
-
:mrgreen: cual era el error? jejeje
-
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
-
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)
}
}