lundi 30 mai 2016

Premier pas avec l'ATTiny841

Comme précisé en introduction, l'objectif à terme est de remplacer l'encombrant Arduino Nano par une puce du même fabriquant de référence ATTiny841. Cette puce présente toutes les caractéristiques nécessaires pour un encombrement minimal.
Programmation du ATTiny841
Sur la photo ci-dessus on voit bien la différence d'encombrement; à gauche un Arduino Nano et à droite le µC ATTiny841 soudé sur un petit bout de circuit imprimé.

Le montage ci-dessus doit servir à programmer le ATTiny841. En effet, après avoir déporté tout le superflu (prise USB, régulateur de tension, contrôleur série, ...), il faut néanmoins assurer les fonctions !
Le Arduino Nano est donc utilisé comme programmateur et permet d'assurer l'interface entre le PC et l'ATTiny841.

Programmation du Nano en programmateur


Il est nécessaire de charger le programme "programmateur" dans l'Arduino Nano, celui-ci est fourni dans l'IDE (environnement de développement Arduino, en téléchargement sur le site officiel) standard (Fichier -> Exemples -> ArduinoISP). Ouvrir l'exemple et téléverser le programme.

A ce stade le Nano est programmé pour assurer l'interface.

Prérequis logiciel


Coté logiciel il est nécessaire d'installer un noyau permettant la gestion de l'ATTiny841 à l'IDE standard. Pour cela deux étapes:
  • Ajouter cette adresse " http://drazzy.com/package_drazzy.com_index.json " dans Fichier -> Préférences -> "Additional oards Manager URLs"
  • Ajouter le noyau "ATTinyCore" à l'aide du Board Manager (Outils->Type de carte->Boards Manager)
Note : Il est recommandé d'utiliser l'IDE 1.6.5

Câblage


En plus de l'alimentation (masse et 5v), quatre liaisons sont à câbler, tout est détaillé dans les commentaires du programme ArduinoISP que l'on complète avec le pinout du ATTiny841:
  • Reset : D10 du nano sur pin 4 du ATTiny841;
  • MOSI : D11 du Nano sur pin 7 du ATTiny841;
  • MISO : D12 du Nano sur pin 8 du ATTiny841;
  • SCK : D13 du Nano sur pin 9 du ATTiny841.
Le programme génère également trois signaux qu'il peut être intéressant de visualiser à l'aide de trois leds + résistances pour aider au diagnostic en cas d'erreur.

A ce stade il est possible d'écrire le "système d'exploitation" Arduino sur l'ATTiny841 qui est pour l'instant vierge de tout bit.

Cela se fait en passant par Outils -> Graver la séquence d'initialisation après avoir réglé la bonne carte et sa fréquence.

A ce stade je rencontrait une erreur retournée par l'IDE : "avrdude: stk500_getsync(): not in sync: resp=0x15". 
Une rapide recherche plus tard, le problème vient du fait que le Nano est sujet à un auto-reset dans ces conditions, un petit condensateur entre la masse et l'entrée reset permet de régler le problème. On le voit sur la photo du dessus (la petite boule jaune en bas à droite du Nano). Tout les Nano n'y seront pas sujet, mais c'est le cas de ma copie chinoise. Problème en tout cas vite résolu avec ce condo.

Si cette étape réussie on peut désormais passer à la programmation de l'ATTiny841 à proprement parler.

Programmation du ATTiny841


Je ne suis pas allé bien loin, j'ai juste branché une led sur la sortie 0 (pin 2) avec une résistance pour faire un blink test. Attention, il est nécessaire d'utiliser "Téléverser avec un programmateur" et non "Téléverser" pour écrire le programme sur l'ATTiny841.

J'ai encore eu un petit soucis à ce stade, mon installation de ATTinycore était peut être incomplète. Quoi qu'il en soit j'ai du rajouter au fichier avrdude.conf (qui définit toute les cartes programmables par l'IDE, situé quelque part dans le répertoire d'installation de l'IDE) les infos trouvables ici (à copier/coller en fin de fichier). Lien alternatif

Et après téléversement ... tada, ça clignote (la led verte au premier plan, l'autre étant le diagnostic du Nano)


Prochaine étape, connecter le driver A6211 et les boutons à l'ATTiny841 pour reproduire l'exemple précédent.



Aucun commentaire:

Enregistrer un commentaire