Test program for MCP23S17

Dependencies:   ExioController MCP23S17 mbed-rtos mbed

Committer:
ryood
Date:
Fri Nov 04 16:09:09 2016 +0000
Revision:
15:8ee2ff9259bb
Parent:
14:3a2c33129716
keypad 4x4: Debounce

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 10:72220f282a8d 15 bool state = false;
ryood 10:72220f282a8d 16 uint8_t count = 0;
ryood 8:5a1b267eae1d 17
ryood 3:3638468099de 18 // トグル動作
ryood 10:72220f282a8d 19 void pa6Falled() {
ryood 10:72220f282a8d 20 state = !state;
ryood 2:aae9ca66cc87 21 }
ryood 2:aae9ca66cc87 22
ryood 10:72220f282a8d 23 // インクリメント
ryood 10:72220f282a8d 24 void pa7Falled() {
ryood 10:72220f282a8d 25 count++;
ryood 2:aae9ca66cc87 26 }
ryood 2:aae9ca66cc87 27
ryood 10:72220f282a8d 28 int main()
ryood 2:aae9ca66cc87 29 {
ryood 10:72220f282a8d 30 printf("\r\n\n*** ExioMcp23s17Controller test ***\r\n");
ryood 5:69ea7aa2a755 31
ryood 5:69ea7aa2a755 32 Exio.reset();
ryood 13:1688ed45cccd 33
ryood 14:3a2c33129716 34 // set PORTA[6:7] as PinDetects
ryood 11:a057a7a47f6e 35 ExioMcp23s17PinDetect PinA6(&Exio, ExioPortA, 6);
ryood 11:a057a7a47f6e 36 ExioMcp23s17PinDetect PinA7(&Exio, ExioPortA, 7);
ryood 5:69ea7aa2a755 37
ryood 10:72220f282a8d 38 // assign callback functions
ryood 10:72220f282a8d 39 PinA6.attach_asserted(&pa6Falled);
ryood 10:72220f282a8d 40 PinA6.setAssertValue(0);
ryood 5:69ea7aa2a755 41
ryood 10:72220f282a8d 42 PinA7.attach_asserted(&pa7Falled);
ryood 10:72220f282a8d 43 PinA7.setAssertValue(0);
ryood 14:3a2c33129716 44
ryood 14:3a2c33129716 45 // set PORTA[4:5] as DebounceIn
ryood 14:3a2c33129716 46 ExioMcp23s17DebounceIn PinA4(&Exio, ExioPortA, 4);
ryood 14:3a2c33129716 47 ExioMcp23s17DebounceIn PinA5(&Exio, ExioPortA, 5);
ryood 14:3a2c33129716 48 PinA4.mode(PullUp);
ryood 14:3a2c33129716 49 PinA5.mode(PullUp);
ryood 6:4f9d08f8dfcf 50
ryood 10:72220f282a8d 51 // set PORTA[0:1], PORTA[2:3] as a Rotary Encoder
ryood 8:5a1b267eae1d 52 // ExioMcp23s17RotaryEncoder(
ryood 8:5a1b267eae1d 53 // ExioMcp23s17& device, ExioPort port, int pin1, int pin2,
ryood 8:5a1b267eae1d 54 // int min = 0, int max = 100, int val = 50
ryood 8:5a1b267eae1d 55 //);
ryood 11:a057a7a47f6e 56 ExioMcp23s17RotaryEncoder RotEnc1(&Exio, ExioPortA, 0, 1, 0, 100, 50);
ryood 11:a057a7a47f6e 57 ExioMcp23s17RotaryEncoder RotEnc2(&Exio, ExioPortA, 2, 3, 0, 100, 50);
ryood 11:a057a7a47f6e 58
ryood 14:3a2c33129716 59 // set PORTB[0:7] as keypad
ryood 14:3a2c33129716 60 ExioMcp23s17Keypad4x4 keypad(&Exio, ExioPortB);
ryood 13:1688ed45cccd 61
ryood 14:3a2c33129716 62 // Start Tickers
ryood 14:3a2c33129716 63 PinA6.setSampleFrequency(10000);
ryood 14:3a2c33129716 64 PinA7.setSampleFrequency(10000);
ryood 14:3a2c33129716 65 PinA4.set_debounce_us(10000);
ryood 14:3a2c33129716 66 PinA5.set_debounce_us(10000);
ryood 14:3a2c33129716 67 RotEnc1.setInterval(1000);
ryood 14:3a2c33129716 68 RotEnc2.setInterval(1000);
ryood 14:3a2c33129716 69 keypad.setSampleFrequency(10000);
ryood 10:72220f282a8d 70
ryood 6:4f9d08f8dfcf 71 while (true) {
ryood 14:3a2c33129716 72 int pinVal1, pinVal2, reVal1, reVal2, kpVal;
ryood 14:3a2c33129716 73 pinVal1 = PinA4.read();
ryood 14:3a2c33129716 74 pinVal2 = PinA5.read();
ryood 11:a057a7a47f6e 75 reVal1 = RotEnc1.getVal();
ryood 11:a057a7a47f6e 76 reVal2 = RotEnc2.getVal();
ryood 14:3a2c33129716 77 kpVal = keypad.read();
ryood 14:3a2c33129716 78 printf("state:%d count:%d v1:%d v2:%d RE1:%d RE2:%d KP:%d\r\n", state, count, pinVal1, pinVal2, reVal1, reVal2, kpVal);
ryood 11:a057a7a47f6e 79
ryood 14:3a2c33129716 80 Thread::wait(1);
ryood 6:4f9d08f8dfcf 81 }
ryood 12:5f0db7a87485 82
ryood 13:1688ed45cccd 83 //delete[] psw;
ryood 6:4f9d08f8dfcf 84 }