Cet article présente quelques notions de base sur le microcontrôleur, le but étant de permettre à toute personne non familière avec ce type de composant de découvrir son fonctionnement, puis de créer des petits programmes de prise en main.

Il ne s’agit pas d’apprendre la programmation d’une manière générale, même si quelques aspects seront abordés concernant les microcontrôleurs.

On parlera de la structure matérielle et des différents périphériques : TIMER/COMPTEUR ; UART ; I2C ; SPI ; ADC (Convertisseur Analogique Numérique) ; DAC (Converteur Numérique Analogique) ; PWM ; Watchdog ;  Interruptions ; …

Des exemples tels que : la gestion d’anti-rebonds de boutons poussoir, le filtrage des entrées analogiques, le pilotage d’afficheur LCD (pour ne citer que ceux-là), seront examinés dans de petits des programmes proposés dans d’autres articles.  

L’étendue des familles de micro contrôleur est plus que vairée. Ceci est vrai d’autant plus que tous les développeurs d’applications n’ont pas forcément les mêmes centres d’intérêts.

 

Quelques liens relatifs à cet article

Introduction à la programmation du PIC16F877A-1

Introduction à la programmation du PIC16F877A-2

Introduction à la programmation du PIC16F877A-3

Introduction à la programmation du PIC16F877A-4

 

Introduction aux microcontrôleurs

 

Terminologie : Commençons d’abord par quelques définitions.

 

Qu’est-ce qu’un programme embarqué ?

Un programme embarqué est un programme informatique contenu dans  un appareil ou un périphérique et qui exploite celui-ci de façon autonome. Les objets de la vie courante, tels que nos Smartphones par exemple contiennent des programmes embarqués.

Dans le cas d’un ordinateur, le clavier, la souris, l’imprimante possèdent des programmes qui gèrent certaines fonctions de façon autonome.

En clair tout programme contenu dans un microcontrôleur est un programme embarqué.

Il faut dire que les microcontrôleurs ajoutent de l’intelligence à de nombreux systèmes et dispositifs, tout en les permettant de fonctionner plus rapidement, plus efficacement en toute sécurité. Certains appareils ne pourraient d’ailleurs être conçus sans la présence d’un microcontrôleur. Il suffit de regarder autour de soi.

 

Qu’est-ce qu’un système embarqué ?

Bien la réponse à cette question ne soit pas aisée, on peut dire, pour notre cas de figure, qu’un système embarqué est un système formé d’un ou plusieurs micro ordinateurs (de faible ou de très faibles tailles), contenant des programmes  propriétaires, connectés à du matériel spécifique, et exécutant des tâches dédiées.

Pour définir ce terme, Il est plus simple de citer quelques exemples où on peut trouver des systèmes informatiques embarqués:

  • Systèmes d’alarmes ;
  • Dispositifs d’air conditionné ;
  • Régulateurs de vitesses des automobiles ;
  • Systèmes d’anti-dérapage de voitures ;
  • Gestion et contrôle des systèmes d’irrigation ;
  • Drônes ;
  • Appareils de mesures numériques ;
  • Robot tondeuse ;
  • Etc...

La liste n’est pas exhaustive.

Plusieurs systèmes embarqués utilisent des périphériques comme des claviers ou des afficheurs, tandis que d’autres n’ont aucun de ces périphériques.

 

Qu’est-ce qui caractérise un programme embarqué ?

Un programme embarqué travaille directement avec des composants spécialisés et des circuits intégrés propriétaires.  De plus la mémoire programme nécessaire varie de quelques milliers à quelques centaines de milliers d’octets, (au lieu des centaines de Giga ou quelques Téra octets que l’on trouve dans des ordinateurs de bureau), avec une faible capacité RAM.  Le type d’unité centrale varie de 8 à 32 bits selon les familles, et  la fréquence d’horloge peut atteindre quelques centaines de Méga Hertz ; en comparaison aux Giga Hertz nécessaire pour un ordinateur de bureau.

 

Différences entre un micro-ordinateur, un microprocesseur et un microcontrôleur

Un microprocesseur est souvent définit comme étant l’unité centrale de traitement (CPU), dont la fonction principale est d’exécuter les instructions du programme ; c’est l’organe central de l’ordinateur.

Un micro-ordinateur est un ordinateur construit autour d’un microprocesseur ; il possède  une mémoire programme, une mémoire de données (RAM), des périphériques d’entrées-sorties, et d’autres types de périphériques.

Un microcontrôleur contient une unité centrale (CPU), une mémoire programme, une mémoire de données, ainsi que divers périphériques d’entrées-sorties, tels que des entrées-sorties à usage général (GPIO), des Timers, des interfaces séries, I2C, SPI, …Le tout dans une seule puce! C’est un véritable micro-ordinateur miniaturisé.

On notera que tous les micro-ordinateurs n’utilisent pas les micros contrôleurs.

Les systèmes embarqués de grande envergure peuvent utiliser un ou plusieurs microprocesseurs si des microcontrôleurs adaptés ne répondent pas aux spécifications imposées. C’est notamment le cas des PCs industriels compacts. Il est aussi possible de trouver dans un système complexe, un microprocesseur et un microcontrôleur qui cohabitent.

 

Qu’est ce qu’un microprocesseur ou un micro contrôleur N bits ?

