Maxim Integrated MAX5171 14-bit Force/Sense DAC
Dependents: MAX5171BOB_Tester MAX5171BOB_14bit_Remote_Sense_SPI_DAC MAX5171BOB_Serial_Tester
Diff: MAX5171.cpp
- Revision:
- 6:f661c4a61207
- Parent:
- 5:e8c0dfaeb53b
- Child:
- 7:564b438a0448
diff -r e8c0dfaeb53b -r f661c4a61207 MAX5171.cpp --- a/MAX5171.cpp Thu Mar 12 23:33:56 2020 +0000 +++ b/MAX5171.cpp Fri Apr 03 06:27:05 2020 +0000 @@ -290,17 +290,149 @@ //---------------------------------------- // Menu item '!' // Initialize device -// @return 1 on success; 0 on failure -uint8_t MAX5171::Init(void) +// +// TODO1: #170 MAX5171 Self Test for Test Fixture Firmware +// @future test group ____ // Verify function ____ (enabled by default) +// @future test +// tinyTester.settle_time_msec = 250; +// +// @test group DACCodeOfVoltage // Verify function DACCodeOfVoltage (enabled by default) +// @test group DACCodeOfVoltage tinyTester.blink_time_msec = 20 // quickly speed through the software verification +// @test group DACCodeOfVoltage tinyTester.print("VRef = 2.500 MAX5171 14-bit LSB = 0.00015V") +// @test group DACCodeOfVoltage VRef = 2.500 +// @test group DACCodeOfVoltage tinyTester.err_threshold = 0.00015259720441921504 // 14-bit LSB (2.500/16383) +// // +// @test group DACCodeOfVoltage DACCodeOfVoltage(2.499847412109375) expect 0x3FFF +// @test group DACCodeOfVoltage DACCodeOfVoltage(2.49969482421875) expect 0x3FFE +// @test group DACCodeOfVoltage DACCodeOfVoltage(2.499542236328125) expect 0x3FFD +// @test group DACCodeOfVoltage DACCodeOfVoltage(2.4993896484375) expect 0x3FFC +// @test group DACCodeOfVoltage DACCodeOfVoltage(1.250152587890625) expect 0x2001 +// @test group DACCodeOfVoltage DACCodeOfVoltage(1.25) expect 0x2000 +// @test group DACCodeOfVoltage DACCodeOfVoltage(1.249847412109375) expect 0x1FFF +// @test group DACCodeOfVoltage DACCodeOfVoltage(1.24969482421875) expect 0x1FFE +// @test group DACCodeOfVoltage DACCodeOfVoltage(0.000457763671875) expect 0x0003 +// @test group DACCodeOfVoltage DACCodeOfVoltage(0.00030517578125) expect 0x0002 +// @test group DACCodeOfVoltage DACCodeOfVoltage(0.000152587890625) expect 0x0001 +// @test group DACCodeOfVoltage DACCodeOfVoltage(0.00000) expect 0x0000 +// @test group DACCodeOfVoltage tinyTester.blink_time_msec = 75 // default 75 resume hardware self test +// // +// @test group VoltageOfCode // Verify function VoltageOfCode (enabled by default) +// @test group VoltageOfCode tinyTester.blink_time_msec = 20 // quickly speed through the software verification +// @test group VoltageOfCode tinyTester.print("VRef = 2.500 MAX5171 14-bit LSB = 0.00015V") +// @test group VoltageOfCode VRef = 2.500 +// @test group VoltageOfCode tinyTester.err_threshold = 0.00015259720441921504 // 14-bit LSB (2.500/16383) +// @test group VoltageOfCode VoltageOfCode(0x3FFF) expect 2.499847412109375 +// @test group VoltageOfCode VoltageOfCode(0x3FFE) expect 2.49969482421875 +// @test group VoltageOfCode VoltageOfCode(0x3FFD) expect 2.499542236328125 +// @test group VoltageOfCode VoltageOfCode(0x3FFC) expect 2.4993896484375 +// @test group VoltageOfCode VoltageOfCode(0x2001) expect 1.250152587890625 +// @test group VoltageOfCode VoltageOfCode(0x2000) expect 1.25 +// @test group VoltageOfCode VoltageOfCode(0x1FFF) expect 1.249847412109375 +// @test group VoltageOfCode VoltageOfCode(0x1FFE) expect 1.24969482421875 +// @test group VoltageOfCode VoltageOfCode(0x0003) expect 0.000457763671875 +// @test group VoltageOfCode VoltageOfCode(0x0002) expect 0.00030517578125 +// @test group VoltageOfCode VoltageOfCode(0x0001) expect 0.000152587890625 +// @test group VoltageOfCode VoltageOfCode(0x0000) expect 0.00000 +// @test group VoltageOfCode tinyTester.blink_time_msec = 75 // default 75 resume hardware self test +// // +// // Device Testing: DAC commands, verify using on-board ADC inputs +// // +// @test group CODE_LOAD // Verify function CODE_LOAD (enabled by default) +// @test group CODE_LOAD tinyTester.blink_time_msec = 75 // default 75 resume hardware self test +// @test group CODE_LOAD tinyTester.settle_time_msec = 500 +// tinyTester.blink_time_msec = 75; +// cmdLine.serial().printf(" +// MAX5171.Init()"); +// Init(); +// @test Init() +// @test VRef expect 2.500 // Nominal Full-Scale Voltage Reference +// // +// tinyTester.err_threshold = 0.030; // 30mV +// @test group CODE_LOAD tinyTester.err_threshold = 0.050 +// uint16_t code = 0x3FFF; +// //~ double voltageV = 0.5; +// // +// cmdLine.serial().printf(" +// MAX5171.CODE_LOAD code=%d", code); +// CODE_LOAD(code); +// @test group CODE_LOAD tinyTester.print("100.0% of full scale REF(2.50V) = 2.50V Jumper FB=1-2") +// @test group CODE_LOAD CODE_LOAD(0x3FFF) // 100.0% of full scale REF(2.50V) = 2.50V +// // tinyTester.Wait_Output_Settling replaces wait_ms +// tinyTester.Wait_Output_Settling(); +// @test group CODE_LOAD tinyTester.Wait_Output_Settling() +// // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V +// tinyTester.AnalogIn0_Read_Expect_voltageV(2.500); +// @test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(2.500) +// // +// code = 0x0000; +// cmdLine.serial().printf(" +// MAX5171.CODE_LOAD code=%d", code); +// CODE_LOAD(code); +// @test group CODE_LOAD tinyTester.print("0.0% of full scale REF(2.50V) = 0.000V") +// @test group CODE_LOAD CODE_LOAD(0x0000) // 0.0% of full scale REF(2.50V) = 0.000V +// // tinyTester.Wait_Output_Settling replaces wait_ms +// tinyTester.Wait_Output_Settling(); +// @test group CODE_LOAD tinyTester.Wait_Output_Settling() +// // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V +// tinyTester.AnalogIn0_Read_Expect_voltageV(0.0000); +// @test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(0.0000) +// // +// code = 0x1FFF; +// cmdLine.serial().printf(" +// MAX5171.CODE_LOAD code=%d", code); +// CODE_LOAD(code); +// @test group CODE_LOAD tinyTester.print("50.0% of full scale REF(2.50V) = 1.25V") +// @test group CODE_LOAD CODE_LOAD(0x1FFF) // 50.0% of full scale REF(2.50V) = 1.25V +// // tinyTester.Wait_Output_Settling replaces wait_ms +// tinyTester.Wait_Output_Settling(); +// @test group CODE_LOAD tinyTester.Wait_Output_Settling() +// // tinyTester.AnalogIn0_Read_Expect_voltageV replaces SelfTest_AnalogInput_Expect_ch_V +// tinyTester.AnalogIn0_Read_Expect_voltageV(1.2500); +// @test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(1.2500) +// // +// // test UPO User Programmable Output, verify using digital input D2 +// // +// @test group UPO // Verify User Programmable Output functions UPO_HIGH and UPO_LOW (enabled by default) +// @test group UPO tinyTester.blink_time_msec = 75 // default 75 resume hardware self test +// @test group UPO tinyTester.settle_time_msec = 500 // default 250 +// cmdLine.serial().printf(" +// MAX5171.UPO_HIGH"); +// UPO_HIGH(); +// @test group UPO UPO_HIGH() +// tinyTester.Wait_Output_Settling(); +// @test group UPO tinyTester.Wait_Output_Settling() +// // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_Expect_Input_UPO_pin +// tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command"); +// @test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command") +// // +// cmdLine.serial().printf(" +// MAX5171.UPO_LOW"); +// UPO_LOW(); +// @test group UPO UPO_LOW() +// tinyTester.Wait_Output_Settling(); +// @test group UPO tinyTester.Wait_Output_Settling() +// // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_Expect_Input_UPO_pin +// tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command"); +// @test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command") +// // +// cmdLine.serial().printf(" +// MAX5171.UPO_HIGH"); +// UPO_HIGH(); +// @test group UPO UPO_HIGH() +// tinyTester.Wait_Output_Settling(); +// @test group UPO tinyTester.Wait_Output_Settling() +// // tinyTester.DigitalIn_Read_Expect_WarnOnly replaces SelfTest_Expect_Input_UPO_pin +// tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command"); +// @test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command") +// // +// +// +void MAX5171::Init(void) { //---------------------------------------- // Nominal Full-Scale Voltage Reference VRef = 2.500; - - //---------------------------------------- - // success - return 1; } //----------------------------------------