Vous êtes sur la page 1sur 3

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 : Timer1.attachInterrupt(ServiceInterruption) ;
 Fonction : Timer1.initialize(periodeDuTimer(µs)) avec periodeDuTimer égale à 100000μs ;
 Fonction : analogRead(broche) ; avec broche = A0, A1, A2, A3, A4 ou A5.
 Fonction : Serial.begin(VitesseEnBps) ; avec VitesseEnBps = 9600 bps

-1/3-
 Fonction : Serial.print("ChaineDeCaractères") ; pour afficher une chaine de caractères sans retour à la
ligne.
 Fonction : Serial.println(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(){

Serial.begin(9600);
Timer1.attachInterrupt(lire_xyz) ;
Timer1.initialize(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 ;
Serial.print("xr = ") ;
Serial.println(xr) ;
Serial.print("yr = ") ;
Serial.println(yr) ;
Serial.print("zr = ") ;
Serial.println(zr) ;
}

-2/3-
Exercice 2 : (6 pts)
Le programme suivant :

#include <avr/wdt.h>

void setup() {
Serial.begin(9600);
Serial.println("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-

Vous aimerez peut-être aussi