Comment programmer le microcontrôleur AVR avec Arduino

Table des Matières

Program the AVR Microcontroller with Arduino

Dans le monde des microcontrôleurs et de l'électronique, il existe de nombreux types différents. L'un des types de microcontrôleurs les plus populaires est la famille AVR. Ces microcontrôleurs peuvent être utilisés dans une grande variété de projets ou de produits, car ils ont de nombreuses utilisations et fonctions.

 Si vous souhaitez vous lancer dans un projet Arduino, mais que vous ne savez pas comment programmer le microcontrôleur AVR avec Arduino, ne vous inquiétez pas ! Dans cet article, nous allons passer en revue toutes les options qui s'offrent à vous !

Qu'est-ce qu'un microcontrôleur AVR ?

Un microcontrôleur AVR est un microcontrôleur qui utilise le jeu d'instructions AVR. AVR est un microcontrôleur monopuce RISC 8 bits à architecture Harvard modifiée, développé par Atmel en 1996. Les microcontrôleurs AVR sont souvent utilisés dans les cartes Arduino et, lorsque vous programmez pour des cartes Arduino, vous utiliserez le microcontrôleur AVR.

avr microcontroller

Forme complète du microcontrôleur AVR

Le microcontrôleur AVR, dont le nom complet est Atmel AVR, est un type de microcontrôleur initialement conçu pour les appareils embarqués tels que les voitures, les téléphones portables, les appareils électroménagers, les systèmes de surveillance domestique et bien d'autres encore ! Les microcontrôleurs AVR sont souvent utilisés dans les cartes Arduino. Lorsque vous programmez pour des cartes Arduino, vous utilisez donc un microcontrôleur AVR.

Caractéristiques du microcontrôleur AVR

Faible consommation d'énergie – L'une des meilleures caractéristiques des microcontrôleurs AVR est leur faible consommation d'énergie. Selon l'utilisation que vous faites de l'appareil, celle-ci peut varier de négligeable à quelques watts.

Large plage de températures – Bien que la température puisse affecter la vitesse de l'appareil, les microcontrôleurs AVR peuvent supporter des températures allant de -40 °C à 85 °C.

Architecture 8 bits – Une autre caractéristique des microcontrôleurs AVR est leur architecture 8 bits. Cela permet à votre appareil de disposer de plus de mémoire et d'une plus grande puissance de traitement.

Facilité d'utilisation pour les programmeurs – Enfin, les microcontrôleurs AVR sont faciles à utiliser pour les programmeurs. Cela en fait un excellent choix pour les débutants et les amateurs qui souhaitent créer leurs propres projets.

Architecture du microcontrôleur AVR

L'architecture AVR repose sur une architecture RISC (Reduced Instruction Set Computer, ordinateur à jeu d'instructions réduit). Les architectures RISC simplifient et optimisent considérablement le processus de programmation, ce qui explique en partie la popularité de l'AVR.

Jeu d'instructions – Le jeu d'instructions de l'architecture est également réduit. Bien que cela puisse sembler compliquer la programmation, cela la facilite en réalité, car moins d'instructions signifie des instructions moins complexes.

Chemin de données 8 bits – L'architecture 8 bits signifie également qu'elle dispose d'un chemin de données 8 bits, ce qui lui permet de traiter plus de données à la fois.

Mémoire programme – La mémoire programme est l'endroit où tous vos programmes sont stockés. Elle est comparable au disque dur de votre appareil.

Mémoire de données – La mémoire de données est l'endroit où vos données sont stockées. Par exemple, si vous souhaitez stocker un nombre dans l'appareil, il sera stocké dans la mémoire de données.

Schéma des broches du microcontrôleur AVR

Il existe différents types de microcontrôleurs AVR et le schéma des broches varie en fonction du type. Cependant, certains schémas de broches sont communs à de nombreux types de microcontrôleurs AVR, tels que l'ATmega328P.

AVR ATmega328P pighixxx
Broche AVR ATmega328P

ATmega328P Pin Configuration

RESET – RESET est une ligne qui se déclenche lorsque votre appareil est réinitialisé. Cela peut interférer avec votre programme si les deux sont connectés.

GND – GND signifie « terre ». Il s'agit de la connexion que votre appareil utilisera pour compléter le circuit.

