Bonjour,
Certains pic gèrent de façon native les encodeurs avec des registres spéciaux, le PIC184431 par exemple.
Une fois configuré de la façon suivante (en c)
PORTA = 0;
ANSEL0bits.ANS2 = 0;
TRISAbits.TRISA2 = ENTRE;
ANSEL0bits.ANS3 = 0;
TRISAbits.TRISA3 = ENTRE;
ANSEL0bits.ANS4 = 0;
TRISAbits.TRISA4 = ENTRE;
MAXCNTH = 0xFF;
MAXCNTL = 0xFF;
POSCNTH = 0;
POSCNTL = 0;
QEICON = 0;
QEICONbits.VELM = 1;
QEICONbits.QEIM1 = 1;
QEICONbits.QEIM2 = 1;
Tu peux ensuite directement accéder à la valeur courante du codeur comme si c'était un timer. Il s'incrémente et de décrémente automatiquement selon le sens sans consommer d'interruption.
On récupère la valeur de la façon suivante:
Axe_Incpos = POSCNTH; // on enregistre la nouvelle position
Axe_Incpos = Axe_Incpos << 8;
Axe_Incpos += POSCNTL;
Axe_Incpos est la valeur du timer. (de 0 à 65535)
Si tu as besoin de librairies ou d'aide n'hésite pas.
Merci pour ton message. Je vais regarder ça de plus près ..
Tu utilises quoi comme compilateur pour ton PIC184431 ?
Je voulais utiliser MPLAB (parce que je l'ai déjà utilisé pendant mes 2 ans de DUT GEII)
mais j'ai remarqué que sur le MPLAB IDE v8.66 je ne peux quasiment rien faire