La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Présentation des TPs système temps réel sur microcontrôleur

Présentations similaires


Présentation au sujet: "Présentation des TPs système temps réel sur microcontrôleur"— Transcription de la présentation:

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 Journées Systèmes Industriels 28/01/1999
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 Journées Systèmes Industriels 28/01/1999
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 Journées Systèmes Industriels 28/01/1999
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 Interactions entre tâches
Le noyau Temps Réel RTX166 Interactions entre tâches Communication d’informations (messages) Boîtes à lettres (création, lecture, écriture …) Partage de ressource Sémaphores - jetons (initialisation, attente de jetons, remise de jetons …) Synchronisation Signal (attente, envoi, effacement …) Journées Systèmes Industriels 28/01/1999

8 Structure d’une application
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 travail des 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 /* 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"); } 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.rtx = 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 interrupteurs Reset 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 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 Journées Systèmes Industriels 28/01/1999
Les TPs Temps Réel Simulation Constitution d’une application RTX166 avec microvision - gestion des tâches (priorité, enchaînement …) Communication d’informations le modèle producteur/consommateur Journées Systèmes Industriels 28/01/1999

16 Microcontrôleur - maquette
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. C a r t e 1 6 7 LED 1 Potentiomètre OV 5V LED 2 Entrée 1 Entrée 2 Journées Systèmes Industriels 28/01/1999

18 Journées Systèmes Industriels 28/01/1999
Initialisations ; initialisation des lignes de commande des LEDs bset DP8.0 ; ligne en sortie (LED 1) bset DP8.1 ; ligne en sortie (LED 2) extr #1 bclr ODP8.0 ; niveau TTL bclr P8.0 ; initialement à 0 bclr P8.1 ; initialisation du convertisseur A/N mov ADCIC,#004Ch ; It de fin de conversion ; signalée (priorité 3) mov ADEIC,#0 ; pas d'IT de perte d ’info mov ADCON,#02B1h ; canaux 0 et 1, mode continu, ; conv. relancée par lecture bset PSW.11 ; autoriser les ITs Journées Systèmes Industriels 28/01/1999

19 Journées Systèmes Industriels 28/01/1999
Tâche de fond ; boucle d'asservissement boucle: mov r1,entree1 ; valeurs mesurées cmp r1,entree2 jmp cc_ULE,e1estinf bset P8.0 ; entrée1 supérieure (LED 1 allumée) bclr P8.1 ; LED 2 éteinte jmp boucle e1estinf: bclr P8.0 ; entrée1 inférieure (LED 1 éteinte) bset P8.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,# b ; 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 éteinte t2 1V OV éteinte éteinte t3 1V 5V éteinte allumée t4 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 acquises par 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 Journées Systèmes Industriels 28/01/1999
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 …) Journées Systèmes Industriels 28/01/1999


Télécharger ppt "Présentation des TPs système temps réel sur microcontrôleur"

Présentations similaires


Annonces Google