Changes between Version 1 and Version 2 of SujetTP1-2016


Ignore:
Timestamp:
Jan 21, 2016, 1:43:36 PM (8 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTP1-2016

    v1 v2  
    7979Avant de commencer à écrire du code, déterminez quelles sont les différentes étapes nécessaires depuis l'initialisation jusqu'à l'envoi des valeurs 0 ou 1 sur le GPIO.
    8080
    81 Dans un premier temps, on vous ne demande pas d'écrire le code spécifique à la manipulation des registres du contrôleur GPIO. Pour vous aider, vous avez à disposition une petite librairie "libgpio".
    82 
    83 Pour récupérer cette librairie, exécuter la commande suivante dans un terminal et dans le dossier que vous souhaitez pour contenir votre code pour ce premier TP.
     81Récupérer le répertoire lab1, exécuter la commande suivante dans un terminal et dans le dossier que vous souhaitez pour contenir votre code pour ce premier TP.
    8482{{{
    85 cp -r /users/enseig/jpeeters/m1.peri/lab1 .
     83cp -r /users/enseig/franck/peri/lab1 .
    8684}}}
    8785
     
    9896Refaites le même exercice que précédemment, mais cette fois-ci configurez plusieurs GPIO en sorties.
    9997
    100 En plus du GPIO 4 de l'exercice précédent, rajoutez 3 définitions pour les LED1, LED2 et LED3 qui sont respectivement connectées aux GPIO 17, 22 et 27.
     98En plus du GPIO 4 de l'exercice précédent, rajoutez la LED1 qui est connectée sur le GPIO 17.
    10199
    102100Avant d'exécuter votre programme, validez votre code avec le chargé de TP !
     
    106104Maintenant que vous maîtrisez le contrôle d'un GPIO en sortie, passons au mode "entrée".
    107105
    108 Toujours à l'aide de la librairie libgpio fournie avec ce TP, écrivez un programme qui configure la GPIO <à définir> en entrée. Et affichez la valeur de ces GPIO dans une boucle infinie (boucle d'échantillonnage).
     106Ecrivez un programme qui configure la GPIO <à définir> en entrée. Vous devez afficher la valeur de ce GPIO dans une boucle infinie (boucle d'échantillonnage). Il faut que vous configuriez la résistance de pull-up.
    109107
    110108Une fois réalisé, compilez votre programme comme précédemment à l'aide du Makefile fourni. Et validez votre code avec le chargé de TP !
    111109
    112110Ensuite, copiez votre programme sur la carte comme indiqué dans l'exercice précédent.
    113 
    114 Les cartes Raspberry Pi sont équipées d'un petit circuit analogique dans lequel des boutons poussoir sont connectés aux certains GPIO. Ces GPIO sont connectés avec une résistance de Pull-Up, ce qui signifie que lorsque que vous
    115 n'appuyez pas, la valeur du GPIO vaut 1 et lorsque vous appuyez, le courant
    116 passe par à la masse et la valeur du GPIO passe à 1.
    117111
    118112Qu'observez-vous ?
     
    129123Comment pouvez-vous écrire un programme qui échantillonne à cette fréquence ?
    130124
    131 == 5. Manipulation de registres bas-niveau ==
     125== 5. Réalisation d'une petite librairie ==
    132126
    133 Pour mieux comprendre les implications à bas niveau de l'utilisation d'un
    134 contrôleur de GPIO, on vous demande de réécrire les fonctions gpio_setup,
    135 gpio_config, gpio_value et gpio_update.
    136 
    137 Vous réaliserez cela étape par étape. Aidez-vous des fichiers objet
    138 précompilés dans le répertoire lab1.
    139 
    140 Par exemple, si vous souhaitez écrire votre propre gpio_setup, créez un
    141 fichier gpio_setup.c dans lequel vous écrirez votre code. Pour recompiler
    142 la librairie libgpio, il vous suffit de réutiliser le Makefile fourni.
    143 
    144 ATTENTION: pour fonctionner avec le reste de la librairie libgpio, il vous
    145 faut déclarer dans gpio_setup.c une variable globale gpio_base_p de type
    146 uint32_t volatile *. Cette variable qui est un pointeur vers un entier
    147 non signé de 32 bits doit contenir l'adresse de début de la région de mémoire
    148 virtuelle associée après un appel à la fonction mmap.
     127Écrire les fonctions suivantes et fabriquer une fonction libgpio.a
     128* gpio_open : ouverture et mapping.
     129* gpio_setup : setup des broches
     130* gpio_read : lecture d'une broche
     131* gpio_write : écriture d'une broche
    149132
    150133== 6. Amusez-vous ! ==