Génération d'un signal MLI

Bonsoir à vous tous;
Lors de la génération du signal MLI à fréquence variable [1kHz,33kHz] et rapport cyclique fixe et vis versa à un rapport cyclique dans [0.1,0.9], on a constaté qu’il y avait un temps (33 ms environ) dans lequel le signal se met à 0 , puis il retourne à son allure.J"espère que vous pourriez m’aider et merci d’avance.
Voici le code:

int a =0;
int b =0;
float xxx;
unsigned long pwm1;

void setup(){
pinMode(10, OUTPUT);

TCCR1A = _BV(COM1A1) | _BV(COM1B1) ;
TCCR1B = _BV(WGM13) | _BV(CS11);

}

void loop(){

a = analogRead(A3);
if ( a > 30 )
{ICR1 = a; }
else if (a < 30) { ICR1 = 30; }
b = analogRead(A0);
if ((b > 105) && (b < 950))
{pwm1 = b;}
else if (b < 105) {pwm1 = 105;}
else if ( b> 950) {pwm1=950;}

xxx = float(pwm1);
xxx = xxx * ICR1;
xxx = xxx / 1023;
OCR1B = int(xxx);

}

Un tutoriel assez complet sur la programmation des PWM :

http://www.locoduino.org/spip.php?article47

Voir aussi ici :
http://www.gammon.com.au/forum/?id=11504
Tous les usages des timers sont traités dont bien évidement la MLI.

Met ton code entre balise code voir ici :