Il y a diverses discussions à propos de la signification du terme processeur N bits. Si un composant peut gérer la manipulation de ses données sur des mots d’une largeur de N bits, alors on dira qu’on a affaire à un processeur N bits. Par exemple, un composant peut avoir un jeu d’instruction complet opérant sur 8 bits de données, si quelques instructions spécifiques fonctionnent en 16 bits, celui-ci sera tout de même considéré  comme un processeur 8 bits.

L’offre du marché en la matière va de la famille de micro contrôleurs 8 bits, à la famille 32 bits.

 

Exécution d’un programme

Supposons que le programme est généré et téléchargé dans la mémoire programme du microcontrôleur. Lors de la mise sous tension ou de l’appui du bouton reset,  le microcontrôleur ira vers une adresse mémoire particulière, définie par le fabriquant du composant, pour exécuter le code qui se trouve à cette adresse.

Cet emplacement mémoire peut contenir directement du code ou un vecteur contenant l’adresse de la première instruction à exécuter. Par exemple au reset, un module logique appelé compteur programme contiendra la valeur hexadécimale 0xFFFE, qui est l’adresse de début du programme exécuter.

Dans de nombreux programmes, une phase d’initialisation est nécessaire. Ce bloc de code peut être scindé en deux parties :

L’initialisation du hard et l’initialisation du soft.

 

De quoi aura-t-on besoin pour mettre en œuvre les microcontrôleurs ?

Les outils de programmation et de simulation

Kits logiciels :

Tout dépend de la famille de composants que l’on souhaite programmer.

Pour la famille de micros contrôleurs PIC  on aura besoin de :

  • MPLAB v8.36 ou version supérieure ; 

C'est un environnement de développement intégré qui nous servira à créer des programmes pour le microcontrôleur. La version 8.36 étant devenue obsolète, le nouvel environnement de développement MPLAB X IDE peut aussi servir pour développer les exemples de programmes. Il supporte aussi les microcontrôleurs ATMEL.

  • Compilateur C Hi-Tech v9.83 Lite, ou XC8

C’est une interface logicielle qui permet de transcrire un code programme écrit en langage C vers le langage machine du microcontrôleur.

On peut donc écrire directement les programmes directement en langage C. Même sans compilateur, on peut toujours développer les programmes en assembleur directement dans MPLAB.

  • Proteus 6, ou version supérieure

C’est un environnement de simulation des circuits électroniques. Mais pas seulement ! Proteus permet aussi de créer des circuits imprimés, mais cette dernière fonctionnalité ne sera pas exploitée dans cette partie consacrée à la présentation des microcontrôleurs.

Rappelons tout de même que MPLAB offre aussi la possibilité de simuler les programmes.

 

Kits matériels

  • Un programmeur de microcontrôleurs PIC

      Afin de téléverser les programmes dans la mémoire programme du composant.

           

Pour la famille de microcontrôleurs ATMEL, on aura besoin de :

  • Arduino

La version Uno suffira pour les exemples.

  • L’environnement de développement de l’Arduino ;
  • ATMEL Studio 7 :

Ce sera aussi une occasion pour utiliser cet environnement.

 

Les outils de tests matériels (Hardware)

Pour commencer à construire des circuits à base de microcontrôleurs, on aura besoin de certains composants et outils.

Voici une liste du matériel de base dont on peut avoir besoin pour débuter :

Des platines à essais pour câblage en fils volant (« Breadboard ») ; elles sont constituées de grilles de trous espacées de 2,54 mm, dans lesquelles les composants peuvent être insérés et enlevés. Sous chaque grille on a une série de contacts électriques permettant aux composants d’être reliés au même potentiel sans avoir besoin de câble. C’est outils très important lorsqu’on veut rapidement tester un circuit.

Des câbles rigides ayant une section d’environ 0.25 mm2.

Des résistances électroniques aux valeurs normalisées (Voir tableau). On peut trouver par kits de valeurs chez certains revendeurs.

Des boutons poussoirs, qui pourront être utilisés comme des entrées tout ou rien.

Des diodes électroluminescentes, LED.

Des plaques de circuits imprimés pastillées au pas de 2,54 mm.

D’un fer à souder de 40 W de puissance.

De la soudure à l’étain, car c’est un matériau conducteur, il est préférable de prendre un fil de  soudure de diamètre 0.25 à 0.5 mm, pour des raisons pratique.

Une pince coupante.

Une pince brucelles.

Au besoin une « troisième main ».

Une tresse à déssouder.

Des appareils de mesure et de test : Oscilloscope, multimètre, etc...Pour d’éventuels dépannages matériels.

Cette liste n’est pas exhaustive ; mais elle constitue comme nous l’avons déjà signalé plus haut le matériel de base pour débuter.

 

Quel type de microcontrôleur sera utilisé dans les exemples?

On présentera la famille de micro contrôleurs PIC 16FXXX, l’ATMEGA328P, puis par la suite d’autres  microcontrôleurs 16 bits et 32 bits, tout dépend des exemples qui seront présentés.

 

Où trouver ces composants ?

L’approvisionnement en composants peut se faire :

Soit par des boutiques en lignes ; dont on peut citer les grands détaillants mondiaux en la matière : Radiospares composants et Farnell ;

Soit dans des boutiques de rue, bien ce type de magasins devient de plus rares de nos jours et ne proposent souvent que des composants courants ;

Soit des magasins pour Hobbyistes ; dont un bon nombre est né avec l’apparition de la carte open source Arduino. Ils fournissent aussi des services de vente en ligne, on peut citer (Sparkfun, Adafruit, et il y en a bien d’autres).