Test program for MCP23S17

Dependencies:   ExioController MCP23S17 mbed-rtos mbed

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?

UserRevisionLine numberNew 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 }