close

Microcontrôleur

Aller à la navigation Aller à la recherche
Image
Microcontrôleur Motorola 68HC11 et puces de support
Image
Microcontrôleur Intel 8742 8 bits , avec CPU 12 MHz , 128 octets de RAM , 2048 octets d' EPROM et E/S sur une seule puce
Image
Microcontrôleur PIC 18F8720 en boîtier TQFP 80 broches
Texas Instruments TMS 1000 Microcontrôleur
Texas Instruments TMS 1000 Microcontrôleur

Un microcontrôleur (en abrégé µC , UC ou mCU ) est un circuit intégré programmable , capable d'exécuter les commandes enregistrées dans sa mémoire. Il est composé de plusieurs blocs fonctionnels qui remplissent une tâche spécifique. Un microcontrôleur comprend en son sein les trois principales unités fonctionnelles d'un ordinateur : l'unité centrale de traitement , la mémoire et les périphériques d' entrée/sortie .

Certains microcontrôleurs peuvent utiliser des mots de quatre bits et fonctionner à des fréquences d'horloge aussi basses que 4 kHz, avec une faible consommation d'énergie ( mW ou microwatts ). Il aura généralement la capacité d'attendre un événement tel qu'une pression sur un bouton ou une autre interruption ; ainsi, la consommation d'énergie pendant l'état d'inactivité (horloge du processeur et la plupart des périphériques) peut être aussi faible que les nanowatts, ce qui rend bon nombre d'entre eux bien adaptés aux applications à longue durée de vie de la batterie. D'autres microcontrôleurs peuvent remplir des rôles critiques pour les performances, où il est nécessaire d'agir davantage comme un processeur de signal numérique (DSP), avec des vitesses d'horloge et une consommation d'énergie plus élevées.

Lorsque le microcontrôleur est fabriqué, il ne contient aucune donnée en ROM. Pour contrôler un processus, il est nécessaire de générer ou de créer puis d'enregistrer dans l' EEPROM ou équivalent du microcontrôleur un programme, qui peut être écrit en langage assembleur ou autre langage pour microcontrôleurs ; cependant, pour que le programme soit enregistré dans la mémoire du microcontrôleur, il doit être codé dans le système numérique hexadécimal , qui est finalement le système qui fait fonctionner le microcontrôleur lorsqu'il est alimenté avec la tension appropriée et associé à des dispositifs analogiques et discrets pour son fonctionnement. [ 1 ]

Historique

Le premier microprocesseur était l' Intel 4004 4 bits , sorti en 1971, suivi de l' Intel 8008 et d'autres plus performants. Cependant, les deux processeurs nécessitent des circuits supplémentaires pour mettre en œuvre un système fonctionnel, ce qui augmente le coût du système total.

La Smithsonian Institution affirme que les ingénieurs de Texas Instruments Gary Boone et Michael Cochran ont réussi à créer le premier microcontrôleur, TMS 1000 , en 1971 ; il a été commercialisé en 1974. Il combine mémoire ROM , mémoire RAM , microprocesseur et horloge sur une même puce et était destiné aux systèmes embarqués . [ 2 ]

En partie grâce à l'existence du TMS 1000, [ 3 ] Intel a développé un système d'ordinateur sur puce optimisé pour les applications de contrôle, l ' Intel 8048 , qui a commencé à être commercialisé en 1977. [ 3 ] Il combine la RAM et la ROM dans le même puce et peut être trouvé dans plus d'un milliard de claviers compatibles IBM PC et de nombreuses autres applications. Le président d'Intel à l'époque, Luke J. Valenter, a déclaré que le microcontrôleur était l'un des produits les plus réussis de l'histoire de l'entreprise et a augmenté le budget de la division de plus de 25 %.

La plupart des microcontrôleurs de l'époque avaient deux variantes. Certains avaient une mémoire EPROM reprogrammable , nettement plus chère que la variante PROM qui n'était programmable qu'une seule fois. Pour effacer l'EPROM, vous devez exposer le capuchon en quartz transparent à la lumière ultraviolette. Les puces entièrement opaques représentaient un coût inférieur.

En 1993, la sortie de l' EEPROM dans les microcontrôleurs (à commencer par le Microchip PIC16x84 ) [ 4 ] permet de l'effacer électriquement et rapidement sans avoir besoin d'un package coûteux comme l'exige l' EPROM , permettant à la fois un prototypage rapide et une programmation dans le système . La même année, Atmel sort le premier microcontrôleur à utiliser la mémoire flash . [ 5 ] D'autres entreprises ont rapidement emboîté le pas, avec les deux types de mémoire.

Le coût a chuté au fil du temps, avec le microcontrôleur 8 bits le moins cher disponible pour moins de 0,25 $ pour des milliers d'unités en 2009, et certains microcontrôleurs 32 bits à 1 $ pour des montants similaires. Aujourd'hui, les microcontrôleurs sont bon marché et facilement accessibles aux amateurs, avec de grandes communautés en ligne pour certains processeurs.

À l'avenir, la MRAM pourrait être utilisée dans les microcontrôleurs, car elle a une résistance infinie et le coût de sa tranche semi-conductrice est relativement faible.

Fonctionnalités

Image
Schéma d'un microcontrôleur. Dans cette figure, nous voyons le microcontrôleur à l'intérieur d'un boîtier de circuit intégré, avec son processeur (CPU), ses bus, sa mémoire, ses périphériques et ses ports d'entrée/sortie . À l'extérieur du boîtier se trouvent d'autres circuits pour compléter les périphériques internes et les dispositifs qui peuvent être connectés aux broches d'entrée/sortie. L'alimentation, la masse, le circuit de complétion de l'oscillateur et les autres circuits nécessaires au fonctionnement du microcontrôleur seront également connectés aux broches du boîtier.

Les microcontrôleurs sont conçus pour réduire le coût économique et la consommation d'énergie d'un système particulier. Ainsi, la taille de l' unité centrale de traitement , la quantité de mémoire et les périphériques inclus dépendront de l'application. Le contrôle d'un appareil simple comme un mélangeur utilisera un très petit processeur (4 ou 8 bits) car il remplacera un automate fini. En revanche, un lecteur audio ou vidéo numérique ( MP3 ou MP4 ) nécessitera un processeur 32 bits ou 64 bits et un ou plusieurs codecs de signaux numériques (audio ou vidéo). Le contrôle d'un système de freinage antiblocage (ABS ) est généralement basé sur un microcontrôleur 16 bits , un peu comme le système de contrôle électronique du moteur dans une voiture .

