summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2012-05-20 16:03:08 +0000
committerChristian Pointner <equinox@spreadspace.org>2012-05-20 16:03:08 +0000
commitc5700a04ea85c045fbd21709a5acbad4864ba369 (patch)
treee7db8e779e25cf896c9a2f02f4d7cedace322937 /tools
parentadded support for arduino2009v2, arduino10000, arduinoUno (diff)
added reset program for arduino 10000 and newer
git-svn-id: https://svn.spreadspace.org/avr/trunk@21 aa12f405-d877-488e-9caf-2d797e2a1cc7
Diffstat (limited to 'tools')
-rw-r--r--tools/Makefile36
-rw-r--r--tools/reset_arduino.c63
2 files changed, 99 insertions, 0 deletions
diff --git a/tools/Makefile b/tools/Makefile
new file mode 100644
index 0000000..5887bd4
--- /dev/null
+++ b/tools/Makefile
@@ -0,0 +1,36 @@
+##
+## spreadspace avr utils
+##
+##
+## Copyright (C) 2012 Christian Pointner <equinox@spreadspace.org>
+##
+## This file is part of spreadspace avr utils.
+##
+## spreadspace avr utils is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## any later version.
+##
+## spreadspace avr utils is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
+##
+
+TARGETS=reset_arduino
+
+all: $(TARGETS)
+
+reset_arduino: reset_arduino.c
+ $(CC) -o $@ $<
+
+.PHONY: clean
+
+clean:
+ rm -f *.o
+ rm -f *.d
+ rm -f *.d.*
+ rm -f $(TARGETS)
diff --git a/tools/reset_arduino.c b/tools/reset_arduino.c
new file mode 100644
index 0000000..99ace88
--- /dev/null
+++ b/tools/reset_arduino.c
@@ -0,0 +1,63 @@
+/*
+ * spreadspace avr utils
+ *
+ *
+ * Copyright (C) 2012 Christian Pointner <equinox@spreadspace.org>
+ *
+ * This file is part of spreadspace avr utils.
+ *
+ * spreadspace avr utils is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * spreadspace avr utils is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdlib.h>
+#include <termios.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <time.h>
+#include <stdio.h>
+#include <sys/select.h>
+
+#define STATE_OFF 0
+#define STATE_ON 1
+
+void setDTRState (int fd, int state) {
+ int flags;
+
+ ioctl(fd, TIOCMGET, &flags);
+ flags = (state == STATE_ON ? flags | TIOCM_DTR : flags & ~TIOCM_DTR);
+ ioctl(fd, TIOCMSET, &flags);
+}
+
+int
+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);
+ return EXIT_FAILURE;
+ }
+
+ setDTRState(fd, STATE_ON);
+ struct timeval sleeptime = {0, 100000}; // 100ms
+ select(0, NULL, NULL, NULL, &sleeptime);
+ setDTRState(fd, STATE_OFF);
+ sleeptime.tv_sec = 0;
+ sleeptime.tv_usec = 100000;
+ select(0, NULL, NULL, NULL, &sleeptime);
+ setDTRState(fd, STATE_ON);
+ close(fd);
+
+ return EXIT_SUCCESS;
+}