Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // configuration and LCD libraries
- ... ( LCD works properly )
- ...
- // RFID MFRC522 pins
- #define rf_ss LATAbits.LA0
- #define rf_sck LATAbits.LA1
- #define rf_mosi LATAbits.LA2
- #define rf_rst LATAbits.LA3
- #define rf_miso PORTAbits.RA5 // input
- // A custom function to send data to SPI bus
- unsigned char SPI_WB( unsigned char d ) {
- __delay_us( 500 );
- unsigned char r = 0; // to get a MISO values
- for ( unsigned char i = 0; i < 8; i++ ) {
- rf_mosi = ( d >> i ) & 0x01;
- __delay_us( 100 );
- rf_sck = 1;
- __delay_us( 100 );
- r = ( ( rf_miso << i ) | r );
- __delay_us( 100 );
- rf_sck = 0;
- __delay_us( 1000 );
- }
- __delay_us( 100 );
- return r;
- }
- // A custom function to write data to register
- void SPI_WR( unsigned char a, unsigned char v ) {
- rf_ss = 0;
- SPI_WB( ( a << 1 ) & 0x7E ); // Address format: 0XXXXXX0
- SPI_WB( v );
- rf_ss = 1;
- }
- unsigned char SPI_RR( unsigned char a ) {
- rf_ss = 0;
- SPI_WB( ( ( a << 1 ) & 0x7E ) | 0x80 );
- rf_ss = 1;
- return SPI_WB( 0x00 );
- }
- #define MFRC522_CR 0x01 // Command register
- #define MFRC522_SR 0x0F // MFRC522 Soft Reset command
- #define MFRC522_V 0x37 // MFRC522 Version register
- void main( ) {
- rf_ss = 1;
- __delay_us( 1000 );
- SPI_WR( CommandReg, MFRC522_SR ); // A result of logic picture is below
- unsigned char str;
- sprintf( str, "Version: 0x%x", SPI_RR( MFRC522_V ) ); LCD_W( str ); // Unfortunately returns "Version: 0x0"
- while( 1 ) { }
- }
- ...
Add Comment
Please, Sign In to add comment