Hola.
Tengo una duda con el PWM del PIC18F2550 y tiene un ADC de hasta 10 bits y salida PWM de hasta 10 bits también.
El problema es que quiero tener una entrada de 10 bits de resolución y una salida de 10 bits de resolución.
Utilizo un LED como visualizador del PWM y un potenciómetro, obviamente.
El código me funciona bien con 8 bits de entrada y 8 de salida por cada 0-255
El LED enciende y apaga con PWM sin problema.
Con 10 bits de entrada y 10 de salida, debería ser igual que con 8-8, pero pasa que el LED pasa por 4 ciclos por cada 1 del potenciómetro.
Según yo, sólo tengo que cambiar el ciclo en el setup del timer 2, pero no me funciona.
Les dejo el código:
Tengo una duda con el PWM del PIC18F2550 y tiene un ADC de hasta 10 bits y salida PWM de hasta 10 bits también.
El problema es que quiero tener una entrada de 10 bits de resolución y una salida de 10 bits de resolución.
Utilizo un LED como visualizador del PWM y un potenciómetro, obviamente.
El código me funciona bien con 8 bits de entrada y 8 de salida por cada 0-255
El LED enciende y apaga con PWM sin problema.
Con 10 bits de entrada y 10 de salida, debería ser igual que con 8-8, pero pasa que el LED pasa por 4 ciclos por cada 1 del potenciómetro.
Según yo, sólo tengo que cambiar el ciclo en el setup del timer 2, pero no me funciona.
Les dejo el código:
PHP:
#include <18f2550.h>
#device adc=10
#use delay(clock=4M)
#fuses NOWDT,INTRC,CPUDIV1
int8 value;
VOID main()
{
setup_adc_ports(an0);
setup_adc(adc_clock_internal);
set_adc_channel(0);
setup_timer_2(t2_div_by_16,1023,1); //si cambio 1023 a 255 y el #device adc=8, funciona bien, pero lo quiero 10-10 <.>
setup_ccp1(ccp_pwm);
for(;;)
{
value=read_adc();
set_pwm1_duty(value);
delay_ms(10);
}
}
Última edición por un moderador: