Multi tâches

Bonjour,

Je suis actuellement en train de travailler sur un projet pour lequel je vais devoir réaliser des chronomètres.

J'aurais voulu savoir s'il était possible de réaliser sur une même carte (Arduino Méga) plusieurs chronomètres, indépendant l'un de l'autre, consultables sur un afficheur LCD via un menu?

Merci de votre aide !

Bonjour,

Oui.

Bonjour,
Dans un micro controleur il existe plusieurs zones, une est réservée pour la programmation, l'autre pour des "modules électronique purs" qui bien qu'ils soient pilotables par programation vivent leur vie de manière indépendante.
Je parle de l'UART, de l'I2C, du SPI et des "timers" qui sont des compteurs avec des possibilités annexes comme la PWM mais pas que la PWM.

C'est aux "timers" que je pense, mais attention pour un micro donné leur nombre est fini, par exemple avec le micro de la UNO(nano,mini-pro) ils sont au nombre de 3. Le micro de la Leonardo(micro) en possède 4 il me semble, celui de la Mega davantage.

Une lecture de la datasheet du micro me semble s'imposée.

Merci de vos réponses, je commence à y voir plus claire et je vais donc me tourner sur la datasheet de la Mega !

Bonne journée !

Pour pouvoir répondre correctement, il faudrait avoir la résolution et la précision attendue.

Mais si on parle d'un chrono courant (au 1/100e de seconde) il est inutile d'utiliser un timer par chrono. Le nombre de chrono qu'on peut gérer est très élevé.

Pour la carte, il faut choisir un clone avec un quartz et non un résonateur céramique.

Bonjour

Si tu es un minimum à l'aise en programmation, je te suggère d'évaluer cette bibliothèque.

Elle permet de répondre de manière très satisfaisante à la plupart des besoins simples de mise en oeuvre de plusieurs fonctionnalités simultanées, sans avoir à descendre au niveau hardware timer / interruptions.

En gros c'est un simili multi-tâches non préemptif, basé sur la fonction millis(), donc très portable sur diverses cartes.

Tu pourrais par exemple avoir :

  • une tâche pour chaque chronomètre, qui s'exécute tous les 10 ms
  • une tâche de fond pour évaluer l'état des boutons liés au menu
  • une tâche de rafraichissement de l'écran LCD

Le principe général est que chaque tâche s'exécute à intervalle régulier, et met à jour ou utilise des variables globales.

Par exemple une tâche chronomètre actualise la valeur du chrono dans une variable globale, en fonction de son statut (arrêt / marche), et la tâche LCD actualise l'écran à partir des valeurs des variables globales.

Le gros avantage de ce principe est que les tâches sont isolées par des variables globales (=variables d'état). Elles peuvent être développées et mises au point séparément. Stabilité du code / résistance aux régressions.