Multitache

fuse

Senior Member
Bonjour,
Je trouve cette question tout à fait pertinente et pas du tout idiote...
En effet, j'essaye de travailler en multitache avec Programming Editor.
Le mode flowchart ne semble pas adapté et ne l'accepte pas.
Plus étonnant, le mode Basic ne fonctionne pas non plus en multitache. Pour effectuer ce test, voici la manipulation que j'ai tenté : réalisation d'un programme multitache (très simple) sous Logicator transformation en Basic. Ce basic est copier puis coller dans PE et j'effectue la simulation : cela ne fonctionne pas....
Conclusion, PE ne semble pas supporter le multitache, du moins en simulation.... Cependant, il y a peut être une astuce ?
Cordialement
 

pandalalane

New Member
Bonjour,
j'ai aussi essayé la meme manip que toi, ça ne fonctionne pas non plus.
Il faudrait peut etre l'intégré dans la nouvelle version?
Cordialement
 

AndreBernot

Senior Member
Bonjour à tous,
Je vous confirme que Programming Editor ne gère pas le multitâche et qu'il n'est pas prévu d’y implémenter cette fonctionnalité.
Ci-après, quelques précisions pour ceux qui ne connaissent pas cette fonctionnalité offerte par Logicator.
Elle permet de définir plusieurs points de départ "Start" pour faire tourner "simultanément" des programmes différents. Simultanément signifie ici que le microcontrôleur exécute chaque programme en sautant cycliquement et très rapidement de l'un à l'autre y compris lorsqu'un des programmes est "coincé" dans une boucle. On perçoit l'intérêt de cette fonctionnalité par exemple lorsque l'on souhaite surveiller un évènement tout en exécutant un traitement particulier (ex. surveiller l'appui sur un bouton poussoir pendant que l'on fait clignoter une LED). L'écriture des programmes se trouve simplifiée et ajoute aussi de la clarté dans leur organisation. Il convient évidemment de maîtriser les interactions possibles entre les différents programmes pour éviter que les actions d'un programme annulent celles de l'autre si cela n'est pas souhaité.
 

pandalalane

New Member
Bonjour,

Merci pour votre réponse.
Je pose une autre question alors: si on considère (cela n'engage que moi) que le multitache est la vocation première (mais je peux me tromper) de la série picaxe M2, ou est l'intéret de les avoir inclus dans P.E ?
Cordialement.
 

zebulon

Member
Bonjour à tous,
...
Elle permet de définir plusieurs points de départ "Start" pour faire tourner "simultanément" des programmes différents. Simultanément signifie ici que le microcontrôleur exécute chaque programme en sautant cycliquement et très rapidement de l'un à l'autre y compris lorsqu'un des programmes est "coincé" dans une boucle.
...
Bonjour,
Juste pour préciser que c'est du pseudo-multitâche et que la fonction SERIN est bloquante avec le timeout de cette fonction.
J'ai eu le problème récemment. Une tâche était dédiée à la réception des données issues d'un module HF.
Une autre tâche gérée l'affichage des données reçues afin que, si aucune donnée n'arrive, l'autre tâche puisse effectuer d'autres tâches sans attendre (lecture d'autres capteurs).
Hé bien lorsque la fonction SERIN ne recevait plus de données car la pile de l'émetteur était HS, le programme bloquait sur le SERIN et ne passait pas la main à l'autre tâche.
Dans du vrai multi-tâche, les processus ne peuvent pas se bloquer.
Dans mon cas, c'est l'utilisation d'un module HF qui, par les parasites qu'il reçoit, fait que le timeout du SERIN ne voit pas qu'il n'y a plus d'activité, mais c'est un réelle problème de blocage du "faux" multi-tâches.

Guillaume
 
Last edited:

PieM

Senior Member
Bonjour,

Pour compléter ce qu'écrit zebulon, ce multitâche est effectivement trompeur, car il n'est qu'un "temps partagé, qui peut être bloqué par des instructions telles que readtemp, sertxd, debug, serin, irin, tout pendant qu'elle n'ont pas été terminées. Donc un serin sans réponse plante tout !

Le multitâche fonctionne. Au pire, c'est la simulation qui peut donner l'impression que ça ne fonctionne pas.

When simulating BASIC program the ‘Programming Editor’ software process all
tasks in parallel as expected, but only normally ‘traces’ (highlights on screen) the
BASIC code for one task at a time to avoid confusion
.


Il est possible, par une directive de simulation, de tracer la ou les tâches que l'on souhaite :

Par exemple: #simtask 1 va tracer la tâche 1 au lieu de la 0 par défaut.
#simtask all va tracer toutes les tâches.
 

PieM

Senior Member
Pour expliciter, voir le programme ci après:

Code:
#picaxe 18M2
#simtask all

start0:
pause 1000
High B.1
pause 1000
low B.1
goto start0

start1:
if pinC.2 = 1 then
high B.3
pause 500
low B.3
endif
goto start1
La simulation fonctionne bien avec le balayage des codes de la tâche 0 et de la tâche 1
Sans #simtask all, seule la tâche 0 est balayée dans le programme, mais l'animation fonctionne correctement: l'appui sur C.2 va bien activer la sortie B.3. :)
 

PieM

Senior Member
Le programme que je viens de donner est directement écrit sous P.E.
(je ne travaille pas avec Logicator )

on s'y perd un peu...
Je ne fais que répondre à la question initiale : P.E. gère t-il le multitâche ? Ma réponse est oui. :)
 
Last edited:

pandalalane

New Member
Re-bonsoir,

Pourtant, plus haut, AndreBernot dit le contraire et apparament, c'est pas pour demain...
Mais bon, je te crois et cela me rassure: je vais essayer.

Merci.
Bonne soirée
 

PieM

Senior Member
Bonjour à tous,
Je vous confirme que Programming Editor ne gère pas le multitâche et qu'il n'est pas prévu d’y implémenter cette fonctionnalité.
Ci-après, quelques précisions pour ceux qui ne connaissent pas cette fonctionnalité offerte par Logicator.
J'avoue être un peu perplexe quant à l'origine de cette fausse affirmation ! :confused:
 
Top