summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-05-05 21:08:53 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-05-05 21:08:53 +0800
commit129fef686fff32e811b5f8394e881ca696e9b1b0 (patch)
tree2f1c61b02c935ecc60a43f97e5b73284b5a7e751 /main.c
parent56a6813170e570bc901ec1ceda0f9f563518334c (diff)
downloadavr-fpm-drivers-129fef686fff32e811b5f8394e881ca696e9b1b0.tar.gz
wip: r503.
Diffstat (limited to 'main.c')
-rw-r--r--main.c134
1 files changed, 72 insertions, 62 deletions
diff --git a/main.c b/main.c
index 2ea6165..d2cb4a9 100644
--- a/main.c
+++ b/main.c
@@ -3,89 +3,99 @@
*
*/
+#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"
-#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 uart_write(const char *s)
+{
+ for (; *s; s++) {
+ Soft_UART_send_byte(*s);
+ }
+ Soft_UART_send_byte('\r');
+ Soft_UART_send_byte('\n');
+}
-static inline void wdt_off(void)
+static inline void print_config(void)
{
- cli();
- wdt_reset();
- MCUSR &= ~(1 << WDRF);
- WDTCSR |= (1 << WDCE) | (1 << WDE);
- WDTCSR = 0x00;
+ 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");
+ }
}
int main(void)
{
- char s[30];
- uint8_t ismatch;
- uint16_t template_count;
-
- 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);
-
+ cli();
+ Soft_UART_init();
+ bit_set(DDRB,5);
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("FPM detected");
+ print_config();
}
-
+
while (1)
{
- 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)
-{
-}