Compte Rendu N°2 ATELIER STRE.pdf

  • Upload
    saf-bes

  • View
    71

  • Download
    4

Embed Size (px)

Citation preview

  • Anne Universitaire : 2012/2013

    COMPTE RENDU N2 ATELIER STRE

    16/11/2012 Objectifs

    - Faire clignoter une diode LED avec le noya Picos 18

    - Prempter deux tches.

    Ministre de l'Enseignement et de la Recherche

    Scientifique

    Direction Gnrale des Etudes Technologiques

    Institut Suprieur des Etudes Technologiques de

    Djerba

  • Compte rendu N2 atelier STRE

    Travail ralis par : Besrour Mohamed Safouan et Yahyaoui Imed L3SEM Page 1

    1. Pour crer un projet MPLAB avec le noyau temps rel Picos 18, on poursuit les tapes indiqu dans le compte rendu prcdente (Voir compte rendu sur le lien suivant : http://youtu.be/nlr9YNJsiEE?hd=1

    2.

    Cette photo reprsente ltape 2 de ce TP, cest lemplacement dun point darrt (break point) sur la ligne

    en face de linstruction while (1).

  • Compte rendu N2 atelier STRE

    Page 2

    3.

    Dans cette tape on veut changer ltat du tache0 de READY (prt) ltat suspendu (SUSPENDED)

    NB : ce changement aura lieu dans la ligne 148 du fichier taskdesc.c

    Aprs cette modification une le noyau na aucune tche excuter et donc dans la simulation sarrte au

    niveau de la ligne 26 du fichier Picos18i.c.

    4.

    TASK(TASK0) { TRISBbits.TRISB4 = 0; LATBbits.LATB4=1 ; SetRelAlarm(ALARM_TSK0,1000,10); while(1) { WaitEvent(ALARM_EVENT); ClearEvent(ALARM_EVENT); LATBbits.LATB4=~LATBbits.LATB4 ; } }

  • Compte rendu N2 atelier STRE

    Travail ralis par : Besrour Mohamed Safouan et Yahyaoui Imed L3SEM Page 3

    Ce code permet de faire clignoter une diode led dans une seule tache.

    Simulation de la tache 0 avec ISIS

    5.

    Pour programmer le pic on utilise le picdem2plus (limage prcdente) et le MPLAB

  • Compte rendu N2 atelier STRE

    Page 4

    - Debugger select Tools None

    - Programmer Select Program MPLAB ICD2

  • Compte rendu N2 atelier STRE

    Travail ralis par : Besrour Mohamed Safouan et Yahyaoui Imed L3SEM Page 5

    6.

    Pour ajouter une nouvelle tche il faut suivre les tapes suivantes.

    Ajouter un fichier tsk_task1.c sous la rpertoire MyApp (Figure 1).

    Edit Proprietes

  • Compte rendu N2 atelier STRE

    Page 6

    C File Types

    Cocher Line Numbers (Pour afficher le nombre de chaque ligne).

  • Compte rendu N2 atelier STRE

    Travail ralis par : Besrour Mohamed Safouan et Yahyaoui Imed L3SEM Page 7

    Dclarer le TASK1 avec la mme syntaxe de TSCK0 (ce changement aura lieu la ligne 129 de

    fichier taskdesc.c

    Dfinir le TASK1 sous la TASK0 (ce changement aura lieu la ligne 156 jusqu la ligne 166 de

    fichier taskdesc.c

  • Compte rendu N2 atelier STRE

    Page 8

    Dans le fichier define.h, il faut dclarer lidentifient de chaque tche ajoute et la leur priorit.

    7.

  • Compte rendu N2 atelier STRE

    Travail ralis par : Besrour Mohamed Safouan et Yahyaoui Imed L3SEM Page 9

    8. NB1: Pour Simuler il faut dclarer les ports, donc il faut suivre les tapes suivantes :

    View Watch

    Add SFR (port)

    NB2 : Pour assurer le bon fonction de simulation il est prfrable de dsactiver Watch dog , donc il faut

    suivre ces tapes :

    Configure Configure Bits

  • Compte rendu N2 atelier STRE

    Page 10

    Watchdog Timer Disabled

    Lors de la simulation dans la question numro 8 la simulation reste dans le TASK0 car le programme reste

    dans la boucle while (1).

    Donc il faut ajouter une instruction qui permet le dplacement entre la tche 0 et la tche 1.

  • Compte rendu N2 atelier STRE

    Travail ralis par : Besrour Mohamed Safouan et Yahyaoui Imed L3SEM Page 11

    9.

    Pour savoir si la priorit est dfini par le trie ascendant ou le trie descendant, on veut permuter la valeur

    de la priorit de chaque tache dans le fichier define.h.

    Aprs la simulation on constate que la tche qui possde le nombre plus grand de priorit sera la tche

    prioritaire donc pour garder la priorit la tache 1 il faut changer leur priorit avec un nombre suprieur

    la priorit de la tache 2

    10.

    Lorsquon attribue les mmes valeurs de priorit pour les deux tache on constate que le noyau choisi la

    TASK0 sans tenir compte de lidentificateur, cest--dire que ce choix est alatoire.

  • Compte rendu N2 atelier STRE

    Page 12

    11.

    Dans cette solution on utilise deux tache lun pour allumer la diode et lautre pour lteindre.

    Cette solution utilise la fonction TerminateTask () qui permet de faire passer ltat d une tche de

    RUNNING SYSPENDED. La tche nest plus alors considre par le noyau. Pour lexcuter de nouveau il

    est ncessaire de lactiver laide de la fonction ActivateTask.

    Dans notre cas le bouclage se fait par le pic car aprs TerminateTask () de tsk_task1.c le pic de r

    excute le fichier ds le dbut dans le clignotement sera continuer.

  • Compte rendu N2 atelier STRE

    Travail ralis par : Besrour Mohamed Safouan et Yahyaoui Imed L3SEM Page 13

    12. Dans la deuxime solution on a utilis Set Event (Task ID, Task Event) , Set Event permet dactiver une autre

    tche , donc on peut faire un boucle avec le programme grce cette fonction.