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

Problème de delais PIC16F877



  1. #1
    jetster

    Problème de delais PIC16F877


    ------

    Bonjour à tous,

    Je travaille en ce moment sur un PIC16F877 et j'utilise la liaison série. Suivant l'état des broches du port B, un automate gère les octets à envoyer sur la liaison série. Voici un morceau du code :

    case 0x80 : lcd_clear();
    lprintf(" MODE ");
    lcd_gotoxy(0,1);
    lprintf(" ALARME ");
    if (stop==1)
    {
    delay_s(4);
    txreg = 0x03;
    while((txsta&0x02)==0); delay_ms(1);
    txreg = 0x0D; stop=0;
    }
    read=portb;
    break;
    La variable stop est gérée dans la routine d'interruption. Celle ci est à 1 quand une interruption survient, sinon elle reste à zéro.

    Le problème se situe au niveau du délai delay_s(4). Il est sensé fair un délai de 4 secondes mais il ne le fait pas. L'instruction suivante txreg=0x03 s'exécute tout de suite après. La simulation respecte ce délai mais pas dans la réalité.

    Je pensais à une erreur de timing du PIC. Celui-ci est cadencé à 4MHz avec oscillateur à quartz externe. Pensez vous que c'est suffisant? Cependant la liaison série marche bien à 9600bds sans problème et avec précision.

    Je ne pense pas que le problème vienne du codage mais dans la config du PIC. N'hésitez pas à me poser des questions.

    Je vous remercie.

    -----

  2. Publicité
  3. #2
    frisco

    Re : Problème de delais PIC16F877

    c'est quoi le code de delay_s( ) ?
    ( en C , et le code assembler creer ; )

  4. #3
    jetster

    Re : Problème de delais PIC16F877

    Merci,

    Voici le code asm généré, par contre je n'arrive pas à mettre la main sur le code en C de la fonction.

    delay_s_00000
    ; { delay_s ; function begin
    label4026531862
    MOVLW 0xFA
    MOVWF delay_ms_00000_arg_del
    CALL delay_ms_00000
    MOVLW 0xFA
    MOVWF delay_ms_00000_arg_del
    CALL delay_ms_00000
    MOVLW 0xFA
    MOVWF delay_ms_00000_arg_del
    CALL delay_ms_00000
    MOVLW 0xFA
    MOVWF delay_ms_00000_arg_del
    CALL delay_ms_00000
    DECFSZ delay_s_00000_arg_del, F
    GOTO label4026531862
    RETURN
    ; } delay_s function end

  5. #4
    frisco

    Re : Problème de delais PIC16F877

    le code assembleur semble bon, il semble bon
    il faudrait voir le code de la fct delay_ms

    essai en C de faire une boucle
    for (i=0;i<16 ; i++)
    delay_ms(250);

  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
    jetster

    Re : Problème de delais PIC16F877

    Ouais ok je vais essayer la boulce.
    Par contre quand je fais un clignotement de led sur port A avec attente de 1 seconde, ca marchre tr&#232;s bien m&#234;me si je le place dans le case 0x80.

  9. #6
    jetster

    Re : Problème de delais PIC16F877

    D&#233;sol&#233; la boucle ne marche pas non plus.

  10. Publicité
  11. #7
    frisco

    Re : Problème de delais PIC16F877

    essais en augmenntan le max de la boucle de 1 à 16

  12. #8
    jetster

    Re : Problème de delais PIC16F877

    Je viens d'essayer. En effet le delai marche lorsque je fais 4 it&#233;rations soit 1 seconde au total. D&#232;s que je d&#233;passe 1 seconde de d&#233;lai, le pic ne veut plus rien savoir, m&#234;me si je d&#233;compose cette attente en plusieurs boucle de 4x250ms.

  13. #9
    jetster

    Re : Problème de delais PIC16F877

    Merci beaucoup frisco pour m'avoir consacr&#233; un peu de ton temps. je pense avoir trouv&#233; la source du probl&#232;me. Cela venait du watchdog timer qui fesait un reset au bout d'une seconde d'inactivit&#233;. C'est pour &#231;a que je ne finissait jamais en entier le code qui se trouvait dans le case 0x80. Maintenant, l'ex&#233;cution d'un delay_s(4) fonctionne tr&#232;s bien !

Discussions similaires

  1. on delais avec un seul 555
    Par sevynaej dans le forum Électronique
    Réponses: 2
    Dernier message: 05/05/2007, 23h47
  2. probleme avec le pic16f877 generation de signaux dalarme et morse
    Par nabil76320 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/01/2007, 08h21
  3. probleme avec le pic16F877
    Par mcnaifer dans le forum Électronique
    Réponses: 1
    Dernier message: 30/11/2006, 08h37
  4. Temps de charge = délais
    Par Djangololo dans le forum Électronique
    Réponses: 4
    Dernier message: 16/10/2006, 09h31
  5. Délais de connection au démarrage
    Par Davlaf dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 15/02/2004, 15h41
Découvrez nos comparatifs produits sur l'informatique et les technologies.