VCC – VCC est la tension utilisée pour alimenter votre appareil.

RX – RX est une broche d'entrée qui reçoit des données provenant d'un autre appareil.

TX – TX est une broche de sortie qui envoie des données à un autre appareil.

Schéma fonctionnel du microcontrôleur AVR

Le schéma fonctionnel du microcontrôleur AVR est le schéma qui montre toutes les parties internes du microcontrôleur. Les différents modèles ont des composants différents, mais chaque modèle est généralement identique en termes de fonctionnalités.

Mémoire programme – La mémoire programme est l'endroit où votre programme est stocké. Elle est comparable au disque dur d'un ordinateur.

Mémoire de données – La mémoire de données est l'endroit où vos données sont stockées.

Compteur de programme – Le compteur de programme garde la trace de l'endroit où vous vous trouvez dans votre programme.

Registre d'instructions – Le registre d'instructions contient la prochaine instruction qui sera exécutée.

ALU – ALU signifie « unité arithmétique et logique ». Elle effectue toutes les opérations mathématiques de votre programme.

Fichier de registres – Le fichier de registres est un ensemble de registres de l'ALU. – Minuterie/compteur – La minuterie/le compteur sert à mesurer le temps ou à compter plusieurs événements.

Qu'est-ce qu'Arduino ?

Arduino est une plateforme open source qui permet aux personnes ayant peu ou pas d'expérience en programmation de concevoir et de créer facilement des projets électroniques. Les cartes Arduino sont capables de contrôler divers voyants lumineux, capteurs et autres appareils. Les cartes Arduino utilisent un logiciel spécifique pour les programmer. Si vous souhaitez programmer le microcontrôleur AVR avec Arduino, vous devez utiliser une carte spécialement conçue à cet effet.

Programmation de microcontrôleurs AVR avec Arduino

Si vous souhaitez programmer le microcontrôleur AVR avec Arduino, vous devrez utiliser une carte Arduino conçue pour les microcontrôleurs AVR. Ces cartes sont spécialement conçues pour gérer la programmation du microcontrôleur AVR. Programmer le microcontrôleur AVR avec Arduino est aussi simple que de télécharger un programme sur la carte. Une fois le programme téléchargé, vous devez réinitialiser la carte Arduino, puis débrancher la source d'alimentation. Lorsque vous rebranchez la source d'alimentation, le microcontrôleur AVR avec Arduino sera programmé.

1. Configurer le programmateur Arduino

Tout d'abord, vous devez configurer « programmer-Arduino » (l'Arduino que vous avez configuré comme programmateur) en tant qu'ISP. Par défaut, les croquis (code) sont disponibles dans Exemple de code dans le menu Fichier de l'IDE Arduino. Le croquis Arduino ISP transmet les instructions requises au Programmateur-Arduino pour le configurer en mode programmation.

Select Arduino ISP option
Select Arduino ISP option

2. Connexion de la LED à l'Arduino

Dans un deuxième temps, l'état du programmateur Arduino peut être surveillé à l'aide des voyants LED connectés, comme illustré. Le code ISP Arduino est préprogrammé pour cette fonctionnalité.

Arduino-LED connection
Arduino-LED connection

Remarques concernant les LED :

