🐜 ATtiny13 & ATtiny85

Les microcontrôleurs AVR ultra-compacts à 8 broches — parfaits pour les projets miniatures

Pourquoi les ATtiny ?

Les ATtiny sont les plus petits membres de la famille AVR. Avec seulement 8 broches et un encombrement minimal, ils sont parfaits pour les projets où l'espace, le coût et la consommation d'énergie sont critiques. On les retrouve dans les veilleuses, les minuteurs, les capteurs autonomes, les gadgets DIY et même les installations artistiques.

Les deux modèles les plus populaires sont l'ATtiny13 (le plus petit et le moins cher) et l'ATtiny85 (plus puissant, avec plus de mémoire et de périphériques). Ils sont programmables en C avec AVR-GCC, exactement comme l'ATmega328P, et partagent la même architecture AVR et les mêmes concepts de registres (DDR, PORT, PIN).

📊 Comparaison ATtiny13 vs ATtiny85 vs PIC12F683

SpecATtiny13ATtiny85PIC12F683
ArchitectureAVR 8 bitsAVR 8 bitsPIC mid-range 8 bits
Broches8 (6 GPIO)8 (6 GPIO)8 (6 GPIO)
Flash1 Ko8 Ko3.5 Ko
SRAM64 octets512 octets128 octets
EEPROM64 octets512 octets256 octets
Fréquence max20 MHz20 MHz20 MHz
Oscillateur interne9.6 / 4.8 / 1.2 MHz8 / 1 MHz8 / 4 / 1 / 0.031 MHz
ADC4 canaux, 10 bits4 canaux, 10 bits4 canaux, 10 bits
PWM2 canaux3 canaux1 canal (CCP1)
Timers1 (8 bits)2 (8 bits)3 (8+16 bits)
CommunicationUSI (soft)USI (I2C/SPI soft)Aucune (soft)
Prix~0.50 €~1.50 €~1.50 €

📌 Brochage de l'ATtiny85 (DIP-8)

L'ATtiny85 a un brochage très similaire au PIC12F683 — 8 broches dans un boîtier DIP-8 :

PinNomFonctions
1PB5 / RESET / ADC0 / dWReset (par défaut) ou GPIO/ADC si fuse modifié
2PB3 / ADC3 / OC1B / XTAL1GPIO, ADC, PWM Timer1, oscillateur externe
3PB4 / ADC2 / OC1B / XTAL2GPIO, ADC, PWM, oscillateur externe
4GNDMasse
5PB0 / MOSI / OC0A / SDAGPIO, SPI MOSI, PWM Timer0, I2C Data
6PB1 / MISO / OC0B / OC1AGPIO, SPI MISO, PWM Timer0/Timer1
7PB2 / SCK / ADC1 / SCLGPIO, SPI Clock, ADC, I2C Clock
8VCCAlimentation (1.8V – 5.5V)

⚠️ Attention — Broche RESET (PB5) : Par défaut, la broche 1 est configurée comme RESET. Elle peut être reconfigurée en GPIO via les fuses, mais cela désactive la programmation ISP. Vous aurez alors besoin d'un programmateur haute tension (HVSP) pour reprogrammer le chip. Ne modifiez ce fuse que si vous savez ce que vous faites !

🛠️ Comment programmer un ATtiny ?

Les ATtiny n'ont pas de port USB ni de bootloader. Il existe deux méthodes principales pour les programmer :

Méthode 1 : USBasp (programmateur ISP dédié)

Le USBasp est un programmateur ISP très abordable (~3 €) qui se connecte directement aux broches ISP de l'ATtiny :

Commande avrdude pour programmer :

avrdude -c usbasp -p t85 -U flash:w:programme.hex

Méthode 2 : Arduino as ISP

Vous pouvez utiliser un Arduino Uno comme programmateur ISP :

  1. Téléversez le sketch « ArduinoISP » (Fichier → Exemples → 11.ArduinoISP) sur l'Arduino Uno.
  2. Connectez l'ATtiny à l'Arduino : MOSI→D11, MISO→D12, SCK→D13, RESET→D10, VCC→5V, GND→GND.
  3. Placez un condensateur 10µF entre RESET et GND de l'Arduino (évite l'auto-reset).
  4. Dans l'IDE Arduino, sélectionnez « Arduino as ISP » comme programmateur et « ATtiny85 » comme carte (nécessite le support ATtiny via le gestionnaire de cartes).

💡 Support ATtiny dans l'IDE Arduino : Ajoutez l'URL suivante dans Fichier → Préférences → URLs de gestionnaire de cartes supplémentaires :
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
Puis installez « attiny by David A. Mellis » dans le gestionnaire de cartes.

💻 Premier programme ATtiny85 : LED clignotante

#include <avr/io.h>
#include <util/delay.h>

int main(void) {
    // PB0 (pin 5) en sortie → LED
    DDRB |= (1 << PB0);

    while (1) {
        PORTB ^= (1 << PB0);   // Toggle LED
        _delay_ms(500);
    }
}

Ce programme fait clignoter une LED sur PB0 à 1 Hz. Il utilise moins de 100 octets de Flash, ce qui laisse énormément de marge même sur l'ATtiny13 (1 Ko).

💡 L'ATtiny13 : le défi du minimalisme

L'ATtiny13 est le plus petit AVR couramment disponible. Avec seulement 1 Ko de Flash et 64 octets de RAM, chaque octet compte. C'est un excellent exercice de programmation optimisée :

La compilation avec l'option -Os (optimisation taille) est indispensable. Avec ces contraintes, l'ATtiny13 peut quand même faire des choses impressionnantes : PWM sur LED, lecture ADC, temporisations par timer, et même communication série par software UART.

🏆 Défi ATtiny13 : Créer un feu tricolore (3 LED : rouge, orange, vert) avec des temporisations réalistes, le tout en moins de 500 octets de Flash. C'est un excellent exercice pour comprendre les timers et l'optimisation de code !

🚀 Quand utiliser un ATtiny plutôt qu'un ATmega ou un PIC ?

Pour des projets nécessitant plus de GPIO, de mémoire ou de périphériques (UART, I2C matériel), préférez l'ATmega328P, un PIC16F877A ou un Arduino.