Simple MCP23017 I2C 16bit IO expander IC
MCP23017.cpp
- Committer:
- hsgw
- Date:
- 2014-06-02
- Revision:
- 0:6dd30d790eff
File content as of revision 0:6dd30d790eff:
/* MCP23017 Library for mbed * Copyright (c) 2014, Takuya Urakawa * * This library is released under the MIT License * See http://opensource.org/licenses/mit-license.php */ #include "MCP23017.h" namespace MCP23017 { MCP23017::MCP23017(I2C &_i2c, char _addr): mI2c(_i2c) { mWriteAddr = _addr & 0xFE; mReadAddr = _addr | 0x01; } void MCP23017::init(void){ // init config i2cSend(REG_IOCON, 0); // port 0 i2cSend(REG_GPIO, 0, 0); // port dirrection all input i2cSend(REG_IODIR, 0, 0); // interupt off i2cSend(REG_GPINTEN, 0, 0); // clear interrupt read(MCP23017_PORTA); read(MCP23017_PORTB); } void MCP23017::setConfig(char _value){ i2cSend(REG_IOCON, _value); } void MCP23017::setDirrection(char _port, char _value){ i2cSend(REG_IODIR + _port, _value); } void MCP23017::setPullUp(char _port, char _value){ i2cSend(REG_GPPU + _port, _value); } void MCP23017::setInputPolarity(char _port, char _value){ i2cSend(REG_IPOL + _port, _value); } void MCP23017::write(char _port, char _value){ i2cSend(REG_GPIO + _port, _value); } char MCP23017::read(char _port){ return i2cRead(REG_GPIO + _port); } //void MCP23017::setInterruptConfig(char _port, char _intcon, char _defval){ // // i2cSend(REG_INTCON + _port, _intcon); // i2cSend(REG_DEFVAL + _port, _defval); //} //void MCP23017::interrupt(char _port, char _value){ // i2cSend(REG_GPINTEN + _port, _value); // //Read from GPIO to clear interrupt flag // read(_port); //} //char MCP23017::readIntcap(char _port){ // return i2cRead(REG_INTCAP + _port); //} } // end of namespace