Référence du Langage Arduino : Mini | Standard | Etendue | Librairies | Comparaison
Les registres de port permettent une manipulation de bas-niveau (çàd au niveau du matériel lui-même) et plus rapide des broches d'entrée/sortie du microcontrôleur de la carte Arduino. Les microcontrôleurs utilisés pour les cartes Arduino (l'ATmega8 et l'ATmega 168, 328) ont trois ports :
Chaque port est contrôlé par 3 registres, qui sont également défini en tant que variable dans le langage Arduino :
Le brochage de l'ATmega 8 (voir la fiche technique) et de l'ATmega 168 (voir la fiche technique) montre les ports. Le brochage de l'ATmega 328 (voir la fiche technique) se superpose exactement à celui de l'ATmega168.
Les registres DDR et PORT sont accessibles en écriture et en lecture. Le registre PIN n'est accessible qu'en lecture.
Le PORTD correspond aux broches numériques 0 à 7 de la carte Arduino et est contrôlé par les 3 registres suivants :
Le PORTB correspond aux broches numériques 8 à 13 de la carte Arduino. Les 2 broches 6 et 7 du port sont connectées au quartz et ne sont pas utilisables. Le PORTB est contrôlé par les registres suivants :
Le PORTC correspond aux broches analogiques 0 à 5 (= broches numériques 14 à 19) de la carte Arduino. Les broches 6 et 7 sont accessibles uniquement sur la carte Arduino Mini?. Le PORTC est contrôlé par les 3 registres suivants :
Chaque bit de ces registres correspond à une broche du port; par exemple, le bit de poids faible (bit 0) des registres DDRB, PORTB et PINB se réfèrent à la broche 0 du port B (broche numérique 8 de la carta Arduino). Pour une description complète du brochage des broches Arduino avec les ports et bits, voir le schéma de votre microcontrôleur : l'ATmega 8 (voir la fiche technique), l'ATmega 168 (voir la fiche technique), l'ATmega 328 (voir la fiche technique). ( Noter que certains bits de ports peuvent être utilisés pour d'autres choses que des entrées/sorties; faites attention à ne pas changer les valeurs des bits correspondants dans les registres .)
Voir également : le brochage de l'ATmega 168/328
Comme indiqué dans le brochage ci-dessus, les registres du Port D contrôlent les broches 0 à 7 de la carte Arduino.
Vous noterez cependant que les broches 0 et 1 sont utilisées pour les communications série nécessaires pour la programmation et la mise ou point de l'Arduino, et donc, modifer ces broches sera généralement à éviter à moins d'une nécessité pour les fonctions d'entrée et de sortie série. Bien être conscient que ceci peut interférer avec les transferts de programme et l'affichage de messages.
Le regitre DDRD est le registre de direction du port D (broches numériques 0 à 7 de la carte Arduino). Les bits dans ces registres contrôle la façon dont les broches du port D sont configurées en ENTREE ou en SORTIE. Par exemple :
DDRD = B11111110; // met les broches n° 1 à 7 de l'Arduino en sortie, la 0 en entrée DDRD = DDRD | B11111100; //c'est plu sûr de configurer les broches 2 à 7 en sortie // sans modifier la valeurs des broches 0 et 1, qui sont les broches RX etTX
Voir les pages de la référence sur les opérateurs bit à bit pour plus de détails :
Le registre PORTD est le registre d'état des sorties du port. Par exemple :
PORTD = B10101000; // met les broches 7,5 et 3 au niveau HAUT
Vous aurez 5 volts sur ces broches toutefois seulement si les broches ont été configurées en sortie en utilisant le registre DDRD ou l'instruction pinMode(). Notez que si on met ces bits à 1 alors que les broches sont en ENTREE, cela active les résistances internes de rappel au plus associées aux broches correspondantes. Pour plus de détails, voir : Les broches numériques d'entrée/sortie
PIND est le registre d'entrée. Il permet de lire l'état de toutes les broches en entrée du port en une seule fois.
D'après le Tutoriel sur les math binaires (en anglais)
D'une manière générale, procéder de la façon décrite ici n'est pas une bonne idée. Pourquoi ? Voici quelques raisons :
Vous allez probablement vous demandez : "bien, pourquoi voudrais-je alors utiliser ce truc ? " Voici quelques avantages positifs de l'accès direct aux ports :
Page d'accueil de la référence Arduino en français
Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.
Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.
La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.
Traduction de la page originale : http://www.arduino.cc/en/Reference/PortManipulation