PCA9555
Dependents: Telliskivi2_2014 PowerManagementBoard_Rev_A_2017
PCA9555.h
- Committer:
- Reiko
- Date:
- 2013-09-09
- Revision:
- 2:fae93e0841f6
- Parent:
- 1:a6699cd826bb
- Child:
- 4:fe1637c9409f
- Child:
- 5:73884f49ed97
File content as of revision 2:fae93e0841f6:
#ifndef MBED_PCA9555_H #define MBED_PCA9555_H #include "mbed.h" //#include "PinDetect.h" /** Interface to the PCA9555 I2C 16 Bit IO expander */ class PCA9555 { protected: InterruptIn _irqpin; FunctionPointer _callbackChange; public: /** Create an instance of the PCA9555 connected to specfied I2C pins, with the specified address. * * @param sda The I2C data pin * @param scl The I2C clock pin * @param address The I2C address for this PCA9555 */ PCA9555(PinName sda, PinName scl, PinName interrupPin, int address); /** Read the IO pin level * * @return The two bytes read */ int read(); /** Write to the IO pins * * @param data The 16 bits to write to the IO port */ void write(int data); void setPin(unsigned int pinNumber); void clearPin(unsigned int pinNumber); void togglePin(unsigned int pinNumber); bool getPin(unsigned int pinNumber); void setDirection(int data); void change(void (*function)(void)); template<typename T> void change(T *object, void (T::*member)(void)) { _callbackChange.attach(object, member); } private: I2C _i2c; int _address; unsigned int currentWriteState; void callChange(void); }; #endif