Bonjour,
Je m'essaie à utiliser un servomoteur futaba S3001 à l'aide du port RA0 d'un pic 18F452, en utilisant l'interruption du Timer1 (16 bits avec prédiviseur à 8), le pic est cadencé à 40mHz, 4 cycles pour la plupart des instructions, soit 100 nanosecondes pour 1 instruction. Voici le bout de code:
#pragma interrupt hprioISR
void hprioISR(void) { if (PIE1bits.TMR1IE && PIR1bits.TMR1IF) { // Si interruption Timer
1 valide et en cours SERVO = 0x01; LED = !LED; WriteTimer1(TimerOffset); PIR1bits.TMR1IF = 0; // Remise à 0 du flag de l'interruption Timer 1. Delay1KTCYx(10); SERVO = 0x00; } }Quand j'observe les signaux à l'oscillo, cela semble coller, toutes les
20mS, j'ai un front montant de 1mS, (j'ai aussi essayé à 1,5mS).Dés que je connecte le port RA0 sur le fil blanc du Servo, cela déraille grave, (la LED ne clignote plus, etc...).
2 questions: 1) le servo a 3 fils, 1 rouge, 1 noir, et 1 blanc. J'imagine que le noir est la masse, le rouge +5V et le blanc est la commande, est-ce exact ? (je ne trouve pas sur google le brochage de la bête).2) Faut il relayer le signal par un transistor afin de ne pas trop pomper de jus ?
Si certains d'entre vous ont expérimenté la chose, cela m'intéresse.
Merci à vous tous et A+