Microcontrôleur ATmega328P : guide complet

À propos du microcontrôleur ATMEGA328P

L'ATmega328P est un microcontrôleur CMOS 8 bits à faible consommation d'énergie basé sur l'architecture RISC améliorée AVR. La puce est développée par Atmel Corporation (Microchip Technology). Elle dispose d'une vitesse d'horloge de 20 MHz, d'une mémoire flash de 32 Ko, d'un temporisateur 16 bits et de 23 lignes d'E/S programmables. Elle est couramment utilisée dans les cartes Arduino et d'autres projets basés sur des microcontrôleurs.

Caractéristiques de l'ATMEGA328P

  • Microcontrôleur AVR 8 bits haute performance et faible consommation ;
  • Architecture RISC avancée ;
  • Segment de mémoire non volatile haute endurance ;
  • Réinitialisation à la mise sous tension et détection programmable des baisses de tension ;
  • Oscillateur calibré en interne ;
  • Sources d'interruption externes et internes ;
  • Six modes veille : veille active, réduction du bruit ADC, économie d'énergie, arrêt, veille et veille prolongée.

Paramètres ATMEGA328P

  • Capacité de la mémoire flash : 32 Ko
  • SRAM : 2 Ko
  • Capacité de mémoire EEPROM : 1 Ko
  • Fréquence d'horloge : 20 MHz
  • Type d'interface : I2C, SPI, USART
  • Tension d'alimentation min. : 1,8 V max. : 5,5 V
  • Tension d'alimentation Dispositifs à montage en surface : montage en surface
  • Type de boîtier : PDIP/TQFP
  • Nombre de broches : 28-PDIP, 32-TQFP
  • Plage de température de fonctionnement : -40 °C à +85 °C
  • Lignes d'entrée/sortie : 23
  • Nombre d'entrées ADC : 8
  • Temporisateur/compteur 8 bits : 2
  • Temporisateur/compteur 16 bits : 1
  • PWM : 6 canaux
  • Méthode de programmation : ISP, IAP, H/PV
  • Méthode de simulation : debugWIRE

Brochage ATMEGA328P

La puce ATMEGA328P dispose de 28 broches d'entrée/sortie à usage général (GPIO), chacune pouvant être configurée comme entrée ou sortie numérique.

ATMEGA328P Pinout (28-pin PDIP)
ATMEGA328P Pinout (28-pin PDIP)

Boîtier ATMEGA328P

L'ATmega328P est disponible dans différents boîtiers, tels que PDIP (Plastic Dual Inline Package), TQFP (Thin Quad Flat Package) et QFN (Quad Flat No-Lead). Dans le contexte du microcontrôleur ATmega328P, le « P » fait référence au type de boîtier de la puce. Ici, le « P » indique spécifiquement le boîtier PDIP.

ATmega328P 28-lead Plastic Dual Inline Package (PDIP)
ATmega328P 28-lead Plastic Dual Inline Package (PDIP)

Schéma fonctionnel ATMEGA328P

ATMEGA328P Block Diagram
ATMEGA328P Block Diagram

Comment graver le bootloader Arduino sur ATMEGA328P ?

Les cartes de développement Arduino achetées en ligne ont été programmées avec BootLoader, vous pouvez donc utiliser directement l'IDE Arduino pour télécharger des programmes.

Cependant, il n'y a pas de BootLoader dans un nouveau microcontrôleur ATMEGA328P, donc l'IDE Arduino ne peut pas être utilisé pour télécharger le programme directement, et le programme ne peut être programmé que via ICSP.

Nous devons programmer nous-mêmes le BootLoader pour le MCU afin de pouvoir utiliser l'IDE Arduino pour le développement.

Matériel requis

  • ATmega328P ;
  • Oscillateur à quartz 16 MHz ;
  • Condensateur 22 pf*2 ;
  • Résistance 10 K ;
  • Une carte de développement Arduino (Uno ou Nano).
Materials for Burning Bootloader to ATmega328P
Materials for Burning Bootloader to ATmega328P

Processus

  1. Télécharger le programme ArduinoISP sur l'Arduino Uno ;
  2. Câbler l'ATmega328P à l'Arduino Uno ;
  3. Graver le BootLoader sur l'ATmega328P ;
  4. Testez le programme de clignotement des LED sur l'ATmega328P.

Étape 1 : Télécharger le programme ArduinoISP sur l'Arduino Uno

Connectez la carte de développement Arduino Uno à l'ordinateur. Recherchez et cliquez sur « Fichier > Exemples > ArduinoISP » dans le logiciel Arduino.

Choose the ArduinoISP Program for Arduino Uno
Choose the ArduinoISP Program for Arduino Uno

Dans le code ArduinoISP, vous pouvez voir que les broches MOSI, MISO et SCK sont définies respectivement comme 11, 12 et 13, ce qui correspond aux broches de la carte de développement Arduino Uno.

Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code
Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code

Ensuite, les paramètres dans Outils dans l'IDE sont les suivants :

  • Carte : « Arduino Uno »
  • Port : « COM(Arduino Uno) »
  • Programmeur : « Arduino as ISP »
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE

Cliquez sur l'icône de téléchargement, et après quelques instants, le programme ArduinoISP sera téléchargé sur votre carte de développement Arduino Uno.

Upload the ArduinoISP program to Arduino Uno
Upload the ArduinoISP program to Arduino Uno

Étape 2 : Câblage de l'ATmega328P à l'Arduino Uno

Selon la définition des broches ISP dans le code ArduinoISP ci-dessus, la méthode de câblage et le schéma entre Arduino et ATmega328P sont les suivants :

ArduinoATmega328P
10PIN1(RESET)
11PIN17(MOSI)
12PIN18(MISO)
13PIN19(SCK)
GNDGND
VCCVCC
Wiring Diagram the ATmega328P to Arduino Uno
Wiring Diagram the ATmega328P to Arduino Uno

Étape 3 : Graver BootLoader sur ATmega328P

Une fois le câblage entre l'Arduino Uno et l'ATmega328P terminé, nous devons connecter l'Arduino Uno à l'ordinateur. Cliquez ensuite sur « Tools>Burn Bootloader » (Outils>Graver le bootloader) pour graver le bootloader sur l'ATmega328P.

Start to Burn BootLoader on ATmega328P
Start to Burn BootLoader on ATmega328P

Étape 4 : Testez le programme de clignotement des LED sur l'ATmega328P

Connectez le pôle positif de la LED à la broche 2 (PIN2) de l'ATmega328P, et le pôle négatif à D. La broche 2 (PIN2) de l'ATmega328P correspond à PD0, donc elle est « 0 » dans le code.

				
					const int LED_PIN = 2; // Define the LED pin

void setup() {
  pinMode(0, OUTPUT); // Set the LED pin as output
}

void loop() {
  digitalWrite(0, HIGH); // Turn on the LED
  delay(1000); // Wait for one second
  digitalWrite(0, LOW); // Turn off the LED
  delay(1000); // Wait for one second
}

				
			
LED Blinking Test on ATmega328P
LED Blinking Test on ATmega328P

Comme vous pouvez le voir dans l'image gif ci-dessus, le programme de clignotement des LED fonctionne normalement.

Part à:

Retour en haut

Instant Quote