Changes between Version 1 and Version 2 of SujetTP1-2016
- Timestamp:
- Jan 21, 2016, 1:43:36 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SujetTP1-2016
v1 v2 79 79 Avant 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. 80 80 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. 81 Ré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. 84 82 {{{ 85 cp -r /users/enseig/ jpeeters/m1.peri/lab1 .83 cp -r /users/enseig/franck/peri/lab1 . 86 84 }}} 87 85 … … 98 96 Refaites le même exercice que précédemment, mais cette fois-ci configurez plusieurs GPIO en sorties. 99 97 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.98 En plus du GPIO 4 de l'exercice précédent, rajoutez la LED1 qui est connectée sur le GPIO 17. 101 99 102 100 Avant d'exécuter votre programme, validez votre code avec le chargé de TP ! … … 106 104 Maintenant que vous maîtrisez le contrôle d'un GPIO en sortie, passons au mode "entrée". 107 105 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).106 Ecrivez 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. 109 107 110 108 Une fois réalisé, compilez votre programme comme précédemment à l'aide du Makefile fourni. Et validez votre code avec le chargé de TP ! 111 109 112 110 Ensuite, 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 vous115 n'appuyez pas, la valeur du GPIO vaut 1 et lorsque vous appuyez, le courant116 passe par à la masse et la valeur du GPIO passe à 1.117 111 118 112 Qu'observez-vous ? … … 129 123 Comment pouvez-vous écrire un programme qui échantillonne à cette fréquence ? 130 124 131 == 5. Manipulation de registres bas-niveau==125 == 5. Réalisation d'une petite librairie == 132 126 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 149 132 150 133 == 6. Amusez-vous ! ==