Certains microcontrôleurs ont un nombre très restreint de broches, si bien qu'une broche
donnée peut correspondre à plusieurs périphériques internes. La fonction choisie doit alors
être sélectionnée par logiciel.
Le choix des périphériques à intégrer dans un microcontrôleur est délicat. Les fabricants
doivent réaliser un compromis entre des besoins contradictoires : utiliser des fréquences
élevées, réduire la taille du circuit, apporter des fonctionnalités nombreuses, élaborer une
architecture flexible, assurer des coûts modérés, etc.
Un microcontrôleur peut effectuer la plupart des instructions machine habituelles, avec
certaines restrictions liées à son caractère embarqué (taille restreinte des mots machine, petite
taille disponible, etc.). On note cependant quelques particularités.
Les capacités mathématiques sont en général particulièrement limitées, réduites à des
additions, soustractions et décalages sur des octets pour les plus simples d'entre eux. Les
calculs mathématiques évolués doivent donc être ramenés à une succession d'opérations
simples portant seulement sur des octets. Des routines mathématiques (petits programmes
permettant de réaliser les calculs complexes) ont été développées pour la plupart des
microcontrôleurs populaires.
Les instructions d'entrée-sortie sont bien développées, de façon à pouvoir :
- lire l'état d'un port d'entrée ;
- écrire une information dans le registre d'un port de sortie, qui maintient l'information à
la disposition des circuits extérieurs.
Les microcontrôleurs disposent généralement de nombreuses instructions destinées aux
opérations sur les bits, de façon à rendre les programmes plus compacts, notamment lorsqu'ils
agissent sur une entrée-sortie donnée. Ainsi, un processeur généraliste peut avoir besoin
de plusieurs instructions pour tester la valeur d'un bit d'un registre et effectuer un saut si le bit
vaut vrai. Cette fonction courante est assurée par une seule instruction dans certains
microcontrôleurs.
Les modes d'adressage utilisables sont en général semblables à ceux des autres processeurs.
De façon générale, les instructions et modes d'adressage disponibles varient fort selon les
familles de microcontrôleurs.
Les microcontrôleurs représentent la plus grosse partie des ventes dans le marché
des microprocesseurs. En effet, un foyer moyen d'un pays développé est susceptible d'être
équipé de seulement un ou deux microprocesseurs généralistes (ordinateurs), mais d'une ou
deux douzaines de microcontrôleurs (appareils électroménagers). Une automobile de milieu
de gamme est équipée d'au moins 50 microcontrôleurs
Le programme d'un microcontrôleur est généralement
appelé micrologiciel ou microprogramme.
À l'origine, les microcontrôleurs se programmaient en assembleur. Fortement bas niveau (et
donc, intrinsèquement optimisé), l'assembleur posa et pose toujours d'énormes problèmes
pour la maintenance et l'évolution des logiciels embarqués. Désormais, on utilise de plus en
plus des langages de haut niveau, notamment le langage C
Des simulateurs sont disponibles pour certains microcontrôleurs, comme
l'environnement MPLAB de Microchip. Les développeurs peuvent ainsi analyser le
comportement du microcontrôleur et du programme, comme s'il s'agissait du composant réel.
Une fois le programme compilé, le fichier binaire doit être envoyé au microcontrôleur. On
utilise soit :
- un programmateur, pour microcontrôleurs et souvent également d’EEPROM. On parle
alors de programmateur universel.
- un programmateur ISP qui a l'avantage de ne pas nécessiter de sortir le
microcontrôleur du système électronique complet. Ce type de programmation pourra
se faire via le bus de communication standard JTAG ou un autre bus, souvent
propriétaire (Microchip par ex. avec sa série PIC16F) et, malheureusement, inadapté
au test des cartes lors de la phase de production.
o DSP
Un DSP (de l'anglais « Digital Signal Processor », qu'on pourrait traduire par « processeur de
signal numérique » ou « traitement numérique de signal ») est
un microprocesseur optimisé pour exécuter des applications de traitement numérique du
signal (filtrage, extraction de signaux, etc.) le plus rapidement possible .
Les DSP sont utilisés dans la plupart des applications du traitement numérique du signal en
temps réel. On les trouve dans les modems (modem RTC, modem ADSL), les téléphones
mobiles, les appareils multimédia (lecteur MP3), les récepteurs GPS... Ils sont également
utilisés dans des systèmes vidéo, les chaînes de traitement de son, partout où l'on reçoit
un signal complexe que l'on doit modifier à l'aide du filtrage.
Un DSP fournit des instructions usuelles comme la multiplication, l'addition, la soustraction,
etc. Mais le jeu d'instruction d'un DSP est aussi optimisé de façon à exécuter des opérations
très courantes dans les algorithmes de traitement de signal les plus usuels.
Les DSP sont aussi fortement optimisés pour exécuter des boucles le plus rapidement
possible. En effet, il n'est pas rare que les programmes de traitement du signal utilisent des
boucles, notamment pour parcourir des tableaux. Accélérer ces boucles est donc un enjeu
majeur de la conception des DSP.
Les DSP sont capables de gérer des boucles FOR en un seul cycle d'horloge.
Les DSP supportent souvent des modes d'adressages assez particuliers, qu'on ne retrouve pas
sur les autres jeux d'instructions.