91 void set_gain(uint8_t a_pin, uint8_t b_pin, uint8_t gain);
116 uint8_t
read_gain_seq[] = {
unity,
unity,
unity,
g8,
g16,
g32,
channel_gain[0], channel_gain[1], channel_gain[2], channel_gain[3],
117 channel_gain[4], channel_gain[5]
140 Serial.begin(115200);
150 Serial.println(F(
"EEPROM not detected, will attempt to proceed"));
161 if (Serial.available())
164 if (user_command !=
'm')
165 Serial.println(user_command);
167 switch (user_command)
179 Serial.println(F(
"Incorrect Option"));
182 Serial.println(F(
"\n******SPI ERROR******\n"));
183 Serial.print(F(
"\n*************************\n"));
193 Serial.print(F(
"\n*****************************************************************\n"));
194 Serial.print(F(
"* DC1410A-B Demonstration Program *\n"));
195 Serial.print(F(
"* *\n"));
196 Serial.print(F(
"* This program demonstrates how to measure strain gauge or *\n"));
197 Serial.print(F(
"* other form of a Wheatstone bridge sensors with the LTC2449 *\n"));
198 Serial.print(F(
"* *\n"));
199 Serial.print(F(
"* *\n"));
200 Serial.print(F(
"* Set the baud rate to 115200 and select the newline terminator.*\n"));
201 Serial.print(F(
"* *\n"));
202 Serial.print(F(
"*****************************************************************\n"));
208 Serial.print(F(
"\n1-Read Differential\n"));
209 Serial.print(F(
"2-OSR Settings\n"));
210 Serial.print(F(
"3-Set Channel Gain\n"));
211 Serial.print(F(
"Enter a Command: "));
224 float gain_unity = 0.0;
233 for (int8_t
i = 0;
i <= 11;
i++)
247 offset = adc_code[1] - 536870912;
248 gain_unity = ((float)adc_code[2]) - 536870912;
249 gain_8 = ((float)adc_code[3] - 536870912) / gain_unity;
250 gain_16 = ((float)adc_code[4] - 536870912) / gain_unity;
251 gain_32 = ((float)adc_code[5] - 536870912) / gain_unity;
257 gain_unity = ((float)adc_code[2]) - 536870912;
264 gain_value[1] = gain_8;
265 gain_value[2] = gain_16;
266 gain_value[3] = gain_32;
269 Serial.println(F(
"\n**********"));
270 Serial.print(F(
" Offset: "));
271 Serial.print(offset, 6);
272 Serial.print(F(
" "));
274 Serial.println(F(
" mV"));
275 Serial.print(F(
" G8: "));
276 Serial.println(gain_8, 6);
277 Serial.print(F(
" G16: "));
278 Serial.println(gain_16, 6);
279 Serial.print(F(
" G32: "));
280 Serial.println(gain_32, 6);
283 Serial.println(F(
"CH ADC Code Gain Comp Voltage (mV)"));
284 Serial.print(F(
"P0-N1: 0x"));
285 Serial.print(adc_code[5], HEX);
288 Serial.print(F(
" "));
291 Serial.print(F(
"P2-N3: 0x"));
292 Serial.print(adc_code[6], HEX);
293 Serial.print(F(
" "));
294 Serial.print(gain_value[channel_gain[1]], 6);
298 Serial.print(F(
"P4-N5: 0x"));
299 Serial.print(adc_code[7], HEX);
300 Serial.print(F(
" "));
301 Serial.print(gain_value[channel_gain[2]], 6);
305 Serial.print(F(
"P6-N7: 0x"));
306 Serial.print(adc_code[8], HEX);
307 Serial.print(F(
" "));
308 Serial.print(gain_value[channel_gain[3]], 6);
312 Serial.print(F(
"P8-N9: 0x"));
313 Serial.print(adc_code[9], HEX);
314 Serial.print(F(
" "));
315 Serial.print(gain_value[channel_gain[4]], 6);
319 Serial.print(F(
"P10-N11: 0x"));
320 Serial.print(adc_code[10], HEX);
321 Serial.print(F(
" "));
322 Serial.print(gain_value[channel_gain[5]], 6);
327 Serial.println(F(
"Enter any character to exit"));
330 while (Serial.available() == 0);
331 while (Serial.available())
338 void set_gain(uint8_t a_pin, uint8_t b_pin, uint8_t gain)
340 digitalWrite(a_pin, gain & 0b01);
341 digitalWrite(b_pin, gain & 0b10);
347 pinMode(a_pin, OUTPUT);
348 pinMode(b_pin, OUTPUT);
349 digitalWrite(a_pin, LOW);
350 digitalWrite(b_pin, LOW);
361 Serial.print(F(
"\nCurrent Gain Settings:\n"));
362 Serial.print(F(
" CH 0P-1N gain: "));
364 Serial.print(F(
" CH 2P-3N gain: "));
366 Serial.print(F(
" CH 4P-5N gain: "));
368 Serial.print(F(
" CH 6P-7N gain: "));
370 Serial.print(F(
" CH 8P-9N gain: "));
372 Serial.print(F(
" CH 10P-11N gain: "));
375 Serial.print(F(
"\n\n"));
376 Serial.print(F(
"Channel Select\n"));
377 Serial.print(F(
" 0-0P-1N 3-6P-7N\n"));
378 Serial.print(F(
" 1-2P-3N 4-8P-9N\n"));
379 Serial.print(F(
" 2-4P-5N 5-10P-11N\n"));
380 Serial.print(F(
" 6-ALL\n"));
381 Serial.print(F(
"m-Main Menu\n"));
382 Serial.print(F(
"Enter a Command: "));
386 if (user_command ==
'm')
388 Serial.println(F(
"m"));
391 Serial.println(user_command);
392 if (user_command > 6)
393 Serial.println(F(
"Incorrect Option"));
396 if (user_command == 6)
398 Serial.print(F(
"\nGain Options\n"));
399 Serial.print(F(
" 0-Unity Gain\n"));
400 Serial.print(F(
" 1-Gain of 8\n"));
401 Serial.print(F(
" 2-Gain of 16\n"));
402 Serial.print(F(
" 3-Gain of 32\n"));
403 Serial.print(F(
"Enter a Command: "));
405 Serial.println(user_command);
406 if (user_command < 0 || user_command > 3)
407 Serial.print(F(
"Incorrect Gain Option"));
410 for (uint8_t
i = 0;
i <= 5;
i++)
418 Serial.print(F(
"\nGain Options\n"));
419 Serial.print(F(
" 0-Unity Gain\n"));
420 Serial.print(F(
" 1-Gain of 8\n"));
421 Serial.print(F(
" 2-Gain of 16\n"));
422 Serial.print(F(
" 3-Gain of 32\n"));
423 Serial.print(F(
"Enter a Command: "));
425 Serial.println(user_command);
426 if (user_command < 0 || user_command > 3)
427 Serial.print(F(
"Incorrect Gain Option"));
433 for (int8_t
i = 0;
i <= 5;
i++)
444 Serial.print(F(
"Unity\n"));
447 Serial.print(F(
"8\n"));
450 Serial.print(F(
"16\n"));
453 Serial.print(F(
"32\n"));
464 Serial.print(F(
"OSR Settings\n\n"));
465 Serial.print(F(
"0-64\n"));
466 Serial.print(F(
"1-128\n"));
467 Serial.print(F(
"2-256\n"));
468 Serial.print(F(
"3-512\n"));
469 Serial.print(F(
"4-1024\n"));
470 Serial.print(F(
"5-2048\n"));
471 Serial.print(F(
"6-4096\n"));
472 Serial.print(F(
"7-8192\n"));
473 Serial.print(F(
"8-16384\n"));
474 Serial.print(F(
"9-32768\n"));
475 Serial.print(F(
"Enter a Command: "));
478 if (user_command <= 0)
482 else if (user_command > 9)
486 Serial.println(user_command);
static void init_gain_pins(uint8_t a_pin, uint8_t b_pin)
initialize the MUX select pins
static void print_prompt()
Prints main menu.
unsigned char user_command
static uint8_t adc_command
#define LTC2449_CS
Define the SPI CS pin.
static uint16_t osr
Default OSR is 32768.
static uint8_t filt_flag
Keeps track when filters need to be reset.
#define LTC2449_OSR_32768
Header File for Linduino Libraries and Demo Code.
static uint8_t channel_gain[6]
default is gain 32
static uint8_t channel
LTC2305 Channel selection.
#define LTC2449_OSR_16384
static uint8_t menu_1_read_differential()
Read channels in differential mode.
static void menu_3_set_channel_gain()
Allows the user to sets the desired gain.
float LTC24XX_diff_code_to_calibrated_voltage(int32_t adc_code, float LTC2449_lsb, int32_t LTC2449_offset_code)
Calculates the voltage corresponding to an ADC code, given lsb weight (in volts) and the calibrated A...
LTC24XX General Library: Functions and defines for all SINC4 Delta Sigma ADCs.
static void menu_2_set_osr()
Allows the user to sets the desired OSR.
static void print_title()
Prints the title block when program first starts.
const float smoothing_const
Exponential filter smothing constant for the offset.
const uint8_t A_PIN
Gain MUX pins.
static uint8_t read_gain_seq[]
Lookup table for gain setting reads.
static void loop()
Repeats Linduino loop.
static uint16_t eoc_timeout
Timeout in ms.
void quikeval_SPI_init(void)
Configure the SPI port for 4Mhz SCK.
static uint8_t demo_board_connected
Set to 1 if the board is connected.
int8_t discover_demo_board(char *demo_name)
Read the ID string from the EEPROM and determine if the correct board is connected.
LT_SPI: Routines to communicate with ATmega328P's hardware SPI port.
static void print_gain(uint8_t gain)
Utility function to display the gain.
LT_I2C: Routines to communicate with ATmega328P's hardware I2C port.
char demo_name[]
Demo Board Name stored in QuikEval EEPROM.
static void print_user_command(uint8_t menu)
void quikeval_SPI_connect()
Connect SPI pins to QuikEval connector through the Linduino MUX. This will disconnect I2C...
static void setup()
Initialize Linduino.
const uint16_t OSR_COMMAND[]
Lookup table for OSR.
LTC2449: 24-Bit, 16-Channel Delta Sigma ADCs with Selectable Speed/Resolution.
static float LTC2449_lsb
The LTC2449 ideal reference voltage.
void quikeval_I2C_init(void)
Initializes Linduino I2C port.
const uint16_t read_command_seq[]
Lookup table for reads.
static void set_gain(uint8_t a_pin, uint8_t b_pin, uint8_t gain)
Set the Mux select pins to the desired gain.
int8_t LTC2449_EOC_timeout(uint8_t cs, uint16_t miso_timeout)
Define the SPI CS pin.
void LTC2449_read(uint8_t cs, uint16_t adc_command, uint32_t *adc_code)
Reads from LTC2449.