bonjour,
j'aurais juste besoin d'un petit coup de pouce, je fais un programme pas compliqué du tout mais je bloque sur un point. dc je balance une fréquence sur mon PIC et je veux la retrouver grace au mode input capture et au timer 2. voici un morceau du programme:
while(1){
if(cap1==0&&cap2==0)
{
capclear();
}
if (((cap1==0)&&(cap2!= 0)) || (cap1>cap2)) // reset Timer2 if cap1 is greater than cap2
{
T2CONbits.TON = 0;
TMR2=0;
T2CONbits.TON = 1;
}
if (frequency <=100)
{
capclear();
T2CONbits.TCKPS= 3;
capinit1();
counts = cap2-cap1;
PR2= ( ( 77000 * T2CONbits.TCKPS ) / counts) ;
frequency = ((40000000)/PR2);
frequency = ((40000000)/PR2);
}
if ((frequency > 100) && (frequency <=1000))
{
capclear();
T2CONbits.TCKPS= 2;
capinit1();
counts = cap2-cap1;
frequency = ((40000000)/counts)/8;
frequency = ((40000000)/counts)/8;
}
if (frequency>1000)
{
capclear();
T2CONbits.TCKPS= 0;
capinit1();
counts = cap2-cap1;
frequency = ((40000000)/counts);
frequency = ((40000000)/counts);
}
je me suis inspirée du code source de microchip mais la boucle "if (frequency < 100 )" ne fonctionne pa. je pense que ça vient du calcul de PR2 mais je ne sais pas comment le calculer. le reste fonctionne très bien.
qlq'un a une idée svp?
merci pour les réponses que vous m'apporterez
-----