Mes débuts avec les AVRs

 



Intéressé par la rapidité et le niveau d'intégration des microcontrôleurs AVR ATmega d'Atmel, j'ai fini par consacrer un peu de temps à ce sujet.
La tâche est relativement compliquée et m'a demandé un peu de persévérance malgré toute l'aide que m'ont apportés les sites web mentionnés en bas de page.
Ces quelques lignes pourront sans doute aider certains qui, bien qu'intéressés, seraient tentés d'abandonner en route et ce serait vraiment dommage.

Note
Ce qui suit est le fruit de mon expérience de débutant. Ce n'est probablement pas très académique, mais cela fonctionne et peut être considéré comme une base pour démarrer plus facilement. Merci aux spécialistes de corriger.



Choix d'un environnement de développement intégré
J'ai opté pour AVR Studio d'Atmel associé à WINAVR.
Cet ensemble permet de programmer en C et en langage d'assemblage. AVR Studio est disponible gratuitement sur le site officiel d'Atmel. WINAVR est également disponible gratuitement.
Cet environnement de développement s'interface avec une sonde JTAG et permet donc d'effectuer toutes les phases de développement depuis la création du projet jusqu'à la mise au point sur la carte cible en passant par l'écriture et la compilation.

Le débug sur carte cible utilise ici un adaptateur ou sonde JTAG qui fait le lien entre le débugueur PC et la carte d'application en passant par la liaison série.




Installation de l'environnement de développement

1 - Installer WINAVR        sourceforge.net                   sourceforge.net/projects/winavr/
2 - Installer AVRStudio      Atmel



Sonde JTAG
J'ai construit sur une carte d'essai à pastilles, l'une des multiples sondes dites "JTAG ICE clones" (sans doute clone de la sonde "officielle" d'Atmel)

Schéma de la sonde JTAG


Construction de la sonde JTAG



Essai sonde JTAG

Première sonde sur circuit d'essais




Sonde JTAG

Schéma identique mais nouvelle version sur circuit imprimé simple face






Programmation de la sonde JTAG
La sonde permet  à l'outil de développement sur PC de dialoguer "en JTAG " avec la carte cible.
Pour arriver à cela, il faut programmer son propre microcontrôleur en deux étapes :

Charger un programme dit "BootLoader
Il est nécessaire d'utiliser un des multiples programmateurs décrits sur divers sites spécialisés. Il semble bien que "PonyProg" soit la référence en la matière. Voir par exemple

Tableau des fusibles
Nom Valeur Détails
OCDEN 1 Met le "On Chip Debug" hors service car inutile ici et économise de l'énergie
JTAGEN 1 JTAG non utilisé (on ne débugue pas la sonde)
SPIEN 0 SPI Enable
CKOPT 1 A cause du quartz de 7,3728 MHz, voir doc ATMega16
EESAVE 1 L'EEPROM n'a pas à être sauvegardé durant la programmation : dévalidé (1)
BOOTSZ1 0 Taille Bootloader = 1024 words ou 2048 octets (voir documentation)
BOOTSZ0 0 Taille Bootloader = 1024 words ou 2048 octets (voir documentation)
BOOTRST 0 JMP vers le bootloader après le reset.
BODLEVEL 1 Brown Out Detector level - detection de chute de tension - non utilisé - dévalidé (1)
BODEN 1 Brown Out Detector level - detection de chute de tension - non utilisé - dévalidé (1)
SUT1 1 Start Up Time -  65 ms par exemple
SUT0 1 Start Up Time -  65 ms par exempe
CKSEL3 1 A cause du quartz de 7,3728 MHz
CKSEL2 1 A cause du quartz de 7,3728 MHz
CKSEL1 1 A cause du quartz de 7,3728 MHz
CKSEL0 1 A cause du quartz de 7,3728 MHz


Tableau des fusibles appliqué au programmateur T51prog que j'ai sous la main
Elnec



Essayer le BootLoader avec une console

Lorsque le BootLoader "AVRBOOT.HEX" est chargé dans l'ATmega16, il faut l'installer sur le CI de la sonde, puis effectuer les tâches suivantes :

- Positionner le jumper sur 1-2,
- Relier les prises RS232 du PC et de la sonde par un câble à 3 conducteurs (2-3 croisés),
- Mettre la sonde sous tension (la LED est éteinte),
- Executer une console avec les paramètres 19200, N,8, 1 sur le port COMn: où n est le numéro du port de liaison PC / sonde JTAGICE
- Mettre le clavier en majuscules,
- Taper 'V' et la sonde doit répondre "07",
- Taper 'S'
et la sonde doit répondre "AVRBOOT".

