diff options
-rw-r--r-- | usb-i2c-sl018/heartbeat.c | 8 | ||||
-rw-r--r-- | usb-i2c-sl018/manual.c | 17 | ||||
-rw-r--r-- | usb-i2c-sl018/tuer-rfid.c | 14 |
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; |