Broche 7 = programmation (s'allume pendant la programmation)

Broche 8 = erreur (s'allume en cas d'erreur de programmation)

Broche 9 = Normal (reste allumée une fois le programmateur mis sous tension)

Une fois le programmateur Arduino configuré, la connexion entre le programmateur Arduino et la cible Arduino est établie. La configuration des broches doit être effectuée exactement comme décrit dans le code ISP Arduino.

3. Configurer la communication SPI

L'Arduino ISP communique à l'aide du protocole SPI (Serial Peripheral Interface) pour programmer le microcontrôleur AVR. La communication SPI utilise 4 signaux logiques : MOSI, MISO, SCLK et SS. Outre I2C, SPI est l'un des modes de communication les plus couramment utilisés pour les microcontrôleurs. Le SPI suit une architecture maître-esclave, ce qui signifie qu'un dispositif maître peut communiquer avec plusieurs dispositifs esclaves à l'aide des mêmes broches de données, et que le dispositif esclave cible est sélectionné à l'aide de la ligne de sélection d'esclave.

S'il y a une carte mémoire, la sélection est utilisée pour sélectionner une puce spécifique parmi plusieurs puces. Cependant, lorsque vous utilisez Arduino comme outil de programmation, le signal de sélection esclave est uniquement utilisé pour réinitialiser le microcontrôleur. Réinitialisez le microcontrôleur dans un état d'acceptation des commandes provenant de l'Arduino du programmeur.

Sur le programmateur Arduino, les broches 10, 11, 12 et 13 sont utilisées comme broches de données. La configuration est la suivante :

broche 10 = réinitialisation

Broche 11 = MOSI

Broche 12 = MISO

Broche 13 = SCK

4. Configurer les broches de l'en-tête ICSP

La programmation série en circuit (ICSP) est la possibilité de programmer un microcontrôleur sans interrompre le circuit. Le connecteur ICSP est disponible sous forme de 6 broches sur la carte Arduino. Connectez les broches 11, 12 et 13 de l'Arduino cible aux broches 11, 12 et 13 de l'Arduino programmateur. Notez que la broche 10 de l'Arduino programmateur doit être connectée à la broche de réinitialisation de l'Arduino cible. Les broches du connecteur ICSP peuvent également être utilisées pour la communication SPI.

ICSP header for Arduino
ICSP header for Arduino

5. Configurer Arduino en tant qu'ISP

Après avoir connecté tous les éléments ci-dessus, vous devez définir que vous utilisez le mode Programmeur sur le PC hôte. Allez dans le menu Outils et sélectionnez « Arduino comme ISP » dans l'option « Programmeur ».

Configure Arduino as ISP
Configure Arduino as ISP

6. Graver le bootloader sur l'Arduino

Ensuite, chargez le bootloader dans la mémoire de l'Arduino cible et définissez le « fusible ». Dans l'univers Arduino, un fusible est un ensemble d'instructions utilisées pour définir plusieurs fonctions dans un microcontrôleur. Par exemple, la fréquence de la puce et la source d'horloge sont définies dans les fusibles. Les microcontrôleurs sont sensibles aux tensions de fonctionnement et peuvent mal fonctionner si les niveaux de tension sont inférieurs à ceux spécifiés. La tension de fonctionnement minimale est également définie dans le fusible.

burn bootloader to Arduino
burn bootloader to Arduino

Précautions

#1. Si le microcontrôleur ou la carte Arduino peut communiquer avec le programme Arduino IDE, cela présente divers avantages, tels que la possibilité d'utiliser le moniteur série de l'Arduino IDE pour vérifier les résultats pendant l'exécution. (Le moniteur série s'ouvre dans une fenêtre séparée, agissant comme un terminal distinct pour recevoir et envoyer des données série.)

#2. Si le bootloader n'est pas chargé dans le microcontrôleur, celui-ci ne pourra pas utiliser les fonctions de l'Arduino et ne pourra pas communiquer avec l'IDE Arduino. Le bootloader occupe une partie de la mémoire. Dans certains cas, il n'est pas nécessaire d'utiliser l'IDE Arduino, le bootloader n'a donc pas besoin d'être programmé. Si le bootloader n'est pas programmé, davantage de mémoire peut être libérée pour le croquis du programme principal. Par exemple, dans Arduino UNO, la taille totale de la mémoire est de 32 Ko, et 0,5 Ko de mémoire est alloué au bootloader. Si le bootloader n'est pas installé, la mémoire totale disponible pour le croquis du programme principal est plus importante.

Résumé

Le microcontrôleur AVR est une puce puissante et facile à utiliser qui peut être programmée pour une large gamme d'applications. C'est une puce idéale pour les débutants qui souhaitent se lancer dans les microcontrôleurs et l'électronique. La plateforme Arduino est un excellent moyen de se familiariser avec les microcontrôleurs et est spécialement conçue pour les débutants.

Abonnez-vous

Rejoignez notre liste d’abonnés pour obtenir mensuel blog des mises à jour, des nouvelles technologies, des études de cas. Nous n’enverrons jamais de spam, et vous pouvez vous désinscrire à tout moment.

Retour en haut

Instant Quote