Retour Suite
sylvainmahe.site LE SITE de Sylvain Mahé contact@sylvainmahe.site
Article : Sylvain Mahé contact@sylvainmahe.site Mesurer une période avec Period.h Period.h permet en un minium de lignes de programmation d'effectuer des mesures avec une relative précision (pour le microcontrôleur utilisé) du temps écoulé entre chaque appels à une fonction, qui en interne se charge de soustraire le temps écoulé courant par rapport au temps écoulé précédent. La seule contrainte technique pour vos projets est la suivante : La durée de la période doit être supérieure au temps d'exécution des fonctions mises en œuvre dans le programme (nous ne sommes pas en matériel pur, mais bien en logiciel). Exemple d'utilisation de Period.h : #include <Period.h> int main() { Period myPeriod = Period(); while (true) { myPeriod.state(); //myPeriod.s est la période mesurée en secondes //myPeriod.ms est la période mesurée en millisecondes //myPeriod.us est la période mesurée en microsecondes //autres instructions à exécuter : //... } return 0; } Dans l'exemple ci-dessus, un objet myPeriod de type Period est déclaré, ne prenant aucun paramètre, il sert uniquement à stocker et calculer des temps écoulés. Plus loin dans la boucle while, la fonction state de l'objet myPeriod est appelée ce qui permet d'initialiser une première fois le temps courant, celui-ci devenant le temps précédent aux tours de boucle suivants en étant soustrait à de nouveaux temps courants pour en déduire la période. Tout ceci est invisible au programmeur, et a pour effet de mettre à jour les variables s (secondes), ms (millisecondes), et us (microsecondes) que vous pourrez utiliser par la suite dans votre programme. L'exemple présenté ici avec Period.h est simple, peut être effectué via quelques calculs à l'aide de la classe Timer.h, mais dans ce cas présent offre l'avantage d'avoir ce principe intégré dans son fonctionnement ce qui simplifie la programmation. Cette classe trouve tout son sens utilisée en combinaison avec InterruptRead.h, qui profite donc de la spontanéité des interruptions de programmes pour effectuer des mesures de phénomènes extérieurs au microcontrôleur (voir dans la section "La documentation du programme MODULE" en page d'accueil, page "Les interruptions avec InterruptRead.h"). Une fonction supplémentaire reset permet de réinitialiser les variables s, ms, et us, ainsi que le dernier temps (précédent) calculé en interne dans le fonctionnement de la classe, ceci ayant pour but une remise à zéro, ou retour aux conditions initiales des mesures périodiques à effectuer. Récapitulatif des fonctions et variables de cette classe : unsigned long long s = 0; unsigned long long ms = 0; unsigned long long us = 0; Period(); void state(); void reset();