summaryrefslogtreecommitdiff
path: root/usb-i2c-sl018
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2013-02-07 01:12:45 +0000
committerChristian Pointner <equinox@spreadspace.org>2013-02-07 01:12:45 +0000
commit1e2644995bff6ba50ba96cf2aabbddad4eb9144b (patch)
tree6f67b7013d6c995bf1013dd3e287c9bcaca3d756 /usb-i2c-sl018
parentfixed state machine (diff)
added manual switch
reentrant of stepper removed git-svn-id: https://svn.spreadspace.org/avr/trunk@164 aa12f405-d877-488e-9caf-2d797e2a1cc7
Diffstat (limited to 'usb-i2c-sl018')
-rw-r--r--usb-i2c-sl018/Makefile2
-rw-r--r--usb-i2c-sl018/limits.c2
-rw-r--r--usb-i2c-sl018/manual.c47
-rw-r--r--usb-i2c-sl018/manual.h30
-rw-r--r--usb-i2c-sl018/stepper.c3
-rw-r--r--usb-i2c-sl018/tuer-rfid.c7
6 files changed, 84 insertions, 7 deletions
diff --git a/usb-i2c-sl018/Makefile b/usb-i2c-sl018/Makefile
index 890777e..6619f41 100644
--- a/usb-i2c-sl018/Makefile
+++ b/usb-i2c-sl018/Makefile
@@ -23,7 +23,7 @@
NAME := tuer-rfid
BOARD_TYPE := teensy2
-OBJ := $(NAME).o heartbeat.o stepper.o ledmatrix.o sl018.o keystore.o statemachine.o eventqueue.o limits.o
+OBJ := $(NAME).o heartbeat.o stepper.o ledmatrix.o sl018.o keystore.o statemachine.o eventqueue.o limits.o manual.o
LIBS := util led lufa-descriptor-usbserial anyio
EXTERNAL_LIBS := lufa
diff --git a/usb-i2c-sl018/limits.c b/usb-i2c-sl018/limits.c
index 8b75024..b65fe28 100644
--- a/usb-i2c-sl018/limits.c
+++ b/usb-i2c-sl018/limits.c
@@ -21,8 +21,8 @@
* along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <avr/io.h>
#include "limits.h"
-#include <LUFA/Drivers/Misc/RingBuffer.h>
#define LIMITS_PIN PINC
#define LIMITS_PORT PORTC
diff --git a/usb-i2c-sl018/manual.c b/usb-i2c-sl018/manual.c
new file mode 100644
index 0000000..3333a80
--- /dev/null
+++ b/usb-i2c-sl018/manual.c
@@ -0,0 +1,47 @@
+/*
+ * spreadspace avr utils
+ *
+ *
+ * Copyright (C) 2013 Christian Pointner <equinox@spreadspace.org>
+ * Othmar Gsenger <otti@wirdorange.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 <avr/io.h>
+#include "manual.h"
+#include "eventqueue.h"
+
+#define MANUAL_PIN PINF
+#define MANUAL_PORT PORTF
+#define MANUAL_DDR DDRF
+#define MANUAL_BIT 0
+
+void init_manual(void)
+{
+ MANUAL_DDR = MANUAL_DDR & ~(1<<MANUAL_BIT);
+ MANUAL_PORT |= (1<<MANUAL_BIT);
+}
+
+void manual_task(void)
+{
+ static uint8_t last_state = 0;
+ uint8_t state = MANUAL_PIN & (1<<MANUAL_BIT);
+ if(state && state != last_state)
+ eventqueue_push(btn_toggle);
+
+ last_state = state;
+}
diff --git a/usb-i2c-sl018/manual.h b/usb-i2c-sl018/manual.h
new file mode 100644
index 0000000..2d0f446
--- /dev/null
+++ b/usb-i2c-sl018/manual.h
@@ -0,0 +1,30 @@
+/*
+ * spreadspace avr utils
+ *
+ *
+ * Copyright (C) 2013 Christian Pointner <equinox@spreadspace.org>
+ * Othmar Gsenger <otti@wirdorange.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/>.
+ */
+
+#ifndef R3TUER_manual_h_INCLUDED
+#define R3TUER_manual_h_INCLUDED
+
+void init_manual(void);
+void manual_task(void);
+
+#endif
diff --git a/usb-i2c-sl018/stepper.c b/usb-i2c-sl018/stepper.c
index d555889..b4390c3 100644
--- a/usb-i2c-sl018/stepper.c
+++ b/usb-i2c-sl018/stepper.c
@@ -97,9 +97,6 @@ void init_stepper(void)
uint8_t start_stepper(stepper_direction_t direction)
{
- if(TCCR1B)
- return 0;
-
step_cnt = 0;
step_direction = direction;
STEPPER_PORT |= 1<<STEPPER_ENABLE_BIT;
diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c
index 5b56650..3e5b035 100644
--- a/usb-i2c-sl018/tuer-rfid.c
+++ b/usb-i2c-sl018/tuer-rfid.c
@@ -42,8 +42,8 @@
#include "keystore.h"
#include "statemachine.h"
#include "eventqueue.h"
-
#include "limits.h"
+#include "manual.h"
void handle_stdio(uint8_t cmd)
{
@@ -122,14 +122,17 @@ int main(void)
init_ledmatrix();
init_eventqueue();
init_limits();
+ init_manual();
sei();
sl018_reset();
for(;;) {
- anyio_task();
statemachine_task();
+ anyio_task();
+ manual_task();
+
int16_t bytes_received = anyio_bytes_received();
if(bytes_received > 0)
handle_stdio(fgetc(stdin));