Bonjour à tous,
je cherche actuellement à produire un signal PWM qui puisse contrôler un servomoteur. Pour cela j'utilise un µC 16f873 et travail avec le module CCP.
Je programme en C via CCS.
Au début je me suis rendu compte que le quartz de 20Mhz ne pouvais pas produire d'interruption de moins de 20ms (période maximum pour le signal du servo), je me suis donc rabattu sur 4Mhz avec pour paramètre du timer2 un PRD=16, PR2=249 et PSD=1 ce qui me donne une période de 4ms.
Ensuite si je charge CCP1 avec une valeur de 1 à 249 je modifie le duty cycle par pas de 16µs.
Mais au final je n'obtient rien de correct.
Est-ce que ce bout de code semble bon???
#include <16f873a.h>
#device adc=8
#use delay(clock=4000000)
#fuses NOWDT,XT,PUT,NOPROTECT,BROWNOU T,LVP,NOCPD,NOWRT,NODEBUG
int val=1;
void main()
{
setup_timer_2(T2_DIV_BY_16,249 ,1);
setup_CCP1(CCP_PWM);
while(val<=250)
{
val=val+1;
CCP_1=val;
delay_ms(500);
}
}
Merci d'avance de votre aide
-----