Go Down

Topic: Bug des seconde DS 1307 (Read 752 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy