Electronique > Les bases

Comment programmer un ATtiny 85

La carte Arduino Uno est pratique pour faire des prototypes. Mais lorsque vous souhaitez faire un montage définitif, en boitier, vous avez besoin de réduire au maximum la taille de votre circuit.
Dans ce cas, vous pouvez utiliser le microprocesseur Atmega328p (qui équipe la carte Arduino Uno) en standalone. C'est à dire la puce seule avec le minimum de composants pour la faire fonctionner.

Mais si vous n'avez pas besoin d'autant d'entrées / sorties ou de mémoire, son petit frère : le Attiny85 devient une alternative intéressante.

Différences entre Attiny85 et Atmega328p.



De gauche à droite : Arduino Uno, Atmega328p, Attiny85

  Atmega328p Attiny85
Mémoire Flash 32 Ko 8 Ko
Mémoire Sram 2 Ko 0,5 Ko
Mémoire Eeprom 1 Ko 0,5 Ko
Nombre de broche 28 8
Entrées / sorties numériques maximum 23 6
Entrées analogique maximum 6 4
Plage d'alimentation 1,8 - 5,5 V 2,7 - 5,5 V

Mémoire Flash : C'est la mémoire où se trouve votre programme. Elle est préservée même lorsque vous coupez l'alimentation.
Mémoire Sram : C'est la mémoire temporaire qui permet de stocker l'état de vos variables par exemple. Elle est perdue lorsque vous redémarrez ou coupez l'alimentation.
Mémoire Eeprom : Cette mémoire permet de stocker des informations qui reste disponible après un redémarrage ou une coupure de l'alimentation. Attention elle possède un nombre limité d'écriture : 100 000.

Prise en compte de l'Attiny85 dans l'ide Arduino.

Afin de pouvoir programmer l'Attiny85 directement dans l'ide Arduino, il faut effectuer les étapes ci dessous :

  1. Dans le menu Arduino -> Préférences -> Url de gestionnaire de cartes supplémentaires.
    Ajouter l'url suivante :
    https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json


  2. Dans le menu Outils -> Type de carte -> gestionnaire de carte.


  3. rechercher -> Attiny .
  4. Installer Attiny by David A. Mellis puis fermer.

Maintenant dans le menu Outils -> type de carte, l'attiny 85 apparait.

Charger le sketch Arduino ISP.

Pour programmer un Attiny il va falloir utiliser un Arduino Uno avec un programme bien spécifique.
Pour cela créer un nouveau programme dans l'ide Arduino :

  1. Fichier -> exemple -> Arduino ISP -> Arduino ISP
  2. Brancher votre arduino Uno grâce au cable USB.
  3. Vérifier que le type de carte est bien sur Arduino Uno et que le port correspond bien.
  4. Téléverser.

Branchement.



Attention au sens du condensateur, il est polarisé. Vous devez brancher le coté avec la bande blanche sur le GND.

La broche 1 du Attiny est symbolisé par un point.

 

Si vous prévoyer d'utiliser/programmer souvent des ATTiny85 il est intéressant de créer un shield pour brancher directement et plus rapidement sur votre Arduino UNO :

Graver la séquence d'intialisation (Bootloader).

Avant de pouvoir programmer votre Attiny85, il faudra graver la séquence d'initialisation (BootLoader) sur la puce. Il faut faire cette manipulation qu'une seule fois.

Pour cela :

  1. Menu Outils -> Type de carte -> Attiny 25/45/85
  2. Menu Outils -> Processeur -> Attiny 85.
  3. Menu Outils -> Clock -> Internal 8Mhz.
  4. Menu Outils -> Programmateur -> Arduino as ISP.
  5. Brancher votre Arduino Uno.
  6. Vérifier le port (Menu Outils -> port).
  7. Menu Outils -> graver la séquence d'initialisation.
  8. A la fin un message vous confirme le bon téléchargement.

 

Premier programme.

L'Attiny supporte moins de fonction que le UNO. Voici la liste des fontions supportées : 

  • pinMode()
  • digitalWrite()
  • digitalRead()
  • analogRead()
  • analogWrite()
  • shiftOut()
  • pulseIn()
  • millis()
  • micros()
  • delay()
  • delayMicroseconds()
  • SoftwareSerial

Pour ce premier programme nous allons reprendre le classique clignotement de LED.

// Broche où la led est branchée
const int BROCHE_LED = 0;

void setup() {
  // on défini la broche en sortie.
  pinMode(BROCHE_LED, OUTPUT); 
}

void loop() {
  // On allume la led, en mettant la sortie au niveau haut (5V)
  digitalWrite(BROCHE_LED, HIGH);

  // On attend 1 seconde 
  delay(1000);

  // On éteint la led, en mettant la sortie au niveau bas (0V)
  digitalWrite(BROCHE_LED, LOW);

  // On attend 1 seconde
  delay(1000);                    
}

Toujours grâce à l'Arduino UNO comme programmateur, téléverser ce programme dans l'Attiny85.

  1. Menu Outils -> Type de carte -> Attiny 25/45/85
  2. Menu Outils -> Processeur -> Attiny 85.
  3. Menu Outils -> Clock -> Internal 8Mhz.
  4. Menu Outils -> Programmateur -> Arduino as ISP.
  5. Brancher votre Arduino Uno.
  6. Vérifier le port (Menu Outils -> port).
  7. Téléverser

Ensuite récupérer l'Attiny et le brancher suivant ce schéma :