Prototype of SX1508's library
SX1508.cpp
- Committer:
- irsanjul
- Date:
- 2016-01-22
- Revision:
- 0:9b4d494682e0
- Child:
- 1:56f4a8d6cde7
File content as of revision 0:9b4d494682e0:
#include "mbed.h" #include "SX1508.h" SX1508::SX1508(PinName sda, PinName scl) : i2c (sda, scl) { i2c.frequency(SX1508_FREQ); } bool SX1508::config(char SetPin) { char buffer[6]; buffer[0] = 0x03; buffer[1] = 0xF0; // RegPullup , addr 0x03 buffer[3] = 0x0F; // RegOpendrain , addr 0x05 buffer[5] = 0xF0; // RegDir , addr 0x07 if(i2c.write(SX1508_ADDR, buffer, 6) != 0) return 0; buffer[0] = 0x12; buffer[1] = 0x05; // RegDebounceConfig , addr 0x12 buffer[2] = 0xF0; // RegDebounceEnable , addr 0x13 buffer[3] = SetPin; // RegKeyConfig , addr 0x14 if(i2c.write(SX1508_ADDR, buffer, 4) != 0) return 0; return true; } char SX1508::read() { char start = 0x15; char buffer[3]; char result; if(i2c.write(SX1508_ADDR, &start, 1) != 0) return 0; if(i2c.read((SX1508_ADDR | 0x01), buffer, 3) != 0) return 0; result = buffer[0] & 0xFF; return result; }