« SE3 PSE Binome2023-9 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 5 : Ligne 5 :
=4 Mars 2024=
=4 Mars 2024=


Découverte du sujet  
Découverte du sujet.


=11 Mars 2024, PCB=
=11 Mars 2024, PCB=
Ligne 51 : Ligne 51 :
[[File:SE3-pad-no-boot-Bonningre.png|thumb|center|600px|Lecture du Bootloader par ISP]]
[[File:SE3-pad-no-boot-Bonningre.png|thumb|center|600px|Lecture du Bootloader par ISP]]


Avec un programmateur ISP je lis la partie de l'atmega qui contient le bootloader, elle est apparement vide et on peux voir que les fuses sont 0x52 0x99 et 0xFF (avec le calculateur de fuse pour atmega32u4 on constate que ce n'est pas les valeurs qu'il faut pour notre projet)
Avec un programmateur ISP je lis la partie de l'atmega qui contient le bootloader, elle est apparemment vide et on peut voir que les fuses sont 0x52 0x99 et 0xFF (avec le calculateur de fuse pour atmega32u4 on constate que ce n'est pas les valeurs qu'il faut pour notre projet)


=8 Avril 2024, DFU et Bootloader=
=8 Avril 2024, DFU et Bootloader=


Grace à l'aide de monsieur Redon le problème est résolue et la carte est bien reconnue en USB, nous somme parvenu a programmer la manette par ISP mais pour plus de simplicité il faut installer le bootloader USB.  
Grace à l'aide de monsieur Redon le problème est résolue et la carte est bien reconnue en USB, nous sommes parvenu a programmer la manette par ISP mais pour plus de simplicité il faut installer le bootloader USB.  


Pour les commandes utilisant une arduino comme programmeur ISP il faut indiquer <code>-c stk500v1</code> au lieu de <code>-c arduino</code> sinon on obtient un erreur et l'atmega n'est pas programmé.
Pour les commandes utilisant une arduino comme programmeur ISP il faut indiquer <code>-c stk500v1</code> au lieu de <code>-c arduino</code> sinon on obtient un erreur et l'atmega n'est pas programmé.
Ligne 74 : Ligne 74 :
On peut ensuite modifier le makefile du code Lufa en changeant le type de MCU et la fréquence (8Mhz), et programmer la manette directement par USB avec la commande <code>make dfu</code>. Pour repasser en DFU il suffit de maintenir le bouton HWB pendant un reset.
On peut ensuite modifier le makefile du code Lufa en changeant le type de MCU et la fréquence (8Mhz), et programmer la manette directement par USB avec la commande <code>make dfu</code>. Pour repasser en DFU il suffit de maintenir le bouton HWB pendant un reset.


Tout les composants sont soudés : [[File:SE3-pad-carte-soudee-Bonningre.jpg|thumb|right|600px|Carte soudée]]
Tous les composants sont soudés : [[File:SE3-pad-carte-soudee-Bonningre.jpg|thumb|right|600px|Carte soudée]]
<br style="clear: both;" />
<br style="clear: both;" />
En modifiant le code Lufa on peut allumer les led, pour celles sur les pins PF4 et PF5 il faut désactiver le JTAG en copiant deux fois cette ligne au niveau de la déclaration des pins : <code>MCUCR |= (1<<JTD);</code>  
En modifiant le code Lufa on peut allumer les led, pour celles sur les pins PF4 et PF5 il faut désactiver le JTAG en copiant deux fois cette ligne au niveau de la déclaration des pins : <code>MCUCR |= (1<<JTD);</code>  
Ligne 94 : Ligne 94 :


En modifiant l'exemple Joystick de la bibliothèque Lufa on obtient la partie Joystick du projet, la manette est bien reconnue comme un Joystick 2 axes et 2 boutons.   
En modifiant l'exemple Joystick de la bibliothèque Lufa on obtient la partie Joystick du projet, la manette est bien reconnue comme un Joystick 2 axes et 2 boutons.   
On peux les tester avec <code>jstest-gtk</code>
On peut les tester avec <code>jstest-gtk</code>
[[File:SE3-pad-reconnue-Bonningre.png|thumb|left|600px|La manette est reconnue]]
[[File:SE3-pad-reconnue-Bonningre.png|thumb|left|600px|La manette est reconnue]]
[[File:SE3-pad-test-joystick-Bonningre.png|thumb|right|600px|Boutons appuyés]]
[[File:SE3-pad-test-joystick-Bonningre.png|thumb|right|600px|Boutons appuyés]]

Version du 17 avril 2024 à 16:01

Bienvenue sur le Wiki Manette ! Ce wiki est organisé de manière chronologique, et l'avancement est mis à jour à chaque séance.

GIT du projet

4 Mars 2024

Découverte du sujet.

11 Mars 2024, PCB

Ajout de deux boutons qui permettent d'obtenir une manette style Master System et de 4 leds qui peuvent servir d'indicateurs de vies ou autre...

