IMA4 2018/2019 SEC4
Introduction
L'épreuve complémentaire avait donné un certain résultat mais il fallait approfondir pour une utilisation éventuelle en tutorat système IMA4.
Circuit imprimé
Le circuit imprimé a été légérement revu pour supprimer les via sous le micro-contrôleur. Le paquetage QFN a la particularité d'imposer un pad de refroidissement sous le composant.
Le fichier Fritzing utilisé pour la conception du PCB est disponible : Media:Circuit 16u4 rex v5 pcb.zip (renommez le fichier en .fzz
).
Fabrication
Une version de la manette a été réalisée par soudage manuel. Seuls les vibreurs n'ont pas été installés.
A noter que l'ATMega32u4 a été soudé avec un fer à air chaud. Du flux a été utilisé pour tenter de mieux conduire la chaleur sur les pads sous le composant. La soudure a du être consolidée en promenant un fer classique le long des connecteurs du micro-contrôleur (avec là aussi utilisation de flux).
Les autres composants ont été soudé par un fer classique avec une panne pas particulièrement fine.
Configuration de l'ATMega32u4
L'ATMega32u4 doit être programmé par les broches ICSP. Soit avec un programmateur spécifique, soit simplement en utilisant un Arduino type Uno avec un branchement fil à fil entre le connecteur ICSP de l'ATMega328p et celui de l'ATMega32u4. Attention la broche reset de l'ATMega32u4 fait exception et doit être reliée à la sortie 10 de l'Arduino Uno servant de programmateur. Utilisez l'IDE Arduino pour téléverser sur l'Arduino Uno le programme de démonstration ArduinoISP
.
Pour jouer, il est possible d'installer un bootloader pour Arduino Leonardo en utilisant l'IDE Arduino. Dans l'IDE Arduino, sélectionnez Leonardo comme plateforme, prenez "Arduino as ISP" comme programmateur et prennez le port série de l'Arduino Uno comme moyen de communication. Il suffit ensuite de cliquer sur "burn bootloader" pour que votre manette soit considérée par l'IDE Arduino comme un Arduino Leonardo.
Cela dit le but est de programmer cette manette en C pour, à terme, utiliser la bibliothèque USB LUFA. Il est donc plus confortable de charger un lanceur permettant de téléverser le programme par USB. De tels lanceurs existent sur le site d'ATMEL : [1]. Le lanceur peut se charger sur l'ATMega32u4 avec la méthode du programmateur Arduino IDE sus-citée et en utilisant l'utilitaire avrdude
.
Vous pouvez, par exemple, utiliser la commande :
avrdude -F -v -p atmega32u4 -c stk500v1 -b 19200 -P /dev/ttyACM0 \ -U flash:w:/home/rex/Downloads/atxmega32a4u_bootloader_usb_dfu_103.hex
Ensuite se pose le problème de repasser en mode DFU une fois qu'un programme a été téléchargé. L'ATMega32u4 est prévu pour repasser en mode DFU si sa broche HWBE (ou PE2) est liée à la masse juste après une réinitialisation (activation de la broche reset
). IL se trouve que la broche PE2 de la manette est connectée à la masse via une LED. Du coup un simple appui sur le bouton reset
de la manette peut envoyer le micro-contrôleur en mode DFU. Pour cela il faut cependant que le bit 4 (HWBE enable) du registre de configuration étendu soit positionné (fuse extended).
Pour positionner ce bit de configuration, vous pouvez utiliser la commande :
avrdude -F -v -p atmega32u4 -c stk500v1 -b 19200 -P /dev/ttyACM0 -U efuse:w:0xc3:m
Voila, il ne reste plus qu'à télécharger les programmes avec l'utilitaire dfu-programmer
.