Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <avr/interrupt.h>
- #include "fpm.h"
- #define F_CPU 16000000
- #define BAUD 57600
- #define BRC ((F_CPU/16/BAUD) - 1)
- #define UART_BUFFER_SIZE 512
- #include <util/delay.h>
- volatile uint8_t *UART_buffer;
- uint8_t available = 0;
- uint16_t buffer_size = 0;
- uint16_t UART_write_index = 0;
- uint16_t UART_read_index = 0;
- volatile uint32_t milliseconds = 0;
- void setup(void);
- uint16_t read_packet(uint8_t *bytes, uint16_t len);
- void send_packet(uint8_t *bytes, uint16_t len);
- uint16_t avail_packet(void);
- uint32_t millis(void);
- int main(void)
- {
- setup();
- FPM finger;
- FPM_System_Params params;
- finger.address = 0xFFFFFFFF;
- finger.password = 0;
- finger.avail_func = avail_packet;
- finger.read_func = read_packet;
- finger.write_func = send_packet;
- if (fpm_begin(&finger, 1000, 2000)) {
- fpm_read_params(&finger, ¶ms);
- printf("Found fingerprint sensor!rn");
- printf("Capacity: %drn", params.capacity);
- printf("Packet length: %drn", fpm_packet_lengths[params.packet_len]);
- }
- else {
- printf("Did not find fingerprint sensor :(rn");
- while (1);
- }
- }
- void setup(void)
- {
- UBRR0H = (BRC >> 8); //Shifts the BRC into the high BAUD register.
- UBRR0L = BRC; //Shifts the BRC into the low BAUD register.
- UCSR0B = (1 << TXEN0); //Sets the TX enable bit.
- UCSR0B = (1 << RXEN0); //Sets the RX enable bit.
- UCSR0C = (1 << UCSZ00) | (1 << UCSZ01); //Sets packet size.
- UART_buffer = malloc(512 * sizeof(uint8_t));
- }
- uint16_t read_packet(uint8_t *bytes, uint16_t len)
- {
- *bytes = UART_buffer;
- for(int i = 0; i < available; i++)
- UART_buffer[i] = '