You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.1 KiB
111 lines
2.1 KiB
#include "ads1050.h"
|
|
|
|
Ads1015::Ads1015(i2c_ch1_pImpL* i2c,ErrorHandler* err)
|
|
{
|
|
i2c_ads1015 = i2c;
|
|
errorHandling = err;
|
|
i2cWrite = 1;
|
|
configuration = ADS1015_CONFIG_RESET;
|
|
writeConfig();
|
|
configuration = 0;
|
|
errorHandling->addNewError(-1,__FILE__,"This mutpilexer mode does not Exist",KILL);
|
|
}
|
|
|
|
void Ads1015::writeConfig()
|
|
{
|
|
i2c_ads1015->writeWordWithReg(ADS1015_I2C_ADRS,ADS1015_REG_CONFIG,configuration);
|
|
}
|
|
|
|
uint16_t Ads1015::getConfig()
|
|
{
|
|
configuration = i2c_ads1015->readWord(ADS1015_I2C_ADRS, ADS1015_REG_CONFIG);
|
|
return configuration;
|
|
}
|
|
void Ads1015::setMultiplexer(uint16_t mode)
|
|
{
|
|
if(mode <= ADS1015_MUX_AIN3_GND)
|
|
{
|
|
bitStart = ADS1015_MUX_BIT_NO;
|
|
bitEnd = bitStart + ADS1015_MUX_BIT_LEN -1;
|
|
set_bits_range_uint16(&configuration,bitStart,bitEnd,mode);
|
|
}
|
|
else
|
|
{
|
|
errorHandling->handleError(-1,__FILE__);
|
|
}
|
|
}
|
|
|
|
void Ads1015::setGain(uint16_t gain)
|
|
{
|
|
if(gain <= ADS1015_GAIN_256)
|
|
{
|
|
bitStart = ADS1015_GAIN_BIT_NO;
|
|
bitEnd = bitStart + ADS1015_GAIN_BIT_LEN -1;
|
|
set_bits_range_uint16(&configuration,bitStart,bitEnd,gain);
|
|
}
|
|
}
|
|
|
|
void Ads1015::setOperationMode(uint8_t mode)
|
|
{
|
|
if(mode <= ADS1015_MODE_SINGLE)
|
|
{
|
|
bitNo = ADS1015_MODE_BIT_NO;
|
|
changeBitUint16(&configuration,bitNo,mode);
|
|
}
|
|
}
|
|
|
|
void Ads1015::setDataRate(uint8_t rate)
|
|
{
|
|
|
|
}
|
|
|
|
void Ads1015::setComparatorMode(uint8_t mode)
|
|
{
|
|
|
|
}
|
|
|
|
void Ads1015::setComparatorPolarity(uint8_t pol)
|
|
{
|
|
|
|
}
|
|
|
|
void Ads1015::setComparatorLatch(uint8_t latch)
|
|
{
|
|
|
|
}
|
|
|
|
void Ads1015::setComparatorQueue(uint8_t queue)
|
|
{
|
|
|
|
}
|
|
|
|
void Ads1015::pointToConvReg()
|
|
{
|
|
i2c_ads1015 -> writeByte(ADS1015_I2C_ADRS,ADS1015_REG_CONVERSION);
|
|
}
|
|
|
|
uint16_t Ads1015::checkConversion()
|
|
{
|
|
bitNo = ADS1015_OS_CONVERTING;
|
|
getConfig();
|
|
return getBitUint16(&configuration,bitNo);
|
|
}
|
|
|
|
|
|
int16_t Ads1015::getConversion()
|
|
{
|
|
conversion = i2c_ads1015 -> readWord(ADS1015_I2C_ADRS,ADS1015_REG_CONVERSION)>>4;
|
|
if (conversion > 0x07FF) {
|
|
// negative number - extend the sign to 16th bit
|
|
conversion |= 0xF000;
|
|
}
|
|
return (int16_t)conversion;
|
|
}
|
|
|
|
void Ads1015::startSingleConvertion()
|
|
{
|
|
bitNo = ADS1015_OS_BIT_NO;
|
|
getConfig();
|
|
setBitUint16(&configuration,bitNo);
|
|
}
|