Test program for MCP23S17
Dependencies: ExioController MCP23S17 mbed-rtos mbed
main.cpp
- Committer:
- ryood
- Date:
- 2016-11-04
- Revision:
- 13:1688ed45cccd
- Parent:
- 12:5f0db7a87485
- Child:
- 14:3a2c33129716
File content as of revision 13:1688ed45cccd:
#include "mbed.h" #include "rtos.h" #include "ExioMcp23s17PinDetect.h" #include "ExioMcp23s17DebounceIn.h" #include "ExioMcp23s17RotaryEncoder.h" #include "ExioMcp23s17Keypad4x4.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 // MExioMcp23s17(int hardwareaddress, SPI& spi, PinName nCs, PinName nReset); ExioMcp23s17 Exio(0x00, Spi, PD_2, PA_13); bool state = false; uint8_t count = 0; /* // トグル動作 void pa6Falled() { state = !state; } // インクリメント 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(); /* ExioMcp23s17PinDetect PinA6(&Exio, ExioPortA, 6); ExioMcp23s17PinDetect PinA7(&Exio, ExioPortA, 7); // assign callback functions PinA6.attach_asserted(&pa6Falled); PinA6.setAssertValue(0); PinA6.setSampleFrequency(); PinA7.attach_asserted(&pa7Falled); PinA7.setAssertValue(0); PinA7.setSampleFrequency(); */ // set PORTA[0:1], PORTA[2:3] as a Rotary Encoder // ExioMcp23s17RotaryEncoder( // ExioMcp23s17& device, ExioPort port, int pin1, int pin2, // int min = 0, int max = 100, int val = 50 //); ExioMcp23s17RotaryEncoder RotEnc1(&Exio, ExioPortA, 0, 1, 0, 100, 50); ExioMcp23s17RotaryEncoder RotEnc2(&Exio, ExioPortA, 2, 3, 0, 100, 50); // 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); } RotEnc1.setInterval(500); RotEnc2.setInterval(500); for (int i = 0; i < 8; i++) { psw[i]->set_debounce_us(1000); } while (true) { int reVal1, reVal2; reVal1 = RotEnc1.getVal(); reVal2 = RotEnc2.getVal(); printf("state:%d count:%d RE1:%d RE2:%d ", state, count, reVal1, reVal2); for (int i = 0; i < 8; i++) { printf("%d ", psw[i]->read()); } printf("\r\n"); Thread::wait(10); } //delete[] psw; }