Go Down

Topic: Bug des seconde DS 1307 (Read 679 times) previous topic - next topic

Heloderma-kris

Bonjour je rencontre un souci avec ma RTC:
en voulant faire un déclenchement a heur précise , je me suis aperçu que mon programme bugger a 9H et 6min

je m'explique : je voulait que le déclenchement se produise a la seconde prés par rapport a une heur fix

heure de consigne a 7H35min 20sec
et mon programme planter des que je considérer dans la vérification, les secondes!

j'ai donc procéder a l'addition suivante t=heur*3600+min*60+sec , et j'ai pus constater qu'a 9H6min et quelque seconde le résultat passer
de environ 32767 a 4294934520 et bien sur le problème provoque un bug dans mes déclenchement et arrêt.
quelqu'un a t'il déjà rencontrer ce problème ?
car la je bloque vraiment j'ai aucune piste pour chercher la source de l'erreur!
merci d'avance

Artouste


Bonjour je rencontre un souci avec ma RTC:
en voulant faire un déclenchement a heur précise , je me suis aperçu que mon programme bugger a 9H et 6min

je m'explique : je voulait que le déclenchement se produise a la seconde prés par rapport a une heur fix

heure de consigne a 7H35min 20sec
et mon programme planter des que je considérer dans la vérification, les secondes!

j'ai donc procéder a l'addition suivante t=heur*3600+min*60+sec , et j'ai pus constater qu'a 9H6min et quelque seconde le résultat passer
de environ 32767 a 4294934520 et bien sur le problème provoque un bug dans mes déclenchement et arrêt.
quelqu'un a t'il déjà rencontrer ce problème ?
car la je bloque vraiment j'ai aucune piste pour chercher la source de l'erreur!
merci d'avance


bonjour
ça ressemble à un debordement, le résultat de l'addition est définit comment , quel type ?
mets le code ici


fdufnews

32767 c'est la limite d'un int.
Pour faire des calcul de temps il faut utiliser des long.
On a abordé le sujet la semaine passée voir là : http://arduino.cc/forum/index.php/topic,96988.0.html

Heloderma-kris

#3
Mar 22, 2012, 01:18 pm Last Edit: Mar 22, 2012, 01:34 pm by Jean-François Reason: 1
j'y avais bien penser mais il semble que sa ne viene pas directement de mon code enfin le voici :

Code: [Select]

unsigned long temps(){
 unsigned long resultat;
 rtc.get(&sec, &min, &hour, &day, &month, &year);
 resultat=((hour*3600)+(min*60)+sec);
 return resultat;
}



Edit de Jean-François :  entre les balises code la prochaine fois  ;)

fdufnews

#4
Mar 22, 2012, 01:50 pm Last Edit: Mar 22, 2012, 01:53 pm by fdufnews Reason: 1
La réponse était dans le lien que j'ai donné
Code: [Select]
unsigned long temps(){
 unsigned long resultat;
 rtc.get(&sec, &min, &hour, &day, &month, &year);
 resultat=((hour*3600L)+(min*60L)+sec);
 return resultat;
}

Heloderma-kris

arf zut j'avais j'avais oublier les" L" a la fin des multiplicateur c'est effectivement de là que venais le probléme c'est fou pour un tout pti "L" ce que sa peut faire le bordel :0
en tout cas merci pour ton aide fdufnews une nouvelle foi!
et merci Jean François pour la modif du poste !

Go Up