| Linduino 1.3.0 Linear Technology Arduino-Compatible Demonstration Board

Functions | Variables
DC742A.ino File Reference
Analog-to-Digital Converters (ADC) » LTC2449: 24-Bit, 16-Channel Delta Sigma ADCs with Selectable Speed/Resolution

Linear Technology DC742A Demonstration Board. More...

## Detailed Description

Linear Technology DC742A Demonstration Board.

LTC2449: 24-Bit, 16-Channel Delta Sigma ADC with Selectable Speed/Resolution.

Linear Technology DC979A Demonstration Board. LTC2442: 24-Bit, 4-Channel Delta Sigma ADC with Integrated Amplifier

Linear Technology DC845A Demonstration Board. LTC2448: 24-Bit, 8-/16-Channel Delta Sigma ADCs with Selectable Speed/Resolution

    NOTES
      Setup:
       Set the terminal baud rate to 115200 and select the newline terminator. Equipment
       required is a precision voltage source and a precision voltmeter. Additionally,
       an external power supply is required to provide a negative voltage for Amp V-.
       Set it to anywhere from -1V to -5V. Set Amp V+ to Vcc. Ensure the COM and REF-
       pins are connected to ground. The REF+ pin should be connected to +5V.

      How to test Single-Ended mode:
       The voltage source should be connected to the ADC such that the negative lead is
       connected to the COM(common) pin. The positive lead may be connected to any
       channel input. Ensure voltage is within analog input voltage range -0.3 to 2.5V.

      How to test Differential Mode:
       The voltage source should be connected with positive and negative leads to paired
       channels. The voltage source negative output must also be connected to the COM
       pin in order to provide a ground-referenced voltage. Ensure voltage is within
       analog input voltage range -0.3V to +2.5V. Swapping input voltages results in a
       reversed polarity reading.

      How to calibrate:
       Apply 100mV CH0 with respect to COM. Next, measure this voltage with a precise
       voltmeter and enter this value. (This takes the reading.) Now apply approximately
       2.40 volts to CH0. Measure this voltage with a precise voltmeter and enter this
       value. Calibration is now stored in EEPROM. Upon start-up the calibration values
       will be restored.

    USER INPUT DATA FORMAT:
     decimal : 1024
     hex     : 0x400
     octal   : 02000  (leading 0 "zero")
     binary  : B10000000000
     float   : 1024.0

http://www.linear.com/product/LTC2449 http://www.linear.com/product/LTC2442 http://www.linear.com/product/LTC2448

http://www.linear.com/product/LTC2449#demoboards http://www.linear.com/product/LTC2442#demoboards http://www.linear.com/product/LTC2448#demoboards

Copyright 2018(c) Analog Devices, Inc.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of Analog Devices, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- The use of this software may or may not infringe the patent rights of one or more patent holders. This license does not release you from the requirement that you obtain separate licenses from these patent holders to use this software.
- Use of the software either in source or binary form, must be run on or directly connected to an Analog Devices Inc. component.

THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Definition in file DC742A.ino.

Go to the source code of this file.

## Functions
static void | print_title ()
| Prints the title block when program first starts. More...
static void | print_prompt ()
| Prints main menu. More...
static void | print_user_command (uint8_t menu)
| Display selected differential channels. More...
static void | store_calibration ()
| Store measured calibration parameters to nonvolatile EEPROM on demo board. More...
static int8_t | restore_calibration ()
| Read stored calibration parameters from nonvolatile EEPROM on demo board. More...
static int8_t | menu_1_read_single_ended ()
| Read channels in single-ended mode. More...
static int8_t | menu_2_read_differential ()
| Read channels in differential mode. More...
static int8_t | menu_3_calibrate ()
| Calibrate ADC given two known inputs. More...
static void | menu_4_set_OSR ()
| Set Oversample Ratio (OSR) More...
static void | menu_5_set_1X2X ()
| Set 1X or 2X mode. More...
static void | menu_6_en_dis_cal ()
| Enable / Disable calibration without actually touching stored calibration values. More...
static void | setup ()
| Initialize Linduino. More...
static void | loop ()
| Repeats Linduino loop. More...

