test program for the MCP23009 class, MCP23009 is a I2C general IO extender
Dependencies: DevInterfaces I2Cinterfaces MCP23009 mbed
main.cpp@0:30918bdf8a94, 2016-06-03 (annotated)
- Committer:
- wbeaumont
- Date:
- Fri Jun 03 16:04:04 2016 +0000
- Revision:
- 0:30918bdf8a94
simple test program for the MCP23009 I2C general purpose IO extender
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wbeaumont | 0:30918bdf8a94 | 1 | #include "mbed.h" |
wbeaumont | 0:30918bdf8a94 | 2 | |
wbeaumont | 0:30918bdf8a94 | 3 | |
wbeaumont | 0:30918bdf8a94 | 4 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
wbeaumont | 0:30918bdf8a94 | 5 | PinName const SDA = PTE25; |
wbeaumont | 0:30918bdf8a94 | 6 | PinName const SCL = PTE24; |
wbeaumont | 0:30918bdf8a94 | 7 | #elif defined (TARGET_KL05Z) |
wbeaumont | 0:30918bdf8a94 | 8 | PinName const SDA = PTB4; |
wbeaumont | 0:30918bdf8a94 | 9 | PinName const SCL = PTB3; |
wbeaumont | 0:30918bdf8a94 | 10 | #elif defined (TARGET_K20D50M) |
wbeaumont | 0:30918bdf8a94 | 11 | PinName const SDA = PTB1; |
wbeaumont | 0:30918bdf8a94 | 12 | PinName const SCL = PTB0; |
wbeaumont | 0:30918bdf8a94 | 13 | #else |
wbeaumont | 0:30918bdf8a94 | 14 | #error TARGET NOT DEFINED |
wbeaumont | 0:30918bdf8a94 | 15 | #endif |
wbeaumont | 0:30918bdf8a94 | 16 | |
wbeaumont | 0:30918bdf8a94 | 17 | #include "I2C.h" |
wbeaumont | 0:30918bdf8a94 | 18 | #include "I2CInterface.h" |
wbeaumont | 0:30918bdf8a94 | 19 | #include "MBEDI2CInterface.h" |
wbeaumont | 0:30918bdf8a94 | 20 | |
wbeaumont | 0:30918bdf8a94 | 21 | #include "dev_interface_def.h" |
wbeaumont | 0:30918bdf8a94 | 22 | |
wbeaumont | 0:30918bdf8a94 | 23 | #include "mcp23009.h" |
wbeaumont | 0:30918bdf8a94 | 24 | |
wbeaumont | 0:30918bdf8a94 | 25 | MBEDI2CInterface mbedi2c( SDA, SCL); |
wbeaumont | 0:30918bdf8a94 | 26 | MBEDI2CInterface* mbedi2cp= &mbedi2c ; |
wbeaumont | 0:30918bdf8a94 | 27 | I2CInterface* i2cdev= mbedi2cp; |
wbeaumont | 0:30918bdf8a94 | 28 | |
wbeaumont | 0:30918bdf8a94 | 29 | |
wbeaumont | 0:30918bdf8a94 | 30 | Serial pc(USBTX, USBRX); |
wbeaumont | 0:30918bdf8a94 | 31 | |
wbeaumont | 0:30918bdf8a94 | 32 | |
wbeaumont | 0:30918bdf8a94 | 33 | int main(void) |
wbeaumont | 0:30918bdf8a94 | 34 | { |
wbeaumont | 0:30918bdf8a94 | 35 | |
wbeaumont | 0:30918bdf8a94 | 36 | PwmOut rled(LED1); |
wbeaumont | 0:30918bdf8a94 | 37 | PwmOut gled(LED2); |
wbeaumont | 0:30918bdf8a94 | 38 | PwmOut bled(LED3); |
wbeaumont | 0:30918bdf8a94 | 39 | |
wbeaumont | 0:30918bdf8a94 | 40 | MCP23009 gpio(i2cdev, 0); |
wbeaumont | 0:30918bdf8a94 | 41 | |
wbeaumont | 0:30918bdf8a94 | 42 | printf("mcp23009 test program %s %s \n\r",__DATE__,__TIME__); |
wbeaumont | 0:30918bdf8a94 | 43 | int pincnt=0; |
wbeaumont | 0:30918bdf8a94 | 44 | int pinv; |
wbeaumont | 0:30918bdf8a94 | 45 | if( gpio.set_as_output(0,0)) {printf("(I2C) error setting pin 0 as ouput\n\r");} |
wbeaumont | 0:30918bdf8a94 | 46 | if( gpio.set_as_input(1,0)) {printf("(I2C) error setting pin 1 as input\n\r");} |
wbeaumont | 0:30918bdf8a94 | 47 | if( gpio.set_as_output(2,0)) {printf("(I2C) error setting pin 2 as ouput\n\r");} |
wbeaumont | 0:30918bdf8a94 | 48 | if( gpio.set_as_output(3,1)) {printf("(I2C) error setting pin 3 as ouput\n\r");} |
wbeaumont | 0:30918bdf8a94 | 49 | if( gpio.set_as_output(4,1)) {printf("(I2C) error setting pin 4 as ouput\n\r");} |
wbeaumont | 0:30918bdf8a94 | 50 | if( gpio.set_as_output(5,1)) {printf("(I2C) error setting pin 5 as ouput\n\r");} |
wbeaumont | 0:30918bdf8a94 | 51 | if( gpio.set_as_output(6,0)) {printf("(I2C) error setting pin 6 as ouput\n\r");} |
wbeaumont | 0:30918bdf8a94 | 52 | if( gpio.set_as_output(7,1)) {printf("(I2C) error setting pin 7 as ouput\n\r");} |
wbeaumont | 0:30918bdf8a94 | 53 | int value; |
wbeaumont | 0:30918bdf8a94 | 54 | while (true) { |
wbeaumont | 0:30918bdf8a94 | 55 | value = gpio.status(pincnt); |
wbeaumont | 0:30918bdf8a94 | 56 | printf("pinnr : current status : %d\n\r",value); |
wbeaumont | 0:30918bdf8a94 | 57 | value = gpio.status(8); |
wbeaumont | 0:30918bdf8a94 | 58 | printf("all pins: current status : 0x%02X\n\r",value); |
wbeaumont | 0:30918bdf8a94 | 59 | value = gpio.outp_status(8); |
wbeaumont | 0:30918bdf8a94 | 60 | printf("all pins: current outputstatus : 0x%02X\n\r",value); |
wbeaumont | 0:30918bdf8a94 | 61 | printf("give new value for pinnr:%d ",pincnt); |
wbeaumont | 0:30918bdf8a94 | 62 | scanf("%d",&pinv); printf("\n\r"); |
wbeaumont | 0:30918bdf8a94 | 63 | |
wbeaumont | 0:30918bdf8a94 | 64 | gpio.set(pincnt,pinv); |
wbeaumont | 0:30918bdf8a94 | 65 | pincnt++; |
wbeaumont | 0:30918bdf8a94 | 66 | |
wbeaumont | 0:30918bdf8a94 | 67 | wait(0.1f); |
wbeaumont | 0:30918bdf8a94 | 68 | if ( pincnt > 7 ) pincnt=0; |
wbeaumont | 0:30918bdf8a94 | 69 | } |
wbeaumont | 0:30918bdf8a94 | 70 | } |