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 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)
... ...