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