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 :
Mon main() se résume alors à :Code:IC2CON = 0x0003; //-- Capture sur chaque front montant, interruption à chaque capture. IFS0bits.IC2IF = 0; IEC0bits.IC2IE = 1;
Mon soucis est le suivant :Code:void main (void){ //-- init IC2 while(1){ if(IFS0bits.I2CIF) IFS0bits.I2CIF = 0; //-- + Code qui suit else //-- Affichage text sur LCD } }
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.
-----