2020-01-16
md
Utilisation du Tiny AVR Programmer de Sparkfun avec Ubuntu 18.04

Après avoir tâtonné pendant quelques heures, j'ai enfin réussi à téléverser Blink, le croquis de clignotement traditionnel, sur un ATtiny85 avec le programmeur AVR de Sparkfun en utilisant l'EDI Arduino (version 1.8.10) dans Ubuntu 18.04. D'autres rencontreront peut-être certaines des mêmes difficultés, alors voici comment j'ai procédé. Comme d'habitude, je ne fais que colliger le travail des autres.

Table des matières

  1. Noyau Arduino
  2. Autorisations
  3. Blink sur ATtiny85
  4. Bibliographie et un dernier lien

Noyau Arduino toc

Le guide d'utilisation de Sparkfun intitulé Tiny AVR Programmer Hookup Guide doit être lu même s'il est orienté Windows. Vous y découvrirez qu'un noyau Arduino pour les microcontrôleurs AVR de type ATtiny (modèles 25, 45, 85, 24, 44 et 84) a été développé par David A. Mellis et qu'il est disponible sur GitHub: github.com/damellis/attiny. La procédure est simple, du moins pour ceux qui ont déjà installé un gestionnaire de carte supplémentaire. Il s'agit d'une opération en deux étapes pour ajouter la prise en charge de ces microcontrôleurs dans l'EDI Arduino.

1. Ajoutez le gestionnaire de cartes ATtiny

Dans les Préférences de l'EDI qu'on atteint avec les choix de menu Fichier/Préférences, il faut ajouter l'URL suivante :

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

à la liste d'URL de gestionnaire de cartes supplémentaires.

S'il s'agit de la première URL supplémentaire, elle peut être collée directement dans la boîte de saisie. Sinon, cliquez sur le bouton à droite de cette dernière collez l'URL sur une ligne distincte de la liste, comme indiqué ci-dessus.

2. Install le noyau ATtiny

Lancez le Gestionnaire de carte avec la sélection de menu Outils/Type de carte: "carte courante". Le choix Gestionnaire de carte est au début de la liste des cartes actuellement prises en charge.

Entrez attiny dans le filtre de recherche en haut de la fenêtre puis sélectionnez le paquet attiny et cliquez sur le bouton installer.

C'est tout, mais si ces explications sont trop laconiques, regardez les instructions d'installation très détaillées du groupe High-Low Tech.

Autorisations toc

Heureusement, il n'est pas nécessaire d'installer des pilotes sous Linux (sous Windows, suivez les instructions de la section Automatically Install the Drivers with Zadig du Guide de branchement.) Connectez simplement le programmeur AVR à un port USB directement ou avec câble d'extension. Il devrait s'afficher en tant que Multiple Vendors USBtiny dans la liste des périphériques USB connectés.

michel@hp:~$ lsusb ... Bus 003 Device 010: ID 1781:0c9f Multiple Vendors USBtiny ...

Si l'appareil n'est pas dans la liste, essayez avec un autre câble USB (le cas échéant) ou un autre port USB en évitant de passer par un concentrateur USB. Si le programmateur n'est toujours pas reconnu, redémarrez et essayez de connecter le programmeur AVR.

Notez comment le programmeur est connecté au bus 3 en tant que périphérique 10. Son propriétaire et son groupe sont root et d'autres (c'est-à-dire moi) n'y ont pas accès en écriture.

michel@hp:~$ ls -l /dev/bus/usb/003/010 crw-rw-r-- 1 root root 189, 269 jan 16 19:58 010

Il sera difficile de téléverser un croquis vers l'AVR, mais il existe des moyens de contourner temporairement ce problème. L'EDI Arduino peut être démarré en tant que root.

michel@hp:~$ sudo arduino-1.8.10/arduino Picked up JAVA_TOOL_OPTIONS: ...

Bien sûr, le répertoire correct contenant le fichier exécutable arduino devra être spécifié. Une autre possibilité consiste à accorder aux autres utilisateurs des privilèges d'écriture sur l'appareil.

michel@hp:~$ sudo chmod 666 /dev/bus/usb/003/010 michel@hp:~$ ls -l /dev/bus/usb/003/010 crw-rw-rw- 1 root root 189, 267 jan 17 15:17 /dev/bus/usb/003/010

Ces expédients fonctionnent et il serait possible de passer directement à la section suivante pour télécharger un croquis sur le microcontrôleur. Cependant, il est préférable de créer une règle udev qui définira automatiquement les autorisations nécessaires lorsque le programmateur est connecté et reconnu.

D'abord, le répertoire habituel des règles udev est défini en tant que répertoire de travail, puis on vérifie qu'aucune règle n'existe pour le fournisseur 1781.

michel@hp:~$ cd /etc/udev/rules.d/ michel@hp:/etc/udev/rules.d$ grep -i 1781 * michel@hp:/etc/udev/rules.d$

Si une règle existe pour ce fournisseur, vérifiez que c'est pour un produit autre 0c9f, autrement il y aura un conflit. En supposant qu'il n'y a pas de conflit ou qu'il a été résolu, une règle sera créée. J'ai utilisé celle-ci

