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

Étape 6: Dépassement de capacité gestionnaire

Nous allons donc supposer que le registre de la minuterie/counter0 a juste débordé. Nous savons maintenant que le programme reçoit un signal d’interruption et exécute le 0 x 0020 qui indique le compteur de programme, PC pour accéder à l’étiquette « overflow_handler » ce qui suit est le code que nous a écrit après cette étiquette :

 overflow_handler: inc overflows cpi overflows, 61 brne PC+2 clr overflows reti 

La première chose qu’il fait est incrémenter la variable « débordements » (qui est notre nom pour registre de travail polyvalent R17) puis il « compare » le contenu des débordements portant le numéro 61. La façon dont les œuvres d’IPC instruction sont qu’il soustrait simplement les deux nombres et si le résultat est zéro il définit l’indicateur de Z dans le registre SREG (je vous ai dit nous verrait ce registre tout le temps). Si les deux nombres sont égaux alors le drapeau Z sera un 1, si les deux nombres ne sont pas égaux, alors il sera un 0.

La ligne suivante dit « brne PC + 2 », qui signifie « branche si différent ». Essentiellement, il vérifie le drapeau Z SREG et si elle n’est pas un (c.-à-d. les deux nombres ne sont pas égales, si elles étaient égales, le voyant zero est défini) le PC bifurque vers PC + 2, ce qui signifie il saute de la ligne suivante et va droit au « reti » qui renvoie de l’interruption mettre tout ce qu’il était dans le code lorsque l’interruption est arrivé. Si l’instruction brne trouvé un 1 dans le zéro bit indicateur il n'aurait pas créer de branche et au lieu de cela, elle continuerait juste à la ligne suivante qui serait clr débordements initialiser à 0.

Ce qui est le résultat net de tout cela ?

Nous voyons bien que chaque fois qu’il y a un débordement du timer ce gestionnaire augmente la valeur de « débordements » par l’un. Si la variable « déborde » est comptant le nombre de débordements lorsqu’ils se produisent. Chaque fois que le nombre atteint 61 nous on remis à zéro.

Maintenant pourquoi dans le monde nous ferait cela ?

Nous allons voir. Rappelons que notre vitesse d’horloge pour nos CPU est 16MHz et nous « prescaled » à l’aide de TCCR0B, afin que la minuterie atteint seulement à un taux de 15625 impulsions par seconde droit ? Et chaque fois que la minuterie atteint un nombre de 255 qu'elle déborde. Ce qui signifie qu'il déborde de 15625/256 = 61.04 fois par seconde. Nous sommes suivi de celui des débordements avec notre variable « débordements » et on compare ce chiffre à 61. Donc, nous voyons que « déborde » égalera 61 une fois par seconde ! Donc notre gestionnaire se remettra « déborde » à zéro une fois par seconde. Donc si nous devions simplement surveiller les « débordements » variables et prenez note de chaque fois qu’il remet à zéro que nous aurait compter seconde par seconde en temps réel.

Maintenant nous avons « traitées » les interruptions de débordement du timer. Assurez-vous que vous comprenez comment ce travaux et puis passer à l’étape suivante, où nous faisons utilisent ce fait.

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