Test program for MCP23S17

Dependencies:   ExioController MCP23S17 mbed-rtos mbed

Revision:
8:5a1b267eae1d
Parent:
7:6c63d0f70ebc
Child:
9:01dfe4fe7d21
--- a/main.cpp	Wed Nov 02 05:24:53 2016 +0000
+++ b/main.cpp	Wed Nov 02 06:13:07 2016 +0000
@@ -42,7 +42,40 @@
         Exio.writePort(ExioPortA, data);
     }
 }
+*/
 
+void ExioMcp23s17RevTest()
+{
+    printf("\r\n\n*** ExioMcp23s17 Rev ***\r\n");
+
+    // Reset MCP23S17
+    Exio.reset();
+    
+    // PORTB output
+    Exio.ioDirection(ExioPortB, 0x00);
+
+    // PORTA input
+    Exio.ioDirection(ExioPortA, 0xFF);
+    // PORTB pull-up
+    Exio.ioPullup(ExioPortA, 0xFF);
+    // PORTB invert polarity
+    Exio.ioPolarity(ExioPortA, 0xFF);
+    
+    // LED Check (PortB)
+    for (int i = 0; i < 8; i++) {
+        Exio.writePort(ExioPortB, 1 << i);
+        wait(0.1);
+    }
+    Exio.writePort(ExioPortB, 0x00);
+    
+    while (true) {
+        uint8_t data = Exio.readPort(ExioPortA);
+        wait_us(1);
+        Exio.writePort(ExioPortB, data);
+    }
+}
+
+/*
 void ExioMcp23s17DigitalInTest()
 {
     printf("\r\n\n*** ExioMcp23s17DigitalIn test ***\r\n");
@@ -278,7 +311,7 @@
     }
 }
 */
-
+/*
 void ExioMcp23s17RotaryEncoderTest()
 {
     printf("\r\n\n*** ExioMcp23s17RotaryEncoder test ***\r\n");
@@ -296,12 +329,12 @@
     Exio.writePort(ExioPortA, 0x00);
 
     // set PORTB[0..1] as RotaryEncoder
-    /*
-        ExioMcp23s17RotaryEncoder(
-        ExioMcp23s17& device, ExioPort port, int pin1, int pin2,
-        int min = 0, int max = 100, int val = 50
-    );
-    */
+    
+    //    ExioMcp23s17RotaryEncoder(
+    //    ExioMcp23s17& device, ExioPort port, int pin1, int pin2,
+    //    int min = 0, int max = 100, int val = 50
+    //);
+    
     ExioMcp23s17RotaryEncoder RotEnc1(Exio, ExioPortB, 0, 1, 0, 0x0f, 0);
     
     // set PORTB[2..3] as RotaryEncoder
@@ -312,17 +345,18 @@
         int v1 = RotEnc1.getVal();
         int v2 = RotEnc2.getVal();
         uint8_t data = ((uint8_t)v2 << 4) | (uint8_t)v1;
-        Exio.writePort(ExioPortA, data);
-        //printf("%d %d\r\n", v1, v2);
+        //Exio.writePort(ExioPortA, data);
+        printf("%d %d\r\n", v1, v2);
         Thread::wait(10);
     }
 }
-
+*/
 int main()
 {
     //ExioMcp23s17Test();
+    ExioMcp23s17RevTest();
     //ExioMcp23s17DigitalInTest();
     //ExioMcp23s17PinDetectTest();
     //ExioMcp23s17PinDetectPullModeTest();
-    ExioMcp23s17RotaryEncoderTest();
+    //ExioMcp23s17RotaryEncoderTest();
 }