COLE TP Noyaux Embarqués 2021

Telechargé par AHMED HANAFI
Filière : DUT SYSTÈMES EMBARQUÉS
2
ème
ANNEE
Elément de Module M9.1 :
LES NOYAUX EMBARQUÉS
EVALUATION PRATIQUE v1
ESTF - HANAFI AHMED 1
1. PRESENTATION DU SYSTÈME EMBARQUE A REALISER :
Le travail demandé consistera à réaliser 4 tâches permettant de superviser et de commander un système
embarqué représenté par la figure suivante :
Une LED rouge commandée par le pin D12 ;
Un bouton poussoir BP1 connecté au pin D2 via une résistance Pull Down ;
Un capteur de lumière LDR connecté à l'entrée analogique A0.
2. TRAVAIL LOGICIEL A REALISER :
Les 4 tâches qui doivent être crées sont les suivantes :
"Lum_Task" qui permet l'acquisition de la valeur de la luminosité (valeur numérique entre 0 et 1023) ;
"Print_Task" qui permet d'afficher l'état du bouton poussoir (appuyé ou non) dans le moniteur série ;
"LED_Task" qui permet de faire allumer la LED rouge pendant une durée qui est envoyée comme
paramètre à la tâche.
"BP_Task" qui permet de Lire l'état du bouton poussoir BP1.
Il y aura aussi la création de 2 objets freeRTOS permettant la synchronisation et la communication entre ces tâches,
à savoir :
Une file d'attente "Data_BP" (Taille : 2 et type de donnée : int) qui permettra d'envoyer l'état du bouton
poussoir BP1 lu par la tâche " BP_Task " vers la tâche "Print_Task" pour qu'il soit afficher ;
Une sémaphore binaire "Sem_Lum" permettant de synchroniser les 2 tâches "Lum_Task" et "LED_Task".
Ainsi, l'allumage de la LED (pendant une durée fixée par paramètre) ne pourra avoir lieu que si la
luminosité descend en dessous du seuil 450.
NOTES À PRENDRE EN COMPTE :
L'initialisation des pins utilisés ainsi que de l'interface de communication série (9600 bauds) se fera au
niveau de la procédure Arduino "Setup" ;
La tâche la plus prioritaire sera "Lum_Task", suivie de la tâche "BP_Task", puis viennent les 2 tâches
restantes qui auront toutes les deux le même niveau de priorité.
Filière : DUT SYSTÈMES EMBARQUÉS
2
ème
ANNEE
Elément de Module M9.1 :
LES NOYAUX EMBARQUÉS
EVALUATION PRATIQUE v1
ESTF - HANAFI AHMED 2
AIDE MÉMOIRE FREERTOS
1. API NATIF ARDUINO IDE :
Serial.begin(Value)
Serial.print(Value)
Serial.println()
pinMode(pin, Mode)
int N = analogRead(pin)
digitalRead(pin, Value)
delay(value_ms)
2. LES TÂCHES :
#include <Arduino_FreeRTOS.h>
xTaskCreate(TaskCode , TaskName , Pile, parameter, priorité, TaskHandle)
3. LES SÉMAPHORES :
#include <semphr.h>
SemaphoreHandle_t SemT1
SemT1 = xSemaphoreCreateBinary()
xSemaphoreTake(SemT1, portMAX_DELAY) ;
xSemaphoreGive(SemT1) ;
4. LES LISTES D'ATTENTE :
#include <queue.h>
QueueHandle_t file_1
file_1 = xQueueCreate (Queue_Length, Item_Size)
xQueueSend (file_1, &Value, portMAX_DELAY )
xQueueReceive (file_1, &Value, portMAX_DELAY)
Filière : DUT SYSTÈMES EMBARQUÉS
2
ème
ANNEE
Elément de Module M9.1 :
LES NOYAUX EMBARQUÉS
EVALUATION PRATIQUE v1
ESTF - HANAFI AHMED 3
Nom : …………………………………………. Prénom : ……………………………………..;.
PROGRAMME A COMPLETER
// Bibliothèques à inclure
………………………………………………………………….
………………………………………………………………….
………………………………………………………………….
void Lum_Task( void *pvParameters );
void Print_Task( void *pvParameters );
void _Task( void *pvParameters );
void BP_Task( void *pvParameters );
// Paramètre à transmettre à la tâche Blink_Task()
int Delay_Blink = 3;
………………………………………………………………….
………………………………………………………………….
void setup()
{
// Initialisation
………………………………………………………………….
………………………………………………………………….
………………………………………………………………….
// Création des sémaphores, files d'attentes et tâches
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
……………………………………………………………………………………..
}
void loop()
{
}
/*----------------------ches ---------------------*/
void Blink_Task( void *pvParameters )
{
// Récupération du paramètre
…………………………………………………………………………….
// Eteindre la LED initialement
int Etat_LED = LOW;
digitalWrite(……………… , Etat_LED);
while(1)
{
if (……………………………………………………………………….………..)
{
Etat_LED = !Etat_LED;
digitalWrite(……………. , Etat_LED);
delay(……… * 100);
vTaskDelay(1);
}
}
}
void BP_Task(void *pvParameters)
{
int Etat_BP;
while(1)
{
// Lire l'état du bouton poussoir
……………………………………………………………………….
if (………………………………………………..)
{
………………………………………………………………….
}
vTaskDelay(1);
}
}
Filière : DUT SYSTÈMES EMBARQUÉS
2
ème
ANNEE
Elément de Module M9.1 :
LES NOYAUX EMBARQUÉS
EVALUATION PRATIQUE v1
ESTF - HANAFI AHMED 4
Nom : …………………………………………. Prénom : ……………………………………..;.
PROGRAMME A COMPLETER
/*----------------------ches ---------------------*/
void Lum_Task(void *pvParameters)
{
…………………………………………….
while(1)
{
………………………………………………………………………………….
…………………………………………………………………………………
………………………………………………………………………………..
……………………………………………………………………………….
}
}
void Print_Task(void * pvParameters)
{
……………………………………………..
while(1)
{
………………………………………………………………………………….
…………………………………………………………………………………
………………………………………………………………………………..
………………………………………………………………………………….
…………………………………………………………………………………
………………………………………………………………………………..
………………………………………………………………………………….
………………………………………………………………………………..
…………………………………………………………………………………
}
}
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !