Programmateur/débogueur professionnel et IDE complet pour les microcontrôleurs AVR et SAM — installation, configuration et premier projet
Si le PICkit 3 + MPLAB X forment l'écosystème officiel des PIC, le duo Atmel-ICE + Microchip Studio est l'équivalent pour le monde AVR (ATmega, ATtiny, AT90, XMEGA, SAM). Ces outils offrent des capacités de débogage avancées que les alternatives gratuites (USBasp, Arduino as ISP) ne possèdent pas.
Ce guide couvre l'ensemble de la chaîne de développement professionnelle pour AVR :
L'Atmel-ICE est le programmateur/débogueur officiel de Microchip pour toutes les familles AVR et SAM. C'est l'outil de référence pour le développement professionnel. Il supporte trois interfaces de programmation/débogage :
| Paramètre | Valeur |
|---|---|
| Connexion PC | USB 2.0 (Micro-B) |
| Tension cible | 1.8V – 5.5V (détection automatique) |
| Interfaces | ISP, JTAG, debugWIRE, aWire, SWD, PDI |
| MCU supportés | AVR (ATmega, ATtiny, XMEGA, AVR-Dx), SAM (ARM Cortex-M) |
| Vitesse ISP max | Fosc cible / 4 |
| Débogage | Breakpoints matériels, step, watch, registres en temps réel |
| Prix | ~100 € (original Microchip), ~25–40 € (clone) |
Le connecteur ISP standard utilise un header 2×3 broches au pas de 2.54 mm. C'est le connecteur le plus utilisé pour programmer les AVR :
| Pin | Signal | Fonction | ATmega328P | ATtiny85 |
|---|---|---|---|---|
| 1 | MISO | Master In, Slave Out | PB4 (D12) | PB1 (Pin 6) |
| 2 | VCC | Alimentation cible | VCC | Pin 8 (VCC) |
| 3 | SCK | Horloge série | PB5 (D13) | PB2 (Pin 7) |
| 4 | MOSI | Master Out, Slave In | PB3 (D11) | PB0 (Pin 5) |
| 5 | RESET | Reset de la cible | PC6 (Reset) | PB5 (Pin 1) |
| 6 | GND | Masse | GND | Pin 4 (GND) |
⚠️ Repérage du Pin 1 : Le pin 1 du connecteur ISP est identifié par un triangle ou un point gravé sur le boîtier de l'Atmel-ICE, et par un détrompeur sur le câble plat. Un branchement inversé peut endommager le programmateur ou le microcontrôleur. Vérifiez toujours l'orientation !
Si vous n'avez pas de connecteur ISP 6 broches sur votre breadboard, vous pouvez câbler les 6 fils individuellement entre l'Atmel-ICE et les broches correspondantes de l'ATmega328P ou de l'ATtiny85. Utilisez des fils dupont femelle-mâle.
💡 Astuce : L'Atmel-ICE ne fournit pas d'alimentation à la cible (contrairement au PICkit 3/4 qui peut alimenter le circuit). Votre circuit doit avoir sa propre alimentation (USB 5V, régulateur, pile) avant de lancer la programmation.
Microchip Studio (anciennement Atmel Studio 7) est l'IDE officiel et gratuit pour le développement AVR et SAM. Il est basé sur Microsoft Visual Studio Shell, ce qui lui confère une interface riche avec autocomplétion IntelliSense, navigation dans le code, refactoring et un débogueur visuel puissant.
L'IDE intègre directement le compilateur AVR-GCC (pour C/C++) et l'assembleur AVR-AS, ainsi que le support de tous les programmateurs Microchip (Atmel-ICE, AVRISP mkII, MPLAB SNAP) et de nombreux programmateurs tiers.
⚠️ Windows uniquement : Microchip Studio ne fonctionne que sur Windows (7, 10, 11). Pour macOS et Linux, utilisez MPLAB X IDE (qui supporte aussi les AVR récents) ou VS Code + PlatformIO comme alternative multi-plateforme.
Rendez-vous sur microchip.com → Microchip Studio et téléchargez l'installateur (~850 Mo). Un compte Microchip gratuit peut être requis.
L'interface est similaire à Visual Studio et se compose de :
La fenêtre I/O View (View → I/O View pendant le débogage) affiche tous les registres du microcontrôleur en temps réel avec leurs bits nommés. Vous pouvez voir et modifier PORTB, DDRB, ADMUX, TCCR1A etc. pendant que le programme est en pause. C'est un outil de débogage incroyablement puissant qui n'a pas d'équivalent dans l'IDE Arduino.
LED_Blink_ATmega328P) et choisissez un dossier.main.c pré-rempli.Remplacez le contenu de main.c par :
#define F_CPU 16000000UL // 16 MHz (Arduino Uno) ou 1 MHz (interne)
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRB |= (1 << PB5); // PB5 (D13) en sortie
while (1) {
PORTB ^= (1 << PB5); // Toggle LED
_delay_ms(500);
}
}
La macro F_CPU doit correspondre à la fréquence réelle de votre oscillateur. Si vous programmez un ATmega328P standalone avec l'oscillateur interne (pas un Arduino), la fréquence par défaut est 1 MHz (8 MHz / diviseur 8). Sur un Arduino Uno avec quartz 16 MHz, c'est 16 MHz.
Vous pouvez aussi définir F_CPU dans les propriétés du projet : Project → Properties → Toolchain → AVR/GNU C Compiler → Symbols → ajoutez F_CPU=16000000UL.
Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed ==========
Program Memory Usage: 178 bytes 0.5% Full
Data Memory Usage: 0 bytes 0.0% Full
Notez l'utilisation mémoire ultra-compacte : 178 octets pour un Blink LED, contre ~930 octets avec le framework Arduino.
ℹ️ Raccourci rapide : Pour compiler et programmer en un clic, configurez l'Atmel-ICE comme outil dans Project → Properties → Tool, puis utilisez le bouton « Start Without Debugging » (Ctrl+Alt+F5). Cela compile, programme et lance le code sans ouvrir le débogueur.
Le débogage est la raison principale d'investir dans un Atmel-ICE plutôt qu'un simple USBasp. Le débogueur permet d'exécuter le code pas à pas sur le vrai microcontrôleur, d'inspecter les variables et les registres en temps réel, et de placer des points d'arrêt.
| Interface | MCU compatibles | Breakpoints HW | Particularité |
|---|---|---|---|
| debugWIRE | ATmega328P, ATmega168, ATtiny85, ATtiny13 | 1 | Un seul fil (RESET), activer via fuse DWEN |
| JTAG | ATmega1284, ATmega2560, XMEGA | 3–4 | 4 fils dédiés (TDI, TDO, TMS, TCK) |
| PDI | XMEGA, AVR-Dx | Illimités (SW) | 2 fils, nouvelle génération AVR |
| Raccourci | Action |
|---|---|
F5 | Démarrer / Continuer l'exécution |
Shift+F5 | Arrêter le débogage |
F10 | Step Over — exécuter la ligne sans entrer dans les fonctions |
F11 | Step Into — entrer dans une fonction appelée |
Shift+F11 | Step Out — sortir de la fonction courante |
F9 | Toggle Breakpoint — ajouter/supprimer un point d'arrêt |
Ctrl+Alt+W | Fenêtre Watch — surveiller des variables |
PORTB, compteur, ADC).Les fuses sont l'équivalent AVR des #pragma config des PIC. Ce sont des bits de configuration non volatiles qui définissent le comportement fondamental du microcontrôleur : source d'horloge, diviseur, Brown-Out Detect, bootloader, etc.
⚠️ Attention aux fuses ! Des fuses mal configurés peuvent rendre votre AVR inaccessible en ISP (par exemple si vous sélectionnez un oscillateur externe alors qu'il n'y en a pas). Contrairement aux PIC, les fuses ne sont pas dans le code source — ils se programment séparément. Lisez toujours les fuses actuels avant de les modifier, et utilisez un calculateur de fuses en ligne pour vérifier.
| Configuration | Low | High | Extended | Usage |
|---|---|---|---|---|
| Interne 8 MHz | 0xE2 | 0xD9 | 0xFF | Standalone, sans quartz |
| Interne 1 MHz (défaut usine) | 0x62 | 0xD9 | 0xFF | ATmega328P neuf, basse conso |
| Externe 16 MHz (Arduino Uno) | 0xFF | 0xDE | 0xFD | Avec quartz 16 MHz + bootloader |
| Programmateur | Prix | ISP | Débogage | IDE compatible |
|---|---|---|---|---|
| Atmel-ICE (original) | ~100 € | ✅ | ✅ debugWIRE/JTAG | Microchip Studio, MPLAB X |
| Atmel-ICE (clone) | ~25–40 € | ✅ | ✅ (variable) | Microchip Studio |
| USBasp | ~3 € | ✅ | ❌ | avrdude (ligne de commande) |
| Arduino as ISP | 0 € (déjà le matériel) | ✅ | ❌ | Arduino IDE, avrdude |
| MPLAB SNAP | ~15 € | ✅ | ✅ (limité) | MPLAB X, Microchip Studio |
| PICkit 4 | ~50 € | ✅ (AVR récents) | ✅ | MPLAB X |
Si vous êtes sur macOS ou Linux, ou si vous préférez un IDE plus léger et moderne, VS Code + PlatformIO est une excellente alternative à Microchip Studio :
src/main.c, compilez avec Ctrl+Alt+B, téléversez avec Ctrl+Alt+U.| Critère | Écosystème PIC | Écosystème AVR |
|---|---|---|
| IDE officiel | MPLAB X (multiplateforme) | Microchip Studio (Windows seul) |
| Compilateur | XC8 (propriétaire, Free/Pro) | AVR-GCC (open-source, gratuit) |
| Programmateur officiel | PICkit 3/4 | Atmel-ICE |
| Programmateur budget | Clone PICkit (~10 €) | USBasp (~3 €) |
| Débogage sur chip compact | Limité (ICD sur 8 broches) | debugWIRE (même ATtiny) |
| Configuration matérielle | #pragma config (dans le code) | Fuses (programmés séparément) |
| Alternative multiplateforme | MPLAB X (natif) | VS Code + PlatformIO |