Test program for MCP23S17

Dependencies:   ExioController MCP23S17 mbed-rtos mbed

Committer:
ryood
Date:
Wed Nov 02 09:15:27 2016 +0000
Revision:
9:01dfe4fe7d21
Parent:
8:5a1b267eae1d
Child:
10:72220f282a8d
Impl. ExioMcp23s17Keypad4x4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:0b1ae70a694b 1 #include "mbed.h"
ryood 0:0b1ae70a694b 2 #include "rtos.h"
ryood 0:0b1ae70a694b 3 #include "ExioMcp23s17.h"
ryood 1:e0679b70b51d 4 #include "ExioMcp23s17DigitalIn.h"
ryood 2:aae9ca66cc87 5 #include "ExioMcp23s17PinDetect.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 2:aae9ca66cc87 15 /*
ryood 0:0b1ae70a694b 16 void ExioMcp23s17Test()
ryood 0:0b1ae70a694b 17 {
ryood 0:0b1ae70a694b 18 printf("\r\n\n*** ExioMcp23s17 ***\r\n");
ryood 0:0b1ae70a694b 19
ryood 0:0b1ae70a694b 20 // Reset MCP23S17
ryood 0:0b1ae70a694b 21 Exio.reset();
ryood 0:0b1ae70a694b 22
ryood 0:0b1ae70a694b 23 // PORTA output
ryood 0:0b1ae70a694b 24 Exio.ioDirection(ExioPortA, 0x00);
ryood 0:0b1ae70a694b 25
ryood 0:0b1ae70a694b 26 // PORTB input
ryood 0:0b1ae70a694b 27 Exio.ioDirection(ExioPortB, 0xFF);
ryood 0:0b1ae70a694b 28 // PORTB pull-up
ryood 0:0b1ae70a694b 29 Exio.ioPullup(ExioPortB, 0xFF);
ryood 0:0b1ae70a694b 30 // PORTB invert polarity
ryood 0:0b1ae70a694b 31 Exio.ioPolarity(ExioPortB, 0xFF);
ryood 0:0b1ae70a694b 32
ryood 1:e0679b70b51d 33 // LED Check (PortA)
ryood 0:0b1ae70a694b 34 for (int i = 0; i < 8; i++) {
ryood 0:0b1ae70a694b 35 Exio.writePort(ExioPortA, 1 << i);
ryood 0:0b1ae70a694b 36 wait(0.1);
ryood 0:0b1ae70a694b 37 }
ryood 1:e0679b70b51d 38 Exio.writePort(ExioPortA, 0x00);
ryood 0:0b1ae70a694b 39
ryood 0:0b1ae70a694b 40 while (true) {
ryood 1:e0679b70b51d 41 uint8_t data = Exio.readPort(ExioPortB);
ryood 0:0b1ae70a694b 42 wait_us(1);
ryood 0:0b1ae70a694b 43 Exio.writePort(ExioPortA, data);
ryood 0:0b1ae70a694b 44 }
ryood 0:0b1ae70a694b 45 }
ryood 8:5a1b267eae1d 46 */
ryood 9:01dfe4fe7d21 47 /*
ryood 8:5a1b267eae1d 48 void ExioMcp23s17RevTest()
ryood 8:5a1b267eae1d 49 {
ryood 8:5a1b267eae1d 50 printf("\r\n\n*** ExioMcp23s17 Rev ***\r\n");
ryood 8:5a1b267eae1d 51
ryood 8:5a1b267eae1d 52 // Reset MCP23S17
ryood 8:5a1b267eae1d 53 Exio.reset();
ryood 8:5a1b267eae1d 54
ryood 8:5a1b267eae1d 55 // PORTB output
ryood 8:5a1b267eae1d 56 Exio.ioDirection(ExioPortB, 0x00);
ryood 8:5a1b267eae1d 57
ryood 8:5a1b267eae1d 58 // PORTA input
ryood 8:5a1b267eae1d 59 Exio.ioDirection(ExioPortA, 0xFF);
ryood 8:5a1b267eae1d 60 // PORTB pull-up
ryood 8:5a1b267eae1d 61 Exio.ioPullup(ExioPortA, 0xFF);
ryood 8:5a1b267eae1d 62 // PORTB invert polarity
ryood 8:5a1b267eae1d 63 Exio.ioPolarity(ExioPortA, 0xFF);
ryood 8:5a1b267eae1d 64
ryood 8:5a1b267eae1d 65 // LED Check (PortB)
ryood 8:5a1b267eae1d 66 for (int i = 0; i < 8; i++) {
ryood 8:5a1b267eae1d 67 Exio.writePort(ExioPortB, 1 << i);
ryood 8:5a1b267eae1d 68 wait(0.1);
ryood 8:5a1b267eae1d 69 }
ryood 8:5a1b267eae1d 70 Exio.writePort(ExioPortB, 0x00);
ryood 8:5a1b267eae1d 71
ryood 8:5a1b267eae1d 72 while (true) {
ryood 8:5a1b267eae1d 73 uint8_t data = Exio.readPort(ExioPortA);
ryood 8:5a1b267eae1d 74 wait_us(1);
ryood 8:5a1b267eae1d 75 Exio.writePort(ExioPortB, data);
ryood 8:5a1b267eae1d 76 }
ryood 8:5a1b267eae1d 77 }
ryood 9:01dfe4fe7d21 78 */
ryood 8:5a1b267eae1d 79 /*
ryood 1:e0679b70b51d 80 void ExioMcp23s17DigitalInTest()
ryood 1:e0679b70b51d 81 {
ryood 1:e0679b70b51d 82 printf("\r\n\n*** ExioMcp23s17DigitalIn test ***\r\n");
ryood 1:e0679b70b51d 83
ryood 1:e0679b70b51d 84 Exio.reset();
ryood 1:e0679b70b51d 85
ryood 1:e0679b70b51d 86 // set PORTA as output
ryood 1:e0679b70b51d 87 Exio.ioDirection(ExioPortA, 0x00);
ryood 1:e0679b70b51d 88
ryood 1:e0679b70b51d 89 // set PORTB as input via ExioDigitalIn
ryood 1:e0679b70b51d 90 ExioMcp23s17DigitalIn inB0(Exio, ExioPortB, 0);
ryood 1:e0679b70b51d 91 ExioMcp23s17DigitalIn inB1(Exio, ExioPortB, 1);
ryood 1:e0679b70b51d 92 ExioMcp23s17DigitalIn inB2(Exio, ExioPortB, 2);
ryood 1:e0679b70b51d 93 ExioMcp23s17DigitalIn inB3(Exio, ExioPortB, 3);
ryood 1:e0679b70b51d 94 ExioMcp23s17DigitalIn inB4(Exio, ExioPortB, 4);
ryood 1:e0679b70b51d 95 ExioMcp23s17DigitalIn inB5(Exio, ExioPortB, 5);
ryood 1:e0679b70b51d 96 ExioMcp23s17DigitalIn inB6(Exio, ExioPortB, 6);
ryood 1:e0679b70b51d 97 ExioMcp23s17DigitalIn inB7(Exio, ExioPortB, 7);
ryood 1:e0679b70b51d 98
ryood 1:e0679b70b51d 99 inB0.mode(PullUp);
ryood 1:e0679b70b51d 100 inB1.mode(PullUp);
ryood 1:e0679b70b51d 101 inB2.mode(PullUp);
ryood 1:e0679b70b51d 102 inB3.mode(PullUp);
ryood 1:e0679b70b51d 103 inB4.mode(PullUp);
ryood 1:e0679b70b51d 104 inB5.mode(PullUp);
ryood 1:e0679b70b51d 105 inB6.mode(PullUp);
ryood 1:e0679b70b51d 106 inB7.mode(PullUp);
ryood 1:e0679b70b51d 107
ryood 1:e0679b70b51d 108 // LED Check (PortA)
ryood 1:e0679b70b51d 109 for (int i = 0; i < 8; i++) {
ryood 1:e0679b70b51d 110 Exio.writePort(ExioPortA, 1 << i);
ryood 1:e0679b70b51d 111 wait(0.1);
ryood 1:e0679b70b51d 112 }
ryood 1:e0679b70b51d 113 Exio.writePort(ExioPortA, 0x00);
ryood 1:e0679b70b51d 114
ryood 1:e0679b70b51d 115 while (true) {
ryood 1:e0679b70b51d 116
ryood 1:e0679b70b51d 117 // read PORTB via ExioMcp23s17DigitalIn
ryood 1:e0679b70b51d 118 uint8_t data = 0;
ryood 1:e0679b70b51d 119 data |= inB0.read();
ryood 1:e0679b70b51d 120 data |= inB1.read() << 1;
ryood 1:e0679b70b51d 121 data |= inB2.read() << 2;
ryood 1:e0679b70b51d 122 data |= inB3.read() << 3;
ryood 1:e0679b70b51d 123 data |= inB4.read() << 4;
ryood 1:e0679b70b51d 124 data |= inB5.read() << 5;
ryood 1:e0679b70b51d 125 data |= inB6.read() << 6;
ryood 1:e0679b70b51d 126 data |= inB7.read() << 7;
ryood 1:e0679b70b51d 127
ryood 1:e0679b70b51d 128 // write PORTA
ryood 1:e0679b70b51d 129 Exio.writePort(ExioPortA, data);
ryood 1:e0679b70b51d 130 }
ryood 1:e0679b70b51d 131 }
ryood 2:aae9ca66cc87 132 */
ryood 2:aae9ca66cc87 133
ryood 6:4f9d08f8dfcf 134 /*
ryood 3:3638468099de 135 // トグル動作
ryood 3:3638468099de 136 bool pb0state = false;
ryood 2:aae9ca66cc87 137 void pb0Falled() {
ryood 3:3638468099de 138 uint8_t data = Exio.readPort(ExioPortA);
ryood 3:3638468099de 139 pb0state = !pb0state;
ryood 3:3638468099de 140 if (pb0state) {
ryood 3:3638468099de 141 data |= (1 << 0);
ryood 3:3638468099de 142 } else {
ryood 3:3638468099de 143 data &= ~(1 << 0);
ryood 3:3638468099de 144 }
ryood 3:3638468099de 145 Exio.writePort(ExioPortA, data);
ryood 2:aae9ca66cc87 146 }
ryood 2:aae9ca66cc87 147
ryood 2:aae9ca66cc87 148 void pb1Falled() {
ryood 2:aae9ca66cc87 149 Exio.writePort(ExioPortA, (1 << 1));
ryood 2:aae9ca66cc87 150 }
ryood 2:aae9ca66cc87 151
ryood 2:aae9ca66cc87 152 void pb2Falled() {
ryood 2:aae9ca66cc87 153 Exio.writePort(ExioPortA, (1 << 2));
ryood 2:aae9ca66cc87 154 }
ryood 2:aae9ca66cc87 155
ryood 2:aae9ca66cc87 156 void pb3Falled() {
ryood 2:aae9ca66cc87 157 Exio.writePort(ExioPortA, (1 << 3));
ryood 2:aae9ca66cc87 158 }
ryood 2:aae9ca66cc87 159
ryood 2:aae9ca66cc87 160 void pb4Falled() {
ryood 2:aae9ca66cc87 161 Exio.writePort(ExioPortA, (1 << 4));
ryood 2:aae9ca66cc87 162 }
ryood 2:aae9ca66cc87 163
ryood 2:aae9ca66cc87 164 void pb5Falled() {
ryood 2:aae9ca66cc87 165 Exio.writePort(ExioPortA, (1 << 5));
ryood 2:aae9ca66cc87 166 }
ryood 2:aae9ca66cc87 167
ryood 2:aae9ca66cc87 168 void pb6Falled() {
ryood 2:aae9ca66cc87 169 Exio.writePort(ExioPortA, (1 << 6));
ryood 2:aae9ca66cc87 170 }
ryood 2:aae9ca66cc87 171
ryood 2:aae9ca66cc87 172 void pb7Falled() {
ryood 2:aae9ca66cc87 173 Exio.writePort(ExioPortA, (1 << 7));
ryood 2:aae9ca66cc87 174 }
ryood 6:4f9d08f8dfcf 175 */
ryood 6:4f9d08f8dfcf 176
ryood 5:69ea7aa2a755 177 /*
ryood 2:aae9ca66cc87 178 void ExioMcp23s17PinDetectTest()
ryood 2:aae9ca66cc87 179 {
ryood 2:aae9ca66cc87 180 printf("\r\n\n*** ExioMcp23s17PinDetect test ***\r\n");
ryood 2:aae9ca66cc87 181
ryood 2:aae9ca66cc87 182 Exio.reset();
ryood 2:aae9ca66cc87 183
ryood 2:aae9ca66cc87 184 // set PORTA as output
ryood 2:aae9ca66cc87 185 Exio.ioDirection(ExioPortA, 0x00);
ryood 2:aae9ca66cc87 186
ryood 2:aae9ca66cc87 187 // create PORTB pins as inputs via ExioMcp23s17PinDetect
ryood 2:aae9ca66cc87 188 ExioMcp23s17PinDetect PinB0(Exio, ExioPortB, 0);
ryood 2:aae9ca66cc87 189 ExioMcp23s17PinDetect PinB1(Exio, ExioPortB, 1);
ryood 2:aae9ca66cc87 190 ExioMcp23s17PinDetect PinB2(Exio, ExioPortB, 2);
ryood 2:aae9ca66cc87 191 ExioMcp23s17PinDetect PinB3(Exio, ExioPortB, 3);
ryood 2:aae9ca66cc87 192 ExioMcp23s17PinDetect PinB4(Exio, ExioPortB, 4);
ryood 2:aae9ca66cc87 193 ExioMcp23s17PinDetect PinB5(Exio, ExioPortB, 5);
ryood 2:aae9ca66cc87 194 ExioMcp23s17PinDetect PinB6(Exio, ExioPortB, 6);
ryood 2:aae9ca66cc87 195 ExioMcp23s17PinDetect PinB7(Exio, ExioPortB, 7);
ryood 2:aae9ca66cc87 196
ryood 2:aae9ca66cc87 197 // assign callback functions
ryood 2:aae9ca66cc87 198 PinB0.attach_asserted(&pb0Falled);
ryood 2:aae9ca66cc87 199 PinB0.setAssertValue(0);
ryood 2:aae9ca66cc87 200 PinB0.setSampleFrequency();
ryood 2:aae9ca66cc87 201
ryood 2:aae9ca66cc87 202 PinB1.attach_asserted(&pb1Falled);
ryood 2:aae9ca66cc87 203 PinB1.setAssertValue(0);
ryood 2:aae9ca66cc87 204 PinB1.setSampleFrequency();
ryood 2:aae9ca66cc87 205
ryood 2:aae9ca66cc87 206 PinB2.attach_asserted(&pb2Falled);
ryood 2:aae9ca66cc87 207 PinB2.setAssertValue(0);
ryood 2:aae9ca66cc87 208 PinB2.setSampleFrequency();
ryood 2:aae9ca66cc87 209
ryood 2:aae9ca66cc87 210 PinB3.attach_asserted(&pb3Falled);
ryood 2:aae9ca66cc87 211 PinB3.setAssertValue(0);
ryood 2:aae9ca66cc87 212 PinB3.setSampleFrequency();
ryood 2:aae9ca66cc87 213
ryood 2:aae9ca66cc87 214 PinB4.attach_asserted(&pb4Falled);
ryood 2:aae9ca66cc87 215 PinB4.setAssertValue(0);
ryood 2:aae9ca66cc87 216 PinB4.setSampleFrequency();
ryood 2:aae9ca66cc87 217
ryood 2:aae9ca66cc87 218 PinB5.attach_asserted(&pb5Falled);
ryood 2:aae9ca66cc87 219 PinB5.setAssertValue(0);
ryood 2:aae9ca66cc87 220 PinB5.setSampleFrequency();
ryood 2:aae9ca66cc87 221
ryood 2:aae9ca66cc87 222 PinB6.attach_asserted(&pb6Falled);
ryood 2:aae9ca66cc87 223 PinB6.setAssertValue(0);
ryood 2:aae9ca66cc87 224 PinB6.setSampleFrequency();
ryood 2:aae9ca66cc87 225
ryood 2:aae9ca66cc87 226 PinB7.attach_asserted(&pb7Falled);
ryood 2:aae9ca66cc87 227 PinB7.setAssertValue(0);
ryood 2:aae9ca66cc87 228 PinB7.setSampleFrequency();
ryood 2:aae9ca66cc87 229
ryood 2:aae9ca66cc87 230
ryood 2:aae9ca66cc87 231 // LED Check (PortA)
ryood 2:aae9ca66cc87 232 for (int i = 0; i < 8; i++) {
ryood 2:aae9ca66cc87 233 Exio.writePort(ExioPortA, 1 << i);
ryood 2:aae9ca66cc87 234 wait(0.1);
ryood 2:aae9ca66cc87 235 }
ryood 2:aae9ca66cc87 236 Exio.writePort(ExioPortA, 0x00);
ryood 2:aae9ca66cc87 237
ryood 2:aae9ca66cc87 238 while (true) {
ryood 2:aae9ca66cc87 239 }
ryood 2:aae9ca66cc87 240 }
ryood 5:69ea7aa2a755 241 */
ryood 5:69ea7aa2a755 242
ryood 6:4f9d08f8dfcf 243 /*
ryood 5:69ea7aa2a755 244 void ExioMcp23s17PinDetectPullModeTest()
ryood 5:69ea7aa2a755 245 {
ryood 5:69ea7aa2a755 246 printf("\r\n\n*** ExioMcp23s17PinDetect PullMode test ***\r\n");
ryood 5:69ea7aa2a755 247
ryood 5:69ea7aa2a755 248 Exio.reset();
ryood 5:69ea7aa2a755 249
ryood 5:69ea7aa2a755 250 // set PORTA as output
ryood 5:69ea7aa2a755 251 Exio.ioDirection(ExioPortA, 0x00);
ryood 5:69ea7aa2a755 252
ryood 5:69ea7aa2a755 253 // create PORTB pins as inputs via ExioMcp23s17PinDetect
ryood 5:69ea7aa2a755 254 ExioMcp23s17PinDetect PinB0(Exio, ExioPortB, 0, PullUp);
ryood 5:69ea7aa2a755 255 ExioMcp23s17PinDetect PinB1(Exio, ExioPortB, 1, PullNone);
ryood 5:69ea7aa2a755 256 ExioMcp23s17PinDetect PinB2(Exio, ExioPortB, 2, PullUp);
ryood 5:69ea7aa2a755 257 ExioMcp23s17PinDetect PinB3(Exio, ExioPortB, 3, PullNone);
ryood 5:69ea7aa2a755 258 ExioMcp23s17PinDetect PinB4(Exio, ExioPortB, 4, PullUp);
ryood 5:69ea7aa2a755 259 ExioMcp23s17PinDetect PinB5(Exio, ExioPortB, 5, PullNone);
ryood 5:69ea7aa2a755 260 ExioMcp23s17PinDetect PinB6(Exio, ExioPortB, 6, PullUp);
ryood 5:69ea7aa2a755 261 ExioMcp23s17PinDetect PinB7(Exio, ExioPortB, 7, PullNone);
ryood 5:69ea7aa2a755 262
ryood 5:69ea7aa2a755 263 PinB1.mode(PullUp);
ryood 5:69ea7aa2a755 264 PinB3.mode(PullUp);
ryood 5:69ea7aa2a755 265 PinB5.mode(PullUp);
ryood 5:69ea7aa2a755 266 PinB7.mode(PullUp);
ryood 5:69ea7aa2a755 267
ryood 5:69ea7aa2a755 268 //PinB7.mode(PullDown);
ryood 5:69ea7aa2a755 269
ryood 5:69ea7aa2a755 270 // assign callback functions
ryood 5:69ea7aa2a755 271 PinB0.attach_asserted(&pb0Falled);
ryood 5:69ea7aa2a755 272 PinB0.setAssertValue(0);
ryood 5:69ea7aa2a755 273 PinB0.setSampleFrequency();
ryood 5:69ea7aa2a755 274
ryood 5:69ea7aa2a755 275 PinB1.attach_asserted(&pb1Falled);
ryood 5:69ea7aa2a755 276 PinB1.setAssertValue(0);
ryood 5:69ea7aa2a755 277 PinB1.setSampleFrequency();
ryood 5:69ea7aa2a755 278
ryood 5:69ea7aa2a755 279 PinB2.attach_asserted(&pb2Falled);
ryood 5:69ea7aa2a755 280 PinB2.setAssertValue(0);
ryood 5:69ea7aa2a755 281 PinB2.setSampleFrequency();
ryood 5:69ea7aa2a755 282
ryood 5:69ea7aa2a755 283 PinB3.attach_asserted(&pb3Falled);
ryood 5:69ea7aa2a755 284 PinB3.setAssertValue(0);
ryood 5:69ea7aa2a755 285 PinB3.setSampleFrequency();
ryood 5:69ea7aa2a755 286
ryood 5:69ea7aa2a755 287 PinB4.attach_asserted(&pb4Falled);
ryood 5:69ea7aa2a755 288 PinB4.setAssertValue(0);
ryood 5:69ea7aa2a755 289 PinB4.setSampleFrequency();
ryood 5:69ea7aa2a755 290
ryood 5:69ea7aa2a755 291 PinB5.attach_asserted(&pb5Falled);
ryood 5:69ea7aa2a755 292 PinB5.setAssertValue(0);
ryood 5:69ea7aa2a755 293 PinB5.setSampleFrequency();
ryood 5:69ea7aa2a755 294
ryood 5:69ea7aa2a755 295 PinB6.attach_asserted(&pb6Falled);
ryood 5:69ea7aa2a755 296 PinB6.setAssertValue(0);
ryood 5:69ea7aa2a755 297 PinB6.setSampleFrequency();
ryood 5:69ea7aa2a755 298
ryood 5:69ea7aa2a755 299 PinB7.attach_asserted(&pb7Falled);
ryood 5:69ea7aa2a755 300 PinB7.setAssertValue(0);
ryood 5:69ea7aa2a755 301 PinB7.setSampleFrequency();
ryood 5:69ea7aa2a755 302
ryood 5:69ea7aa2a755 303
ryood 5:69ea7aa2a755 304 // LED Check (PortA)
ryood 5:69ea7aa2a755 305 for (int i = 0; i < 8; i++) {
ryood 5:69ea7aa2a755 306 Exio.writePort(ExioPortA, 1 << i);
ryood 5:69ea7aa2a755 307 wait(0.1);
ryood 5:69ea7aa2a755 308 }
ryood 5:69ea7aa2a755 309 Exio.writePort(ExioPortA, 0x00);
ryood 5:69ea7aa2a755 310
ryood 5:69ea7aa2a755 311 while (true) {
ryood 5:69ea7aa2a755 312 }
ryood 5:69ea7aa2a755 313 }
ryood 6:4f9d08f8dfcf 314 */
ryood 8:5a1b267eae1d 315 /*
ryood 6:4f9d08f8dfcf 316 void ExioMcp23s17RotaryEncoderTest()
ryood 6:4f9d08f8dfcf 317 {
ryood 6:4f9d08f8dfcf 318 printf("\r\n\n*** ExioMcp23s17RotaryEncoder test ***\r\n");
ryood 6:4f9d08f8dfcf 319
ryood 6:4f9d08f8dfcf 320 Exio.reset();
ryood 6:4f9d08f8dfcf 321
ryood 6:4f9d08f8dfcf 322 // set PORTA as output
ryood 6:4f9d08f8dfcf 323 Exio.ioDirection(ExioPortA, 0x00);
ryood 6:4f9d08f8dfcf 324
ryood 6:4f9d08f8dfcf 325 // LED Check (PortA)
ryood 6:4f9d08f8dfcf 326 for (int i = 0; i < 8; i++) {
ryood 6:4f9d08f8dfcf 327 Exio.writePort(ExioPortA, 1 << i);
ryood 7:6c63d0f70ebc 328 wait(0.2);
ryood 6:4f9d08f8dfcf 329 }
ryood 6:4f9d08f8dfcf 330 Exio.writePort(ExioPortA, 0x00);
ryood 7:6c63d0f70ebc 331
ryood 7:6c63d0f70ebc 332 // set PORTB[0..1] as RotaryEncoder
ryood 8:5a1b267eae1d 333
ryood 8:5a1b267eae1d 334 // ExioMcp23s17RotaryEncoder(
ryood 8:5a1b267eae1d 335 // ExioMcp23s17& device, ExioPort port, int pin1, int pin2,
ryood 8:5a1b267eae1d 336 // int min = 0, int max = 100, int val = 50
ryood 8:5a1b267eae1d 337 //);
ryood 8:5a1b267eae1d 338
ryood 7:6c63d0f70ebc 339 ExioMcp23s17RotaryEncoder RotEnc1(Exio, ExioPortB, 0, 1, 0, 0x0f, 0);
ryood 7:6c63d0f70ebc 340
ryood 7:6c63d0f70ebc 341 // set PORTB[2..3] as RotaryEncoder
ryood 7:6c63d0f70ebc 342 //RotaryEncoder::RotaryEncoder(ExioMcp23s17DigitalIn& _pin1, ExioMcp23s17DigitalIn& _pin2, int min, int max, int val)
ryood 7:6c63d0f70ebc 343 ExioMcp23s17RotaryEncoder RotEnc2(Exio, ExioPortB, 2, 3, 0, 0x0f, 0);
ryood 6:4f9d08f8dfcf 344
ryood 6:4f9d08f8dfcf 345 while (true) {
ryood 7:6c63d0f70ebc 346 int v1 = RotEnc1.getVal();
ryood 7:6c63d0f70ebc 347 int v2 = RotEnc2.getVal();
ryood 7:6c63d0f70ebc 348 uint8_t data = ((uint8_t)v2 << 4) | (uint8_t)v1;
ryood 8:5a1b267eae1d 349 //Exio.writePort(ExioPortA, data);
ryood 8:5a1b267eae1d 350 printf("%d %d\r\n", v1, v2);
ryood 7:6c63d0f70ebc 351 Thread::wait(10);
ryood 6:4f9d08f8dfcf 352 }
ryood 6:4f9d08f8dfcf 353 }
ryood 8:5a1b267eae1d 354 */
ryood 9:01dfe4fe7d21 355
ryood 9:01dfe4fe7d21 356 void ExioMcp23s17Keypad4x4Test()
ryood 9:01dfe4fe7d21 357 {
ryood 9:01dfe4fe7d21 358 printf("\r\n\n*** ExioMcp23s17Keypad4x4 test ***\r\n");
ryood 9:01dfe4fe7d21 359
ryood 9:01dfe4fe7d21 360 Exio.reset();
ryood 9:01dfe4fe7d21 361
ryood 9:01dfe4fe7d21 362 // set PORTB as output
ryood 9:01dfe4fe7d21 363 Exio.ioDirection(ExioPortB, 0x00);
ryood 9:01dfe4fe7d21 364
ryood 9:01dfe4fe7d21 365 // LED Check (PortB)
ryood 9:01dfe4fe7d21 366 for (int i = 0; i < 8; i++) {
ryood 9:01dfe4fe7d21 367 Exio.writePort(ExioPortB, 1 << i);
ryood 9:01dfe4fe7d21 368 wait(0.2);
ryood 9:01dfe4fe7d21 369 }
ryood 9:01dfe4fe7d21 370 Exio.writePort(ExioPortB, 0x00);
ryood 9:01dfe4fe7d21 371
ryood 9:01dfe4fe7d21 372 // set PORTA as Keypad 4x4
ryood 9:01dfe4fe7d21 373 ExioMcp23s17Keypad4x4 keypad(Exio, ExioPortA);
ryood 9:01dfe4fe7d21 374
ryood 9:01dfe4fe7d21 375 while (true) {
ryood 9:01dfe4fe7d21 376 int v = keypad.keyScan();
ryood 9:01dfe4fe7d21 377 //printf("%d\r\n", v);
ryood 9:01dfe4fe7d21 378 if (v != -1) {
ryood 9:01dfe4fe7d21 379 Exio.writePort(ExioPortB, v);
ryood 9:01dfe4fe7d21 380 }
ryood 9:01dfe4fe7d21 381 }
ryood 9:01dfe4fe7d21 382 }
ryood 9:01dfe4fe7d21 383
ryood 0:0b1ae70a694b 384 int main()
ryood 0:0b1ae70a694b 385 {
ryood 1:e0679b70b51d 386 //ExioMcp23s17Test();
ryood 9:01dfe4fe7d21 387 //ExioMcp23s17RevTest();
ryood 2:aae9ca66cc87 388 //ExioMcp23s17DigitalInTest();
ryood 5:69ea7aa2a755 389 //ExioMcp23s17PinDetectTest();
ryood 6:4f9d08f8dfcf 390 //ExioMcp23s17PinDetectPullModeTest();
ryood 8:5a1b267eae1d 391 //ExioMcp23s17RotaryEncoderTest();
ryood 9:01dfe4fe7d21 392 ExioMcp23s17Keypad4x4Test();
ryood 1:e0679b70b51d 393 }