Commit b08b30f41b2a46e3f186e74a8dcba38a93a5ea96
1 parent
01e0e7b7
Correction PercTeacher Robot
Showing
2 changed files
with
24 additions
and
16 deletions
Show diff stats
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) |