Ryo Od / Mbed 2 deprecated ExioController_Test

Dependencies:   ExioController MCP23S17 mbed-rtos mbed

Revision:
1:e0679b70b51d
Parent:
0:0b1ae70a694b
Child:
2:aae9ca66cc87
--- a/main.cpp	Sun Oct 30 12:29:23 2016 +0000
+++ b/main.cpp	Sun Oct 30 14:17:53 2016 +0000
@@ -1,6 +1,7 @@
 #include "mbed.h"
 #include "rtos.h"
 #include "ExioMcp23s17.h"
+#include "ExioMcp23s17DigitalIn.h"
 
 SPI Spi(PC_12, PC_11, PC_10); // SPI3: mosi, miso, sclk
 //SPI Spi(PA_7, PA_6, PA_5); // SPI1:  mosi, miso, sclk
@@ -25,21 +26,76 @@
     // PORTB invert polarity
     Exio.ioPolarity(ExioPortB, 0xFF);
     
-    // LED Check
+    // LED Check (PortA)
     for (int i = 0; i < 8; i++) {
         Exio.writePort(ExioPortA, 1 << i);
         wait(0.1);
     }
-    Exio.writePort(ExioPortB, 0x00);
+    Exio.writePort(ExioPortA, 0x00);
     
     while (true) {
-        char data = Exio.readPort(ExioPortB);
+        uint8_t data = Exio.readPort(ExioPortB);
         wait_us(1);
         Exio.writePort(ExioPortA, data);
     }
 }
 
+void ExioMcp23s17DigitalInTest()
+{
+    printf("\r\n\n*** ExioMcp23s17DigitalIn test ***\r\n");
+    
+    Exio.reset();
+    
+    // set PORTA as output
+    Exio.ioDirection(ExioPortA, 0x00);
+    
+    // set PORTB as input via ExioDigitalIn
+    ExioMcp23s17DigitalIn inB0(Exio, ExioPortB, 0);
+    ExioMcp23s17DigitalIn inB1(Exio, ExioPortB, 1);
+    ExioMcp23s17DigitalIn inB2(Exio, ExioPortB, 2);
+    ExioMcp23s17DigitalIn inB3(Exio, ExioPortB, 3);
+    ExioMcp23s17DigitalIn inB4(Exio, ExioPortB, 4);
+    ExioMcp23s17DigitalIn inB5(Exio, ExioPortB, 5);
+    ExioMcp23s17DigitalIn inB6(Exio, ExioPortB, 6);
+    ExioMcp23s17DigitalIn inB7(Exio, ExioPortB, 7);
+
+    inB0.mode(PullUp);
+    inB1.mode(PullUp);
+    inB2.mode(PullUp);
+    inB3.mode(PullUp);
+    inB4.mode(PullUp);
+    inB5.mode(PullUp);
+    inB6.mode(PullUp);
+    inB7.mode(PullUp);
+    
+    // LED Check (PortA)
+    for (int i = 0; i < 8; i++) {
+        Exio.writePort(ExioPortA, 1 << i);
+        wait(0.1);
+    }
+    Exio.writePort(ExioPortA, 0x00);
+    
+    while (true) {
+        
+        // read PORTB via ExioMcp23s17DigitalIn
+        uint8_t data = 0;
+        data |= inB0.read();
+        data |= inB1.read() << 1;
+        data |= inB2.read() << 2;
+        data |= inB3.read() << 3;
+        data |= inB4.read() << 4;
+        data |= inB5.read() << 5;
+        data |= inB6.read() << 6;
+        data |= inB7.read() << 7;
+
+        // write PORTA
+        Exio.writePort(ExioPortA, data);
+    }
+}
+
 int main()
 {
-    ExioMcp23s17Test();
-}
\ No newline at end of file
+    //ExioMcp23s17Test();
+    ExioMcp23s17DigitalInTest();
+
+}