v 0.4
Dependents: MCP23S17Test MCP23S17_Basic_IO_Demo HelloWorld Lab3-SnakeGame ... more
Revision 8:841b19734955, committed 2010-08-23
- Comitter:
- romilly
- Date:
- Mon Aug 23 10:57:59 2010 +0000
- Parent:
- 7:53498e24592c
- Child:
- 9:068b1e8909bb
- Commit message:
Changed in this revision
--- a/MCP23S17.cpp Sun Aug 22 15:37:25 2010 +0000 +++ b/MCP23S17.cpp Mon Aug 23 10:57:59 2010 +0000 @@ -2,7 +2,7 @@ * Copyright (c) 2010 Romilly Cocking * Released under the MIT License: http://mbed.org/license/mit * -* version 0.2 +* version 0.3 */ #include "mbed.h" @@ -23,6 +23,10 @@ return result; } +char MCP23S17::_read(Port port, char address) { + return _read(address + (char) port); +} + void MCP23S17::_write(char address, char data) { _ncs = 0; _spi.write(_writeOpcode); @@ -31,24 +35,21 @@ _ncs = 1; } +void MCP23S17::_write(Port port, char address, char data) { + _write(address + (char) port, data); +} + void MCP23S17::_init() { _write(IOCON, (IOCON_BYTE_MODE | IOCON_HAEN )); // Hardware addressing on, operations toggle between A and B registers } -void MCP23S17::directionA(char direction) { - _write(IODIRA, direction); +void MCP23S17::direction(Port port, char direction) { + _write(port, IODIRA, direction); } -void MCP23S17::directionB(char direction) { - _write(IODIRB, direction); -} -void MCP23S17::interruptEnableA(char interruptsEnabledMask) { - _write(GPINTENA, interruptsEnabledMask); -} - -void MCP23S17::interruptEnableB(char interruptsEnabledMask) { - _write(GPINTENB, interruptsEnabledMask); +void MCP23S17::interruptEnable(Port port, char interruptsEnabledMask) { + _write(port, GPINTENA, interruptsEnabledMask); } void MCP23S17::mirrorInterrupts(bool mirror) { @@ -72,26 +73,19 @@ _write(IOCON, iocon); } -void MCP23S17::defaultValueA(char valuesToCompare) { - _write(DEFVALA, valuesToCompare); +void MCP23S17::defaultValue(Port port, char valuesToCompare) { + _write(port, DEFVALA, valuesToCompare); } -void MCP23S17::interruptControlA(char interruptContolBits) { - _write(INTCONA, interruptContolBits); -} - -void MCP23S17::outputA(char byte) { - _write(OLATA, byte); +void MCP23S17::interruptControl(Port port, char interruptContolBits) { + _write(port, INTCONA, interruptContolBits); } -void MCP23S17::outputB(char byte) { - _write(OLATB, byte); +void MCP23S17::write(Port port, char byte) { + _write(port, OLATA, byte); } -char MCP23S17::inputA() { - return _read(GPIOA); +char MCP23S17::read(Port port) { + return _read(port, GPIOA); } -char MCP23S17::inputB() { - return _read(GPIOB); -}
--- a/MCP23S17.h Sun Aug 22 15:37:25 2010 +0000 +++ b/MCP23S17.h Mon Aug 23 10:57:59 2010 +0000 @@ -2,7 +2,7 @@ * Copyright (c) 2010 Romilly Cocking * Released under the MIT License: http://mbed.org/license/mit * -* version 0.2 +* version 0.3 */ #include "mbed.h" @@ -33,27 +33,26 @@ #define IOCON_HAEN 0x08 // Hardware address enable enum Polarity { ACTIVE_LOW , ACTIVE_HIGH }; +enum Port { PORT_A, PORT_B }; class MCP23S17 { public: MCP23S17(SPI& spi, PinName ncs, char writeOpcode); - void directionA(char direction); - void directionB(char direction); - void interruptEnableA(char interruptsEnabledMask); - void interruptEnableB(char interruptsEnabledMask); + void direction(Port port, char direction); + void interruptEnable(Port port, char interruptsEnabledMask); void interruptPolarity(Polarity polarity); void mirrorInterrupts(bool mirror); - void defaultValueA(char valuesToCompare); - void interruptControlA(char interruptContolBits); - char inputA(); - char inputB(); - void outputA(char byte); - void outputB(char byte); + void defaultValue(Port port, char valuesToCompare); + void interruptControl(Port port, char interruptContolBits); + char read(Port port); + void write(Port port, char byte); protected: SPI& _spi; DigitalOut _ncs; void _init(); + void _write(Port port, char address, char data); void _write(char address, char data); + char _read(Port port, char address); char _read(char address); char _readOpcode; char _writeOpcode;
--- a/mbed.bld Sun Aug 22 15:37:25 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/9114680c05da