je vous générer un signal PWM en utilisant2 timers
timer 1 mesure les periodes last_T. puisque c'est un signal du secteur donc last_T qui représente une demi periode elle
est entre 0 et 2500
timer3 fait plusieurs overFloW considéré comme des pas jusqu'à atteindre % last_T chaque pas est d'une valeur : 0xFF=255
**********Code de la fonction d'interruption Zéro CroSS:
//lire la valeur last-T
last_T = (T1CNTL &0x00FF)|(T1CNTH <<8);
Seuil_coupure =4600;
// Seuil_coupure =( last_T * pourcentage ) ;
Timer1Stop();
T1CNTL=0; //reset Timer1
Timer1InitStart ();
Timer3Stop();
Timer3InitStart ();
HAL_TURN_OFF_LED1(); //allumer LED
******au niveau interuption overFlow je fait ca:
pas++; // incrémenter pas
if (last_T == 0)
{
return;
}
if (pas<<8 >= Seuil_coupure) // si pas * 255 >= seuil
{
Timer3Stop();
pas = 0;
HAL_TURN_ON_LED1();
Sachant que la condition du test "if (last_T =0)" pour traiter le cas de la premiére période qui va étre une periode d'essai on ne veut pas envoyer un ordre à la led aucours de cette periode mais on veut mesure last_T .
===> le probléme:
1étape j'ai volu tester l'algorithme avec une valeur constante de seuil puis dans la suite je vais injecter la pourcentage ,bref
lorsque je test avec seuil= une valeur entre 0 et 2500 par exemple pour 2000 la LEd fonctionne l'éclairage est non désirable
par Contre lorsque je test avec seuil= une valeur entre 2500 et 5000 par exemple pour 4000 la LEd fonctionne parfaitement et son éclairage est l'éclairage environ 20% désirable.
et c'est à cause que just aprés la periode d'essai la valeur de pas est 10 puisk au niveau code j'incrément pas avant tester last_T.
pas++; // incrémenté pas
if (last_T == 0)
{
return;
}
j'ai essayé de corriger cette bêtise en affectant
pas=0; au niveau du code interruption Zéro cross mais le code n'as pas marché avec seuil 2000 non plus pour 4000 ( lojique aprés mon intervention au niveau code )
mon code doit fonctionner avec un valeur seuil de 0 à 2500 qui est lojique :'( :'( :'( ca fait 3 jours j'ai fait 3000 milles modif j'ai pas trouver une soluion :'(
voici l'image ci-joint pour mieux explique la procédure
-----