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

Etape 11 : Comment puis-je nous débarrasser du bouton ? Version 3

Il existe de nombreuses façons, que nous pourrions aller de l’avant. Tout d’abord, nous pourrions ajouter matériel pour se débarrasser du bouton. Par exemple nous pouvons essayer de mettre un transistor dans le circuit à la ligne de sortie de la keypress afin qu’il prendrait un petit filet du courant de la sortie et envoyer une impulsion de 5V sur la broche d’interruption PD2.

Cependant, qui serait probablement trop bruyant à tout le moins et au pire qu'il ne permettrait pas assez de temps pour une lecture de keypress précis puisque la tension de sortie du clavier n’aurait pas eu le temps de stabilze avant que l’ADC lecture est capturée.

Donc nous viendrait plutôt vers le haut avec une solution logicielle. Ce que nous voudrions faire, c’est ajouter une interruption sur la broche PD2 et écrire un gestionnaire d’interruption pour lui, qui appelle une seule lecture de l’axe du clavier. En d’autres termes, nous débarrasser de l’interruption de l’autotrigger de l’ADC et ajouter une interruption externe qui appelle l’ADC à l’intérieur. De cette façon, le signal de lire l’ADC vient après le signal PD2 a déjà eu lieu et cela pourrait donner des choses assez de temps pour se stabiliser à un voltage précis avant la broche PC0 est lu et converti. Nous aurions encore une réalisation ADC interrupt qui exporte le résultat à l’affichage de l’analyseur à la fin.

Donner un sens ? Eh bien nous allons le faire...

Jetez un oeil à nouveau code attaché.

Vous voyez les changements suivants :

  1. Nous avons ajouté un rjmp à .org adresse 0 x 0002 pour gérer les interruptions externes INT0
  2. Nous avons changé le registre EIMSK pour indiquer que nous voulons interrompre sur la broche de INT0
  3. Nous avons changé l’ADATE broche dans le registre ADCSRA pour désactiver autotriggering
  4. Nous nous sommes débarrassés des paramètres ADCSRB, car ils sont hors de propos quand ADATE est éteint
  5. Nous n’avons plus de réinitialiser l’indicateur de déclenchement externe car la routine d’interruption INT0 fait automatiquement quand il termine--auparavant nous n’avions pas une routine d’interruption, nous juste déclenché l’ADC hors d’un signal à la broche, donc nous avons dû effacer ce drapeau à la main.

Maintenant dans le gestionnaire d’interruption, nous demandons simplement une conversion simple de l’ADC.

Exercice 5: exécuter cette version et voir ce qui se passe.

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