Vous êtes sur la page 1sur 5

Module Technologies des Systèmes Embarqués CI-GBM2, S1

State-Events

• Les systèmes techniques ont un nombre fini


d'états, dans lequel ils peuvent se trouver à un
instant donné.
• Ils réagissent à des événements qui peuvent se
MODÈLES DE PROGRAMMATION produire durant leur fonctionnement.
POUR SYSTÈMES EMBARQUÉS • En fonction de l'état actuel du système, ces
événements peuvent déclencher des activités et
State-Events éventuellement générer un changement d’état
de ce dernier.

(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 68 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 69

State-Events State-Events
• Un état (State) est une disposition, dans laquelle le -Conception-
système entre durant une période limitée. • Tableau d’états (exemple)
• Différentes activités (anglais : Activity) peuvent être exécutées au
sein d'un état.
• Exemples d’état : « Sonnerie », « Conversation » etc.
• Un événement (anglais : Event) est une influence
extérieure sur le système ou un changement dans le
système.
• Un événement est de courte durée (quantité de temps
négligeable) et a toujours un impact sur le système.
• Exemples d'événements: « combiné est décroché », « numéro est
sélectionné » etc.
• Une transition décrit le passage d'un état à un autre.
• Une transition est toujours déclenchée par un événement.
• Exemples de transitions : Le décrochement du combiné
(évènement) change l’état du system de « Téléphone libre » à «
Saisir le numéro ».
• Une action est exécutée au cours d'une transition.
• La transition « Téléphone libre » à « Saisir le numéro » augmente
la tonalité.
(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 70 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 71

Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 1
Module Technologies des Systèmes Embarqués CI-GBM2, S1

State-Events State-Events
-Conception- -Conception-
• Diagramme d’états (même exemple) • Implémentation : Instructions switch emboîtées

Correspondant s’annonce
Conversation
• l'imbrication de deux structures switch
Combiné est raccroché
/Pause
Sonnerie
• La structure externe permet de gérer les états possibles
Combiné est décroché /Pause
• la structure interne est responsable du traitement des différents évènements.
Combiné est décroché Numéro libre est sélectionné
Téléphone /Activer la tonalité bip /Activer la tonalité d’appel
libre

Saisir le
Combiné est raccroché Combiné est raccroché /Pause numéro
/Pause
Chiffre est sélectionné
/Transmettre le chiffre
Occupé Numéro occupé est sélectionné
/Activer la tonalité occupée

(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 72 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 73

State-Events State-Events
-Conception- -Exemple-
• Implémentation : Instructions switch emboîtées

Start
Rec
Haut
Av
Bas

(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 74 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 75

Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 2
Module Technologies des Systèmes Embarqués CI-GBM2, S1

State-Events State-Events
-Exemple- -Exemple-
• Structures Disponibles :

(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 76 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 77

State-Events State-Events
-Exemple- -Exemple-
• Exemple :

(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 78 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 79

Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 3
Module Technologies des Systèmes Embarqués CI-GBM2, S1

Exercice d’application Exercice d’application


Détecteur multi-state d’un bouton poussoir Détecteur multi-state d’un bouton poussoir
• On propose de développer une fonction en C qui renvoi l’état de l’appuie sur un • State diagram de la fonction btnPress
bouton poussoir connecté à la broche BP du microcontrôleur. Le prototype de Etat Action
cette fonction se présente comme suit : Paramètres State = B_UP;
int btnPress(int BP) initiaux T_UP = millis() ;
• Elle retourne la valeur :
• 0 si aucun appui n’est détecté depuis 500ms du démarrage de la fonction, ou en cas d’une exit = 0;
détection d’un appui très rapide (durée de l’appui inférieure à 500ms) B_UP T_UP = millis() - T_UP ;
• 1 en cas d’appui simple (de durée entre 500ms et 1s)
T_Down = millis();
• 2 en cas d’appui long sur le bouton (de durée supérieure à 1s)
B_down T_Down=millis()-T_Down;
B_LP Btn_state = 2 ;
• La fonction tourne en boucle avec un délai de 10 ms jusqu’à ce que la variable exit = 1 ;
exit se met à 1. B_SP Btn_state = 1 ;
• A chaque boucle elle détermine l’événement de transition, exécute l’action
correspondante à l’état en cours et calcule l’état suivant. Compléter le code exit = 1 ;
correspondant à cette fonction B_released Btn_state = 0 ;
exit = 1 ;
(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 80 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 81

Exercice d’application Exercice d’application


Détecteur multi-state d’un bouton poussoir Détecteur multi-state d’un bouton poussoir
• State diagram de la fonction btnPress • State diagram de la fonction btnPress
19 :
if (T_down >=1000)
Event = E4;
else if (!bpOn()){
if (T_UP > 500)
15 : While(exit==0)
Event = E2;
else if (T_Down < 500)
Event = E3;
else if (T_Down >= 500) && (T_Down < 1000)
Event = E5;
}
(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 82 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 83

Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 4
Module Technologies des Systèmes Embarqués CI-GBM2, S1

Exercice d’application Exercice d’application


Détecteur multi-state d’un bouton poussoir Détecteur multi-state d’un bouton poussoir
• State diagram de la fonction btnPress Une amélioration est proposée :
23 :
case B_UP : T_UP = millis() - T_UP ; case B_down : T_Down=millis()-T_Down; case B_LP : Btn_state = 2 ;
• La fonction renvoie la valeur 0 seulement si aucun appui n’est détecté
depuis 500ms du démarrage de la fonction.
T_Down = millis(); if (event==E3) exit = 1 ;
if (event==E1) State = B_released; break; • Elle renvoie la valeur 3 si un double click est détecté. Un double click est
State = B_down; else if (event == E4) case B_SP : Btn_state = 1 ; manifesté à chaque fois qu’on détecte un appuie très rapide (durée de
else if (event == E2) State = B_LP; exit = 1 ; l’appuie inférieure à 500ms) suivi d’un autre appui.
State = B_released; else if (event == E5) break;
break; State = B_SP; case B_ released : Btn_state = 0 ;
• Proposer les modifications sur la machine à états pour satisfaire ce
break; exit = 1 ;
nouveau fonctionnement.
break;
• Préciser également les actions à exécuter sur les nouveaux états.

(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 84 (Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 85

Etat Action
Exercice d’application Paramètres State = B_UP;
Détecteur multi-state d’un bouton poussoir
initiaux T_UP = millis() ;
• State diagram de la fonction btnPress exit = 0;
B_UP T_UP = millis() - T_UP ;
T_Down = millis();
B_down T_Down=millis()-T_Down;
B_LP Btn_state = 2 ;
exit = 1 ;
B_SP Btn_state = 1 ;
exit = 1 ;
B_released Btn_state = 0 ;
exit = 1 ;
B_ShP -
B_DC Btn_state = 3 ;
exit = 1 ;
(Chapitre II) Cours Technologies des Systèmes Embarqués, CIGBM2-S1 86

Support prepare par : Slim Ben Othman, Ahmed Karim Ben Salem 5

Vous aimerez peut-être aussi