Université de Mostaganem, Département de GE 2021-2022
Matière/Filière : Systèmes embarqués/ M2ESE
Responsable de la matière : NasrEddine Abdellaoui
---------------------------------------------------------------------------------------------------------------------------------
Epreuve finale (Durée 1H)
Questions de cours : (4 pts)
Q1) Donnez deux critères physiques à prendre en considération lors du choix de l’unité de traitement à utiliser pour
réaliser un système embarqué. (1.5 pts)
Réponse : le boitier et la plage de température par exemple.
Q2) Quelle est la fonction du « chien de garde » dans un système embarqué ? (1.5 pts)
Réponse : surveiller le bon déroulement du programme embarqué.
Q3) Quand, on utilise les modes de fonctionnement de « mise en sommeil » dans un système embarqué ? (1 pt)
Réponse : quand le système embarqué fonctionne avec une batterie éventuellement des batteries pour
économiser l’énergie et augmenter leur durée de vie.
Exercice 1 : (10 pts)
On souhaite réaliser un système embarqué de mesure de trois grandeurs physiques : x, y et z.
Un schéma fonctionnel de ce système, est la suivant :
Mémoire de
0 – 5V stockage
Echantillon
Capteur x 0 - 1023
Lecture et stockage
des valeurs de
Capteur y CAN mesure de x, y et z
par interruption du
Affichage en Volt, après
Capteur z Timer.
leur conversion en réel,
des valeurs de mesure
de x, y et z, sur un
terminal série, par la
méthode cyclique.
Interruption du « Timer »
Question :
En supposant que la composante matérielle de ce système est réalisée à l’aide d’une plateforme arduino, on
demande de donner le programme correspondant à sa composante logicielle, en langage arduino.
Déclarations des variables et constantes : (1.5 pt)
Configurations : (1.5 pt)
Fonction lecture et stockage : (3 pts)
Fonction de conversion et d’affichage : (4 pts)
Données :
Librairie : TimerOne.h ;
Fonction : [Link](ServiceInterruption) ;
Fonction : [Link](periodeDuTimer(µs)) avec periodeDuTimer égale à 100000μs ;
Fonction : analogRead(broche) ; avec broche = A0, A1, A2, A3, A4 ou A5.
Fonction : [Link](VitesseEnBps) ; avec VitesseEnBps = 9600 bps
-1/3-
Fonction : [Link]("ChaineDeCaractères") ; pour afficher une chaine de caractères sans retour à la
ligne.
Fonction : [Link](valeur) ; pour afficher une donnée de type : int, float ou double, avec retour au
début de la ligne suivante.
Programme en langage arduino :
#include <TimerOne.h>
int x,y,z ;
void setup(){
[Link](9600);
[Link](lire_xyz) ;
[Link](100000) ;
}
Void loop(){
afficher_syz() ;
}
void lire_xyz(){
x=analogRead(A0) ;
y=analogRead(A1) ;
z=analogRead(A2) ;
}
void afficher_syz(){
float xr = 5.0 *x/1023 ;
float yr= 5.0 *y/1023 ;
float zr = 5.0 *z/1023 ;
[Link]("xr = ") ;
[Link](xr) ;
[Link]("yr = ") ;
[Link](yr) ;
[Link]("zr = ") ;
[Link](zr) ;
}
-2/3-
Exercice 2 : (6 pts)
Le programme suivant :
#include <avr/wdt.h>
void setup() {
[Link](9600);
[Link]("Demarrage ..");
pinMode(LED_BUILTIN, OUTPUT);
wdt_enable( WDTO_TimeOut);
}
void loop() {
wdt_reset();
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); //temporisation de 1S.
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Pour WDTO_TimeOut = 1S
a) Affiche sur le terminal, le message « Demarrage .. » une seule fois, ensuite fait clignoter la LED à un rythme
de 2S.
b) Affiche sur le terminal le message « Demarrage .. » une première fois, ensuite allume la LED sans pouvoir
l’éteindre après, ensuite répète à l’infini l’affichage sur le terminal du message « Demarrrage .. ».
c) Affiche sur le terminal le message « Demarrage .. » une seule fois, ensuite allume la LED et l’éteint plusieurs
fois.
d) Affiche sur le terminal le message « Demarrage .. » plusieurs fois, ensuite allume la LED et l’éteint à un
rythme de 1S.
Réponse : (b) car le temps d’exécution du programme (= 2S) est supérieur à WDTO_TimeOut = 1S
Et pour WDTO_TimeOut = 4S
a) Fait clignoter la LED avec un rythme de 2S ;
b) Affiche sur le terminal le message « Demarrage .. », une première et dernière fois, ensuite fait clignoter la
LED avec un rythme de 2S.
c) Répète l’affichage sur le terminal du message « Demarrage .. », ensuite fait clignoter la LED avec un rythme
de 4S.
d) Affiche sur le terminal le message « Demarrage .. », plusieurs fois, esuite allume la LED sans pouvoir par la
suite l’éteindre.
Réponse : (b) car le temps d’exécution du programme (=2S) est inférieur à WDTO_TimeOut = 4S
-3/3-