Les microcontrôleurs représentent la grande majorité des puces informatiques vendues, plus de 50 % étant des contrôleurs « simples » et le reste étant des DSP plus spécialisés . Bien que vous puissiez avoir un ou deux microprocesseurs à usage général dans votre maison (vous en utilisez un pour cela), vous avez probablement une douzaine ou deux microcontrôleurs dispersés parmi vos appareils électroménagers. On les trouve dans presque tous les appareils électroniques tels que les voitures , les machines à laver , les fours à micro-ondes , les téléphones , etc.

Un microcontrôleur diffère d'une unité centrale de traitement normale en ce qu'il est plus facile de se transformer en un ordinateur de travail, avec un minimum de circuits intégrés externes de support . L'idée est que le circuit intégré est placé dans l'appareil, relié à la source d'alimentation et d'information dont il a besoin, et c'est tout. Un microprocesseur traditionnel ne vous laissera pas faire cela, car il s'attend à ce que toutes ces tâches soient gérées par d'autres puces. Vous devez ajouter des modules d'entrée et de sortie (ports) et de la mémoire pour le stockage des informations.

Un microcontrôleur typique aura un générateur d'horloge intégré et une petite quantité de mémoire vive ou ROM / EPROM / EEPROM / flash , donc pour le faire fonctionner, il suffit de quelques programmes de contrôle et d'un cristal de synchronisation. Les microcontrôleurs ont également généralement une grande variété de dispositifs d'entrée/sortie , tels que des convertisseurs analogique-numérique , des minuteries , des UART et des bus d'interface série spécialisés tels que I2C et CAN . Ces dispositifs embarqués peuvent souvent être contrôlés par des instructions provenant de processeurs spécialisés. Les microcontrôleurs modernes incluent souvent un langage de programmation intégré, tel que le langage de programmation BASIC , qui est largement utilisé à cette fin.

Les microcontrôleurs échangent vitesse et flexibilité contre une facilité d'utilisation. Étant donné qu'une grande partie de l'espace de la puce est utilisée pour inclure des fonctionnalités, telles que des périphériques d' entrée/sortie ou la mémoire incluse dans le microcontrôleur, tout autre circuit doit être omis.

Architectures informatiques

Il existe essentiellement deux architectures informatiques, et bien sûr, elles sont présentes dans le monde des microcontrôleurs : Von Neumann et Harvard. Les deux diffèrent dans la manière de connecter la mémoire au processeur et dans les bus dont chacun a besoin.

L'architecture de Von Neumann

L' architecture Von Neumann utilise le même périphérique de stockage pour les instructions et les données, étant celui utilisé dans un ordinateur personnel car il économise une bonne quantité de lignes d'E / S, qui sont assez coûteuses, en particulier pour les systèmes où le processeur est monté dans un type de socket logé sur une carte mère . De plus, cette organisation évite beaucoup de problèmes aux concepteurs de cartes mères et réduit le coût de ces systèmes.

Dans un ordinateur personnel, lorsqu'un programme est chargé en mémoire, il se voit attribuer un espace d'adressage mémoire qui est divisé en segments, dont nous aurons généralement les éléments suivants : code (programme), données et pile . C'est pourquoi on peut parler de mémoire dans son ensemble, même s'il existe différents périphériques physiques dans le système ( disque dur , mémoire RAM , mémoire flash , lecteur de disque optique ...).

Dans le cas des microcontrôleurs, il existe deux types de mémoire bien définis : la mémoire de données (généralement un type de SRAM ) et la mémoire de programme ( ROM , PROM , EEPROM, flash ou autre non volatile). Dans ce cas, l'organisation est différente de celle de l'ordinateur personnel, car il y a des circuits différents pour chaque mémoire et les registres de segment ne sont normalement pas utilisés, mais plutôt la mémoire est ségrégée et l'accès à chaque type de mémoire dépend des instructions du processeur. .

Bien que dans les systèmes intégrés à architecture Von Neumann, la mémoire soit séparée et il existe des différences par rapport à la définition traditionnelle de cette architecture; les bus d'accès aux deux types de mémoire sont les mêmes, seuls le bus de données, le bus d'adresses et le bus de contrôle sortent du processeur. En conclusion, l'architecture n'a pas été modifiée, car la manière dont la mémoire est connectée au processeur suit le même principe défini dans l'architecture de base.

Certaines familles de microcontrôleurs comme les Intel 8051 et les Z80 implémentent ce type d'architecture, principalement parce que c'était celle utilisée lors de l'apparition des premiers microcontrôleurs.

Architecture de Harvard

L'autre variante est l'architecture Harvard , et par excellence celle utilisée dans les supercalculateurs, les microcontrôleurs et les systèmes embarqués en général. Dans ce cas, en plus de la mémoire, le processeur dispose de bus ségrégués, de sorte que chaque type de mémoire dispose d'un bus de données, d'un bus d'adresses et d'un bus de contrôle.

L'avantage fondamental de cette architecture est qu'elle permet d'adapter la taille des bus aux caractéristiques de chaque type de mémoire ; De plus, le processeur peut accéder à chacun d'eux simultanément, ce qui se traduit par une augmentation significative de la vitesse de traitement. Généralement, les systèmes avec cette architecture peuvent être deux fois plus rapides que des systèmes similaires avec l'architecture Von Neumann.

L'inconvénient est qu'il consomme beaucoup de lignes d'E/S de processeur ; ainsi, dans les systèmes où le processeur est situé dans son propre package, il n'est utilisé que dans les supercalculateurs. Cependant, dans les microcontrôleurs et autres systèmes embarqués, où les données et la mémoire programme partagent généralement le même package que le processeur, cet inconvénient cesse d'être un problème sérieux et c'est pourquoi on retrouve l'architecture Harvard dans la plupart des microcontrôleurs.

C'est pourquoi il est important de rappeler qu'un microcontrôleur peut être configuré de différentes manières, à condition de respecter la taille mémoire dont il a besoin pour son bon fonctionnement.

