Problème de delais PIC16F877
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Problème de delais PIC16F877



  1. #1
    invite5aee2b41

    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. #2
    invite8fe74e77

    Re : Problème de delais PIC16F877

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

  3. #3
    invite5aee2b41

    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

  4. #4
    invite8fe74e77

    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);

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

    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.

  7. #6
    invite5aee2b41

    Re : Problème de delais PIC16F877

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

  8. #7
    invite8fe74e77

    Re : Problème de delais PIC16F877

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

  9. #8
    invite5aee2b41

    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.

  10. #9
    invite5aee2b41

    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: 06/05/2007, 00h47
  2. probleme avec le pic16f877 generation de signaux dalarme et morse
    Par invite028440e5 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/01/2007, 09h21
  3. probleme avec le pic16F877
    Par invite55a85f97 dans le forum Électronique
    Réponses: 1
    Dernier message: 30/11/2006, 09h37
  4. Temps de charge = délais
    Par invitee4e8dd0c dans le forum Électronique
    Réponses: 4
    Dernier message: 16/10/2006, 10h31
  5. Délais de connection au démarrage
    Par invite39cd7b46 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 15/02/2004, 16h41
Découvrez nos comparatifs produits sur l'informatique et les technologies.