Solutions for the I2C experiments for LPC812 MAX

Dependencies:   mbed

Committer:
embeddedartists
Date:
Sun Nov 24 12:34:47 2013 +0000
Revision:
0:9aab4157fdae
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
embeddedartists 0:9aab4157fdae 1 #include "PCA9672.h"
embeddedartists 0:9aab4157fdae 2
embeddedartists 0:9aab4157fdae 3 PCA9672::PCA9672(PinName sda, PinName scl) : _i2c(sda, scl)
embeddedartists 0:9aab4157fdae 4 {
embeddedartists 0:9aab4157fdae 5 // Software Reset
embeddedartists 0:9aab4157fdae 6 _i2c.start();
embeddedartists 0:9aab4157fdae 7 while(_i2c.write(0x00) !=1);
embeddedartists 0:9aab4157fdae 8 while(_i2c.write(0x06) !=1);
embeddedartists 0:9aab4157fdae 9 _i2c.stop();
embeddedartists 0:9aab4157fdae 10
embeddedartists 0:9aab4157fdae 11 /* Software reset is not required. But, gives an
embeddedartists 0:9aab4157fdae 12 indication if the selected I2C bus frequency works */
embeddedartists 0:9aab4157fdae 13 }
embeddedartists 0:9aab4157fdae 14
embeddedartists 0:9aab4157fdae 15 void PCA9672::frequency(int hz)
embeddedartists 0:9aab4157fdae 16 {
embeddedartists 0:9aab4157fdae 17 _i2c.frequency(hz);
embeddedartists 0:9aab4157fdae 18 }
embeddedartists 0:9aab4157fdae 19
embeddedartists 0:9aab4157fdae 20 void PCA9672::direction(uint8_t inputs)
embeddedartists 0:9aab4157fdae 21 {
embeddedartists 0:9aab4157fdae 22 _pins = inputs & 0xff;
embeddedartists 0:9aab4157fdae 23 }
embeddedartists 0:9aab4157fdae 24
embeddedartists 0:9aab4157fdae 25 void PCA9672::write(char value)
embeddedartists 0:9aab4157fdae 26 {
embeddedartists 0:9aab4157fdae 27 if (_pins > 0)
embeddedartists 0:9aab4157fdae 28 {
embeddedartists 0:9aab4157fdae 29 _i2c.start();
embeddedartists 0:9aab4157fdae 30 _i2c.write(PCA9672_ADDR);
embeddedartists 0:9aab4157fdae 31 _i2c.write(value | _pins); // all input pins must have a logic 1 as value
embeddedartists 0:9aab4157fdae 32 _i2c.stop();
embeddedartists 0:9aab4157fdae 33 }
embeddedartists 0:9aab4157fdae 34 }
embeddedartists 0:9aab4157fdae 35
embeddedartists 0:9aab4157fdae 36 int PCA9672::read(void)
embeddedartists 0:9aab4157fdae 37 {
embeddedartists 0:9aab4157fdae 38 _i2c.start();
embeddedartists 0:9aab4157fdae 39 _i2c.write(PCA9672_ADDR | 1);
embeddedartists 0:9aab4157fdae 40 uint8_t val = _i2c.read(0); // expect NACK
embeddedartists 0:9aab4157fdae 41 _i2c.stop();
embeddedartists 0:9aab4157fdae 42 return val;
embeddedartists 0:9aab4157fdae 43 }
embeddedartists 0:9aab4157fdae 44
embeddedartists 0:9aab4157fdae 45 PCA9672::~PCA9672()
embeddedartists 0:9aab4157fdae 46 {
embeddedartists 0:9aab4157fdae 47
embeddedartists 0:9aab4157fdae 48 }