TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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!!
-
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() jajaja
-
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!!
-
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