Hi!
I'm using two arduino uno boards for SPI communication, one acting as a master and other to be a slave. My aim is to transmit (via MOSI line) 100 bits in binary format from master device to slave device, and receive back the same data at the master side (via MISO line), but unable to perform the same. I'm a beginner to arduino programming, can anyone help me out with the code? Here is a copy attached below.
Code for Master
#include <SPI.h>
void setup(void)
{
Serial.begin(9600);
digitalWrite(SS, HIGH);
SPI.begin();
}
void loop()
{
SPI.beginTransaction(SPISettings(7000000, MSBFIRST, SPI_MODE0));
byte mastersend[13] = {B11010011,B10110010,B10011101,B10101101,B10111001,B10110101,B10101101,B10110010,B10110010,B10110010,B10011101,B10011101,B10011101};
byte masterrecev;
unsigned int i;
digitalWrite(SS, LOW);
for(i = 0; i <= 13; i++)
{
masterrecev = SPI.transfer(mastersend[i]);
}
Serial.println(mastersend[i], BIN);
delay(2000);
Serial.println(masterrecev, BIN);
delay(2000);
digitalWrite(SS, HIGH);
delay(2000);
}
Code for Slave
#include <SPI.h>
volatile boolean datarecev;
volatile int slaverecev;
volatile int slavesend;
void setup (void)
{
Serial.begin (9600);
SPI.beginTransaction(SPISettings(7000000, MSBFIRST, SPI_MODE0));
pinMode (MISO, OUTPUT);
SPCR |= _BV(SPE);
datarecev = false;
SPI.attachInterrupt();
}
ISR (SPI_STC_vect)
{
slaverecev = SPDR;
datarecev = true;
}
void loop (void)
{
if (datarecev)
{
Serial.println(slaverecev, BIN);
slavesend = slaverecev;
SPDR = slavesend;
delay(2000);
}
}
Thanks in advance!