PIC et sortie de sous programme
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

PIC et sortie de sous programme



  1. #1
    Gérard

    PIC et sortie de sous programme


    ------

    Bonjour,

    Dans un soft que j'ai écrit, le programme boucle à la fin dans un S/P.
    C'est normal, je l'ai voulu. Pour redémarrer le programme, je fais un RESET par MCLR (BP).

    Ma question : que devient le stack vu que je suis dans un S/P et que je fais un RESET ?

    C'est un 16F876.

    Je n'ai que survolé la datasheet , pas regardé en profondeur.
    Je me suis dit que quelqu'un sait peut être.

    Merci d'avance.

    -----

  2. #2
    invite03481543

    Re : PIC et sortie de sous programme

    Bonsoir Gérard,

    si tu fais un reset hard, à priori le contenu de la pile est perdue, les registres sont tous réinitialisés et retour au point de départ.

    Pourquoi es-tu obligé de faire un reset pour sortir de ce sous programme?
    Tu peux m'en dire plus sur le principe de ce sous programme incontournable?
    Avec un 18F tu aurais eu une alternative logicielle ce qui n'est pas le cas avec les 16F.

  3. #3
    invite2de7076a

    Re : PIC et sortie de sous programme

    Bonsoir!
    Citation Envoyé par HULK28 Voir le message
    Pourquoi es-tu obligé de faire un reset pour sortir de ce sous programme?
    Peut être est ce un sous prog pour activer le mode sleep?
    Pour moi aussi, je pense que le contenu de la pile est vidé.
    Quel PIC est ce?

  4. #4
    invite6ceed97c

    Re : PIC et sortie de sous programme

    Un reset soft avec les 18F est simple... toujours l'assembleur
    RESET

    avec la majorité des autres familles, on peut utiliser
    CLRF PCLATH
    GOTO 0

    Il y a surement mieux à faire qu'un soft/hard reset ceci dit.

  5. A voir en vidéo sur Futura
  6. #5
    invitea674c8fa

    Re : PIC et sortie de sous programme

    Si tu es obligé de faire un HARD RESET pour sortir de ta boucle sans fin présente dans un sous programme c'est que ton code est mal conçu.

    Je confirme le fait que tous les registres sont "remis 0" et donc la stack est vidée (tout comme la mémoire)

  7. #6
    invite03481543

    Re : PIC et sortie de sous programme

    Citation Envoyé par mister_e Voir le message
    avec la majorité des autres familles, on peut utiliser
    CLRF PCLATH
    GOTO 0
    Bonjour,

    sur les PIC cette technique ne fonctionnera pas car la pile au moins ne sera pas vidée.

  8. #7
    Gérard

    Re : PIC et sortie de sous programme

    Citation Envoyé par Dralaf Voir le message
    Si tu es obligé de faire un HARD RESET pour sortir de ta boucle sans fin présente dans un sous programme c'est que ton code est mal conçu.

    .....
    Avant tout, merci à tous pour vos réponses.

    J'utilise un 16F876 parce que je l'ai.

    C'est un jeu qui se termine par l'affichage du gagnant par une LED bicolore. Pour faire une nouvelle partie, j'ai pensé au RESET, d'où ma question de départ.

    Je ne sais pas si c'est mal conçu, je peux le modifier pour que le stack soit vide en fin de partie, le RESET se fera sans incident.

  9. #8
    invite092cb13c

    Re : PIC et sortie de sous programme

    Citation Envoyé par Dralaf Voir le message
    Je confirme le fait que tous les registres sont "remis 0" et donc la stack est vidée (tout comme la mémoire)
    Bonjour
    Je voudrai faire une petite precision, avec un reset par MCLR, certains registres ont une valeur prédeterminée, pas forcement 0, certains ont un etat indeterminé, et d'autres gardent les valeurs d'avant le reset, c'est le cas des ports autre que A par exemple.
    C'est à verifier dans le datasheet.
    Gilles

  10. #9
    invite092cb13c

    Re : PIC et sortie de sous programme

    Citation Envoyé par Dralaf Voir le message
    et donc la stack est vidée
    Re bonjour
    Je pense que tu as raison pour la stack, mais hier quand j'ai voulu trouver une confirmation, je n'ai rien trouvé sur le sujet dans les deux ou trois datasheets que j'ai consulté. As tu une source pour la confirmation?
    Merci
    Gilles

  11. #10
    Gérard

    Re : PIC et sortie de sous programme

    Citation Envoyé par gedonet Voir le message
    Bonjour
    Je voudrai faire une petite precision, avec un reset par MCLR, certains registres ont une valeur prédeterminée, pas forcement 0, certains ont un etat indeterminé, et d'autres gardent les valeurs d'avant le reset, c'est le cas des ports autre que A par exemple.
    C'est à verifier dans le datasheet.
    Gilles

    Bonjour,

    Je suis d'accord avec toi, les différents registres sont initialisés dans la routine INIT, donc pas de souci de ce côté.
    Mais pour la pile ??? Mistère.

  12. #11
    invitee5da1686

    Re : PIC et sortie de sous programme

    sinon tu peut desactiver les interruption (GIE =0) + le watchdog
    et executer un sleep
    sleep:
    GIE = 0
    asm
    sleep
    nop
    end asm
    goto sleep


    normalement avec sa le pic doit rentrer en sommeil et ne plus se reveiller car aucune interruption ni WDT

    jais quand meme un doute si le pic accepte de rentrer en sommeil quand GIE = 0 ??


    a+

  13. #12
    invitea674c8fa

    Re : PIC et sortie de sous programme

    Citation Envoyé par Gérard Voir le message
    Avant tout, merci à tous pour vos réponses.

    J'utilise un 16F876 parce que je l'ai.

    C'est un jeu qui se termine par l'affichage du gagnant par une LED bicolore. Pour faire une nouvelle partie, j'ai pensé au RESET, d'où ma question de départ.

    Je ne sais pas si c'est mal conçu, je peux le modifier pour que le stack soit vide en fin de partie, le RESET se fera sans incident.
    Alors pour quoi ne pas cabler un nouveau bouton poussoir sur un port d'entrée disponible?

    1) Ton programme se lance
    2) Une nouvelle partie est engagée
    3) fin de la partie, on boucle tant que le bouton poussoir n'est pas pressé
    4) Dès qu'il est pressé, on reboucle dans le main pour relancer une partie.

    Dans ce cas de figure tout se passe tres proprement

    [code]

    void main void
    {
    while(1)
    {


    ici ton code applicatif


    while(BP_IS_NOT_PRESSED);
    }
    }

  14. #13
    invitea674c8fa

    Re : PIC et sortie de sous programme

    Citation Envoyé par gedonet Voir le message
    Bonjour
    Je voudrai faire une petite precision, avec un reset par MCLR, certains registres ont une valeur prédeterminée, pas forcement 0, certains ont un etat indeterminé, et d'autres gardent les valeurs d'avant le reset, c'est le cas des ports autre que A par exemple.
    C'est à verifier dans le datasheet.
    Gilles
    C'est pour cela que j'ai mis entre guillemets (la syntaxe est importante), lorsque je dis "remettre à 0", cela correspond a remettre les registres dans leur état post-reset, et ces infos se trouvent toutes dans la datasheet du composant (les valeurs peuvent être différentes selon le type de reset, POR, BOR, MCLR, etc...)

  15. #14
    Gérard

    Re : PIC et sortie de sous programme

    Les différentes valeurs des SFR suivant les différents RESET sont indiquées mais pas l'état de la pile.
    Merci pour toutes vos réponses.

    Je pense que je vais modifier le soft de manière à ne pas être dans un S/P donc pile vide.

Discussions similaires

  1. Sortie PIC
    Par invitede857656 dans le forum Électronique
    Réponses: 3
    Dernier message: 26/12/2008, 18h46
  2. PIC conversion A/D en sortie
    Par invitec6f63aec dans le forum Électronique
    Réponses: 14
    Dernier message: 23/09/2008, 16h05
  3. Tension de sortie PIC
    Par invite3c35244f dans le forum Électronique
    Réponses: 1
    Dernier message: 18/10/2007, 11h04
  4. Microcontroleur Pic(entrée sortie)
    Par invitee2a2ed9a dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 06/10/2007, 09h56
  5. programme qui tourne sous win98 et plante sous win xp
    Par serrepate dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 27/06/2007, 08h50
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...