diff --git a/PercTeacher/Sources/Robot/makefile b/PercTeacher/Sources/Robot/makefile index 0d506a1..b75080c 100644 --- a/PercTeacher/Sources/Robot/makefile +++ b/PercTeacher/Sources/Robot/makefile @@ -6,7 +6,7 @@ export TARGET_ARCH = -mmcu=$(MCU) export CFLAGS = -Wall -I. -DF_CPU=16000000 -Os #-g export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections # -Os -TARGET = servoAndStepperControl +TARGET = robot.c TERM = /dev/ttyACM0 CPPFLAGS = -mmcu=$(MCU) PGMERISP = -c wiring -b 115200 -P $(TERM) -D diff --git a/PercTeacher/Sources/Robot/robot.c b/PercTeacher/Sources/Robot/robot.c index 737deed..15e26e1 100644 --- a/PercTeacher/Sources/Robot/robot.c +++ b/PercTeacher/Sources/Robot/robot.c @@ -3,40 +3,47 @@ #define SERIAL_BAUDE_RATE 9600 #define DELAI_STEP 2 -#define STEP_MOTEUR_GAUCHE 0x00 // pin ?? -#define STEP_MOTEUR_DROIT 0x00 // pin ?? -#define DIR_MOTEUR_GAUCHE 0x00 // pin ?? -#define DIR_MOTEUR_DROIT 0x00 // pin ?? + +#define DDR_GAUCHE DDRB +#define PORT_GAUCHE PORTB +#define STEP_MOTEUR_GAUCHE 0x40 // pin 12 +#define DIR_MOTEUR_GAUCHE 0x20 // pin 11 + +#define DDR_DROIT DDRH +#define PORT_DROIT PORTH +#define STEP_MOTEUR_DROIT 0x10 // pin 7 +#define DIR_MOTEUR_DROIT 0x08 // pin 6 #define CPU_FREQ 16000000L //gestion des moteurs void init_pins(void){ - DDRB = STEP_MOTEUR_GAUCHE | STEP_MOTEUR_DROIT | DIR_MOTEUR_GAUCHE | DIR_MOTEUR_DROIT; + DDR_GAUCHE = STEP_MOTEUR_GAUCHE | DIR_MOTEUR_GAUCHE; + DDR_DROIT = STEP_MOTEUR_DROIT | DIR_MOTEUR_DROIT; } void pas_moteur(int g, int d){ if (g != 0) - PORTB |= STEP_MOTEUR_GAUCHE; + PORT_GAUCHE |= STEP_MOTEUR_GAUCHE; if (d != 0) - PORTB |= STEP_MOTEUR_DROIT; + PORT_DROIT |= STEP_MOTEUR_DROIT; _delay_ms(DELAI_STEP); if (g != 0) - PORTB &= ~STEP_MOTEUR_GAUCHE; + PORT_GAUCHE &= ~STEP_MOTEUR_GAUCHE; if (d != 0) - PORTB &= ~STEP_MOTEUR_DROIT; + PORT_DROIT &= ~STEP_MOTEUR_DROIT; _delay_ms(DELAI_STEP); } void moteur_set_dir(int g, int d){ if(g != 0) - PORTB |= DIR_MOTEUR_GAUCHE; + PORT_GAUCHE |= DIR_MOTEUR_GAUCHE; else - PORTB &= ~DIR_MOTEUR_GAUCHE; + PORT_DROIT &= ~DIR_MOTEUR_GAUCHE; if(d != 0) - PORTB |= DIR_MOTEUR_DROIT; + PORT_GAUCHE |= DIR_MOTEUR_DROIT; else - PORTB &= ~DIR_MOTEUR_DROIT; + PORT_DROIT &= ~DIR_MOTEUR_DROIT; } //gestion de la liaison serie @@ -72,12 +79,13 @@ int main(void){ uint16_t deltaR = (deltaR1 << 8) + deltaR2; // sens rotation - moteur_set_dir((deltaL & 0x80) == 0x80 ? 1 : 0, (deltaR & 0x80) == 0x80 ? 1 : 0) + moteur_set_dir((deltaL & 0x80) == 0x80 ? 1 : 0, (deltaR & 0x80) == 0x80 ? 1 : 0); deltaL &= 0x7F; deltaR &= 0x7F; uint16_t deltaMax = deltaL > deltaR ? deltaL : deltaR; - for(uint16_t i=0; i i && deltaR > i) pas_moteur(1, 1); else if(deltaL > i) -- libgit2 0.21.2