Picaxe 20M2 coincé

Gapak

Senior Member
Mon Picaxe 20M2 se coince de temps en temps.

Le diagramme ci-joint décrit une minuterie à deux durées, l’une d’une heure, l’autre de trois heures. Le poussoir BP1 allume la lampe, un interrupteur permet de sélectionner la durée. Si avant la fin d’un cycle on veut éteindre la lampe on appuie sur le bouton BP2.
La minuterie fonctionne bien mais de temps en temps la boucle de comptage ne s’arrête pas et la lampe reste allumée. Cependant BP2 permet toujours d’éteindre. Mais si on recommence un cycle le Picaxe reste coincé ; la seule manière de revenir à la normale est de couper l’alimentation du Picaxe, ce qui produit un « reset ». Que se passe-t-il ?

1. Une erreur ou une faiblesse dans mon diagramme
2. Une interférence
3. Un filtrage insuffisant
Merci de m’éclairer ! Ou de me proposer un diagramme plus stable
Gapak
 

Attachments

dje8269

Senior Member
Bonjour Gapak,

Je ne suis pas un expert, attends donc confirmation de quelqu'un de plus calé que moi . Mais tout d'abord avec le temps et la fonction time il est preferable d'utiliser les signes "<" et ">" et non "=" car cela peut engendrer certains problème si le creneau "=" est passé .
Afin de faciliter la lecture pourrait tu nous dire a quoi correspondent "A" et "D" .

Pkoi faire A=240 ? le time compte en seconde si la fréquence est a 4Mhz ? a quelle frequence est ton Picaxe ?
Pkoi ne pas incrémenter tout les heures ? soit A=3600 ? et ensuite tu multiplie par trois ?

tu peux simplifier en ne faisant qu'une seule fonction "eteindre", quand les compteurs arrivent a leur temps ou quand on appui sur e BP2.

Voila pour une première piste . Bonne journée
 

PieM

Senior Member
Le problème avec logicator est qu'il ne traite pas les variables word.

Je pense qu'il faut utiliser la possibilité du multitâche pour une appli timing longue durée.

Il suffit de créer une tache spécifique qui gère un compteur minutes (M), et un compteur heures (H) : 2014-04-15 001.jpg

Votre programme principal ne comporte que la gestion des BP et les tests de fin de tempo.
Et ne faire la remise à 0 des compteurs que lors de l'appui sur le BP1 ! Il ne faut pas faire les mises à 0 lors de l'extinction. c'est inutile et dangereux.
 

Gapak

Senior Member
La réponse que je pensais avoir envoyée a dje n'a pas l'air d'avoir passée. Je la répète:
Merci pour tes conseils, l'utilisation des signes < et > au lieu de = me parait bien logique, je l'ai introduite immédiatement.
Tout innocent que je suis, je pensais qu'on ne pouvait pas dépasser 255 comme pour les variables! Bravo, une bonne simplification pour moi.
Oui je suis bien a 4MHz sur mon 20M2; on compte donc en secondes.
Pour "A" et "D", quand j'ouvre la fenêtre "incrément" on me dit qu'il faut choisir la variable a incrémenter, j'ai pris A et D au hasard; peut-on faire autrement?
Une seule fonction "éteindre"? Si BP2 n'est pas dans la boucle de comptage, on ne peut plus intervenir des que le comptage est commencé, je pense.
Merci encore, a bientôt
Gapak
 

PieM

Senior Member
Tout innocent que je suis, je pensais qu'on ne pouvait pas dépasser 255 comme pour les variables! Bravo, une bonne simplification pour moi.

Lire ce que j'ai écrit en #3.
Logicator ne traite que les variables byte (0 - 255)
A=3600 n'est donc pas possible.
sinon il faut passer par des expressions basic.
 
Last edited:

Gapak

Senior Member
Merci Piem pour les deux réponses. Je vais essayer le multitâche pour la minuterie. J&#8217;ai enlevé les mises a zéro lors de l&#8217;extinction, mais pourquoi est ce dangereux de les avoir ainsi ? Juste pour savoir.
Ensuite je suis perdu dans ce qu&#8217;on entend par variable « word » ? Pour le timing, si j&#8217;affiche time=3600 le système fonctionne correctement et la lampe s&#8217;éteint au bout d&#8217;une heure ; en incrémentant A=3 j&#8217;obtiens trois heures.
Je sais que je suis un peu agaçant avec mon Logicator mais c&#8217;est ma seule façon d&#8217;accéder aux joies du monde des Picaxes car je n&#8217;ai pas pris la peine d&#8217;apprendre le Basic.
Gapak
 

PieM

Senior Member
Merci Piem pour les deux réponses. Je vais essayer le multitâche pour la minuterie. J’ai enlevé les mises a zéro lors de l’extinction, mais pourquoi est ce dangereux de les avoir ainsi ? Juste pour savoir.
Ensuite je suis perdu dans ce qu’on entend par variable « word » ? Pour le timing, si j’affiche time=3600 le système fonctionne correctement et la lampe s’éteint au bout d’une heure ; en incrémentant A=3 j’obtiens trois heures.
Je sais que je suis un peu agaçant avec mon Logicator mais c’est ma seule façon d’accéder aux joies du monde des Picaxes car je n’ai pas pris la peine d’apprendre le Basic.
Gapak
La logique veut qu'il faut être certain que les variables sont mises à 0 en début de comptage. Sinon dans certains programme, tout peut arriver !

une variable word est une variable sur 2 bytes soit 16 bits ce qui permet de gérer des nombres jusqu'à 2^16 (0- 65535)
Je suis très étonné que time = 3600 fonctionne!
Il est même refusé par la simulation....
 
Top