diff options
-rw-r--r-- | include.mk | 18 | ||||
-rw-r--r-- | tools/reset_arduino.c | 8 |
2 files changed, 19 insertions, 7 deletions
@@ -52,6 +52,8 @@ ifeq ($(BOARD_TYPE),arduinoUno) UPLOAD_RATE := 57600 PROG_TYPE := stk500v1 AVRDUDE_PORT := /dev/ttyUSB0 + RESET_FUNC := ../tools/reset_arduino + RESET_PARAM = $(AVRDUDE_PORT) endif ifeq ($(BOARD_TYPE),arduino2009v2) MCU := atmega328p @@ -60,6 +62,8 @@ ifeq ($(BOARD_TYPE),arduino2009v2) UPLOAD_RATE := 57600 PROG_TYPE := stk500v1 AVRDUDE_PORT := /dev/ttyUSB0 + RESET_FUNC := ../tools/reset_arduino + RESET_PARAM = $(AVRDUDE_PORT) endif ifeq ($(BOARD_TYPE),arduino2009) MCU := atmega168 @@ -68,6 +72,8 @@ ifeq ($(BOARD_TYPE),arduino2009) UPLOAD_RATE := 19200 PROG_TYPE := stk500v1 AVRDUDE_PORT := /dev/ttyUSB0 + RESET_FUNC := ../tools/reset_arduino + RESET_PARAM = $(AVRDUDE_PORT) endif ifeq ($(BOARD_TYPE),arduino10000) MCU := atmega168 @@ -76,6 +82,8 @@ ifeq ($(BOARD_TYPE),arduino10000) UPLOAD_RATE := 19200 PROG_TYPE := stk500v1 AVRDUDE_PORT := /dev/ttyUSB0 + RESET_FUNC := ../tools/reset_arduino + RESET_PARAM = $(AVRDUDE_PORT) endif ifeq ($(BOARD_TYPE),arduinoNG) MCU := atmega8 @@ -198,10 +206,10 @@ run: $(call $(PROG)/$@,) reset: - @if [ -n "$(RESET_FUNC)" ]; then \ - if [ -x "$(RESET_FUNC)" ]; then \ - "$(RESET_FUNC)"; \ - else \ + @if [ -n "$(RESET_FUNC)" ]; then \ + if [ -x "$(RESET_FUNC)" ]; then \ + $(RESET_FUNC) $(RESET_PARAM); \ + else \ echo "WARNING: ignoring non-existing or non-executable reset script"; \ - fi \ + fi \ fi diff --git a/tools/reset_arduino.c b/tools/reset_arduino.c index 99ace88..53dbbf5 100644 --- a/tools/reset_arduino.c +++ b/tools/reset_arduino.c @@ -27,6 +27,8 @@ #include <time.h> #include <stdio.h> #include <sys/select.h> +#include <errno.h> +#include <string.h> #define STATE_OFF 0 #define STATE_ON 1 @@ -44,10 +46,12 @@ main(int argc, char* argv[]) { char* device = argc < 2 ? "/dev/ttyUSB0" : argv[1]; int fd = open(device, O_RDWR); - if (fd == 0) { - fprintf(stderr, "Could not open %s\n", device); + if (fd < 0) { + fprintf(stderr, "Could not open %s (%s)\n", device, strerror(errno)); return EXIT_FAILURE; } + + printf("reseting arduino at %s\n", device); setDTRState(fd, STATE_ON); struct timeval sleeptime = {0, 100000}; // 100ms |