Test program running on MAX32625MBED. Control through USB Serial commands using a terminal emulator such as teraterm or putty.

Dependencies:   MaximTinyTester CmdLine MAX541 USBDevice

Revision:
93:6b22269935a6
Parent:
89:20fd6ce5e4dd
--- a/Test_Main_MAX11043.cpp	Mon Mar 02 23:00:51 2020 +0000
+++ b/Test_Main_MAX11043.cpp	Wed Mar 04 10:03:12 2020 +0000
@@ -1834,6 +1834,22 @@
 #endif
 
 //--------------------------------------------------
+// functions tested by SelfTest()
+extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+
+//--------------------------------------------------
+// optional self-test groups for function SelfTest()
+// enable by changing the #define value from 0 to 1
+#ifndef MAX11043_SELFTEST_BIP2C16
+#define MAX11043_SELFTEST_BIP2C16 1
+#endif
+
+#ifndef MAX11043_SELFTEST_BIP2C24
+#define MAX11043_SELFTEST_BIP2C24 1
+#endif
+
+//--------------------------------------------------
 // When user presses button BUTTON1, perform self test
 #if HAS_BUTTON1_DEMO_INTERRUPT
 void onButton1FallingEdge(void)
@@ -1849,49 +1865,9 @@
 void onButton2FallingEdge(void)
 {
     // TBD demo configuration
-#if 1
+    // CODE GENERATOR: example code: member function Configure_Demo
     g_MAX11043_device.Configure_Demo();
-#else
-    // MAX11043 Demo Configuration
-    //g_MAX11043_device.RegWrite(MAX11043_CMD_enum_t commandByte, uint32_t regData);
-    //
-    // *Config=0x6000 (POR default, slowest conversion rate 1:6 = 9us)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0010_0000_d16_Wr08_Configuration, 0x6000);
-    //
-    // *ConfigA=0x0018 (Bypass PGA and filters, Gain=1V/V)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0011_0000_d16_Wr0C_ConfigA, 0x0018);
-    //
-    // *AGain=0x1000 (0.5) (default is 0x2000=1.0)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0100_0100_d16_Wr11_AGain, 0x1000);
-    //
-    // *ConfigB=0x0018 (Bypass PGA and filters, Gain=1V/V)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0011_0100_d16_Wr0D_ConfigB, 0x0018);
-    //
-    // *BGain=0x1000 (0.5) (default is 0x2000=1.0)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0100_1000_d16_Wr12_BGain, 0x1000);
-    //
-    // *ConfigC=0x0018 (Bypass PGA and filters, Gain=1V/V)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0011_1000_d16_Wr0E_ConfigC, 0x0018);
-    //
-    // *CGain=0x1000 (0.5) (default is 0x2000=1.0)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0100_1100_d16_Wr13_CGain, 0x1000);
-    //
-    // *ConfigD=0x0018 (Bypass PGA and filters, Gain=1V/V)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0011_1100_d16_Wr0F_ConfigD, 0x0018);
-    //
-    // *DGain=0x1000 (0.5) (default is 0x2000=1.0)
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0101_0000_d16_Wr14_DGain, 0x1000);
-    //
-    // *DacHDacL=0xFF00
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0010_1100_d16_Wr0B_DACHDACL, 0xFF00);
-    //
-    // *DacStep=0x0001
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0010_1000_d16_Wr0A_DACStep, 0x0001);
-    //
-    // *Dac=0x0ccc
-    g_MAX11043_device.RegWrite(MAX11043::CMD_0010_0100_d16_Wr09_DAC, 0x0ccc);
-    //
-#endif
+
     // TODO diagnostic LED
     led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON;     // diagnostic rbg led BLUE
 }
