L'essentiel d'Assembleur

Générer une tension analogique

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Le PIC peut générer une tension analogique en externe qui peut vous servir pour d'autres circuits appartenant à son environnement.
07:06

Transcription

Dans cette vidéo, je vais vous montrer comment mettre en œuvre le convertisseur numérique-analogique. Alors attention, il ne s'agit pas d'un convertisseur de type flash R-2R, mais simplement un générateur de tension qui peut donner une tension constante ou une tension variable en fonction du temps, donc c'est ce que nous allons faire ici. Nous allons générer en fait un signal triangulaire. Alors ce type de signal peut être utilisé par un autre composant qui se situe sur la carte donc le pic est capable d'effectuer cette tâche. Alors regardons un petit peu, les objectifs c'est de fabrique un triangle avec une valeur moyenne de 2,5 volts. Et puis nous allons commencer par placer cette instruction en fait qui va supprimer le message d'erreur lorsqu'on utilise le BANKSEL Ensuite nous allons utiliser l'équation qui nous ait donné dans le datasheet ou justement de façon respective nous allons placer en fait VSRC+ et VSRC- à VDD 5 volts et VSS 0 volt pour simplifier la tâche. Donc après, nous allons mettre en place une interruption sur le débordement du timer et incrémenter les bits qui appartiennent en fait DACR du registre DACON1. Alors le temps entre deux débordements dépendra donc du timer. Donc c'est lui qui fixera la fréquence de notre triangle et enfin pour alléger le programme, on fonctionnera avec un débordement qui aura lieu tous les 256*256 soit 65,536 millisecondes. Donc ici, on a simplifié les choses, c'est-à-dire à chaque fois que nous allons incrémenter d'un cette partie du registre DACON1, nous allons avoir une fraction de 32ème de la tension de sortie. Donc 5 volts divisés par 1/32ème fois deux divisés par le 32ème... Vous avez compris le principe Ensuite dans l'absolue avec ces deux tensions qui sont ici vous pouvez très bien les référencer autrement, si vous avez des sources de tension qui sont différentes, et présentent à proximité de votre microcontrôleur. Dans ce cas, vous aurez des fractions de la différence de ces deux tensions divisées par 32. Alors nous utiliserons toujours hein évidement décrémment if skip is 0. Et puis on va utiliser son pendant où cette fois-ci, il incrémente. Alors au niveau du programme, voyons un peu ce que ça donne. Alors, nous remontons jusqu'à error level 302 qui est mis ici. Donc dès le départ, on parle au compuderateur en lui disant bon maintenant tu enlèves ce warning. Et puis ici, nous allons déclarer une variable qui s'appelle triangle dont nous allons utiliser le 1er bit, le bit zéro en fait. Le bit 2 est trop faible. Après que ce passe-t-il ? Ben, je vais lire de façon linéaire le programme START GO TO START. Donc je passe sur l’interruption. Et puis ici, je confirme l'interruption sur le timer zéro. Donc comme nous l'avons déjà fait et puis nous regardons sur OPTION_REG cela nous donne un et puis des zéros partout puisque nous allons compter en fait les instructions internes au microcontrôleur. Nous n'allons pas utiliser de source externe pour compter. À partir de là, j'ai décidé de laisser le PORT A en entrée, pourquoi pas ? Pour l'instant pour la simulation, ça ne change rien et tout le reste en sortie. Alors à partir de là, il faut configurer en fait le DAC. Donc on veut qu'il soit mis à un, on veut que la référence de la source soit positive. Il en va de même pour la pin ici, on veut utiliser donc DACOUT. Et puis on veut aussi utiliser VDD, VSS très bien, cela nous donne cette combinaison de bits que l'on va mettre dans le registre. Après on va initialiser en fait notre incrément le DACR. Et en profiter aussi pour simplement pour tirer le timer zéro et mettre à zéro notre flag, c'est-à-dire notre dernier bit de triangle. Alors une fois que tout ça c'est fait, je suis parti à l'envers, en fait là vous voyez que le programme principal, il ne fait rien. Parce qu'on va fonctionner encore qu'avec des interruptions. Donc à partir de là, nous revenons donc au programme d'interruption. Alors comme à l'accoutumée, nous faisons nos tests, on voit si l'interruption est autorisée, on voit si elle est en cours, on va tester en fait notre bit de triangle. S'il est à un, c'est veut dire qu'on est au niveau le plus haut. Donc s'il est à un, dans ce cas là, il faut décroître, parce que ça veut dire que nous sommes au sommet. S'il est pas à un, dans ce cas, il faut une croissance. Alors cette croissance, elle va être donnée par quoi ? Chaque fois qu'on va passer dans l'interruption, on va donc incrémenter DACON1 avec la valeur littérale et ici, le but, c'est de savoir une fois que j'ai fait mon incrémentation est-ce que je suis arrivé au maximum. Alors comme on ne peut pas comparer directement et savoir si la valeur vaut zéro, vous êtes obligé de faire une soustraction et de vérifier si le résultat vaut zéro. C'est la seule subtilité en fait de ce programme. Alors pour savoir si vous êtes au maximum, il faut rentrer ça dans W. Et puis vous faites la soustraction avec W lui-même dans DAC1 et vous voyez en fait si le registre de statut dans le bit zéro est passé à zéro, si cette condition est vrai ou pas. Dans ce cas si c'est faux, je sors, si c'est vrai, je mets mon flag à un et je sais que la prochaine fois que je vais passer, je vais faire ma décroissance cette fois-ci. Donc par contre pour la décroissance, c'est facile parce que le plus dur du travail a été fait ici. Si je ne suis pas en croissance, je suis en décroissance. Donc qu'est-ce que je fais ? Je décrémente d'un et à partir de là, soit je sors de l’interruption, soit de toute façon je clear en fait simplement mon flag et je sors quand même de l'interruption de toute façon quoi qu'il arrive. Et donc en sortant comme à l'accoutumée, nous mettons à zéro notre flag. Alors regardons un peu dans Proteus ce que ça peut nous donner. Donc j'ai compilé et pour 4 mégahertz, voilà ce que nous avons. Donc là en fait chaque petit palier que voyez apparaître correspond en fait à un débordement du timer et un incrément de notre convertisseur numérique-analogique.

L'essentiel d'Assembleur

Plongez-vous dans le langage bas niveau, nommé Assembleur. Abordez les notions de jeu d'instructions, de pipeline, de registres, de mode d’adressage, de compteur de programme, etc.

4h52 (57 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :26 sept. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !