Guide Étape par étape de la Programmation des microcontrôleurs
Ceci est un guide étape par étape pour ceux qui veulent commencer avec la programmation des microcontrôleurs. L’article commence par présenter quelques termes de base qui seront utilisés dans le guide, une liste d’outils, des langages de programmation et à la fin, un exemple de code téléchargeable avec un guide étape par étape que vous pourriez utiliser pour pratiquer la programmation par microcontrôleur.
Mais avant de plonger dans la programmation du microcontrôleur. Définissons les deux premiers termes de base: Matériel et logiciels.
Le matériel se compose des composants physiques du système tels qu’une puce, un clavier, une souris, un moniteur, des mémoires, des périphériques d’E/S. Le matériel est plus difficile à développer que le logiciel, il doit être conçu pour des applications très spécifiques, et c’est une solution très efficace et parfaite dans les systèmes à grande vitesse.
Les logiciels sont les composants non physiques ou les applications qui s’exécutent sur le matériel, tels que les systèmes d’exploitation, les jeux informatiques et les applications réseau. Le logiciel est hautement configurable, facile et plus rapide à développer, également très bon marché par rapport au matériel.
Qu’est-ce qu’un microcontrôleur
Pour comprendre ce qu’est un microcontrôleur, il faut d’abord comprendre ce qu’est un microprocesseur ou un processeur (Unité centrale de traitement). Un processeur est un cœur de tout système informatique, c’est comme le cerveau humain lors de l’exécution d’une tâche. Nous pouvons fondamentalement le diviser en deux parties essentielles:
Unité de contrôle: Cette unité est utilisée pour récupérer les données de la mémoire.
Unité d’exécution : Cette unité est utilisée pour exécuter ou exécuter les données.
Types de processeurs
Il existe de nombreuses catégories de processeurs telles que les processeurs à usage général, les processeurs système spécifiques aux applications et les systèmes multiprocesseurs. Le processeur à usage général a de nombreux types:
▪ Microprocesseur
▪ Microcontrôleur
▪ Processeur intégré
▪ Processeur de signal numérique
Le microprocesseur est un dispositif semi-conducteur ou un ordinateur sur puce, mais pas un ordinateur entièrement fonctionnel. Son unité centrale de traitement contient
▪ ALU
▪ Compteurs de programmes
▪ Registres
▪ Autres circuits (temps d’horloge, interruption)
Un microcontrôleur est un circuit intégré qui contient un microprocesseur et certains périphériques pour être un ordinateur fonctionnel complet, des périphériques par exemple, ADC, RAM, ROM, DAC.
Histoire du microcontrôleur
À l’origine, Intel corporation était la première fabrication de microcontrôleurs. Le premier microcontrôleur a été produit en 1971 aux États-Unis. C’était un microcontrôleur 4 bits avec le nom i4004. Plus tard, Intel a produit des modèles plus sophistiqués à cette époque avec un microcontrôleur 8 bits et après cela, un microcontrôleur 12 bits a été développé par Toshiba.
Applications des microcontrôleurs
Les microcontrôleurs ont de nombreuses applications dans de nombreuses industries, par exemple, l’automobile, le médical, l’automatisation industrielle, l’aérospatiale, la robotique.
Dans l’industrie automobile, par exemple, les voitures modernes disposent aujourd’hui de plus de 100 microprocesseurs pour des systèmes tels que la climatisation, l’ABS, l’EBD et également l’ADAS ou des systèmes avancés d’aide à la conduite tels que le contrôleur adaptatif curies et l’aide à la voie, ce qui suit est une image d’un ECU ou d’une unité de commande électronique.
Dans le domaine médical, il existe des dispositifs médicaux comprenant des microcontrôleurs tels qu’une IRM, un ensemble de test de glucose, un ECG portable. L’image suivante est un appareil de test de glucose.
Dans l’aérospatiale, la plupart des avions ont été conçus avec de nouveaux systèmes avioniques utilisant des microcontrôleurs. En outre, il existe un système de contrôle de vol, un système de contrôle de la circulation aérienne, des systèmes de navigation et de météo qui sont tous basés sur des microcontrôleurs.
Microcontrôleurs populaires
Il existe de nombreux types et plates-formes de microcontrôleurs, mais la sélection d’un microcontrôleur dépend de nombreux facteurs:
▪ Application
▪ Budget
▪ Performances
▪ Nombre de broches GPIO
▪ Taille de la mémoire
▪ Température de l’environnement de fonctionnement
▪ Consommation électrique
Microcontrôleur AVR
L’image suivante contient un schéma de principe d’AVE12DA, l’un des microcontrôleurs les plus populaires de la famille — le microcontrôleur AVR:
Les microcontrôleurs AVR sont produits par Atmel corporation (aujourd’hui: Microchip), Atmel possède 6 familles de microcontrôleurs AVR, 4 familles de microcontrôleurs à usage général et 2 de microcontrôleurs à usage spécifique. Les microcontrôleurs à usage général sont:
▪ 8 bits – méga AVR
▪ 8 bits – À minuscule
▪ 8 & 16 bit-AVR Xmega
▪ 32 bits–AVR
Les microcontrôleurs à usage spécifique sont:
▪ Automotive AVR
▪ Gestion de la batterie
Automotive AVR, de son nom, il a été développé pour des applications automobiles. Il peut fonctionner à des températures très élevées allant jusqu’à 150 degrés Celsius et comprend des systèmes de protection contre les problèmes de court-circuit.
Le microcontrôleur de gestion de batterie est développé pour les systèmes de gestion de batterie afin de sécuriser les opérations de charge et de décharge.
Exemples de plates-formes AVR
▪ Arduino UNO
▪ Adafruit Blue fruit Micro
▪ Raspduino
▪ Digispark Pro
Microprocesseur / microcontrôleur ARM
Le microprocesseur ARM est le processeur le plus populaire dans le monde, en particulier, dans les applications grand public. Vous avez peut-être un appareil basé sur un processeur ARM, mais vous ne le savez pas! ARM est principalement un composant clé de tout système embarqué 32 bits réussi. Le premier BRAS a été développé en 1985.
Technologie RISC
ARM est une technologie RISC utilisée, RISC signifie ordinateur à jeu d’instructions réduit, c’est une philosophie de conception pour fournir des instructions simples en un seul cycle. Il repose davantage sur le logiciel. D’un autre côté, la technologie CISC repose davantage sur le matériel.
La technologie RISC se concentre sur la réduction du jeu d’instructions du processeur. D’autre part, le processeur CISC a un numéro non fixe du jeu d’instructions.
Caractéristiques ARM
Arm possède de nombreuses fonctionnalités pour chaque concepteur de système embarqué recherché, par exemple une faible consommation d’énergie en raison de sa taille compacte, une densité de code élevée est une autre caractéristique puisque nous développons des systèmes embarqués, nous aurons des ressources limitées dans la plupart des cas.
Structure interne du microcontrôleur à base de BRAS
Cette figure montre la structure interne de la plupart des dispositifs à base de BRAS:
Les cases représentent des fonctions, les lignes représentent des bus. Parlons plus en détail de chaque composant:
▪ Le processeur ARM est le composant central, il est responsable des opérations de traitement
▪ Des contrôleurs sont utilisés pour coordonner les fonctions du système en tant que contrôleurs de mémoire et d’interruption
▪ Des périphériques sont utilisés pour fournir les entrées et sorties du système
▪ Un bus est utilisé pour échanger des données entre les différents composants du système
Exemples de plates-formes ARM
Il existe de nombreux appareils et plates-formes embarquées dotés d’un microprocesseur arm, par ex.
▪ Arduino Due
▪ Raspberry Pi
▪ STM32F103C8T6
▪ NXP LPC1768
Autres microcontrôleurs et plates-formes
Comme nous l’avons dit avant de sélectionner un microcontrôleur ou une plate-forme dépend de nombreux facteurs (budget , nombre de broches, etc.…). Il existe également d’autres microcontrôleurs et plates-formes, par ex.
▪ Microcontrôleurs PIC
▪ 8051
▪ ESP32
▪ Microcontrôleurs Motorola
Outils logiciels et matériels de microcontrôleur
Depuis la création du microcontrôleur, il existe de nombreux types d’outils de développement logiciels et matériels. Bien sûr, certains outils peuvent être utilisés sur différents types de microcontrôleurs, mais certains sont très spécifiques par microcontrôleur. Avant de commencer la programmation de microcontrôleurs, vous voudrez peut-être vous familiariser avec les outils de programmation de microcontrôleurs et, enfin, le processus de développement.
En utilisant des outils de développement embarqués, nous pouvons avoir besoin d’outils comme suit :
Assembleur
C’est un outil logiciel qui convertit votre code source en assembleur en code machine, par exemple (assembleur GNU).
Compilateur
C’est un logiciel qui couvre votre code source dans un langage de programmation de haut niveau en langage d’assemblage ou en code machine. La compilation peut être:
▪ Natif: cela signifie que vous exécutez le compilateur et le code généré sur la même machine
▪ Cross: Cela signifie que vous exécutez le compilateur sur une machine et que le code généré s’exécute sur une machine différente (architecture du processeur).
Lieur et localisateur
Un lieur est un programme qui collecte et relie les compilations et assemble les opérations et produit un seul exe.
Un localisateur est un outil de programme qui peut être utilisé pour modifier la carte mémoire de la sortie de l’éditeur de liens.
Simulateur
C’est un programme qui imite un scénario réel, il produit une approximation des systèmes en temps réel. Un simulateur est utilisé:
▪ si le matériel réel n’est pas disponible
▪ dans des environnements et des scénarios de test dangereux
Débogueur
C’est un programme logiciel et un périphérique matériel qui peut être interfacé à mon PC à ma cible intégrée. Un débogueur est utilisé:
▪ pour définir des points d’arrêt
▪ pour tracer l’exécution
▪ pour vider la mémoire
Le débogueur matériel peut être
▪ débogueur en circuit
▪ Logiciel d’agent de débogage embarqué
Chargeur flash
C’est un programme et un périphérique matériel qui peuvent être utilisés pour:
▪ Programme ROM / Flash
▪ Regarder les variables
▪ Effacer ROM / Flash
Profiler
Profiler est un outil pour surveiller les performances du code logiciel
Environnement de développement intégré
C’est un programme logiciel qui a la plupart des outils tout en un. Il peut inclure
▪ Éditeurs de texte
▪ Compilateurs
▪ Débogueurs
▪ Profileurs
▪ Simulateurs
▪ Linkers
Langages logiciels à microcontrôleurs
Nous pouvons classer ils en deux types:
Haut niveau
▪ C / C++
▪ Java
▪ Ada
L’utilisation de ce type fournira une abstraction du niveau matériel
Bas niveau
Code machine
It est 0 et 1 et difficile à écrire par les humains, mais facile à comprendre pour les ordinateurs
Assembly
C’est un code mnémonique et des pseudo-instructions pour améliorer la lisibilité
Exemples:
Une instruction se compose de mnémonique (opcode) + opérandes
L’opcode est une opération prise par un processeur machine
Les opérandes sont la cible finale; l’opcode doit prendre une opération pour.
Le langage d’assemblage est plus lisible et compréhensible que le code machine, mais vous devez l’utiliser sur un processeur spécifique et avoir une connaissance de son architecture.
Langages de programmation C/ C++
Les langages de haut niveau ont les caractéristiques suivantes
▪ Facile à écrire
▪ Flexible
▪ Indépendant du processeur
▪ Productivité élevée
Exemple de programmation de microcontrôleur Utilisant AVR ATMEGA16
ATmega 16 présente les caractéristiques suivantes:
▪ 16 Ko de mémoire flash auto-programmable dans le système
▪ EEPROM de 512 octets
▪ SRAM interne de 1 Ko
▪ Verrouillage de programmation pour la sécurité
Caractéristiques périphériques
▪ Compteur Temps réel avec Oscillateur séparé
▪ USART série programmable
▪ Quatre canaux PWM
▪ ADC à 8 canaux et 10 bits
▪ Oscillateur sur puce
▪ Détection de Repos et de Désactivation de la Mise sous tension
▪ Oscillateur RC interne et Sources d’interruption
▪ Tensions de 2,7 v à 5.5v)
Exemple de programme de clignotement de LED utilisant ATmeg16 et Proteus
Programme de clignotement de LED dans des systèmes embarqués comme le programme « hello world » dans le développement d’applications. Dans l’exemple suivant, vous apprendrez et utiliserez le simulateur Proteus pour exécuter votre premier programme. Pour télécharger les fichiers sources, veuillez vous rendre dans ce dossier.
Écrivez votre programme en utilisant Atmel studio
Après avoir téléchargé votreE,
ouvrez-le et choisissez nouveau projet et choisissez l’emplacement du fichier hexadécimal comme dans l’image suivante
L’étape suivante consiste à choisir la famille de microcontrôleurs
Après cela, vous obtiendrez la fenêtre suivante avec le code de démarrage
Et maintenant, veuillez écrire le code suivant
L’étape suivante consiste à construire votre programme en appuyant sur F7
Après cela, vous trouverez le fichier hexadécimal à l’emplacement choisi
L’étape suivante consiste à utiliser le simulateur Proteus
Et maintenant, créez un schéma à partir du modèle a sélectionné
Et choisissez Ne pas créer de mise en page de PCB
Enfin, nous avons terminé mais nous devons ajouter le fichier hex comme dans l’image suivante
Maintenant, éditez les fusibles CKSEL
Enregistrez et cliquez sur play
Et vous pouvez voir que la LED est éteinte pendant 500 ms (côté gauche) et allumée pendant 500 ms (côté droit)
Explication du programme ligne par ligne
Pour télécharger les fichiers source, veuillez vous rendre dans ce dossier.
# définissez f_CPU 100000UL // pour créer une constante et choisissez la vitesse du processeur
# incluez < avr/io.h > // pour rappeler certains fichiers pour les entrées et sorties
# incluez < avr/delay.h > // rappelez ce fichier pour utiliser les fonctions de retard
int main(void) { // la fonction de démarrage et le programme principal
DDRA=0b0000001; // pour configurer la broche a comme sortie /direction
While(1) { // pour boucler pour toujours
PORTA= 0b00000001; // pour rendre le PA0 = 1 et la sortie 5v (la LED est allumée)
_delay_ms(500); // retard d’une demi-seconde
PORTA = 0b0000000; // pour rendre le PA0 = 0 et la sortie 0v (la LED est éteinte)
_delay_ms(500); // retard d’une demi-seconde
}
retour 0;
} // fin du programme
Conclusion
De nos jours, les systèmes embarqués sont utilisés dans des produits vitaux et peuvent être utilisés pour sécuriser et sauver de nombreuses personnes, comme dans le domaine médical et d’autres applications. Vous devriez continuer à apprendre après avoir eu un aperçu et une introduction sur la programmation des microcontrôleurs. Votre prochaine étape devrait être l’apprentissage de la conception de logiciels embarqués et des systèmes déclenchés en temps réel.
https://www.faa.gov/regulations_policies/handbooks_manuals/aviation/phak/
Microcontrôleur AVR et Systèmes embarqués: Pearson New International Edition: Using Assembly and C, Muhammad Ali Mazidi, Université DeVry
Guide du développeur du système ARM Designing and Optimizing System Software Un volume de la Série Morgan Kaufmann in Computer Architecture and Design Book *2004