Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. /*
  2.  
  3.  
  4. * SPI pin numbers:
  5. * SCK 13 // Serial Clock.
  6. * MISO 12 // Master In Slave Out.
  7. * MOSI 11 // Master Out Slave In.
  8. * SS 10 // Slave Select
  9. *
  10.  
  11. */
  12. // Include SPI (Serial Peripheral Interface) library. Does not support SPI Slave.
  13. #include <SPI.h>
  14. boolean ack = 0;
  15. #define ACK 2
  16.  
  17. byte buffer =0;
  18. byte rx[10] ={0,0,0,0,0,0,0,0,0,0};
  19.  
  20. bool SSlast = HIGH;
  21. byte clr =0;
  22.  
  23. void stat_upd(byte dat, byte ric){
  24. Serial.println("---------------------------------------------");
  25. Serial.println("Sent:");
  26. Serial.println(dat, HEX);
  27.  
  28. Serial.println("Received:"); //0x81 in teoria
  29. Serial.println(ric, HEX);
  30. return;
  31. }
  32. //Initialize SPI slave.
  33. void SlaveInit(void) {
  34. // Initialize SPI pins.
  35. pinMode(SCK, INPUT);
  36. pinMode(MOSI, INPUT);
  37. pinMode(MISO, OUTPUT);
  38. pinMode(SS, INPUT);
  39. pinMode (ACK,OUTPUT); ////////////////////////////////////////////////////// PIN 5 ACK
  40. SPI.begin();
  41. // Enable SPI as slave.
  42.  
  43. SPCR = 0x6F;
  44. clr=SPSR;
  45. clr=SPDR;
  46.  
  47. }
  48. // SPI Transfer.
  49. byte SPItransfer(byte value) {
  50. byte temp=0;
  51. //SPDR = value;
  52. temp =SPI.transfer(value);
  53. while(!(SPSR & (1<<SPIF)));
  54.  
  55.  
  56. // digitalWrite(ACK,LOW);
  57. // delay(1);
  58. // digitalWrite(ACK, HIGH);
  59.  
  60. delay(10);
  61. return temp;
  62. }
  63. // The setup() function runs after reset.
  64. void setup() { ////////////////////////////////////////////////////////////////////////////////////////////////////////
  65. // Initialize serial for troubleshooting.
  66. Serial.begin(9600);
  67. SlaveInit();
  68. Serial.println("MC Initialized");
  69.  
  70. }
  71. // The loop function runs continuously after setup().
  72. void loop() { ///////////////////////////////////////////////////////////////////////////////////////////////////
  73. // Slave Enabled?
  74. if (!digitalRead(SS)) {
  75.  
  76.  
  77.  
  78. rx[0] = SPItransfer(0x00);
  79. //stat_upd(0x00,rx);
  80. rx[1] = SPItransfer(0x08);
  81.  
  82. //stat_upd(0x08,rx);
  83. //Serial.println("It got here");
  84. //Serial.println("And here");
  85.  
  86. rx[2] = SPItransfer(0x5a);
  87. //serial.println("it just doesn't want to transfer");
  88. //stat_upd(0x5a,rx);
  89. rx[3] = SPItransfer(0x5d);
  90. //stat_upd(0x5d,rx);
  91. rx[4] = SPItransfer(0x5c);
  92. //stat_upd(0x5c,rx);
  93. rx[5] = SPItransfer(0x5d);
  94. //stat_upd(0x5d,rx);
  95. rx[6] = SPItransfer(0x04);
  96. //stat_upd(0x04,rx);
  97. rx[7] = SPItransfer(0x00);
  98. //stat_upd(0x00,rx);
  99. rx[8] = SPItransfer(0x00);
  100. //stat_upd(0x00,rx);
  101. rx[9] = SPItransfer(0x80);
  102. //stat_upd(0x80,rx);
  103. Serial.println("Got to the end");
  104.  
  105. for (int i=0;i<10;i++){
  106. Serial.print(rx[i], HEX);
  107. Serial.print(", ");
  108. }
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116. }
  117.  
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement