Cours:InfoS2 tdInterruptionExterne

De troyesGEII
Aller à : navigation, rechercher

Retour à la liste des Tds/Tps

Éléments de correction

simuler avec simulIDE


Pensez à mettre sur la 1ère ligne de votre code :
// Compiler: Avrgcc device: nomDuMicrocontroleur


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

Question.jpg Ecrire un programme qui :

  • 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 : Codeur incremental disque.gif

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.

  1. Télécharger les fichiers suivants:
  2. 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
  3. 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

Question.jpg 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

Question.jpg Améliorer la précision en utilisant à la fois le front montant et descendant


Question.jpg 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