Pic 18f452 problème de timer
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Pic 18f452 problème de timer



  1. #1
    invite02097a2e

    Pic 18f452 problème de timer


    ------

    Bonjour à tous,
    J'utilises un pic18f452 avec le compilo C18. J'ai un quartz de 4Mhz, et je veux faire clignoter ma led toutes les sec.

    Voici mon code :

    #include <p18f452.h>
    #include <delay.h>
    #pragma config OSC=XT
    #pragma config WDT=OFF
    #pragma config LVP=OFF


    void delays (int cnt)
    { unsigned short _dcntr; \
    _dcntr=100*cnt;
    while(--_dcntr != 0) \
    continue; }

    void main(void)
    {
    short long j;
    TRISBbits.TRISB4=0;
    PORTBbits.RB4=0;
    j=5000;
    while(1)
    {
    delays(j);

    PORTBbits.RB4=0;
    delays(j);

    PORTBbits.RB4=1;


    }
    }






    /////////////////////////////////////////////
    Donc normalement
    delays(5000) donne 5000*100=500000 coup d'horloge
    donc avec un quartz à 4Mhz la led devrait clignoter toute les sec
    or pour 30 clignotement cela se fait en 38 sec.
    Je ne comprend pas pourquoi je suis plus long de 8 sec


    Merci d'avance pour votre aide

    -----

  2. #2
    Bigonoff

    Re : Pic 18f452 problème de timer

    Salut
    ------

    delays(5000) donne 5000*100=500000 coup d'horloge
    Comment peux-tu le savoir?
    C'est une boucle software et seule l'étude du code machine produit par ton compilateur te permettra de calculer la durée de ton délai.
    Sans compter que de plus tu ignores le temps pris pour l'appel de la fonction et son retour.

    En langage évolué il ne faut pas compter faire des boucles d'attente software de cette façon, le C ne permet pas de maîtriser le temps de cycle. Tu peux obtenir un délai "minimum" mais pas un délai "précis".

    Pour tes délais, utilise ce qui est prévu: l'utilisation d'un timer physique, ainsi tes temps seront justes.

    Ou alors, si tu veux procéder comme ça, utilise le langage d'assemblage (et encore, uniquement si tu n'utilises pas les interruptions).

    A+
    Bigonoff
    Vive l'Internet libre

  3. #3
    invite89303051

    Re : Pic 18f452 problème de timer

    Bonjour,

    Je dirais juste que 50000 * 100 ne tient pas dans un unsigned short. Tu as un dépassement de capacité.

    Cordialement

  4. #4
    invite02097a2e

    Re : Pic 18f452 problème de timer

    Merci de vos réponses rapides.

    Bonjour à Bignoff le vrai l'unique, je vais regarder sa en assembleur alors, je sais qu'il y a de quoi faire avec tes "tutoriaux".

    Concernant Ricounet, tu as raison (me sens idiot de ne pas avoir vérifié tout cela)

    Je vais voir avec vos commentaires et vous tiendrez au courant.

    Merci

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

    Re : Pic 18f452 problème de timer

    Bonjour
    Concernant le C18, il existe des fonctions de delay style Delay10KTCYx permettant justement d'attendre un certain nombre de coup d'horloge.
    Bigonoff a raison pour les timers, une fois que tu as bien compris le fonctionnement, ça fonctionne super bien
    Cordialement

  7. #6
    invite02097a2e

    Re : Pic 18f452 problème de timer

    Merci Ricounet, cela marche niquel avec Delay10KTCYx

  8. #7
    invite7e9b9cd3

    Re : Pic 18f452 problème de timer

    Bonjour
    Moi aussi j'ai le même problème le pic est bien programmer mais la LED ne clignote pas si dessous le programme.
    NB : j'utilise MPLAB pour coder et icprog pour programmer
    Merci d'avance

    ;***************************** ****************************** *************
    ;Clignotement d’une LED sur PB0 (tempo par IT avec TIMER2 (d’après Bigonoff) Q=4Mhz, t=1uS
    ;***************************** ****************************** *************
    list p=18F452 ; Définition de processeur pour l'assembleur
    #include <p18F452.inc> ; fichier de défintion pour PIC18
    #define LED TRISB,0 ; LED de sortie
    tictac equ d'124'
    ;VARIABLES
    cblock 0x20 ; Début de la zone (0x20 à 0x6F)
    compteur : 1 ; compteur de passages dans tmr2 (1 octet)
    endc ; Fin de la zone
    ;DEMARRAGE SUR RESET
    org 0x000
    goto init
    ; SOUS PROGRAMME D’INTERRUPTION TMR2
    ; Un passage dans cette routine tous les 32*125*1μs = 4ms.
    org 0x0008 ; adresse d'interruption prioritaire
    decfsz compteur,f ; décrémenter compteur d'IT
    goto attend ; pas 0, ne rien faire
    movlw tictac ; recharge le compteur d'IT
    movwf compteur
    movlw B'00000001' ; inverser LED
    xorwf PORTB,f
    attend bcf PIR1,TMR2IF ; effacer flag interupt tmr2
    retfie ; retour d'interruption
    ; INITIALISATIONS
    init bcf LED ; RB0 en sortie
    bsf INTCON2,7 ; Pas de R pull up sur PORTB
    movlw tictac ; le tmr2 compte jusque (124+1)*32*1μs = 4ms
    movwf PR2 ; dans PR2
    movlw B'00101110' ; postdiviseur à 2,prédiviseur à 16,timer ON
    movwf T2CON ; dans registre de contrôle TIMER2
    movlw tictac+1 ; pour 125 passages dans tmr2 = 125*4ms = 500
    movwf compteur ; dans compteur de passage interruption
    bsf PIE1,TMR2IE ; autorise IT sur TIMER2
    bsf INTCON,GIE ; valider interruptions
    bsf INTCON,GIEL
    ; PROGRAMME PRINCIPAL
    debut
    goto debut ; boucle sans fin (l'IT est asynchrone)
    END ; fin de programme

  9. #8
    invite7e9b9cd3

    Re : Pic 18f452 problème de timer

    c'est un pic 18F452

  10. #9
    invite7e9b9cd3

    Re : Pic 18f452 problème de timer

    si joint le montage
    Nom : montage led.JPG
Affichages : 54
Taille : 26,6 Ko
    Nom : montage led.JPG
Affichages : 54
Taille : 26,6 Ko

  11. #10
    RISC

    Re : Pic 18f452 problème de timer

    Salut,

    Peux-tu reposter ton code en l'entourant de balises code avec des [] autour ?

    a+

  12. #11
    invite7e9b9cd3

    Re : Pic 18f452 problème de timer

    bonjour
    je ne croi pas que ça vien du programme je l'ai simuler sur MPLAB et il marche trés bien
    merci

  13. #12
    invite7e9b9cd3

    Re : Pic 18f452 problème de timer

    bonjour
    Merci pour tous vos reponce en faite j'avais un probleme avec ça : voir la discution sur le lien si joint
    http://forums.futura-sciences.com/el...ic-18f452.html
    cordialement

Discussions similaires

  1. probléme hard avec pic 18F452
    Par invitea883d7b1 dans le forum Électronique
    Réponses: 15
    Dernier message: 29/04/2011, 08h28
  2. Problème de traitement de trame C18 pic 18f452
    Par invite02097a2e dans le forum Électronique
    Réponses: 1
    Dernier message: 26/01/2011, 11h12
  3. pic 18f452
    Par inviteeab4d8e2 dans le forum Électronique
    Réponses: 14
    Dernier message: 21/11/2008, 21h28
  4. probleme stabilite pic 18F452.
    Par invite9426e977 dans le forum Électronique
    Réponses: 14
    Dernier message: 28/02/2008, 18h58
  5. pic 18F452
    Par invite38254ebb dans le forum Électronique
    Réponses: 0
    Dernier message: 01/02/2007, 16h37
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...