IMA4 2018/2019 SEC4 : Différence entre versions
(→Configuration de l'ATMega32u4) |
(→Programmation) |
||
Ligne 65 : | Ligne 65 : | ||
Il n'est pas question de donner ici le code LUFA permettant de transformer la manette en une manette USB standard. Cela fait l'objet du tutorat USB en IMA4. Cela | Il n'est pas question de donner ici le code LUFA permettant de transformer la manette en une manette USB standard. Cela fait l'objet du tutorat USB en IMA4. Cela | ||
− | dit vous trouverez en fichier attaché tout le code C permettant de gérer les LED, les boutons et le joystick. Le code est modulaire et peut être repris dans d'autres projets. Pour charger le programme, il suffit de lancer <code>make all upload</code> une fois la manette connectée et passée en mode DFU. | + | dit vous trouverez en fichier attaché tout le code C permettant de gérer les LED, les boutons et le joystick. Le code est modulaire et peut être repris dans d'autres projets. Pour charger le programme, il suffit de lancer <code>make all upload</code> une fois la manette connectée et passée en mode DFU. A noter que pour que les pins PF0 et PF1 fonctionnent en tant qu'E/S standards, il faut désactiver la fonctionnalité JTAG avec la commande <code>MCUCR |= (1<<JTD)</code> (à exécuter deux fois à la suite). |
Projet Manette : [[Media:EC4 2018 Pad32u4.zip]] | Projet Manette : [[Media:EC4 2018 Pad32u4.zip]] |
Version actuelle datée du 1 décembre 2022 à 10:21
Sommaire
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.
Version avec accéléromètre
Une seconde version de la carte a été conçue.
Une modification mineure est l'ajout d'un pad par vibreur pour pouvoir les souder.
La modification principale concerne l'ajout d'un accéléromètre. L'accéléromètre étant alimenté en 3,3V, un régulateur a du être ajouté. Comme il ne restait plus d'entrée analogique, les axes X et Y de l'accéléromètre sont mis sur les mêmes entrées que les boutons "gauche" et "haut". La sélection s'opère par un double interrupteur.
Le fichier Fritzing est disponible : Media:Circuit 16u4 rex v7 pcb.zip (renommez le fichier en .fzz
).
Une représentation du PCB :
Le schéma électrique :
La liste des composants : Media:Circuit_16u4_rex_v7_bom.ods.
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
.
Programmation
Il n'est pas question de donner ici le code LUFA permettant de transformer la manette en une manette USB standard. Cela fait l'objet du tutorat USB en IMA4. Cela
dit vous trouverez en fichier attaché tout le code C permettant de gérer les LED, les boutons et le joystick. Le code est modulaire et peut être repris dans d'autres projets. Pour charger le programme, il suffit de lancer make all upload
une fois la manette connectée et passée en mode DFU. A noter que pour que les pins PF0 et PF1 fonctionnent en tant qu'E/S standards, il faut désactiver la fonctionnalité JTAG avec la commande MCUCR |= (1<<JTD)
(à exécuter deux fois à la suite).
Projet Manette : Media:EC4 2018 Pad32u4.zip