Test program for MCP23S17
Dependencies: ExioController MCP23S17 mbed-rtos mbed
main.cpp@13:1688ed45cccd, 2016-11-04 (annotated)
- Committer:
- ryood
- Date:
- Fri Nov 04 14:30:54 2016 +0000
- Revision:
- 13:1688ed45cccd
- Parent:
- 12:5f0db7a87485
- Child:
- 14:3a2c33129716
ExioMcp23s17RotryEncoder: Remove ticker.attach_us() from constructor
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 | 12:5f0db7a87485 | 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 | 13:1688ed45cccd | 15 | |
ryood | 10:72220f282a8d | 16 | bool state = false; |
ryood | 10:72220f282a8d | 17 | uint8_t count = 0; |
ryood | 8:5a1b267eae1d | 18 | |
ryood | 13:1688ed45cccd | 19 | /* |
ryood | 3:3638468099de | 20 | // トグル動作 |
ryood | 10:72220f282a8d | 21 | void pa6Falled() { |
ryood | 10:72220f282a8d | 22 | state = !state; |
ryood | 2:aae9ca66cc87 | 23 | } |
ryood | 2:aae9ca66cc87 | 24 | |
ryood | 10:72220f282a8d | 25 | // インクリメント |
ryood | 10:72220f282a8d | 26 | void pa7Falled() { |
ryood | 10:72220f282a8d | 27 | count++; |
ryood | 2:aae9ca66cc87 | 28 | } |
ryood | 12:5f0db7a87485 | 29 | */ |
ryood | 12:5f0db7a87485 | 30 | |
ryood | 13:1688ed45cccd | 31 | /* |
ryood | 12:5f0db7a87485 | 32 | void TestExioMcp23s17DebounceIn() |
ryood | 12:5f0db7a87485 | 33 | { |
ryood | 12:5f0db7a87485 | 34 | printf("\r\n\n*** ExioMcp23s17DebouceIn test ***\r\n"); |
ryood | 12:5f0db7a87485 | 35 | |
ryood | 12:5f0db7a87485 | 36 | Exio.reset(); |
ryood | 12:5f0db7a87485 | 37 | |
ryood | 12:5f0db7a87485 | 38 | ExioMcp23s17DebounceIn insA[8] = { |
ryood | 12:5f0db7a87485 | 39 | ExioMcp23s17DebounceIn(&Exio, ExioPortA, 0), |
ryood | 12:5f0db7a87485 | 40 | ExioMcp23s17DebounceIn(&Exio, ExioPortA, 1), |
ryood | 12:5f0db7a87485 | 41 | ExioMcp23s17DebounceIn(&Exio, ExioPortA, 2), |
ryood | 12:5f0db7a87485 | 42 | ExioMcp23s17DebounceIn(&Exio, ExioPortA, 3), |
ryood | 12:5f0db7a87485 | 43 | ExioMcp23s17DebounceIn(&Exio, ExioPortA, 4), |
ryood | 12:5f0db7a87485 | 44 | ExioMcp23s17DebounceIn(&Exio, ExioPortA, 5), |
ryood | 12:5f0db7a87485 | 45 | ExioMcp23s17DebounceIn(&Exio, ExioPortA, 6), |
ryood | 12:5f0db7a87485 | 46 | ExioMcp23s17DebounceIn(&Exio, ExioPortA, 7) |
ryood | 12:5f0db7a87485 | 47 | }; |
ryood | 12:5f0db7a87485 | 48 | |
ryood | 12:5f0db7a87485 | 49 | ExioMcp23s17DebounceIn insB[8] = { |
ryood | 12:5f0db7a87485 | 50 | ExioMcp23s17DebounceIn(&Exio, ExioPortB, 0), |
ryood | 12:5f0db7a87485 | 51 | ExioMcp23s17DebounceIn(&Exio, ExioPortB, 1), |
ryood | 12:5f0db7a87485 | 52 | ExioMcp23s17DebounceIn(&Exio, ExioPortB, 2), |
ryood | 12:5f0db7a87485 | 53 | ExioMcp23s17DebounceIn(&Exio, ExioPortB, 3), |
ryood | 12:5f0db7a87485 | 54 | ExioMcp23s17DebounceIn(&Exio, ExioPortB, 4), |
ryood | 12:5f0db7a87485 | 55 | ExioMcp23s17DebounceIn(&Exio, ExioPortB, 5), |
ryood | 12:5f0db7a87485 | 56 | ExioMcp23s17DebounceIn(&Exio, ExioPortB, 6), |
ryood | 12:5f0db7a87485 | 57 | ExioMcp23s17DebounceIn(&Exio, ExioPortB, 7) |
ryood | 12:5f0db7a87485 | 58 | }; |
ryood | 12:5f0db7a87485 | 59 | |
ryood | 12:5f0db7a87485 | 60 | for (int i = 0; i < 8; i++) { |
ryood | 12:5f0db7a87485 | 61 | insA[i].mode(PullUp); |
ryood | 12:5f0db7a87485 | 62 | insB[i].mode(PullUp); |
ryood | 12:5f0db7a87485 | 63 | } |
ryood | 12:5f0db7a87485 | 64 | for (int i = 0; i < 8; i++) { |
ryood | 12:5f0db7a87485 | 65 | insA[i].set_debounce_us(1000); |
ryood | 12:5f0db7a87485 | 66 | insB[i].set_debounce_us(1000); |
ryood | 12:5f0db7a87485 | 67 | } |
ryood | 12:5f0db7a87485 | 68 | |
ryood | 12:5f0db7a87485 | 69 | while (true) { |
ryood | 12:5f0db7a87485 | 70 | for (int i = 0; i < 8; i++) { |
ryood | 12:5f0db7a87485 | 71 | printf("%d ", insA[i].read()); |
ryood | 12:5f0db7a87485 | 72 | } |
ryood | 12:5f0db7a87485 | 73 | printf(" "); |
ryood | 12:5f0db7a87485 | 74 | for (int i = 0; i < 8; i++) { |
ryood | 12:5f0db7a87485 | 75 | printf("%d ", insB[i].read()); |
ryood | 12:5f0db7a87485 | 76 | } |
ryood | 12:5f0db7a87485 | 77 | printf("\r\n"); |
ryood | 12:5f0db7a87485 | 78 | } |
ryood | 12:5f0db7a87485 | 79 | } |
ryood | 13:1688ed45cccd | 80 | */ |
ryood | 2:aae9ca66cc87 | 81 | |
ryood | 10:72220f282a8d | 82 | int main() |
ryood | 2:aae9ca66cc87 | 83 | { |
ryood | 13:1688ed45cccd | 84 | //TestExioMcp23s17DebounceIn(); |
ryood | 12:5f0db7a87485 | 85 | |
ryood | 10:72220f282a8d | 86 | printf("\r\n\n*** ExioMcp23s17Controller test ***\r\n"); |
ryood | 5:69ea7aa2a755 | 87 | |
ryood | 5:69ea7aa2a755 | 88 | Exio.reset(); |
ryood | 13:1688ed45cccd | 89 | |
ryood | 13:1688ed45cccd | 90 | /* |
ryood | 11:a057a7a47f6e | 91 | ExioMcp23s17PinDetect PinA6(&Exio, ExioPortA, 6); |
ryood | 11:a057a7a47f6e | 92 | ExioMcp23s17PinDetect PinA7(&Exio, ExioPortA, 7); |
ryood | 5:69ea7aa2a755 | 93 | |
ryood | 10:72220f282a8d | 94 | // assign callback functions |
ryood | 10:72220f282a8d | 95 | PinA6.attach_asserted(&pa6Falled); |
ryood | 10:72220f282a8d | 96 | PinA6.setAssertValue(0); |
ryood | 10:72220f282a8d | 97 | PinA6.setSampleFrequency(); |
ryood | 5:69ea7aa2a755 | 98 | |
ryood | 10:72220f282a8d | 99 | PinA7.attach_asserted(&pa7Falled); |
ryood | 10:72220f282a8d | 100 | PinA7.setAssertValue(0); |
ryood | 10:72220f282a8d | 101 | PinA7.setSampleFrequency(); |
ryood | 13:1688ed45cccd | 102 | */ |
ryood | 6:4f9d08f8dfcf | 103 | |
ryood | 10:72220f282a8d | 104 | // set PORTA[0:1], PORTA[2:3] as a Rotary Encoder |
ryood | 8:5a1b267eae1d | 105 | // ExioMcp23s17RotaryEncoder( |
ryood | 8:5a1b267eae1d | 106 | // ExioMcp23s17& device, ExioPort port, int pin1, int pin2, |
ryood | 8:5a1b267eae1d | 107 | // int min = 0, int max = 100, int val = 50 |
ryood | 8:5a1b267eae1d | 108 | //); |
ryood | 11:a057a7a47f6e | 109 | ExioMcp23s17RotaryEncoder RotEnc1(&Exio, ExioPortA, 0, 1, 0, 100, 50); |
ryood | 11:a057a7a47f6e | 110 | ExioMcp23s17RotaryEncoder RotEnc2(&Exio, ExioPortA, 2, 3, 0, 100, 50); |
ryood | 11:a057a7a47f6e | 111 | |
ryood | 12:5f0db7a87485 | 112 | // set PORTB[0:7] as debouce inputs |
ryood | 12:5f0db7a87485 | 113 | ExioMcp23s17DebounceIn* psw[8]; |
ryood | 12:5f0db7a87485 | 114 | for (int i = 0; i < 8; i++) { |
ryood | 12:5f0db7a87485 | 115 | psw[i] = new ExioMcp23s17DebounceIn(&Exio, ExioPortB, i); |
ryood | 12:5f0db7a87485 | 116 | psw[i]->mode(PullUp); |
ryood | 12:5f0db7a87485 | 117 | } |
ryood | 13:1688ed45cccd | 118 | |
ryood | 13:1688ed45cccd | 119 | RotEnc1.setInterval(500); |
ryood | 13:1688ed45cccd | 120 | RotEnc2.setInterval(500); |
ryood | 13:1688ed45cccd | 121 | for (int i = 0; i < 8; i++) { |
ryood | 13:1688ed45cccd | 122 | psw[i]->set_debounce_us(1000); |
ryood | 13:1688ed45cccd | 123 | } |
ryood | 10:72220f282a8d | 124 | |
ryood | 6:4f9d08f8dfcf | 125 | while (true) { |
ryood | 12:5f0db7a87485 | 126 | int reVal1, reVal2; |
ryood | 11:a057a7a47f6e | 127 | reVal1 = RotEnc1.getVal(); |
ryood | 11:a057a7a47f6e | 128 | reVal2 = RotEnc2.getVal(); |
ryood | 13:1688ed45cccd | 129 | printf("state:%d count:%d RE1:%d RE2:%d ", state, count, reVal1, reVal2); |
ryood | 13:1688ed45cccd | 130 | for (int i = 0; i < 8; i++) { |
ryood | 13:1688ed45cccd | 131 | printf("%d ", psw[i]->read()); |
ryood | 13:1688ed45cccd | 132 | } |
ryood | 13:1688ed45cccd | 133 | printf("\r\n"); |
ryood | 11:a057a7a47f6e | 134 | |
ryood | 11:a057a7a47f6e | 135 | Thread::wait(10); |
ryood | 6:4f9d08f8dfcf | 136 | } |
ryood | 12:5f0db7a87485 | 137 | |
ryood | 13:1688ed45cccd | 138 | //delete[] psw; |
ryood | 6:4f9d08f8dfcf | 139 | } |