Les microcontrôleurs⚓
Un microcontrôleur est un circuit intégré rassemblant les éléments essentiels d'un ordinateur : processeur, mémoires , unités périphériques et interfaces d'entrées-sorties le tout est intégré sur des circuits de petite taille et de faible consommation électrique. Leurs caractéristiques sont beaucoup plus modeste par rapport aux microprocesseurs utilisés dans les ordinateurs personnels.
Les microcontrôleurs sont très utilisés dans les systèmes embarqués (téléphones mobiles, récepteurs GPS, ...). Un foyer moyen compte en moyenne une à deux douzaines de microcontrôleurs (appareils ménagers). Au moins une cinquantaine de microcontrôleurs sont présents aujourd'hui dans une automobile moyenne.
Structure d'un système à microprocesseur
La figure ci-dessous représente une vue schématique des éléments essentiels au fonctionnement d'un ordinateur :

Le processeur interprète les instructions et traite les données d'un programme. Son rôle est central au fonctionnement de l'ensemble mais il a besoin d'éléments périphériques pour fonctionner :
Une horloge (Quartz)
De la mémoire vive (RAM) pour stocker temporairement l'état des variables
De la mémoire morte (ROM) pour stocker des variables qui persistent après le redémarrage du système (le programme est stocké dans la RAM)
Des périphériques reliés aux ports d'Entrées/Sorties qui permettent l'interaction avec l'utilisateur.
Pour communiquer au sein de ce système, le processeur «écrit » sur le bus d'adresse l'adresse du composant ou d'une case mémoire avec lesquels il peut communiquer. L'information entre deux composants circule via le bus de données.
Le microcontrôleur : un composant intégré
Le microcontrôleur est un circuit intégré qui comporte tous les éléments de la figure ci-dessus (processeur, mémoire, interfaces d'entrées/sorties, ...). Par rapport au microprocesseurs utilisés dans les ordinateurs, ils se distinguent par :
Leur faible consommation électrique
Une intégration plus élevée
Une horloge moins rapide (de quelques MHz à plus d'un GHz)
Un coût réduit
Les microcontrôleurs s'intègrent donc naturellement dans ces systèmes qui doivent satisfaire les exigences suivantes :
En plus d'intégrer ces éléments classiques, il peut également comporter des convertisseurs analogiques numériques (ADC) et numériques analogiques(DAC), des générateurs de signaux PWM (modulation à largeur d'impulsion : MLI) pour piloter des moteurs, des bus de communication série (UART, I2C, USB, ...), ...
Les caractéristiques des microcontrôleurs AVR d'Atmel (cartes Arduino)
Le projet Arduino a pour objectif de concevoir des cartes en matériel libre (open hardware : les schémas de la carte sont publiés en licence libre). Ces cartes mettent en œuvre un microcontrôleur Atmel AVR qui intègre les composant classiques d'un microcontrôleur.
Les différents types de mémoire dans les composants AVR d'Atmel
La mémoire morte (ROM) dans laquelle le programme est inséré est une mémoire de type Flash (comme les clés USB). Elle se programme électriquement lorsque l'on connecte la carte à un ordinateur à travers une connexion USB et que l'on « téléverse » le programme à l'aide du logiciel Arduino. Le contenu de cette mémoire est conservé après un redémarrage de la carte.
La mémoire vive (RAM) a le même rôle que celle d'un ordinateur. Elle stocke temporairement l'état des variables pendant l'exécution du programme. L'accès à cette mémoire est très rapide. mais elle s'efface lorsque la machine s'éteint.
La mémoire EEPROM, quand à elle, garde en mémoire les données qu'elle contient après un redémarrage. Elle est en général plus lente mais elle permet de sauvegarder des données que l'on souhaite retrouver au redémarrage.
Les entrées sorties numériques
Dans un système embarqué le microcontrôleur communique avec les composants (afficheurs LCD, moteurs, LED, relais, ...) à travers un port d'entrées-sorties (ES) numériques (I/O : input/output). Les différentes broches de ce port peuvent être soit des entrées (boutons poussoir, claviers, ...) soit des sorties (afficheurs, LED, servomoteurs, ...).
Les entrées analogique
Certaines broches de l'arduino UNO admettent une tension analogiques pouvant varier de 0 à 5V. Un convertisseur analogique numérique (CAN, ADC en anglais) de 10 bit converti cette tension en un entier pouvant varier de 0 à 1023.
Comparatif des caractéristiques principales des cartes Arduino Uno et Arduino Mega :
Programmation d'une carte Arduino
A l'origine les microcontrôleurs se programmaient en assembleur (langage machine très bas niveau). Aujourd'hui on utilise des langages de programmation de haut niveau (C++, C, Basic). En général les constructeurs fournissent un logiciel de programmation du composant pour pouvoir :
Compiler : Transformation du code source (langage de programmation) en code machine (suite de 0 et de 1 interprétable par la machine : fichier xxx.hex)
Télécharger (ou téléverser) : Une fois le code machine produit, il doit être charger dans la mémoire programme (ROM) du composant.
A l'origine, pour programmer un microcontrôleur, on devait grillait les fusibles de la mémoire morte. Ensuite on a utilisé des EPROM (effaçable aux UV) et des EEPROM (effaçable électriquement) qu'on on plaçait dans un programmateur. Aujourd'hui, l'utilisation de la Mémoire Flash et le développement de la programmation ISP (In System Programming), programmation du composant alors qu'il est déjà en place, permet un développement nettement plus simple et efficace.
