Buffered Test

Dependencies:   ExioBufferdController MCP23S17 mbed-rtos mbed

Committer:
ryood
Date:
Fri Nov 04 23:20:32 2016 +0000
Revision:
9:76d17c5cac87
Parent:
8:d511db400a09
Child:
10:5d1a09afe152
Add: ExioBufferedPinDetect Test (on/off)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:7578a6b316b7 1 /*
ryood 0:7578a6b316b7 2 * ExioBufferdController Test
ryood 0:7578a6b316b7 3 *
ryood 0:7578a6b316b7 4 * mbed: revison 121
ryood 0:7578a6b316b7 5 * mbed-rtos: revision 117
ryood 0:7578a6b316b7 6 *
ryood 0:7578a6b316b7 7 * Created: 2016.11.05
ryood 0:7578a6b316b7 8 *
ryood 0:7578a6b316b7 9 */
ryood 0:7578a6b316b7 10
ryood 0:7578a6b316b7 11 #include "mbed.h"
ryood 0:7578a6b316b7 12 #include "rtos.h"
ryood 0:7578a6b316b7 13
ryood 0:7578a6b316b7 14 #include "ExioMcp23s17.h"
ryood 0:7578a6b316b7 15 #include "ExioInBuffer.h"
ryood 3:ee7fd89f2539 16 #include "ExioBufferedIn.h"
ryood 6:9acaeb5465d2 17 #include "ExioBufferedDebounceIn.h"
ryood 8:d511db400a09 18 #include "ExioBufferedPinDetect.h"
ryood 5:526691f54026 19 #include "ExioBufferedRotaryEncoder.h"
ryood 0:7578a6b316b7 20
ryood 0:7578a6b316b7 21 SPI Spi(PC_12, PC_11, PC_10); // SPI3: mosi, miso, sclk
ryood 0:7578a6b316b7 22 //SPI Spi(PA_7, PA_6, PA_5); // SPI1: mosi, miso, sclk
ryood 0:7578a6b316b7 23
ryood 0:7578a6b316b7 24 // MExioMcp23s17(int hardwareaddress, SPI& spi, PinName nCs, PinName nReset);
ryood 0:7578a6b316b7 25 ExioMcp23s17 Exio(0x00, Spi, PD_2, PA_13);
ryood 0:7578a6b316b7 26
ryood 0:7578a6b316b7 27 void testExioInBuffer()
ryood 0:7578a6b316b7 28 {
ryood 0:7578a6b316b7 29 printf("*** Test ExioInBuffer ***\r\n");
ryood 0:7578a6b316b7 30
ryood 2:0a339555ddf6 31 // Reset MCP23S17 (初期化時にreset()が必要)
ryood 0:7578a6b316b7 32 Exio.reset();
ryood 0:7578a6b316b7 33
ryood 3:ee7fd89f2539 34 ExioInBuffer exioInBufferA(&Exio, ExioPortA);
ryood 3:ee7fd89f2539 35 ExioInBuffer exioInBufferB(&Exio, ExioPortB);
ryood 0:7578a6b316b7 36
ryood 3:ee7fd89f2539 37 exioInBufferA.run(1);
ryood 3:ee7fd89f2539 38 exioInBufferB.run(1);
ryood 0:7578a6b316b7 39
ryood 0:7578a6b316b7 40 while (true) {
ryood 2:0a339555ddf6 41 uint8_t va = exioInBufferA.readPort();
ryood 2:0a339555ddf6 42 uint8_t vb = exioInBufferB.readPort();
ryood 2:0a339555ddf6 43
ryood 2:0a339555ddf6 44 printf("%d %d\r\n", va, vb);
ryood 0:7578a6b316b7 45 //Thread::wait(10);
ryood 0:7578a6b316b7 46 }
ryood 0:7578a6b316b7 47 }
ryood 4:20ee7612edb9 48
ryood 3:ee7fd89f2539 49 void testExioBufferedIn()
ryood 3:ee7fd89f2539 50 {
ryood 3:ee7fd89f2539 51 printf("*** Test ExioBuffedIn ***\r\n");
ryood 3:ee7fd89f2539 52
ryood 3:ee7fd89f2539 53 // Reset MCP23S17 (初期化時にreset()が必要)
ryood 3:ee7fd89f2539 54 Exio.reset();
ryood 3:ee7fd89f2539 55
ryood 4:20ee7612edb9 56 ExioInBuffer inBufferA(&Exio, ExioPortA);
ryood 4:20ee7612edb9 57 ExioBufferedIn inA[] = {
ryood 4:20ee7612edb9 58 ExioBufferedIn(&inBufferA, 0),
ryood 4:20ee7612edb9 59 ExioBufferedIn(&inBufferA, 1),
ryood 4:20ee7612edb9 60 ExioBufferedIn(&inBufferA, 2),
ryood 4:20ee7612edb9 61 ExioBufferedIn(&inBufferA, 3),
ryood 4:20ee7612edb9 62 ExioBufferedIn(&inBufferA, 4),
ryood 4:20ee7612edb9 63 ExioBufferedIn(&inBufferA, 5),
ryood 4:20ee7612edb9 64 ExioBufferedIn(&inBufferA, 6),
ryood 4:20ee7612edb9 65 ExioBufferedIn(&inBufferA, 7)
ryood 4:20ee7612edb9 66 };
ryood 4:20ee7612edb9 67
ryood 4:20ee7612edb9 68 ExioInBuffer inBufferB(&Exio, ExioPortB);
ryood 3:ee7fd89f2539 69 ExioBufferedIn inB[] = {
ryood 3:ee7fd89f2539 70 ExioBufferedIn(&inBufferB, 0),
ryood 3:ee7fd89f2539 71 ExioBufferedIn(&inBufferB, 1),
ryood 3:ee7fd89f2539 72 ExioBufferedIn(&inBufferB, 2),
ryood 3:ee7fd89f2539 73 ExioBufferedIn(&inBufferB, 3),
ryood 3:ee7fd89f2539 74 ExioBufferedIn(&inBufferB, 4),
ryood 3:ee7fd89f2539 75 ExioBufferedIn(&inBufferB, 5),
ryood 3:ee7fd89f2539 76 ExioBufferedIn(&inBufferB, 6),
ryood 3:ee7fd89f2539 77 ExioBufferedIn(&inBufferB, 7)
ryood 3:ee7fd89f2539 78 };
ryood 3:ee7fd89f2539 79
ryood 4:20ee7612edb9 80 inBufferA.run(10);
ryood 4:20ee7612edb9 81 inBufferB.run(10);
ryood 3:ee7fd89f2539 82
ryood 3:ee7fd89f2539 83 while (true) {
ryood 3:ee7fd89f2539 84 for (int i = 0; i < 8; i++) {
ryood 4:20ee7612edb9 85 int va = inA[i].read();
ryood 4:20ee7612edb9 86 printf("%d ", va);
ryood 4:20ee7612edb9 87 }
ryood 4:20ee7612edb9 88 putchar(' ');
ryood 4:20ee7612edb9 89 for (int i = 0; i < 8; i++) {
ryood 4:20ee7612edb9 90 int vb = inB[i].read();
ryood 4:20ee7612edb9 91 printf("%d ", vb);
ryood 3:ee7fd89f2539 92 }
ryood 3:ee7fd89f2539 93 printf("\r\n");
ryood 3:ee7fd89f2539 94 //Thread::wait(10);
ryood 3:ee7fd89f2539 95 }
ryood 3:ee7fd89f2539 96 }
ryood 4:20ee7612edb9 97
ryood 6:9acaeb5465d2 98 void testExioBufferedDebounceIn()
ryood 6:9acaeb5465d2 99 {
ryood 6:9acaeb5465d2 100 printf("*** Test ExioBuffeDebounceIn ***\r\n");
ryood 6:9acaeb5465d2 101
ryood 6:9acaeb5465d2 102 // Reset MCP23S17 (初期化時にreset()が必要)
ryood 6:9acaeb5465d2 103 Exio.reset();
ryood 6:9acaeb5465d2 104
ryood 6:9acaeb5465d2 105 ExioInBuffer inBufferA(&Exio, ExioPortA);
ryood 6:9acaeb5465d2 106 ExioBufferedDebounceIn inA[] = {
ryood 6:9acaeb5465d2 107 ExioBufferedDebounceIn(&inBufferA, 0),
ryood 6:9acaeb5465d2 108 ExioBufferedDebounceIn(&inBufferA, 1),
ryood 6:9acaeb5465d2 109 ExioBufferedDebounceIn(&inBufferA, 2),
ryood 6:9acaeb5465d2 110 ExioBufferedDebounceIn(&inBufferA, 3),
ryood 6:9acaeb5465d2 111 ExioBufferedDebounceIn(&inBufferA, 4),
ryood 6:9acaeb5465d2 112 ExioBufferedDebounceIn(&inBufferA, 5),
ryood 6:9acaeb5465d2 113 ExioBufferedDebounceIn(&inBufferA, 6),
ryood 6:9acaeb5465d2 114 ExioBufferedDebounceIn(&inBufferA, 7)
ryood 6:9acaeb5465d2 115 };
ryood 6:9acaeb5465d2 116
ryood 6:9acaeb5465d2 117 ExioInBuffer inBufferB(&Exio, ExioPortB);
ryood 6:9acaeb5465d2 118 ExioBufferedIn inB[] = {
ryood 6:9acaeb5465d2 119 ExioBufferedDebounceIn(&inBufferB, 0),
ryood 6:9acaeb5465d2 120 ExioBufferedDebounceIn(&inBufferB, 1),
ryood 6:9acaeb5465d2 121 ExioBufferedDebounceIn(&inBufferB, 2),
ryood 6:9acaeb5465d2 122 ExioBufferedDebounceIn(&inBufferB, 3),
ryood 6:9acaeb5465d2 123 ExioBufferedDebounceIn(&inBufferB, 4),
ryood 6:9acaeb5465d2 124 ExioBufferedDebounceIn(&inBufferB, 5),
ryood 6:9acaeb5465d2 125 ExioBufferedDebounceIn(&inBufferB, 6),
ryood 6:9acaeb5465d2 126 ExioBufferedDebounceIn(&inBufferB, 7)
ryood 6:9acaeb5465d2 127 };
ryood 6:9acaeb5465d2 128
ryood 6:9acaeb5465d2 129 // Start Timers
ryood 6:9acaeb5465d2 130 inBufferA.run(10);
ryood 6:9acaeb5465d2 131 inBufferB.run(10);
ryood 6:9acaeb5465d2 132 for (int i = 0; i < 8; i++) {
ryood 6:9acaeb5465d2 133 inA[i].set_debounce_us(10000);
ryood 6:9acaeb5465d2 134 inA[i].set_debounce_us(10000);
ryood 6:9acaeb5465d2 135 }
ryood 6:9acaeb5465d2 136
ryood 6:9acaeb5465d2 137 while (true) {
ryood 6:9acaeb5465d2 138 for (int i = 0; i < 8; i++) {
ryood 6:9acaeb5465d2 139 int va = inA[i].read();
ryood 6:9acaeb5465d2 140 printf("%d ", va);
ryood 6:9acaeb5465d2 141 }
ryood 6:9acaeb5465d2 142 putchar(' ');
ryood 6:9acaeb5465d2 143 for (int i = 0; i < 8; i++) {
ryood 6:9acaeb5465d2 144 int vb = inB[i].read();
ryood 6:9acaeb5465d2 145 printf("%d ", vb);
ryood 6:9acaeb5465d2 146 }
ryood 6:9acaeb5465d2 147 printf("\r\n");
ryood 6:9acaeb5465d2 148 //Thread::wait(10);
ryood 6:9acaeb5465d2 149 }
ryood 6:9acaeb5465d2 150 }
ryood 6:9acaeb5465d2 151
ryood 9:76d17c5cac87 152 bool state = false;
ryood 8:d511db400a09 153 uint8_t count = 0;
ryood 9:76d17c5cac87 154
ryood 8:d511db400a09 155 void pa7Falled() {
ryood 8:d511db400a09 156 count++;
ryood 8:d511db400a09 157 }
ryood 8:d511db400a09 158
ryood 9:76d17c5cac87 159 void pa6Falled() {
ryood 9:76d17c5cac87 160 state = !state;
ryood 9:76d17c5cac87 161 }
ryood 9:76d17c5cac87 162
ryood 8:d511db400a09 163 void testExioBufferedPinDetect()
ryood 8:d511db400a09 164 {
ryood 8:d511db400a09 165 printf("*** Test ExioBufferedPinDetect ***\r\n");
ryood 8:d511db400a09 166
ryood 8:d511db400a09 167 // Reset MCP23S17 (初期化時にreset()が必要)
ryood 8:d511db400a09 168 Exio.reset();
ryood 8:d511db400a09 169
ryood 8:d511db400a09 170 ExioInBuffer inBufferA(&Exio, ExioPortA);
ryood 9:76d17c5cac87 171 ExioBufferedPinDetect pinA6(&inBufferA, 6);
ryood 8:d511db400a09 172 ExioBufferedPinDetect pinA7(&inBufferA, 7);
ryood 8:d511db400a09 173
ryood 8:d511db400a09 174 // assign callback functions
ryood 9:76d17c5cac87 175 pinA6.attach_asserted(&pa6Falled);
ryood 9:76d17c5cac87 176 pinA6.setAssertValue(0);
ryood 8:d511db400a09 177 pinA7.attach_asserted(&pa7Falled);
ryood 8:d511db400a09 178 pinA7.setAssertValue(0);
ryood 8:d511db400a09 179
ryood 8:d511db400a09 180 // Start Timers
ryood 8:d511db400a09 181 inBufferA.run(5);
ryood 9:76d17c5cac87 182 pinA6.setSampleFrequency(10000);
ryood 8:d511db400a09 183 pinA7.setSampleFrequency(10000);
ryood 8:d511db400a09 184
ryood 8:d511db400a09 185 while (true) {
ryood 9:76d17c5cac87 186 printf("%d %d\r\n", state, count);
ryood 8:d511db400a09 187 }
ryood 8:d511db400a09 188 }
ryood 8:d511db400a09 189
ryood 5:526691f54026 190 void testExioBufferedRotaryEncoder()
ryood 5:526691f54026 191 {
ryood 5:526691f54026 192 printf("*** Test ExioBufferedRotaryEncoder ***\r\n");
ryood 5:526691f54026 193
ryood 5:526691f54026 194 // Reset MCP23S17 (初期化時にreset()が必要)
ryood 5:526691f54026 195 Exio.reset();
ryood 5:526691f54026 196
ryood 5:526691f54026 197 ExioInBuffer inBufferA(&Exio, ExioPortA);
ryood 5:526691f54026 198 ExioBufferedRotaryEncoder re1(&inBufferA, 0, 1);
ryood 5:526691f54026 199
ryood 5:526691f54026 200 // Start Timers
ryood 5:526691f54026 201 inBufferA.run(5);
ryood 5:526691f54026 202 re1.setInterval(1000);
ryood 5:526691f54026 203
ryood 5:526691f54026 204 while (true) {
ryood 5:526691f54026 205 int v = re1.getVal();
ryood 5:526691f54026 206 printf("%d\r\n", v);
ryood 5:526691f54026 207 }
ryood 5:526691f54026 208 }
ryood 5:526691f54026 209
ryood 0:7578a6b316b7 210 int main()
ryood 0:7578a6b316b7 211 {
ryood 4:20ee7612edb9 212 //testExioInBuffer();
ryood 5:526691f54026 213 //testExioBufferedIn();
ryood 7:7a17d81db52f 214 //testExioBufferedDebounceIn();
ryood 6:9acaeb5465d2 215 //testExioBufferedRotaryEncoder();
ryood 8:d511db400a09 216 testExioBufferedPinDetect();
ryood 8:d511db400a09 217
ryood 8:d511db400a09 218 /*
ryood 7:7a17d81db52f 219
ryood 7:7a17d81db52f 220 printf("*** Test ExioBufferedContoroller ***\r\n");
ryood 7:7a17d81db52f 221
ryood 7:7a17d81db52f 222 // Reset MCP23S17 (初期化時にreset()が必要)
ryood 7:7a17d81db52f 223 Exio.reset();
ryood 7:7a17d81db52f 224
ryood 7:7a17d81db52f 225 ExioInBuffer inBufferA(&Exio, ExioPortA);
ryood 7:7a17d81db52f 226
ryood 7:7a17d81db52f 227 ExioBufferedDebounceIn pinA6(&inBufferA, 6);
ryood 7:7a17d81db52f 228 ExioBufferedDebounceIn pinA7(&inBufferA, 7);
ryood 7:7a17d81db52f 229
ryood 7:7a17d81db52f 230 // Start Timers
ryood 7:7a17d81db52f 231 inBufferA.run(5);
ryood 7:7a17d81db52f 232 pinA6.set_debounce_us(10000);
ryood 7:7a17d81db52f 233 pinA7.set_debounce_us(10000);
ryood 7:7a17d81db52f 234
ryood 7:7a17d81db52f 235 while(true) {
ryood 7:7a17d81db52f 236 if (pinA6.read()) {
ryood 7:7a17d81db52f 237 state = !state;
ryood 7:7a17d81db52f 238 }
ryood 7:7a17d81db52f 239 if (pinA7.read()) {
ryood 7:7a17d81db52f 240 count++;
ryood 7:7a17d81db52f 241 }
ryood 7:7a17d81db52f 242 printf("%d %d\r\n", state, count);
ryood 7:7a17d81db52f 243 }
ryood 8:d511db400a09 244 */
ryood 0:7578a6b316b7 245 }