Programmation du PIC 16f84 en assembleur

Fermé
Signaler
Messages postés
7
Date d'inscription
vendredi 21 novembre 2008
Statut
Membre
Dernière intervention
25 janvier 2009
-
Messages postés
198
Date d'inscription
samedi 2 mai 2009
Statut
Membre
Dernière intervention
16 novembre 2010
-
Bonjour,
Salut , les amis ,
quelqu'un pourait m'indiquer comment revenir au programme , la ou il s'est arreté , apres coupure d'electricité . le probleme est qu'il recommence tjrs le cycle des le debut !
le programme je l'ai ecrit en ASSEMBLEUR . je maitrise pas le C.
Aidez moi a trouver une solution dans le langag assembleur svp...
on m'a dit qu'il faut utiliser l'eeprom , mais je sais pas comment ?..


MERCI
A voir également:

10 réponses

que dois- je sauvegarder ? : On te l'a déjà dit, il n'y a que toi qui puisses répondre à cette question. Il n'y a que toi qui connaisses ton programme et qui saches quelles variables sont utiles pour un redémarrage.

comment ?[...] ds l'assembleur : le programme en assembleur est donné dans la documentation du PIC
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Pour l'écriture en EEPROM en assembleur, il faut moins de 10 instructions et le code est donné dans la datasheet du 16F84.
merci toto
y a t-il une solutiopn , sans passer par l'eeprom ?
on peut essayer avec un simple programme , ( allumage et extinction de 2 ou 3 leds par exple)
on coupe le courant apres l'allumage de la premiere led , et on remet le courant apres .
faudrai que la deuxiemme s'allume et non la premiere ..
reflechis avec moi stp ...
merciiii..
Bonjour

Si tu veux vraiment continuer le programme à l'instruction où il était, avec toutes tes variables dans le même état, c'est complètement impossible.
Mais si tu enregistres de temps en temps dans l'EEPROM où tu es rendu et quelques variables importantes (ça dépend entièrement de ton programme, on ne peut pas te donner de réponse précise), tu peux peut-être obtenir un fonctionnement satisfaisant au retour du secteur. Seuls la connaissance de ton application et un peu (ou beaucoup ..) de bon sens peuvent te donner la réponse.
MERCI

mon programme sert à automatiser une machine a laver , c une serie de d'ordres et de temporisations .
et des tests.
remplissage , lavage , vidange , essorage etc...
le cycle dure 1 heure. dis moi comment enregistrer ds l'eeprom ..et quand ? a la fin de chaque operation ?
je sais qu'il ya une solution...
merci de m'aider .
Pour enregistrer dans l'eeprom, c'est expliqué dans les datasheets de chez microchip. Je ne connais pas par coeur, je relis simplement quand j'en ai besoin.

Ce qu'il faut enregister ? Là, c'est une simple question de bon sens. Ce que tu veux, c'est que le cycle continue quand le courant revient. Mais tu n'as pas besoin qu'il reprenne où il en était. Je dirais que la minute près c'est bien suffisant pour une machine à laver.
À ta place, je mémoriserais la phase où on est rendu (remplissage, lavage...) et le nombre de minutes restantes dans cette phase. Une mise à jour par minute est suffisante.
Mais réfléchis bien à ce qui peut se passer si la panne intervient pendant l'écriture en EEPROM, ou entre l'écriture de la phase et celle de la durée. Il est sûrement bon de prévoir un système qui te permette de détecter la disparition du secteur quelques dizaines de millisecondes avant la coupure de l'alimentation du PIC lui-même.
Messages postés
337
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
27 décembre 2009
64
Salut,

je ne vois pas trop l'interêt d'automatiser une machine à laver car elles "savent" executer leurs différents cycles par elles même.Mais bon si tu tiens vraiment à le faire je peux t'aider pour ce qui est de l'écriture dans l'EEPROM.
Pour ecrire dans cette mémoire non volatile il y a des fonctions toutes faites que tu pourra trouver facilement en C, en assembleur je ne sais pas.
Avec quel logiciel programmes-tu?
Merci MAKER 06

