Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * SPI pin numbers:
- * SCK 13 // Serial Clock.
- * MISO 12 // Master In Slave Out.
- * MOSI 11 // Master Out Slave In.
- * SS 10 // Slave Select
- *
- */
- // Include SPI (Serial Peripheral Interface) library. Does not support SPI Slave.
- #include <SPI.h>
- boolean ack = 0;
- #define ACK 2
- byte buffer =0;
- byte rx[10] ={0,0,0,0,0,0,0,0,0,0};
- bool SSlast = HIGH;
- byte clr =0;
- void stat_upd(byte dat, byte ric){
- Serial.println("---------------------------------------------");
- Serial.println("Sent:");
- Serial.println(dat, HEX);
- Serial.println("Received:"); //0x81 in teoria
- Serial.println(ric, HEX);
- return;
- }
- //Initialize SPI slave.
- void SlaveInit(void) {
- // Initialize SPI pins.
- pinMode(SCK, INPUT);
- pinMode(MOSI, INPUT);
- pinMode(MISO, OUTPUT);
- pinMode(SS, INPUT);
- pinMode (ACK,OUTPUT); ////////////////////////////////////////////////////// PIN 5 ACK
- SPI.begin();
- // Enable SPI as slave.
- SPCR = 0x6F;
- clr=SPSR;
- clr=SPDR;
- }
- // SPI Transfer.
- byte SPItransfer(byte value) {
- byte temp=0;
- //SPDR = value;
- temp =SPI.transfer(value);
- while(!(SPSR & (1<<SPIF)));
- // digitalWrite(ACK,LOW);
- // delay(1);
- // digitalWrite(ACK, HIGH);
- delay(10);
- return temp;
- }
- // The setup() function runs after reset.
- void setup() { ////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Initialize serial for troubleshooting.
- Serial.begin(9600);
- SlaveInit();
- Serial.println("MC Initialized");
- }
- // The loop function runs continuously after setup().
- void loop() { ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Slave Enabled?
- if (!digitalRead(SS)) {
- rx[0] = SPItransfer(0x00);
- //stat_upd(0x00,rx);
- rx[1] = SPItransfer(0x08);
- //stat_upd(0x08,rx);
- //Serial.println("It got here");
- //Serial.println("And here");
- rx[2] = SPItransfer(0x5a);
- //serial.println("it just doesn't want to transfer");
- //stat_upd(0x5a,rx);
- rx[3] = SPItransfer(0x5d);
- //stat_upd(0x5d,rx);
- rx[4] = SPItransfer(0x5c);
- //stat_upd(0x5c,rx);
- rx[5] = SPItransfer(0x5d);
- //stat_upd(0x5d,rx);
- rx[6] = SPItransfer(0x04);
- //stat_upd(0x04,rx);
- rx[7] = SPItransfer(0x00);
- //stat_upd(0x00,rx);
- rx[8] = SPItransfer(0x00);
- //stat_upd(0x00,rx);
- rx[9] = SPItransfer(0x80);
- //stat_upd(0x80,rx);
- Serial.println("Got to the end");
- for (int i=0;i<10;i++){
- Serial.print(rx[i], HEX);
- Serial.print(", ");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement