mardi 19 septembre 2017

Déboguer l'ATTiny85 avec le moniteur série

Si vous êtes un tant soit peu familier avec la programmation d'une carte Arduino, vous savez à quel point le moniteur série peut s'avérer utile pour débusquer les erreurs dans votre sketch:  on affiche le contenu des variables à l'écran, ce qui permet souvent de trouver ce qui ne fonctionne pas correctement.

Lorsqu'on programme un ATTiny85 en utilisant une carte Arduino comme programmateur (Arduino as ISP), cette option n'est pas directement disponible puisque l'ATTiny85 ne dispose pas de ports UART hardware. Il est toutefois possible d'utiliser la bibliothèque "software serial" qui est distribuée par défaut avec l'IDE Arduino.

Je vais supposer que vous savez déjà comment utiliser une carte Arduino Uno comme programmateur de carte ATTiny (si ne n'est pas le cas, vous pouvez vous référez à cet article que j'ai récemment mis à jour).

Notez que j'utilise le core développé par David A. Mellis, avec une fréquence d'horloge de 1 MHz.

Pour transmettre les données de l'ATTiny vers l'ordinateur, j'utilise un convertisseur USB-TTL dont la broche "RX" est reliée au GPIO de l'ATTiny que j'ai choisi pour la communication série.



Je rappelle le pinout de l'ATTiny85, c'est toujours utile:



Première option:  affichage dans le moniteur série pendant que l'ATTiny demeure branché au programmateur Arduino

Cette option est pratique car vous pouvez téléverser votre sketch dans l'ATTiny et observer le résultat dans le moniteur série sans avoir à débrancher quoi que ce soit.  Elle n'est pas toujours réalisable, toutefois, car les GPIO 0, 1 et 2 de l'ATTiny sont déjà utilisées pour la programmation; vous devez donc dédier le GPIO 3 ou 4 à la transmission série, et un seul GPIO demeure disponible pour y brancher un capteur ou autre.

Sur le schéma ci-dessous, le GPIO 4 (qui est en fait la broche numéro 3 de l'ATTiny) est utilisé pour la transmission des données vers le moniteur série.  Les autres connexions sont celles qui sont requises pour programmer l'ATTiny au moyen de l'Arduino Uno.

La masse (GND) du convertisseur USB-TTL est reliée à la masse de l'ATTiny et à celle de la carte Arduino.



Puisque la carte Arduino et le convertisseur USB-TTL sont tous les deux branchés à l'ordinateur, je dois m'assurer de sélectionner le bon port dans le menu "Outil":  le port correspondant à l'Arduino lorsque je désire téléverser le sketch dans l'ATTiny, et le port correspondant au convertisseur Série-TTL lorsque je désire afficher le moniteur série.




Deuxième option:  affichage dans le moniteur série pendant que l'ATTiny n'est plus branché au programmateur Arduino

Puisque l'ATTiny85 comporte un nombre restraint de pins GPIO, il est souvent nécessaire de le débrancher de l'Arduino pour faire nos tests.  Vous pouvez alors utiliser n'importe lequel des GPIO pour la transmission des données, et utiliser les autres pour y brancher des capteurs, LEDs, etc.  Si désiré, le convertisseur USB-TTL peut servir à l'alimentation de votre circuit.



Un exemple de sketch

Aucune installation de bibliothèque n'est nécessaire, puisque "SoftwareSerial" est inclus avec l'IDE Arduino.  Les données sont transmise par le GPIO 4, ce qui correspond aux circuits illustrés plus haut.  Dans ce cas, puisque j'envoie des données vers l'ordinateur mais je ne désire pas en recevoir, j'ai assigné un numéro de GPIO bidon pour la pin RX.





Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire