16f876A et Timer avec CCS
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

16f876A et Timer avec CCS



  1. #1
    invite4ee64344

    16f876A et Timer avec CCS


    ------

    Bonjour à tous!

    Je me met a la programmation en C d'un pic 16f876A grâce au compilateur CCS.

    Jusqu'à présent, pas trop de problèmes. Je me base sur plusieurs exemple regroupé sur internet pour apprendre les fonction essentiel. Mais il me reste un problème auquel je ne trouve aucune solutions :

    L'utilisation des interruptions et en particulier du Timer0

    Je me suis donc dit que les membres de futura-sciences pouvaient quelque faire chose pour moi

    J'aimerais donc connaitre les fonctions à utiliser pour mettre en œuvre le Timer0 (et si possible un tuto ou un exemple commenter)

    Merci a tous et bonne soirée

    -----

  2. #2
    invite4ee64344

    Re : 16f876A et Timer avec CCS

    up
    S'il vous plais!
    ^^

  3. #3
    sdec25

    Re : 16f876A et Timer avec CCS

    Salut.
    Citation Envoyé par Hipopotamus Voir le message
    L'utilisation des interruptions et en particulier du Timer0
    Pourquoi "en particulier" ? Ce sont 2 choses différentes.
    Pour les interruptions je te conseille de lire la documentation du compilateur. Si tu ne trouves rien c'est qu'elles ne sont peut-être pas gérées. Dans ce cas il faudra placer l'instruction de traitement des interruptions à la bonne adresse mémoire (0x8 par ex.), et écrire la routine en assembleur pour sauvegarder certaines zones mémoire.

    Pour mettre en œuvre le Timer 0, c'est dans la datasheet du PIC qu'il faut regarder (registre T0CON par ex.).

  4. #4
    invite4ee64344

    Re : 16f876A et Timer avec CCS

    Tout d'abord : merci pour ta réponse!

    Je m'explique : mon compilateur (ccs) gère les interruptions mais je ne sais justement pas comment!
    Ce que je souhaite c'est savoir comment utiliser l'interruption du Timer0 ( débordement )!

    Je souhaite connaitre quelle son les commandes/fonction a utiliser pour ccs!

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

    Re : 16f876A et Timer avec CCS

    Bonsoir,

    un petit exemple donc:
    Code:
    // l'interruption du timer0
    #int_TIMER0
    void TIMER0_isr()
    {
    // ici le code pour le timer 0
    }
    
    void main() {
    
       // delai = (256-PRC) * 4 * PRD / FH
       // ici delai = (256-217) * 4 * 256 / 4MHz = 0,009984s soit 10ms
       // donc l'interruption timer0 sera appelé toute les 10ms
       setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
    
       enable_interrupts(INT_TIMER0);
       enable_interrupts(GLOBAL);
    
       while (true)
       {
       // code de la boucle principale
       }
    Sinon vous pouvez consulter utilement la doc du compilateur à propos du Timer0 il est pas mal faite (en anglais certes !)

    Sinon il doit y avoir d'autres exemples à cette adresse:
    http://www.ac-limoges.fr/sti_ge
    /


    Bon courage

  7. #6
    sdec25

    Re : 16f876A et Timer avec CCS

    Citation Envoyé par Hipopotamus Voir le message
    Ce que je souhaite c'est savoir comment utiliser l'interruption du Timer0 ( débordement )!
    ok, c'est ce que je me disais
    Toutes les interruptions sont gérées de la même façon : dans le cas du Timer0 : si interruptions activées et TMR0IE et TMR0IF alors on exécute l'instruction de traitement des interruptions.

    http://www.ccsinfo.com/downloads/ccs_c_manual.pdf
    page 64

  8. #7
    invite4ee64344

    Re : 16f876A et Timer avec CCS

    Elrix, tu est mon dieu ^^!

    C'est exactement ce que j'attendais pour avancer ^^! Merci beaucoup!
    Effectivement la documentation du compilateur a l'aire bien faite! ( Je viens de la trouver dans le dossier du compilateur. Je pensais qu'elle n'était pas fournis car je ne la trouvais pas! Grosse erreur de ma part ^^)

    Je vais tester un programme grâce à tes indications et voir si cela marche!
    Merci beaucoup à vous 2!

  9. #8
    Gérard

    Re : 16f876A et Timer avec CCS

    Bonjour,

    Pour des explications en français concernant les interruptions, tu peux consulter le cours N°1 de Bigonoff.
    C'est de l'assembleur mais permet de se faire la main et comprendre le fonctionnement des interruptions.

  10. #9
    invite4ee64344

    Re : 16f876A et Timer avec CCS

    Merci Gérard mais j'ai déjà potassé les cours de Bigonoff pour mes débuts en Assembleur et je passe maintenant au C.
    Je connaissais donc déjà le système des interruptions. Je ne savais simplement pas les mettre en œuvre en C.

    Pour ce qui est du code d'elrix :
    // l'interruption du timer0
    #int_TIMER0
    void TIMER0_isr()
    {
    // ici le code pour le timer 0
    }

    void main() {

    // delai = (256-PRC) * 4 * PRD / FH
    // ici delai = (256-217) * 4 * 256 / 4MHz = 0,009984s soit 10ms
    // donc l'interruption timer0 sera appelé toute les 10ms
    setup_timer_0(RTCC_INTERNAL|RT CC_DIV_256);

    enable_interrupts(INT_TIMER0);
    enable_interrupts(GLOBAL);

    while (true)
    {
    // code de la boucle principale
    }
    Je viens de faire un essais avec mon 16f876A et cela fonctionne pour un temps aléatoire Merci beaucoup. Maintenant je ne suis pas trés alaise sur la temporisation ( rapport entre le prédiviseur et le quartz ect...

    Faut il déclarer la vitesse du quartz en haut du code ?

    Je vois souvent quelque chose du genre :

    Code:
    #use delay(clock=20000000)
    Es-ce la configuration de vitesse ?

    Merci et Bonne soirée à tous

  11. #10
    invite95375788

    Re : 16f876A et Timer avec CCS

    Tout à fait ca indique la fréquence du quartz. Le compilo s'en sert en particulier pour calibrer ces boucles delay_ms(); et delay_us();

    Pour générer une interruption du timer0 a un instant précis il faut appliquer la formule décrite plus haut:

    PRC: préchargement du timer à une valeur sur 8 bits (0 à 255). Ce fait avec set_timer0();
    PRD: Prédiviseur à appliquer il y différentes valeurs possibles voir la doc, de mémoire il y a RTCC_DIV_2, _16, _32 ou des trucs comme ca
    FH: fréquence du quartz utilisé

    Bonne continuation

  12. #11
    invite4ee64344

    Re : 16f876A et Timer avec CCS

    Merci beaucoup ( C'était le PRC que je ne comprenais pas dans ta formule ^^ )
    Tu m'as etait d'une grande aide ( et les autres aussi )

    Merci beaucoup a vous tous

Discussions similaires

  1. Programmer 16F877 avec CCS
    Par invite00043ad3 dans le forum Électronique
    Réponses: 37
    Dernier message: 22/01/2010, 18h13
  2. capteur temperature avec dsPIC en CCS
    Par sdow dans le forum Électronique
    Réponses: 1
    Dernier message: 11/02/2008, 23h36
  3. CCS avec mplab
    Par sdow dans le forum Électronique
    Réponses: 0
    Dernier message: 10/02/2008, 17h52
  4. programmer les pic avec CCs
    Par karim3181 dans le forum Électronique
    Réponses: 1
    Dernier message: 18/03/2007, 15h59
  5. Port serie sur 16F877 avec CCS
    Par joseph4008 dans le forum Électronique
    Réponses: 7
    Dernier message: 12/07/2006, 17h56
Découvrez nos comparatifs produits sur l'informatique et les technologies.