@@ -1925,6 +1901,330 @@
 
     // CODE GENERATOR: generate SelfTest based on function docstrings @test lines
 
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x7FFF) expect 2.500 within 0.030 Full Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Full Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x7FFF), 2.500); // Full Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.err_threshold = 0.030; // within 0.030
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x7FFF, 2.500); // Full Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x7FFF) expect 2.500             Full Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Full Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x7FFF), 2.500); // Full Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x7FFF, 2.500); // Full Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x6666) expect 2.000             Two Volts
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Two Volts
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x6666), 2.000); // Two Volts
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x6666, 2.000); // Two Volts
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x6000) expect 1.875             75% Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit 75% Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x6000), 1.875); // 75% Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x6000, 1.875); // 75% Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x4000) expect 1.250             Mid Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Mid Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x4000), 1.250); // Mid Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x4000, 1.250); // Mid Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x3333) expect 1.000             One Volt
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit One Volt
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x3333), 1.000); // One Volt
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x3333, 1.000); // One Volt
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x2000) expect 0.625             25% Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit 25% Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x2000), 0.625); // 25% Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x2000, 0.625); // 25% Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x051e) expect 0.100             100mV
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit 100mV
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x051e), 0.100); // 100mV
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x051e, 0.100); // 100mV
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x0000) expect 0.00000894069671  Three LSB
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Three LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x0000), 0.00000894069671); // Three LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x0000, 0.00000894069671); // Three LSB
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x0000) expect 0.00000596046447  Two LSB
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Two LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x0000), 0.00000596046447); // Two LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x0000, 0.00000596046447); // Two LSB
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x0000) expect 0.0000029802326   One LSB
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit One LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x0000), 0.0000029802326); // One LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x0000, 0.0000029802326); // One LSB
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x0000) expect 0.0               Zero Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Zero Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x0000), 0.0); // Zero Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x0000, 0.0); // Zero Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0xFFFF) expect -0.0000029802326  Negative One LSB
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative One LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0xFFFF), -0.0000029802326); // Negative One LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0xFFFF, -0.0000029802326); // Negative One LSB
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0xFFFF) expect -0.0000059604644  Negative Two LSB
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative Two LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0xFFFF), -0.0000059604644); // Negative Two LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0xFFFF, -0.0000059604644); // Negative Two LSB
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0xFFFF) expect -0.0000089406967  Negative Three LSB
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative Three LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0xFFFF), -0.0000089406967); // Negative Three LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0xFFFF, -0.0000089406967); // Negative Three LSB
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0xFAE1) expect -0.100            Negative 100mV
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative 100mV
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0xFAE1), -0.100); // Negative 100mV
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0xFAE1, -0.100); // Negative 100mV
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0xE000) expect -0.625            Negative 25% Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative 25% Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0xE000), -0.625); // Negative 25% Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0xE000, -0.625); // Negative 25% Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0xCCCC) expect -1.000            Negative One Volt
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative One Volt
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0xCCCC), -1.000); // Negative One Volt
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0xCCCC, -1.000); // Negative One Volt
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0xC000) expect -1.250            Negative Mid Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative Mid Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0xC000), -1.250); // Negative Mid Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0xC000, -1.250); // Negative Mid Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0xA000) expect -1.875            Negative 75% Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative 75% Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0xA000), -1.875); // Negative 75% Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0xA000, -1.875); // Negative 75% Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x9999) expect -2.000            Negative Two Volts
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative Two Volts
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x9999), -2.000); // Negative Two Volts
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x9999, -2.000); // Negative Two Volts
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x8000) expect -2.500            Negative Full Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative Full Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x8000), -2.500); // Negative Full Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x8000, -2.500); // Negative Full Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_16bit @test group BIP2C16 ADCVoltageOfCode_16bit(0x8000) expect -2.500            Negative Full Scale
+#if MAX11043_SELFTEST_BIP2C16 // group BIP2C16 ADCVoltageOfCode_16bit Negative Full Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_16bit(0x8000), -2.500); // Negative Full Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_16bit", fn_MAX11043_ADCVoltageOfCode_16bit, 0x8000, -2.500); // Negative Full Scale
+#endif // MAX11043_SELFTEST_BIP2C16 // group BIP2C16
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x7FFFFF) expect 2.500 within 0.030 Full Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Full Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x7FFFFF), 2.500); // Full Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.err_threshold = 0.030; // within 0.030
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x7FFFFF, 2.500); // Full Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x7FFFFE) expect 2.500             Full Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Full Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x7FFFFE), 2.500); // Full Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x7FFFFE, 2.500); // Full Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x666666) expect 2.000             Two Volts
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Two Volts
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x666666), 2.000); // Two Volts
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x666666, 2.000); // Two Volts
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x600000) expect 1.875             75% Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit 75% Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x600000), 1.875); // 75% Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x600000, 1.875); // 75% Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x400000) expect 1.250             Mid Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Mid Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x400000), 1.250); // Mid Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x400000, 1.250); // Mid Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x333333) expect 1.000             One Volt
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit One Volt
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x333333), 1.000); // One Volt
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x333333, 1.000); // One Volt
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x200000) expect 0.625             25% Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit 25% Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x200000), 0.625); // 25% Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x200000, 0.625); // 25% Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x051eb8) expect 0.100             100mV
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit 100mV
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x051eb8), 0.100); // 100mV
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x051eb8, 0.100); // 100mV
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x000003) expect 0.00000894069671  Three LSB
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Three LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x000003), 0.00000894069671); // Three LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x000003, 0.00000894069671); // Three LSB
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x000002) expect 0.00000596046447  Two LSB
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Two LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x000002), 0.00000596046447); // Two LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x000002, 0.00000596046447); // Two LSB
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x000001) expect 0.0000029802326   One LSB
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit One LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x000001), 0.0000029802326); // One LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x000001, 0.0000029802326); // One LSB
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x000000) expect 0.0               Zero Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Zero Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x000000), 0.0); // Zero Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x000000, 0.0); // Zero Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0xFFFFFF) expect -0.0000029802326  Negative One LSB
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative One LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0xFFFFFF), -0.0000029802326); // Negative One LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0xFFFFFF, -0.0000029802326); // Negative One LSB
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0xFFFFFE) expect -0.0000059604644  Negative Two LSB
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative Two LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0xFFFFFE), -0.0000059604644); // Negative Two LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0xFFFFFE, -0.0000059604644); // Negative Two LSB
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0xFFFFFD) expect -0.0000089406967  Negative Three LSB
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative Three LSB
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0xFFFFFD), -0.0000089406967); // Negative Three LSB
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0xFFFFFD, -0.0000089406967); // Negative Three LSB
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0xFAE148) expect -0.100            Negative 100mV
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative 100mV
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0xFAE148), -0.100); // Negative 100mV
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0xFAE148, -0.100); // Negative 100mV
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0xE00000) expect -0.625            Negative 25% Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative 25% Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0xE00000), -0.625); // Negative 25% Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0xE00000, -0.625); // Negative 25% Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0xCCCCCD) expect -1.000            Negative One Volt
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative One Volt
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0xCCCCCD), -1.000); // Negative One Volt
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0xCCCCCD, -1.000); // Negative One Volt
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0xC00000) expect -1.250            Negative Mid Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative Mid Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0xC00000), -1.250); // Negative Mid Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0xC00000, -1.250); // Negative Mid Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0xA00000) expect -1.875            Negative 75% Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative 75% Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0xA00000), -1.875); // Negative 75% Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0xA00000, -1.875); // Negative 75% Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x99999A) expect -2.000            Negative Two Volts
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative Two Volts
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x99999A), -2.000); // Negative Two Volts
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x99999A, -2.000); // Negative Two Volts
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x800001) expect -2.500            Negative Full Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative Full Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x800001), -2.500); // Negative Full Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x800001, -2.500); // Negative Full Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
+    // CODE GENERATOR: SelfTest ADCVoltageOfCode_24bit @test group BIP2C24 ADCVoltageOfCode_24bit(0x800000) expect -2.500            Negative Full Scale
+#if MAX11043_SELFTEST_BIP2C24 // group BIP2C24 ADCVoltageOfCode_24bit Negative Full Scale
+    // ASSERT_EQ(g_MAX11043_device.ADCVoltageOfCode_24bit(0x800000), -2.500); // Negative Full Scale
+    extern double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24);
+    tinyTester.FunctionCall_Expect("MAX11043.ADCVoltageOfCode_24bit", fn_MAX11043_ADCVoltageOfCode_24bit, 0x800000, -2.500); // Negative Full Scale
+#endif // MAX11043_SELFTEST_BIP2C24 // group BIP2C24
+
     //
 #if INJECT_SELFTEST_FAIL
     // Test of the pass/fail report mechanism
@@ -1936,6 +2236,22 @@
     tinyTester.Report_Summary();
 }
 
+//--------------------------------------------------
+// selftest: define function under test
+// double MAX11043::ADCVoltageOfCode_16bit(uint32_t value_u16)
+double fn_MAX11043_ADCVoltageOfCode_16bit(uint32_t value_u16)
+{
+    return g_MAX11043_device.ADCVoltageOfCode_16bit(value_u16);
+}
+
+//--------------------------------------------------
+// selftest: define function under test
+// double MAX11043::ADCVoltageOfCode_24bit(uint32_t value_u24)
+double fn_MAX11043_ADCVoltageOfCode_24bit(uint32_t value_u24)
+{
+    return g_MAX11043_device.ADCVoltageOfCode_24bit(value_u24);
+}
+
 
 //--------------------------------------------------
 inline void print_command_prompt()