Pages: [1]   Go Down
Author Topic: Bug des seconde DS 1307  (Read 634 times)
0 Members and 1 Guest are viewing this topic.
Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 402
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: 34
Posts: 5088
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: 39
Posts: 3560
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

Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 402
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: 39
Posts: 3560
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

Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 402
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: