46. SPI Programming

Question.4

What number will be printed on Arduino2’s serial monitor? (after executing the following code)

Master code :


#include <avr/io.h>
#include <SPI.h>

void setup() {
 pinMode(MISO, INPUT);
 pinMode(MOSI, OUTPUT);
 pinMode(SCK, OUTPUT); 
 pinMode(SS, OUTPUT);
  SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0);
 digitalWrite(SS, HIGH);
}

void loop() {
digitalWrite(SS, LOW);
  SPDR = 0x09;
 while (!(SPSR & (1 << SPIF)));
  digitalWrite(SS, HIGH);

 while(1);
}

Slave code :


#include <avr/io.h>

void setup() {
 pinMode(MISO, OUTPUT);
 pinMode(MOSI, INPUT);
 pinMode(SCK, INPUT); 
 pinMode(SS, INPUT);
  SPCR = (1 << SPE);
  Serial.begin(9600);
}

void loop() {

 if (SPSR & (1 << SPIF)) {
   byte receivedData = SPDR;
   Serial.println(receivedData, HEX);
 }
}

 

Select Answer