Reset du pic commander par un pin DE SORTIE

wa7ch3000 Messages postés 375 Statut Membre -  
 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?

--
you can ..............
Configuration: Windows XP
Firefox 3.0.5

6 réponses

  1. loupius
     
    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.
    0
  2. wa7ch3000 Messages postés 375 Statut Membre 17
     
    pourrez vous me dire comment
    merci
    0
  3. toto
     
    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
    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.
    0
    1. loupius
       
      Tout à fait, mettre en oeuvre le watchdog est une bonne pratique.
      0
  4. wa7ch3000 Messages postés 375 Statut Membre 17
     
    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 ..............
    0
    1. toto
       
      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.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. wa7ch3000 Messages postés 375 Statut Membre 17
     
    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 ..............
    0
  7. toto
     
    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 ?
    0