MAX14661 Serial Controlled 16:2 Multiplexer

Dependents:   MBD2PMD_WebServer ARD2PMD_WebServer MAX14661_DEMO MAX3232_DEMO

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?

UserRevisionLine numberNew 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 }