HOLA A TODOS , ME ENCUENTRO DESARROLLANDO UN PROYECTO EN DONDE DEBO ADQUIRIR DATOS POR UN CONVERZOR ANALOGO DIGITAL Y APARTIR DE LOS MISMOS DEBO CONTROLAR UN SERVO , MI PROBLEMA ES QUE ESA ADQUISICION DEBE HACERCE A 20MHZ Y PARA CONTROLAR LOS SERVO DEBO GENERAR UNA FRECUENCIA DE 50HZ DEBIDO A QUE TAMBIEN DEBO USAR UNA LCD NO PUEDO GENERAR LOS 50HZ SOLO PRENDIENDO Y APAGANDO UN PIN DEL INTEGRADO , ADEMAS QUE DEBO CONTROLAR LOS 2 SERVOS A LA VEZ, PARA ESO HE CONCLUIDO QUE DEBO USAR EL TIMER DEL MICRO PERO MI PROBLEA ES QUE
CON EL CRISTAL DE 20MHZ NO HE PODIDO GENERAR ESA FRECUENCIA DE 50HZ , LES AGRADECERIA CUALQUIER AYUDA EN LA CONFIGURACION DEL TIMER
ANEXO MI CODIGO POR SI ALGUIEN TIENE OBSERVACIONES MUCHAS GRACIAS
include <16F873a.H>
#DEVICE ADC=10
#fuses hs,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP
#use Delay(Clock=20000000)
#include <lcd.c>
#use fast_io(B)
#byte PORTB=6
main()
{
int val,i;
float val2;
lcd_init();
setup_ccp1(CCP_PWM); // Configura CCP1-2 como PWM

setup_timer_2(T2_DIV_BY_4,255,1);
setup_ccp2(CCP_PWM);
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
setup_adc(adc_clock_div_32); // Selecciona Reloj
setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);
while(1)
{
set_adc_channel( 0 );
delay_us(10);
val=read_adc();
val=val2/5 ;
set_pwm2_duty(val);
printf(lcd_putc,"\fV= %3.4i UNO\n",val);
set_adc_channel( 1 );
delay_us(10);
val2=read_adc();
set_pwm1_duty(val2);
printf(lcd_putc,"V= %3.4f DOS\n",val2);