Pages: [1]   Go Down
Author Topic: Bug des seconde DS 1307  (Read 604 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 367
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4978
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3443
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 367
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

j'y avais bien penser mais il semble que sa ne viene pas directement de mon code enfin le voici :

Code:
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  smiley-wink
« Last Edit: March 22, 2012, 07:34:48 am by Jean-François » Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3443
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La réponse était dans le lien que j'ai donné
Code:
unsigned long temps(){
  unsigned long resultat;
  rtc.get(&sec, &min, &hour, &day, &month, &year);
  resultat=((hour*3600L)+(min*60L)+sec);
  return resultat;
}
« Last Edit: March 22, 2012, 07:53:34 am by fdufnews » Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 367
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-mad
en tout cas merci pour ton aide fdufnews une nouvelle foi!
et merci Jean François pour la modif du poste !
Logged

Pages: [1]   Go Up
Jump to: