h1. Programmation sous Linux
Mon BBB (révision C) roule sous Debian 7 (wheezy)
h2. Introduction
En Linux, tout est un fichier.
Dans les exemple en C, la librairie stdio.h seras utilisée avec les fonctions :
- fopen()
- fwrite()
- fclose()
Aucune vérification d'erreur I/O n'est faite dans ces exemples !
h2. GPIO(General Purpose Input/Output)
Un petit calcul doit-être fait pour déterminer la correspondance entre le nom BBB et celui sous Linux.
Télécharger le "System Reference Manual":http://elinux.org/Beagleboard:BeagleBoneBlack#Hardware_Files
La section PRU-ICSS Pin Access est celle qui nous intéresse.
Le calcul est le suivant :
Multiplier le numéro du chip par 32 et ajouter le numéro de la pin.
Exemple : Pour utiliser la pin 12 du connecteur P8 (GPIO1_12), le signal correspondant sous Linux est le 44 (1 x 32 + 12 = 44).
L'utilisation d'une pin se fait en 4 étapes
Exporter la pin¶
Choisir la direction¶
Choisir la valeur¶
Enlever l'export de la pin¶
h3. Ligne de commande
Exporter la pin
echo 44 > /sys/class/gpio/export
Un dossier gpio44 existe maintenant.
Le fichier direction sélectionne le mode d'utilisation de la pin :
- in : Entré
- out : Sortie
echo out > /sys/class/gpio/gpio44/direction
Le fichier value sélectionne la valeur de la pin :
- 0 : Low
- 1 : High
echo 1 > /sys/class/gpio/gpio44/value
Une fois terminé, on doit enlever le « export » de la pin
echo 44 > /sys/class/gpio/unexport
h3. C
Code
#include
int main(void)
{
FILE *fp;
/* Export */
fp = fopen("/sys/class/gpio/export","w");
fwrite("44", sizeof(char), 2, fp);
fclose(fp);
/* Direction */
fp = fopen("/sys/class/gpio/gpio44/direction","w");
fwrite("out", sizeof(char), 3, fp);
fclose(fp);
/* Value */
fp = fopen("/sys/class/gpio/gpio44/value","w");
fwrite("1", sizeof(char), 1, fp);
fclose(fp);
}
h2. Entré analogique
Voir issue #11
La lecture est faite à partir d'une référence de 1.8 Volts en incréments de ≈ 1 mV (de 0 @ 1798).
Il y a 8 ports (AIN0 @ AIN7) mais AIN7 n'est pas disponible sur les connecteurs.
h3. Ligne de commande
Activer les ports ADC
# Activate ADC ports
echo cape-bone-iio > /sys/devices/bone_capemgr.9/slots
# Read the value in AIN1
cat /sys/devices/ocp.2/helper.15/ANI1
h2. Sortie analogique (PWM(Pulse Width Modulation))
Voir issue #12
Mis à jour par Patrice Nadeau il y a environ 10 ans · 37 révisions