Test program for MCP23S17
Dependencies: ExioController MCP23S17 mbed-rtos mbed
Diff: main.cpp
- 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(); }