Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: IGGE_Power ADS1015-hello_world ADS1115-hello_world frdm_rtos_Eth ... more
Revision 5:aa277517f0ad, committed 2014-10-11
- Comitter:
- arve0
- Date:
- Sat Oct 11 08:45:17 2014 +0000
- Parent:
- 4:6445a678d458
- Commit message:
- ads1115 comments
Changed in this revision
| Adafruit_ADS1015.cpp.orig | Show diff for this revision Revisions of this file |
diff -r 6445a678d458 -r aa277517f0ad Adafruit_ADS1015.cpp.orig
--- a/Adafruit_ADS1015.cpp.orig Sat Oct 11 08:44:20 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-/**************************************************************************/
-/*!
- @file Adafruit_ADS1015.cpp
- @author K.Townsend (Adafruit Industries)
- @license BSD (see LICENSE.txt)
-
- Ported to mbed by Arve Seljebu - arve0.github.io
-
- Driver for the ADS1015/ADS1115 ADC
-
- This is a library for the Adafruit MPL115A2 breakout
- ----> https://www.adafruit.com/products/1083
-
- Adafruit invests time and resources providing this open source code,
- please support Adafruit and open-source hardware by purchasing
- products from Adafruit!
-
- @section HISTORY
-
- v1.0 - First release
- v1.1.1 - Ported to mbed
-*/
-/**************************************************************************/
-
-#include <mbed.h>
-#include "Adafruit_ADS1015.h"
-
-/**************************************************************************/
-/*!
- @brief Writes 16-bits to the specified destination register
-*/
-/**************************************************************************/
-void Adafruit_ADS1015::writeRegister(uint8_t i2cAddress, uint8_t reg, uint16_t value)
-{
- char cmd[3];
- cmd[0] = (char)reg;
- cmd[1] = (char)(value>>8);
- cmd[2] = (char)(value & 0xFF);
- m_i2c->write(i2cAddress, cmd, 3);
-}
-
-/**************************************************************************/
-/*!
- @brief Reads 16-bits from the specified register
-*/
-/**************************************************************************/
-uint16_t Adafruit_ADS1015::readRegister(uint8_t i2cAddress, uint8_t reg)
-{
- char data[2];
- data[0] = reg; // temporary use this to send address to conversion register
- m_i2c->write(i2cAddress, data, 1);
- m_i2c->read(i2cAddress, data, 2);
- return (data[0] << 8 | data [1]);
-}
-
-/**************************************************************************/
-/*!
- @brief Instantiates a new ADS1015 class w/appropriate properties
-*/
-/**************************************************************************/
-Adafruit_ADS1015::Adafruit_ADS1015(I2C* i2c, uint8_t i2cAddress)
-{
- // shift 7 bit address 1 left: read expects 8 bit address, see I2C.h
- m_i2cAddress = i2cAddress << 1;
- m_conversionDelay = ADS1015_CONVERSIONDELAY;
- m_bitShift = 4;
- m_gain = GAIN_TWOTHIRDS; /* +/- 6.144V range (limited to VDD +0.3V max!) */
- m_i2c = i2c;
-}
-
-/**************************************************************************/
-/*!
- @brief Instantiates a new ADS1115 class w/appropriate properties
-*/
-/**************************************************************************/
-Adafruit_ADS1115::Adafruit_ADS1115(I2C* i2c, uint8_t i2cAddress)
-{
- // shift 7 bit address 1 left: read expects 8 bit address, see mbed's I2C.h
- m_i2cAddress = i2cAddress << 1;
- m_conversionDelay = ADS1115_CONVERSIONDELAY;
- m_bitShift = 0;
- m_gain = GAIN_TWOTHIRDS; /* +/- 6.144V range (limited to VDD +0.3V max!) */
- m_i2c = i2c;
-}
-
-/**************************************************************************/
-/*!
- @brief Sets the gain and input voltage range
-*/
-/**************************************************************************/
-void Adafruit_ADS1015::setGain(adsGain_t gain)
-{
- m_gain = gain;
-}
-
-/**************************************************************************/
-/*!
- @brief Gets a gain and input voltage range
-*/
-/**************************************************************************/
-adsGain_t Adafruit_ADS1015::getGain()
-{
- return m_gain;
-}
-
-/**************************************************************************/
-/*!
- @brief Gets a single-ended ADC reading from the specified channel
-*/
-/**************************************************************************/
-uint16_t Adafruit_ADS1015::readADC_SingleEnded(uint8_t channel)
-{
- if (channel > 3) {
- return 0;
- }
-
- // Start with default values
- uint16_t config = ADS1015_REG_CONFIG_CQUE_NONE | // Disable the comparator (default val)
- ADS1015_REG_CONFIG_CLAT_NONLAT | // Non-latching (default val)
- ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low (default val)
- ADS1015_REG_CONFIG_CMODE_TRAD | // Traditional comparator (default val)
- ADS1015_REG_CONFIG_DR_1600SPS | // 1600 samples per second (default)
- ADS1015_REG_CONFIG_MODE_SINGLE; // Single-shot mode (default)
-
- // Set PGA/voltage range
- config |= m_gain;
-
- // Set single-ended input channel
- switch (channel) {
- case (0):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_0;
- break;
- case (1):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_1;
- break;
- case (2):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_2;
- break;
- case (3):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_3;
- break;
- }
-
- // Set 'start single-conversion' bit
- config |= ADS1015_REG_CONFIG_OS_SINGLE;
-
- // Write config register to the ADC
- writeRegister(m_i2cAddress, ADS1015_REG_POINTER_CONFIG, config);
-
- // Wait for the conversion to complete
- wait_ms(m_conversionDelay);
-
- // Read the conversion results
- // Shift 12-bit results right 4 bits for the ADS1015
- return readRegister(m_i2cAddress, ADS1015_REG_POINTER_CONVERT) >> m_bitShift;
-}
-
-/**************************************************************************/
-/*!
- @brief Reads the conversion results, measuring the voltage
- difference between the P (AIN0) and N (AIN1) input. Generates
- a signed value since the difference can be either
- positive or negative.
-*/
-/**************************************************************************/
-int16_t Adafruit_ADS1015::readADC_Differential_0_1()
-{
- // Start with default values
- uint16_t config = ADS1015_REG_CONFIG_CQUE_NONE | // Disable the comparator (default val)
- ADS1015_REG_CONFIG_CLAT_NONLAT | // Non-latching (default val)
- ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low (default val)
- ADS1015_REG_CONFIG_CMODE_TRAD | // Traditional comparator (default val)
- ADS1015_REG_CONFIG_DR_1600SPS | // 1600 samples per second (default)
- ADS1015_REG_CONFIG_MODE_SINGLE; // Single-shot mode (default)
-
- // Set PGA/voltage range
- config |= m_gain;
-
- // Set channels
- config |= ADS1015_REG_CONFIG_MUX_DIFF_0_1; // AIN0 = P, AIN1 = N
-
- // Set 'start single-conversion' bit
- config |= ADS1015_REG_CONFIG_OS_SINGLE;
-
- // Write config register to the ADC
- writeRegister(m_i2cAddress, ADS1015_REG_POINTER_CONFIG, config);
-
- // Wait for the conversion to complete
- wait_ms(m_conversionDelay);
-
- // Read the conversion results
- uint16_t res = readRegister(m_i2cAddress, ADS1015_REG_POINTER_CONVERT) >> m_bitShift;
- if (m_bitShift == 0) {
- return (int16_t)res;
- } else {
- // Shift 12-bit results right 4 bits for the ADS1015,
- // making sure we keep the sign bit intact
- if (res > 0x07FF) {
- // negative number - extend the sign to 16th bit
- res |= 0xF000;
- }
- return (int16_t)res;
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Reads the conversion results, measuring the voltage
- difference between the P (AIN2) and N (AIN3) input. Generates
- a signed value since the difference can be either
- positive or negative.
-*/
-/**************************************************************************/
-int16_t Adafruit_ADS1015::readADC_Differential_2_3()
-{
- // Start with default values
- uint16_t config = ADS1015_REG_CONFIG_CQUE_NONE | // Disable the comparator (default val)
- ADS1015_REG_CONFIG_CLAT_NONLAT | // Non-latching (default val)
- ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low (default val)
- ADS1015_REG_CONFIG_CMODE_TRAD | // Traditional comparator (default val)
- ADS1015_REG_CONFIG_DR_1600SPS | // 1600 samples per second (default)
- ADS1015_REG_CONFIG_MODE_SINGLE; // Single-shot mode (default)
-
- // Set PGA/voltage range
- config |= m_gain;
-
- // Set channels
- config |= ADS1015_REG_CONFIG_MUX_DIFF_2_3; // AIN2 = P, AIN3 = N
-
- // Set 'start single-conversion' bit
- config |= ADS1015_REG_CONFIG_OS_SINGLE;
-
- // Write config register to the ADC
- writeRegister(m_i2cAddress, ADS1015_REG_POINTER_CONFIG, config);
-
- // Wait for the conversion to complete
- wait_ms(m_conversionDelay);
-
- // Read the conversion results
- uint16_t res = readRegister(m_i2cAddress, ADS1015_REG_POINTER_CONVERT) >> m_bitShift;
- if (m_bitShift == 0) {
- return (int16_t)res;
- } else {
- // Shift 12-bit results right 4 bits for the ADS1015,
- // making sure we keep the sign bit intact
- if (res > 0x07FF) {
- // negative number - extend the sign to 16th bit
- res |= 0xF000;
- }
- return (int16_t)res;
- }
-}
-
-/**************************************************************************/
-/*!
- @brief Sets up the comparator to operate in basic mode, causing the
- ALERT/RDY pin to assert (go from high to low) when the ADC
- value exceeds the specified threshold.
-
- This will also set the ADC in continuous conversion mode.
-*/
-/**************************************************************************/
-void Adafruit_ADS1015::startComparator_SingleEnded(uint8_t channel, int16_t threshold)
-{
- // Start with default values
- uint16_t config = ADS1015_REG_CONFIG_CQUE_1CONV | // Comparator enabled and asserts on 1 match
- ADS1015_REG_CONFIG_CLAT_LATCH | // Latching mode
- ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low (default val)
- ADS1015_REG_CONFIG_CMODE_TRAD | // Traditional comparator (default val)
- ADS1015_REG_CONFIG_DR_1600SPS | // 1600 samples per second (default)
- ADS1015_REG_CONFIG_MODE_CONTIN | // Continuous conversion mode
- ADS1015_REG_CONFIG_MODE_CONTIN; // Continuous conversion mode
-
- // Set PGA/voltage range
- config |= m_gain;
-
- // Set single-ended input channel
- switch (channel) {
- case (0):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_0;
- break;
- case (1):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_1;
- break;
- case (2):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_2;
- break;
- case (3):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_3;
- break;
- }
-
- // Set the high threshold register
- // Shift 12-bit results left 4 bits for the ADS1015
- writeRegister(m_i2cAddress, ADS1015_REG_POINTER_HITHRESH, threshold << m_bitShift);
-
- // Write config register to the ADC
- writeRegister(m_i2cAddress, ADS1015_REG_POINTER_CONFIG, config);
-}
-
-/**************************************************************************/
-/*!
- @brief In order to clear the comparator, we need to read the
- conversion results. This function reads the last conversion
- results without changing the config value.
-*/
-/**************************************************************************/
-int16_t Adafruit_ADS1015::getLastConversionResults()
-{
- // Wait for the conversion to complete
- wait_ms(m_conversionDelay);
-
- // Read the conversion results
- uint16_t res = readRegister(m_i2cAddress, ADS1015_REG_POINTER_CONVERT) >> m_bitShift;
- if (m_bitShift == 0) {
- return (int16_t)res;
- } else {
- // Shift 12-bit results right 4 bits for the ADS1015,
- // making sure we keep the sign bit intact
- if (res > 0x07FF) {
- // negative number - extend the sign to 16th bit
- res |= 0xF000;
- }
- return (int16_t)res;
- }
-}
\ No newline at end of file
Analog Devices ADS1015
16-Bit Analog-to-Digital Converter ADS1115