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,

 programmation du microcontrôleur AVR

ouvrez-le et choisissez nouveau projet et choisissez l’emplacement du fichier hexadécimal comme dans l’image suivante

 programmation du microcontrôleur AVR

L’étape suivante consiste à choisir la famille de microcontrôleurs

 programmation du microcontrôleur AVR

Après cela, vous obtiendrez la fenêtre suivante avec le code de démarrage

 programmation de microcontrôleur AVR

Et maintenant, veuillez écrire le code suivant

 programmation de microcontrôleur AVR

L’étape suivante consiste à construire votre programme en appuyant sur F7

 programmation de microcontrôleur AVR

Après cela, vous trouverez le fichier hexadécimal à l’emplacement choisi

 programmation du microcontrôleur AVR

L’étape suivante consiste à utiliser le simulateur Proteus

Et maintenant, créez un schéma à partir du modèle a sélectionné

 programmation de microcontrôleur AVR

Et choisissez Ne pas créer de mise en page de PCB

 programmation de microcontrôleur AVR

Enfin, nous avons terminé mais nous devons ajouter le fichier hex comme dans l’image suivante

 programmation de microcontrôleur AVR

Maintenant, éditez les fusibles CKSEL

 programmation de microcontrôleur AVR

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

Leave a Reply

Votre adresse e-mail ne sera pas publiée.