Go Down

Topic: [Résolu] Affichage simultané heure DCF77 et température impossible (Read 440 times) previous topic - next topic

standardUser

Bonjour à tous.

J'ai remarqué que le code utilisant les bibliothèques DCF77 et DHT22 ne parvient pas à se syntoniser sur le signal DCF77 lorsque la mesure du DCF et de température sont présents simultanément dans le loop() :

Code: [Select]
void loop()
{
  dcf.getTime(dt); // Décode l'heure courante
  if(dt.sec != currentSecond) // Affichage toutes les secondes
  {
    lireEtAfficherDCF(); // Heure affichée toujours nulle.
    lireEtAfficherTemperature();
  }
}

Par contre, l'heure est correctement affichée lorsque mesure et affichage de la température sont retirés :

Code: [Select]
void loop()
{
  dcf.getTime(dt); // Décode l'heure courante
  if(dt.sec != currentSecond) // Affichage toutes les secondes
  {
    lireEtAfficherDCF(); // Fonctionne !
  }
}

J'ai inversé les lectures DCF et température, insérer des délais, etc., mais sans aucun résultat valable.

Quelqu'un a-t-il une idée de ce qui empêche ces deux composants de travailler ensemble ?

Merci pour votre aide.


standardUser

Après avoir analysé le code des fichiers Funkhur.cpp et DHT.cpp, il apparaît que :

- DHT.cpp (capteur de température) possède, à la ligne 109, l'instruction cli() et, à la ligne 139, l'instruction sei().

- Funkuhr.cpp (capteur DCF77) travaille, ligne 143, avec une interruption <attachInterrupt(m_intNumber, inthandler, CHANGE);>

En conclusion, les deux bibliothèques ne peuvent pas cohabiter du fait que DCF77 utilise l'interruption et que DHT possède un bloc de code cli()-sei(). Ainsi, le code de DCF voit son interruption systématiquement bloquée lors de la lecture de la température par le code DHT.cpp ; le code de DCF (Funkuhr.cpp) ne peut donc plus décoder le signal horaire.

bricoleau

Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

standardUser

@bricoleau

Merci pour ce lien.
J'essaie et je vous tiens au courant.

standardUser

@bricoleau

Ca marche sans aucun problème, tant avec le code d'essai simplifié, que sur ma "grosse" application qui de ce fait a été ressortie du tiroir, dans la mesure où elle est maintenant fonctionnelle !

Merci encore ; le projet est désormais sauvé et le temps passé au codage est utilisé !

Go Up