[RÉSOLUT] multitâche coopératif avec fonctions bloquantes

Une interruption va bien interrompre le delay en plein milieu

pourriez vous m'expliquer en detail la syntaxe (pour que je comprenne et pas copier collé)
ou me donner un lien vers une documentation?

Pourquoi ne pas Commencer avec la bibliothèque TimerOne (ou un autre Timer, il y a aussi TimerThree) pour adapter votre code et tester le concept ?

Si vous voulez comprendre les timers il y a pas mal d’articles en ligne - en voici un Arduino 101: Timers and Interrupts - Tutorials - RobotShop Community ou un autre en français LOCODUINO - Les Timers (I) et il y en a de nombreux autres

gabrielrochet:
vileroi, j'adore ta solution est celle qu'il me faut, mais pourrais tu m'expliquer plus en détails la syntaxe,
si dans le loop j'ai un delay(100000000); et que j'actualise avec ta fonction tout les 200ms, ca va marcher??

Oui enfin avec une solution de ce genre, le micro tourne à fond les manettes en permanence. Ton téléphone va avoir une autonomie de misère.
Je pense qu'il faudrait revoir l'architecture de ton système. Ce n'est pas du tout adapté à un système mobile pour lequel on cherche à avoir de l'autonomie et un facteur de forme le rendant transportable.
Une programmation événementielle permettrait de mettre le processeur en sommeil lorsqu'il n'y a pas d'événement même si une application est active.

J'ai calculé, et testé, il a une autonomie de 2 jours avec l’écran allumé donc consommer deux fois plus ça va...
Donc j'ai testé timerOne et il fonctionne tres bien mais... il interrompt tellement bien le programme qu'il stoppe la communication (lorsqu'elle est active) avec l’écran et l’écran ne reçoit rien a un moment au hasard et devient blanc.

Y aurait il une solution pour qu'il attende que les instructions de communication avec l’écran soient terminées?

une interruption c'est une interruption. Si l'autre patrie du code n'a pas demandé à se prémunir contre les interruptions, vous serez interrompu...

éventuellement vérifiez au début de l'interruption si le Slave Select de l'écran est actif (à l'état bas) et dans ce cas abandonnez l'interruption et revenez vite au code qui était en cours.

très bonne idée mais mon ecran a une liaison spi (je sais pas si c'est le tactile et/ou l'ecran) et un bus bidirectionel 8b; je prend le cs du spi?

Comment verrier que la librairie GFX est inactive pour lancer la fonction d'actualisation?

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.