diff options
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 152 |
1 files changed, 57 insertions, 95 deletions
@@ -3,84 +3,31 @@ * */ -#define bit_clr(a,b) ((a) &=~(1<<(b))) -#define bit_set(a,b) ((a) |= (1<<(b))) -#define bit_tst(a,b) ((a) & (1<<(b))) -#define bit_change(a,b) ((a) ^= (1<<(b))) - #include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h> +#include <avr/sleep.h> +#include <avr/wdt.h> #include <util/delay.h> -#define Soft_UART_TX_PORT PORTD -#define Soft_UART_TX_DDR DDRD -#define Soft_UART_TX_PIN 3 -#define Soft_UART_Baud 9600 -#include "Soft_UART_Timer1.h" - #include "fpm.h" -static inline void uart_write(const char *s) -{ - for (; *s; s++) { - Soft_UART_send_byte(*s); - } - Soft_UART_send_byte('\r'); - Soft_UART_send_byte('\n'); -} +#define TOUCH_PIN PB0 +#define TOUCH_DDR DDRB +#define TOUCH_PORT PORTB +#define TOUCH_PCIE PCIE0 +#define TOUCH_PCINT PCINT0 +#define TOUCH_PCMSK PCMSK0 +#define TOUCH_PCINTVEC PCINT0_vect -static inline void print_config(void) +static inline void wdt_off(void) { - const int SLEN = 25; - - char s[SLEN]; - struct fpm_cfg cfg; - - if (fpm_getcfg(&cfg)) { - uart_write("FPM config:"); - snprintf(s, SLEN, "\tstatus: 0x%02X", cfg.status); - uart_write(s); - snprintf(s, SLEN, "\tsysid: 0x%02X", cfg.sysid); - uart_write(s); - snprintf(s, SLEN, "\tcap: %d", cfg.cap); - uart_write(s); - snprintf(s, SLEN, "\tsec: %d", cfg.sec_level); - uart_write(s); - snprintf(s, SLEN, "\taddr: 0x%02X%02X%02X%02X", cfg.addr[0], - cfg.addr[1], cfg.addr[2], cfg.addr[3]); - uart_write(s); - snprintf(s, SLEN, "\tpkt size: %d", cfg.pkt_size); - uart_write(s); - - if (cfg.baud == 1) - uart_write("\tbaud: 9600"); - else if (cfg.baud == 2) - uart_write("\tbaud: 19200"); - else if (cfg.baud == 3) - uart_write("\tbaud: 28800"); - else if (cfg.baud == 4) - uart_write("\tbaud: 38400"); - else if (cfg.baud == 5) - uart_write("\tbaud: 48000"); - else if (cfg.baud == 6) - uart_write("\tbaud: 57600"); - else if (cfg.baud == 7) - uart_write("\tbaud: 67200"); - else if (cfg.baud == 8) - uart_write("\tbaud: 76800"); - else if (cfg.baud == 9) - uart_write("\tbaud: 86400"); - else if (cfg.baud == 10) - uart_write("\tbaud: 96000"); - else if (cfg.baud == 11) - uart_write("\tbaud: 105600"); - else if (cfg.baud == 12) - uart_write("\tbaud: 115200"); - } else { - uart_write("Valid FPM config not found"); - } + cli(); + wdt_reset(); + MCUSR &= ~(1 << WDRF); + WDTCSR |= (1 << WDCE) | (1 << WDE); + WDTCSR = 0x00; } int main(void) @@ -89,41 +36,56 @@ int main(void) uint8_t ismatch; uint16_t template_count; - cli(); - Soft_UART_init(); - bit_set(DDRB,5); + wdt_off(); + + //cli(); + //Soft_UART_init(); + //bit_set(DDRB,5); + + TOUCH_DDR &= ~(1 << TOUCH_PIN); + PCICR |= (1 << TOUCH_PCIE); + TOUCH_PCMSK |= (1 << TOUCH_PCINT); + + DDRB |= (1 << PB5); + PORTB &= ~(1 << PB5); + sei(); if (fpm_init()) { - print_config(); - template_count = fpm_getcount(); - snprintf(s, 30, "Template count: %d", template_count); - uart_write(s); - - if (template_count == 0) { - uart_write("Enroll fingerprint"); - if (fpm_enroll()) { - uart_write("Enrolled fingerprint"); - } else { - uart_write("Enrollment error"); - } - - template_count = fpm_getcount(); - snprintf(s, 30, "New template count: %d", template_count); - uart_write(s); - } - - uart_write("Authentcating..."); - if (fpm_match()) - uart_write("Fingerprint match"); - else - uart_write("No match"); + //print_config(); + //template_count = fpm_getcount(); + //snprintf(s, 30, "Template count: %d", template_count); + //uart_write(s); + + //if (template_count == 0) { + // uart_write("Enroll fingerprint"); + // if (fpm_enroll()) { + // uart_write("Enrolled fingerprint"); + // } else { + // uart_write("Enrollment error"); + // } + + // template_count = fpm_getcount(); + // snprintf(s, 30, "New template count: %d", template_count); + // uart_write(s); + //} } while (1) { - _delay_ms(1000); + set_sleep_mode(SLEEP_MODE_PWR_DOWN); + sleep_mode(); + + if (fpm_match()) { + PORTB |= (1 << PB5); + _delay_ms(500); + PORTB &= ~(1 << PB5); + } } return 0; } + +ISR(TOUCH_PCINTVEC) +{ +} |
