Manipulation de Registre microcontrôleur (5 / 6 étapes)

Étape 5: Alors à quoi alors ?

Il devrait être assez clair qu’écrit directement aux registres peut économiser de l’espace dans la mémoire de votre puce. L’esquisse abrégée prend aussi moins de temps pour exécuter simplement parce qu’il n’y a pas de bibliothèque de chercher pour chaque appel de fonction. Pour la grande majorité des applications, cela n’aura pas toute utilisation réelle car éliminant une fonction comme pinMode() ne sauvera pas beaucoup l’espace ou le temps dans un sketch complex. Toutefois, dans certaines applications temps de traitement est un problème énorme, et réduisant la quantité de temps perdu dans les fichiers de bibliothèque permet plusieurs cycles d’horloge être disponible pour d’autres choses. Ce que j’entends par là est que même si vous devez inclure une fonction de bibliothèque et donc prendre place dans la mémoire avec elle, si vous n’appelez pas il très souvent et plutôt utiliser les registres directement, au moins, vous économisez temps (mais pas d’espace) par ne pas en la levant.

Une autre option est la possibilité d’utiliser des épingles de façons qu'ils ne peuvent pas ont été initialement prévus, mais sans aucun effet secondaire. Par exemple, les broches associés PWM sur le chipKIT Uno32 dispose d’un registre supplémentaire qui leur sont associé qui s’arrime le module de comparaison de sortie (OCMP) appelé la sortie comparent Registre (OCxR). Le OCMP a certains registres plus qui traitent de la synchronisation du signal PWM, mais le OCxR est le registre de sortie de signal réel, semblable au LATx (PIC32) ou registres de PORTx (ATMEL). La période PWM est calculée en multipliant... (facile, mais déroutant trucs de math ici)... et que la valeur est entrée dans la période s’inscrire (PRy). PRy raconte le registre minuterie (TMRy) qui anime la OCMP spécifique quand à remettre à 0, mais vous devez ajouter un supplément de 1. Le rapport cyclique est ensuite écrite dans le registre secondaire comparer (OCxRS), qui est essentiellement un tampon car cette valeur est presque immédiatement transférée au comparer (OCxR), mais vous ne pouvez pas écrire directement parce que OCxR est en lecture seule.

Exemple : si PRy a une valeur de 5, et OCxRS est chargé d’une valeur de 2, OCxR est tout d’abord chargé avec 2 établissements. TMRy commence à compter à 0. 1, OCx affiche une valeur élevée et y reste. Au temps 2, rien ne change, OCx a été élevé pour 1 chef d’accusation. Au temps 3, OCx descend bas car elle a été élevée pour 2 chefs d’accusation. Au moment, 3, 4 et 5, rien ne change mais TMRy = PRy, afin qu’il se réinitialise et démarre puis retour à 0 sur le prochain décompte. 1 battement d’horloge passe, qui est comte 0 encore une fois et au nombre 1, OCx sorties haute à nouveau. Voici la figure 16-18 de Section 16 : sortie comparer du Manuel de référence de famille PIC32:

Définition PRy à 5 et OCxRS 2 donne vraiment un cycle de 33 % (2/6) et non de 40 % (2/5). C’est là que 1 supplémentaire entre en jeu. Il est ajouté à la valeur de PRy. C’est juste un exemple simple, et si PRy et OCxRS étaient beaucoup plus importants, la différence de % serait beaucoup, beaucoup plus petite.

Eh bien, c’est simple n’était pas elle ? Oui, no, je pouvais entendre les engrenages meulage à mettre un terme au « Pour exemple... » Quand le professeur nous a montré cela la première fois, vous auriez dû voir le regard sur mon visage de ses camarades de classe. Mais c’est pourquoi nous avons des bibliothèques. Tous ces trucs est gérée par les bibliothèques lorsque nous disons le servo de tourner à une certaine vitesse ou nous voulons jouer une mélodie avec des nuances différentes. Mais 1) nous sommes limités à seulement être capable d’utiliser les broches PWM, et bibliothèques 2) prennent place dans la mémoire. Que faire si nous avons besoin de plus d’options PWM ? Utiliser les registres.

