tout et pour tout, seuls trois compteurs sont connectés vers l’extérieur (MTU3, MTU9 et
MTU10) avec cinq broches en entrées (MTUIOC9B, MTUIOC9C, MTUIOC10B,
MTUIOC10C et MTUIOC10D) et trois broches en sortie (MTUIOC3C, MTUIOC9A et
MTUIOC10A).
Nous allons utiliser MTU3 pour générer les impulsions de démarrage du sonar, MTU9 pour
générer les impulsions de contrôle du servomoteur et MTU10 pour mesurer la largeur
d’impulsion générée par le sonar et représentant la distance mesurée.
D’une façon générale, pour configurer les temporisateurs il faut :
• mettre le ou les temporisateurs sous tension avec MSTP(MTUx) = 0;
• configurer les broches utilisées en entrée ou en sortie dans le mode correspondant,
• choisir la période et le reset du signal de comptage avec TCR, code :
MTUx.TCR.BYTE = 0x03 ; // on compte de1,33 µs jusqu'à 87 ms
• choisir le mode de fonctionnement avec TMDR,
• configurer les liaisons entre les registres généraux TGRx et les broches
d’E/S (registres TIORL et TIORH),
• éventuellement activer certaines sorties (registres MTUA.TOER et MTUB.TOER),
• éventuellement mettre des valeurs de temps dans les registres TGR utilisés et TCNT,
• le moment venu démarrer le comptage (registres MTUA.TSTR et MTUB.TSTR).
5.3 Temporisateur MTU3 en génération d’impulsions
Nous allons utiliser la broche MTIOC3C-B (P5.6) comme sortie d’impulsions. Il faudra donc
relier MTIOC3C à la broche TI du sonar. Nous utilisons MTU3 en mode normal, libre
(jusqu’à 87 ms).
// initialisation
MSTP(MTU3) = 0; // power up MTU timer 0 to 5
IOPORT.PFCMTU.BIT.MTUS2 = 1; // select MTIOC3C-B pin
MTU3.TCR.BYTE = 0x03; // PCLK/64
MTU3.TGRC = 22; // 30 µs count
// génération d’une impulsion
MTUA.TSTR.BIT.CST3 = 0; // stop counting
MTU3.TIORL.BYTE = 0x05; // positive pulse on MTIOC3C
MTU3.TCNT = 0; // reset MTU3 counter
MTUA.TSTR.BIT.CST3 = 1; // start counting
5.4 Temporisateur MTU10 en mesure de durée d’impulsion
Nous allons utiliser les broches MTIOC10D (PB.7) et MTIOC10B (PB.6) pour mesurer la
durée des impulsions. MTIOC10D sera configuré pour mesurer l’instant du front montant de
l’impulsion et MTIOC10B l’instant de son front descendant. Il faudra donc relier MTIOC10B
et MTIOC10D à la broche PO du sonar. Nous utilisons ce compteur en mode normal sans
remise à zéro.
// initialisation