Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

PIC24F : Reset à l'interruption d'une Input Capture



  1. #1
    Bobogator

    PIC24F : Reset à l'interruption d'une Input Capture

    Bonjour,

    Je programme depuis peu des micro-contrôleurs.
    Je programme un PIC24FJ128GA010 fournit avec la carte Explorer 16 de Microchip. (Datasheet)

    Je souhaite mesurer la fréquence d'un signal en entrée de mon Input Capture (IC2/RD9). Je fournit un signal carré 0-5V de fréquence variable.

    Je configure mon IC2 de la sorte :
    Code:
    IC2CON = 0x0003; //-- Capture sur chaque front montant, interruption à chaque capture.
    IFS0bits.IC2IF = 0;
    IEC0bits.IC2IE = 1;
    Mon main() se résume alors à :
    Code:
    void main (void){
    //-- init IC2
    while(1){
       if(IFS0bits.I2CIF)
          IFS0bits.I2CIF = 0; //-- + Code qui suit
       else
          //-- Affichage text sur LCD
    }
    }
    Mon soucis est le suivant :
    En programmeur : A chaque interruption, soit à chaque front montant de mon bit IC2IF, mon programme reset. Les LED que j'allume en parallèle clignotent à chaque reset.

    Je sais que la capture s'effectue correctement car en augmentant les prescaler de mon IC2 (ICI et/ou ICM), la fréquence de clignotement de mes LED augmente.

    En debuggeur : Avec des points d'arrêts, mon programme ne plante plus, mais mon flag ne passe jamais à 1.

    J'ai alors 3 questions :

    1 : Avez-vous une solution à mon problème ? Pouvez vous me fournir un exemple de programmation d'Input Capture simple ?
    2 : Avez vous de bons livres sur la programmation C de uC ? Je connais un peu l'ASM mais je préférerais m'orienter sur le C.
    3 : Question qui va peu être vous paraître bête mais : Peut on mesurer la fréquence d'un signal sinusoïdal avec une IC ?

    Merci,

    Cordialement,

    Bobogator.

    -----


  2. Publicité
  3. #2
    Aurélien

    Re : PIC24F : Reset à l'interruption d'une Input Capture

    Au démarrage, regardes l'état des bits qui indique l'origine du reset, ça t'aidera peut etre à en connaitre la source...
    Ton watchdog est il activé ?

  4. #3
    spown

    Re : PIC24F : Reset à l'interruption d'une Input Capture

    Bonjour et bienvenue sur FUTURA,

    Je ne sais pas si c'est ça tout ton programme , mais je vois qu'il te manque quelque lignes :

    tout d'abord la routine d'interruption:

    void __attribute__((interrupt,no_au to_psv)) _IC1Interrupt(void) // pour input capture 1
    {
    ...
    Ce que tu veux
    ...
    IFS0bits.IC1IF = 0
    }

    Aussi tu fais la lecture sur quelle pin ??
    Son où les déclaration du timer ? ( le bit 7 du ICxCON )


    Pour les exemples tu peux voir le site-web du constructeur == > http://www.microchip.com/TechDoc.aspx?type=CodeExamples

    Pour le signal sinusoïde aucune idée , mais j'ai déjà essayé une lecture avec ADC mais c'est limité ( 4 a 5 khz comme max, à cause des opérations arithmétiques qui stresse le uControleur ).

    Note: n'oublies pas de configurer les bits des registres via : Configure == > Configuration bit dans le menu de MPLAB

    _CONFIG1 (...) // début du programme
    _CONFIG2 (...)

  5. #4
    RISC

    Re : PIC24F : Reset à l'interruption d'une Input Capture

    Salut,

    Comme l'a dit Aurélien, tu peux facilement identifier la cause du Reset grace aux bits dédiés.
    Voir documentation du PIC24FJ128GA010 (datasheet) chapitre 6.
    Utilises les exemples de code : http://www.microchip.com/codeexamples

    Si jamais tu autorises une interruption mais que le code de cette n'est pas écrit, une interruption provoquera automatiquement une interruption (tous les vecteurs inutilisés sont peuplés avec un goto Reset() ;=)

    a+
    Ma marotte ? les microcontrôleurs ;=)

  6. #5
    Bobogator

    Re : PIC24F : Reset à l'interruption d'une Input Capture

    Bonjour à tous et merci pour vos réponses.

    Effectivement c'est bien la routine d'interruption qui manquait ... Je ne savais pas comment l'écrire (je n'ai pas trouver de tuto à ce sujet, donc si vous avez un lien je suis preneur ) et j'ai pensé qu'écrire ma pseudo-routine dans le main() suffisait.

    Donc si je comprend bien, les fonctions précédée d'un "__attribute__" sont propre au compilateur GCC C30 fournit avec ma carte ? C'est à dire que la syntaxe des interruptions change en fonction du compilateur et du pic que l'on programme ?

    J'ai réussi à faire ce que je voulais grâce à votre aide.

    Merci encore !

    PS : Avez vous de bons bouquins ou de bons liens sur le sujet ?

    Bobogator.

  7. A voir en vidéo sur Futura
  8. #6
    spown

    Re : PIC24F : Reset à l'interruption d'une Input Capture

    Oui les interruptions " __attribute__" sont du code source pour MPLAB.

    Tu peux les avoir dans "Microchip PIC24F Peripheral Library " dans le dossier Microchip sur ton disque dur, aussi dans les forum de microchip ou les exemples disponible sur leur web .

  9. Publicité
  10. #7
    RISC

    Re : PIC24F : Reset à l'interruption d'une Input Capture

    Citation Envoyé par Bobogator Voir le message
    Donc si je comprend bien, les fonctions précédée d'un "__attribute__" sont propre au compilateur GCC C30 fournit avec ma carte ? C'est à dire que la syntaxe des interruptions change en fonction du compilateur et du pic que l'on programme ?
    Si tu démarres ton projet je te conseille d'utiliser le compilateur XC16 qui est la nouvelle version du MPLAB C30.

    Pour ce qui concerne les interruptions, le mieux c'est de télécharger les exemples de code pour les PIC24F car la syntaxe de déclaration des interruptions est propre à chaque compilateur....ou tu lis la documentation du compilateur ;=)


    PS : Avez vous de bons bouquins ou de bons liens sur le sujet ?
    Un très bon bouquin sur les PIC24F : Programming 16-Bit PIC Microcontrollers in C, Second Edition: Learning to Fly the PIC 24

    a+
    Ma marotte ? les microcontrôleurs ;=)

Sur le même thème :

Discussions similaires

  1. [Simulink] Reset d'une intégration à une heure spécifique
    Par Qhadehar dans le forum Électronique
    Réponses: 2
    Dernier message: 06/12/2012, 06h59
  2. Réponses: 4
    Dernier message: 08/03/2012, 16h35
  3. interruptions input capture dspic30f4013
    Par cottoon dans le forum Électronique
    Réponses: 2
    Dernier message: 06/06/2008, 12h29
  4. Prescaler et Input capture...
    Par Crepuscule3 dans le forum Électronique
    Réponses: 7
    Dernier message: 01/02/2008, 16h18
  5. input capture sur microcontroleur st7lite20
    Par psgman113 dans le forum Électronique
    Réponses: 0
    Dernier message: 25/04/2006, 11h12