LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mardi 19 mars 2024

Visiteurs connectés : 31

Le microcontrôleur ATtiny45 (2)

Procédure de programmation du microcontrôleur

.
Par : Christian

DIFFICULTÉ :

Certaines applications pour un réseau de trains miniatures ne requièrent pas toute la puissance d’un module Arduino/Genuino Uno et on peut trouver dommage de monopoliser un tel module pour si peu. La solution est de les confier à un microcontrôleur moins puissant, donc moins coûteux. Cette série d’articles vous présente le microcontrôleur ATtiny45 du constructeur Atmel et ses possibilités dans le domaine du modélisme ferroviaire.

Dans le premier article (Le microcontrôleur ATtiny45 (1)), nous avons présenté le µC ATtiny45, ses possibilités et les similitudes qu’il présente avec le µC ATmega328P qui équipe les modules Arduino/Genuino Uno. Nous avons évoqué les grands principes de conception d’une application à base d’ATtiny pour le modélisme ferroviaire. Aujourd’hui, nous allons décrire la procédure de programmation des µC ATtiny et nous utiliserons le programme « Blink » donné en exemple pour le téléverser dans une puce ATtiny45.

<

Article mis à jour le 19 septembre 2021 pour l’installation du Board Package ATtiny de Spence Konde dans le paragraphe Importation des fichiers nécessaires aux puces ATtiny.

L’environnement de développement intégré (IDE en anglais pour Integrated Development Environment)

Que nous faut-il pour programmer un microcontrôleur ATtiny ? Sur le plan matériel, un module Arduino/Genuino Uno, un câble USB pour le relier à notre ordinateur, une platine d’essai et des câbles de liaison pour ce genre de platine, sur le plan logiciel, la dernière version de l’IDE qu’on peut télécharger sur le site d’Arduino (www.arduino.cc/download). L’IDE existe pour les trois plateformes : Windows, Mac et Linux, et à l’heure où j’écris ces lignes (fin décembre 2016), nous en sommes à la version 1.8.0.

Sous Windows, vous avez la possibilité de télécharger un fichier ZIP qui, une fois dézipé, donne un dossier contenant tout ce qui est nécessaire au fonctionnement du logiciel. Personnellement, c’est ce que je vous conseille car vous n’avez pas besoin d’être administrateur et vous pouvez mettre ce dossier sur le bureau ou sur une clé USB pour l’avoir toujours avec vous et travailler n’importe où. Dans le dossier, vous trouverez le programme arduino (un exécutable, à ne pas confondre avec arduino_debug) et vous pouvez créer un raccourci pour le lancer depuis le bureau.

La version 1.8.0 de l’IDE d’Arduino permet d’écrire un programme dans un langage de haut niveau, c’est-à-dire proche du langage humain avec des mots clés en anglais, de vérifier la syntaxe du programme et de téléverser ce programme dans le microcontrôleur d’un module Arduino. Bien entendu, le µC du module ne comprend pas le langage de haut niveau ; c’est pourquoi l’IDE transforme ce langage en une suite d’octets que le µC peut comprendre. Cette transformation dépend du µC utilisé par le module (encore appelé carte Arduino) et c’est pourquoi il faut indiquer à l’IDE avec quel type de carte Arduino on travaille ; ceci peut être réglé avec le menu Outils, comme nous le verrons plus loin.

Pour l’instant, notre IDE doit être réglé pour une carte Arduino/Genuino Uno et le programmateur doit être réglé sur « AVRISP mkII » (avant dernière ligne du menu Outils). Ce doit être le cas si vous programmez vos modules Uno sans problèmes.

Transformer son module Uno en programmateur

Pour programmer un microcontrôleur, il faut un programmateur. Vous pouvez en trouver dans le commerce ; certains sont bon marché et d’autres très chers en fonction des possibilités qu’ils offrent. Mais vous pouvez aussi faire l’économie de cet achat en programmant votre module Uno pour qu’il se comporte comme un programmateur. Pour cela, branchez votre module Uno à votre ordinateur et ouvrez l’IDE. Téléversez dans le module le sketch appelé ArduinoISP (pour cela, allez dans Fichier > Exemples > 11.ArduinoISP > ArduinoISP). Votre module est devenu un programmateur ; lorsque vous n’en aurez plus besoin, vous pourrez bien évidemment téléverser un autre programme. Débranchez le module Uno de l’ordinateur. Sur une platine d’essai, réalisez le montage avec un microcontrôleur ATtiny45 à programmer et le module Uno selon la figure 1.

Figure 1
Figure 1
Programmateur à base de module Uno

