mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?



  1. #1
    Albert-cosmoff

    mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?


    ------

    bonjour a tous,
    j'utilise un pic16F1508 avec le compilateur MPLABX ,
    voici le code :
    Code:
    #include <xc.h>
    #include <stdlib.h>
    
    // configuration du PIC16F1508
    #pragma config FOSC = INTOSC    // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
    #pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
    #pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
    #pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
    #pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
    #pragma config BOREN = OFF      // Brown-out Reset Enable (Brown-out Reset disabled)
    #pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
    #pragma config IESO = OFF       // Internal/External Switchover (Internal/External Switchover mode is disabled)
    #pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is disabled)
    
    // CONFIG2
    #pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
    #pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
    #pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
    #pragma config LVP = OFF
    
    
    #ifndef _XTAL_FREQ
    	#define _XTAL_FREQ 8000000
    #endif
    
    void init_pic()
    {
        ANSELB=0;
        TRISB=0x00;
        PORTB=0x00;
    }
    
    void main()
    {
        init_pic();
        RB7=1;
        __delay_ms(500);
        RB7=0;
    }
    comme je l'ai mentionné dans ma question mon delay dure 5 sec au lieu de 500 ms pourtant mon code est bon
    savez vous pourquoi et comment je peux corriger ca,
    merci d'avance

    -----

  2. #2
    jiherve

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    Bonsoir,
    je ne connais pas trop le charabia PIC mais :#pragma config FOSC = INTOSC ne défini t'il pas l'usage d'un oscillateur interne de fréquence inconnue et thermométrique ?
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    Albert-cosmoff

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    oui l'erreur doit etre la, le probleme est que je peux le changer mais j'ai plusieurs possiblitées et rien ne marche
    voici les differentes possibilités
    FOSC<2:0>:
    Oscillator Selection bits
    111
    = ECH:External clock, High-Power mode: on CLKIN pin
    110
    = ECM: External clock, Medium-Power mode: on CLKIN pin
    101
    = ECL: External clock, Low-Power mode: on CLKIN pin
    100
    = INTOSC oscillator: I/O function on CLKIN pin
    011
    = EXTRC osc
    illator: External RC circ
    uit connected to
    CLKIN pin
    010
    = HS oscillator: High-speed crystal/resonator connected between OSC1 and OSC2 pins
    001
    = XT oscillator: Crystal/resonator connected between OSC1 and OSC2 pins
    000
    = LP oscillator: Low-power crystal connected between OSC1 and OSC2 pins

  4. #4
    kevin8z

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    Il faut que tu configure l'oscillateur interne à 8MHz, et ça devrais fonctionner.
    Car la tu a uniquement dis que tu utiliser l'oscillateur interne, mais tu n'a pas configurer la fréquence.

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

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    Je suis sympa, page 58, on voit que par defaut l'oscillateur interne et configuré à 500KHz, donc normalement tu a une tempo d'un peut plus de 5s.
    Tu met OSCCON = 0b01110010;

  7. #6
    extremgear

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    avec ton programme tel qu'il est écrit il est impossible,avec une vue normale, que tu vois une led ( je suppose ?) clignoter toutes les 0.5s sur la pin RB7 :

    Code:
    void main()
    {
        init_pic();
        RB7=1;
        __delay_ms(500);
        RB7=0;
    }

  8. #7
    Gérard

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    Il voulait dire :
    DEBUT :
    RB7 = 1
    tempo
    RB7 = 0
    tempo
    goto DEBUT

    Tu as oublié une tempo.

  9. #8
    Albert-cosmoff

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    j'ai modifié le code et ca ne fonctionne toujours pas :

    Code:
    #pragma config FOSC = INTOSC     
    #pragma config WDTE = ON        // Watchdog Timer Enable (WDT enabled)
    #pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
    #pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
    #pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
    #pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
    #pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
    #pragma config IESO = ON        // Internal/External Switchover Mode (Internal/External Switchover Mode is enabled)
    #pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
    
    // CONFIG2
    #pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
    #pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
    #pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
    #pragma config LPBOR = OFF      // Low-Power Brown Out Reset (Low-Power BOR is disabled)
    #pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)
    
    
    #ifndef _XTAL_FREQ
    	#define _XTAL_FREQ 8000000
    #endif
    
    
    void init_pic()
    {
        OSCCON = 0b01110010; 
        ANSELB=0;
        TRISB=0x00;
        PORTB=0x00;
    }
    void main()
    {
        init_pic();
        while(1)
        {
            RB7=1;
            __delay_ms(2000);
            RB7=0;
            __delay_ms(2000);
        }
    }
    merci pour votre aide quand meme c'est sympa

  10. #9
    jiherve

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    Bonjour,
    qu'est ce qui ne fonctionne pas maintenant ?
    Ton port B est il bien configuré en sortie active pour le bit7?
    JR
    l'électronique c'est pas du vaudou!

  11. #10
    Albert-cosmoff

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    oui mon portb est bien configuré en sortie,
    ce qui ne marche pas c'est que le delay_ms(2000) ne dure pas 2 sec mais a peine 0.5 sec et je ne comprend pas pourquoi

  12. #11
    paulfjujo

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    bonjour,


    Code:
    #pragma config WDTE = OFF


    Code:
    void main()
    {
        init_pic();
        while(1)
        {
            LATB7=1;
            __delay_ms(2000);
           LATB7=0;
            __delay_ms(2000);
        }
    }

    essai de voir comment est elaboré le delay de 2000mS
    fichier asm correspondant...
    Dernière modification par paulfjujo ; 29/04/2014 à 15h20.

  13. #12
    Albert-cosmoff

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    ca marche

    Un grand merci a vous tous

  14. #13
    RISC

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    salut,

    tu devrai changer certains de tes bits de configuration....

    LVP = OFF // TOUJOURS OFF sinon tu ne pourras pas toujours effacer le PIC suivant ta tension Vdd...
    PWRTE = ON // si tu n'as pas de Reset externe

    a+

  15. #14
    Gérard

    Re : mon delay_ms(500) dure 5 sec au lieu de 0.5sec mais je ne sais pas pourquoi?

    Citation Envoyé par Albert-cosmoff Voir le message
    ca marche

    Un grand merci a vous tous
    Et tu as fait quoi pour que ça marche ?
    Ce retour peut aider d'autres.

    Merci d'avance.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/10/2012, 11h30
  2. Petit Exercice pas si dure mais blocage...
    Par invite9311d819 dans le forum Chimie
    Réponses: 1
    Dernier message: 05/10/2012, 18h32
  3. Pourquoi (a,b)€R² au lieu de {a,b}€R²
    Par neokiller007 dans le forum Mathématiques du collège et du lycée
    Réponses: 18
    Dernier message: 23/04/2008, 22h30
  4. Inegalité pas si dure normalement mais....
    Par invitebe3a7e8c dans le forum Mathématiques du supérieur
    Réponses: 28
    Dernier message: 07/01/2007, 11h00
  5. pourquoi une duré de vie d'environ 90 jours
    Par invitec831e9b5 dans le forum À la conquête de Mars
    Réponses: 3
    Dernier message: 31/03/2004, 10h27
Découvrez nos comparatifs produits sur l'informatique et les technologies.