Test program for MCP23S17
Dependencies: ExioController MCP23S17 mbed-rtos mbed
main.cpp@11:a057a7a47f6e, 2016-11-04 (annotated)
- Committer:
- ryood
- Date:
- Fri Nov 04 13:11:24 2016 +0000
- Revision:
- 11:a057a7a47f6e
- Parent:
- 10:72220f282a8d
- Child:
- 12:5f0db7a87485
Remove: keypad
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryood | 0:0b1ae70a694b | 1 | #include "mbed.h" |
ryood | 0:0b1ae70a694b | 2 | #include "rtos.h" |
ryood | 10:72220f282a8d | 3 | |
ryood | 2:aae9ca66cc87 | 4 | #include "ExioMcp23s17PinDetect.h" |
ryood | 11:a057a7a47f6e | 5 | //#include "ExioMcp23s17DebounceIn.h" |
ryood | 6:4f9d08f8dfcf | 6 | #include "ExioMcp23s17RotaryEncoder.h" |
ryood | 9:01dfe4fe7d21 | 7 | #include "ExioMcp23s17Keypad4x4.h" |
ryood | 0:0b1ae70a694b | 8 | |
ryood | 0:0b1ae70a694b | 9 | SPI Spi(PC_12, PC_11, PC_10); // SPI3: mosi, miso, sclk |
ryood | 0:0b1ae70a694b | 10 | //SPI Spi(PA_7, PA_6, PA_5); // SPI1: mosi, miso, sclk |
ryood | 0:0b1ae70a694b | 11 | |
ryood | 0:0b1ae70a694b | 12 | // MExioMcp23s17(int hardwareaddress, SPI& spi, PinName nCs, PinName nReset); |
ryood | 0:0b1ae70a694b | 13 | ExioMcp23s17 Exio(0x00, Spi, PD_2, PA_13); |
ryood | 0:0b1ae70a694b | 14 | |
ryood | 10:72220f282a8d | 15 | bool state = false; |
ryood | 10:72220f282a8d | 16 | uint8_t count = 0; |
ryood | 8:5a1b267eae1d | 17 | |
ryood | 3:3638468099de | 18 | // トグル動作 |
ryood | 10:72220f282a8d | 19 | void pa6Falled() { |
ryood | 10:72220f282a8d | 20 | state = !state; |
ryood | 2:aae9ca66cc87 | 21 | } |
ryood | 2:aae9ca66cc87 | 22 | |
ryood | 10:72220f282a8d | 23 | // インクリメント |
ryood | 10:72220f282a8d | 24 | void pa7Falled() { |
ryood | 10:72220f282a8d | 25 | count++; |
ryood | 2:aae9ca66cc87 | 26 | } |
ryood | 2:aae9ca66cc87 | 27 | |
ryood | 10:72220f282a8d | 28 | int main() |
ryood | 2:aae9ca66cc87 | 29 | { |
ryood | 10:72220f282a8d | 30 | printf("\r\n\n*** ExioMcp23s17Controller test ***\r\n"); |
ryood | 5:69ea7aa2a755 | 31 | |
ryood | 5:69ea7aa2a755 | 32 | Exio.reset(); |
ryood | 5:69ea7aa2a755 | 33 | |
ryood | 10:72220f282a8d | 34 | // set PORTA[6:7] as inputs |
ryood | 11:a057a7a47f6e | 35 | /* |
ryood | 11:a057a7a47f6e | 36 | ExioMcp23s17DebounceIn in1(&Exio, ExioPortA, 6); |
ryood | 11:a057a7a47f6e | 37 | ExioMcp23s17DebounceIn in2(&Exio, ExioPortA, 7); |
ryood | 11:a057a7a47f6e | 38 | in1.mode(PullUp); |
ryood | 11:a057a7a47f6e | 39 | in2.mode(PullUp); |
ryood | 11:a057a7a47f6e | 40 | */ |
ryood | 11:a057a7a47f6e | 41 | |
ryood | 11:a057a7a47f6e | 42 | ExioMcp23s17PinDetect PinA6(&Exio, ExioPortA, 6); |
ryood | 11:a057a7a47f6e | 43 | ExioMcp23s17PinDetect PinA7(&Exio, ExioPortA, 7); |
ryood | 5:69ea7aa2a755 | 44 | |
ryood | 10:72220f282a8d | 45 | // assign callback functions |
ryood | 10:72220f282a8d | 46 | PinA6.attach_asserted(&pa6Falled); |
ryood | 10:72220f282a8d | 47 | PinA6.setAssertValue(0); |
ryood | 10:72220f282a8d | 48 | PinA6.setSampleFrequency(); |
ryood | 5:69ea7aa2a755 | 49 | |
ryood | 10:72220f282a8d | 50 | PinA7.attach_asserted(&pa7Falled); |
ryood | 10:72220f282a8d | 51 | PinA7.setAssertValue(0); |
ryood | 10:72220f282a8d | 52 | PinA7.setSampleFrequency(); |
ryood | 6:4f9d08f8dfcf | 53 | |
ryood | 10:72220f282a8d | 54 | // set PORTA[0:1], PORTA[2:3] as a Rotary Encoder |
ryood | 8:5a1b267eae1d | 55 | // ExioMcp23s17RotaryEncoder( |
ryood | 8:5a1b267eae1d | 56 | // ExioMcp23s17& device, ExioPort port, int pin1, int pin2, |
ryood | 8:5a1b267eae1d | 57 | // int min = 0, int max = 100, int val = 50 |
ryood | 8:5a1b267eae1d | 58 | //); |
ryood | 11:a057a7a47f6e | 59 | ExioMcp23s17RotaryEncoder RotEnc1(&Exio, ExioPortA, 0, 1, 0, 100, 50); |
ryood | 10:72220f282a8d | 60 | RotEnc1.setInterval(500); |
ryood | 11:a057a7a47f6e | 61 | ExioMcp23s17RotaryEncoder RotEnc2(&Exio, ExioPortA, 2, 3, 0, 100, 50); |
ryood | 10:72220f282a8d | 62 | RotEnc2.setInterval(500); |
ryood | 11:a057a7a47f6e | 63 | |
ryood | 10:72220f282a8d | 64 | // set PORTB as Keypad 4x4 |
ryood | 11:a057a7a47f6e | 65 | //ExioMcp23s17Keypad4x4 Keypad(&Exio, ExioPortB); |
ryood | 10:72220f282a8d | 66 | |
ryood | 6:4f9d08f8dfcf | 67 | while (true) { |
ryood | 11:a057a7a47f6e | 68 | int reVal1, reVal2, kpVal; |
ryood | 11:a057a7a47f6e | 69 | //state = in1.read(); |
ryood | 11:a057a7a47f6e | 70 | //count = in2.read(); |
ryood | 11:a057a7a47f6e | 71 | reVal1 = RotEnc1.getVal(); |
ryood | 11:a057a7a47f6e | 72 | reVal2 = RotEnc2.getVal(); |
ryood | 11:a057a7a47f6e | 73 | //kpVal = Keypad.keyScan1(); |
ryood | 11:a057a7a47f6e | 74 | printf("state:%d count:%d RE1:%d RE2:%d KP:%d\r\n", state, count, reVal1, reVal2, kpVal); |
ryood | 11:a057a7a47f6e | 75 | |
ryood | 11:a057a7a47f6e | 76 | Thread::wait(10); |
ryood | 6:4f9d08f8dfcf | 77 | } |
ryood | 6:4f9d08f8dfcf | 78 | } |