Tutoriel d’assembleur AVR 6 (1 / 3 étapes)

Étape 1: Comment pouvons-nous obtenir deux microcontrôleurs de parler les uns aux autres ?

Étant donné que nous commençons à développer notre projet afin que notre produit fin unique se compose d’une collection de petites pièces, que nous allons avoir besoin de plusieurs broches qu’un seul Atmega328P peut offrir. Nous allons donc faire chaque pièce de l’ensemble du projet sur un microcontrôleur séparé et puis faites-les partager les données entre eux.

Donc le problème que nous devons résoudre est comment pouvons nous nous heurtons à une méthode simple pour les contrôleurs de parler les uns aux autres et transférer des données entre eux ?

Eh bien, une chose au sujet de ces contrôleurs est que chacun d’eux exécute 16 millions d’instructions par seconde. C’est très précisément chronométré et donc nous pouvons utiliser ce calendrier pour transférer des données. Si nous utilisons des retards de milliseconde pour constituer les données puis nous n’avons vraiment plus tout ce que précisément, puisque le processeur exécute des instructions 16 000 en une milliseconde unique. En d’autres termes, une milliseconde est une éternité pour le CPU.

Nous allons donc essayer avec les dés. Je tiens à transmettre le résultat d’un jet de dé de la puce de rouleau dés à la puce de l’analyseur. Supposons que vous vous teniez à travers la rue et je voulais signaler à vous le résultat de mon rouleau d’une paire de dés. Une chose que je pouvais faire, si nous avions tous deux une montre, est que je pourrais tourner sur une lampe de poche, puis lorsque vous êtes prêt à recevoir mes données vous allumez votre lampe de poche et nous avons tous deux commencer nos horloges. Alors, je garde ma lampe de poche le nombre exact de millisecondes comme le lancer de dés et puis il s’éteint. Donc si j’ai roulé un 12 je garderais ma lumière 12 millisecondes.

Maintenant le problème avec ce qui précède est que, il n’existe aucun moyen pour vous et moi, nous serions en mesure de chronométrer les choses avec assez de précision pour distinguer 5 millisecondes et 12 millisecondes. Mais qu’en est-il de ceci : Supposons que nous avons décidé que je garderais ma lumière un an pour chaque numéro sur les dés ? Alors si je roule un 12 j’allait briller la lumière à vous depuis 12 ans et je pense que vous conviendrez qu’il n’y a aucune possibilité que vous ferez une erreur dans le numéro de bon de trouver ? Vous pourriez faire une pause et aller jouer au baseball, vous pourriez même aller jouer au craps à Las Vegas pendant 6 mois, tant qu’à un moment donné au cours de l’année à jeta un regard dans la rue pour voir que si la lumière était sur vous ne manquerait pas un nombre. Eh bien c’est exactement ce que nous faisons pour les microcontrôleurs ! Un seul "milliseconde" de l’UC est comme une année. Donc si j’allume le signal pour 12 millisecondes, il n’y a pratiquement aucune chance que les autre le microcontrôleur se confondent pour 10 ou 11 n’importe quelles interruptions et autres joyeusetés se produisent dans l’intervalle. Pour les microcontrôleurs, une milliseconde est une éternité.

Voici donc ce que nous ferons. Tout d’abord, nous choisirons deux ports sur le contrôleur de nos ports de communication. Je vais utiliser PD6 pour recevoir des données (nous pourrions appeler Rx si on aime) et je vais choisir PD7 pour transmission de données (nous pourrions appeler Tx si on aime). La puce analyseur vérifiera périodiquement il y a broche Rx et si il voit un signal il sera ramené à une sous-routine « communication » et ensuite transmettre un signal de retour au rouleau dés disant qu’il est prêt à recevoir. Ils seront tous les deux faire démarrer le chronométrage et le rouleau dés transmet un signal (c.-à-d. 5V) pour une milliseconde par numéro sur le dé. Donc si le rouleau a été doubles sixes, ou 12, puis le rouleau dés définiriez c’est PD7 à 5V pour 12 millisecondes et placez-la en retour à 0V. L’analyseur va vérifier ses PD6 épingler chaque milliseconde, comptant chaque fois, et quand il va revenir à 0V puis il sorties le nombre obtenu à l’analyseur affiche, montrant une douze en binaire sur les LED.

Voilà donc le plan. Nous allons voir si nous pouvons mettre en œuvre.

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 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 7

Tutoriel d’assembleur AVR 7

Bienvenue au didacticiel 7 !Aujourd'hui nous allons voir la première comment faire pour nettoyer un clavier et ensuite montrer comment utiliser les ports d'entrée analogiques pour communiquer avec le clavier.Nous ferons cela en utilisant les interrup
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