Comme vous pouvez le voir, le programme ArduinoISP utilise la broche 10 du module Uno pour envoyer un signal de RESET au µC ATtiny45 (câble jaune) afin de le programmer ; ceci insiste sur l’intérêt de garder la broche 1 du µC ATtiny45 comme broche de RESET si on veut pouvoir le reprogrammer à nouveau. Les câbles verts sont les signaux de programmation proprement dit (MOSI, MISO et SCK) ; nous ne rentrerons pas dans le détail du programme ArduinoISP. N’oublions pas que le µC ATtiny doit être alimenté et que le 5 V est fourni par le module Uno (câbles rouges et noirs). Il est important qu’il n’y ait pas de mauvais contacts entre les câbles et la platine d’essai, ce qui suppose que cette dernière soit en bon état avec des contacts non fatigués. À ce stade, notre montage est notre programmateur ; rebranchez le module Uno à l’ordinateur.

Importation des fichiers nécessaires aux puces ATtiny

À l’origine, cet article décrivait l’installation du Board Package ATtiny de David A. Mellis mais ce package n’a pas été mis à jour depuis quelques années et ne correspond plus aux évolutions de l’IDE d’Arduino. C’est la raison pour laquelle nous conseillons d’installer le Board Package de Spence Konde qu’on peut trouver à cette adresse : https://github.com/SpenceKonde/ATTi.... L’installation peut se faire directement avec le Gestionnaire de carte de l’IDE. Nous vous conseillons au préalable de désinstaller le package de Mellis via le Gestionnaire de carte de l’IDE et le bouton Supprimer.

Ouvrez l’IDE et allez dans Outils > Type de carte pour voir si vous disposez d’une section « ATTinyCore » ; si oui, passez au paragraphe suivant. Sinon, allez dans le menu « Préférences » (sous Windows Fichier > Préférences, sous Mac Arduino > Préférences). Dans le menu qui s’ouvre, recopiez le lien ci-dessous dans la case « URL de gestionnaire de cartes supplémentaires » : http://drazzy.com/package_drazzy.co... . Cliquez sur OK pour refermer le menu. Allez dans Outils > Type de carte > Gestionnaire de carte. Dans la fenêtre qui s’ouvre, descendez pour chercher « ATTinyCore by Spence Konde ». Sélectionnez la version la plus récente, puis cliquez sur « Installer ». À la fin de l’installation, fermer la fenêtre ; cette fois, vous devez avoir, dans Outils > Type de carte, une section « ATTinyCore ».

Programmation de la puce ATtiny

Maintenant, votre version de l’IDE contient tout ce qui concerne les microcontrôleurs ATtiny. Dans l’IDE, ouvrez le programme que vous voulez téléverser. Celui-ci doit être adapté à une puce ATtiny, ce qui revient à dire que les numéros d’entrées-sorties doivent être compris entre 0 et 4. Lorsque vous écrivez des programmes pour ATtiny, pensez à les nommer en faisant apparaître le mot ATtiny et précisez dans les commentaires d’entête que ces programmes sont pour ce genre de µC ; cela vous évitera de confondre avec d’autres programmes.

Avant de téléverser le programme, vous devez effectuer quelques réglages dans l’IDE pour lui dire quel type de carte est utilisé. Suivez scrupuleusement la procédure ci-dessous sans rien oublier :

  1. Réglage de l’IDE : dans Outils, sélectionnez « Type de carte > ATTinyCore > ATtiny25/45/85 (No bootloader) » et dans « Outils > Chip : », sélectionnez «  ATtiny45 ». Dans « Outils > Clock Source », sélectionnez « 8 MHz (internal) ». Toujours dans Outils, sélectionnez « Programmateur > Arduino as ISP ». L’IDE est maintenant réglé mais il ne faut rien avoir oublié ! (Vous pouvez vérifier en rappelant le menu Outils)
  2. Première programmation du microcontrôleur ATtiny : si la puce est programmée pour la première fois, allez dans Outils et faites « Graver la séquence d’initialisation ». Ceci n’est pas à refaire pour une reprogrammation de la puce.
  3. Vérifiez votre programme (pour éviter une erreur de syntaxe) et ensuite téléversez-le. Votre puce ATtiny45 est maintenant programmée et prête à l’emploi (et vous pouvez éventuellement récupérer votre module Uno pour autre chose).

