ATTiny85

Pas cher mais étonnant !

Attiny chip          Un circuit intéressant pour de petites applications, relativement bon marché, que l'on peut développer avec l'IDE Arduino et programmer avec un arduino Nano ou Uno sans autre besoin de programmateurs coûteux ou dédiés ! Et à la vue de ses possibilités, c'est presque le rêve . Si la plus belle fille du monde ne peut donner que ce qu'elle a, celui-ci n'en est pas loin . Crée à la base par Atmel et racheté par Microchip  voici quelques unes de ses caractéristiques :

  • Tension d’alimentation 2.7 à 5.5 V
  • Courant maximal total 200 mA
  • Fréquence d’utilisation 0 à 20 MHz
  • Courant maximal en sortie 40 mA
  • Taille de la mémoire Flash 8 Ko
  • Mémoire SRAM 512 Octets
  • Mémoire EEPROM 512 Octets
  • Entrées/sorties (I/O) : 6 I/O numériques PB0 à PB5 ( PB5 sert aussi au RESET (Utilisé pour le mode prog )
  • Entrées/sorties (I/O) : 3 entrées analogiques (Analog input  ADC1, ADC2, ADC3)
  • Entrées/sorties (I/O) : 2 sorties en PWM
  • ...

La DataSheet de chez Atmel donne une version beaucoup plus complète d'informations : Cliquer ICI

Attiny pin

Attiny pinuse

 

Le programmateur :

          Pour programmer l'ATTiny 85, on peut bien sûr utiliser Microchip Studio et le panel  d'outils qui va avec pour 'charger' les programmes, ou un bon vieux programmateur après avoir sorti le fichier x.hex. J'ai longtemps utilisé la méthode d'émulation de port proposée par Digispark  ( Attiny85Attiny85 (352.38 Ko))  qui est assez lourde à mettre en place ... Et maintenant, j'opte pour la simplicité, en utilisant un Arduino Nano comme programmateur directement depuis l' IDE Arduino  ... Pour ne pas avoir à répéter le câblage sur platine d'essai et la préparation de l'Arduino à cet effet je me suis réalisé le petit circuit ci dessous... Opérationnel de suite, et étonnant de simplicité .

 Prgm tiny sch          Ce qui va se traduire par le circuit imprimé, présenté ci-dessous . L'alimentation et le transfert des datas sont assurés par la fiche mini USB de l'Arduino Nano... L'ATTiny85 est bien évidement remplacé par un support 8 DIL de bonne qualité (ou un testool, si on est riche) pour pouvoir insérer et retirer à souhait le CI . Deux pads, respectivement sur VCC et GND (JP2-JP3) ont été ajoutées, pour pouvoir disposer d'une source de 5volts, au cas où on en aurait besoin sur une platine d'essais ...  Un cavalier permet d'isoler l'électrochimique C1 de 10 µF pendant la phase de programmation de l'Arduino en programmateur ; La fonction de ce dernier est justement d'empêcher le RESET du Nano pour qu'il rentre en communication avec la fonction ISP ( Programmation In-Situ ) plutôt que le bootloader, pendant le chargement qui est destiné à l'ATTiny85 et pas au Nano !

Prgm attiny pcb

Tous les fichiers pour la réalisation du circuit de programmation :

Prgm tiny arduiPrgm tiny ardui (209.74 Ko)

 

La préparation logicielle du 'programmateur' :

          On va commencer par aller chercher le programme qui va muter l'Arduino en carte de programmation .Pour cela, l'IDE Arduino est bien pensé car il inclue dans ses exemples, un sketch pour transformer un Nano ou un Uno (je n'en ai pas essayé d'autres) en interface de programmation ... Et on va commencer par ça .

  • Retirer le cavalier, afin de ne pas empêcher le reset pour démarrer avec le bootloader .
  • Dans le menu 'Fichier' on choisi 'Exemple' => '11 Arduinoisp' =>'ArduinoISP'

Prgm tiny exe

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ce qui a pour effet de nous ouvrir le sketch qui sera téléchargé.

  • Dans le menu 'Outil' on va choisir la cible qui reçoit ce programme : 'Outils' => 'Type de carte' => 'Arduino AVR Board' => 'Arduino Nano'.
  • A partir de ce moment on peut connecter la miniUSB sur l'Arduino.
  • Et toujours dans le menu 'Outil' on paramètre la carte (chez moi ATmega328P "Old bootloader" sur le port COM3).

Prgm tiny outil

 

 

 

 

 

 

 

 

 

 

 

 

 

  • Puis téléverser le programme : si tout se passe bien, le message "Téléversement Terminé" apparait en bas à gauche et aucun message avec des gros mots n'apparait dans une écriture orangée !
  • Débrancher le mini USB et enficher le cavalier ...  Le programmateur est prêt à servir !

 

Programmer un ATTiny85

          Comme celui qui a inventé la bicyclette, un jour il a voulu monter dessus ! Eh bien, moi j'ai voulu essayer mon programmateur. Pour commencer, on va devoir aller chercher le type de carte ou de circuit à buriner ! Dans notre cas ce sera un ATTiny85 . 

  •  Dans le menu déroulant 'Fichier' de l'IDE Arduino, on descend sur l'onglet 'Préférences' et en cliquant, on ouvre la fenêtre suivante :

Prgm tiny pref 1Dans l'URL de gestionnaire de carte on  fait un copier /coller de l'adresse suivante:     https://raw.githubusercontent.com/damellis/attiny/ide1.6.x-boards-manager/package_damellis_attiny_index.json      , puis on clique sur OK ... 

Maintenant le type de carte est prêt à être installer ! Pour cela, on clique sur le menu 'Outils' => 'Type de Carte ' => 'gestionnaire de cartes ' ce qui va nous ouvrir une fenêtre dans laquelle se trouve toutes les cartes disponibles sur vos précédentes installations, et en descendant tout en bas, vous devez en trouver une qui s'appelle "attiny by David A. Mellis" . Dans le coin inférieur droit on appui sur le bouton 'Installer ' et quelques instants plus tard, après la barre de progression inférieure, apparait le mot "INSTALED"

Prgm tiny inst

  • Dans le menu déroulant 'Outils' => 'Type de Carte' apparait maintenant dans le sous-menu 'ATtiny Microcontrollers ' => ATtiny25/45/85' et on clique là dessus ... 
  • Dans le même menu 'Outils' => 'Processeur:"ATtiny85"' s'affiche sinon il faut le sélectionner dans le sous-menu ...

Prgm tiny clk

 

 

 

 

 

 

 

 

 

 

 

 

  • Reste à sélectionner le type d'horloge désiré ! Attention si l'on change le type d'horloge, il est nécessaire de re-graver la séquence d'initialisation dans le ATTiny 85 avant de téléverser le programme .

          Si la curiosité l'emporte et que vous souhaitez faire un test de fonctionnement, voici quelques ligne pour faire clignoter une led montée sur le PB0 (Pinuche 5) en n'oubliant surtout pas la resistance de limitation de 470 Ohms ! 
 // Attribution des I/O
#define ledClock  0 

void setup() {
pinMode (ledClock,OUTPUT);
}

void loop() {
        digitalWrite(ledClock,HIGH);
          delay(500);
        digitalWrite(ledClock,LOW);
      delay(500);
   } 

          Une petite remarque tout de même: J'ai perdu beaucoup de temps à chercher pourquoi mes sketchs ne tournaient pas ... Il s'avère que certaines instructions ne sont pas reconnues et le compilateur / téléverseur ne met aucun message d'erreur . C'est le cas de la boucle ' for (int t=0; t<200; t++) ' que j'ai dû remplacer par '  while(t < 200){  '  ...  Je noterai ce que je découvre au fur et à mesure de ce qui ne tourne pas ...

Voici ce dont je suis sûr qui fonctionne :

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

Une remarque cependant :

            Si vous utilisez  Arduino IDE 2.0.0 pour programmer le ATTiny85 via Arduino as ISP , vous risquez d'avoir un message d'erreur " A programmer is required to upload arduino " ! 

Contre cela, utiliser la procédure suivante :

  • Dans l'onglet Croquis ...
  • Menu déroulant, cliquez sur "Téléverser en utilisant un programmateur " ou CTRL + Maj + U

Et le téléversement devrait s'effectuer sans problème ... (Chez Moi, ça marche !)

 

Et pour finir :

            En attendant de compléter cette publication par de nouveaux montages, utilisant la communication I2C ou SPI, car il en est capable aussi, voici un petit micro contrôleur qui, malgré ses limites, fait déjà de grandes promesses , et qui n'est pas cher ...      

 

Ajouter un commentaire