Changes between Initial Version and Version 1 of li326-Evenements


Ignore:
Timestamp:
Feb 14, 2014, 4:00:02 PM (11 years ago)
Author:
Franck Wajsburt
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • li326-Evenements

    v1 v1  
     1{{{
     2#!html
     3<h1 align=center><u>La Bouton, la LED et l'évènement</u></h1>
     4}}}
     5[[PageOutline]]
     6
     7== Objectif
     8
     9Le but de ce TME est d'apprendre à programmer le PIC en connectant des composants logiciels connectés par des évènements.
     10Un évènement est une extension des interruptions matérielles. Un évènement se compose d'un drapeau à deux états (un bit) associés éventuellement à un buffer pour l'échange de données.
     11
     12Le principe est simple.
     13 - Soit deux composants logiciels (des tâches) TA et TB.
     14 - Soit un buffer de donnée BUF.
     15 - Soit un drapeau d'évènement EVT.
     16   - EVT=0 signifie que BUF est vide et qu'il appartient à TA.
     17   - TA ne peut écrire dans EVT que si EVT contient 0, et il ne peut écrire que 1.
     18   - EVT=1 signifie que BUF est plein et qu'il peut le lire.
     19   - TB ne peut écrire dans EVT que si EVT contient 1, et il ne peut écrire que 0.
     20
     21Au départ on suppose que EVT=0
     22 - TA veut envoyer une donnée à TB
     23   - TA écrit dans BUF
     24   - TA met EVT à 1
     25   - TA attend que EVT=0
     26   - [TA lit la réponse de TB] (optionnel)
     27   
     28 - TB veut lire une donnée de TA
     29   - TB attend que EVT=1
     30   - TB lit depuis BUF
     31   - [TB met une réponse dans BUF] (optionnel)
     32   - TA met EVT à 1
     33
     34== Mise en pratique
     35
     36L'idée est de commander 2 leds connectés sur deux broches du PORTB (RB1 et RB2) et lire deux boutons poussoirs connectés sur deux broches du portB (RB4 et et RB5). Nous n'allons pas utiliser les interruptions, ni aucun périphérique (ce serait nécessaire pour avoir des bases de temps précises mais nous le ferons plus tard.
     37
     38
     39Nous allons créé plusieurs taches communicant par événements
     40 - **TIMER**
     41   - interface:     
     42     - **e_tic1ms**: mise à 1 à chaque milliseconde
     43   - comportement:   
     44     - fait une attente active d'1 milli-seconde et mets e_tic1ms à 1
     45 - **SEQUENCEUR**
     46   - interface:     
     47     - **e_tic1ms**: bit d'activité 
     48     - **e_bp**:    demande de lecture du bouton poussoir 1, mise à 1 toutes les 10ms
     49     - **e_led**:   demande de changement d'état de la led
     50   - comportement:
     51     - se réveille par e_tic1ms, met à 1 l'évènement e_bp toutes les 10ms, e_led1 toutes les 125ms.
     52 - **BP**
     53   - interface:
     54     - **e_bp**: demande de lecture des BP
     55     - **e_appui_bp**: mise à 1 lorsqu'un appui a été détecté sur le bouton.
     56   - comportement:
     57     - détecte l'appui du bp comme expliqué en cours
     58 - **LED**
     59    - interface:
     60      - **e_led**: demande de changement d'état de la led
     61      - **e_bp**:  demande d'extinction de la led.
     62    - comportement:
     63      - fait clignoter la led après un appui, l'éteint la led après un autre appui.
     64   
     65 
     66 
     67
     68
     69