Bonjour,
Je souhaite modifier la vitesse de clignotement d'une led en fonction de la valeur lue par mon CAN (potard sur pin AN0) et cela à chaque fois que j'appuie sur un poussoir monté sur RB0 (interruption INT0).
Je ne comprends pas pourquoi mon programme ne fonctionne pas : j'utilise un pointeur qui me retourne la valeur de ADRESH mais cette valeur n'est pas modifié dans mon "main.c" ...
Si j'écris la fonction "convertir(&a)" dans mon while alors là oui ça fonctionne à chaque tour sur le potard... mais l'idée justement en utilisant les interruptions est de ne pas faire ce test à chaque fois, sinon j'aurais utilisé un return(ADRESH) dans ma fonction "convertir()" vous comprenez bien...
Voici les bouts de code :
//LA FONCTION DE CONVERSION SUR LA PIN AN0
void convertir(int *valeur_can)
{
Delay10TCYx(5);
ADCON0bits.GO=1;
while (ADCON0bits.GO);
*valeur_can=ADRESH;
}
//MON INTERRUPTION sur INT0 (RB0)
void button (void)
{
int a=0;
if (INTCONbits.INT0IF)
{
PORTBbits.RB1 = !PORTBbits.RB1;
INTCONbits.INT0IF = 0; //clear interrupt flag
convertir(&a);
}
}
//La fonction principale main.c
void main (void)
{
int a=0;
pic_init();
init_CAN();
interruption_sur_RB0_init();
convertir(&a);
while (1)
{
//si je mets convertir(&a) ici alors ça fonctionne... mais ce n'est pas le but recherché !
PORTBbits.RB3 = !PORTBbits.RB3;
// Temporisation
temporisation (7500+10000*a);
}
}
Merci pour toute l'aide que vous pourrez m'apporter.
-----