140 Serial.begin(115200);
150 Serial.println(F(
"EEPROM not detected, will attempt to proceed"));
164 if (Serial.available())
167 if (user_command !=
'm')
168 Serial.println(user_command);
170 switch (user_command)
185 Serial.println(F(
"Incorrect Option"));
188 Serial.println(F(
"\n******SPI ERROR******\n"));
189 Serial.print(F(
"\n*************************\n"));
200 Serial.print(F(
"\n*****************************************************************\n"));
201 Serial.print(F(
"* DC1011A-A Demonstration Program *\n"));
202 Serial.print(F(
"* *\n"));
203 Serial.print(F(
"* This program demonstrates how to send data and receive data *\n"));
204 Serial.print(F(
"* from the 24-bit ADC. *\n"));
205 Serial.print(F(
"* *\n"));
206 Serial.print(F(
"* *\n"));
207 Serial.print(F(
"* Set the baud rate to 115200 and select the newline terminator.*\n"));
208 Serial.print(F(
"* *\n"));
209 Serial.print(F(
"*****************************************************************\n"));
215 Serial.print(F(
"\n1-Read Single-Ended\n"));
216 Serial.print(F(
"2-Read Differential\n"));
217 Serial.print(F(
"3-Read Temperature\n"));
218 Serial.print(F(
"4-2X Mode Settings\n"));
219 Serial.print(F(
"Enter a Command: "));
229 Serial.print(F(
"0P-1N"));
232 Serial.print(F(
"2P-3N"));
235 Serial.print(F(
"4P-5N"));
238 Serial.print(F(
"6P-7N"));
241 Serial.print(F(
"8P-9N"));
244 Serial.print(F(
"10P-11N"));
247 Serial.print(F(
"12P-13N"));
250 Serial.print(F(
"14P-15N"));
253 Serial.print(F(
"1P-0N"));
256 Serial.print(F(
"3P-2N"));
259 Serial.print(F(
"5P-4N"));
262 Serial.print(F(
"7P-6N"));
265 Serial.print(F(
"9P-8N"));
268 Serial.print(F(
"11P-10N"));
271 Serial.print(F(
"13P-12N"));
274 Serial.print(F(
"15P-14N"));
277 Serial.print(F(
": "));
284 uint8_t adc_command_high;
285 uint8_t adc_command_low;
292 Serial.print(F(
"*************************\n\n"));
293 Serial.print(F(
"0-CH0 8-CH8\n"));
294 Serial.print(F(
"1-CH1 9-CH9\n"));
295 Serial.print(F(
"2-CH2 10-CH10\n"));
296 Serial.print(F(
"3-CH3 11-CH11\n"));
297 Serial.print(F(
"4-CH4 12-CH12\n"));
298 Serial.print(F(
"5-CH5 13-CH13\n"));
299 Serial.print(F(
"6-CH6 14-CH14\n"));
300 Serial.print(F(
"7-CH7 15-CH15\n"));
301 Serial.print(F(
"16-ALL\n"));
302 Serial.print(F(
"m-Main Menu\n"));
303 Serial.print(F(
"Enter a Command: "));
306 if (user_command ==
'm')
308 Serial.println(user_command);
310 if (user_command == 16)
312 Serial.print(F(
"ALL\n"));
319 for (int8_t
x = 0;
x <= 15;
x++)
329 Serial.print(F(
" ****"));
330 Serial.print(F(
"CH"));
332 Serial.print(F(
": "));
333 Serial.print(adc_voltage, 4);
334 Serial.print(F(
"V\n\n"));
341 Serial.print(F(
"ADC Command: 0x"));
342 Serial.println((adc_command_high<<8) | adc_command_low, HEX);
352 Serial.print(F(
"Received Code: 0x"));
353 Serial.println(adc_code, HEX);
355 Serial.print(F(
" ****"));
356 Serial.print(F(
"CH"));
357 Serial.print(user_command);
358 Serial.print(F(
": "));
359 Serial.print(adc_voltage, 4);
360 Serial.print(F(
"V\n\n"));
371 uint8_t adc_command_high;
372 uint8_t adc_command_low;
379 Serial.print(F(
"\n*************************\n\n"));
380 Serial.print(F(
"0-0P-1N 8-1P-0N\n"));
381 Serial.print(F(
"1-2P-3N 9-3P-2N\n"));
382 Serial.print(F(
"2-4P-5N 10-5P-4N\n"));
383 Serial.print(F(
"3-6P-7N 11-7P-6N\n"));
384 Serial.print(F(
"4-8P-9N 12-9P-8N\n"));
385 Serial.print(F(
"5-10P-11N 13-11P-10N\n"));
386 Serial.print(F(
"6-12P_13N 14-13P-12N\n"));
387 Serial.print(F(
"7-14P-15N 15-15P-14N\n"));
388 Serial.print(F(
"16-ALL Even_P-Odd_N\n"));
389 Serial.print(F(
"17-ALL Odd_P-Even_N\n"));
390 Serial.print(F(
"m-Main Menu\n"));
393 if (user_command ==
'm')
395 Serial.println(user_command);
397 if ((user_command == 16) || (user_command == 17))
399 if (user_command == 16)
401 Serial.print(F(
"ALL Even_P-Odd_N\n"));
404 if (user_command == 17)
406 Serial.print(F(
"ALL Odd_P-Even_N\n"));
416 for (int8_t
x = 0;
x < 8;
x++)
428 Serial.print(F(
"Received Code: 0x"));
429 Serial.println((adc_command_high<<8) | adc_command_low, HEX);
431 Serial.print(F(
"\n ****"));
433 Serial.print(F(
": "));
434 Serial.print(adc_voltage, 4);
435 Serial.print(F(
"V\n"));
444 Serial.print(F(
"ADC Command: 0x"));
445 Serial.println((adc_command_high<<8) | adc_command_low, HEX);
457 Serial.print(F(
"Received Code: 0x"));
458 Serial.println(adc_code, HEX);
460 Serial.print(F(
"\n ****"));
462 Serial.print(adc_voltage, 4);
463 Serial.print(F(
"V\n"));
474 uint8_t adc_command_high;
475 uint8_t adc_command_low;
491 Serial.print(F(
"Received Code: 0x"));
492 Serial.println(adc_code, HEX);
494 Serial.print(F(
"\n ****"));
495 Serial.print(adc_voltage, 4);
496 Serial.print(F(
"V\n"));
497 Serial.print(F(
"This equals to: "));
498 float temperature = (adc_voltage/93.5e-6);
499 Serial.print(temperature, DEC);
500 Serial.print(F(
" K\n"));
510 Serial.print(F(
"2X Mode Settings\n\n"));
511 Serial.print(F(
"0-Disable\n"));
512 Serial.print(F(
"1-Enable\n"));
513 Serial.print(F(
"Enter a Command: "));
515 Serial.println(user_command);
517 if (user_command == 0)
520 Serial.print(F(
"2X Mode Disabled\n"));
525 Serial.print(F(
"2X Mode Enabled\n"));
const uint8_t BUILD_COMMAND_DIFF[16]
Lookup table to build the command for differential mode.
unsigned char user_command
static uint8_t rejection_mode
The LTC2498 rejection mode settings.
#define LTC2498_INTERNAL_TEMP
static void setup()
Initialize Linduino.
Header File for Linduino Libraries and Demo Code.
LTC2498: 24-Bit, 16-Channel Delta Sigma ADCs with Easy Drive Input Current Cancellation.
static void loop()
Repeats Linduino loop.
int8_t LTC2498_EOC_timeout(uint8_t cs, uint16_t miso_timeout)
Checks for EOC with a specified timeout.
static uint8_t demo_board_connected
Set to 1 if the board is connected.
static void print_prompt()
Prints main menu.
const uint8_t BUILD_COMMAND_SINGLE_ENDED[16]
Lookup table to build the command for single-ended mode.
LTC24XX General Library: Functions and defines for all SINC4 Delta Sigma ADCs.
static float LTC2498_vref
The LTC2498 ideal reference voltage.
const uint8_t BUILD_1X_2X_COMMAND[2]
Lookup table to build 1X / 2X bits.
void LTC2498_read(uint8_t cs, uint8_t adc_command_high, uint8_t adc_command_low, int32_t *adc_code)
Reads from LTC2498.
void quikeval_SPI_init(void)
Configure the SPI port for 4Mhz SCK.
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 uint16_t eoc_timeout
timeout in ms
LT_I2C: Routines to communicate with ATmega328P's hardware I2C port.
static uint8_t two_x_mode
The LTC2498 2X Mode settings.
char demo_name[]
Demo Board Name stored in QuikEval EEPROM.
void quikeval_SPI_connect()
Connect SPI pins to QuikEval connector through the Linduino MUX. This will disconnect I2C...
float LTC2498_code_to_voltage(int32_t adc_code, float vref)
Calculates the voltage corresponding to an adc code, given the reference (in volts) ...
static void menu_4_set_1X2X()
Set 1X or 2X mode.
#define LTC2498_CS
Define the SPI CS pin.
void quikeval_I2C_init(void)
Initializes Linduino I2C port.
static void print_user_command(uint8_t menu)
Display selected differential channels.
static uint8_t menu_2_read_differential()
Read channels in differential mode.
static void print_title()
Prints the title block when program first starts.
static uint8_t menu_1_read_single_ended()
Read channels in single-ended mode.
static uint8_t menu_3_read_temperature()
Read Temperature.