Posté : mer. avr. 24, 2013 14:41 pm
Bonjour,
J'ai commencé à architecturer mon programme de régulation pour m'affranchir des temps d'attente d'acquisition de température des capteurs OneWire (DS18B20) qui sont pénalisants pour la réactivité de l'ensemble.
Je suis parti sur l'utilisation de millis() et le déclenchement de blocs logiques à intervalles réguliers (3 secondes pour les relevés de température, 5 secondes pour les vannes 3 voies, etc...). Ca fonctionne plutôt bien !
Et puis, je suis tombé sur un projet qui me semble intéressant : leOS (leOS2 pour la deuxième mouture)
Au lieu de se baser sur le comptage des millisecondes, l'auteur se place un niveau plus bas et exploite le Watchdog (utilisé notamment pour rebooter l'AVR en cas de freeze).
Sa librairie permet de mettre de créer des tâches, de les mettre en pause, de les reprendre, etc...
Si vous voulez plus d'infos : http://www.leonardomiliani.com/2012/leo ... g=en#leos2
Je vais essayer de le mettre en oeuvre pour comparer à ma solution maison...
Bons développements !
Edit : en PJ un exemple tout simple avec 3 tâches (2 Leds et 1 Serial.print)
J'ai commencé à architecturer mon programme de régulation pour m'affranchir des temps d'attente d'acquisition de température des capteurs OneWire (DS18B20) qui sont pénalisants pour la réactivité de l'ensemble.
Je suis parti sur l'utilisation de millis() et le déclenchement de blocs logiques à intervalles réguliers (3 secondes pour les relevés de température, 5 secondes pour les vannes 3 voies, etc...). Ca fonctionne plutôt bien !
Et puis, je suis tombé sur un projet qui me semble intéressant : leOS (leOS2 pour la deuxième mouture)
Au lieu de se baser sur le comptage des millisecondes, l'auteur se place un niveau plus bas et exploite le Watchdog (utilisé notamment pour rebooter l'AVR en cas de freeze).
Sa librairie permet de mettre de créer des tâches, de les mettre en pause, de les reprendre, etc...
Si vous voulez plus d'infos : http://www.leonardomiliani.com/2012/leo ... g=en#leos2
Je vais essayer de le mettre en oeuvre pour comparer à ma solution maison...
Bons développements !
Edit : en PJ un exemple tout simple avec 3 tâches (2 Leds et 1 Serial.print)