À 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.

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.

Schéma fonctionnel ATMEGA328P

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).

Processus
- Télécharger le programme ArduinoISP sur l'Arduino Uno ;
- Câbler l'ATmega328P à l'Arduino Uno ;
- Graver le BootLoader sur l'ATmega328P ;
- 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.

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.

Ensuite, les paramètres dans Outils dans l'IDE sont les suivants :
- Carte : « Arduino Uno »
- Port : « COM(Arduino Uno) »
- Programmeur : « Arduino as ISP »

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.

É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 :
| Arduino | ATmega328P |
|---|---|
| 10 | PIN1(RESET) |
| 11 | PIN17(MOSI) |
| 12 | PIN18(MISO) |
| 13 | PIN19(SCK) |
| GND | GND |
| VCC | VCC |

É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.

É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
}

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




