SPI interface with other board_AVR_ESK1100 or among Arduino itself

MarkT:
I think your WriteByte routine is failing to complete the process - it reads SPSR but doesn't read SPDR once there's a byte so the hardware never clears ready for the next byte? To quote the datasheet:

the SPIF bit is cleared by first reading the SPI Status Register with SPIF set, then accessing the SPI Data Register (SPDR)

How about rewriting WriteByte thus:

byte WriteByte (byte value) {

SPDR = value ;
  while (!(SPSR & (1<<SPIF)))
  {}
  return SPDR ;
}



(So easy to miss a semicolon after a while, use a blank block instead, harder to misread)

Sir,

I have tried with your suggestion also but it is not able to read from other board which is just keep on pumping the data and giving 0 as output, I have connected MOSI,MISO,CS,SCK wires across the two Arduino boards.
Tried code.

#include <SPI.h>// include the SPI library:

const int spidata = 10;//Pin 11 is data(MOSI) and pin 13 SCK ,set pin 10(SS) as the slave select for the digital pot:
int mm =0;
//int ReadByte();

void setup() {
  
  pinMode (spidata, OUTPUT);// set the spi_data_pin as an output:
  SPI.setDataMode(SPI_MODE3);
  SPI.setClockDivider(SPI_CLOCK_DIV8);
  SPCR = B00000000;
  SPCR = (1<<SPE);
  
  SPI.begin();// initialize SPI:
  Serial.begin(4800);
   
}

byte ReadByte(void) {
  while(!(SPSR & (1<<SPIF))) 
  return SPDR;
}


// int ReadByte(int value) {
//  SPDR = value;
//  while((!SPSR & (1<<SPIF))) 
//  return 0;
//}
//byte WriteByte (byte value) {
//  SPDR = value ;
//  while (!(SPSR & (1<<SPIF)))
//  {}
//  return SPDR ;
//}

void loop() {
      int arry[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
      int rxData;
      digitalWrite(spidata,LOW);
      rxData = ReadByte();
      Serial.println("Read value ");
       Serial.println(rxData, DEC);
       Serial.println("Newline");
    //if (rxData == 59) {
      Serial.println("If condition-1 Matches and recieves 0x3B from SPI then:");
      Serial.println("I am Sending 1st data of 15 data on SPI");
      
       
       
      Serial.println(arry[0], BIN);
      SPI.transfer(arry[0]); //  send in the address and value via SPI:
      delay(1500);
 
      Serial.println("I am Sending 2nd data of 15 data on SPI");
      Serial.println(arry[1], BIN);
      SPI.transfer(arry[1]);
      delay(1500); 

      Serial.println("I am Sending 3rd data of 15 data on SPI");
      Serial.println(arry[2],BIN);
      SPI.transfer(arry[2]); 
      delay(1500);
     
      Serial.println("I am Sending 4th data of 15 data on SPI");
      Serial.println(arry[3], BIN);
      SPI.transfer(arry[3]);
      delay(1500); 
     
      Serial.println("I am Sending 5th data of 15 data on SPI");
      Serial.println(arry[4], BIN);
      SPI.transfer(arry[4]); 
      delay(1500);

      Serial.println("I am Sending 6th data of 15 data on SPI");
      Serial.println(arry[5], BIN);
      SPI.transfer(arry[5]); 
      delay(1500);
 
      Serial.println("I am Sending 7th data of 15 data on SPI");
      Serial.println(arry[6], BIN);
      SPI.transfer(arry[6]); 
      delay(1500);

      Serial.println("I am Sending 8th data of 15 data on SPI");
      Serial.println(arry[7], BIN);
      SPI.transfer(arry[7]);

      Serial.println("I am Sending 9th data of 15 data on SPI");
      Serial.println(arry[8], BIN);
      SPI.transfer(arry[8]); 
      delay(1500);
  
      Serial.println("I am Sending 10th data of 15 data on SPI");
      Serial.println(arry[9], BIN);
      SPI.transfer(arry[9]);
      delay(1500); 
     
      Serial.println("I am Sending 11th data of 15 data on SPI");
      Serial.println(arry[10], BIN);
      SPI.transfer(arry[10]);
      delay(1500); 
   
      Serial.println("I am Sending 12th data of 15 data on SPI");
      Serial.println(arry[11], BIN);
      SPI.transfer(arry[11]); 
      delay(1500);
     
      Serial.println("I am Sending 13th data of 15 data on SPI");
      Serial.println(arry[12], BIN);
      SPI.transfer(arry[12]); 
      delay(1500);

      Serial.println("I am Sending 14th data of 15 data on SPI");
      Serial.println(arry[13], BIN);
      SPI.transfer(arry[13]); 
      delay(1500);
  
      Serial.println("I am Sending 15th data of 15 data on SPI");
      Serial.println(arry[14], BIN);
      SPI.transfer(arry[14]); 
      delay(1500);
    
      Serial.println("ALL 15 datas are sent on SPI, process completed ::"); 
      Serial.println("\n");
      Serial.println("\n");
      digitalWrite(spidata,HIGH);// take the SS pin high to de-select the chip:
      delay(1500);
   //}
   

  
    }
Output of the above code which reads "0"
[code]
Read value 
0
Newline
If condition-1 Matches and recieves 0x3B from SPI then:
I am Sending 1st data of 15 data on SPI
1
I am Sending 2nd data of 15 data on SPI
10
I am Sending 3rd data of 15 data on SPI
11
I am Sending 4th data of 15 data on SPI
100
I am Sending 5th data of 15 data on SPI
101
I am Sending 6th data of 15 data on SPI
110
I am Sending 7th data of 15 data on SPI
111
I am Sending 8th data of 15 data on SPI
1000
I am Sending 9th data of 15 data on SPI
1001
I am Sending 10th data of 15 data on SPI
1010
I am Sending 11th data of 15 data on SPI
1011
I am Sending 12th data of 15 data on SPI
1100
I am Sending 13th data of 15 data on SPI
1101
I am Sending 14th data of 15 data on SPI
1110
I am Sending 15th data of 15 data on SPI
1111
ALL 15 datas are sent on SPI, process completed ::

[/code]