Cours:InfoS2 tdInterruptionExterne
Pensez à mettre sur la 1ère ligne de votre code : // Compiler: Avrgcc device: nomDuMicrocontroleur
On utilisera à bon escient la page : Cours:CoursM2103#Déclencher une interruption sur changement des entrées
Sommaire
Exercice : événement d'une entrée par interruption
Soit le système µcontrôleur avec les caractéristiques suivantes :
- atmega328 à 1MHz
- 4 leds sur les broches
- PC4
- PC0
- PB5
- PB1
- 2 boutons sur les broches
- PD2 (INT0) avec résistance de tirage câblée
- PD3 (INT1) sans résistance de tirage
fichier pour simuler avec simulIDE : microc_tdBpsInterruption.sim1
On utilisera les interruptions INT0 et INT1 associées aux broches PD2 et PD3 pour observer les changements d'état des boutons. Se référer à cette page au besoin
- change l'état de la led PC4 à chaque appui sur le bouton PD2
- change l'état de la led PC0 à chaque appui sur le bouton PD3
- allumer la led PB5 à l'appui sur PD2 et l'éteint lors de l'appui sur PD3
- met en route/arrête le clignotement de la led PB1 à chaque appui sur PD2
Exercice : observation d'une roue codeuse
Principe du codeur incrémental
La figure suivante représente un codeur incrémental :
L'observation des signaux permet de connaître :
- le sens de rotation
- la vitesse de rotation
- calculer la position angulaire
Vous pouvez consulter le lien suivant sur lequel une animation présente le fonctionnement : http://stephane.genouel.free.fr/FT/0%20Dossier%20technique/1%20Texte/RobotEricc_web2/co/module_Robot_Ericc_13.html
Le codeur utilisé n'a pas de top tour, seulement les 2 voies A et B.
Préparation de la simulation
Nous allons simuler sur simulIde les signaux générés par un codeur incrémental.
- Télécharger les fichiers suivants:
- charger le programme de l'attiny13 :
- clic droit sur le composant
- charger le firmware
- choisir le fichier CodeurIncremental.hex téléchargé précédemment
- définir l'atmega328 comme "Main cpu" : il doit y avoir un point jaune sur le composant
Travail à réaliser
lien pour configurer les interruption INT0/INT1
Les signaux des 2 pistes du capteur sont connectées de la façon suivante :
- piste A => PD2 (INT0)
- piste B => PD4
Nous utiliserons également 2 leds sur les broches PC0 et PC1
Utilisez 2 leds pour visualiser le sens de rotation du moteur
Remarque : Le principe est assez simple
- au front montant sur l'une des voies
- on regarde la valeur de l'autre voie
Améliorer la précision en utilisant à la fois le front montant et descendant
Modifier votre programme pour réaliser un compte tour, on affichera la valeur sur les leds.
Il y a 270 impulsions par tour de moteur