Processeur en détail

Dans les années 1970, l'électronique numérique n'était pas suffisamment développée, mais au sein de l'électronique, c'était déjà une spécialité établie. À l'époque, les ordinateurs étaient conçus pour effectuer des opérations très simples, et si vous vouliez que ces machines puissent faire différentes choses, vous deviez apporter des modifications assez importantes au matériel.

Au début des années 1970, une société japonaise a chargé une jeune société américaine de développer un ensemble de circuits pour produire une calculatrice à faible coût. Intel s'y consacre pleinement et parmi les circuits commandés, il en développe un très spécial, inédit à ce jour : le premier microprocesseur intégré.

L' Intel 4004 est arrivé sur le marché en 1971, c'est une machine numérique synchrone complexe, comme tout autre circuit logique séquentiel synchrone. Cependant, l'avantage de ce composant est qu'il abrite en interne un ensemble de circuits numériques qui peuvent effectuer des opérations courantes de calcul et de traitement de données, mais d'un point de vue différent : ses entrées sont une série de codes bien définis qui permettent des opérations d'une nature spécifique dont le résultat est déterminé par le type d'opération et les opérandes impliqués.

Vu sous cet angle, un microprocesseur n'a rien de spécial ; La merveille est que la bonne combinaison des codes d'entrée, leur exécution séquentielle, pouvant sauter en arrière ou en avant dans la séquence de codes en fonction de décisions logiques ou de commandes spécifiques, permet à la machine d'effectuer un grand nombre d'opérations complexes, non envisagées. dans les codes de base simples.

Aujourd'hui, nous sommes habitués aux systèmes à microprocesseurs, mais dans le lointain 1971, c'était une façon de penser légèrement différente et même scandaleuse, au point que Busicom , la société qui a commandé les puces à Intel, n'était pas intéressée par l'invention, alors Intel l'a commercialisé auprès d'autres personnes qui ont manifesté leur intérêt ; le reste appartient à l'histoire : une révolution sans précédent dans le progrès technologique de l'humanité.

Il est logique de penser que l'invention du microprocesseur intégré n'était pas une révélation divine pour ses créateurs, mais reposait sur les avancées qui existaient jusqu'à présent dans le domaine de l'électronique numérique et des théories informatiques. Mais c'est sans aucun doute la goutte d'eau qui a fait déborder le vase de la révolution scientifique et technique, car elle a permis le développement d'applications imprévues ou l'accélération de certaines déjà en cours.

Maintenant, nous allons commencer à voir comment un processeur est fabriqué, ce ne sera pas une explication très détaillée car depuis son invention, il a connu d'importantes révolutions, mais il y a des aspects fondamentaux qui n'ont pas changé et qui constituent la base de tout microprocesseur. . Dans la figure 'Schéma d'un microcontrôleur', nous pouvons voir la structure typique d'un microprocesseur, avec ses composants fondamentaux, il est clair qu'aucun processeur réel ne correspond exactement à cette structure, mais même ainsi, il nous permet de connaître chacun de ses éléments de base et leurs interrelations.

Enregistrements

Ils représentent un très petit espace mémoire mais nécessaire à tout microprocesseur, à partir duquel les données sont prises pour diverses opérations que le reste des circuits du processeur doit effectuer. Les registres sont utilisés pour stocker les résultats de l'exécution des instructions, charger des données à partir de la mémoire externe ou les stocker dans celle-ci.

Bien que l'importance des archives semble anodine, elle ne l'est pas du tout. En fait, une partie des registres, celle destinée aux données, est celle qui détermine l'un des paramètres les plus importants de tout microprocesseur. Lorsque nous entendons dire qu'un processeur est de 4, 8, 16, 32 ou 64 bits, nous faisons référence à des processeurs qui effectuent leurs opérations avec des registres de données de cette taille, et bien sûr, cela détermine bon nombre des potentialités de ces machines.

Plus le nombre de bits des registres de données du processeur est élevé, plus ses performances sont élevées, en termes de puissance de calcul et de vitesse d'exécution, car ce paramètre détermine la puissance qui peut être incorporée au reste des composants du système, par exemple, il ne Cela n'a pas de sens d'avoir une ALU 16 bits dans un processeur 8 bits.

Un processeur 16 bits, en revanche, peut effectuer une addition de 16 bits en un seul cycle machine, tandis qu'un processeur 8 bits devra exécuter plusieurs instructions avant d'obtenir le résultat, même si les deux processeurs ont la même vitesse d'exécution. . pour vos instructions. Le processeur 16 bits sera plus rapide car il peut effectuer le même type de tâches qu'un processeur 8 bits, en moins de temps.

Unité de contrôle

Cette unité est l'une des plus importantes du processeur, elle contient la logique nécessaire pour décoder et exécuter les instructions, le contrôle des registres, l'ALU, les bus et tout ce que vous voulez mettre dans le processeur.

L'unité de contrôle est l'un des éléments fondamentaux qui déterminent les performances du processeur, puisque son type et sa structure déterminent des paramètres tels que le type de jeu d'instructions , la vitesse d'exécution, le temps de cycle machine, le type de bus qu'il peut avoir sur le système, la gestion des interruptions et un bon nombre de choses plus que dans n'importe quel processeur vont à ce bloc.

Bien sûr, les unités de contrôle sont l'élément le plus complexe d'un processeur et sont généralement divisées en unités plus petites travaillant ensemble. L'unité de contrôle regroupe des composants tels que l'unité de décodage, l'unité d'exécution, les contrôleurs de mémoire cache, les contrôleurs de bus, les contrôleurs d'interruption , les pipelines, entre autres éléments, toujours en fonction du type de processeur.

Unité arithmétique-logique (ALU)

Étant donné que les processeurs sont des circuits qui effectuent essentiellement des opérations logiques et mathématiques, une unité entière est dédiée à ce processus, avec une certaine indépendance. C'est là que sont effectuées les additions, les soustractions et les opérations logiques typiques de l'algèbre booléenne .