## Variables
static uint8_t | demo_board_connected
| Set to 1 if the board is connected. More...
static int16_t | OSR_mode = LTC2449_OSR_32768
| The LTC2449 OSR setting. More...
static int16_t | two_x_mode = LTC2449_SPEED_1X
| The LTC2449 2X Mode settings. More...
static float | LTC2449_lsb = 9.3132258E-9
| Ideal LSB voltage for a perfect part. More...
static int32_t | LTC2449_offset_code = 0
| Ideal offset for a perfect part. More...
const uint16_t | BUILD_COMMAND_SINGLE_ENDED [16]
| Lookup table to build the command for single-ended mode. More...
const uint16_t | BUILD_COMMAND_DIFF [16]
| Lookup table to build the command for differential mode. More...
const uint16_t | BUILD_OSR_COMMAND [10]
| Lookup table to build the command for OSR. More...
const uint16_t | BUILD_1X_2X_COMMAND [2] = {LTC2449_SPEED_1X, LTC2449_SPEED_2X}
| Lookup table to build 1X / 2X bits. More...
const uint16_t | MISO_TIMEOUT = 1000
| MISO timeout constant. More...

## Function Documentation

## ◆ loop()

static void loop | ( | void |  | ) |
| static

Repeats Linduino loop.

Definition at line 175 of file DC742A.ino.

## ◆ menu_1_read_single_ended()

static int8_t menu_1_read_single_ended | ( |  | ) |
| static

Read channels in single-ended mode.

Returns
  0 if successful, 1 is failure

Definition at line 307 of file DC742A.ino.

## ◆ menu_2_read_differential()

static int8_t menu_2_read_differential | ( |  | ) |
| static

Read channels in differential mode.

Returns
  0 if successful, 1 is failure

Definition at line 396 of file DC742A.ino.

## ◆ menu_3_calibrate()

static int8_t menu_3_calibrate | ( |  | ) |
| static

Calibrate ADC given two known inputs.

Returns
  0 if successful, 1 is failure

Definition at line 494 of file DC742A.ino.

## ◆ menu_4_set_OSR()

static void menu_4_set_OSR | ( |  | ) |
| static

Set Oversample Ratio (OSR)

Returns
  void

Definition at line 550 of file DC742A.ino.

## ◆ menu_5_set_1X2X()

static void menu_5_set_1X2X | ( |  | ) |
| static

Set 1X or 2X mode.

Returns
  void

Definition at line 579 of file DC742A.ino.

## ◆ menu_6_en_dis_cal()

static void menu_6_en_dis_cal | ( |  | ) |
| static

Enable / Disable calibration without actually touching stored calibration values.

Returns
  void

Definition at line 616 of file DC742A.ino.

## ◆ print_prompt()

static void print_prompt | ( |  | ) |
| static

Prints main menu.

Definition at line 236 of file DC742A.ino.

## ◆ print_title()

static void print_title | ( | void |  | ) |
| static

Prints the title block when program first starts.

Definition at line 221 of file DC742A.ino.

## ◆ print_user_command()

static void print_user_command | ( | uint8_t | menu | ) |
| static

Display selected differential channels.

Displaying single-ended channels is straightforward; not so with differential because the inputs can take either polarity.

Definition at line 249 of file DC742A.ino.

## ◆ restore_calibration()

static int8_t restore_calibration | ( |  | ) |
| static

Read stored calibration parameters from nonvolatile EEPROM on demo board.

Returns
  return 1 if successful, 0 if not

Definition at line 641 of file DC742A.ino.

## ◆ setup()

static void setup | ( | void |  | ) |
| static

Initialize Linduino.