L’esquisse suivante est un générateur de sons simples. Je ne vais pas faire un servo par exemple parce que je ne recommande pas l’utilisation de servos sans la bibliothèque servo.h, bien qu’avec quelques travaux, il est certainement possible. C’est beaucoup trop facile d’étendre sur le servo au-delà de ses butées internes. Si vous voulez le faire, vous devrez écrire tous les trucs de fond que gère le servo.h dans votre dessin, mais plus esquisses seront traduira par différentes périodes PWM parce que chaque ligne prend un peu de temps.

Avant de voir le croquis, quelques calculs simples rapide. Tout d’abord déterminer la fréquence de sortie souhaitée. Divisez 1 par votre fréquence pour obtenir votre période et puis divisez-le en deux. Assurez-vous que la valeur est en microsecondes, puis mettre cette valeur à la fois des implémentations delayMicroseconds() fonction. Si nous voulons générer un cycle d’utilisation autre que de 50 %, multipliez votre valeur de période par le cycle de devoir que vous voulez élevé. Entrer cette nouvelle valeur dansla fonction delayMicrosecondsà l’intérieur de l’instruction if() . Entrez le reste dans la delayMicroseconds() fonction à l’intérieur de l’instruction else .

Exemple : Vous voulez une sortie de 1kHz. 1/1000 Hz = 1 milliseconde = 1000 microsecondes = période. 1000μs/2 = 500 μs ⇒ delayMicroseconds(). Si vous souhaitez que le rapport cyclique de 60 %: 1000μs * 60 % = 600 μs ⇒ si() Déclaration delayMicroseconds() valeur. 1000μs - 600μs = 400μs ⇒ d’autre instruction delayMicroseconds() valeur. Agréable et facile.

Voici le code de générateur de tonalité :

Vous trouverez ci-dessous des images de la sortie, tout d’abord de la chipKIT Uno32 o-portée...

.. .et puis à partir de l’Arduino UNO.

Assez fou, ces images ont été générés à l’aide de l’esquisse de manipulation du Registre comme indiqué ci-dessus, et quand j’ai examiné l’esquisse de la fonction standard, l’image exacte même sauté vers le haut. Bizarre, droite ? Alors j’ai pensé que j’ai épargnerait vous avoir à perdre de temps à la recherche à un doublon. J’ai aucune idée pourquoi l’Arduino UNO est assez instable à la puissance de crête, donc si quelqu'un a une explication légitime, s’il vous plaît préciser dans les commentaires.

Articles Liés

Manipulateur iambique utilisant microcontrôleur

Manipulateur iambique utilisant microcontrôleur

IntroductionIl s'agit de mon premier Instructable. Je voudrais montrer ce qui est impliqué dans la construction d'un keyer électronique pour une clé de pagaie double iambique, tels que la conseillère.J'ai fait deux hypothèses ici. Ceux d'entre vous q
Comment choisir un microcontrôleur

Comment choisir un microcontrôleur

il l'habitude d'être assez limitait le nombre de jetons de microcontrôleur différents disponibles pour les amateurs. Tu dois utiliser tout ce que vous arrivaient à acheter chez le marchand de puce de correspondance, et qui réduit le choix à un petit
Transformez n’importe quel PC en un microcontrôleur gratuitement en 4 étapes

Transformez n’importe quel PC en un microcontrôleur gratuitement en 4 étapes

Il y a des millions d'amateurs d'électronique et de robotique et je suis certainement l'un d'eux. Dans des domaines de l'ingénierie, circuits programmables sont très importantes et donc sont-ils à moi aussi, parce que j'aime à faire différentes sorte
ESP8266 comme un microcontrôleur

ESP8266 comme un microcontrôleur

Comme il a été déjà mentionné dans la mise en route avec tutoriel ESP8266 ESP-01, le module Wi-Fi est entièrement programmable, ce qui nous permet de l'utiliser comme un microcontrôleur et manipuler les entrées et sorties.Dans ce tutoriel nous allons
Intro aux GPS avec des microcontrôleurs

