| Linduino 1.3.0 Linear Technology Arduino-Compatible Demonstration Board

Functions | Variables
DC806A.ino File Reference
Analog-to-Digital Converters (ADC) » LTC1867: 16-Bit 8-Channel 200ksps ADC

Linear Technology DC806A Demonstration Board. More...

## Detailed Description

Linear Technology DC806A Demonstration Board.

LTC1867: 16-Bit, 8-Channel 200ksps ADC.

    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 (to monitor
       voltage source). No external power supply is required. Ensure JP1 is installed in
       the default position from the factory.

      How to test Single-Ended mode:
       The voltage source should be connected to the ADC such that the negative lead is
       connected to the GND pin. The positive lead may be connected to any channel
       input. Ensure voltage is within analog input voltage range 0 to +4.096V.

      How to test Single-Ended mode with CH7 as COM:
       The voltage source should be connected to the ADC such that the negative lead is
       connected to both GND and the common (COM) pin. The positive lead may be
       connected to any channel inputs 0-6. Ensure voltage is within analog input
       voltage range 0 to +4.096V.

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

       Unipolar Mode:
         The voltage source should be connected with positive and negative leads to
         paired channels. The negative lead of the voltage source must also be connected
         to the GND pin in order to provide a ground-referenced voltage. Ensure voltage
         is within the range of 0 to +4.096V. Swapping input voltages results in a zero
         reading.

      How to calibrate:
       Apply 100mV to CH0 and connect CH1 to GND. Measure this voltage with a precise
       voltmeter and enter this value. (This takes the reading.) Now apply approximately
       4.00 volts to CH0. Measure this voltage with a precise voltmeter and enter this
       value. Short CH0 and CH1 to ground. Next, hit ENTER. (This takes the reading.)
       Calibration is now stored in EEPROM. Upon startup 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/LTC1867

http://www.linear.com/product/LTC1867#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 DC806A.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 void | menu_1_read_single_ended ()
| Read channels in single-ended mode. More...
static void | menu_2_read_differential ()
| Read channels in differential mode. More...
static void | menu_3_read_single_ended_com7 ()
| Read Channels in Single-Ended mode with Ch7 as COM. More...
static void | menu_4_calibrate ()
| Calibrate ADC given two known inputs @ return void. More...
static void | menu_5_sleep ()
| Put LTC1867 to sleep (low power) More...
static void | menu_6_select_uni_bipolar ()
| Select unipolar (0-REFCOMP) or bipolar (+/- 0.5 x REFCOMP) mode. 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 uint8_t | uni_bi_polar = LTC1867_UNIPOLAR_MODE
| The LTC1867 unipolar/bipolar mode selection. More...
static float | LTC1867_lsb = 6.25009537E-5
| Ideal LSB voltage for a perfect part. More...
static int32_t | LTC1867_offset_unipolar_code = 0
| Ideal unipolar offset for a perfect part. More...
static int32_t | LTC1867_offset_bipolar_code = 0
| Ideal bipolar offset for a perfect part. More...
const uint8_t | BUILD_COMMAND_SINGLE_ENDED [8]
| Lookup table to build the command for single-ended mode, input with respect to GND. More...
const uint8_t | BUILD_COMMAND_SINGLE_ENDED_COM7 [7]
| Lookup table to build the command for single-ended mode with channel 7 as common pin. More...
const uint8_t | BUILD_COMMAND_DIFF [8]
| Lookup table to build the command for differential mode with the selected uni/bipolar mode. More...

## Function Documentation

## ◆ loop()

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

Repeats Linduino loop.

Definition at line 170 of file DC806A.ino.

## ◆ menu_1_read_single_ended()

static void menu_1_read_single_ended | ( |  | ) |
| static

Read channels in single-ended mode.

Returns
  void

Definition at line 215 of file DC806A.ino.

## ◆ menu_2_read_differential()

static void menu_2_read_differential | ( |  | ) |
| static

Read channels in differential mode.

Returns
  void

Definition at line 301 of file DC806A.ino.

## ◆ menu_3_read_single_ended_com7()

static void menu_3_read_single_ended_com7 | ( |  | ) |
| static

Read Channels in Single-Ended mode with Ch7 as COM.

Returns
  void

Definition at line 395 of file DC806A.ino.

## ◆ menu_4_calibrate()

static void menu_4_calibrate | ( |  | ) |
| static

Calibrate ADC given two known inputs @ return void.

Definition at line 483 of file DC806A.ino.

## ◆ menu_5_sleep()

static void menu_5_sleep | ( |  | ) |
| static

Put LTC1867 to sleep (low power)

Returns
  void

Definition at line 538 of file DC806A.ino.

## ◆ menu_6_select_uni_bipolar()

static void menu_6_select_uni_bipolar | ( |  | ) |
| static

Select unipolar (0-REFCOMP) or bipolar (+/- 0.5 x REFCOMP) mode.

Returns
  void

Definition at line 555 of file DC806A.ino.

## ◆ print_prompt()

static void print_prompt | ( |  | ) |
| static

Prints main menu.

Definition at line 623 of file DC806A.ino.

## ◆ print_title()

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

Prints the title block when program first starts.

Definition at line 607 of file DC806A.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 643 of file DC806A.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 583 of file DC806A.ino.

## ◆ setup()

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