Actuellement, ce type d'unité a beaucoup évolué et les processeurs les plus modernes disposent de plusieurs ALU, spécialisées dans la réalisation d'opérations complexes telles que les opérations en virgule flottante. En fait, dans de nombreux cas, ils ont changé leur nom en "coprocesseur mathématique", bien que ce soit un terme qui ait émergé pour désigner un type spécial de processeur qui est directement connecté au processeur plus traditionnel.

Son impact sur les performances du processeur est également important car, selon sa puissance, des tâches plus ou moins complexes peuvent être réalisées en des temps très courts, comme des calculs en virgule flottante.

Bus

Ce sont les moyens de communication utilisés par les différents composants du processeur pour échanger des informations entre eux, éventuellement les bus ou une partie d'entre eux se retrouveront dans les broches de l'encapsulation du processeur.

Dans le cas des microcontrôleurs, il n'est pas courant que les bus soient reflétés dans l'encapsulation du circuit, car ceux-ci sont essentiellement destinés aux E/S à usage général et aux périphériques système.

Il existe trois types de bus :

  • Adresse : Il est utilisé pour sélectionner l'appareil avec lequel vous souhaitez travailler ou dans le cas de mémoires, sélectionnez les données que vous souhaitez lire ou écrire.
  • Données : Il est utilisé pour déplacer des données entre des périphériques matériels (entrée et sortie).
  • Contrôle : Il est utilisé pour gérer les différents processus d'écriture-lecture et contrôler le fonctionnement des périphériques du système.

Jeu d'instructions

Bien qu'il n'apparaisse pas dans le schéma, nous ne pouvions pas laisser l'instruction définie hors de l'explication, car cet élément détermine ce que le processeur peut faire.

Il définit les opérations de base que le processeur peut effectuer, qui, combinées et organisées, forment ce que nous appelons un logiciel. L' ensemble d'instructions est comme les lettres de l'alphabet, l'élément de base du langage, qui, bien organisé, vous permet d'écrire des mots, des phrases et tout programme qui vous vient à l'esprit.

Il existe deux types de jeux d'instructions de base, qui déterminent l'architecture du processeur : CISC et RISC.

CISC signifie Complex Instruction Set Computing . Les microprocesseurs CISC disposent d'un jeu d'instructions qui se caractérise par être très large et qui permet d'effectuer des opérations complexes entre des opérandes situés en mémoire ou dans des registres internes. Ce type de répertoire rend difficile la parallélisation des instructions, de sorte qu'aujourd'hui la plupart des systèmes CISC hautes performances convertissent des instructions complexes en plusieurs instructions simples de type RISC, généralement appelées micro-instructions.

Au sein des microcontrôleurs CISC, nous pouvons trouver les populaires familles Intel 8051 et Z80, bien qu'il existe actuellement des versions CISC-RISC de ces microcontrôleurs, qui visent à tirer parti des processeurs RISC tout en conservant une compatibilité descendante avec les instructions de type CISC.

RISC , de l'Anglais Ordinateur à Jeu d' Instructions Réduit , Ordinateur avec Jeu d'Instructions Réduit. Il se concentre sur l'obtention de processeurs avec les caractéristiques fondamentales suivantes :

  • Instructions de taille fixe.
  • Peu d'instructions.
  • Seules les instructions de chargement et de stockage accèdent à la mémoire de données.
  • Nombre relativement élevé de registres à usage général.

L'une des caractéristiques les plus remarquables de ce type de processeurs est qu'ils permettent le parallélisme d'exécution, et réduisent les accès mémoire. C'est pourquoi les processeurs les plus modernes, traditionnellement basés sur des architectures CISC, implémentent des mécanismes de traduction d'instructions CISC vers RISC, pour tirer parti de ce type de processeur.

Les processeurs des microcontrôleurs PIC sont de type RISC.

Mémoire

Auparavant, on a vu que la mémoire des microcontrôleurs doit être située dans le même boîtier, c'est le cas la plupart du temps, car l'idée fondamentale est de conserver l'essentiel des circuits du système dans une seule puce intégrée.

Dans les microcontrôleurs, la mémoire n'est pas abondante, ici vous ne trouverez pas de gigaoctets de mémoire comme dans les ordinateurs personnels. Typiquement, la mémoire programme ne dépassera pas 16 K emplacements de mémoire non volatile (flash ou eprom) pour contenir les programmes.

La mémoire RAM est utilisée pour stocker des informations temporaires qui seront utilisées par le processeur pour effectuer des calculs ou d'autres types d'opérations logiques. Dans l'espace d'adressage de la mémoire RAM se trouvent également les registres de travail du processeur et les registres de configuration et de travail des différents périphériques du microcontrôleur. C'est pourquoi dans la plupart des cas, même s'il existe un espace d'adressage d'une certaine taille, la quantité de RAM dont dispose le programmeur pour stocker ses données est inférieure à celle que le processeur peut adresser.

Le type de mémoire utilisé dans les mémoires RAM des microcontrôleurs est la SRAM, ce qui évite d'avoir à mettre en oeuvre des systèmes de rafraîchissement comme dans le cas des ordinateurs personnels, qui utilisent une grande quantité de mémoire, typiquement de la technologie DRAM. Bien que la SRAM soit plus chère que la DRAM, c'est le bon type pour les microcontrôleurs car les microcontrôleurs ont de petites quantités de RAM.

Dans le cas de la mémoire programme, différentes technologies sont utilisées, et l'utilisation de l'une ou l'autre dépend des caractéristiques de l'application à développer.Les cinq technologies existantes, qui sont ou ont été les plus utilisées, sont décrites ci-dessous :

  • Masque ROM . Dans ce cas, le programme n'est pas "enregistré" en mémoire, mais le microcontrôleur est fabriqué avec le programme, c'est un processus similaire à celui de la production commerciale de CD par le biais du mastering. Le coût initial de réalisation d'un tel circuit est élevé, car la conception et la réalisation du masque est un processus coûteux, cependant, lorsqu'il faut plusieurs milliers, voire des centaines de milliers de microcontrôleurs pour une application donnée, telle que, tel appareil, le le coût initial de production du masque et de fabrication du circuit est réparti sur tous les circuits de la série, et le coût final de celui-ci est nettement inférieur à celui de ses pairs d'un autre type de mémoire.
  • Mémoire PROM ( Programmable Read-Only Memory ) également appelée OTP ( One Time Programmable ). Ce type de mémoire est également appelé PROM ou simplement ROM.
