TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx en 05 de Enero de 2006, 14:20:00

Título: NO ANDA EL PWM(UFF)
Publicado por: fastyx en 05 de Enero de 2006, 14:20:00
#include "D:Documents and Settingsclaudio grinman.CDB-UZRE64WZDVIEscritorioprogramacionpwmmiopwmadc2.h"
#include <16F877A.h>
#device adc=8
#use delay(clock=4000000)
#fuses NOWDT,XT, NOPUT, NOPROTECT, BROWNOUT, LVP, NOCPD, NOWRT, NODEBUG

void ini()
{

   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DIV_BY_4,24,1);  //configura timer 2 con su prescaler
   setup_ccp1(CCP_PWM);              // Configura CCP1 como  PWM
   setup_port_a(ALL_ANALOG);
}

void main(){
 while( TRUE ) { //funcion para que lea del adc y lo ponga como argumento
                  //en pmw_duty()

set_pwm1_duty (read_adc ());// coloca en el duty lo que lea el adc
  }
}

inyecto en la pata 2 del pic (an0)tension entre 0 y 5 volts,pretendo leer en la 17 (rc2/ccp1).no pasa nada(pero tengo oscilacion en las patas del cristal)
desde ya gracias!!
Título: RE: NO ANDA EL PWM(UFF)
Publicado por: Nocturno en 06 de Enero de 2006, 01:35:00
Veo que has metido todas las funciones de inicialización en una función llamada ini(), lo cual queda muy limpio, ... pero tendrás que llamarla desde el main() jajajaMuchas risas
Título: RE: NO ANDA EL PWM(UFF)
Publicado por: fastyx en 06 de Enero de 2006, 09:19:00
la verdad no lo hice de limpio sino de burro jajajajaja

otra pregunta a ver si puedo fijar conceptos:

si por ejemplo el pic tiene que encender y apagar un led como testigo de que esta vivo,(llamese funcion x) y aparte leer una entrada analogica y sacar un pwm(llamese funcion pwm),como se ordenan las funciones en relacion al main()

otra:todas las entradas de datos en alguna pata del pic necesitan solicitud de interrupcion?

desde ya gracias!!! son unos capos!!
Título: RE: NO ANDA EL PWM(UFF)
Publicado por: antoniof en 06 de Enero de 2006, 12:00:00
Buenas.

Casi siempre en todas las aplicaciones, en la función main hay un bucle infinito:

void main(){

while(1){ // bucle infinito
  x();//Parpadea el LED
  pwm(); // actualiza el PWM
}

}

No todas la entradas necesitan de interrupción. Sólo la necesitan aquellas entradas que necesiten una atención inmediata del PIC