Test console
- C'est OK, passer à la suite, sinon, il faut impérativement trouver l'origine du problème.






Charger dans le microcontroleur un logiciel spécifique -que je suppose crypté- destiné à donner à notre sonde toutes ses facultés JTAG en utilisant l'outil dédié d'AVR Studio

ToolsAvrProg

Le menu Tools -> AVR Prog permet de charger le (mystérieux) fichier "....\Atmel\AVR Tools\ JTAGICE\ Upgrade.ebn"  dans le microcontroleur de la sonde.



Upgrade JTAG ICE

Cliquer sur "Program"


ATmega16 JTAG OK

Les indications "Erasing Device... Programming... Verifying... OK sont rassurantes, c'est tout bon.
Une pression sur le bouton "Reset" de la sonde et la LED s'allume : OK

Il faut réaliser la liaison JTAG : une nappe à 10 conducteurs et deux connecteurs 10 point à sertir.

Pour la sonde JTAG, le travail est terminé. A partir de maintenant, la sonde peut être considérée comme une "boîte noire" qui sera utilisable pour développer tous les projets à venir.





Carte d'application
Ma carte d'application est constituée d'un morceau de carte d'étude sur laquelle se trouvent un ATMEGA16, un quartz 16MHz, deux 22pF, un 10µF sur le 5V et un connecteur 10 points pour la liaison JTAG.
Pour vérifier que mon programme fonctionne bien, une LED et une résistance sont câblées entre PB3 et la masse.



Carte cible
   
Un afficheur graphique GDM12232A a été ajouté


    Schéma de la carte



Vérifier à l'hommètre la bonne continuité des conducteurs de la nappe.

µControleur cible JTAG cible JTAG cible µControleur cible µControleur sonde JTAG sonde JTAG sonde µControleur sonde
24 1 2 GND 8 1 2 GND
26 3 4 VCC 7 3 4 VCC
25 5 6 9 2 5 6 5 / 16
- 7 8 - - 7 8 1
27 9 10 GND 6 9 10 GND



Premier essai de la carte d'application

Pour qu'AVR Studio se connecte à la carte cible, celle ci doit être équipée d'un microcontrôleur compatible JTAG (ATmega16 par exemple)

Le fusible JTAG du microcontroleur doit être à 0 ( validé )


Connexion à la cible

Connexion à la cible pour essai




JTAG connecté à la carte cible

Si cette fenêtre apparaît, c'est que la liaison PC - carte cible est correcte et sera utilisable pour charger et débuguer les programmes.





Premier programme


Listing du premier programme




Commencer un projet #1

Créer un projet et choisir le nom et le type de projet



Commencer un projet #2

Il faut aussi choisir le type de sonde et de microcontrôleur cible





Chargement du premier programme



Le menu Debug -> Start Debugging charge d'abord le programme dans la cible





Le débugueur de l'environnement de développement est maintenant fonctionnel




Les premiers pièges ne tardent pas à apparaître





Conclusion

Développer des applications pour micro contrôleur en bénéficiant du confort des outils modernes est possible et à peu de frais avec les AVR.

Un développement aisé passe par un environnement de développement intégré (IDE), c'est à dire un outil permettant de :
Créer le projet,
Ecrire le ou les fichiers de code source (en langage d'assemblage et en C),
Compiler et/ou assembler le ou les fichiers source,
Linker,
Simuler en local sur le PC de développement,
Charger et débuguer sur la carte d'application (carte cible).

Le débug sur carte cible est une possibilité inestimable en terme de facilité et de rapidité de repérage des dysfonctionnements.
L'aspect didactique du débug sur la carte cible n'est également pas négligeable.






Les sites web qui m'ont permis d'arriver à mes fins
aquaticus       Le début pas à pas. Propose une sonde JTAG
avrfreaks         Un peu freaks mais excellents
avrportal        Le début pas à pas. Propose une sonde JTAG
atmel
scienceprog.com/build-your-own-avr-jtagice-clone/
scienceprog.com/avrjtag-clone-in-action/

wiki.jelectronique.com/avr
jelectronique.com/JTAG
www.celles.net/wiki/AVR
Et un dernier pour la route
avrbeginners






FreeCompteur Live