Rechercher : dans
Par :

Programmation du PIC 16f84 en assembleur

Dernière réponse le 4 mai 2009 à 22:13:22 Electro01, le 3 jan 2009 à 10:50:01 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « programmation du PIC 16f84 en assembleur » dans :
Compiler un programme assembleur avec Nasm VoirAvec Linux Etape 1. Créer un fichier source Etape 2. Assembler le fichier source Etape 3. Création de l'executable Etape 4. Execution du programme Avec windows Etape 1. Installer les logiciels nécessaires Etape 2. Créer un fichier...
Ecrire un programme en assembleur VoirLa compilation du programme Le programme doit être saisi dans un fichier texte non formaté (c'est-à-dire sans caractères en gras, souligné, avec des polices de caractères de différentes tailles, ...) appelé fichier source. En effet,...
Introduction à l'assembleur VoirLes prérequis nécessaires Le langage assembleur est très proche du langage machine (c'est-à-dire le langage qu'utilise l'ordinateur : des informations en binaire, soit des 0 et des 1). Il dépend donc fortement du type de processeur. Ainsi il...

1

toto, le 3 jan 2009 à 11:27:16

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.

Répondre à toto

2

electro01, le 3 jan 2009 à 11:50:39

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 .

Répondre à electro01

3

toto, le 3 jan 2009 à 12:12:59

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.

Répondre à toto

4

Maker06, le 3 jan 2009 à 13:25:32

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?

Répondre à Maker06

6

electro01, le 3 jan 2009 à 15:46:08
  • +1

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

Répondre à electro01

5

toto, le 3 jan 2009 à 14:04:57

Pour l'écriture en EEPROM en assembleur, il faut moins de 10 instructions et le code est donné dans la datasheet du 16F84.

Répondre à toto

7

electro01, le 3 jan 2009 à 15:49:36

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..

Répondre à electro01

8

toto, le 3 jan 2009 à 16:44:33

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.

Répondre à toto

9

Electro01, le 21 jan 2009 à 13:30:58

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

Répondre à Electro01

10

loupius, le 21 jan 2009 à 14:43:46

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.

Répondre à loupius

11

Electro01, le 25 jan 2009 à 16:52:56

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

Répondre à Electro01

12

toto, le 25 jan 2009 à 16:59:30
  • +2

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

Répondre à toto

13

pont, le 4 mai 2009 à 21:18:36

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...

Répondre à pont

14

loupius, le 4 mai 2009 à 21:38:49

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 !

Répondre à loupius

15

 pont, le 4 mai 2009 à 22:13:22

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)

Répondre à pont