(Hier, 12:12 PM)lbourdel@yahoo.fr a écrit : [quote pid="27666" dateline="1793346180"]
F1ATB
Merci pour ces retours, je mets cela dans la beta 7 à sortir ce jour.
Bonjour Andre,
J'ai noté une anomalie dans le code de la fonction recupererEnsoleillement()
..
if (HnextSoleil <= Int_Heure)
{
HnextSoleil = Int_Heure+ 4; // Retour dans 4h
if (HnextSoleil > 23)
{
HnextSoleil = 0;
}
..
Si Int_Heure+ 4 > 23H, HnextSoleil est mis à 0
Au prochain passage, tant qu'il n'est pas minuit, HnextSoleil <= Int_Heure est vrai
Ce qui fait que l'on va requeter toutes les 30s. la météo
En remplacant par le code suivant cela devrait etre mieux:
if (HnextSoleil <= Int_Heure || (HnextSoleil > 23 && Int_Heure == HnextSoleil - 24))
{
HnextSoleil = Int_Heure+ 4; // Retour dans 4h
Je laisse Andre regarder
Proposition:
Si le code était sur un repo Github, je pourrais creer des "Issues" et les correctifs a valider
Qu'en penses tu?
Laurent
[/quote]
Autre probleme potentiel:
Si pas d'action avec triac, NumBlocTriac=-1
void IRAM_ATTR onTimer()
{ // Interruption every 100 micro second
if (BlocsActions[NumBlocTriac].Regulation == Bloc_Action:

ECOUPE_SINUS)
..
Cela veut dire que l'on va lire les tableaux suivants avec un index de -1:
BlocsActions[NumBlocTriac]
PulseComptage[NumBlocTriac]
Retard[NumBlocTriac]
Le mieux serait peut etre de ne pas lancer le timer de 100µs si pas de triac?
// Hardware timer 100uS
timer = timerBegin(1000000);
timerAttachInterrupt(timer, &onTimer);
// 100 ticks = 100 µs
timerAlarm(timer, 100, true, 0);