Definition at line 157 of file DC742A.ino.

## ◆ store_calibration()

static void store_calibration | ( |  | ) |
| static

Store measured calibration parameters to nonvolatile EEPROM on demo board.

Returns
  void

Definition at line 605 of file DC742A.ino.

## Variable Documentation

## ◆ BUILD_1X_2X_COMMAND

const uint16_t BUILD_1X_2X_COMMAND[2] = {LTC2449_SPEED_1X, LTC2449_SPEED_2X}

Lookup table to build 1X / 2X bits.

Build the command for 1x or 2x mode

Definition at line 151 of file DC742A.ino.

## ◆ BUILD_COMMAND_DIFF

const uint16_t BUILD_COMMAND_DIFF[16]

Initial value:
= {LTC2449_P0_N1, LTC2449_P2_N3, LTC2449_P4_N5, LTC2449_P6_N7,
LTC2449_P8_N9, LTC2449_P10_N11, LTC2449_P12_N13, LTC2449_P14_N15,
LTC2449_P1_N0, LTC2449_P3_N2, LTC2449_P5_N4, LTC2449_P7_N6,
LTC2449_P9_N8, LTC2449_P11_N10, LTC2449_P13_N12, LTC2449_P15_N14
}
LTC2449_P10_N11
#define LTC2449_P10_N11
Definition: LTC2449.h:191
LTC2449_P3_N2
#define LTC2449_P3_N2
Definition: LTC2449.h:180
LTC2449_P14_N15
#define LTC2449_P14_N15
Definition: LTC2449.h:197
LTC2449_P11_N10
#define LTC2449_P11_N10
Definition: LTC2449.h:192
LTC2449_P6_N7
#define LTC2449_P6_N7
Definition: LTC2449.h:185
LTC2449_P0_N1
#define LTC2449_P0_N1
Definition: LTC2449.h:176
LTC2449_P12_N13
#define LTC2449_P12_N13
Definition: LTC2449.h:194
LTC2449_P5_N4
#define LTC2449_P5_N4
Definition: LTC2449.h:183
LTC2449_P4_N5
#define LTC2449_P4_N5
Definition: LTC2449.h:182
LTC2449_P13_N12
#define LTC2449_P13_N12
Definition: LTC2449.h:195
LTC2449_P2_N3
#define LTC2449_P2_N3
Definition: LTC2449.h:179
LTC2449_P9_N8
#define LTC2449_P9_N8
Definition: LTC2449.h:189
LTC2449_P8_N9
#define LTC2449_P8_N9
Definition: LTC2449.h:188
LTC2449_P1_N0
#define LTC2449_P1_N0
Definition: LTC2449.h:177
LTC2449_P7_N6
#define LTC2449_P7_N6
Definition: LTC2449.h:186
LTC2449_P15_N14
#define LTC2449_P15_N14
Definition: LTC2449.h:198

Lookup table to build the command for differential mode.

Build the command for differential mode

Definition at line 139 of file DC742A.ino.

## ◆ BUILD_COMMAND_SINGLE_ENDED

const uint16_t BUILD_COMMAND_SINGLE_ENDED[16]

