Cours:InfoS2 tdOutput

De troyesGEII
Aller à : navigation, rechercher

Fiche résumé

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


On utilisera à bon escient la page : Cours:CoursM2103#Modifier l'état d'une sortie

Exercice : faire clignoter des leds

2 leds sont connectées sur un attiny13.

l’une sur la broche 2(PB3), et l’autre sur la broche 6(PB1).

fichier pour simuler avec simulIDE : Infouc-Td1-ex1.sim1


Registres

Compléter le tableau suivant avec le nom du registre utile et un code possible :

Broche Rôle Nom du registre ______________________exemple de code______________________
PB1 mettre en sortie
PB1 mettre la sortie à 1
PB3 mettre en sortie
PB3 mettre la sortie à 0
Bluebg.png
Aidesmall.png
À propos de cette image

Exemple :




Faire clignoter la led PC5


#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>

int main()
{
  DDRC |= (1<<PC5);     // broche PC5 en sortie
  while(1)
  {
    PORTC ^= (1<<PC5);  // changer l'état de PC5
    _delay_ms(500);
  }
}

Programmes

Question.jpg Écrire les programmes qui répondent aux questions suivantes (indépendantes) :

  • Allumer les 2 leds en permanence
  • Répéter le cycle : leds allumées pendant 50ms, puis éteintes 500ms.
  • Changer l’état des leds toutes les 100ms.
  • Changer l’état des leds toutes les 100ms, en opposition.

Exercice : changer l'état des leds

3 leds (rouge/orange/verte) sont connectées sur un attiny24 (Fcpu 1MHz) de la façon suivante :

Couleur Numéro de broche Port
rouge 5 PB2
orange 8 PA5
verte 9 PA4

Question.jpg Écrire un programme décrivant le cycle d’un feu de circulation :

  • rouge durée 30s
  • vert durée 60s
  • orange durée 2s
fichier pour simuler avec simulIDE : td1-exCycleLed.sim1


Exercice : chenillard

On utilise dans cette partie un atmega640 sur lequel on connecte 32 leds.

Question.jpg Faire un chenillard en utilisant les 8 leds sur le PORTA :

  • on allume la led connectée sur PA0
  • on passe à la led suivante en utilisant l'opérateur de décalage
  • si on arrive à la dernière led, il faut allumer la 1ère de nouveau

Question.jpg Ajouter 8 leds supplémentaires (PORTJ) :

  • déclarer une variable sur 16 bits ( type uint16_t )
  • faire le "chenillard" sur cette variable
  • tronçonner la variable en "paquets" de 8 bits qu'on écrira sur les sorties
    • utiliser l'opérateur de décalage ( >> )
    • utiliser l'opérateur & pour ne conserver que les 8 bits utiles ( on met les autres à 0, on les masque )

Question.jpg Vous pouvez ajouter les 16 autres leds en observant les ports utilisés

fichier pour simuler avec simulIDE : microc_Td1-exChenillard.sim1