Intro aux GPS avec des microcontrôleurs

Une fois que la compétence des opérations strictement militaires, GPS est devenu une partie intégrante de la vie moderne et en relativement peu de temps ! Qui ne voudrait pas envie de savoir quand et où ils sont n'importe où sur la planète ? C'est un
BRICOLAGE capteurs musculaires / EMG Circuit pour un microcontrôleur

BRICOLAGE capteurs musculaires / EMG Circuit pour un microcontrôleur

mesure d'activation des muscles par l'intermédiaire de potentiel électrique, appelé électromyographie (EMG) , a été utilisé traditionnellement pour la recherche médicale et le diagnostic des troubles neuromusculaires. Cependant, avec l'avènement de r
Programmation des microcontrôleurs PIC

Programmation des microcontrôleurs PIC

microcontrôleurs PIC sont un outil très utile et polyvalent pour une utilisation dans de nombreux projets électroniques. Ils sont très peu coûteux et facile à trouver. Ils sont aussi très puissants et beaucoup sont capables de vitesses allant jusqu'à
Construire et coder une bobine de Tesla Musical MONSTER avec un microcontrôleur

Construire et coder une bobine de Tesla Musical MONSTER avec un microcontrôleur

visiter ma page youtube pour davantage de projets : http://www.youtube.com/channel/UCksEFn8xaLP0z4rsiHa9zcA?feature=mheeComme l'hiver venu, beaucoup seront contraints de rester à l'intérieur... Pour beaucoup, cela signifie jouer scrabble avec grand-m
Début microcontrôleurs partie 9: Bouton et logiciel Debouncing des méthodes

Début microcontrôleurs partie 9: Bouton et logiciel Debouncing des méthodes

Dans cette partie du tutoriel, nous allons discuter le bouton et le logiciel debouncing.Nous voulons étudier le bouton debouncing premier et en détail, donc nous avons une bonne compréhension de ce qu'elle implique. Bouton debouncing est important et
Comment programmer un PIC microcontrôleur & lire un codeur

Comment programmer un PIC microcontrôleur & lire un codeur

Introduction : de jouets électroniques & Jeux pour fours à micro-ondes, microcontrôleurs se trouve à peu près n'importe où ces jours-ci ! Mais comment pouvons-nous rendre ces petits ordinateurs fonctionner pour nos propres projets électroniques ? C'e
Améliorer l’affichage de fibre optique avec LEDs et microcontrôleur.

Améliorer l’affichage de fibre optique avec LEDs et microcontrôleur.

Ce bonsaï belle fibre-optique était morte, l'alimentation n'était pas le cas à être trouvé, mais plus important, le moteur était mort. Il s'agissait d'un moteur à rotation lente qui n'est pas quelque chose que je peux trouver un remplacement facile p
En savoir plus sur microcontrôleurs

En savoir plus sur microcontrôleurs

Cet Instructable a été conçu pour répondre à la question : Comment puis-je commencer à microcontrôleurs ? Maintenant, en clair, un anglais simple, vous pouvez apprendre ce qu'un microcontrôleur est et comment utiliser un. Vous apprendrez comment fair
Partie de microcontrôleurs de début 11 : Horloges, compteurs et l’horloge de microcontrôleur

Partie de microcontrôleurs de début 11 : Horloges, compteurs et l’horloge de microcontrôleur

Temporisations et compteurs sont donc essentiels que vous verrez de nombreux exemples impliquant tout au long de cette série. Comme son nom l'indique, minuteries sont utilisés pour le temps et le comptage. Comptage et le calendrier vous permet de fai
Lien de microcontrôleur dans le monde entier pour moins de $20

Lien de microcontrôleur dans le monde entier pour moins de $20

contrôler votre thermostat maison du travail. Allumez une arroseuse de n'importe où dans le monde de chiquenaude d'un commutateur. Ce Instructable montre comment lier deux ou plusieurs microcontrôleurs 4 $ à l'aide de l'épine dorsale de l'internet et