LOCODUINO

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

lundi 25 septembre 2017

41 visiteurs en ce moment

Le microcontrôleur ATtiny45 (2)

Procédure de programmation du microcontrôleur

. Par : Christian

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.

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


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

Ouvrez l’IDE et allez dans Outils > Type de carte pour voir si vous disposez d’une section « ATtiny Microcontrollers » ; 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, recopier le lien ci-dessous dans la case « URL de gestionnaire de cartes supplémentaires » : https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json . Cliquez sur OK pour refermer le menu. Aller dans Outils > Type de carte > Gestionnaire de carte. Dans la fenêtre qui s’ouvre, descendez pour chercher « attiny by David A. Mellis ». Cliquez sur More info pour pouvoir cliquer sur « Installer ». À la fin de l’installation, fermer la fenêtre ; cette fois, vous devez avoir, dans Outils > Type de carte, une section « ATtiny Microcontrollers ».

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 : ATtiny25/45/85 » et dans « Outils > Processeur », sélectionnez «  ATtiny45 ». Dans « Outils > Clock », sélectionnez « Internal 8 MHz ». 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).

Exemple concret de programmation avec le programme Blink

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.

7 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

Résistances, kézako ?

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servo-moteur

Les encodeurs en quadrature

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

Les derniers articles

Le microcontrôleur ATtiny45 (7)


Christian

Commande de moteur à courant continu


Christian

Le microcontrôleur ATtiny45 (6)


Christian

Les shields de prototypage et de connexion


Christian

Le microcontrôleur ATtiny45 (5)


Christian

Signaux lumineux et Arduino


Christian

Le microcontrôleur ATtiny45 (4)


Christian

Le microcontrôleur ATtiny45 (3)


Christian

Le microcontrôleur ATtiny45 (2)


Christian

Le microcontrôleur ATtiny45 (1)


Christian

Les articles les plus lus

Commande de moteur à courant continu

Bouton poussoir

Les écrans LCD alphanumériques

La carte Arduino Uno

Qu’est ce qu’une carte Arduino ?

Les diodes classiques

Le microcontrôleur ATtiny45 (1)

Relais électromagnétique

Les encodeurs en quadrature

Fonctionnement et pilotage d’une DEL