L'essentiel d'Assembleur

Digitaliser une entrée analogique

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Faites une conversion analogique numérique et mettez en sortie le mot binaire numérisé sur 10 bits par l'allumage des LED en sortie.
08:47

Transcription

Dans cette vidéo, donc que nous allons mettre en place notre premier convertisseur analogique-numérique. Et puis pour changer un peu, nous allons changer de famille de pic. Nous allons prendre un pic 16F 1829. Le 1829 a en fait trois ports contrairement à notre prédécesseur et vous voyez en fait que plus vous montez en haut de gamme au niveau du microcontrôleur plus le datasheet commence à s'allonger. C'est normal parce que vous avez de plus en plus de fonctionnalité de périphérique. Donc concernant ce qui nous attend sur le Proteus donc voici un peu notre microcontrôleur voilà, j'essaie de pas trop bouger, de zoomer un peu, voilà et nous avons nos différents ports dont le port A, le port B le port C. Attention au niveau du port B, c'est un peu folklorique, ça commence à RB4 et ça fini à RB7. Donc vous n'avez pas de RB0 à RB3. Ce qui va être dangereux dans notre cas. En fait, l'objectif ici va être d'appliquer une tension analogique par biais d'un potentiomètre simulé ici avec la tension qui s'affichera, et qui va être injectée directement sur la broche RA0. Mais dont la fonctionnalité AN0 nous intéressera et vous voyez qu'ils se partagent les différentes fonctionnalités qui sont ici. Il y en a une flopée. C'est pareil pour les autres broches. Et à partir de là, que va-t-on faire ? Nous allons directement une fois que la numérisation sera faite amener la valeur binaire équivalente en allumant donc que les leds lorsque le mot binaire vaut 1. Et en la laissant éteinte lorsqu'elle vaut zéro. Donc attention à l'ordre des broches, ici, on parle bien de RC0, jusqu'à RC7. Et puis nous avons RB5 et RB4. Donc nous avons ici le LSB qui sera connecté ici et ici le MSB. Si je fais ceci, c'est justement pour éviter d'avoir un paquet et d'avoir quelque chose de totalement illisible. À côté de ça, nous avons notre master clear et notre oscillateur qui ne sert que de déguisement puisque nous allons continuer à utiliser l'oscillateur donc émulé par Proteus. Donc, côté objectif maintenant, si on regarde un peu tout ça, il va falloir configurer nos différents ports par le biais des registres TRISx PORT LAT. Et nous allons mettre RA0 en mode AN0 par le biais du registre ADCON0. Nous allons choisir le canal, nous allons mettre le périphérique en route, ce qui est quand même un petit peu le but. Au niveau de la configuration, nous avons ADCON1, qui va nous permettre de faire la justification, le choix de la fréquence de l'horloge ici qui sera Fosc/32 qui sera amplement suffisant pour surtout continuer à avoir cette condition qui est sinequanone que j'ai évoquée précédemment. Puis après pour le référencement, donc nous utiliserons simplement les tensions d'alimentation et la masse. Alors, sur la stratégie, c'est, on place cette temporisation afin de décharger le condensateur. On lance l'acquisition qui sera donc coté comme vrai dès que le bit DONE passe à zéro. On place le résultat dans deux variables pour avoir le résultat sur dix bits. Mais étant toujours deux variables parce qu’on est toujours sur une architecture 8 bits, donc les registres sont sur 8 bits. Donc les deux bits manquants, il faudra les placer ailleurs. Transférer donc l'octet de poids faible directement sur le PORTC. Et nos deux bits de poids fort qui comptent pour le plus, eux il va falloir les décaler de 4 bits. Pourquoi ? Simplement parce que dans notre registre, ils vont arriver comme ceci et vu que ces broches là n'existent pas, il va falloir décaler en nos deux bits pour les avoir sur RB4 et RB5. Et on appliquera le tout sur le PORTB. Donc au niveau du programme si on regarde tout ceci en détails, on déclare simplement donc notre nouveau microcontrôleur avec sa bibliothèque. On va définir donc sur le PORTA la broche RA0 qui sera commutée en AN0, donc notre potentiomètre. Et puis il va falloir deux registres pour stocker nos valeurs où j'ai mis resultat_ADC_H et vue resultat_ADC_L donc dans la zone Access RAM Donc visible de partout, nous n'aurons pas de macro, donc nous passons et puis là, nous allons prendre donc notre programme de façon séquentielle, parce que nous n'avons pas d'interruption. On commence directement par le PORTA, que va-t-il se passer ? On va placer le PORTA en entrée, une partie en entrée, une partie en sortie. Et là, ce qui va nous intéresser surtout, c'est dans le registre ANSELA, je veux que AN0 soit bien mis en mode analogique. Donc je fais un bitsf de ANSELA, et je veux quel bit ? ANS à zéro. Donc pour les PORTB et C, on met tout à zéro et on a tout configuré en sortie. Et après nous avons ADCON0. On pointe toujours avec notre macro BANKSEL et on va sélectionner AN0. Alors ça, c'est directement copier-coller du datasheet. Et j'ai mis une petite flèche sur les bits qui nous intéressent. Donc ce qui nous donne directement en fait le mot binaire qui est ici que l'on va transvaser dans ADCON0. Pour ADCON1, il en va de même, j'ai fait la même manipulation. Donc je pointe sur la bande qui contient ADCON1 et à partir de là, je choisis la fréquence de mon oscillateur. Donc voilà, j'ai pris mes références, et puis ça nous donne ce mot binaire qui est ici que je transfère dans ADCON1. Donc j'arrive dans mon programme principal une fois que j'ai fait ma configuration, tout de suite, que vais-je faire ? Je vais faire une temporisation, temporisation qui va permettre de décharger le condensateur, je peux la faire comme ça. Là, j'ai voulu la faire à la barbare qu'avec 32 microsecondes comme je n'ai pas voulu faire ça proprement, je vous ai montré qu'on pouvait faire ça avec du nop. Après tout, j'aurai pu faire une variable qui se décrémente. Là, j'ai voulu faire ça comme ça pour vous montrer que ça pouvait se faire, mais que c'est terriblement disgracieux. Ensuite, je vais mettre le bit go de ADCON0 à un. Et j’attends la conversion. Tant que ce bit ne passe pas à zéro, c'est que la conversion n'est pas terminée là, je vais rester boucler en permanence. Dès que c'est terminé, en fait que va-t-il se passer ? Je vais récupérer le contenu de ADRESH. Je vais le mettre dans resultat_ADC_H pour avoir mon octet de poids fort, mais là qui n'est constitué que de deux bits. Et après je fais la même chose pour avoir l'octet de poids fort qui là est pour le coup bien constitué des 8 bits et je fais la même chose donc sur le PORTC donc je transfère directement la valeur de mon résultat sur le PORTC pour pouvoir allumer mes leds. Alors ici, il faut faire notre décalage, donc il existe une instruction qui s'appelle Logical Left Shift qui permet donc d'effectuer un décalage à gauche d'un rang. Donc moi, je prends mon PORTB et j'ai déjà pointé dessus en fait et vue qu'ici, notre variable est visible de n'importe où, j 'ai pas besoin de pointer sur la BANK qui va bien. Et à partir de là, je décale 4 fois et je mets le résultat sur PORTB et je fais ça de façon infinie. Voyons un peu ce que ça donne sur notre Proteus. Donc je lance la simulation, là on va zoomer un peu pour voir ce que ça donne. Donc on va essayer de tout avoir et ça, ce n'est pas toujours évident. Je vais faire un léger zoom arrière, ce n'est pas grave. Donc là, vous voyez qu'en fait, je veux augmenter la tension progressivement et vous voyez que le mot binaire équivalent donc le MSB est tout en haut, le LSB est ici. On vient tout doucement incrémenter notre mot. Donc si je fais le petit zoom arrière, normalement lorsque je suis à fond, je suis à 5 volts et puis à partir de là, tout est allumé. Donc c'est parfait, on va dire que la mission est accomplie.

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 !