En verité c pa une machine simple , mais une grande station de lavage industrielle.
le programme , je l'ai ecrit en assembleur , il fonctionne parfaitement , j'ai rencontré cet aleas auquel j'ai palié en continuant en mode manuel.
mais je dois trouver une solution, il faut revenir à l'instruction ou la coupure s'est produite .
mais en assembleur svp.
merci
reflechis avec moi stp
Va savoir pourquoi, pour l'instant je me sens seul à réfléchir.
Qu'il s'agisse d'allumer des LEDs ou de faire tourner une machine à laver, ça ne change absolument rien au problème. Si tu veux retrouver un état après une coupure d'alimentation, il te faut bien une mémoire non volatile. Et si tu ne veux pas utiliser l'EEPROM du PIC, tu peux toujours équiper ton PIC d'un disque dur, mais je ne crois pas que ce soit plus simple.
Messages postés
7
Date d'inscription
vendredi 21 novembre 2008
Statut
Membre
Dernière intervention
25 janvier 2009

Salut , les amis ,
quelqu'un pourait m'indiquer comment revenir au programme , la ou il s'est arreté , apres coupure d'electricité . le probleme est qu'il recommence tjrs le cycle des le debut !
le programme je l'ai ecrit en ASSEMBLEUR . je maitrise pas le C.
Aidez moi a trouver une solution dans le langage assembleur svp...
on m'a dit qu'il faut utiliser l'eeprom , mais je sais pas comment ?..


MERCI
Bon, je crois que la réponse t'a été donné par toto.

Il n'y a pas 36 solutions, IL FAUT MEMORISER, et avec le PIC c'est l'écriture dans l'EEPROM qui le réalise (l'EEPROM est faite pour ça !). Pour lire ou écrire dans l'EEPROM, le constructeur (Microchip) donne les routines dans le datasheet et il faut impérativement les respecter. Note aussi que l'écriture dans l'EEPROM est limitée en nombre de fois (en général de 100 000 à 10 000 000 fois selon les contrôleurs (voir la doc constructeur)), et il faut éviter d'enregistrer toutes les secondes, je pense que toutes les minutes doivent suffirent.

Ou alors met un onduleur sur le PIC, détecte la présence de la tension sur la machine à laver, modifie le programme pour attendre tant qu'il y a une coupure et redémarre après.
Messages postés
7
Date d'inscription
vendredi 21 novembre 2008
Statut
Membre
Dernière intervention
25 janvier 2009

Merci loupius
pour la solution de l'onduleur , j'y ai pensé en utilisant une pile de 5v reliée en permanance a son chargeur.
avec un circuit de detection de la coupure de courant.
mais je voudrai utiliser la solution qui consiste a sauvegarder ds l'eeprom , que dois- je sauvegarder ? ttes les instructions ? comment ? aidez moi ds ce sens svp...et ds l'assembleur..

merci
Messages postés
198
Date d'inscription
samedi 2 mai 2009
Statut
Membre
Dernière intervention
16 novembre 2010
28
Bonjour,

Comment arrêter un programme à un endroit et repartir de cet endroit?
Oui, ce qui a été proposé est logique et je ne le critique pas.
Mais j'ai découvert une autre méthode par hasard, très simple et radicale.

Attention je précise bien qu'il ne faut pas interrompre l'alimentation 5 volts du µC
Au moment où vous voulez couper, il suffit de débrancher le quartz, tout reste en état.
Quand vous voulez repartir, vous reconnectez le quartz, et ça repart sans état d'âme!

Oui, qu'est-ce qui fait avancer le programme, c'est le quartz. Alors il faut éliminer les parasites de commutation, il faut une commutation propre, mais ça marche radicalement, et sans rien faire dans le programme, excusez-moi les super-programmeurs, d'arriver avec mes gros sabots et de tout balayer.

Et comme je dis toujours:
il suffit de passer le pont...
il suffit de passer le pont...
ou de passer ton chemin... ;-)
Le problème posé est:: En cas de coupure d'électricité.
Enlever le quartz, avec les doigts mais surtout avec des pincettes !
Messages postés
198
Date d'inscription
samedi 2 mai 2009
Statut
Membre
Dernière intervention
16 novembre 2010
28
Bonjour,
Il faut que je fasse de l'explication de texte, ouh la la...

En cas de coupure d'électricité EDF, cela veut dire que la machine s'arrête dans son cycle, et quand l'électricité revient, il s'agit qu'elle continue son cycle là où elle s'est arrêtée comme avec un programmateur mécanique, sans faire un reset et un redépart de cycle. Et pendant la coupure d'électricité, j'ai précisé que le 5V du µC devait être maintenu. Il est facile par un relais relié au secteur de déclencher l'arrêt du quartz proprement (filtrage, transistor)