Tutoriel d’assembleur AVR 7 (6 / 12 étapes)

Étape 6: Les interrupteurs à bascule nous fixions ?

Nous allons tout d’abord penser à comment nous allons coder ceci afin que le contrôleur puisse lire l’entrée à partir du clavier et transformez-le en une valeur numérique correspondant à la touche qui a été enfoncée.

Nous allons utiliser l’analogique au Digital Converter (ADC) qui est intégrée à la Atmega328p. Nous allons utiliser AREF comme notre tension de référence et notre sortie clavier sera connecté à PortC0 ou PC0. Notez que cette broche est également appelée ADC0 pour convertisseur analogique-numérique 0.

Il peut être une bonne idée pour vous de lire à travers l’article 12.4 interrupts pour le ATmega328P et aussi le chapitre 24 du convertisseur analogique-numérique avant de commencer ou au moins avoir les sections prêtes pour référence.

Afin de mettre en place le microcontrôleur afin qu’il sache quoi faire avec un signal d’entrée analogique et la façon d’interagir avec notre programme, nous devons d’abord définir quelques-uns des différents ADC lié Registre bits. Ce sont essentiellement équivalents à l’anciens interrupteurs à bascule sur les premiers ordinateurs. Vous retournez soit un interrupteur à ON ou OFF, ou même plus loin, que vous serait brancher câbles entre un point de vente et un autre pour que les électrons atteignant cette bifurcation trouverait un portail fermé et l’autre ouvrent le forçant à se poser une autre voie dans le dédale des circuits et ainsi effectuer une tâche de logique différente. Lors du codage en langage d’assemblage nous avons à proximité de l’accès à ces fonctions du microcontrôleur qui est l’une des choses séduisantes à le faire en premier lieu. C’est plus « pratique » et beaucoup moins se passe « derrière les coulisses » en quelque sorte. Alors ne pense pas que de mettre ces registres comme une tâche fastidieuse. C’est ce qui rend le langage assembleur intéressant ! Nous gagne une relation très personnelle avec les rouages et la logique de la puce et faire faire exactement ce que nous voulons il à--pas plus et pas moins. Aucun cycles d’horloge gaspillée.

