From 98f0b7ee78e8e75e83e5154531cb2be0cd5f8b94 Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Fri, 12 Dec 2014 17:47:57 +0100 Subject: [PATCH] cleaned up stuff, made a script for generating GPIO functions/definitions --- firmware/leds.c | 45 ------------------- firmware/main.c | 24 +++++------ firmware/makefile | 2 +- firmware/motors.c | 90 +++++++++++++++++++++++++------------- firmware/motors.h | 48 ++++++++++----------- firmware/pins.c | 105 +++++++++++++++++++++++++++++++++++++++++++++ firmware/pins.c.sh | 40 +++++++++++++++++ firmware/pins.h | 83 ++++++++++++++--------------------- firmware/pins.h.sh | 27 ++++++++++++ 9 files changed, 300 insertions(+), 164 deletions(-) delete mode 100644 firmware/leds.c create mode 100644 firmware/pins.c create mode 100755 firmware/pins.c.sh create mode 100755 firmware/pins.h.sh diff --git a/firmware/leds.c b/firmware/leds.c deleted file mode 100644 index e43f97f..0000000 --- a/firmware/leds.c +++ /dev/null @@ -1,45 +0,0 @@ - -void init_leds(void) { - DDRLED0 |= 1<>SW0; -} - -uint8_t sw1_state(void){ - return (PINSW1 & (1<>SW1; -} - -uint8_t sw2_state(void){ - return (PINSW2 & (1<>SW2; -} \ No newline at end of file diff --git a/firmware/main.c b/firmware/main.c index 25065c1..fed6099 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -7,15 +7,9 @@ #include "motors.h" #include "misc.h" #include "pins.h" -#include "leds.c" - int16_t plate_pos_x = 0,plate_pos_y = 0; - - - - void print_steps_in_mm(int16_t steps) { int16_t predot,postdot; @@ -33,7 +27,12 @@ void pos_report(void){ print_steps_in_mm(plate_pos_x); uart_puts(" y_pos: "); print_steps_in_mm(plate_pos_y); - uart_puts("\r"); + uart_puts(" end_sw: "); + uart_print_number_wlzeros(XEND2_state(),1); + uart_print_number_wlzeros(XEND1_state(),1); + uart_print_number_wlzeros(YEND2_state(),1); + uart_print_number_wlzeros(YEND1_state(),1); + uart_puts("\r\n"); } @@ -205,13 +204,12 @@ void parse_command(void){ } } -int main(void) -{ + + +int main(void){ init_motors(); - char dummy; - uint8_t field_val = 0; SetupHardware(); touchpad_init(); // you need to call this to setup the I/O pin! @@ -219,7 +217,6 @@ int main(void) sei(); touchpad_set_rel_mode_100dpi();// use touchpad in relative mode - int16_t x, y = 0; int8_t dx, dy = 0; uint8_t busy = 0, last_busy = 0; @@ -227,7 +224,7 @@ int main(void) Usb2SerialTask(); parse_command(); // read data from virtual comport touchpad_read(); // read data from touchpad - dx = -4*delta_x();// returns the amount your finger has moved in x direction since last readout + dx = 4*delta_x();// returns the amount your finger has moved in x direction since last readout dy = -4*delta_y();// returns the amount your finger has moved in y direction since last readout plate_pos_x += dx; @@ -238,6 +235,7 @@ int main(void) if (last_busy && !(busy)){ pos_report(); + } } diff --git a/firmware/makefile b/firmware/makefile index 3ee47e0..6de0b6a 100644 --- a/firmware/makefile +++ b/firmware/makefile @@ -18,7 +18,7 @@ F_CPU = 16000000 F_USB = $(F_CPU) OPTIMIZATION = s TARGET = main -SRC = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) TM1001A.c motors.c misc.c USBtoSerial.c +SRC = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) pins.c TM1001A.c motors.c misc.c USBtoSerial.c LUFA_PATH = ../LUFA/LUFA-130303/LUFA CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ LD_FLAGS = diff --git a/firmware/motors.c b/firmware/motors.c index 2c1f134..59d6281 100644 --- a/firmware/motors.c +++ b/firmware/motors.c @@ -3,6 +3,7 @@ #include #include "motors.h" #include "misc.h" +#include "pins.h" @@ -14,40 +15,47 @@ uint8_t phase_pattern[4] = { 0b00001010, 0b00001001, 0b00000101, 0b00000110}; void set_x(uint8_t byte) { - PORTX0 &= ~(1<>0)<>1)<>2)<>3)<>0)<>1)<>2)<>3)<>0)<>1)<>2)<>3)<>0)<>1)<>2)<>3)< +#include +#include "pins.h" + + +// functions for pin XEND1 + +void XEND1_set(uint8_t value){ + XEND1_PORT &= ~(1<>XEND1; +} + + +// functions for pin XEND2 + +void XEND2_set(uint8_t value){ + XEND2_PORT &= ~(1<>XEND2; +} + + +// functions for pin YEND1 + +void YEND1_set(uint8_t value){ + YEND1_PORT &= ~(1<>YEND1; +} + + +// functions for pin YEND2 + +void YEND2_set(uint8_t value){ + YEND2_PORT &= ~(1<>YEND2; +} + + diff --git a/firmware/pins.c.sh b/firmware/pins.c.sh new file mode 100755 index 0000000..85b188a --- /dev/null +++ b/firmware/pins.c.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +cat < +#include +#include "pins.h" + + +EOF + +for i in $@ +do +cat <>$i; +} + + +EOF +done diff --git a/firmware/pins.h b/firmware/pins.h index 57d11e5..aae4cdd 100644 --- a/firmware/pins.h +++ b/firmware/pins.h @@ -1,67 +1,48 @@ - - - #define XEND1 7 -#define DDRXEND1 DDRD -#define PORTXEND1 PORTD -#define PINXEND1 PIND +#define XEND1_DDR DDRD +#define XEND1_PORT PORTD +#define XEND1_PIN PIND #define XEND2 0 -#define DDRXEND2 DDRB -#define PORTXEND2 PORTB -#define PINXEND2 PINB - +#define XEND2_DDR DDRB +#define XEND2_PORT PORTB +#define XEND2_PIN PINB #define YEND1 4 -#define DDRYEND1 DDRB -#define PORTYEND1 PORTB -#define PINYEND1 PINB +#define YEND1_DDR DDRB +#define YEND1_PORT PORTB +#define YEND1_PIN PINB #define YEND2 3 -#define DDRYEND2 DDRB -#define PORTYEND2 PORTB -#define PINYEND2 PINB - - - - - -#define SW0 4 -#define DDRSW0 DDRD -#define PORTSW0 PORTD -#define PINSW0 PIND - -#define SW1 5 -#define DDRSW1 DDRC -#define PORTSW1 PORTC -#define PINSW1 PINC - -#define SW2 4 -#define DDRSW2 DDRC -#define PORTSW2 PORTC -#define PINSW2 PINC - - - - -#define LED0 1 -#define DDRLED0 DDRB -#define PORTLED0 PORTB -#define PINLED0 PINB +#define YEND2_DDR DDRB +#define YEND2_PORT PORTB +#define YEND2_PIN PINB -#define LED1 0 -#define DDRLED1 DDRB -#define PORTLED1 PORTB -#define PINLED1 PINB -#define LED2 6 -#define DDRLED2 DDRD -#define PORTLED2 PORTD -#define PINLED2 PIND +void XEND1_set(uint8_t value); +void XEND1_as_output(void); +void XEND1_as_input(void); +void XEND1_as_pullup(void); +uint8_t XEND1_state(void); +void XEND2_set(uint8_t value); +void XEND2_as_output(void); +void XEND2_as_input(void); +void XEND2_as_pullup(void); +uint8_t XEND2_state(void); +void YEND1_set(uint8_t value); +void YEND1_as_output(void); +void YEND1_as_input(void); +void YEND1_as_pullup(void); +uint8_t YEND1_state(void); +void YEND2_set(uint8_t value); +void YEND2_as_output(void); +void YEND2_as_input(void); +void YEND2_as_pullup(void); +uint8_t YEND2_state(void); \ No newline at end of file diff --git a/firmware/pins.h.sh b/firmware/pins.h.sh new file mode 100755 index 0000000..93d779e --- /dev/null +++ b/firmware/pins.h.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +echo "# skeleton for pin definitions" +for i in $@ +do +cat <