[Numérique] PIC et IT
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

PIC et IT



  1. #1
    krmuvx

    PIC et IT


    ------

    Bonjour

    Je bidouille un PIC 16F18855...
    J'ai besoin de générer une IT toutes les 100microsecondes !!!
    A partir d'une horloge a 1MHZ, il suffit alors d'utilser un des nombreux compteurs 8 bits dans la bete...et compter jusqu'a 100 !!!
    L'IT arrive au debordement du compteur, passage de 255 a 0

    J'ai donc correctement programmé le Timer avec T2PR = 99 ( et non pas 100 en raison de l'extra coup d'horloge...) et préchargé le-dit compteur a 255-99 = 156, validé l'IT etc !!

    J'obtiens bien une IT mais au lieu de survenir toutes les 100us, elle est atour de 200us....alors que la fréquence d'entrée du compteur est bien du 1MHz

    Moralité, suis paumé car rien ne fonctionne comme prévu

    -----

  2. #2
    jiherve

    Re : PIC et IT

    bonjour
    je connais mal les PIC mais je présume que, comme pour les µC Atmel, le timer compte de 0 à Vmax donc pour compter 100 il faut sans doute programmer 99 et pas 256-99!
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    entropie12

    Re : PIC et IT

    Salut , tu doit pouvoir débbuguer en utilisant le simulateur de MPLABX
    Cordialement

  4. #4
    krmuvx

    Re : PIC et IT

    @JR
    Je crois que tu te trompes...
    A partir d'une horloge a 1mhz, il faut 100 coups d'horloge pour arriver a 255 ( compteur 8 bits) car 100x1us = 100us...
    mais pour pouvoir faire ca, il faut precharger le compteur a 255-100 = 155 !!!
    ET du fait qu'il y a dans le pIC un coup d'horloge en trop, ce n'est pas 100 qu'il faut charger...mais 99
    d'ailleurs qd tu utilises MCC, c'est bien 99 qu'il faut charger dans le registre PR2

    @Entropie
    J'ai un Mplabx ide standard...Sais tu ou je puex trouver le simulateur ? Et c'est gratuit ou payant ?
    merci

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

    Re : PIC et IT

    re
    je peux me tromper mais j'en doute!
    The Timer0 interrupt flag bit (TMR0IF) is set when
    either of the following conditions occur:
    8-bit TMR0L matches the TMR0H value
    • 16-bit TMR0 rolls over from ‘FFFFh’
    JR
    l'électronique c'est pas du vaudou!

  7. #6
    jiherve

    Re : PIC et IT

    ajout,
    je n'ai pas regardé les autres timer mais cela doit être du même tonneau.
    mais on peut, avec risques et périls , pouvoir charger le compteur au complément à 255 de la valeur au moment de l'interruption d'overflow et attendre l'overflow suivant, çà c'est tout pourri car normalement après overflow le compteur repart à zéro!
    normalement, si le processeur est bien conçu, il est prévu pour générer une interruption d'overflow cyclique sans aucune autre intervention après l’initialisation du timer.
    Ceci dit avec les PICs on peut s'attendre à tout.
    JR
    l'électronique c'est pas du vaudou!

  8. #7
    entropie12

    Re : PIC et IT

    Salut bien sûr, le simulateur est gratuit et intégré dans MPLabX :
    Projet properties -> conf -> Connected hardware tool : simulator
    puis vérifier les options ( Instruction frequency 1Mhz dans ton cas)..
    Utiliser ensuite les Stopwatch pour voir les timings ou bien tu peut mettre un breakpoint dans ta routine d'IT...

    c'est très formateur et instructif

  9. #8
    Bitrode

    Re : PIC et IT

    Citation Envoyé par jiherve Voir le message
    Ceci dit avec les PICs on peut s'attendre à tout.
    JR
    Ben non, on s'attend à ce qu'il y a dans la datasheet tout simplement, encore faut il la lire....
    Microchip n'a rien innové de ce coté là c'est exactement comme chez les autres, pourquoi réinventer ce qui fonctionne très bien?

    Code:
    //Timer2
    //Prescaler 1:1; Postscaler 1:1; TMR2 Preload = 24; Actual Interrupt Time : 100 us
     
    
    void InitTimer2(){
      T2CON     = 0x04;
      TMR2IE_bit     = 1;
      PR2         = 24;
      INTCON     = 0xC0;
    }
     
    void Interrupt(){
      if (TMR2IF_bit){ 
        TMR2IF_bit = 0;
       
      }
    }

  10. #9
    Bitrode

    Re : PIC et IT

    Citation Envoyé par krmuvx Voir le message

    Moralité, suis paumé car rien ne fonctionne comme prévu
    Moralité il faut poster ton code quand tu demandes de l'aide

  11. #10
    krmuvx

    Re : PIC et IT

    Salut

    ce que tu dis est valable pour le Timer 0....
    les timers 2,4,6 fonctionnent de manière différente

  12. #11
    krmuvx

    Re : PIC et IT

    Je n'ai pas de hardware tool....donc rien de connecté !!!

  13. #12
    krmuvx

    Re : PIC et IT

    Il y a plusieurs manières de gérer une IT
    1) du fais du "polling" et testes le Flag d'IT....et c'est justement ce que je ne veux pas faire....
    2) le gestionnaire d'IT gère l'IT a ta place et c'est comme ca que je veux opérer
    Il crée, au moment du MCC generate, une nouvelle fonction Tmr2_ISR(), dans tmr2.c dans laquelle tu dois ecrire ta propre routine (ISR) comme ca, ca ne te pollue pas ton main.c

    Mon probleme est que, lorsque je fais du polling ( comme ce que tu proposes...) j'ai bien une IT toutes les 100us mais quand c'est le gestionnaire d'IT qui fait le boulot, je trouve qqch d'erroné
    voila tout
    et merci en tous cas pour ton temps

  14. #13
    antek

    Re : PIC et IT

    Citation Envoyé par krmuvx Voir le message
    Je n'ai pas de hardware tool....donc rien de connecté !!!
    Tu as bien au moins un programmeur ?!
    Le simulateur c'est soit celui qui fonctionne dans l'IDE (c'est une simulation purement logicielle) soit celui qui utilise un programme installé dans le µC.

    https://onlinedocs.microchip.com/g/G...9-B3A5FCE6B470
    L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .

  15. #14
    krmuvx

    Re : PIC et IT

    Non rien...
    J'utilise, er tout et pour tout la carte MPLAB xpress eval board qui est equipée d'un PIC 16F18855, d'un autre composant qui gere l'interface USB...
    Pour programmer le PIC, c'est un simple telechargement du fichier .hex dans le PIC

  16. #15
    Bitrode

    Re : PIC et IT

    Citation Envoyé par krmuvx Voir le message
    A partir d'une horloge a 1MHZ, il suffit alors d'utilser un des nombreux compteurs 8 bits dans la bete...et compter jusqu'a 100 !!!
    L'IT arrive au debordement du compteur, passage de 255 a 0
    Si tu parles bien d'un timer 8 bits alors il se gère comme je te l'ai montré.

  17. #16
    Bitrode

    Re : PIC et IT

    Citation Envoyé par krmuvx Voir le message
    Il y a plusieurs manières de gérer une IT
    1) du fais du "polling" et testes le Flag d'IT....et c'est justement ce que je ne veux pas faire....
    2) le gestionnaire d'IT gère l'IT a ta place et c'est comme ca que je veux opérer
    Il crée, au moment du MCC generate, une nouvelle fonction Tmr2_ISR(), dans tmr2.c dans laquelle tu dois ecrire ta propre routine (ISR) comme ca, ca ne te pollue pas ton main.c

    Mon probleme est que, lorsque je fais du polling ( comme ce que tu proposes...) j'ai bien une IT toutes les 100us mais quand c'est le gestionnaire d'IT qui fait le boulot, je trouve qqch d'erroné
    voila tout
    et merci en tous cas pour ton temps
    La bonne manière de faire en matière d'interruption est de n'en rater aucune, donc tu attends bien tranquillement que l'IT arrive puis tu la traites.
    Si tu postais ton code ça ferait gagner du temps je pense.

Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...