Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MCP23S17 by
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
