Reset du pic commander par un pin DE SORTIE
wa7ch3000
Messages postés
375
Statut
Membre
-
toto -
toto -
Bonjour,
Salut
je veux reseter mon pic 16f877 lorsque la sortie portc5 = 1
pour se fait j'ai relié la masse à un bouton poussoir qui est relié à son tour a vcc pa l'intermédiaire d'une résistance et au pin d'allimentation
sur isis l'allimentation se coupe si je presse sur le bouton mai comment commander le reset par une sortie du pic?
Si vous avez une autre suggestion pour me permettre le faire le reset de l'interieur du pic se sera la bien venue?
Salut
je veux reseter mon pic 16f877 lorsque la sortie portc5 = 1
pour se fait j'ai relié la masse à un bouton poussoir qui est relié à son tour a vcc pa l'intermédiaire d'une résistance et au pin d'allimentation
sur isis l'allimentation se coupe si je presse sur le bouton mai comment commander le reset par une sortie du pic?
Si vous avez une autre suggestion pour me permettre le faire le reset de l'interieur du pic se sera la bien venue?
A voir également:
- Reset du pic commander par un pin DE SORTIE
- Comment reset un pc - Guide
- Invite de commande - Guide
- Code pin - Guide
- Free commander - Télécharger - Gestion de fichiers
- Code pin tv philips par défaut ✓ - Forum TNT / Satellite / Réception
6 réponses
A moins d'une raison très particulière (par exemple à titre d'exercice), je ne comprends pas pourquoi monter toute une quincaillerie pour faire un Reset par une sortie du PIC alors qu'il suffit de faire sauter le programme à l'adresse 0 (et peut être aussi ajuster le Status).
Bon courage.
Bon courage.
Bonsoir
Un saut à l'adresse 0 ne remet pas les registres dans leur état initial. ET il n'y a pas que le registre status
Le plus simple est d'utiliser le chien de garde. Quand on veut redémarrer, il suffit de ne plus le réarmer, cela provoquera un reset. En pratique, je mets dans tous mes programmes de pic ont une routine
Bien sûr, il faut avoir mis en service le chien de garde et dans le programme 'normal' il faut le réarmer cycliquement, mais je considère que ça fait partie des bonnes pratiques quasi-obligatoires.
Un saut à l'adresse 0 ne remet pas les registres dans leur état initial. ET il n'y a pas que le registre status
Le plus simple est d'utiliser le chien de garde. Quand on veut redémarrer, il suffit de ne plus le réarmer, cela provoquera un reset. En pratique, je mets dans tous mes programmes de pic ont une routine
HARAKIRI: BCF INTCON,GIE ; pour masquer les interruptions JMP $ ; saut sur place -> chien de garde pas réarmé -> reset
Bien sûr, il faut avoir mis en service le chien de garde et dans le programme 'normal' il faut le réarmer cycliquement, mais je considère que ça fait partie des bonnes pratiques quasi-obligatoires.
si j'ai bien compri je doit faire
asm{
BCF INTCON,GIE ; pour masquer les interruptions
JMP $
}
puisque je programme en c avec microc
je doit mettre le watch dog à on lors de la creation du projet
you can ..............
asm{
BCF INTCON,GIE ; pour masquer les interruptions
JMP $
}
puisque je programme en c avec microc
je doit mettre le watch dog à on lors de la creation du projet
you can ..............
Tout à fait
Et quand tu mets le watch-dog à on, tu dois aussi avoir une sélection de durée du chien de garde.
Si tu es en C, tu as bien une instruction pour masquer les interruptions et tu peux faire un saut sur place sans utiliser de asm, genre
disable_interrupts(); // je ne sais pas si c'est ce nom là
while (1); // saut sur place
Et tu dois aussi avoir une instruction pour réarmer le watch-dog, il faut l'appeler régulièrement (plus souvent que la durée du chien de garde !) pendant tout le programme. En assembleur c'est CLRWDG mais il y a sûrement un équivalent en C.
Et quand tu mets le watch-dog à on, tu dois aussi avoir une sélection de durée du chien de garde.
Si tu es en C, tu as bien une instruction pour masquer les interruptions et tu peux faire un saut sur place sans utiliser de asm, genre
disable_interrupts(); // je ne sais pas si c'est ce nom là
while (1); // saut sur place
Et tu dois aussi avoir une instruction pour réarmer le watch-dog, il faut l'appeler régulièrement (plus souvent que la durée du chien de garde !) pendant tout le programme. En assembleur c'est CLRWDG mais il y a sûrement un équivalent en C.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
désole
1 pas de desable_interrupt() qoi faire
2 comment rearmer le watch dog et quand/ comment avoir une section de durée ?
3 si je n'utilise pas le boot loader je doit sauter vers une adresse l
pour le timer
you can ..............
1 pas de desable_interrupt() qoi faire
2 comment rearmer le watch dog et quand/ comment avoir une section de durée ?
3 si je n'utilise pas le boot loader je doit sauter vers une adresse l
pour le timer
you can ..............
Je n'ai pas le doc de ton C (je programme en assembleur) mais je suis sûr que toutes ces fonctionnalités existent.
De toutes manières, pas grave, tu peux le faire en assembleur.
Pour le dernier point 3 si je n'utilise pas le boot loader je doit sauter vers une adresse l
pour le timer
euh... quel rapport avec la génération du reset ?
De toutes manières, pas grave, tu peux le faire en assembleur.
Pour le dernier point 3 si je n'utilise pas le boot loader je doit sauter vers une adresse l
pour le timer
euh... quel rapport avec la génération du reset ?