MAX14661 Serial Controlled 16:2 Multiplexer
Dependents: MBD2PMD_WebServer ARD2PMD_WebServer MAX14661_DEMO MAX3232_DEMO
MAX14661.cpp@0:6bd0b1a28e10, 2014-02-03 (annotated)
- Committer:
- gsteiert
- Date:
- Mon Feb 03 04:14:24 2014 +0000
- Revision:
- 0:6bd0b1a28e10
- Child:
- 2:c3525ee2d636
MAX14661 Library Initial Draft
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gsteiert | 0:6bd0b1a28e10 | 1 | /* MAX14661 Driver Library |
gsteiert | 0:6bd0b1a28e10 | 2 | * |
gsteiert | 0:6bd0b1a28e10 | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
gsteiert | 0:6bd0b1a28e10 | 4 | * and associated documentation files (the "Software"), to deal in the Software without restriction, |
gsteiert | 0:6bd0b1a28e10 | 5 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, |
gsteiert | 0:6bd0b1a28e10 | 6 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is |
gsteiert | 0:6bd0b1a28e10 | 7 | * furnished to do so, subject to the following conditions: |
gsteiert | 0:6bd0b1a28e10 | 8 | * |
gsteiert | 0:6bd0b1a28e10 | 9 | * The above copyright notice and this permission notice shall be included in all copies or |
gsteiert | 0:6bd0b1a28e10 | 10 | * substantial portions of the Software. |
gsteiert | 0:6bd0b1a28e10 | 11 | * |
gsteiert | 0:6bd0b1a28e10 | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
gsteiert | 0:6bd0b1a28e10 | 13 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
gsteiert | 0:6bd0b1a28e10 | 14 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
gsteiert | 0:6bd0b1a28e10 | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
gsteiert | 0:6bd0b1a28e10 | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
gsteiert | 0:6bd0b1a28e10 | 17 | */ |
gsteiert | 0:6bd0b1a28e10 | 18 | |
gsteiert | 0:6bd0b1a28e10 | 19 | #include "MAX14661.h" |
gsteiert | 0:6bd0b1a28e10 | 20 | #include "mbed.h" |
gsteiert | 0:6bd0b1a28e10 | 21 | |
gsteiert | 0:6bd0b1a28e10 | 22 | MAX14661::MAX14661(PinName sda, PinName scl, int addr) : _i2c(sda, scl) |
gsteiert | 0:6bd0b1a28e10 | 23 | { |
gsteiert | 0:6bd0b1a28e10 | 24 | _addr = addr; |
gsteiert | 0:6bd0b1a28e10 | 25 | } |
gsteiert | 0:6bd0b1a28e10 | 26 | |
gsteiert | 0:6bd0b1a28e10 | 27 | MAX14661::~MAX14661() |
gsteiert | 0:6bd0b1a28e10 | 28 | { |
gsteiert | 0:6bd0b1a28e10 | 29 | } |
gsteiert | 0:6bd0b1a28e10 | 30 | |
gsteiert | 0:6bd0b1a28e10 | 31 | void MAX14661::clearAll() |
gsteiert | 0:6bd0b1a28e10 | 32 | { |
gsteiert | 0:6bd0b1a28e10 | 33 | char data[3]; |
gsteiert | 0:6bd0b1a28e10 | 34 | data[0] = REG_CMD_A; |
gsteiert | 0:6bd0b1a28e10 | 35 | data[1] = CMD_DIS; |
gsteiert | 0:6bd0b1a28e10 | 36 | data[2] = CMD_DIS; |
gsteiert | 0:6bd0b1a28e10 | 37 | _i2c.write(_addr, data, 3); |
gsteiert | 0:6bd0b1a28e10 | 38 | } |
gsteiert | 0:6bd0b1a28e10 | 39 | |
gsteiert | 0:6bd0b1a28e10 | 40 | void MAX14661::setAB(int swA, int swB) |
gsteiert | 0:6bd0b1a28e10 | 41 | { |
gsteiert | 0:6bd0b1a28e10 | 42 | char data[7]; |
gsteiert | 0:6bd0b1a28e10 | 43 | data[0] = REG_SHDW0; |
gsteiert | 0:6bd0b1a28e10 | 44 | data[1] = swA; |
gsteiert | 0:6bd0b1a28e10 | 45 | data[2] = swA >> 8; |
gsteiert | 0:6bd0b1a28e10 | 46 | data[3] = swB; |
gsteiert | 0:6bd0b1a28e10 | 47 | data[4] = swB >> 8; |
gsteiert | 0:6bd0b1a28e10 | 48 | data[5] = CMD_COPY; |
gsteiert | 0:6bd0b1a28e10 | 49 | data[6] = CMD_COPY; |
gsteiert | 0:6bd0b1a28e10 | 50 | _i2c.write(_addr, data, 7); |
gsteiert | 0:6bd0b1a28e10 | 51 | } |
gsteiert | 0:6bd0b1a28e10 | 52 | |
gsteiert | 0:6bd0b1a28e10 | 53 | int MAX14661::read() |
gsteiert | 0:6bd0b1a28e10 | 54 | { |
gsteiert | 0:6bd0b1a28e10 | 55 | char data[4]; |
gsteiert | 0:6bd0b1a28e10 | 56 | data[0] = REG_DIR0; |
gsteiert | 0:6bd0b1a28e10 | 57 | _i2c.write(_addr, data, 1, true); |
gsteiert | 0:6bd0b1a28e10 | 58 | _i2c.read(_addr, data, 4); |
gsteiert | 0:6bd0b1a28e10 | 59 | return ((data[3] << 24) | (data[2] << 16) |(data[1] << 8) | data[0]); |
gsteiert | 0:6bd0b1a28e10 | 60 | } |