Entrées/sorties numériques

Tous les bus de l'AVR sont disponible à la fois en lecture et en écriture, si ils sont utilisées dans le mode logique par défaut entrées/sorties (I/O). Les bus de l'AVR sont reconnus sous forme de lettres à partir du début de l'alphabet: A, B, C etc. Certains AVR peuvent ne pas avoir de bus A, bien que, si le bus B existe. Chaque bus est un mot de 8 bits et chaque bit à généralement sa propre broche du micro-contrôleur correspondante. Les broches sont dénombrées avec des chiffres en partant de 0. Pour toutes les directions du bus, il y a deux registres séparés. En plus de ça, il y a un registre qui décide de la direction réelle du bus, où ma valeur du bit à 1 marque le bus comme une sortie puis en entrée lorsque la valeur est à 0. Tous ensemble, chaque bus a trois registres:

Exemple

Tâche: configurer les broches 0-3 du bus B en entrées, broches 4-7 en sorties, configurer la broche 5 en position haute et lire les valeur des broches 0-3 vers une variable. Le code C correspondant ressemble à ceci:

#include <avr/io.h>
 
int main()
{
	unsigned char x;
 
	// Pins 0-3 as inputs, 4-7 as outputs
	DDRB = 0xF0;
 
	// Set pin five as high
	PORTB |= (1 << PIN5);
 
	// Read the values from inputs 0-3
	x = PINB & 0x0F;
}

Dans cet exemple, les entrée sont utilisées dans le mode Hi-z (impédance haute). In essence, the input does not put practically any load on the source of the signal. Ce mode peut être nécessaire, si la broche est utilisée comme bus de données. Si la broche est utilisée pour un bouton, un interrupteur et n'importe quelle autre solution, dont l'entrée est reliée à la terre, il est conseillé d'utiliser une résistance pull-up avec l'entrée. Pour ce faire, le bit de sortie de la broche correspondante doit être configurée en position haute dans le mode d'entrée - cela à pour effet, une résistance est placée entre la tension d'alimentation et l'entrée, qui garde la tension d'entrée jusqu'à ce qu'elle soit abaissée par quelque chose. Le but d'une résistance pull-up est de pallier au flottement de l'entrée due à l'électricité statique ou tout autre interférence. Après le démarrage du contrôleur, tous les bus d'entrée/sortie sont configurés en mode impédance haute par défaut.

Habituellement, les broches des bus d'entrées/sorties sont utilisée pour d'autres périphériques, a part les connections logiques. S'il est nécessaire d'utiliser une autre fonction de la broche, le mode entrée/sortie approprié peut être trouvé dans la notice de l'AVR. Par exemple pour utiliser une voie ADC en entrée, la broche doit être en mode entrée et doit générer un signal PWM, qui doit être en mode sortie. Certains modules périphériques, sélectionnent eux-même leur mode d'entrée/sortie.