Les microcontrôleurs avec mémoire OTP ne peuvent être programmés qu'une seule fois, avec une sorte de programmeur. Ils sont utilisés dans les systèmes où le programme ne nécessite pas de mises à jour futures et pour des séries relativement petites, où la variante de masque est très coûteuse, également pour les systèmes nécessitant une sérialisation des données, stockées sous forme de constantes dans la mémoire du programme.
  • Mémoire EPROM ( Erasable Programmable Read Only Memory ). Les microcontrôleurs dotés de ce type de mémoire sont très faciles à identifier car ils sont encapsulés dans de la céramique et ont une petite fenêtre en verre sur le dessus à partir de laquelle la tranche de silicium du microcontrôleur peut être vue.
Ils sont fabriqués de cette façon car la mémoire EPROM est reprogrammable, mais il faut d'abord l'effacer, et pour cela il faut l'exposer à une source de lumière ultraviolette , le processus d'enregistrement est similaire à celui utilisé pour les mémoires OTP.
Avec l'apparition de technologies moins coûteuses et plus flexibles, telles que la mémoire EEPROM et FLASH, ce type de mémoire est tombé en désuétude, étant utilisé dans les systèmes nécessitant des mises à jour de programmes et pour les processus de développement et de mise au point.
  • EEPROM ( mémoire morte programmable effaçable électriquement ). Ils étaient le substitut naturel des mémoires EPROM, la différence fondamentale étant qu'ils peuvent être effacés électriquement, de sorte que la fenêtre en verre de quartz et les boîtiers en céramique ne sont pas nécessaires.
En réduisant les coûts des packages, les microcontrôleurs dotés de ce type de mémoire sont devenus moins chers et plus pratiques à utiliser que leurs équivalents dotés de mémoire EPROM.
Une autre caractéristique notable de ce type de microcontrôleur est que c'est en eux que les systèmes de programmation ont commencé à être utilisés dans le système, ce qui évite d'avoir à retirer le microcontrôleur de la carte qui l'héberge pour effectuer des mises à jour du programme.
  • mémoire flash . Dans le domaine des mémoires reprogrammables pour microcontrôleurs, elles constituent la dernière avancée technologique largement utilisée et ont remplacé les microcontrôleurs par une mémoire EEPROM.
Aux avantages de la mémoire flash s'ajoute sa densité élevée par rapport à ses prédécesseurs, ce qui permet d'augmenter la quantité de mémoire programme à très faible coût. Ils peuvent également être programmés avec les mêmes tensions d'alimentation du microcontrôleur, la vitesse d'accès en lecture et de programmation est plus élevée, les coûts de production réduits, entre autres.

Le plus courant est de constater que la mémoire de programme et de données est entièrement située à l'intérieur du microcontrôleur, en fait, il existe actuellement peu de microcontrôleurs qui permettent de connecter la mémoire de programme à l'extérieur du boîtier. Les raisons de ces "limitations" sont données car l'objectif fondamental est d'obtenir la plus grande intégration possible et la connexion de mémoires externes consomme des lignes d'E/S qui sont une des ressources les plus précieuses des microcontrôleurs.

Malgré ce qui précède, il existe des familles telles que l' Intel 8051 dont les microcontrôleurs ont la capacité d'être étendus dans une large gamme de configurations pour l'utilisation de la mémoire programme externe. Dans le cas des PIC, ces possibilités sont limitées à certains microcontrôleurs haut de gamme, la figure 5 montre certaines des configurations de mémoire programme que l'on peut trouver dans les microcontrôleurs. La configuration (a) est typique et se retrouve dans presque 100% des microcontrôleurs. La configuration (b) est rare et est généralement obtenue en configurant le microcontrôleur pour sacrifier la mémoire programme interne, cependant l' Intel 8031 ​​​​est un microcontrôleur sans mémoire programme interne. La configuration (c) est celle que l'on trouve habituellement dans les microcontrôleurs qui ont la possibilité d'étendre leur mémoire programme comme certains PIC haut de gamme.

Lorsqu'il est nécessaire d'augmenter la quantité de mémoire de données, le plus courant consiste à placer des dispositifs de mémoire externes sous forme de périphériques, de cette manière RAM, mémoires FLASH ou même des disques durs tels que ceux des ordinateurs personnels peuvent être utilisés, tandis que pour calculs et autres opérations nécessitant un stockage temporaire de données, la mémoire RAM interne du microcontrôleur est utilisée. Cette façon d'étendre la mémoire de données est déterminée, dans la plupart des cas, par le type de répertoire d'instructions du processeur et parce qu'elle permet un grand nombre de configurations différentes, en plus de l'économie de lignes d'E/S qui en résulte. l'utilisation de mémoires avec des bus de communication série.

Interruptions

Les interruptions sont essentiellement des appels de sous -programmes générés par des périphériques physiques, par opposition aux sous-programmes normaux dans un programme en cours d'exécution. Étant donné que le saut de sous-programme ne fait pas partie du thread ou de la séquence d'exécution planifiée, le contrôleur enregistre l'état du processeur dans la pile de mémoire et entre pour exécuter un code spécial appelé "gestionnaire d'interruption" qui s'occupe du périphérique spécifique qui a généré l'interruption . . A la fin de la routine, une instruction spéciale indique au processeur la fin du service d'interruption. A ce moment, le contrôleur restaure l'état précédent et le programme qui s'exécutait avant l'interruption continue comme si de rien n'était. Les routines de service d'interruption doivent être aussi courtes que possible pour des performances système satisfaisantes, car normalement, lorsqu'une interruption est traitée, toutes les autres interruptions sont en attente.

Imaginez que vous attendez la visite d'un ami, que nous appellerons John. Vous et Juan avez convenu qu'à son retour à la maison, il attendra patiemment que vous lui ouvriez la porte. Juan ne doit pas frapper à la porte car quelqu'un dans la maison dort et il ne veut pas être réveillé.

Maintenant que vous avez décidé de lire un livre en attendant que Juan rentre à la maison, et pour vérifier s'il est arrivé, de temps en temps vous arrêtez de lire, marquez la page où vous vous êtes arrêté, levez-vous et allez à la porte, ouvrez-le et vérifiez si Juan est arrivé, si Juan n'est pas encore à la porte, il attendra quelques minutes, refermera la porte et retournera à sa lecture pendant un certain temps.

