Bien vu, vous venez d'attirer mon attention sur un petit cas particulier qui peut survenir :
Ou bien on accepte de configurer physiquement la barrière de départ sur la prise départ, la barrière d'arrivée sur la prise d'arrivée, ou une seule barrière sur une des prises, et dans ce cas on n'a pas besoin des interrupteurs.
Je viens d'installer un portail automatique qui fonctionne comme ça : à la mise sous tension ou au reset, il considère que toutes les entrées (barrières photo, contacts de sécurité, fins de course,...) sont dans l'état "Libre". Peu importe que ce soit un niveau haut ou bas, branché ou pas, ... Il prends note, et dans la suite c'est le changement d'état qui est pris en compte. Du coup l'installation est triviale : on branche ce qu'on a et on met sous tension. Point final : zéro configuration...
Ou bien on admet que les barrières peuvent être branchées (ou pas...) dans tous les cas possibles, (indépendamment de ce qui sera réellement utilisé) et que la configuration se fait par soft, et dans ce cas il faut traiter
TOUS les cas... Voir posts #184 et #190
Si vous reprenez le code, quelques remarques générales :
A priori
symbol mode_chrono=w6 consomme un word pour rien... Inutile de mémoriser le mode de fonctionnement : il faut juste donner la bonne valeur aux variables qui seront utilisées dans les tests par la suite. Dans la phase de configuration, on a tous le temps pour calculer ces variables si nécessaire. Par contre dans les boucles, le test doit être le plus simple possible.
Assez souvent on arrive en panne de variables bien avant de saturer la mémoire programme ; du coup la plupart des Picaxiens adoptent les règles suivantes :
- on utilise les bits tant que c'est possible, les Bytes idem et les Words en dernier recours.
- on n'utilise pas b0,b1 et w0 pour pouvoir utiliser au moins les 16 premiers bits
- si on risque d'avoir besoin de beaucoup de bits, on n'utilise pas non plus b2,b3 et w1
- on alloue les Bytes de b4 vers b55
- on alloue les Words de w27 vers w2
Dans votre cas, on pourrait utiliser d'autres formes de mémoires pour les temps mémorisés, surtout si on a besoin de plus de temps en mémoire et/ou si on est short petrol sur le nombre de variables directes. (ce n'et pas encore le cas...)
On évite d'utiliser une pin comme mémoire. A la place on utilise une variable bit.
Le danger avec la lecture d'une pin, c'est que son niveau peut être forcé électriquement, indépendamment de la valeur qu'on lui a attribué par soft. La recherche du bug est alors très difficile... (mais c'est rare et c'est vrai que ça économise une ligne à chaque mise à jour). Pour le Chronomètre, il faudra qu'il ait exactement les mêmes sorties que le Communiquant, même si la LED n'est pas connectée. Si ça ne tenais que de moi, je mettrais exactement les mêmes LEDs ce qui permet de visualiser que les 2 Picaxes travaillent bien en parallèle.