Alors, voici une liste des commutateurs qu'il faut définir :

  1. Désactiver l’ADC de réduction de puissance de type bit, PRADC, qui est bit 0 du Registre PRR, puisque si ce bit est activé il s’arrêtera de l’ADC. Le registre de la réduction de puissance est essentiellement un moyen pour couper des choses différentes qui utilisent la puissance quand vous n’avez pas besoin d’eux. Puisque nous utilisons le service ADC nous voulons s’assurer qu'il n’est pas désactivé de cette façon. (Voir PRADC, page 46)
  2. Sélectionnez le canal d’entrée analogique pour être ADC0 en désactivant le MUX3... 0 dans le registre de sélection multiplexeur ADC (ADMUX) (voir tableau 24-4, page 249) ce sont déjà désactivé par défaut donc nous n’avez pas vraiment de le faire. Cependant, je suis y compris car si jamais vous utilisez un port autre que ADC0, vous devrez activer/désactiver ces interrupteurs en conséquence. Diverses combinaisons de MUX3, MUX2, MUX1, MUX0 vous permettent d’utiliser un des ports analogiques comme votre entrée et vous pouvez également modifier celles-ci à la volée si vous voulez regarder un tas de différents signaux analogiques à la fois.
  3. Désactivez les bits REFS0 et REFS1 dans le registre ADMUX afin que nous utiliserons AREF comme notre tension de référence plutôt qu’une référence interne (voir page 248).
  4. Activer le bit ADLAR dans ADMUX alors le résultat est « gauche ajusté » nous allons discuter ce choix à l’étape suivante.
  5. Définir le bit ADC0D dans le numérique d’entrée désactiver Register (DIDR0) pour désactiver l’entrée numérique à PC0. Nous utilisons ce port analogique entrée donc nous pourrions ainsi désactiver l’entrée digitale pour elle.
  6. ISC0 et ISC1 dans l’externe interrompre contrôle Register A (EICRA) pour indiquer que nous voulons déclencher sur le front d’un signal de tension sur la broche de INT0 (PD2), voir page 71.
  7. Effacer les bits INT0 et INT1 dans l’externe interrompre masque s’inscrire (EIMSK) pour indiquer que nous n’utilisons pas interruptions sur cette broche. Si nous devions activer les interruptions sur cette broche nous aurions besoin d’un gestionnaire d’interruption à l’adresse 0 x 0002 mais au contraire nous sommes mise en place permettant la conversion de l’ADC, l’achèvement qui est gérée par l’interruption complète de conversion ADC à adresse 0x002A de déclencher un signal sur cette broche. Voir page 72.
  8. Définir le bit ADC activer (ADEN) (bit 7) dans le contrôle de l’ADC et registre de statut A (ADCSRA) pour permettre à l’ADC. Voir page 249.
  9. Nous pourrions commencer une conversion unique en définissant le bit ADC de conversion départ (ADSC) chaque fois que nous avons voulu lire le signal analogique, cependant, car maintenant nous aurions plutôt il lire automatiquement chaque fois que quelqu'un pousse le bouton, pour remédier à cela nous permettra des permettre d’Autotrigger de ADC (ADATE) bit dans le ADCSRA Registre afin que le déclenchement se fait automatiquement.
  10. Nous avons également mis la ADPS2... les bits 0 (les bits prescalaire AD) à 111 pour que l’horloge de l’ADC est l’horloge du processeur divisée par un facteur de 128.
  11. Nous allons sélectionner la source de l’ADC déclenchement pour être PD2 qui est aussi appelé INT0 (requête d’interruption externe 0). Nous faisons cela en activant/désactivant des différents bits dans le registre ADCSRB (voir tableau 24-6, page 251). On voit par le tableau que nous voulons ADTS0 hors, ADTS1 sur et ADTS2 au large afin que l’ADC déclenche cette broche. Notez que si nous voulions goûter en permanence le port analogique comme si nous lisions un signal analogique continue (comme l’échantillonnage sonore ou quelque chose) que nous fixerions cela au Mode libre en cours d’exécution. La méthode que nous utilisons de la définition de déclenchement sur PD2 déclenche un ADC lecture du port analogique PC0 sans causer une interruption. L’interruption viendra lorsque la conversion est terminée.
  12. Activer le bit ADC Interrupt activer (ADIE) dans le registre ADCSRA afin que lorsque la conversion numérique analogique est terminée, il va générer une interruption qui nous pouvons écrire un gestionnaire d’interruption pour et mettre à .org 0x002A.
  13. Définir la j’ai mordu dans SREG pour activer les interruptions.

Exercice 1: Assurez-vous que vous lisez les articles pertinents dans la feuille de données pour chacun des paramètres précités pour que vous compreniez ce qui se passe et ce qui se passerait si nous avons changé les paramètres remplaçant.

Articles Liés

Tutoriel d’assembleur AVR 11

Tutoriel d’assembleur AVR 11

Bienvenue au didacticiel 11 !Dans ce bref didacticiel, nous allons enfin construire la première partie de notre projet final.La première chose que vous devriez faire est d'aller à la toute dernière étape de ce tutoriel et voir la vidéo. Puis revenez
Tutoriel d’assembleur AVR 1

Tutoriel d’assembleur AVR 1

J'ai décidé d'écrire une série de tutoriels sur la façon d'écrire des programmes de langage d'assemblage pour le Atmega328p qui est le microcontrôleur utilisé dans l'Arduino. Si les gens restent intéressées, je vais continuer à mettre un une semaine
Tutoriel d’assembleur AVR 8

Tutoriel d’assembleur AVR 8

Bienvenue au didacticiel 8 !Dans ce bref didacticiel, nous allons prendre un peu d'une déviation de l'introduction de nouveaux aspects de la programmation en langage assembleur pour montrer comment déplacer nos composants de prototypage pour un circu
Tutoriel d’assembleur AVR 6

