Commit b08b30f41b2a46e3f186e74a8dcba38a93a5ea96

Authored by pfrison
1 parent 01e0e7b7

Correction PercTeacher Robot

PercTeacher/Sources/Robot/makefile
@@ -6,7 +6,7 @@ export TARGET_ARCH = -mmcu=$(MCU) @@ -6,7 +6,7 @@ export TARGET_ARCH = -mmcu=$(MCU)
6 export CFLAGS = -Wall -I. -DF_CPU=16000000 -Os #-g 6 export CFLAGS = -Wall -I. -DF_CPU=16000000 -Os #-g
7 export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections # -Os 7 export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections # -Os
8 8
9 -TARGET = servoAndStepperControl 9 +TARGET = robot.c
10 TERM = /dev/ttyACM0 10 TERM = /dev/ttyACM0
11 CPPFLAGS = -mmcu=$(MCU) 11 CPPFLAGS = -mmcu=$(MCU)
12 PGMERISP = -c wiring -b 115200 -P $(TERM) -D 12 PGMERISP = -c wiring -b 115200 -P $(TERM) -D
PercTeacher/Sources/Robot/robot.c
@@ -3,40 +3,47 @@ @@ -3,40 +3,47 @@
3 3
4 #define SERIAL_BAUDE_RATE 9600 4 #define SERIAL_BAUDE_RATE 9600
5 #define DELAI_STEP 2 5 #define DELAI_STEP 2
6 -#define STEP_MOTEUR_GAUCHE 0x00 // pin ??  
7 -#define STEP_MOTEUR_DROIT 0x00 // pin ??  
8 -#define DIR_MOTEUR_GAUCHE 0x00 // pin ??  
9 -#define DIR_MOTEUR_DROIT 0x00 // pin ?? 6 +
  7 +#define DDR_GAUCHE DDRB
  8 +#define PORT_GAUCHE PORTB
  9 +#define STEP_MOTEUR_GAUCHE 0x40 // pin 12
  10 +#define DIR_MOTEUR_GAUCHE 0x20 // pin 11
  11 +
  12 +#define DDR_DROIT DDRH
  13 +#define PORT_DROIT PORTH
  14 +#define STEP_MOTEUR_DROIT 0x10 // pin 7
  15 +#define DIR_MOTEUR_DROIT 0x08 // pin 6
10 16
11 #define CPU_FREQ 16000000L 17 #define CPU_FREQ 16000000L
12 18
13 //gestion des moteurs 19 //gestion des moteurs
14 void init_pins(void){ 20 void init_pins(void){
15 - DDRB = STEP_MOTEUR_GAUCHE | STEP_MOTEUR_DROIT | DIR_MOTEUR_GAUCHE | DIR_MOTEUR_DROIT; 21 + DDR_GAUCHE = STEP_MOTEUR_GAUCHE | DIR_MOTEUR_GAUCHE;
  22 + DDR_DROIT = STEP_MOTEUR_DROIT | DIR_MOTEUR_DROIT;
16 } 23 }
17 24
18 void pas_moteur(int g, int d){ 25 void pas_moteur(int g, int d){
19 if (g != 0) 26 if (g != 0)
20 - PORTB |= STEP_MOTEUR_GAUCHE; 27 + PORT_GAUCHE |= STEP_MOTEUR_GAUCHE;
21 if (d != 0) 28 if (d != 0)
22 - PORTB |= STEP_MOTEUR_DROIT; 29 + PORT_DROIT |= STEP_MOTEUR_DROIT;
23 _delay_ms(DELAI_STEP); 30 _delay_ms(DELAI_STEP);
24 if (g != 0) 31 if (g != 0)
25 - PORTB &= ~STEP_MOTEUR_GAUCHE; 32 + PORT_GAUCHE &= ~STEP_MOTEUR_GAUCHE;
26 if (d != 0) 33 if (d != 0)
27 - PORTB &= ~STEP_MOTEUR_DROIT; 34 + PORT_DROIT &= ~STEP_MOTEUR_DROIT;
28 _delay_ms(DELAI_STEP); 35 _delay_ms(DELAI_STEP);
29 } 36 }
30 37
31 void moteur_set_dir(int g, int d){ 38 void moteur_set_dir(int g, int d){
32 if(g != 0) 39 if(g != 0)
33 - PORTB |= DIR_MOTEUR_GAUCHE; 40 + PORT_GAUCHE |= DIR_MOTEUR_GAUCHE;
34 else 41 else
35 - PORTB &= ~DIR_MOTEUR_GAUCHE; 42 + PORT_DROIT &= ~DIR_MOTEUR_GAUCHE;
36 if(d != 0) 43 if(d != 0)
37 - PORTB |= DIR_MOTEUR_DROIT; 44 + PORT_GAUCHE |= DIR_MOTEUR_DROIT;
38 else 45 else
39 - PORTB &= ~DIR_MOTEUR_DROIT; 46 + PORT_DROIT &= ~DIR_MOTEUR_DROIT;
40 } 47 }
41 48
42 //gestion de la liaison serie 49 //gestion de la liaison serie
@@ -72,12 +79,13 @@ int main(void){ @@ -72,12 +79,13 @@ int main(void){
72 uint16_t deltaR = (deltaR1 << 8) + deltaR2; 79 uint16_t deltaR = (deltaR1 << 8) + deltaR2;
73 80
74 // sens rotation 81 // sens rotation
75 - moteur_set_dir((deltaL & 0x80) == 0x80 ? 1 : 0, (deltaR & 0x80) == 0x80 ? 1 : 0) 82 + moteur_set_dir((deltaL & 0x80) == 0x80 ? 1 : 0, (deltaR & 0x80) == 0x80 ? 1 : 0);
76 deltaL &= 0x7F; 83 deltaL &= 0x7F;
77 deltaR &= 0x7F; 84 deltaR &= 0x7F;
78 85
79 uint16_t deltaMax = deltaL > deltaR ? deltaL : deltaR; 86 uint16_t deltaMax = deltaL > deltaR ? deltaL : deltaR;
80 - for(uint16_t i=0; i<deltaMax; i++){ 87 + uint16_t i;
  88 + for(i=0; i<deltaMax; i++){
81 if(deltaL > i && deltaR > i) 89 if(deltaL > i && deltaR > i)
82 pas_moteur(1, 1); 90 pas_moteur(1, 1);
83 else if(deltaL > i) 91 else if(deltaL > i)