//Peter Greczner - pag42@cornell.edu //Matthew Rosoff - msr53@cornell.edu #define wr_adcref 0x76 #define wr_drivc 0x75 #define rd_sensor 0x11 #define rd_spidata 0x20 #define rd_spistat 0x21 #define rd_regs 0x50 #define wr_sensm 0x77 #define wr_xsense 0x7F #define wr_ysense 0x81 #define wr_xshift 0x82 #define wr_yshift 0x83 #define wr_xreads 0x84 #define wr_fifo_th 0x7C #define dummy_byte 0xFF #define dummy_byte_n 0x00 void initSPI(void){ unsigned char i; DDRB=0xB0;//MOSI,SCK,SS' are output PORTB.4=0;//Set CS'=0 i=SPSR; i=SPDR;//This resets the SPI regs PORTB.4=0;//Set CS'=0 PORTA.7=0; //SPI commands to set up the fingerprint readers correct parameters SPDR=wr_drivc; while(!(SPSR&0x80)); SPDR=127; while(!(SPSR&0x80)); SPDR=wr_adcref; while(!(SPSR&0x80)); SPDR=2; while(!(SPSR&0x80)); SPDR=wr_sensm; while(!(SPSR&0x80)); SPDR=0; while(!(SPSR&0x80)); SPDR=wr_xshift; while(!(SPSR&0x80)); SPDR=18; while(!(SPSR&0x80)); SPDR=wr_yshift; while(!(SPSR&0x80)); SPDR=199; while(!(SPSR&0x80)); SPDR=wr_fifo_th; while(!(SPSR&0x80)); SPDR=0; while(!(SPSR&0x80)); SPDR=wr_xreads; while(!(SPSR&0x80)); SPDR=1; //PORTB.4=1;//Set CS'=0 //PORTA.7=1; return; }