Comme vous le verrez, c'est une méthode inefficace pour attendre Juan car cela vous oblige à quitter la lecture de temps en temps et à aller à la porte pour vérifier s'il est arrivé, et vous devez également attendre un moment s'il n'arrive toujours pas . Et comme si cela ne suffisait pas, imaginez que Juan n'arrive jamais car un problème est survenu, il a dû annuler le rendez-vous et n'a pas pu vous prévenir à temps, ou pire, que Juan est arrivé à la porte un instant après que vous l'ayez fermée. Juan, respectant ce qui a été convenu, attend un moment, mais il en a assez d'attendre que la porte s'ouvre et décide de partir car il pense que vous n'êtes plus à la maison ou que vous ne pouvez pas vous occuper de vous. Nous appellerons cette méthode de traitement de l'arrivée de Juan une enquête.

Voyons maintenant une autre méthode. Cette fois, il s'allonge simplement sur le canapé du salon et commence à lire son livre, quand Juan arrive, il doit sonner à la porte et attendre quelques instants pour être pris en charge. Lorsque vous entendez la cloche sonner, vous arrêtez de lire, marquez la page où vous vous êtes arrêté et allez à la porte pour répondre à la personne qui sonne la cloche. Une fois que Juan ou la personne qui a sonné la cloche est parti, vous retournez à votre place et reprenez la lecture là où vous l'avez laissée. Cette dernière est une méthode plus efficace que la première car elle vous donne plus de temps pour lire et élimine les inconvénients tels que John n'arrive ou ne part jamais avant que vous n'ayez répondu à la porte. C'est, en principe, une méthode simple mais très efficace et efficiente, nous y attirerons l'attention par interruption.

La première d'entre elles, l'enquête, est une méthode efficace, mais elle n'est pas très efficace car elle nécessite des lectures constantes et souvent inutiles de l'état du processus auquel nous voulons assister. Cependant, il est largement utilisé dans la programmation des microcontrôleurs car il est facile à apprendre, l'implémentation du code avec cette méthode est moins complexe et ne nécessite pas de matériel spécial pour l'exécuter. D'autre part, l'enquête présente de nombreuses lacunes qui obligent souvent le concepteur à s'orienter vers d'autres horizons.

Le monde est plein de situations ; dont nous ne pouvons pas déterminer quand, comment ou pourquoi elles se produisent, dans la plupart des cas, la seule chose que nous pouvons faire est de découvrir qu'une certaine situation, associée à un processus, s'est produite. Pour cela, nous sélectionnons une condition ou un groupe de conditions qui indiquent que le processus qui nous intéresse doit être pris en compte, ce phénomène, dans lequel se produisent les conditions que nous souhaitons connaître, nous l'appellerons un événement. Dans le deuxième exemple, nous voyons que pour s'occuper de Juan, il doit sonner la cloche, par conséquent, l'arrivée de Juan est le processus auquel nous devons assister et le son de la cloche est l'événement qui indique que Juan est arrivé.

La méthode d'attention aux processus par interruption, vue du point de vue de l'exemple que j'ai utilisé pour la montrer, est plus simple que celle de l'enquête, mais ce n'est pas vrai, la méthode est compliquée car elle nécessite que le microprocesseur intègre des circuits pour enregistrer les événements qui vous disent de prêter attention au processus associé et comprendre ces circuits et leur dynamique n'est pas une tâche facile.

Les circuits d'attention aux interruptions et toutes les tâches que le processeur doit effectuer pour s'occuper du processus qui l'interrompt sont assez complexes et nécessitent une vision de notre monde différente de celle à laquelle nous sommes habitués.

Les êtres humains ne sont pas conscients des interruptions, dans notre corps il y a des mécanismes qui nous interrompent constamment, pour cela nous avons notre système sensoriel, mais nous ne sommes pas conscients du processus d'interruption, bien que nous soyons conscients des interruptions. C'est parce que nous incorporons des mécanismes qui nous sortent rapidement de la tâche que nous faisons pour faire face à une situation qui ne peut ou ne doit pas attendre longtemps. Eh bien, c'est la même idée qui est incorporée dans les microprocesseurs pour s'occuper de processus qui ne peuvent pas attendre ou dont nous ne savons pas quand ils doivent être pris en charge car cela dépend de certaines conditions.

Les choses se compliquent dans l'enchaînement des actions à effectuer depuis le déclenchement du processus d'interruption, jusqu'à l'exécution du programme qui s'en occupe, et dans l'enchaînement des actions consécutives à l'attention. Pensez au nombre de choses que votre corps doit faire face à une interruption, utilisons le deuxième exemple pour assister à l'arrivée de Juan. Pensez à combien de choses votre cerveau fait derrière votre conscience, à partir du moment où la sonnette retentit jusqu'à ce que vous soyez prêt (sachant que John est susceptible d'arriver) pour ouvrir la porte, et tout ce que votre cerveau doit travailler pour reprendre la lecture après que Juan ait la gauche. Nous faisons tout cela, sauf ouvrir la porte et assister à Juan, de manière "inconsciente" car pour cela nous avons des systèmes dédiés dans notre corps, mais dans le monde des microcontrôleurs, nous devons connaître tous ces détails pour pouvoir utiliser le mécanismes d'interruption.

Les processus d'attention d'interruption ont l'avantage d'être mis en œuvre par du matériel situé dans le processeur, c'est donc une méthode rapide pour que le processeur se consacre à l'exécution d'un programme spécial pour s'occuper d'événements qui ne peuvent pas attendre en raison de mécanismes lents tels que l'enquête.

