Rob Toulson / Mbed 2 deprecated PE_07-02_BidirectionalSPI

Dependencies:   mbed

Revision:
0:00824af0e88f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 15 21:24:37 2012 +0000
@@ -0,0 +1,42 @@
+/*Program Example 7.2. Sets the mbed up as Master, and exchanges data with a slave, sending its own switch positions, and displaying those of the slave. 
+                                                                            */
+#include "mbed.h"
+
+SPI ser_port(p11, p12, p13);    // mosi, miso, sclk
+DigitalOut red_led(p25);   //red led
+DigitalOut green_led(p26); //green led
+DigitalOut cs(p14);        //this acts as “slave select”
+DigitalIn  switch_ip1(p5);
+DigitalIn  switch_ip2(p6);
+char switch_word ;        //word we will send
+char recd_val;            //value return from slave
+
+int main() {
+  while (1){
+    //Default settings for SPI Master chosen, no need for further configuration    
+    //Set up the word to be sent, by testing switch inputs
+    switch_word=0xa0;             //set up a recognisable output pattern
+    if (switch_ip1==1)
+      switch_word=switch_word|0x01;        //OR in lsb
+    if (switch_ip2==1)
+      switch_word=switch_word|0x02;        //OR in next lsb
+    cs = 0;                                //select slave
+    recd_val=ser_port.write(switch_word);  //send switch_word and receive data
+    cs = 1;               
+    wait(0.01);
+  
+    //set leds according to incoming word from slave
+    red_led=0;              //preset both to 0
+    green_led=0; 
+    recd_val=recd_val&0x03; //AND out unwanted bits
+    if (recd_val==1)
+      red_led=1;
+    if (recd_val==2)
+      green_led=1;
+    if (recd_val==3){
+      red_led=1;
+      green_led=1;
+    }
+  }    
+}    
+