Le programme « Blink », donné dans les exemples de l’IDE, permet de faire clignoter la DEL (Diode électroluminescente) présente sur le module Uno ; c’est sans doute le premier programme que vous avez manipulé lorsque vous avez découvert les modules Arduino. Ouvrez ce programme dans l’IDE (Fichier > Exemples > 01.Basics > Blink). Le mot LED_BUILTIN signifie la DEL qui est implantée sur le module Uno et reliée à la sortie 13 du module. Lorsque l’IDE transforme le programme en code compréhensible par le µC, chaque fois qu’il rencontre LED_BUILTIN, il met à la place de ce mot le nombre 13. Comme notre ATtiny45 n’a pas autant de sortie, vous devez remplacer le mot LED_BUILTIN par le numéro de broche de l’ATtiny sur laquelle vous raccorderez la DEL, par exemple 3 (vous pouvez choisir la sortie que vous voulez entre 0 et 4 bien entendu). Vous obtiendrez un message d’erreur si vous essayez de téléverser le programme dans un ATtiny45 en ayant laissé un LED_BUILTIN puisque ceci ne correspond à rien pour un ATtiny. Une fois la correction effectuée, enregistrez le programme avec le nom « Blink_ATtiny » (Fichier > Enregistrer sous…).

Vous avez maintenant un programme conçu pour un µC ATtiny45, le programmateur réalisé selon la figure 1 avec un module Uno dont le programme est ArduinoISP, un µC ATtiny à programmer ; il ne vous reste plus qu’à suivre la procédure citée au-dessus pour téléverser le programme Blink_ATtiny dans la puce. Et à essayer la puce en branchant entre la sortie que vous avez choisie et la masse, une DEL (dans le bon sens) et une résistance de 220 ou 330 Ω ; l’alimentation en 5 V de l’ATtiny peut être prélevée sur le module Uno.

Comme c’est un peu dommage d’utiliser un ATtiny45 pour ne faire clignoter qu’une seule DEL, je vous invite à en faire clignoter 5 à des rythmes différents en vous inspirant du programme « BlinkWithoutDelay » ; vous pourrez ainsi animer votre réseau avec un feu tricolore clignotant en jaune pour indiquer un danger ou des travaux, un gyrophare en bleu de voiture de pompier, une enseigne de commerçant en vert (croix de pharmacie par exemple), des feux de PN en rouge et une dernière DEL blanche pour émettre le flash très bref d’un appareil photo.

La description de la procédure de programmation est beaucoup plus longue à expliquer qu’à appliquer ; bientôt, vous serez capable de programmer vos ATtiny pratiquement les yeux fermés. Les prochains articles seront des descriptions d’animations intéressantes sur un réseau de trains miniatures.

79 Messages

Réagissez à « Le microcontrôleur ATtiny45 (2) »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Matériel »

Fonctionnement et pilotage d’une DEL

Qu’est ce qu’une carte Arduino ?

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Un minimum pour jouer rapidement avec un Arduino

Où acheter ?

Résistances, kézako ?

Les cartes Teensy

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

De nouveaux composants pour continuer à jouer

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servomoteur

Les encodeurs en quadrature

Les indispensables du prototypage

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Les interrupteurs

Signaux lumineux et Arduino

Les shields de prototypage et de connexion

Commande de moteur à courant continu

Choisir sa carte Arduino

Une station DCC complète, polyvalente et économique avec JMRI.

Écran couleur tactile Kuman

Capteurs à effet Hall

Programmation des ATtiny Digispark

Ma première centrale DCC

Ma première manette DCC (1)

Une station DCC minimale avec boutons de commande et écran Oled

Ma première manette DCC (2)

Le Raspberry Pi Pico

Signalisation et sonorisation du va-et-vient pour deux trains

Configurateur de CV sur base de la station DCC minimale

Fabrication d’un programmateur pour microcontrôleurs ATtiny

Détection RailCom© avec ESP32 (ou Arduino)

Adieu Uno, bonjour Uno !

Ma nouvelle manette DCC avec ESP32 (1)

Ma nouvelle manette DCC avec ESP32 (2)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (1)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (2)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (3)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino.(4)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (5)

Les derniers articles

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (5)


bobyAndCo

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino.(4)


bobyAndCo

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (3)


bobyAndCo

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (2)


bobyAndCo

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (1)


bobyAndCo

Détection RailCom© avec ESP32 (ou Arduino)


bobyAndCo, catplus

Ma nouvelle manette DCC avec ESP32 (2)


msport

Ma nouvelle manette DCC avec ESP32 (1)


msport

Adieu Uno, bonjour Uno !


Christian

Fabrication d’un programmateur pour microcontrôleurs ATtiny


Christian, Dominique, Jean-Luc

Les articles les plus lus

Une station DCC complète, polyvalente et économique avec JMRI.

Commande de moteur à courant continu

Capteurs à effet Hall

Les différents types de mouvements d’un servomoteur

Relais électromagnétique

Les interrupteurs

Les diodes classiques

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (1)

Programmation des ATtiny Digispark

Des bus de communication pour l’Arduino