Bonjour à tous,
Je travaille actuellement sur un projet pour lequel je dois configurer un piC18f452. Le but est de faire fonctionner un moteur à courant continu à l'aide d'un joystick.
Je commence donc par faire l'acquisition des données sur la position du joystick en faisant une convertion analogique numérique.
Puis j'utilise les valeurs obtenues pour faire varier un signal de pwm qui est mis à l'entrée du moteur en passant par un pont H pour faire varier sa vitesse et son sens.
Problème ! Impossible d'obtenir un signal de PWM. Je suis novice en CCS alors je solicite votre aide pour savoir quelles erreurs auraient pu se glisser dans mon code :
Code:#include <18f452.h> #fuses HS,NOPROTECT,NOWDT,NOLVP #use delay(clock=4000000) #define sortie_sens_moteur_1 output_bit(PIN_C1,1) #define sortie_sens_moteur_0 output_bit(PIN_C1,0) //---------------------------------------------------------------------------- // initialisation des bits de configuration matérielle void main (void); //---------------------------------------------------------------------------- // Main routine //---------------------------------------------------------------------------- void main () { /* 0V ==> 5V codé sur 1023 byte soit un pas de 5mV*/ int16 value; int16 pwm_osc; set_tris_c(0); //ADC Version CCS setup_ccp1(CCP_PWM); // Configure CCP1 comme PWM setup_timer_2(T2_DIV_BY_4,0xFF,10); setup_adc(ADC_CLOCK_INTERNAL); //enables the a/d module //and sets the clock to internal adc clock setup_adc_ports(AN0_AN1_AN2_AN3_AN4); //sets all the adc pins to analog set_adc_channel(0); //the next read_adc call will read channel 0 delay_us(10); // un petit délai est nécessaire après l'activation de la channel // et avant de lire value=read_adc(); //starts the conversion and reads the result //and store it in value setup_ccp1(CCP_PWM); // Configure CCP1 comme PWM setup_timer_2(T2_DIV_BY_4,0x64,10); if(value> 511){ pwm_osc=(value2-511)>>1; set_pwm1_duty(pwm_osc); sortie_sens_moteur_0; } else { pwm_osc= 100-(value2>>1); set_pwm1_duty(pwm_osc); sortie_sens_moteur_1; } while(1); } // end main
Ce forum m'a déjà aidé plusieurs fois et je vous serais vraiment très reconnaissant si vous pouviez m'aider un peu une nouvelle fois.
Alors d'avance merci à toute personne qui se penchera sur mon problème.
-----