Schéma mis à jour

Le PCB est routé, les coins sont légèrement arrondis pour une meilleure prise en main.

PCB routé
Visualisation du circuit


Fichier GERBER de la manette: Fichier:SE3-pad-bonningre-GERBER.zip

18 Mars 2024, AVR

J'utilise le Makefile fournit pour les TP MicroP pour compiler le code puis le mode DFU de l'atmega8u2 pour envoyer le code dans la carte en USB avec 'dfu-programmer'

Le code pour faire clignoter les LED


25 Mars 2024, GIT

Aujourd'hui travail sur le programme avec la bibliothèque LUFA, les fichiers sont sur le GIT du projet : GIT

La partie Lufa est dans le dossier manette (le dossier src contient le jeu space invaders)

3 Avril 2024, PCB

Le PCB est arrivé, je soude les composants nécessaires pour faire fonctionner l'atmega et une led pour le tester.

Le PCB avec les composants minimums

La led connectée au 5v s'allume mais impossible de détecter l'atmega en USB (mode DFU) avec la commande 'lsusb'

Je test au multimètre que les différents pins 5V sont bien alimentés, les pins Reset et HWB sont aussi bien pullup à 5V (GND quand boutons respectifs appuyés) et la continuité sur les pins D- et D+ de l'USB est bien presente.

Peut-être que l'atmega32u4 n'a pas le bootloader avec DFU USB de préinstallé (ou que les fuses internes ne sont pas correctement configurées pour notre crystal), je soude le connecteur ISP pour essayer de le programmer via cette interface

Lecture du Bootloader par ISP

Avec un programmateur ISP je lis la partie de l'atmega qui contient le bootloader, elle est apparemment vide et on peut voir que les fuses sont 0x52 0x99 et 0xFF (avec le calculateur de fuse pour atmega32u4 on constate que ce n'est pas les valeurs qu'il faut pour notre projet)

8 Avril 2024, DFU et Bootloader

Grace à l'aide de monsieur Redon le problème est résolue et la carte est bien reconnue en USB, nous sommes parvenu a programmer la manette par ISP mais pour plus de simplicité il faut installer le bootloader USB.

Pour les commandes utilisant une arduino comme programmeur ISP il faut indiquer -c stk500v1 au lieu de -c arduino sinon on obtient un erreur et l'atmega n'est pas programmé.

Programmation par ISP avec une Arduino

Pour commencer il faut utiliser la commande suivante pour modifier les fuses (avec une arduino comme programmeur ISP), ca permet de faire comprendre a l'atmega32u4 qu'on utilise un crystal 8Mhz et qu'il faut pouvoir passer en DFU avec le bouton HWB :

avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m

Ensuite il faut télécharger le bootloader USB sur le site microchip : Bootloader DFU AVR (tableau Embedded Software) et le flasher avec la commande suivante (toujours par ISP avec l'arduino) :

avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega32U4-usbdevice_dfu-1_0_0.hex

On débranche le programmateur ISP et on branche la manette en USB, elle apparait avec lsusb :

DFU détecté par lsusb

On peut ensuite modifier le makefile du code Lufa en changeant le type de MCU et la fréquence (8Mhz), et programmer la manette directement par USB avec la commande make dfu. Pour repasser en DFU il suffit de maintenir le bouton HWB pendant un reset.

Tous les composants sont soudés :

Carte soudée


En modifiant le code Lufa on peut allumer les led, pour celles sur les pins PF4 et PF5 il faut désactiver le JTAG en copiant deux fois cette ligne au niveau de la déclaration des pins : MCUCR |= (1<<JTD);

Les leds s'allument

Il ne reste plus qu'à controler les led avec un endpoint et ajouter le code pour les boutons, affaire à suivre...

10 Avril 2024, Lufa

Maintenant que les leds sont bien initialisées et controllables je m'attaque aux boutons, il n'y a pas de pullup sur le PCB, il faut donc utiliser les PullUp intégrés de l'AVR

Configuration des Pullup

Je test ensuite au multimetre, on a bien 5V sur les pins des boutons (avant la configuration des pullup il y avait entre 0.5 et 2v) et 0v quand ils sont appuyés.

Je retourne maintenant sur Lufa et LibUSB pour envoyer des données sur l'endpoint. Le code est dans le Git

10 Avril 2024, Lufa

En modifiant l'exemple Joystick de la bibliothèque Lufa on obtient la partie Joystick du projet, la manette est bien reconnue comme un Joystick 2 axes et 2 boutons. On peut les tester avec jstest-gtk

La manette est reconnue
Boutons appuyés



Ici on appuie sur le bouton du bas et A, ça fonctionne parfaitement


Pour les led, en modifiant minimal.c et en utilisant libusb on peut contrôler les leds en envoyant des données dans l'endpoint.

Lors de la séance prochaine il faudra donc merge les deux projets Lufa pour avoir la fonction Joystick et le contrôle des leds en même temps.