PCA9555
Dependents: Telliskivi2_2014 PowerManagementBoard_Rev_A_2017
PCA9555.cpp
- Committer:
- Reiko
- Date:
- 2013-08-31
- Revision:
- 1:a6699cd826bb
- Parent:
- 0:011622696878
- Child:
- 2:fae93e0841f6
File content as of revision 1:a6699cd826bb:
#include "PCA9555.h" #include "mbed.h" PCA9555::PCA9555(PinName sda, PinName scl, int address) : _i2c(sda, scl) { _address = address; } void PCA9555::setDirection(int data) { char foo[2]; foo[0]=0x06; foo[1]=data; _i2c.write(_address, foo, 2); foo[0]=0x07; foo[1]=data>>8; _i2c.write(_address, foo, 2); } int PCA9555::read() { char rx_array[2] = {0x00, 0x00}; char tx_array[1] = {0x000}; tx_array[0] = 0; _i2c.write(_address, tx_array, 1); _i2c.read(_address, rx_array, 2); return (rx_array[1] << 8) | rx_array[0]; } void PCA9555::write(int data) { char foo[3]; foo[0]=0x02; foo[1]=data; foo[2]=data>>8; _i2c.write(_address, foo, 3); } void PCA9555::setPin(unsigned int pinNumber) { currentWriteState |= ((unsigned int)1 << pinNumber); write(currentWriteState); } void PCA9555::clearPin(unsigned int pinNumber) { currentWriteState &= ~((unsigned int)1 << pinNumber); write(currentWriteState); } void PCA9555::togglePin(unsigned int pinNumber) { currentWriteState ^= ((unsigned int)1 << pinNumber); write(currentWriteState); }