Application Multitâche
4-1 INTRODUCTION
Dans le but d'illustrer les notions relatives au temps
réel, qui ont été décrites dans les chapitres
précédents, nous avons développé une application
utilisant la carte Easypic2 basées sur le PIC18F452.
L'application est écrite en langage C en utilisant le
compilateur MCC18 de Microchip nécessaire à la compilation de
programmes écrits pour le noyau PICOS18. L'IDE MPLAB 7.4 est
utilisé comme environnement intégré de
développement avec le PIC18F452. L'application permet le monitoring de
quatre zones de température, la gestion des entrées de
l'utilisateur et affiche les informations importantes liées à la
température.
4-2 DESCRIPTION DE SYSTÈME
Le matériel du prototype inclut
· Quatre capteurs de température.
· Deux potentiomètres.
· Un port série.
· Quatre afficher 7-segment.
· Clavier numérique de 7 boutons.
· et la gestion d'une alarme sonore.
L'expression « des conditions normales » sera
utilisée fréquemment dans cette note d'application, le
témoin du panneau de démo est en mode de contrôle de
température sans des fonctions d'alarme ou d'utilisateur étant
exécutées.
La base de temps est une interruption périodique de
2ms géré par le Timer1. Il y a un total de six (06) tâches,
dont deux (02) sont dans l'état d'attente dans des conditions normales.
Il y a six événements comme indiquée dans la figure 4-1
.
Fig 4-1 liste des événements
- Dont deux dépendent des conditions
extérieures (par exemple, entrée clavier, alarme)
· Alart_EVENT : En cas de
dépassement des limites de température la tache 0 (convert())
poste un événement (Alart_EVENT) à la tache1
(alarme).
· Keypad_EVENT : En cas d'appuyé
sur les touches de potentiomètre la tache3 (keypad) poste un
événement (Keypad_EVENT) à la tache 5 .
- Et les autres événements qui
définition la périodicité des taches.
· Convert_EVENT : un
événement posté périodiquement (40ms) par
alarm(voir tableaux des alarmes dans fichier "taskdesc.c" ).
· Display_EVENT : un
événement posté périodiquement (2ms) par alarm1
· Keypad_EVENT : un
événement posté périodiquement (20ms) par alarm2
· Usart_EVENT : un événement
posté périodiquement (4ms) par alarm3
On prend par exemple l'événement
Convert_EVENT :
Fig 4-2 exemple d'un événement
L'instruction SetRelAlarm (
ALARM_Convert, 40, 40) est utilisée
pour programmer l'alarme de la tâche 0.Une alarme est un objet TIMER
basé sur une horloge logicielle à 1ms.
La fonction SetRelAlarm possède 3 champs
:
· Alarm ID (ALARM_Convert) : indice de
l'alarme dans le tableau Alarm_list
· TIMER 1 (40 ms): nombre de millisecondes
avant le premier événement posté
· TIMER 2 (40 ms): nombre de millisecondes
entre 2 événements successifs
L'alarme 0 va attendre 40ms avant de poster
l'événement ALARM_Convert à la
tache0, puis le postera périodiquement toutes les 40 ms.
Dans le fichier "taskdesc.c" (tableau des alarmes) l'alarme dont
l'ID vaut 0 (ALARM_Convert) a été associée
à la tâche TASK0.
Avec : #define ALARM_Convert 0 (
L'alarme 0 au tableau des alarmes -voir tableau des
alarmes - ).
Fig 4-3 tableau des alarmes
- Quatre capteurs de température sont divisés en
quatre zones (Z1, Z2, Z3, Z4). Chaque zone sera surveillée pour
contrôler si la température est entre les limites haute et
basse.
Fig 4-4 Montage d'un capteur de température
Une zone qui n'est pas dans les limites actionnera l'alarme
sonore(en PC) en affichant simultanément le numéro de la zone en
alarme dans le premier digit. Par exemple la zone 3 est on
alarme .
Dans des conditions normales, les afficheurs afficheront
toujours une température de zone sélectionnée au clavier.
La zone particulière sur l'affichage dépendra du bouton de zone
appuyé, par exemple la zone 2 qui est sélectionné par le
bouton 2 affiches la température 23°C
Deux boutons sont utilisés pour le réglage des
potentiomètres utilisés pour simuler la valeur analogique de la
température. Quand un de ces boutons est appuyé la valeur
correspondant à la température est affichée. A ce moment
deux actions peuvent être exécutées ; soit ajuster la
valeur du potentiomètre, soit on presse un autre bouton pour quitter
cette fonction.
- La liaison série, en mode asynchrone, avec un PC est
utilisée pour envoyer un message vers le moniteur du PC, affichant les
différentes zones avec leur température ; cette action est
initiée sur demande au niveau du PC par la touche
`Z'.
Fig 4-5 affichage de température sur PC.
4-3 Configuration De L'application
Tout d'abord il est nécessaire de créer un
projet sous MPLAB®, qui contient les sources du noyau. Ensuite il faudra
avoir installé le compilateur MCC18 de Microchip, et l'avoir
paramétré (voir
www.picos18.com).
Puis il faut inclure les taches (Source Files.*c) et les
fonctions (Header File * .h) nécessaires à l'application Voir
annexe 1.
4-4 Description Détaillée :
On va dans ce paragraphe expliqué des priorités,
du mode, et des responsabilités de chaque tâche :
1-Tsk-task 0 : (tache de conversion ())
· Priorité : 10
La tâche a une priorité de « 10 » parce
que nous devons déterminer les températures de thermistance pour
décider si des conditions d'alarme existent.
· -Mode : Exécute toutes les 40
millisecondes.
· Responsabilités :
b. Cette valeur est comparée avec les
températures faibles et élevées de seuil (par
l'intermédiaire de la fonction ConvertTemp () pour déterminer si
une alarme est nécessaire.
c. Si aucune alarme ne s'appelle alors d'autres zones de
thermistance sont converties.
· Organigramme
· Programme:
2- Tsk-task 1 : (tache des alarmes ())
· Priorité : 10
Cette tâche a également une priorité de
«10 », mais s'exécute après Tsk-task 0 en mode Round
Robin.
Après détermination de la température, la
vérification des alarmes de zone est la plus importante.
· Mode : Attente sur un
événement.
· Responsabilités :
a. A la même priorité comme Tsk-task 0, et
exécute juste après, Tsk-task 0.
b. Affiche le numéro de zone dans l'alarme.
c. Actionne l'alarme sonore (marche-arrêt).
· Organigramme
· Programme:
3-Tsk-tas 2 (Tâche d'affichage () )
· -Priorité: 9
Permet aux températures d'être lues pour
affichage.
· Mode : Exécute toutes les 2
millisecondes.
· Responsabilités :
a. Convertit la valeur de la température en format
nécessaire pour
b. Affiche chaque chiffre converti.