En termes généraux, un processus d'interruption, et son attention par le processeur, a la séquence d'actions suivante :

  1. Dans le monde réel, se produit l'événement pour lequel on veut que le processeur exécute un programme spécial.Ce processus a la caractéristique qu'il ne peut pas attendre longtemps avant d'être pris en charge ou qu'on ne sait pas quand il faut s'en occuper.
  2. Le circuit chargé de détecter l'occurrence de l'événement est activé, et par conséquent, il active l'entrée d'interruption du processeur.
  3. L'unité de contrôle détecte qu'une interruption s'est produite et « lève » un drapeau pour enregistrer cette situation ; De cette façon, si les conditions qui ont provoqué l'événement disparaissent et que le circuit chargé de le détecter désactive l'entrée d'interruption du processeur, il se produira quand même, car il a été enregistré.
  4. L'unité d'exécution termine avec l'instruction en cours et juste avant de commencer à exécuter la suivante, elle vérifie qu'une interruption a été enregistrée.
  5. Un processus est déclenché qui permet de sauvegarder l'état actuel du programme en cours d'exécution et de passer à une adresse de mémoire de programme spéciale, où se trouve la première instruction du sous-programme d'avertissement d'interruption.
  6. Le code d'attention d'interruption est exécuté, c'est la partie "consciente" de tout le processus car c'est là que les actions de l'attention d'interruption sont effectuées et le programmeur joue son rôle.
  7. Lorsque l'instruction de retour est exécutée dans le sous-programme de service d'interruption, le processus de restauration du processeur à l'état dans lequel il se trouvait avant le service d'interruption est déclenché.

Comme on peut le voir, le mécanisme d'interruption est assez compliqué, cependant il présente deux avantages qui nécessitent sa mise en œuvre : sa rapidité et sa capacité à être asynchrone. Les deux ensemble nous permettent de tirer pleinement parti des capacités de travail de notre processeur.

Les mécanismes d'interruption ne sont pas seulement utilisés pour traiter des événements liés à des processus nécessitant une attention immédiate, mais ils sont également utilisés pour traiter des événements provenant de processus asynchrones.

Les interruptions sont si efficaces qu'elles permettent au processeur d'agir comme s'il faisait plusieurs choses à la fois alors qu'en fait il est engagé dans la même vieille routine, exécutant des instructions les unes après les autres.

Périphériques

Lorsque l'on regarde l'organisation de base d'un microcontrôleur, on constate qu'un ensemble de périphériques sont implantés à l'intérieur de celui-ci. Ci-dessous, nous décrirons certains des périphériques que nous trouverons le plus fréquemment dans les microcontrôleurs.

et sorties à

Aussi appelés ports d'E/S, généralement regroupés en ports de 8 bits de long, ils permettent de lire des données depuis l'extérieur ou d'y écrire depuis l'intérieur du microcontrôleur, la destination habituelle est de travailler avec des dispositifs simples tels que des relais, des LED , ou toute autre chose que le programmeur propose.

Certains ports d'E / S ont des fonctionnalités spéciales qui leur permettent de piloter des sorties avec certaines exigences de courant ou d'incorporer des mécanismes d'interruption spéciaux pour le processeur.

En règle générale, toute broche d'E/S peut être considérée comme une E/S à usage général, mais comme les microcontrôleurs ne peuvent pas avoir de broches infinies, ni même toutes les broches souhaitées, les E/S à usage général partagent des broches avec d'autres périphériques. Pour utiliser une broche avec l'une des caractéristiques qui lui sont attribuées, nous devons la configurer via les registres qui lui sont destinés.

Minuteries et compteurs

Ce sont des circuits synchrones pour compter les impulsions qui entrent dans leur alimentation pour obtenir l'entrée d'horloge. Si la source d'un grand comptage est l'oscillateur interne du microcontrôleur, il est courant qu'ils n'aient pas de broche associée, et dans ce cas ils fonctionnent comme des temporisateurs. Par contre, lorsque la source de comptage est externe, alors ils ont une broche associée configurée en entrée, c'est le mode compteur.

Les temporisateurs sont l'un des périphériques les plus courants dans les microcontrôleurs et sont utilisés pour de nombreuses tâches, telles que la mesure de fréquence, la mise en œuvre d'horloges, pour travailler avec d'autres périphériques qui nécessitent une base de temps stable, entre autres fonctionnalités. . Il est courant qu'un microcontrôleur typique intègre plus d'un temporisateur/compteur et certains ont même des tableaux de compteurs. Comme nous le verrons par la suite, ce périphérique est un élément presque essentiel et il est fréquent qu'il ait une interruption qui lui est associée. Les tailles de registre de comptage typiques sont de 8 et 16 bits, et vous pouvez trouver des appareils qui n'ont que des temporisateurs d'une taille ou plus souvent avec les deux types de registre de comptage.

Convertisseur analogique/numérique

Comme il est très courant de travailler avec des signaux analogiques, ceux-ci doivent être convertis en numérique et pour cette raison, de nombreux microcontrôleurs intègrent un convertisseur analogique-numérique , qui est utilisé pour prendre des données de plusieurs entrées différentes qui sont sélectionnées au moyen d'un multiplexeur.

Les résolutions les plus courantes sont de 8 et 10 bits, qui sont suffisantes pour des applications simples. Pour les applications de contrôle et d'instrumentation, des résolutions de 12 bits, 16 bits et 24 bits sont disponibles. [ 6 ]​ Il est également possible de connecter un convertisseur externe, si nécessaire

Ports de communication

Port série

Ce périphérique est présent dans presque tous les microcontrôleurs, généralement sous la forme d'un UART ( Universal Asynchronous Receiver Transmitter ) ou d'un USART ( Universal Synchronous Asynchronous Receiver Transmitter ) selon qu'ils autorisent ou non le mode de communication synchrone.

Le but commun de ce périphérique est la communication avec un autre microcontrôleur ou avec un PC et dans la plupart des cas des circuits externes doivent être ajoutés pour compléter l'interface de communication. La façon la plus courante de compléter le port série est de communiquer avec un PC via l' interface EIA-232 (mieux connue sous le nom de RS-232 ), c'est pourquoi de nombreuses personnes se réfèrent à l'UART ou à l'USART en tant que port série RS-232, mais il s'agit d'une erreur, car ce périphérique peut être utilisé pour interconnecter des appareils via d'autres normes de communication. Dans les applications industrielles, le RS-485 est de préférence utilisé pour sa portée, sa vitesse et sa résistance au bruit supérieures.

SPI

