Vous êtes sur la page 1sur 3

Corrigé Partie 2 du TD6

Exercice 2
Dans le cas du protocole I2C, les trames SDA1 et SDA2 ci-dessous sont transmises simultanément par 2 maitres.
Selon le principe d'arbitrage bit à bit identique à celui utilisé dans le cas du Bus CAN, lequel des maitres va
garder le contrôle du bus I2C ?

Ici pour les 2 maitres :


1ière impulsion horloge  SDA1 ='1' et SDA2 ='1'  les 2 maitres continuent à émettre.
2ème impulsion horloge  SDA1 ='0' et SDA2 ='0'  les 2 maitres continuent aussi à émettre.
3ème impulsion horloge  SDA1 ='1' et SDA2 ='0'  le maitre 2 gagne la compétition  . il
continue à émettre par contre le maitre 1 doit attendre la fin de la communication.

Exercice 3
1. Soient les chronogrammes I2C ci-dessous, sachant qu'il s'agit de l'envoi d'un octet d'adresse, repérez les
différents éléments.

Start Firmware : @ Partie fixe Identifiant : @ Partie W/R Ack Stop


variable

- Chronogramme 1 -

Start Firmware : @ Partie fixe Identifiant : @ Partie W/R Ack Stop


variable

- Chronogramme 2 -

2. Retrouvez le message émis par le maître sur le bus I2C à partir de ces chronogrammes.
Start Firmware : @ Partie fixe Identifiant : @ Partie W/R Ack Stop
variable

S 0 1 1 0 1 0 0 w/r 0 A=0 P

- Chronogramme 1 -
Pour le chrono. 1 la trame (0110 1000) est bien reçue (car Ack =0).

1
Start Firmware : @ Partie fixe Identifiant : @ Partie W/R Ack Stop
variable

S 0 1 1 0 1 0 0 w/r 0 A=1 P

- Chronogramme 2 -
Pour le chrono. 2 la trame (0110 1000) est mal reçue (car Ack =1).
3. Décrivez et justifiez la différence essentielle que vous avez repéré sur ces deux premiers chronogrammes.
Les chronogrammes diffèrent par l'acquittement (Ack) :
Le second esclave signale une erreur de réception.
Exercice 4
Sachant que le circuit PCF8574 utilisé dans le décodage I2C vers 8 bits I/O est adressé par un code sur 7 bits
dont les 4 bits MSB constituent la partie fixe (Firmware), déchiffrez les trames ci-dessous :
1. Start 01001111 Ack 11001111 Ack Stop
Circuit adressé : 01001111 soit un circuit PCF8574 dont les bit A2, A1 et A0 sont fixés à 5V c'est une opération
de Lecture (w/r = 1) donnée lue par le maitre : 11001111.
2. Start 01000000 Ack 11001111 Ack Stop
Circuit adressé : 01000000 soit un circuit PCF8574 dont les bit A2, A1 et A0 sont fixés à 0V c'est une opération
d'Ecriture (w/r = 0) donnée écrite par le maitre : 11001111.
Questions à choix :
1- Le microcontrôleur utilisé sur l'Arduino Uno est :
a. ATmega32u4
b. ATmega328
c. ATmega2560
d. ATmega168
2- Pour mettre la broche 5 en entrée on écrit :
a. digitalWrite(5, LOW) ;
b. digitalWrite(5, HIGH) ;
c. pinMode(5, INPUT) ;
d. pinMode(5, OUTPUT) ;
3- Si l'entrée A0 du CAN 10 bits de l'Arduino Uno, si les tensions de référence sont 0 et 5 V, alors la fonction
analogRead(0) fournit la valeur décimale pour une entrée de 2.7 V :
a. Environ 552
b. Environ 553
c. Environ 1894
d. Environ 1895
Ici V = 5v et puisque le CAN est de 10 bits  Pour une entrée analogique = 5v  (11 1111 1111)2= 1023
2.7v  x
x= 2.7 x 1023 / 5 = 552,42
4- Le programme suivant :
void setup() { pinMode(13, OUTPUT) ; }
void loop() {
digitalWrite(13, HIGH) ;
delay(250) ;
digitalWrite(13, LOW) ;
delay(750) ; }
a. Allume la LED 13 durant 250 millisecondes et l'éteint durant 750 millisecondes, une seule fois.
b. Eteint la LED 13 durant ¼ de seconde et l'allume durant ¾ de seconde, répété à l'infini.
c. Allume la LED 13 durant ¼ de seconde et l'éteint durant ¾ de seconde, une seule fois.
d. Allume la LED 13 durant 250 millisecondes et l'éteint durant 750 millisecondes, répété à l'infini.
e. Ne fonctionne pas car il contient une erreur.
2
5- Le programme suivant :
void setup() { pinMode(13, OUTPUT) ; }
void loop() {
digitalWrite(13, HIGH) ;
delay(1000) ;
digitalWrite(13, LOW) ;
delay(1000) ; }
fait clignote une LED a une fréquence de :
a. 1 Hz.
b. 1.5 Hz.
c. 0.5 Hz.
d. 2 Hz.
6- Pour piloter un afficheur LCD par l'Arduino, il faut :
a. Simplement connecter ses 8 fils à la carte Arduino.
b. Connecter uniquement ses 4 fil, le reste pouvant être alimenté par une pile ou un générateur externe.
c. Connecter ses 4 ou 8 fils et vérifier que le générateur externe, le LCD et la carte Arduino partagent la même
masse.
7- La commande Serial.print("Test") permet de :
a. Envoyer sur la liaison série un texte.
b. Ecrire sur l'Arduino.
c. Ecrire dans un tableau.
d. Imprimer le programme.
8- Pour le PWM, la FAUSSE proposition est :
a. Une sortie PWM permet de faire varier le rapport cyclique du signal de sortie.
b. Une sortie PWM permet de faire varier la tension d'une sortie digitale.
c. Pour piloter une sortie en PWM on utilise la fonction : analogWrite().
d. On donne une valeur comprise entre 0 et 255 au paramètre de la fonction de (c).
9- Pour régler l'éclairement d'une LED on utilise les méthodes ci-dessous. Choisir la FAUSSE proposition.
a. On diminue le courant en rajoutant une résistance variable en série.
b. On pilote la LED avec un signal PWM.
c. On monte plusieurs LED en série.
d. On connecte la LED sur la broche A0, et on utilise la fonction analogWrite().
ANNEXE

Code Ascii

Vous aimerez peut-être aussi