Initialize Linduino.

Definition at line 150 of file DC806A.ino.

## ◆ store_calibration()

static void store_calibration | ( |  | ) |
| static

Store measured calibration parameters to nonvolatile EEPROM on demo board.

Returns
  void

Definition at line 571 of file DC806A.ino.

## Variable Documentation

## ◆ BUILD_COMMAND_DIFF

const uint8_t BUILD_COMMAND_DIFF[8]

Initial value:
= {LTC1867_P0_N1, LTC1867_P2_N3, LTC1867_P4_N5, LTC1867_P6_N7,
LTC1867_P1_N0, LTC1867_P3_N2, LTC1867_P5_N4, LTC1867_P7_N6
}
LTC1867_P4_N5
#define LTC1867_P4_N5
Definition: LTC1867.h:123
LTC1867_P5_N4
#define LTC1867_P5_N4
Definition: LTC1867.h:124
LTC1867_P1_N0
#define LTC1867_P1_N0
Definition: LTC1867.h:118
LTC1867_P0_N1
#define LTC1867_P0_N1
Definition: LTC1867.h:117
LTC1867_P7_N6
#define LTC1867_P7_N6
Definition: LTC1867.h:127
LTC1867_P2_N3
#define LTC1867_P2_N3
Definition: LTC1867.h:120
LTC1867_P3_N2
#define LTC1867_P3_N2
Definition: LTC1867.h:121
LTC1867_P6_N7
#define LTC1867_P6_N7
Definition: LTC1867.h:126

Lookup table to build the command for differential mode with the selected uni/bipolar mode.

Build the command for differential mode

Definition at line 145 of file DC806A.ino.

## ◆ BUILD_COMMAND_SINGLE_ENDED

const uint8_t BUILD_COMMAND_SINGLE_ENDED[8]

Initial value:
= {LTC1867_CH0, LTC1867_CH1, LTC1867_CH2, LTC1867_CH3,
LTC1867_CH4, LTC1867_CH5, LTC1867_CH6, LTC1867_CH7
}
LTC1867_CH5
#define LTC1867_CH5
Definition: LTC1867.h:109
LTC1867_CH4
#define LTC1867_CH4
Definition: LTC1867.h:108
LTC1867_CH0
#define LTC1867_CH0
Definition: LTC1867.h:104
LTC1867_CH3
#define LTC1867_CH3
Definition: LTC1867.h:107
LTC1867_CH2
#define LTC1867_CH2
Definition: LTC1867.h:106
LTC1867_CH7
#define LTC1867_CH7
Definition: LTC1867.h:111
LTC1867_CH6
#define LTC1867_CH6
Definition: LTC1867.h:110
LTC1867_CH1
#define LTC1867_CH1
Definition: LTC1867.h:105

Lookup table to build the command for single-ended mode, input with respect to GND.

Builds the command for single-ended mode, input with respect to GND

Definition at line 135 of file DC806A.ino.

## ◆ BUILD_COMMAND_SINGLE_ENDED_COM7

const uint8_t BUILD_COMMAND_SINGLE_ENDED_COM7[7]

Initial value:
= {LTC1867_CH0_7COM, LTC1867_CH1_7COM, LTC1867_CH2_7COM, LTC1867_CH3_7COM,
LTC1867_CH4_7COM, LTC1867_CH5_7COM, LTC1867_CH6_7COM
}
LTC1867_CH0_7COM
#define LTC1867_CH0_7COM
Definition: LTC1867.h:133
LTC1867_CH3_7COM
#define LTC1867_CH3_7COM
Definition: LTC1867.h:136
LTC1867_CH6_7COM
#define LTC1867_CH6_7COM
Definition: LTC1867.h:139
LTC1867_CH5_7COM
#define LTC1867_CH5_7COM
Definition: LTC1867.h:138
LTC1867_CH4_7COM
#define LTC1867_CH4_7COM
Definition: LTC1867.h:137
LTC1867_CH2_7COM
#define LTC1867_CH2_7COM
Definition: LTC1867.h:135
LTC1867_CH1_7COM
#define LTC1867_CH1_7COM
Definition: LTC1867.h:134

Lookup table to build the command for single-ended mode with channel 7 as common pin.

Builds the command for single-ended mode, input with respect to CH7

Definition at line 140 of file DC806A.ino.

## ◆ demo_board_connected

uint8_t demo_board_connected
| static

Set to 1 if the board is connected.

Definition at line 126 of file DC806A.ino.

## ◆ LTC1867_lsb

float LTC1867_lsb = 6.25009537E-5
| static

Ideal LSB voltage for a perfect part.

Definition at line 128 of file DC806A.ino.

## ◆ LTC1867_offset_bipolar_code

int32_t LTC1867_offset_bipolar_code = 0
| static

Ideal bipolar offset for a perfect part.

Definition at line 130 of file DC806A.ino.

## ◆ LTC1867_offset_unipolar_code

int32_t LTC1867_offset_unipolar_code = 0
| static

Ideal unipolar offset for a perfect part.

Definition at line 129 of file DC806A.ino.

## ◆ uni_bi_polar

uint8_t uni_bi_polar = LTC1867_UNIPOLAR_MODE
| static

The LTC1867 unipolar/bipolar mode selection.

Definition at line 127 of file DC806A.ino.