Ce type de périphérique permet de faire communiquer le microcontrôleur avec d'autres microcontrôleurs ou avec des périphériques externes qui lui sont connectés, via une interface très simple. Il n'y a qu'un seul nœud de contrôleur qui permet de démarrer n'importe quelle transaction, ce qui est un inconvénient dans les systèmes complexes, mais sa simplicité permet une isolation galvanique directe au moyen d' optocoupleurs .

I2C

Il remplit les mêmes fonctions que SPI, mais nécessite moins de signaux de communication et n'importe quel nœud peut initier une transaction. Il est largement utilisé pour connecter les cartes graphiques des ordinateurs personnels aux moniteurs, afin que ces derniers informent sur leurs fonctionnalités et permettent au système vidéo de se configurer automatiquement.

USB

Ce sont les microcontrôleurs qui ont permis l'existence de ce système de communication. C'est un système qui fonctionne en interrogeant (surveillant) un ensemble de périphériques intelligents par un maître, qui est normalement un ordinateur personnel. Chaque mode intelligent est inévitablement régi par un microcontrôleur.

Ethernet

C'est le système le plus répandu au monde pour les réseaux locaux filaires . Les microcontrôleurs 32 bits les plus puissants sont utilisés pour implémenter des périphériques suffisamment puissants pour être directement accessibles sur le réseau. De nombreux routeurs domestiques pour petites entreprises sont construits autour d'un microcontrôleur qui agit comme le cerveau du système.

Peut

Ce protocole est de type CSMA/CD avec tolérance aux hauts niveaux de tension en mode commun et orienté temps réel. Ce protocole est la norme la plus importante dans l'industrie automobile ( OBD ). Il est également utilisé comme couche physique du "bus de terrain" pour le contrôle industriel.

Autres ports de communication

Il existe un grand nombre d'autres bus disponibles pour l'industrie automobile (linbus) ou audiovisuelle tels que i2s, IEEE 1394 . L'utilisateur les trouvera lorsqu'il travaillera dans un domaine spécialisé.

Comparateurs

Ce sont des circuits analogiques basés sur des amplificateurs opérationnels qui ont pour caractéristique de comparer deux signaux analogiques et de délivrer en sortie des niveaux logiques '0' ou '1' selon le résultat de la comparaison. C'est un périphérique très utile pour détecter les changements de signaux d'entrée que nous ne souhaitons connaître que lorsqu'ils se trouvent dans une certaine plage de tension.

Modulateur de

Les PWM ( Pulse Width Modulator ) sont des périphériques très utiles, notamment pour le contrôle des moteurs, cependant il existe un groupe d'applications qui peuvent être réalisées avec ce périphérique, parmi lesquelles on peut citer : l'inversion DC/AC pour UPS , la conversion numérique analogique D/ A, contrôle d'éclairage régulé (gradation) entre autres.

Mémoire de données non volatile

De nombreux microcontrôleurs ont intégré ces types de mémoire comme un périphérique de plus, pour le stockage des données de configuration ou des processus contrôlés. Cette mémoire est indépendante de la mémoire de données de type RAM ou mémoire programme, dans laquelle est stocké le code du programme à exécuter par le processeur du microcontrôleur.

De nombreux microcontrôleurs PIC incluent ce type de mémoire, généralement sous forme de mémoire EEPROM , certains d'entre eux permettent même d'utiliser une partie de la mémoire programme comme mémoire de données non volatile, de sorte que le processeur a la capacité d'écrire dans la mémoire .de programmes comme s'il s'agissait d'un simple périphérique parmi d'autres.

Familles de microcontrôleurs

Les microcontrôleurs les plus couramment utilisés sont :

Entreprise 8 bits 16 bits 32 bits
Atmel AVR (méga et minuscule) , 89Sxxxx famille similaire 8051 SAM7 (ARM7TDMI) , SAM3 (ARM Cortex-M3) , SAM9 (ARM926) , AVR32
Freescale
(anciennement Motorola )
68HC05 , 68HC08 , 68HC11 , HCS08 68HC12 , 68HCS12 , 68HCSX12 , 68HC16 683xx , PowerPC , ColdFire
HoltekComment HT8
Intel MCS-48 (famille 8048)
MCS51 (famille 8051)
8xC251
MCS96 , MXS296 X
Semi-conducteur national COP8 X X
puce électronique Famille 10f2xx Famille 12Cxx Famille 12Fxx, 16Cxx et 16Fxx 18Cxx et 18Fxx PIC24F, PIC24H et dsPIC30FXX, dsPIC33F avec moteur dsp intégré PIC32
NXP Semiconductors
(anciennement Philips )
80C51 POUR Cortex-M3, Cortex-M0, ARM7, ARM9
Renesas
(anciennement Hitachi, Mitsubishi et NEC)
78K , H8 H8S , 78K0R , R8C , R32C/M32C/M16C RX , V850 , SuperH , SH-Mobile , H8SX
STMicroelectronics ST62 , ST7 STM32 (ARM7)
Texas Instruments TMS370 MSP430 C2000, Cortex-M3 (ARM), TMS570 (ARM)
Zilog Z8 , Z86E02

Remarque : Certaines architectures de microcontrôleurs sont disponibles auprès de tant de fournisseurs et dans tant de variétés, qu'elles pourraient très bien avoir leur propre catégorie. Parmi eux, on trouve principalement les variantes d' Intel 8051 et Z80 .

Voir aussi

Références

  1. Université de technologie de Vienne, Introduction aux microcontrôleurs (Gunther Gridling, Bettina Weiss), 26 février 2007
  2. ^ Augarten, Stan (1983). L'ordinateur sur puce le plus utilisé : le TMS 1000 . État de l'art : une histoire photographique du circuit intégré. New Haven et New York : Ticknor & Fields. ISBN  0-89919-195-9 . Consulté le 2 mars 2012 . 
  3. a b https://web.archive.org/web/20120619154428/http://archive.computerhistory.org/resources/access/text/Oral_History/102658328.05.01.acc.pdf Panel d'histoire orale sur le développement et la promotion du microcontrôleur Intel 8048 , histoire orale du Computer History Museum, 2008, récupéré le 28 juin 2011, page 4
  4. http://microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2018&mcparam=en013082
  5. "Atmel's Self-Programming Flash Microcontrollers" par Odd Jostein Svendsli 2003
  6. microcontrôleurs "analogiques"