Initial value:
= {LTC2449_CH0, LTC2449_CH1, LTC2449_CH2, LTC2449_CH3,
LTC2449_CH4, LTC2449_CH5, LTC2449_CH6, LTC2449_CH7,
LTC2449_CH8, LTC2449_CH9, LTC2449_CH10, LTC2449_CH11,
LTC2449_CH12, LTC2449_CH13, LTC2449_CH14, LTC2449_CH15
}
LTC2449_CH0
#define LTC2449_CH0
Definition: LTC2449.h:156
LTC2449_CH12
#define LTC2449_CH12
Definition: LTC2449.h:168
LTC2449_CH14
#define LTC2449_CH14
Definition: LTC2449.h:170
LTC2449_CH3
#define LTC2449_CH3
Definition: LTC2449.h:159
LTC2449_CH5
#define LTC2449_CH5
Definition: LTC2449.h:161
LTC2449_CH1
#define LTC2449_CH1
Definition: LTC2449.h:157
LTC2449_CH11
#define LTC2449_CH11
Definition: LTC2449.h:167
LTC2449_CH13
#define LTC2449_CH13
Definition: LTC2449.h:169
LTC2449_CH8
#define LTC2449_CH8
Definition: LTC2449.h:164
LTC2449_CH6
#define LTC2449_CH6
Definition: LTC2449.h:162
LTC2449_CH9
#define LTC2449_CH9
Definition: LTC2449.h:165
LTC2449_CH10
#define LTC2449_CH10
Definition: LTC2449.h:166
LTC2449_CH15
#define LTC2449_CH15
Definition: LTC2449.h:171
LTC2449_CH2
#define LTC2449_CH2
Definition: LTC2449.h:158
LTC2449_CH7
#define LTC2449_CH7
Definition: LTC2449.h:163
LTC2449_CH4
#define LTC2449_CH4
Definition: LTC2449.h:160

Lookup table to build the command for single-ended mode.

Builds the command for single-ended mode

Definition at line 132 of file DC742A.ino.

## ◆ BUILD_OSR_COMMAND

const uint16_t BUILD_OSR_COMMAND[10]

Initial value:
= {LTC2449_OSR_32768, LTC2449_OSR_64, LTC2449_OSR_128, LTC2449_OSR_256, LTC2449_OSR_512,
LTC2449_OSR_1024, LTC2449_OSR_2048, LTC2449_OSR_4096, LTC2449_OSR_8192, LTC2449_OSR_16384
}
LTC2449_OSR_2048
#define LTC2449_OSR_2048
Definition: LTC2449.h:217
LTC2449_OSR_32768
#define LTC2449_OSR_32768
Definition: LTC2449.h:221
LTC2449_OSR_8192
#define LTC2449_OSR_8192
Definition: LTC2449.h:219
LTC2449_OSR_16384
#define LTC2449_OSR_16384
Definition: LTC2449.h:220
LTC2449_OSR_512
#define LTC2449_OSR_512
Definition: LTC2449.h:215
LTC2449_OSR_64
#define LTC2449_OSR_64
Definition: LTC2449.h:212
LTC2449_OSR_128
#define LTC2449_OSR_128
Definition: LTC2449.h:213
LTC2449_OSR_1024
#define LTC2449_OSR_1024
Definition: LTC2449.h:216
LTC2449_OSR_256
#define LTC2449_OSR_256
Definition: LTC2449.h:214
LTC2449_OSR_4096
#define LTC2449_OSR_4096
Definition: LTC2449.h:218

Lookup table to build the command for OSR.

Build the command for OSR

Definition at line 146 of file DC742A.ino.

## ◆ demo_board_connected

uint8_t demo_board_connected
| static

Set to 1 if the board is connected.

Definition at line 123 of file DC742A.ino.

## ◆ LTC2449_lsb

float LTC2449_lsb = 9.3132258E-9
| static

Ideal LSB voltage for a perfect part.

Definition at line 126 of file DC742A.ino.

## ◆ LTC2449_offset_code

int32_t LTC2449_offset_code = 0
| static

Ideal offset for a perfect part.

Definition at line 127 of file DC742A.ino.

## ◆ MISO_TIMEOUT

const uint16_t MISO_TIMEOUT = 1000

MISO timeout constant.

Definition at line 154 of file DC742A.ino.

## ◆ OSR_mode

int16_t OSR_mode = LTC2449_OSR_32768
| static

The LTC2449 OSR setting.

Definition at line 124 of file DC742A.ino.

## ◆ two_x_mode

int16_t two_x_mode = LTC2449_SPEED_1X
| static

The LTC2449 2X Mode settings.

Definition at line 125 of file DC742A.ino.