Journées Systèmes Industriels 28/01/1999
1
Présentation des TPs système temps réel sur microcontrôleur
P. ANIORTE
M. DALMAU
IUT de Bayonne, Département informatique
Château neuf, Place Paul Bert
Bayonne
Journées Systèmes Industriels 28/01/1999
2
Plan de l’exposé
Le microcontrôleur utilisé (C167) L’environnement de développement (Keil) et le noyau temps réel (RTX) Les maquettes de TP TPs de programmation du microcontrôleur en assembleur et C
objectif : savoir utiliser - les interfaces du microcontrôleur- les interruptions- l’environnement de développement
TPs temps réel objectif : illustrer l’utilisation d’un noyau temps réel
Exemples de TPs réalisés Organisation pratique Problèmes rencontrés
Journées Systèmes Industriels 28/01/1999
3
Le microcontrôleur C167
• CPU• Mémoire RAM (4K)
• 16 registres généraux• 212 registres spéciaux
• Périphériques• Lignes d’E/S (114)• Convertisseur A/N• Générateur d’impulsions• Timers / Compteurs• Liaison série synchrone et asynchrone
• Contrôleur d’interruptions• Contrôleur de bus externe
Journées Systèmes Industriels 28/01/1999
4
L’environnement de développement microvision (Keil)
• Développement de projets en C ou en Assembleur
• Génération d’un exécutable pour C167
• Possibilité d’y inclure le noyau temps réel RTX
Journées Systèmes Industriels 28/01/1999
5
L’environnement de mise au point DScope
• Simulation du C167
• Exécution sur carte externe
• Outils de mise au point
•Points d’arrêt
•Pas à pas
•Variables
•Registres
•Mémoire
•Etat des périphériques
Journées Systèmes Industriels 28/01/1999
6
Le noyau Temps Réel RTX166
Généralités
Multitâche préemptif / priorité
2 classes de tâches. Standard. Rapide
Tâches d’IT gérées par RTX166
Journées Systèmes Industriels 28/01/1999
7
Le noyau Temps Réel RTX166
Interactions entre tâches
Communication d’informations (messages)Boîtes à lettres (création, lecture, écriture …)
Partage de ressourceSémaphores - jetons (initialisation, attente de jetons,
remise de jetons …) Synchronisation
Signal (attente, envoi, effacement …)
Journées Systèmes Industriels 28/01/1999
8
Le noyau Temps Réel RTX166
Structure d’une application
Programme C166 :
Tâches : fonctions C166 étendues
Paramétrage de l’application : nombre maximum de tâches, de boîtes à lettres, de sémaphores, taille de l’espace de travaildes tâches système …)
Transformation du programme C en système multitâche
Journées Systèmes Industriels 28/01/1999
9
Structure d’une application RTX
#include <rtx166.h>
#include <reg167.h>
#define WSPSIZE 256 /* Task workspace size (no of words). */
static t_rtx_handle htache1; /* Handles for tasks */
static t_rtx_handle htache2;
static t_rtx_config rtx_conf; /* Configuration record */
unsigned int huge system_heap[0x800]; /* Use 4 kByte of HDATA */
unsigned int near contxt_heap[0x800]; /* Use 4 kByte of NDATA */
Journées Systèmes Industriels 28/01/1999
10
Structure d’une application RTX (suite)
void tache1 (void) _task_ 1
{
printf("Début de tâche 1\n");
for (;;) { printf("Tache 1 \n"); }
os_delete_task (os_running_task_id());
}
void tache2 (void) _task_ 2
{
printf("Début de tâche 2\n");
for (;;) { printf("Tache 2 \n"); }
os_delete_task (os_running_task_id());
}
Journées Systèmes Industriels 28/01/1999
11
Structure d’une application RTX (fin)void main (void)
{
rtx_conf.max_tasks = 8;
rtx_conf.max_mailboxes = 0;
rtx_conf.max_semaphores = 0;
rtx_conf.max_mem_pools = 0;
rtx_conf.idle_wsp_size = WSPSIZE;
rtx_conf.clock_wsp_size = WSPSIZE;
rtx_conf.round_robin = TRUE;
rtx_conf.system_pool = system_heap;
rtx_conf.system_pool_size = sizeof(system_heap);
rtx_conf.rtx51 = FALSE;
rtx_conf.context_pool = contxt_heap;
rtx_conf.context_pool_size = sizeof(contxt_heap);
status = os_start_system (&rtx_conf);
printf("demarrage tache principale\n");
status = os_create_task (&htache1, 1, WSPSIZE);
status = os_create_task (&htache2, 2, WSPSIZE);
os_delete_task (os_running_task_id());
}
Journées Systèmes Industriels 28/01/1999
12
La maquette de TPs
Maquette de TPs
Face avant
8 Sorties numériques à LED
7 x 8 lignes d’entrées/Sorties
dont 16 analogiques
2 boutons poussoirs
2 entrées analogiques par potentiomètres (0 à 5V)
8 Entrées numériques par interrupteursReset du
C167
Carte d’évaluation C167
microcontrôleur + RAM + liaison série
PC
Microvision + Dscope
Alim
Journées Systèmes Industriels 28/01/1999
13
TPs de programmation du microcontrôleur en assembleur et en C
Programmation en assembleur TP1 : Utilisation d’un port d’Entrée/Sortie
Ecriture d’un premier programme en assembleur Utilisation de lignes numériques en entrée et en sortie, détection de niveaux logiques
TP2 : Détection d’un seuil analogique, comparaison de tensions Ecriture d’une procédure d’interruption Utilisation du convertisseur analogique/numérique
Programmation en C TP3 : Vumètre à LEDs avec valeur de crête
Ecriture d’un premier programme en C
TP4 : Chenillard à LEDs Ecriture d’une procédure d’interruption Programmation d’un timer
Journées Systèmes Industriels 28/01/1999
14
TPs de programmation du microcontrôleur en C (suite)
TP5 : Amélioration du chenillard à LEDs Arriver à une application complexe Adjonction d’interruptions
Interrupteur marche/arrêt
Entrée analogique de réglage de vitesse
Entrée analogique de réglage de longueur
Gestion des priorités entre interruptions Introduire la nécessité d’un système temps réel
TP6 : Générateur de signaux carrés à fréquence et rapport cyclique variables Utilisation de la MLI Problèmes de précision des calculs
choix des types de variables
ordre des opérations
Problèmes de vitesse d’exécution (durée des calculs)
Journées Systèmes Industriels 28/01/1999
15
Les TPs Temps Réel
Simulation
Constitution d’une application RTX166 avec microvision -gestion des tâches (priorité, enchaînement …)
Communication d’informationsle modèle producteur/consommateur
Journées Systèmes Industriels 28/01/1999
16
Les TPs Temps Réel
Microcontrôleur - maquette
Tâche d’IT
Synchronisation
Application de synthèse :partage de ressource et communication d’information
Journées Systèmes Industriels 28/01/1999
17
Comparateur de tension (TP2)
On veut réaliser un comparateur de tension dont le fonctionnement est le suivant :
Lorsque l’entrée 1 est inférieure à l’entrée 2, la LED 1 seule est allumée. Alors que lorsque l’entrée 1 est supérieure à l’entrée 2, c’est la LED 2 qui est seule allumée.
1°) Proposer un montage à base de C167 permettant de réaliser ce comparateur à LEDs.
2°) Ecrire le programme en assembleur correspondant. Ce programme sera constitué
- d’un programme principal qui gère l’état des LEDs en fonction des valeurs mesurées sur les entrées analogiques
- et d’une procédure d’interruption qui tient à jour ces valeurs mesurées sur les entrées.
Carte
C167
LED 1
PotentiomètreOV 5V
PotentiomètreOV 5V
LED 2
Entrée 1
Entrée 2
Journées Systèmes Industriels 28/01/1999
18
; initialisation des lignes de commande des LEDsbset DP8.0 ; ligne en sortie (LED 1)bset DP8.1 ; ligne en sortie (LED 2)extr #1bclr ODP8.0 ; niveau TTLbclr P8.0 ; initialement à 0bclr P8.1
; initialisation du convertisseur A/Nmov ADCIC,#004Ch ; It de fin de conversion
; signalée (priorité 3)mov ADEIC,#0 ; pas d'IT de perte d ’infomov ADCON,#02B1h ; canaux 0 et 1, mode continu,
; conv. relancée par lecturebset PSW.11 ; autoriser les ITs
Initialisations
Journées Systèmes Industriels 28/01/1999
19
Tâche de fond
; boucle d'asservissement
boucle: mov r1,entree1 ; valeurs mesurées
cmp r1,entree2
jmp cc_ULE,e1estinf
bsetP8.0 ; entrée1 supérieure (LED 1 allumée)
bclrP8.1 ; LED 2 éteinte
jmp boucle
e1estinf: bclr P8.0 ; entrée1 inférieure (LED 1 éteinte)
bsetP8.1 ; LED 2 allumée
jmp boucle ; asservissement (boucle infinie)
Journées Systèmes Industriels 28/01/1999
20
Procédure d’interruption
finconv PROC INTERRUPT can=40
; procédure de fin de conversion : met à jour les valeurs
; correspondant aux deux entrées
bclr ADCIC.7 ; effacer l'indication d'IT
mov r5,ADDAT ; résultat de la mesure
mov r2,r5 ; pour garder le n° de canal
shr r2,#12 ; n° de canal seul
and r5,#0000001111111111b ; enlever le n° de canal
cmp r2,#0 ; canal 0 ?
jmp cc_NE,canal1
mov entree1,r5 ; sauvegarder dans entrée 1
jmp finit
canal1: mov entree2,r5 ; sauvegarder dans entrée 2
finit: reti
finconv ENDP
Journées Systèmes Industriels 28/01/1999
21
Application de synthèse
1ère séance Partage d’un CAN par 2 tâches surveillant 2 potentiomètres
La première tâche allume une LED lorsque la valeur atteint 2,5V et l’éteint lorque la valeur tombe à 0,5V
La deuxième tâche allume une autre LED lorsque la valeur atteint 4,5V et l’éteint lorque la valeur tombe à 3V
Journées Systèmes Industriels 28/01/1999
22
Application de synthèse
1ère séance (suite)
Test visuel :
t pot.1 pot.2 LED 1 LED 2
t1 OV OV éteinte éteintet2 1V OV éteinte éteintet3 1V 5V éteinte alluméet4 1V 4V éteinte allumée
Journées Systèmes Industriels 28/01/1999
23
Application de synthèse
2ème séance
La gestion des LEDs est confiée à une 3ème tâche
Il convient de lui communiquer les valeurs acquisespar les 2 tâches précédentes
La boîte à lettres est le dispositif mis en œuvre
Journées Systèmes Industriels 28/01/1999
24
Objectifs et bilan
Objectifs Sensibilisation à l’informatique industrielle (capteurs, actionneurs, interruptions,
problèmes de temps …) Prise en main d’un environnement de développement croisé Programmation d’un microcontrôleur en assembleur et en C Utilisation d’un noyau temps réel Comparaison des solutions traditionnelles et temps réel.
Bilan Plutôt bien perçu par les étudiants Peu de problèmes techniques (faisabilité, durée …) Vérification visuelle possible du bon fonctionnement du programme écrit Difficultés de test et de mise au point des programmes par les étudiants Nécessité d ’un encadrement important
Journées Systèmes Industriels 28/01/1999
25
Organisation pratique des TPs
Salle de 6 postes + un poste enseignant
Groupes de 12 étudiants travaillant en binômes
TPs de 3 heures
De nombreux problèmes techniques au début (claquage de microcontrôleurs, de cartes) en partie résolus par la maquette (boîte métallique fermée, alim propre..)
Journées Systèmes Industriels 28/01/1999
26
Les problèmes qui restent et ce que l’on souhaite faire
Problèmes majeurs La maquette limite beaucoup les possibilités (entrées/sorties) Les TPs sont peu réalistes (asservissement, moteurs, capteurs …) Le logiciel de Keil comporte encore pas mal de lacunes (gestion des
projets, points d’arrêts, pertinence de ce que l’on voit …)
L’avenir Protéger davantage la maquette et l’améliorer Utiliser les montages des TPs d’électronique (capteurs, filtres …) Faire le lien ou le parallèle avec les TPs d’automatique (asservissement de
moteurs …)
Top Related