Commit df996f823d73bb8f26d0fc04421d8e41c7562c50

Authored by rguillom
1 parent 0fd27a37

fix + README

Showing 3 changed files with 73 additions and 63 deletions   Show diff stats
@@ -232,7 +232,7 @@ int main(){ @@ -232,7 +232,7 @@ int main(){
232 receive_data(tab_PA, &boutons, &joystick_x, &joystick_y); //Réception des boutons et joystick 232 receive_data(tab_PA, &boutons, &joystick_x, &joystick_y); //Réception des boutons et joystick
233 //printf("fin rcpt\n"); 233 //printf("fin rcpt\n");
234 printf("Boutons : %02x, Joystick_x : %02x, Joystick_y :%02x\n", boutons, joystick_x, joystick_y); //Affichage si changement 234 printf("Boutons : %02x, Joystick_x : %02x, Joystick_y :%02x\n", boutons, joystick_x, joystick_y); //Affichage si changement
235 - if ((boutons != boutons_anc) || (joystick_x != joystick_x_anc) || (joystick_y != joystick_y_anc)) printf("Boutons : %02x, Joystick_x : %02x, Joystick_y :%c\n", boutons, joystick_x, joystick_y); //Affichage si changement 235 + //if ((boutons != boutons_anc) || (joystick_x != joystick_x_anc) || (joystick_y != joystick_y_anc)) printf("Boutons : %02x, Joystick_x : %02x, Joystick_y :%c\n", boutons, joystick_x, joystick_y); //Affichage si changement
236 236
237 boutons_anc = boutons; 237 boutons_anc = boutons;
238 joystick_x_anc = joystick_x; 238 joystick_x_anc = joystick_x;
@@ -2,83 +2,105 @@ READ ME @@ -2,83 +2,105 @@ READ ME
2 2
3 Tutorat système 3 Tutorat système
4 4
5 -Rémy Guillomon // Guillaume Cremaschi 5 +Rémi Guillomon // Guillaume Cremaschi
6 6
7 -Objectif : Créer une manette avec une carte Arduino relier en connexion USB avec un PC. 7 +Objectif : Utiliser un shield Arduino de jeu et assurer la liaison USB à un PC.
8 8
9 -Pour compiler, lancer et ultiliser les programmes : 9 +I. Compilations et exécution
10 10
  11 +Les compilations et l'exécution se déroulent en plusieurs étapes.
11 12
12 -Étape 1: Vérifier que la carte ne soit pas flashée. 13 +- Étape 1: Vérifiez que la carte ne soit pas flashée.
13 14
14 -\>lsusb 15 +`lsusb`
15 16
16 -On doit voir une ligne "Arduino SA Uno (CDC ACM)" apparaître.  
17 17
18 -Si elle est déjà flashée, il faut enregistrer le binaire du lien : https://raw.githubusercontent.com/arduino/ArduinoCore-avr/master/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex 18 +Si l'ATMega16u2 est déjà flashé, il faut enregistrer le binaire du lien : https://raw.githubusercontent.com/arduino/ArduinoCore-avr/master/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex
19 19
20 -Court-circuiter les broches GND et RESET de l'ATMega16U2 sur l'ICSP de ce micro-contrôleur 20 +Court-circuitez les broches GND et RESET de l'ATMega16U2 sur l'ICSP de ce micro-contrôleur
21 21
22 -Puis écrire : 22 +Puis écrivez dans un terminal :
  23 +```
  24 +\> dfu-programmer atmega16u2 erase
  25 +\> dfu-programmer atmega16u2 flash Arduino-usbserial-uno.hex
  26 +\> dfu-programmer atmega16u2 reset
  27 +```
23 28
24 -\>dfu-programmer atmega16u2 erase 29 +Débranchez et rebranchez le port USB de la carte.
25 30
26 -\>dfu-programmer atmega16u2 flash Arduino-usbserial-uno.hex 31 +- Étape 2 : Compilation et chargement du programme main.c dans l'ATMega328P
27 32
28 -\>dfu-programmer atmega16u2 reset 33 +Dans un terminal, entrez ces commandes.
  34 +```
  35 +make all
  36 +make upload
  37 +```
  38 +Passez en root pour l'upload si nécessaire.
29 39
30 -Débrancher et rebrancher le port USB de la carte. 40 +Vous pouvez tester ce progrmme directement avec la commande
31 41
32 -Étape 2 : 42 +`minicom -8 -o -b 9600 -D /dev/ttyACM0`
33 43
34 -Compiler et Upload le programme main.c sur l'arduino.  
35 44
36 -\>make all 45 +- Étape 3: Flasher l'ATMega16U2 avec le programme de la partie 3
37 46
38 -\>make upload 47 +Entrez dans le répertoire suivant et compilez
  48 +```
  49 +cd lufa-master/PolytechLille/PAD/
  50 +make all
  51 +```
39 52
40 -Passer en root pour l'upload si nécessaire. 53 +Puis Flashez le micro-contrôleur :
  54 +Court-circuitez les broches GND et RESET de l'ATMega16U2 sur l'ICSP de ce micro-contrôleur et tapez ces lignes
41 55
42 -Remarque : Nous pouvons tester ce progrmme directement avec : 56 +```
  57 +dfu-programmer atmega16u2 erase
  58 +dfu-programmer atmega16u2 flash PAD.hex
  59 +dfu-programmer atmega16u2 reset
  60 +```
43 61
44 -\>minicom -8 -o -b 9600 -D /dev/ttyACM0 62 +Débranchez et rebranchez le port USB de la carte à nouveau.
45 63
  64 +- Étape 4: Compilation du programme sur le PC
46 65
47 -Le programme est maintenant sur l'Arduino. 66 +Placez-vous dans le répertoire Pgm PC
48 67
  68 +`cd ../../../Pgm\ PC/`
49 69
50 -Étape 3:  
51 -Flasher la carte 70 +et compilez.
52 71
53 -\>cd lufa-master/PolytechLille/PAD/ 72 +`gcc -o exe init_USB.c -lusb-1.0 -Wall -Wextra`
54 73
55 -\>make all 74 +- Etape 5 :
56 75
57 -Court-circuiter les broches GND et RESET de l'ATMega16U2 sur l'ICSP de ce micro-contrôleur 76 +Vous pouvez lancer le programme en exécutant le fichier généré.
  77 +`
  78 +./exe
  79 +`
58 80
59 -\>dfu-programmer atmega16u2 erase 81 +II. Etat du programme
60 82
61 -\>dfu-programmer atmega16u2 flash PAD.hex 83 +- Ce qui fonctionne :
62 84
63 -\>dfu-programmer atmega16u2 reset 85 + Le programme de l'ATMega328P est fonctionnel. Lors d'un changement d'état des boutons ou d'un déplacement du joystick, il envoie à la suite un octet de début de trame, l'octet associé au boutons, la valeur de l'axe x du joystick et celle de l'axe y. Ces trois derniers octets sont mis en forme comme conseillé dans l'énoncé.
64 86
65 -Débrancher et rebrancher le port USB de la carte. 87 + La réclamation des interfaces se déroule sans accroc.
66 88
67 -Étape 4:  
68 -Compiler la partie 1 et l'exécuter. 89 + La connexion entre l'ATMega16U2 et le PC par les points d'accès s'établit correctement. De plus, l'envoi des données sur la liaison série par l'ATMega328P fonctionne (testé avec minicom).
69 90
70 91
71 -\>cd ../../../Pgm\ PC/ 92 +- Ce qui ne fonctionne pas :
  93 +
  94 + Nous n'avons pas eu l'occasion de réaliser la commande des LED depuis l'exécutable du PC.
  95 +
  96 + La réception des données sur la liaison série de l'ATmega16U2, via la fonction Reception_Serie() n'est en effet pas opérationnelle. Une fois initialisés, les octets des boutons et des axes des joysticks, sont bien transmis au PC (et affichés sur le terminal) mais leur valeur ne change pas malgré les intéractions avec la manette.
  97 +
  98 + Il est possible que la commande des LED via le PC ne soit pas non plus fonctionnelle à cause du premier point abordé.
72 99
73 -\>gcc -o exe init_USB.c -lusb-1.0 -Wall -Wextra  
74 100
75 -\>./exe  
76 101
77 102
78 103
79 -Ce qui marche :  
80 104
81 -_ La Partie 2, fonctionne correctement et compile sans warnings.  
82 105
83 106
84 -Ce qui ne marche pas : (La partie 3 marche-t-elle ?)  
@@ -80,20 +80,20 @@ void commande_leds(){ @@ -80,20 +80,20 @@ void commande_leds(){
80 if (temp_serial !=0){ 80 if (temp_serial !=0){
81 leds = temp_serial; 81 leds = temp_serial;
82 // Allumer LED de 'A' à 'F' 82 // Allumer LED de 'A' à 'F'
83 - if (leds == 65) PORTB = PORTB | 0x01;  
84 - if (leds == 66) PORTB = PORTB | 0x02;  
85 - if (leds == 67) PORTB = PORTB | 0x04;  
86 - if (leds == 68) PORTB = PORTB | 0x08;  
87 - if (leds == 69) PORTB = PORTB | 0x10;  
88 - if (leds == 70) PORTB = PORTB | 0x20; 83 + if (leds == 'A') PORTB = PORTB | 0x01;
  84 + if (leds == 'B') PORTB = PORTB | 0x02;
  85 + if (leds == 'C') PORTB = PORTB | 0x04;
  86 + if (leds == 'D') PORTB = PORTB | 0x08;
  87 + if (leds == 'E') PORTB = PORTB | 0x10;
  88 + if (leds == 'F') PORTB = PORTB | 0x20;
89 89
90 // Eteindre LED de 'a' à 'f' 90 // Eteindre LED de 'a' à 'f'
91 - if (leds == 97) PORTB = PORTB & 0xfe;  
92 - if (leds == 98) PORTB = PORTB & 0xfd;  
93 - if (leds == 99) PORTB = PORTB & 0xfb;  
94 - if (leds == 100) PORTB = PORTB & 0xf7;  
95 - if (leds == 101) PORTB = PORTB & 0xef;  
96 - if (leds == 102) PORTB = PORTB & 0xdf; 91 + if (leds == 'a') PORTB = PORTB & 0xfe;
  92 + if (leds == 'b') PORTB = PORTB & 0xfd;
  93 + if (leds == 'c') PORTB = PORTB & 0xfb;
  94 + if (leds == 'd') PORTB = PORTB & 0xf7;
  95 + if (leds == 'e') PORTB = PORTB & 0xef;
  96 + if (leds == 'f') PORTB = PORTB & 0xdf;
97 } 97 }
98 } 98 }
99 99
@@ -174,15 +174,3 @@ int main(void){ @@ -174,15 +174,3 @@ int main(void){
174 } 174 }
175 return 0; 175 return 0;
176 } 176 }
177 -  
178 -  
179 -  
180 -  
181 -  
182 -  
183 -  
184 -  
185 -  
186 -  
187 -  
188 -