Maxim Integrated MAX5171 14-bit Force/Sense DAC

Dependents:   MAX5171BOB_Tester MAX5171BOB_14bit_Remote_Sense_SPI_DAC MAX5171BOB_Serial_Tester

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;
 }
 
 //----------------------------------------