Guest User

Untitled

a guest
Jul 19th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. // configuration and LCD libraries
  2. ... ( LCD works properly )
  3. ...
  4.  
  5. // RFID MFRC522 pins
  6. #define rf_ss LATAbits.LA0
  7. #define rf_sck LATAbits.LA1
  8. #define rf_mosi LATAbits.LA2
  9. #define rf_rst LATAbits.LA3
  10. #define rf_miso PORTAbits.RA5 // input
  11.  
  12. // A custom function to send data to SPI bus
  13. unsigned char SPI_WB( unsigned char d ) {
  14. __delay_us( 500 );
  15. unsigned char r = 0; // to get a MISO values
  16. for ( unsigned char i = 0; i < 8; i++ ) {
  17. rf_mosi = ( d >> i ) & 0x01;
  18. __delay_us( 100 );
  19. rf_sck = 1;
  20. __delay_us( 100 );
  21. r = ( ( rf_miso << i ) | r );
  22. __delay_us( 100 );
  23. rf_sck = 0;
  24. __delay_us( 1000 );
  25. }
  26. __delay_us( 100 );
  27. return r;
  28. }
  29.  
  30. // A custom function to write data to register
  31. void SPI_WR( unsigned char a, unsigned char v ) {
  32. rf_ss = 0;
  33. SPI_WB( ( a << 1 ) & 0x7E ); // Address format: 0XXXXXX0
  34. SPI_WB( v );
  35. rf_ss = 1;
  36. }
  37.  
  38. unsigned char SPI_RR( unsigned char a ) {
  39. rf_ss = 0;
  40. SPI_WB( ( ( a << 1 ) & 0x7E ) | 0x80 );
  41. rf_ss = 1;
  42. return SPI_WB( 0x00 );
  43. }
  44.  
  45. #define MFRC522_CR 0x01 // Command register
  46. #define MFRC522_SR 0x0F // MFRC522 Soft Reset command
  47. #define MFRC522_V 0x37 // MFRC522 Version register
  48.  
  49.  
  50. void main( ) {
  51. rf_ss = 1;
  52. __delay_us( 1000 );
  53. SPI_WR( CommandReg, MFRC522_SR ); // A result of logic picture is below
  54. unsigned char str;
  55. sprintf( str, "Version: 0x%x", SPI_RR( MFRC522_V ) ); LCD_W( str ); // Unfortunately returns "Version: 0x0"
  56. while( 1 ) { }
  57. }
  58. ...
Add Comment
Please, Sign In to add comment