TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micro_pepe en 22 de Julio de 2006, 16:06:10

Título: Generar dos señales PWM
Publicado por: micro_pepe en 22 de Julio de 2006, 16:06:10
Hola, estoy haciendo un programa de prueva que genere dos señales PWM, pero no consigo un ciclo del 100%.

El retardo simula las instrucciones que formarian el resto del programa.

Código: [Seleccionar]
# include <16F876a.h>
# use delay(clock=4000000)
# fuses HS,NOWDT,NOPUT,PROTECT,NODEBUG,NOBROWNOUT,NOLVP,CPD

# USE FAST_IO(A)
# USE FAST_IO(B)
# USE FAST_IO(C)
long var1, var2;

void main(){
Setup_Timer_2(T2_DIV_BY_1,124,2);
Setup_CCP1(CCP_PWM);
Setup_CCP2(CCP_PWM);

var1=100;
var2=1023;

While(1){
Set_PWM1_Duty(var1);
Set_PWM2_Duty(var2);
delay_ms(100);
}
}

Saludos y gracias.
Título: Re: Generar dos señales PWM
Publicado por: jfh900 en 22 de Julio de 2006, 16:34:22
Por que no sacas los set_pwm fuera del bucle while. Si no cambias los ciclos sacalo fuera.

Un saludo
Título: Re: Generar dos señales PWM
Publicado por: micro_pepe en 22 de Julio de 2006, 16:39:55
Hola, hace exactamente lo mismo. ¿No será el proteus? estoy usando la version 6.7

Saludos y gracias.
Título: Re: Generar dos señales PWM
Publicado por: jfh900 en 22 de Julio de 2006, 16:50:50
Puedes poner una imagen del osciloscopio con los PWM's

Saludos
Título: Re: Generar dos señales PWM
Publicado por: micro_pepe en 22 de Julio de 2006, 17:05:36
Hola, esta es la imagen:

(http://img161.imageshack.us/img161/7572/dibujoef0.gif)

la señal de arriba es la pwm1 y la de abajo es la pwm2

Saludos y gracias.
Título: Re: Generar dos señales PWM
Publicado por: jfh900 en 22 de Julio de 2006, 18:03:48
Ahora mismo no tengo delante el CCS pero parece ser que no esta definido el PWM a 10 bits.

Un saludo
Título: Re: Generar dos señales PWM
Publicado por: fastyx en 23 de Julio de 2006, 10:13:13
te cuento lo que me paso a mi: estuve probando con diferentes tipos de variables y opte por usar int8 con el valor de periodo de 255 en el timer2

lo que hace es esto : en el modulo de la variable , el 0 representa  0 de duty y el 255 el 100 del duty . tiene que llegar. Si usas 124 en el timer 2 ese va a ser tu 100 %.

otro dato : cuidado con el oosciloscopio ya que yo tengo uno ( real ) y para algunas frecuencias no puedo visualizar la totalidad de la variacion del duty sin retocar el triger ( o no veo parte del duty bajo  o  no veo parte del alto)

otra cosa que podes hacer es probar con distintos valores del duty y de periodo del timer 2 pero sin usar variables, cargale numeros al valor del duty y fijate que hace. pero despues tenes que adaptar esos valores a los lacances de la variable.
Título: Re: Generar dos señales PWM
Publicado por: micro_pepe en 23 de Julio de 2006, 15:49:07
Hola, asunto solucionado, he probado a poner esto:  Setup_Timer_2(T2_DIV_BY_1,255,1);
y puedo regular el duti-cicle del 0 al 100% con una variable de tipo int16.

Gracias por vuestra ayuda.