Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

[PIC] - Fonctionnement aléatoire après redémarrage



  1. #1
    jorg1n

    [PIC] - Fonctionnement aléatoire après redémarrage


    ------

    Bonsoir,

    pour ma petite application, j'utilise un PIC18F6722, et après l'avoir programmé, le fonctionnement est correct, mais après avoir arrèté l'alimentation, et que je la rallume, 15 secondes après, le fonctionnement est différent, voir méme un redémarrage par le watchdog, et cela du a mon avis a cause de la valeur de certaine variables...mais je ne suis pas sur! Et parfois, si j'attends assez longtemps hors tension, ça redémarre correctement!!

    Ce "phénomène" vous ai deja t'il arrivé?

    Merci d'avance

    Bonne soirée a tous

    -----

  2. Publicité
  3. #2
    DAUDET78

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Pour éviter une case mémoire "non initialisée", je fais systématiquement une RAZ de la RAM au power on.
    J'aime pas le Grec

  4. #3
    RISC

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Salut,

    Daudet a raison...ce genre de fonctionnement est souvent du à un pointeur ou une variable non initialisé...

    Si tu utilises le compilateur C18, je crois que le startup file initialise à 0 automatiquement toutes les variables non pré-initialisées (si tu utilises le startup file par défaut)

    Cela dit, je te recommande d'écrire un handler de RESET pour avoir un logiciel robuste.
    Le handler de RESET teste au RESET tous les différents bits pour savoir la cause du RESET.

    Ensuite, une méthode robuste de programmer est d'associer SYSTEMATIQUEMENT un timeout à chaque test qui attend un évènement. De cette manière, si l'évènement ne survient pas, tu ne restera jamais bloqué dans un un while (xxxx)...

    Une façon de tester si ton PB vient de la RAM est de l'initisaliser aléatoirement avant le démarrage de ton programme pour voir si cela a des conséquences...

    a+
    Dernière modification par RISC ; 17/11/2009 à 21h11. Motif: correction

  5. #4
    sdec25

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Bonjour,
    La question est trop vague, il faudrait au moins le programme.
    De plus, pourquoi ne pas initialiser les variables utilisées ?
    Teste ton programme sur simulateur si possible, pour voir plus précisément d'où vient ce problème.

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    vede

    Cool Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Bonjour à tous,

    il serait bon d'avoir une idée de ce que serait le "fonctionnement correct"...
    idéalement...
    et donc quelles erreurs rencontres-tu?

    sur des entrées analogiques? numériques?
    sur des sorties?

    vede
    ;O]

    ps et même un ptit schéma et le code... si vraiment t'as besoin d'aide...

  9. #6
    jorg1n

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Bonjour à tous,

    et merci pour vos réponses...

    Pour éviter une case mémoire "non initialisée", je fais systématiquement une RAZ de la RAM au power on.
    Une façon de tester si ton PB vient de la RAM est de l'initisaliser aléatoirement avant le démarrage de ton programme pour voir si cela a des conséquences...
    Par contre, comment fait on pour l'initialiser, afin d'avoir toutes les variables à 0?

    En ce qui concerne le programme, il est beaucoup trop gros, j'utilise quasiment les 128K de la mémoire programme, mon application gère un afficheur LCD, avec plusieurs menus déroulants.

    Merci d'avance

    Bonne journée a tous

    PS: J'utilise le RESET par le watchdog timer.

  10. Publicité
  11. #7
    DAUDET78

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Citation Envoyé par jorg1n Voir le message
    Par contre, comment fait on pour l'initialiser, afin d'avoir toutes les variables à 0?
    moi, je travaille en assembleur.

    Dans ma séquence d'initialisation, j'ai un auto-test :
    1/ je teste la RAM
    - En écrivant dans toutes les cases la valeur A5 ou AA55 (suivant que c'est un 8 bits ou 16 bits)
    - En relisant toutes les cases. Si il y a une différence, je fais un BIP sur une LED
    2/ je teste la ROM
    - En faisant une cheksum sur tous les octets du programme
    - Si la cheksum est différente de 00, je fais deux BIPs sur une LED
    3/ je teste les voyants
    - En faisant un arbre de Noël, avec toutes les LEDs

    Ensuite, le programme démarre réellement

    PS: Si, au Reset, je trouve une condition secréte (genre deux touches appuyées simultanément), je rentre dans un autre programme d'auto test de dépannage qui permet de vérifier le hard avec plus de finesse ( bagottage de toutes les sorties, test des entrées, écho de la liaison synchrone , alphabet sur le LCD ..etc ). Ce qui permet, en fabrication, de dépanner 95% des conneries (goutte de soudure , piste coupée, erreur de résistance, etc etc)
    J'aime pas le Grec

  12. #8
    jorg1n

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    PS: Si, au Reset, je trouve une condition secréte (genre deux touches appuyées simultanément), je rentre dans un autre programme d'auto test de dépannage qui permet de vérifier le hard avec plus de finesse ( bagottage de toutes les sorties, test des entrées, écho de la liaison synchrone , alphabet sur le LCD ..etc ). Ce qui permet, en fabrication, de dépanner 95% des conneries (goutte de soudure , piste coupée, erreur de résistance, etc etc)
    Un vrai diagnostic !!

    Bon, j'ai réussi a recréer mon erreur, en faite, mon programme reste bloqué dans une bloucle dans ma fonction ftoa.c

    Code:
    void ftoa(float f,char* String,char Places){
    long power;
    char n,i;
        power=1;
        while(power*10<=f)
            power*=10;
        while(power>=1){
            n=(char)(f/power);
            f-=n*power;
            power/=10;
            *String++=n+'0';
        }
        *String++='.';
        for(i=0;i<Places;i++){
            f*=10;
            n=(char)f;
            f-=n;
            *String++=n+'0';
        }
        *String=0;
    }
    Et avec watch, je vois que ça reste coincé lorsque f = NaN !!!! je comprends pas... Je vais essayé de savoir pour quelle valeur il m'affiche cela...

    En ce qui concerne la RAZ de la RAM, en C, il y a pas une petite instruction pour faire cela...?

    Merci d'avance

  13. #9
    DAUDET78

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Citation Envoyé par jorg1n Voir le message
    Un vrai diagnostic
    oui, qui peut représenter 1 à 2K de programme , mais qui permet de sortir des pièces ! Il faut noter que ce bout de programme est, grosso modo, le même pour toutes les applications ayant des touches, un UART, des LEDs, un LCD
    En ce qui concerne la RAZ de la RAM, en C, il y a pas une petite instruction pour faire cela...?
    ce n'est pas moi qui te répondrait !
    J'aime pas le Grec

  14. #10
    jorg1n

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Citation:
    Envoyé par jorg1n Voir le message
    Un vrai diagnostic
    oui, qui peut représenter 1 à 2K de programme , mais qui permet de sortir des pièces ! Il faut noter que ce bout de programme est, grosso modo, le même pour toutes les applications ayant des touches, un UART, des LEDs, un LCD
    Je pense que je vais me penché sur le sujet... c'est très intéressant...

    Citation:
    En ce qui concerne la RAZ de la RAM, en C, il y a pas une petite instruction pour faire cela...?
    ce n'est pas moi qui te répondrait !
    J'ai cru comprendre cela... tu es plus sur l'assembleur a ce que je vois ... Non mais j'imagine que RISC et les autres savent cela !

    Merci encore pour tes connaissances...

  15. #11
    jorg1n

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    Bon, résultat de ma recherche...
    Mauvaise initialisation , enfin, je l'initialisait correctement, mais après je venais lui affecter une valeur que je venais lire en EEPROM, mais, a l'adresse a laquelle je lui ai dit de venir lire,... il y a rien, donc elle prend une valeur erronée...

    J'ai donc réglé le problème, par contre, l'initialisation de la RAM m'intéresse toujours... alors si vous pouviez m'en dire un peu plus pour la manière de faire en C...
    Merci d'avance

  16. #12
    sdec25

    Re : [PIC] - Fonctionnement aléatoire après redémarrage

    En C on peut très facilement effacer une partie de la mémoire, mais effacer complètement la RAM c'est plus difficile étant donné qu'on ne contrôle pas toutes les zones mémoires des variables définies.
    Il y a sûrement une façon de faire mais selon moi ça n'en vaut pas la peine et il n'y a pas d'intérêt à le faire.
    Dans un programme en C on initialise les variables avant de les utiliser.

  17. Publicité

Discussions similaires

  1. [Blanc] LV Firstline LV 4954.7 : fonctionnement aléatoire !
    Par glapietra dans le forum Dépannage
    Réponses: 0
    Dernier message: 03/11/2009, 17h27
  2. [Blanc] table induction fonctionnement aléatoire
    Par induhs dans le forum Dépannage
    Réponses: 4
    Dernier message: 07/08/2009, 21h22
  3. [Brun] TV PHILIPS 20GX8550/59R : fonctionnement aléatoire !
    Par safae08 dans le forum Dépannage
    Réponses: 1
    Dernier message: 03/08/2009, 06h57
  4. Redémarrage automatique après arrêt
    Par alainav1 dans le forum Matériel - Hardware
    Réponses: 5
    Dernier message: 12/01/2007, 01h20
  5. fonctionnement aleatoire essui glace, pb diode?
    Par mike133 dans le forum Dépannage
    Réponses: 0
    Dernier message: 31/10/2004, 21h22
Découvrez nos comparatifs produits sur l'informatique et les technologies.