Rob Toulson / Mbed 2 deprecated PE_07-06_I2CSlave

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
robt
Date:
Mon Oct 15 21:26:18 2012 +0000
Commit message:
by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r fa5e89cbad4d main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 15 21:26:18 2012 +0000
@@ -0,0 +1,43 @@
+/*Program Example 7.6: I2C Slave, when called transfers switch state to mbed acting as Master, and displays state of Master's switches on its leds.
+                                                                              */
+
+#include <mbed.h>
+I2CSlave slave(p9, p10);          //Configure I2C slave
+DigitalOut red_led(p25);          //red led
+DigitalOut green_led(p26);        //green led
+DigitalIn  switch_ip1(p5);
+DigitalIn  switch_ip2(p6);
+char switch_word ;                //word we will send
+char recd_val;                    //value received from master
+
+int main()
+{
+    slave.address(0x52);
+    while (1) {
+        //set up switch_word from switches that are pressed
+        switch_word=0xa0; //set up a recognisable output pattern
+        if (switch_ip1==1)
+            switch_word=switch_word|0x01;
+        if (switch_ip2==1)
+            switch_word=switch_word|0x02;
+        slave.write(switch_word); //load up word to send
+        //test for I2C, and act accordingly
+        int i = slave.receive();
+        if (i == 3) {           //slave is addressed, Master will write
+            recd_val= slave.read();
+        }
+        //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;
+        }
+    }
+}
+
diff -r 000000000000 -r fa5e89cbad4d mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Oct 15 21:26:18 2012 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/cd19af002ccc
\ No newline at end of file