144 Serial.begin(115200);
154 Serial.println(F(
"EEPROM not detected, will attempt to proceed"));
164 uint8_t acknowledge = 0;
167 if (Serial.available())
170 if (user_command !=
'm')
171 Serial.println(user_command);
173 switch (user_command)
191 Serial.println(F(
"Incorrect Option"));
194 Serial.println(F(
"***** I2C ERROR *****"));
195 Serial.print(F(
"\n*************************\n"));
206 Serial.print(F(
"\n*****************************************************************\n"));
207 Serial.print(F(
"* DC1012A-A Demonstration Program *\n"));
208 Serial.print(F(
"* *\n"));
209 Serial.print(F(
"* This program demonstrates how to send data and receive data *\n"));
210 Serial.print(F(
"* from the 24-bit ADC. *\n"));
211 Serial.print(F(
"* *\n"));
212 Serial.print(F(
"* *\n"));
213 Serial.print(F(
"* Set the baud rate to 115200 and select the newline terminator.*\n"));
214 Serial.print(F(
"* *\n"));
215 Serial.print(F(
"*****************************************************************\n"));
221 Serial.print(F(
"\n1-Read Single-Ended\n"));
222 Serial.print(F(
"2-Read Differential\n"));
223 Serial.print(F(
"3-Read Temperature\n"));
224 Serial.print(F(
"4-2X Mode Settings\n"));
225 Serial.print(F(
"5-Set I2C Address\n"));
226 Serial.print(F(
"Enter a Command: "));
236 Serial.print(F(
"0P-1N"));
239 Serial.print(F(
"2P-3N"));
242 Serial.print(F(
"4P-5N"));
245 Serial.print(F(
"6P-7N"));
248 Serial.print(F(
"8P-9N"));
251 Serial.print(F(
"10P-11N"));
254 Serial.print(F(
"12P-13N"));
257 Serial.print(F(
"14P-15N"));
260 Serial.print(F(
"1P-0N"));
263 Serial.print(F(
"3P-2N"));
266 Serial.print(F(
"5P-4N"));
269 Serial.print(F(
"7P-6N"));
272 Serial.print(F(
"9P-8N"));
275 Serial.print(F(
"11P-10N"));
278 Serial.print(F(
"13P-12N"));
281 Serial.print(F(
"15P-14N"));
284 Serial.print(F(
": "));
291 uint8_t adc_command_high;
292 uint8_t adc_command_low;
301 Serial.print(F(
"*************************\n\n"));
302 Serial.print(F(
"0-CH0 8-CH8\n"));
303 Serial.print(F(
"1-CH1 9-CH9\n"));
304 Serial.print(F(
"2-CH2 10-CH10\n"));
305 Serial.print(F(
"3-CH3 11-CH11\n"));
306 Serial.print(F(
"4-CH4 12-CH12\n"));
307 Serial.print(F(
"5-CH5 13-CH13\n"));
308 Serial.print(F(
"6-CH6 14-CH14\n"));
309 Serial.print(F(
"7-CH7 15-CH15\n"));
310 Serial.print(F(
"16-ALL\n"));
311 Serial.print(F(
"m-Main Menu\n"));
312 Serial.print(F(
"Enter a Command: "));
315 if (user_command ==
'm')
317 Serial.println(user_command);
319 if (user_command == 16)
321 Serial.print(F(
"ALL\n"));
326 for (int8_t
x = 0;
x <= 15;
x++)
335 Serial.print(F(
" ****"));
336 Serial.print(F(
"CH"));
338 Serial.print(F(
": "));
339 Serial.print(adc_voltage, 4);
340 Serial.print(F(
"V\n\n"));
344 Serial.print(F(
" ****"));
345 Serial.print(F(
"CH"));
347 Serial.print(F(
": "));
348 Serial.print(F(
"Error in read"));
357 Serial.print(F(
"ADC Command: 0x"));
358 Serial.println((adc_command_high<<8)|adc_command_low, HEX);
359 Serial.print(F(
"I2C address is: "));
367 Serial.print(F(
"Received Code: 0x"));
368 Serial.println(adc_code, HEX);
370 Serial.print(F(
" ****"));
371 Serial.print(F(
"CH"));
372 Serial.print(user_command);
373 Serial.print(F(
": "));
374 Serial.print(adc_voltage, 4);
375 Serial.print(F(
"V\n\n"));
379 Serial.println(F(
"Device NAK'd, please check address and try again"));
392 uint8_t adc_command_high;
393 uint8_t adc_command_low;
402 Serial.print(F(
"\n*************************\n\n"));
403 Serial.print(F(
"0-0P-1N 8-1P-0N\n"));
404 Serial.print(F(
"1-2P-3N 9-3P-2N\n"));
405 Serial.print(F(
"2-4P-5N 10-5P-4N\n"));
406 Serial.print(F(
"3-6P-7N 11-7P-6N\n"));
407 Serial.print(F(
"4-8P-9N 12-9P-8N\n"));
408 Serial.print(F(
"5-10P-11N 13-11P-10N\n"));
409 Serial.print(F(
"6-12P_13N 14-13P-12N\n"));
410 Serial.print(F(
"7-14P-15N 15-15P-14N\n"));
411 Serial.print(F(
"16-ALL Even_P-Odd_N\n"));
412 Serial.print(F(
"17-ALL Odd_P-Even_N\n"));
413 Serial.print(F(
"m-Main Menu\n"));
416 if (user_command ==
'm')
418 Serial.println(user_command);
420 if ((user_command == 16) || (user_command == 17))
422 if (user_command == 16)
424 Serial.print(F(
"ALL Even_P-Odd_N\n"));
427 if (user_command == 17)
429 Serial.print(F(
"ALL Odd_P-Even_N\n"));
437 for (int8_t
x = 0;
x < 8;
x++)
445 Serial.print(F(
"Received Code: 0x"));
446 Serial.println(adc_code, HEX);
448 Serial.print(F(
"\n ****"));
450 Serial.print(F(
": "));
451 Serial.print(adc_voltage, 4);
452 Serial.print(F(
"V\n"));
456 Serial.println(F(
"Device NAK'd, please check I2C address"));
467 Serial.print(F(
"ADC Command: 0x"));
468 Serial.println((adc_command_high<<8)|adc_command_low, HEX);
477 Serial.print(F(
"Received Code: 0x"));
478 Serial.println(adc_code, HEX);
480 Serial.print(F(
"\n ****"));
482 Serial.print(adc_voltage, 4);
483 Serial.print(F(
"V\n"));
487 Serial.println(F(
"Device NAK'd, please check I2C address"));
498 uint8_t adc_command_high;
499 uint8_t adc_command_low;
512 Serial.print(F(
"Received Code: 0x"));
513 Serial.println(adc_code, HEX);
515 Serial.print(F(
"\n ****"));
516 Serial.print(adc_voltage, 4);
517 Serial.print(F(
"V\n"));
518 Serial.print(F(
"This equals to: "));
519 float temperature = (adc_voltage/93.5e-6);
520 Serial.print(temperature, DEC);
521 Serial.print(F(
" K\n"));
525 Serial.println(F(
"Device NAK'd, please check I2C address"));
537 Serial.print(F(
"2X Mode Settings\n\n"));
538 Serial.print(F(
"0-Disable\n"));
539 Serial.print(F(
"1-Enable\n"));
540 Serial.print(F(
"Enter a Command: "));
542 Serial.println(user_command);
544 if (user_command == 0)
547 Serial.print(F(
"2X Mode Disabled\n"));
552 Serial.print(F(
"2X Mode Enabled\n"));
560 Serial.print(F(
"What is the I2C address of the part?\n"));
561 Serial.print(F(
"Please enter in 7-bit format, decimal\n"));
564 Serial.println(user_command);
static void menu_5_set_address()
Set the I2C 7 bit address.
static void print_title()
Prints the title block when program first starts.
unsigned char user_command
static void loop()
Repeats Linduino loop.
Header File for Linduino Libraries and Demo Code.
static void print_user_command(uint8_t menu)
Display selected differential channels.
#define LTC2499_INTERNAL_TEMP
static void setup()
Initialize Linduino.
static int8_t menu_1_read_single_ended()
Read channels in single-ended mode.
uint8_t LTC2499_read(uint8_t i2c_address, uint8_t adc_command_high, uint8_t adc_command_low, int32_t *adc_code, uint16_t timeout)
Reads from LTC2499.
static uint16_t eoc_timeout
Timeout in ms.
static void print_prompt()
Prints main menu.
static int8_t menu_3_read_temperature()
Read Temperature.
#define LTC2497_I2C_ADDRESS
I2C address of the LTC2497.
const uint16_t BUILD_COMMAND_DIFF[16]
Lookup table to build the command for differential mode.
static float LTC2499_vref
The LTC2499 reference voltage.
LTC24XX General Library: Functions and defines for all SINC4 Delta Sigma ADCs.
LT_I2C: Routines to communicate with ATmega328P's hardware I2C port.
static int8_t menu_2_read_differential()
Read channels in differential mode.
const uint16_t BUILD_COMMAND_SINGLE_ENDED[16]
Lookup table to build the command for single-ended mode.
static int16_t two_x_mode
The LTC2499 2X Mode settings.
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.
LT_I2C: Routines to communicate with ATmega328P's hardware I2C port.
const uint16_t BUILD_1X_2X_COMMAND[2]
Lookup table to build 1X / 2X bits.
char demo_name[]
Demo Board Name stored in QuikEval EEPROM.
static void menu_4_set_1X2X()
Set 1X or 2X mode.
static uint8_t i2c_address
I2C address in 7 bit format for part.
float LTC2499_code_to_voltage(int32_t adc_code, float vref)
Calculates the voltage corresponding to an adc code, given the reference (in volts) ...
void quikeval_I2C_init(void)
Initializes Linduino I2C port.
void quikeval_I2C_connect(void)
Switch MUX to connect I2C pins to QuikEval connector.
static uint8_t rejection_mode
The LTC2499 rejection mode.
LTC2499: 24-Bit, 16-Channel Delta Sigma ADCs with Easy Drive Input Current Cancellation.
static uint8_t demo_board_connected
Set to 1 if the board is connected.