Étape 2: Contrôle de la résistance de pull-up
Alors, comment peut-on la résistance de pull-up [12,13] par programme contrôler ?
Se rappeler de la mise en service #3, la DDR, le PORT et déclarations de PIN dans Atmel Studio C/C++ contrôlent la fonction et l’état des ports MCU. Par exemple, l’instruction partielle ' DDRB =' fixera le registre de direction de données 8 bits pour le port B avec 0 et 1 qui le MCU interprète ensuite pour définir les broches de port physique B correspondant à l’entrée et de sortie, respectivement. La déclaration partielle « = PINB » (par exemple x = PINB), par exemple, lit le registre d’entrée pour les broches de port physique B. Le ' PORTB =' déclaration partielle va écrire 8 bits à la sortie du port B Registre qui le MCU interprète pour définir les broches correspondantes du port physique B - avec une réserve concernant les résistances de pull-up. Et cela commence notre discussion pour cette étape. Cette étape utilise le port B à titre d’exemple, mais les autres ports disponibles sur un Atmel AVR MCU (par exemple A, B,...) se comportent de la même façon. Rappel, le ATTiny2313A utilise broches 12 à 19 pour port B0 par B7, notée respectivement [1] comme indiqué dans le tableau 1.
Nous considérons un exemple qui illustre l’utilisation de mixtes d’entrée et de sortie pour portB qui actionne également une résistance pull-up. Pour l’exemple, supposons que nous avons seulement besoin de sorties physiques broches 13 et 14 (B1 et B2, voir tableau 1) mais nécessitent des entrées sur le reste des broches pour le Port B. Supposons encore que la broche 18 (c.-à-d., B6) doit avoir une résistance pull-up comme pour un interrupteur semblable à celui illustré dans l’étape précédente.
Tout d’abord, mettre l’accent sur la résistance de pull-up. Il pourra être engagée par écrit un « 1 » à une entrée de broche. Laissez cet évier pendant un certain temps. Écrire un « 0 » à un pin d’entrée désactive la résistance de pull-up interne et configure l’entrée à un état de haute impédance [1].
Tableau 1: Un exemple montrant les broches 12-19 avec les entrées et sorties et PU de pull-up activé et haute impédance HZ.
Broches de physiques | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 |
Nom | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
DDRB | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
PortB physique | Dans | Dans | Dans | Dans | Dans | Hors | Hors | Dans |
PORTB = 0b0100100
0
1
0
0
0
1
0
0
Résultat physique Pin
HZ
UNITÉ CENTRALE
HZ
HZ
HZ
SCR
0V
HZ
Donc pour cet exemple, afin d’obtenir des entrées et sorties sur la quatrième ligne du tableau 1, il faut d’abord définir DDRB = 0b00000110 sorte que physiques broches 13 et 14 sont les sorties et le reste sont des entrées. Pour activer la résistance de pull-up (PU) pour broche 18, nous écrivons un « 1 » B6, qui est une entrée, comme dans la sixième ligne. Ensuite, nous avons mis PORTB = 0b0100100 comme indiqué dans la sixième ligne de la table. La dernière ligne indique les États physiques qui en résultent des broches physiques 12-19. Pour les broches physiques 13 et 14, les valeurs logiques dans le registre DDRB ont été traduits pour les tensions sur les broches comme prévu. Épingles à 12, 15, 17 et 19 sont entrées et ont été mis dans un état de haute impédance, comme en témoigne le HZ, car DDRB définissez-les comme entrées, et les bits correspondants à l’écriture PORTB a désactivé les résistances de pull-up. Souvent (mais certainement pas toujours) le programme définit DDRB et les résistances de pull-up au début de l’exécution et ne réinitialise pas eux. Pour utiliser le port d’entrée/sortie mixte, on a besoin d’une méthode par programmation de distinguer entre les broches d’entrée et de sortie, fournissant ainsi la capacité indépendamment lire et écrire sans affecter les résistances de pull-up et les paramètres de port. Voici où le masquage devient important.