Atmel démarrage 3: Binky One – PORT, broches, DDR et del (4 / 12 étapes)

Étape 4: Atmel Secret : DDR et les PORTs et les PINs

Cette étape actuelle prend une pause de fabrication et d’essai. Les gens souvent demander (et devrait demander) Comment faire pour activer/désactiver le niveau de tension (c'est-à-dire l’état logique) sur une broche du port MCU pour faire une LED clignote (Figure 1) et comment lire une entrée numérique.

Souvent par rapport à un processeur ou des microcontrôleurs (MCU), on parle de « port », ce qui signifie un groupe de fils que soit apporte des données hors de la MCU ou dans le microcontrôleur. Pour un circuit intégré, les « fils » consultez les broches physiques de l’IC. Les microcontrôleurs de AVR d’Atmel ont généralement des ports avec 8 broches de chaque puisque le MCU utilise le bus de données large de 1 octet. Les ports sont souvent désignés comme ports d’entrée-sortie ou de ports d’e/s ou juste IO ; Ce sont les ports d’e/s numériques. Les Microcontrôleurs Atmel peut avoir beaucoup de ces ports e/s qui est étiquetés comme A, B et ainsi de suite. On retrouve souvent les mots clés Atmel de PORTA, PORTB, PORTC, PORTD. Veuillez relire ce paragraphe et remarquez qu’un port physique se réfère aux broches physiques sur l’IC. Atmel utilise les mots clés du PORT et de la goupille (Remarque caps) en ce qui concerne les registres et entrée et sortie. Par définition, un registre [14] est un type d’emplacement de mémoire (peut-être mieux qualifié de « emplacement de stockage ») avec les relations spéciale/interconnectivité au matériel. Le registre n’est pas considéré faire partie de la mémoire programme et variable même si il serait possible de lire, d’écrire, de manipuler et de transférer le contenu de la caisse enregistreuse.

Maintenant, voici la partie du secret. Dans le jargon d’Atmel, le mot PORT (comme utilisé dans PORTB par exemple) se réfère à un port de sortie numérique par lequel le MCU génère une tension sur les câbles sortant du MCU. Le mot d’Atmel PIN (tel qu’utilisé dans PINB par exemple) signifie le MCU met le groupe de fils physiques dans un état de haute impédance et le microcontrôleur peut lire les tensions numériques (0 ou SCR où Vcc = 5 pour l’installation du Conseil d’administration de l’expérimentateur). Peut-être plus important encore, PORTB et PINB font référence au même groupe de fils physiques sur la MCU. Un commentaire similaire s’applique à PORTA et PINA sauf les broches physiques générales diffèrent de ceux auxquels se réfèrent PORTB et PINB. Alors, Comment détermine-t-on si une épingle physique sur le MCU est une entrée ou une sortie pour le MCU ?

Disons que cela encore une fois avec d’autres mots. Il y a une différence entre PORT et la broche de ATMEL à l’aide de C/C++. Le mot PORT désigne un Registre qui fournit des sorties aux broches physiques MCU. Le registre PORT stocke 1 s et 0 s et le MCU traduit ces valeurs logiques à des tensions de SCR et zéro, respectivement, sur les broches physiques. Le mot PIN désigne un registre qui reçoit l’entrée d’un groupe de pins physiques. Le MCU se traduira les tensions de la SCR et zéro sur les broches physiques pour logique 1 et 0, respectivement, pour le registre de la broche. Notez que le mot physique se réfère aux réelles fils courts qui sort de l’emballage MCU. Nous utilisons souvent le mot « port » en référence à la collection de 8 broches ; Cela devrait se lire comme port physique et broches physiques.

OK, alors comment on ne précise pas si un examen physique pin est une entrée ou une sortie pour le MCU ? Atmel AVR utilise le concept de données Direction Registre DDR. Chaque groupe de fils formant un port d’e/s physique a un tel DDR et étiquetés comme DDRA, DDRB, DDRC DDDR et ainsi de suite. Un DDR est un registre de 8 bits (c.-à-d. emplacement de mémoire/stockage) semblable au registre correspondant pour les ports d’e/s de 8 bits. Une valeur de 1 dans une position de DDR correspond à une sortie pour le pin physique correspondant. Une valeur de 0 produit une entrée sur l’axe physique correspondante. À titre d’exemple, DDRB correspond au port physique. Quand peu DDRB #i a la valeur 1 puis broche #i dans PortB physique sera une sortie pour le MCU. En revanche, quand DDRB peu #i a une valeur égale à zéro puis physique broche #i dans PortB physique sera un intrant. Des exemples plus concrets seraient peut-être mieux.

Exemple 1: Sortie numérique unique et sept entrées numériques

Envisager un port physique sur le ATTiny2313A et examiner le tableau 1 ci-dessous. La rangée supérieure répertorie les broches physiques sur le paquet DIP 20pin comme indiqué sur la première page ou deux de la fiche de données de Atmel. La deuxième ligne indique le nom d’Atmel pour fixer l’axe physique.

Tableau 1: Exemple de liste ATTiny2313A Pin 12 comme une sortie et les autres broches port B en entrée.

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

0

0

1

PortB physique

Dans

Dans

Dans

Dans

Dans

Dans

Dans

Hors

Supposons maintenant que nous avons d’abord définir DDRB = 1 comme indiqué dans la troisième ligne du tableau 1. Le registre DDRB serait défini ordinairement avant la lecture ou l’écriture PortB. Le MCU lit le registre DDRB et définit l’axe physique #12 en tant que sortie. Parce que les autres bits DDRB sont nuls, les broches physiques restants 13-19, qui sont nommés B1-B7, sont toutes les entrées. À ce stade, le programme peut lire ou écrire le PortB depuis l’entrée et sorties ont été fixés.

Exemple 2: Deux sortie épingles et 6 entrées

Tableau 2: Exemple avec broches 13 et 14 comme les sorties et les entrées de repos.

Broches de physiques

19

18

17

16

15

14

13

12

Nom

B7

B6

B5

B4

B3

B2

B1

B0

DDRB = 00000110

0

0

0

0

0

1

1

0

PortB physique

Dans

Dans

Dans

Dans

Dans

Hors

Hors

Dans

La troisième ligne du tableau 2 montre que nous avons d’abord définir DDRB = 00000110 en binaire. En C/C++, c’est écrit comme DDRB = 0b110 où le « 0 » signifie « binaire ». Les zéros ont été omis par souci de simplicité pour faire la « 110 » partie, mais ils peuvent être inclus dans l’instruction C DDRB = 0b00000110 si vous le souhaitez. La même valeur peut être écrit sous forme décimale comme DDRB = 6. Et il peut être écrit au format hexadécimal comme DDRB = 0 x 06 où les stands « 0 x » pour les nombres hexadécimaux. Le port physique a donc pin13 et broche 14 comme sorties et tous les autres broches comme entrées.

Commentaires : Ces broches physiques qui sont sorties sera en mesure de générer ou l’autre des deux États, à savoir, le zéro et le SCR. Pour notre projet, le Conseil d’administration de l’expérimentateur utilise Vcc = 5v, tandis que la ligne de vie qui sera construit dans une boîte en plastique utilise SCR comme la tension de la batterie, qui peut varier de 4,9 volts à 3 volts selon l’état de charge des batteries. La tension de sortie peut ensuite servir à contrôler d’autres appareils. Atmel broches physiques peuvent 40mA de sources ou de puits de courant. Pour vérifier, reportez-vous aux caractéristiques électriques dans les spec/fiches techniques tels que http://www.atmel.com/Images/doc8246.pdf. Pour la broche de sortie peut fournir (c.-à-d., source) biais courant lorsque la broche physique a sur la tension de sortie de + Vcc ou il peut recevoir du courant (c.-à-d., évier) quand l’axe physique a 0v.

Exemple 3: Écrire des valeurs de sorties

OK, nous allons donc prendre quelques exemples d’utilisation DDRB, PORTB et PINB. Tout d’abord examiner le PORTB.

Tableau 3: Par exemple faire des broches d’e/s Port B sorties.

Broches de physiques

19

18

17

16

15

14

13

12

Nom

B7

B6

B5

B4

B3

B2

B1

B0

DDRB

1

1

1

1

1

1

1

1

PortB physique

Hors

Hors

Hors

Hors

Hors

Hors

Hors

Hors

PORTB = 0b0100100

0

1

0

0

0

1

0

0

Résultat physique Pin

0V

SCR

0V

0V

0V

SCR

0V

0V

Dans l’exemple du tableau 3, nous avons d’abord définir DDRB = 0b11111111 = 0xFF = 255 décimal afin que physiques broches 12-19 sont toutes les sorties pour le MCU. Ensuite, supposons que nous écrivons l’octet suivant du registre de sortie pour B comme PORTB = 0b0100100 comme indiqué dans la sixième rangée du tableau 3. Remarque ' PORTB =' moyens pour définir le port de sortie Registre une valeur – il est plus facile de penser à PORTB en tant que variable et "PORTB =" moyens pour définir cette variable égale à une valeur, qui le MCU se traduit par des tensions sur le port physique. Lorsque PORTB a une logique « 1 », la sortie devrait exposer la réalisation physique de la « 1 » qui est Vcc ou, pour le Conseil d’administration de notre expérimentateur,

Logique 1 = > Vcc = + 5volts

En utilisant la logique 1 de cette manière permet pour un grand beaucoup de plates-formes différentes d’utiliser le même codage pour autant le MCU sait comment transformer les valeurs logiques des tensions. Donc en comparant les sixième et septième lignes du tableau 3 montre que ces broches physiques auxquels une logique 1 a été écrit exposera une tension Vcc. Les autres broches sont zéro volt potentiel. POINT IMPORTANT : Les caractères "PORTB =" signifie dans ce cas d’écrire quelque chose pour les broches de physiques au PortB (en fait cela tout d’abord écrit dans le PORTB s’inscrire et ensuite les valeurs logiques sont traduits par tension générant des circuits dans le MCU). De cette façon, le MCU peut contrôler les circuits externes.

Exemple 4: Lire les valeurs de broches d’entrée

Considérons maintenant un autre cas où nous avons d’abord définir (dans notre programme) DDRB = 0b00000000 (binaire) = 0 x 00 (hex) = 0 (décimale) comme dans le tableau 4. Ici toutes les broches physiques 12-19 seront entrées en raison de tous les zéros dans DDRB.

Tableau 4: Exemple montrant les broches 12-19 sont toutes les entrées.

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

0

0

0

PortB physique

Dans

Dans

Dans

Dans

Dans

Dans

Dans

Dans

Volts appliquées à la broche

0V

0V

0V

0V

0V

SCR

0V

SCR

PINB contenu

0

0

0

0

0

1

0

1

Outre Supposons un agent externe (tel que moi ou vous) s’applique des tensions à la MCU physique pins 12-19 tel qu’illustré dans la sixième rangée du tableau 4. POINT IMPORTANT : L’utilisation « = PINB » signifie lire les tensions présentes sur les broches physiques correspondant à IO PortB et convertissez-les en valeurs logiques. Cela servirait dans une instruction d’assignation de C/C++ telles que ' x = PINB'. Le contenu de la variable x (c.-à-d. PINB) peut être vu dans la dernière ligne du tableau 4 pour que la valeur

x = 0b00000101 (binaire) = 0 x 05 (hex) = 5 (decimal)

Le MCU convertit SCR sur un pin d’entrée à la valeur logique 1 et zéro autrement. De cette manière, le MCU peut lire les États de circuits externes.

Exemple 5: IO mixte et les résistances de pull-up

Il reste une autre situation possible par laquelle un port d’e/s a deux entrée et sortie et les SCM effectue une écriture sur le port. Que se passe-t-il ? Pour un code pin qui est un intrant, l’écriture (à l’aide du PORTB etc.) peut activer ou désactiver une résistance pull-up interne selon que le bit correspondant dans l’écriture est un 1 ou 0 respectivement. Reportez-vous au démarrage 4. Lire un port (à l’aide de PINB etc.) de mixte IO (certaines chevilles dans le port sont de sortie et le reste sont introduits) indiquera l’entrée lorsque la broche est définie comme entrée et il va lire la valeur précédemment écrite (qui est toujours dans le registre PORTB) si l’axe physique est une sortie. Reportez-vous au démarrage 4 ou au manuel d’utilisation pour plus de détails [0,1].

Maintenant au code Blinky un projet.

Articles Liés

Atmel démarrage 5: Ligne de vie

Atmel démarrage 5: Ligne de vie

M. A. Parker c2015La longe est un circuit simple basé sur l'unité de microcontrôleur Atmel ATTiny2313A (MCU) qui fonctionne comme une source d'horloge de substitut pour une cible MCU rendus inopérante par des fusibles à tort de réglage de l'horloge.
Atmel démarrage 4: Deux Blinky – commutateurs, résistances de pull-up et Bit Ops

Atmel démarrage 4: Deux Blinky – commutateurs, résistances de pull-up et Bit Ops

Figure 1: Interrupteurs exemple utilisable par des résistants à la traction selon les MCU, recto : Photo-résistance, transistor photo, bouton poussoir ; Arrière : touches des exemple.M. A. Parker c2015Magnet lumineux deux montre comment le MCU peut f
Atmel démarrage 2: Circuits de microcontrôleur et les fusibles

Atmel démarrage 2: Circuits de microcontrôleur et les fusibles

M. A. Parker c2015Circuits et fusibles construit un circuit simple mais important sur la maquette de l'expérimentateur qui sera utilisé comme plateforme de base pour de nombreux projets de microcontrôleur et pour définir les paramètres de microcontrô
Atmel démarrage 1: Programmeur et Studio Atmel

Atmel démarrage 1: Programmeur et Studio Atmel

M. A. Parker c2015Installation Atmel Studio (AS) et un programmeur incarnent les prémices [0] sur le chemin d'accès à l'aide d'une unité individuelle de Microcontrôleur AVR Atmel MCU [1] par opposition à la MCU-a-bord comme Arduino [2]. Ici commence
LinkIt ONE – Port I2C MCP23017 Expander

LinkIt ONE – Port I2C MCP23017 Expander

La puce MCP23017 est une prothèse d'expansion d'entrée et de sortie, qui utilise le protocole de communication I2C. Vous pouvez raccorder à votre LinkIt One à l'aide de deux broches seulement (SDA, PPC) et obtenir les 16 ports d'e/s numériques. En ou
Alarme de porte de WiFi de 4 $ à l’aide d’un ESP8266 #IoT

Alarme de porte de WiFi de 4 $ à l’aide d’un ESP8266 #IoT

Dans ce projet IoT, je vais vous montrer comment faire une alarme de porte de WiFi qui vous alerte où que vous soyez !J'ai eu son idée de la conception d'une alarme de porte wifi activé après qu'une amie a été cambriolée.Voici un bref aperçu de comme
Facile Atmel Xmega Sine Wave / générateur de signaux

Facile Atmel Xmega Sine Wave / générateur de signaux

c'est comment vous pouvez utiliser un des panneaux d'évaluation du BostonAndroid.com Xmega (20$) pour créer un générateur de forme d'onde sinusoïdale réglable simple avec une résolution de 12 bits et capable de produire des fréquences de 125Hz - 20KH
Commande d’appareils de haute tension avec LinkIt One

Commande d’appareils de haute tension avec LinkIt One

Dans les projets de quelques dernières j'ai utilisé le jury un LinkIt et le jury un LinkIt est idéal pour les applications de l'ITO. Mais le LinkIt One n'est pas capable de gérer la haute tension et des dispositifs actuels, comme par exemple votre sy
LinkIt ONE + récepteur IR

LinkIt ONE + récepteur IR

Cette instructable vous faire défiler comment obtenir un récepteur infrarouge travaillant avec le ONE LinkIt et imprimer à l'entrée des récepteurs.Commençons !Étape 1: matériaux LinkIt un micro contrôleurCarte de prototypageFils de maquetteRécepteur
LinkIt ONE Touch Sensor

LinkIt ONE Touch Sensor

Dans ce Instructable, je vais vous montrer comment câbler et utiliser un module de capteur tactile. Après avoir appris à utiliser ce module vous pouvez l'utiliser pour construire un projet plus gros comme une lumière sensible tactile. Commençons !Éta
DDR Tapis Breakout Port

DDR Tapis Breakout Port

Il y a quelque temps, je suis entré en possession d'un tapis de DDR pour la XBOX originale (un ami n'a pas plus besoin ou quelque chose, ne me souviens plus). Je n'ai pas une XBOX, mais je l'ai gardé autour de l'idée que je pourrais convertir à utili
Vérifier si le Serial Monitor fonctionne avec Mediatek LinkIt One

Vérifier si le Serial Monitor fonctionne avec Mediatek LinkIt One

Quand j'ai commencé à travailler avec le Conseil un LinkIt, j'ai été incapable de lire quoi que ce soit dans le moniteur de la série, mais je pourrais le télécharger code. J'ai finalement réduit à un problème de logiciel, mais voici ce que j'ai trouv
Charger vos appareils Android à pleine capacité en utilisant le chargeur d’USB 5 ports Anker® 25W

Charger vos appareils Android à pleine capacité en utilisant le chargeur d’USB 5 ports Anker® 25W

The Anker® 25W 5-Port chargeur est un chargeur incroyable ! Malheureusement j'ai il a certains ports spécifiques aux appareils iOS. Depuis que je possède uniquement des appareils Android je pourrais seulement inculper à pleine capacité sur 2 des 5 po
Construire une haute Performance FPV Camera Quadcopter

Construire une haute Performance FPV Camera Quadcopter

Cet Instructable va vous montrer, en détail, comment construire un quadcopter de haute qualité pour vol FPV et enregistrer les photos/vidéos aériennes.Nous savons tous les êtres humains ne peuvent pas voler. Nos os sont trop denses et battement de no