summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2013-02-07 02:15:37 +0000
committerChristian Pointner <equinox@spreadspace.org>2013-02-07 02:15:37 +0000
commitc9daddb636b3c03b5c53da2ef8e11b927927dd04 (patch)
tree3833c802143d0515871fb41146b8317533987f44
parentremoved rfid reader led (delay) (diff)
lowpass filterd manual switch
git-svn-id: https://svn.spreadspace.org/avr/trunk@167 aa12f405-d877-488e-9caf-2d797e2a1cc7
-rw-r--r--usb-i2c-sl018/heartbeat.c8
-rw-r--r--usb-i2c-sl018/manual.c17
-rw-r--r--usb-i2c-sl018/tuer-rfid.c14
3 files changed, 29 insertions, 10 deletions
diff --git a/usb-i2c-sl018/heartbeat.c b/usb-i2c-sl018/heartbeat.c
index fd7f11a..47caffc 100644
--- a/usb-i2c-sl018/heartbeat.c
+++ b/usb-i2c-sl018/heartbeat.c
@@ -32,6 +32,10 @@
uint8_t heartbeat_cnt = 0;
uint8_t heartbeat_flag;
+#define FASTBEAT_PORT PORTD
+#define FASTBEAT_DDR DDRD
+#define FASTBEAT_BIT 5
+
// while running this gets called every ~10ms
ISR(TIMER0_COMPA_vect)
{
@@ -55,10 +59,14 @@ void init_heartbeat(void)
OCR0A = 155; // (1+155)*1024 = 159744 -> ~10 ms @ 16 MHz
TCNT2 = 0;
TIMSK0 = 1<<OCIE0A;
+
+ FASTBEAT_DDR |= 1<<FASTBEAT_BIT;
}
void heartbeat_task(void)
{
+ FASTBEAT_PORT ^= 1<<FASTBEAT_BIT;
+
if(heartbeat_flag)
led_on();
else
diff --git a/usb-i2c-sl018/manual.c b/usb-i2c-sl018/manual.c
index 3333a80..36f1a6c 100644
--- a/usb-i2c-sl018/manual.c
+++ b/usb-i2c-sl018/manual.c
@@ -30,6 +30,8 @@
#define MANUAL_DDR DDRF
#define MANUAL_BIT 0
+#define MANUAL_LP_MAX 255
+
void init_manual(void)
{
MANUAL_DDR = MANUAL_DDR & ~(1<<MANUAL_BIT);
@@ -39,9 +41,18 @@ void init_manual(void)
void manual_task(void)
{
static uint8_t last_state = 0;
+ static uint8_t lp_cnt = 0;
+
uint8_t state = MANUAL_PIN & (1<<MANUAL_BIT);
- if(state && state != last_state)
- eventqueue_push(btn_toggle);
+ if(state != last_state)
+ lp_cnt++;
+ else
+ lp_cnt += lp_cnt ? -1 : 0;
- last_state = state;
+ if(lp_cnt >= MANUAL_LP_MAX) {
+ if(state)
+ eventqueue_push(btn_toggle);
+ last_state = state;
+ lp_cnt = 0;
+ }
}
diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c
index 008d82c..8973994 100644
--- a/usb-i2c-sl018/tuer-rfid.c
+++ b/usb-i2c-sl018/tuer-rfid.c
@@ -54,13 +54,13 @@ void handle_stdio(uint8_t cmd)
if(!sl018_reset())
printf("ok\n\r");
break;
- case 'f': //get cardreader firmware version
- do {
- unsigned char * firmware_str = sl018_get_firmware_version();
- if(firmware_str)
- printf("%s\n\r",firmware_str);
- } while(0);
- break;
+ case 'f': {
+ unsigned char * firmware_str = sl018_get_firmware_version();
+ if(firmware_str)
+ printf("%s\n\r",firmware_str);
+
+ break;
+ }
case 'e': //flash eeprom
flash_keystore_from_stdio();
break;