Bonjour, nous continuons le cours "Comprendre les microcontrôleurs". Et cette fois, enfin, nous allons vraiment parler de microcontrôleurs. Nous allons même pouvoir définir précisément de quoi il s'agit. En effet dans ce module, nous allons donner une définition précise de ce qu'est un microcontrôleur. Nous allons également regarder comment nous allons pouvoir le mettre en oeuvre au niveau électronique, donner le schéma de mise en oeuvre et on parlera également de l'environnement de développement dont on a besoin pour mettre en oeuvre un microcontrôleur. Plutôt que de faire tomber du ciel une définition de microcontrôleur, permettez-moi de revenir un tout petit peu en arrière sur l'architecture des systèmes informatiques. On avait vu qu'un système informatique contient un processeur, qu'il contient une mémoire de programme, qu'il contient une mémoire vive. Puis évidemment qu'il contient de quoi dialoguer avec l'extérieur : des entrées/sorties. Il y a évidemment une horloge ici qui permet de cadencer, le fonctionnement du processeur et donc de l'ensemble du système. Notez que ce schéma d'un système informatique peut correspondre à beaucoup de systèmes informatiques différents. Prenons un exemple concret : la carte-mère d'un ordinateur individuel. Celui que vous avez l'habitude d'utiliser. Cette carte-mère contient un processeur, ce sera par exemple un processur du type P4, pentium 4, ou encore, ce sera peut-être si vous êtes euh, fortuné un I7, la dernière génération 2013. Ce processeur sera cadencé par une horloge peut-être de trois gigaHertz ou un petit peu plus, ou un petit peu moins. Vous aurez certainement des barrettes de mémoire, sur votre système. Peut-être aurez-vous 4 GB de barrettes de mémoire. Vous aurez certainement des entrées et des sorties. Par exemple, un clavier, par exemple, une souris pour les entrées. Vous aurez certainement un écran et bien d'autres choses pour les sorties. Petite question : est-ce que vous aurez une ROM dans votre système? C'est vrai qu'on n'en a peut-être moins conscience, des fois les fabriquants n'en parlent pas mais tout système informatique a une mémoire morte pour que le programme puisse s'exécuter au démarrage et dans le cas d'un système informatique, d'une carte-mère. Il s'agit de ce qu'on appelle le BIOS pour ceux qui ont un petit peu fait de la maintenance informatique. Et bien, figurez-vous qu'un microcontrôleur peut répondre exactement au même schéma bloc que tout à l'heure. J'ai pris le même dessin, j'ai pris les mêmes expressions. Il ne s'agit toutefois pas tout à fait du même dispositif. Peut-être que nous aurons un processeur cadencé à une fréquence de 8 megaHertz. On est loin des 3 gigaHertz de tout à l'heure. Le processeur sera certainement beaucoup moins puissant que votre Pentium 4 ou que votre I5, ou I7. La taille de la mémoire, dans un microcontrôleur qu'on va utiliser, on trouvera 512. Tiens, 512 quoi? Simplement 512 Bytes, 512 Octets. On est bien, bien loin des quatre GB que vous avez peut-être sur votre ordinateur. On a une mémoire de programme d'une certaine taille. Par exemple, 16 kB. Ça veut dire, pour un certain nombre de systèmes, qu'on va pouvoir mettre environ 8000 instructions, ce qui est déjà intéressant. Finalement, les entrées/sorties, ce sera effectivement des entrées/sorties binaires avec possibilité de sortir ou d'entrer des zéros ou des 1. Mais ce qui est intéressant, c'est que tout ce système informatique peut tenir dans un seul circuit intégré. On va avoir ici un seul circuit intégré qui va contenir tout ce système informatique. Un circuit intégré, en aglais "integrated circuit". Alors évidemment, la comparaison structurelle peut être faite avec un ordinateur, tel qu'un PC. D'autres comparaisons sont un petit peu plus difficiles à faire. On a beaucoup moins de mémoire, on a beaucoup moins de puissance de calcul, mais on a aussi un système qui coûte beaucoup moins cher puisqu'on trouve de nombreux microcontrôleurs dont le prix est inférieur à 1 euro. Donc je peux maintenant me lancer dans une définition de microcontrôleur. Le microcontrôleur est un circuit intégré qui contient un petit système informatique. Donc c'est à la fois un circuit intégré euh, c'est donc un composant électronique élémentaire, peu coûteux. Mais il contient tout un système informatique. On va retrouver à l'intérieur un processeur, on va retrouver à l'intérieur des mémoires de programme et de données et également des circuits d'entrées et sorties. Étant donné que c'est un circuit intégré, il y a une mise en oeuvre électronique qui doit être faite. Et étant donné que c'est un système informatique, il va falloir le programmer, donc faire une mise en oeuvre logicielle. Essayons de regarder un petit peu plus en détail comment le schéma électronique utilisant un microcontrôleur va pouvoir être dessiné. Ici, j'ai pris simplement le composant microcontrôleur, il n'y a pas de symbole spécifique. Donc, j'ai mis simplement un rectangle ou un carré et là où j'en avais envie, j'ai mis les pattes dont j'aurai besoin. Il y a évidemment ici une patte pour le, la référence électrique, le zéro Volt. Il y le fameux VCC, qui permet d'alimenter notre microcontrôleur en 5V, peut-être même pour d'autres modèles en 3V ou encore d'autres tensions plus basses. On a également un, une patte qui s'appelle "reset" ici qui va permettre le redémarrage au début du programme. C'est donc une patte qui existe en principe sur tous les microcontrôleurs et qui permet de relancer l'exécution du programme qui se trouve à l'intérieur à partir de son début. Ici, on a encore une mystérieuse patte qui s'appelle "test" dont je vous dirai quelques mots tout à l'heure, qui va être utile pour la programmation. Et finalement, j'ai ici représenté une seule patte d'entrée et sortie que je vais utiliser dans ce cas-là comme une sortie dans l'exemple qu'on va prendre. Pour compléter mon schéma, et bien il faut que je signale que la masse était effectivement connectée au zéro V, qu'il va falloir fournir une alimentation sur le VCC. On va mettre ici une résistance de rappel. On a entendu parler de ces résistances de pull up, une résistance de rappel sur le reset. De telle manière que le reset ne se trouve pas dans un état indéterminé, une entrée en l'air prend un état indéterminé. Ici, il est nécessaire de lui donner un état précis. Comme le reset est actif à zéro, ce que montre ce petit rond, et bien il va falloir tirer vers le haut ce signal de telle manière que le reset ne s'exécute pas en permanence et que le programme puisse s'exécuter normalement. Je signale quand même que, à l'intérieur du microcontrôleur, il y a un système qui fait que lorsqu'on met la tension sur le VCC, je devrais dire entre la masse et le VCC, on a un reset automatique qui s'exécute de telle manière que le programme puisse commencer dans de bonnes conditions. Il faut encore ajouter un composant qui est ici un petit condensateur. Un condensateur qui n'est pas de très grande valeur mais qui doit être de bonne qualité, c'est-à -dire avec une résistance interne qui soit aussi faible que possible. On appelle ce type de condensateur des condensateurs de découplage euh, "decoupling capacitor" en anglais. Il y a d'autres termes qui sont également utilisés : "bypass capacitor". Je pourrais vous donner une explication très simple sur l'utilité de ce condensateur, c'est une petite réserve d'électricité qui permet, lorsqu'il y a une demande instantanée importante de faire face à cette demande de courant au niveau donc des alimentations puisqu'il est connecté ici au plus et ici au moins, on doit le mettre le plus proche possible du circuit intégré. Je vais continuer à compléter mon montage en rajoutant ici, un connecteur sur lequel il y aura la patte "reset", sur lequel il y aura cette patte "test" et sur lequel il y aura au moins la masse, qui est donc le point commun. J'ai, assez souvent, on met l'alimentation, ce sera ainsi la possibilité d'alimenter notre montage par ce connecteur. Alors, en fait, ce connecteur va être utilisé pour la programmation, donc pour cette étape de mise à l'intérieur de la mémoire morte du microcontrôleur, du programme qu'on a l'intention d'exécuter. J'ai presque terminé. Je peux maintenant très simplement compléter mon montage en rajoutant ici par exemple, une diode lumineuse. Ce sera la seule sortie de mon système qui n'aura même pas d'entrée. On pourra, par exemple, faire clignoter cette diode lumineuse. C'est quelque chose qui n'est peut-être pas très sophistiqué, mais si on peut faire clignoter une diode lumineuse et faire varier euh, d'un programme à l'autre son, sa vitesse de clignotement, on aura déjà la conviction qu'on a réussi à faire fonctionner notre microcontrôleur. Un tel montage n'est pas compliqué à réaliser. Vous connaissez ces plaques que l'on appelle parfois des plaques d'expérimentation en français, ou des "breadboards" ou des "project boards" en anglais. Et bien, ces plaques d'expérimentations permettent très simplement de connecter selon le schéma qu'on a mis tout à l'heure. On voit ici le circuit intégré, on voit ici sur la patte correspondante, la résistance de rappel pour le reset qui est connectée au plus, donc à la bande rouge ici. On voit ici l'alimentation, les deux alimentations du processeur, on voit ici la connexion d'une patte à une diode lumineuse euh, avec une résistance qui va jusqu'à la masse. Ici j'ai rajouté ces quelques fils pourqu'on puisse avoir effectivement des deux côtés le moins et des deux côtés le plus de telle manière que ce connecteur ici permette d'alimenter le montage et ce connecteur-là le complète pour la programmation. Notez que ce dessin a été fait avec un logiciel qui s'appelle Fritzing donc que vous pouvez trouver sur ce site internet Fritzing.org. J'ai donc maintenant mon schéma, il va falloir trouver un environnement de développement, un système de développement qui va me permettre de mettre le programme à l'intérieur de mon microcontrôleur. Je vais utiliser pour ceci un PC et ici ce qu'on appelle un programmateur. Alors, plutôt bonne nouvelle : le PC n'a pas besoin d'être un PC extrêmement sophistiqué. On a des environnement de développement de logiciel dont on parlera tout à l'heure et dans les prochains modules qui ne sont pas trop lourds, pas trop complexes. Pour les programmateurs, et bien certains sont plus ou moins compliqués. En voici quelques-uns. Celui-ci permet de programmer un Pick. Celui-ci permet de programmer un AVR, il y a naturellement beaucoup d'autres modèles. Celui-là est quelque chose d'un petit peu plus sophistiqué pour des systèmes un petit peu plus coûteux. Ici, on a un programmateur extrêmement simple, qui n'a pratiquement pas d'électronique. Malheureusement, il utilise le port LPT des ordinateurs qui ne sont plus disponibles. Sur des ordinateurs mordernes, on préférera les solutions utilisant des connecteurs de type USB. Il existe également plusieurs cartes électroniques, généralement de petit format, telles que l'Arduino, que vous avez ici sous vos yeux, qui contiennent à la fois le microcontrôleur, avec des connecteurs pour relier les pattes d'entrées et sorties, mais également le programmateur et vous reconnaissez sur cette image le connecteur USB. Un autre exemple, c'est le LaunchPad proposé par Texas Instruments, qui est aussi un, une carte très intéressante qui contient le programmateur dans la partie supérieure, qui contient le microcrontrôleur avec également des connecteurs latéraux et nous allons abondamment utiliser cette carte pour faire des démonstrations durant ce cours "comprendre les microcontrôleurs". Une chose est l'aspect matériel. Une autre chose est l'aspect logiciel. Vous voyez ici des environnement de développement. Celui-ci correspond à l'environnement du, de l'Arduino. Celui-ci correspond à l'environnement du MSP430. Vous voyez qu'ils sont extrêmement similaires l'un à l'autre. On a même pratiquement le même programme qui est écrit. Et ces logiciels donc, vont permettre d'écrire des programmes, de les convertir en langage machine et ensuite de les envoyer sur la mémoire du microcontrôleur. Il existe aussi des environnements plus sophistiqués. Ici, par exemple, l'environnement qui s'appelle Code Composer Studio qui est proposé avec les processeurs de Texas Instruments, entre autres les MSP430. On utilisera aussi durant ce cours ce logiciel de telle manière qu'on puisse apprendre à utiliser un certain nombre de fonctionnalités avancées, en particulier qui se cachent derrière ici, cette touche "debug", la possibilité de voir, en quelque sorte, à l'écran de l'ordinateur les instructions s'exécuter à l'intérieur du microcontrôleur. Nous avons donc appris aujourd'hui ce qu'est un microcontrôleur. Je rappelle cette définition : c'est un petit système informatique contenu dans un seul circuit intégré. On a également vu comment dessiner le schéma pour la mise en oeuvre de ce microcontrôleur. Et on a effleuré quelques solutions matérielles et logicielles qui vont servir de système de développement, qui vont donc permettre de développer des applications à base de microcontrôleur.