Tutoriel d’assembleur AVR 6

Bienvenue au didacticiel 6 !Tutoriel d'aujourd'hui sera un court où nous mettrons au point une méthode simple pour transmettre des données entre un atmega328p et un autre à l'aide de deux ports qui les relient. Nous puis prendre dés rouleau de tutori
Tutoriel d’assembleur AVR 9

Tutoriel d’assembleur AVR 9

Bienvenue au didacticiel 9.Aujourd'hui nous allons montrer comment piloter un afficheur 7 segments, mais aussi un affichage à 4 chiffres à l'aide de notre code en langage assembleur ATmega328P et AVR. Ce faisant cela que nous allons devoir prendre de
Tutoriel d’assembleur AVR 2

Tutoriel d’assembleur AVR 2

Ce tutoriel est une continuation de "tutoriel d'assembleur AVR 1"Si vous n'avez pas passé par 1 tutoriel, vous devez arrêter maintenant et faire celui-là en premier.Dans ce tutoriel, nous allons poursuivre notre étude de programmation en langage
Tutoriel d’assembleur AVR 10

Tutoriel d’assembleur AVR 10

Bienvenue au didacticiel 10 !Désolé, qu'il a fallu si longtemps pour sortir cette nouvelle tranche mais c'est un moment assez intense de l'année. En tout cas, ici c'est !Nous avons parcouru un long chemin et vous êtes probablement déjà assez compéten
Tutoriel d’assembleur AVR 5

Tutoriel d’assembleur AVR 5

Aujourd'hui nous allons regarder de plus près aux divers emplacements mémoire dans le microcontrôleur Atmega328p et voir si nous pouvons mieux comprendre comment les choses sont stockés, où ils sont stockés et comment les pointeurs et les tables de r
Tutoriel d’assembleur AVR 4

Tutoriel d’assembleur AVR 4

Bienvenue au didacticiel numéro 4 !Dans ce tutoriel, nous allons construire un circuit qui simulera l'enroulement des deux dés. Ensuite, nous allons tout d'abord écrire un programme de force brute qui fait le travail. Puis nous permettra de simplifie
Tutoriel d’assembleur AVR 3

Tutoriel d’assembleur AVR 3

Bienvenue au didacticiel numéro 3 !Avant que nous commencions, je tiens à faire un point philosophique. N'ayez pas peur d'expérimenter avec les circuits et le code que nous construisons dans ces tutoriels. Changer les câbles près, ajouter de nouveaux
MRETV - vidéo, stéréo Sound et beaucoup plus d’un Arduino standard !

MRETV - vidéo, stéréo Sound et beaucoup plus d’un Arduino standard !

MRETV - vidéo, stéréo Sound et beaucoup plus d'un Arduino standard !Maintenant mis à jour pour Arduino 1.6.6 novembre 2015 !Utiliser seulement deux résistances et deux diodes pour générer la vidéo plein écran. Texte 47 x 29 de 8 x 8 caractères, doubl
Comment charger des programmes à un Arduino UNO de Atmel Studio 7

Comment charger des programmes à un Arduino UNO de Atmel Studio 7

Dans ce court Instructable, nous allons apprendre à charger un programme à une carte Arduino UNO utilisant Atmel Studio au lieu de l'IDE Arduino. Cela est utile lorsque vous avez besoin élaborer un programme à l'aide de plusieurs fonctions avancées o
Star Trek sonnette Hack

Star Trek sonnette Hack

J'ai toujours été un fan de la Star Treks et comme tel, j'étais très excité lorsque mon colocataire ramené un panneau la comm série style Star Trek original. Je n'avais jamais vu l'un d'entre eux, mais une recherche rapide nous a pris sur le site de
Carte de développement pour microcontrôleurs Attiny84

Carte de développement pour microcontrôleurs Attiny84

Il s'agit d'une carte de développement pour microcontrôleur Attiny84. Tha Attiny84 puce possède 11 broches adressables avec l'IDE Arduino, 8k de mémoire flash pour le stockage de programme et 512 octets de mémoire vive disponible pour les variables d