Test program for MCP23S17

Dependencies:   ExioController MCP23S17 mbed-rtos mbed

Revision:
12:5f0db7a87485
Parent:
11:a057a7a47f6e
Child:
13:1688ed45cccd
--- a/main.cpp	Fri Nov 04 13:11:24 2016 +0000
+++ b/main.cpp	Fri Nov 04 14:17:33 2016 +0000
@@ -2,7 +2,7 @@
 #include "rtos.h"
 
 #include "ExioMcp23s17PinDetect.h"
-//#include "ExioMcp23s17DebounceIn.h"
+#include "ExioMcp23s17DebounceIn.h"
 #include "ExioMcp23s17RotaryEncoder.h"
 #include "ExioMcp23s17Keypad4x4.h"
 
@@ -12,6 +12,7 @@
 // MExioMcp23s17(int hardwareaddress, SPI& spi, PinName nCs, PinName nReset);
 ExioMcp23s17 Exio(0x00, Spi, PD_2, PA_13);
 
+/*
 bool state = false;
 uint8_t count = 0;
 
@@ -24,21 +25,66 @@
 void pa7Falled() {
     count++;
 }
+*/
+
+void TestExioMcp23s17DebounceIn()
+{
+    printf("\r\n\n*** ExioMcp23s17DebouceIn test ***\r\n");
+    
+    Exio.reset();
+    
+    ExioMcp23s17DebounceIn insA[8] = {
+        ExioMcp23s17DebounceIn(&Exio, ExioPortA, 0),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortA, 1),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortA, 2),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortA, 3),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortA, 4),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortA, 5),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortA, 6),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortA, 7)
+    };
+
+    ExioMcp23s17DebounceIn insB[8] = {
+        ExioMcp23s17DebounceIn(&Exio, ExioPortB, 0),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortB, 1),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortB, 2),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortB, 3),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortB, 4),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortB, 5),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortB, 6),
+        ExioMcp23s17DebounceIn(&Exio, ExioPortB, 7)
+    };
+    
+    for (int i = 0; i < 8; i++) {
+        insA[i].mode(PullUp);
+        insB[i].mode(PullUp);
+    }
+    for (int i = 0; i < 8; i++) {
+        insA[i].set_debounce_us(1000);
+        insB[i].set_debounce_us(1000);
+    }
+    
+    while (true) {
+        for (int i = 0; i < 8; i++) {
+            printf("%d ", insA[i].read());
+        }
+        printf("  ");
+        for (int i = 0; i < 8; i++) {
+            printf("%d ", insB[i].read());
+        }
+        printf("\r\n");
+    } 
+}    
 
 int main()
 {
+    TestExioMcp23s17DebounceIn();
+    
+    /*
     printf("\r\n\n*** ExioMcp23s17Controller test ***\r\n");
     
     Exio.reset();
 
-    // set PORTA[6:7] as inputs
-    /*
-    ExioMcp23s17DebounceIn in1(&Exio, ExioPortA, 6);
-    ExioMcp23s17DebounceIn in2(&Exio, ExioPortA, 7);
-    in1.mode(PullUp);
-    in2.mode(PullUp);
-    */
-
     ExioMcp23s17PinDetect PinA6(&Exio, ExioPortA, 6);
     ExioMcp23s17PinDetect PinA7(&Exio, ExioPortA, 7);
     
@@ -61,18 +107,22 @@
     ExioMcp23s17RotaryEncoder RotEnc2(&Exio, ExioPortA, 2, 3, 0, 100, 50);
     RotEnc2.setInterval(500);
 
-    // set PORTB as Keypad 4x4
-    //ExioMcp23s17Keypad4x4 Keypad(&Exio, ExioPortB);
+    // set PORTB[0:7] as debouce inputs
+    ExioMcp23s17DebounceIn* psw[8];
+    for (int i = 0; i < 8; i++) {
+        psw[i] = new ExioMcp23s17DebounceIn(&Exio, ExioPortB, i);
+        psw[i]->mode(PullUp);
+    }
   
     while (true) {
-        int reVal1, reVal2, kpVal;
-        //state = in1.read();
-        //count = in2.read();
+        int reVal1, reVal2;
         reVal1 = RotEnc1.getVal();
         reVal2 = RotEnc2.getVal();
-        //kpVal  = Keypad.keyScan1();
-        printf("state:%d count:%d RE1:%d RE2:%d KP:%d\r\n", state, count, reVal1, reVal2, kpVal);
+        printf("state:%d count:%d RE1:%d RE2:%d\r\n", state, count, reVal1, reVal2);
 
         Thread::wait(10);
     }
+    
+    delete[] psw;
+    */
 }