MCP23S17 Bufferd
Diff: ExioMcp23s17.h
- Revision:
- 0:54debc783452
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ExioMcp23s17.h Fri Nov 04 19:48:18 2016 +0000 @@ -0,0 +1,47 @@ +/* + * ExioMcp23s17.h + * Rapper Class for MCP23S17 + * + * Use MCP23S17 Library: + * https://developer.mbed.org/users/stjo2809/code/MCP23S17/ + * + * 割込み処理は未実装 + * + * Created: 2016.10.30 + * + */ + +#ifndef _EXIOMCP23S17_H_ +#define _EXIOMCP23S17_H_ + +#include "mbed.h" +#include "MCP23S17.h" + +typedef enum { ExioPortA, ExioPortB } ExioPort; + +class ExioMcp23s17 : public MCP23S17 { +public: + ExioMcp23s17(int hardwareaddress, SPI& spi, PinName nCs, PinName nReset) : + MCP23S17(hardwareaddress, spi, nCs, nReset) {} + + ExioMcp23s17(int hardwareaddress, SPI& spi, PinName nCs) : + MCP23S17(hardwareaddress, spi, nCs) {} + + uint8_t ioDirection(ExioPort port) { return read(IODIRA_ADDR | port); } + void ioDirection(ExioPort port, uint8_t data) { write(IODIRA_ADDR | port, data); } + + uint8_t ioPolarity(ExioPort port) { return read(IPOLA_ADDR | port); } + void ioPolarity(ExioPort port, uint8_t data) { write(IPOLA_ADDR | port, data); } + + uint8_t ioPullup(ExioPort port) { return read(GPPUA_ADDR | port); } + void ioPullup(ExioPort port, uint8_t data) { write(GPPUA_ADDR | port, data); } + + uint8_t readPort(ExioPort port) { return read(GPIOA_ADDR | port); } + void writePort(ExioPort port, uint8_t data) { write(GPIOA_ADDR | port, data); } + +protected: + void write(uint8_t reg_address, uint8_t data) { MCP23S17::write(reg_address, data); } + uint8_t read(uint8_t reg_address) { return MCP23S17::read(reg_address); } +}; + +#endif //_EXIOMCP23S17_H_ \ No newline at end of file