SUBSYSTEM=="usb", ATTR{idVendor}=="1781", ATTR{idProduct}=="0c9f", GROUP="adm"

que j'ai créé avec l'éditeur nano en tant que super utilisateur.

michel@hp:/etc/udev/rules.d$ sudo nano 99-USBtiny.rules

Pour voir l'effet de cette règle, déconnectez le programmeur et exécutez les deux commandes suivantes qui redémarrent le système udev.

michel@hp:/etc/udev/rules.d$ sudo service udev restart michel@hp:/etc/udev/rules.d$ sudo udevadm control --reload-rules

Reconnectez le programmeur AVR, puis retrouvez-le, car il sera probablement connecté en tant que périphérique différent.

michel@hp:/etc/udev/rules.d$ lsusb ... Bus 003 Device 013: ID 1781:0c9f Multiple Vendors USBtiny ... michel@hp:/etc/udev/rules.d$ ls -l /dev/bus/usb/003/013 crw-rw---- 1 root adm 189, 268 jan 17 18:57 /dev/bus/usb/003/013

Maintenant, les autres utilisateurs quelconques ne peuvent même pas lire le programmeur, mais ce n'est pas un problème, car le groupe est maintenant adm à la place de root et l'utilisateur (moi!) est membre de ce groupe&nbps;:

michel@hp:/etc/udev/rules.d$ groups michel adm lp dialout cdrom sudo dip www-data plugdev input ...

L'utilisateur par défaut doit également être membre du groupe plugdev. Selon toute vraisemblance, l'utilisateur par défaut est membre des deux groupes plugdev et adm. J'ai envisagé d'utiliser le groupe dialout au lieu de adm, car de nombreux microcontrôleurs programmés avec l'EDI Arduino y sont connectés avec des convertisseurs TTY-USB qui sont affectés à ce groupe. Cela n'a vraiment pas d'importance.

L'EDI Arduino peut être démarré de la manière habituelle et il sera possible de téléverser un croquis sur un AVR comme indiqué dans la section suivante. Avant, je mentionnerai que d'autres suggèrent les règles suivantes.

SUBSYSTEM=="usb", ATTR{idVendor}=="1781", ATTR{idProduct}=="0c9f", MODE="0666"
ou
SUBSYSTEM=="usb", ATTR{idVendor}=="1781", ATTR{idProduct}=="0c9f", GROUP="adm", MODE="0666"

La première correspond à la deuxième solution temporaire explorée initialement, mais avec l'avantage qu'elle fonctionnera, quel que soit le numéro de périphérique attribué au programmeur AVR lorsqu'il est branché à chaud sur le bus USB. La deuxième version est pour ceux qui portent bretelles et ceinture.

Blink sur ATtiny85 toc

Le téléversement de l'esquisse de clignotement classique, Blink, vers un ATtiny85 ne se fait pas exactement de la même façon que vers un Arduino Uno ou un ESP8266. En outre, le programmeur AVR n'apparaît pas comme un périphérique série. Néanmoins, la procédure est tout aussi simple.

  1. Déconnectez le programmeur AVR.
  2. Insérez le microcontrôleur dans le socle DIP du programmateur AVR. Assurez-vous qu'il est correctement orienté: le point qui dénote la broche 1 doit être dans le coin supérieur gauche lorsque le port USB du programmateur est à votre gauche.
  3. Obtenez le croquis Blink en utilisant le menu de l'EDI : Fichier/Examples/01.Basics/Blink.
  4. Insérez la définition #define LED_BUILTIN 0 dans le croquis juste avant la fonction void setup() dans le croquis.
  5.  This example code is in the public domain.  http://www.arduino.cc/en/Tutorial/Blink */ #define LED_BUILTIN 0 // the setup function runs once when you press reset or power the board void setup() {  // initialize digital pin LED_BUILTIN as an output.  pinMode(LED_BUILTIN, OUTPUT); }
  6. Sélectionnez la carte et les paramètres appropriés dans le menu Outils. La capture d'écran montre les valeurs correctes pour le ATTiny85.

    Notez comment le port de communication est désactivé, à la place, le paramètre Programmateur doit être défini sur USBtinyISP.

  7. Téléversez l'esquisse de la manière habituelle: avec la combinaison de deux touches CtrlU, le menu Croquis/Téléverser ou le bouton Téléverser.

J'espère que vous aurez du succès comme moi et que vous verrez la DEL orange du programmeur AVR clignoter rapidement lorsque le croquis est transféré vers le microcontrôleur, puis clignoter de façon constante une fois que le programme s'exécute.

Bibliographie et un dernier lien toc

Voici des commentaires de clients anonymes sur des sites de fournisseurs qui étaient mes premières sources :

Les articles suivants sont plus utiles, en particulier celui de Rihard Kubilis que j'aurais aimé avoir trouvé dès le début.

Les publications Tiny AVR Programmer Hookup Guide de Sparkfun et Programming an ATtiny w/ Arduino 1.6 (or 1.0) de David A. Mellis ont déjà été mentionnées.

Enfin, il existe plusieurs noyaux Arduino pour les dispositifs de type ATtiny. Jetez un œil au ATTinyCore de Spence Konde. Il prend en charge beaucoup plus de contrôleurs ATTiny et il semble contenir plus de fonctionnalités.