Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ExioController MCP23S17 mbed-rtos mbed
Diff: main.cpp
- 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(); + +}