Hello everyone. I am tired asking and since few weeks there was no reply. Can Anyone spend your valuable time looking into this.
I need to transfer 24-bit data of about 79-registers using spi protocol. I have configured Arduino Due as Master and Uno as slave. Instead of actual slave device(LMX2595) I am making use of uno. I would like to monitor the data whch is transmitted n the serial monitor window at slave side. But Unfortunately I don't get the data in sequence. Below are the code attached for Master and Slave
Master
#include <SPI.h>
SPISettings mySettting(4000000, MSBFIRST, SPI_MODE0);
const uint8_t ss = 10;
void setup() {
pinMode(ss, OUTPUT);
SPI.begin();
SPI.beginTransaction(mySettting);
digitalWrite(ss, LOW);
SPI.transfer(0x1C);
SPI.transfer(0x25);
SPI.transfer(0x00);
delay(100);
digitalWrite(ss, HIGH);
digitalWrite(ss, LOW);
SPI.transfer(0x08);
SPI.transfer(0x08);
SPI.transfer(0x01);
delay(100);
digitalWrite(ss, HIGH);
digitalWrite(ss, LOW);
SPI.transfer(0x00);
SPI.transfer(0x05);
SPI.transfer(0x02);
delay(100);
digitalWrite(ss, HIGH);
digitalWrite(ss, LOW);
SPI.transfer(0x42);
SPI.transfer(0x06);
SPI.transfer(0x03);
delay(100);
digitalWrite(ss, HIGH);
digitalWrite(ss, LOW);
SPI.transfer(0x43);
SPI.transfer(0x0A);
SPI.transfer(0x04);
delay(100);
digitalWrite(ss, HIGH);
SPI.endTransaction();
}
void loop() {
}
Slave
#include<SPI.h>
volatile boolean received;
volatile byte receivedData;
ISR (SPI_STC_vect) //Inerrrput routine function
{
receivedData = SPDR; // Get the received data from SPDR register
received = true; // Sets received as True
}
void setup()
{
Serial.begin(4000000);
pinMode(MISO,OUTPUT); //Sets MISO as OUTPUT
SPCR |= _BV(SPE); //Turn on SPI in Slave Mode
received = false;
SPI.attachInterrupt(); //Activate SPI Interuupt
}
void loop()
{
if(received) {
SPDR = receivedData; // send back the received data
received = false;
Serial.print(receivedData, HEX);
}
}
Any help will be greatly appreciated. Thanks in Advance