Library with PCF8591 support for the experiments for LPC812 MAX

Dependents:   lpc812_exp_solution_analog-in lpc812_exp_solution_7-segment lpc812_exp_solution_7-segment-shift lpc812_exp_solution_pwm ... more

Fork of lpc812_exp_lib_PCF8591 by EmbeddedArtists AB

PCF8591.cpp

Committer:
embeddedartists
Date:
2013-11-15
Revision:
2:8371322cbdc2
Parent:
1:7eabc2242b8f

File content as of revision 2:8371322cbdc2:

#include "mbed.h"
#include "PCF8591.h"

PCF8591::PCF8591(PinName sda, PinName scl, int i2cAddr) : m_i2c(sda, scl)
{
    m_i2c.frequency(100000);
    m_addr = i2cAddr;
}
    
int PCF8591::read(AnalogIn port)
{
    char cmd = (port & 0x3); // read from selected port
    char data[2];
    
    // select the port
    m_i2c.start();
    m_i2c.write(m_addr);
    m_i2c.write(cmd);
    m_i2c.stop();
    
    // get the sample
    m_i2c.start();
    m_i2c.write(m_addr | 1);
    data[0] = m_i2c.read(1); // expect ACK
    data[1] = m_i2c.read(0); // expect NACK
    m_i2c.stop();
    
    // data[0] is a dummy byte so ignore it
    // data[1] is the new value
    return data[1];
}