Test program for MCP23S17

Dependencies:   ExioController MCP23S17 mbed-rtos mbed

Committer:
ryood
Date:
Wed Nov 02 06:13:07 2016 +0000
Revision:
8:5a1b267eae1d
Parent:
7:6c63d0f70ebc
Child:
9:01dfe4fe7d21
Exchange PortA and PortB

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