minimalist hardware testing support

Dependents:   MAX5715BOB_Tester MAX11131BOB_Tester MAX5171BOB_Tester MAX11410BOB_Tester ... more

Committer:
whismanoid
Date:
Wed Jul 10 11:01:58 2019 +0000
Revision:
2:9b20cadbfa15
Parent:
1:f98ddb04f9e0
Child:
3:080aa1bb1bc0
Read_Expect_voltageV skip if expect_result exceeds ADC full scale

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 0:93d4119d3f14 1 // /*******************************************************************************
whismanoid 0:93d4119d3f14 2 // * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 0:93d4119d3f14 3 // *
whismanoid 0:93d4119d3f14 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 0:93d4119d3f14 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 0:93d4119d3f14 6 // * to deal in the Software without restriction, including without limitation
whismanoid 0:93d4119d3f14 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 0:93d4119d3f14 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 0:93d4119d3f14 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 0:93d4119d3f14 10 // *
whismanoid 0:93d4119d3f14 11 // * The above copyright notice and this permission notice shall be included
whismanoid 0:93d4119d3f14 12 // * in all copies or substantial portions of the Software.
whismanoid 0:93d4119d3f14 13 // *
whismanoid 0:93d4119d3f14 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 0:93d4119d3f14 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 0:93d4119d3f14 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 0:93d4119d3f14 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 0:93d4119d3f14 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 0:93d4119d3f14 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 0:93d4119d3f14 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 0:93d4119d3f14 21 // *
whismanoid 0:93d4119d3f14 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 0:93d4119d3f14 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 0:93d4119d3f14 24 // * Products, Inc. Branding Policy.
whismanoid 0:93d4119d3f14 25 // *
whismanoid 0:93d4119d3f14 26 // * The mere transfer of this software does not imply any licenses
whismanoid 0:93d4119d3f14 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 0:93d4119d3f14 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 0:93d4119d3f14 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 0:93d4119d3f14 30 // * ownership rights.
whismanoid 0:93d4119d3f14 31 // *******************************************************************************
whismanoid 0:93d4119d3f14 32 // */
whismanoid 0:93d4119d3f14 33 // *********************************************************************
whismanoid 0:93d4119d3f14 34 // @file MaximTinyTester.cpp
whismanoid 0:93d4119d3f14 35 // *********************************************************************
whismanoid 0:93d4119d3f14 36
whismanoid 0:93d4119d3f14 37 #include "MaximTinyTester.h"
whismanoid 0:93d4119d3f14 38
whismanoid 0:93d4119d3f14 39 MaximTinyTester::MaximTinyTester(CmdLine& AssociatedCmdLine,
whismanoid 0:93d4119d3f14 40 AnalogIn& analogInPin0,
whismanoid 0:93d4119d3f14 41 AnalogIn& analogInPin1,
whismanoid 0:93d4119d3f14 42 AnalogIn& analogInPin2,
whismanoid 0:93d4119d3f14 43 AnalogIn& analogInPin3,
whismanoid 0:93d4119d3f14 44 AnalogIn& analogInPin4,
whismanoid 1:f98ddb04f9e0 45 AnalogIn& analogInPin5,
whismanoid 1:f98ddb04f9e0 46 DigitalOut& m_RFailLED,
whismanoid 1:f98ddb04f9e0 47 DigitalOut& m_GPassLED,
whismanoid 1:f98ddb04f9e0 48 DigitalOut& m_BBusyLED)
whismanoid 0:93d4119d3f14 49 : associatedCmdLine(AssociatedCmdLine)
whismanoid 0:93d4119d3f14 50 , analogInPin0(analogInPin0)
whismanoid 0:93d4119d3f14 51 , analogInPin1(analogInPin1)
whismanoid 0:93d4119d3f14 52 , analogInPin2(analogInPin2)
whismanoid 0:93d4119d3f14 53 , analogInPin3(analogInPin3)
whismanoid 0:93d4119d3f14 54 , analogInPin4(analogInPin4)
whismanoid 0:93d4119d3f14 55 , analogInPin5(analogInPin5)
whismanoid 1:f98ddb04f9e0 56 , m_RFailLED(m_RFailLED)
whismanoid 1:f98ddb04f9e0 57 , m_GPassLED(m_GPassLED)
whismanoid 1:f98ddb04f9e0 58 , m_BBusyLED(m_BBusyLED)
whismanoid 0:93d4119d3f14 59 {
whismanoid 0:93d4119d3f14 60 nPass = 0;
whismanoid 0:93d4119d3f14 61 nFail = 0;
whismanoid 0:93d4119d3f14 62 err_threshold = 0.030; // 30mV
whismanoid 0:93d4119d3f14 63 input_timeout_time_msec = 250;
whismanoid 0:93d4119d3f14 64 settle_time_msec = 250;
whismanoid 1:f98ddb04f9e0 65 blink_time_msec = 75;
whismanoid 0:93d4119d3f14 66 analogInPin_fullScaleVoltage[0] = 3.300;
whismanoid 0:93d4119d3f14 67 analogInPin_fullScaleVoltage[1] = 3.300;
whismanoid 0:93d4119d3f14 68 analogInPin_fullScaleVoltage[2] = 3.300;
whismanoid 0:93d4119d3f14 69 analogInPin_fullScaleVoltage[3] = 3.300;
whismanoid 0:93d4119d3f14 70 analogInPin_fullScaleVoltage[4] = 3.300;
whismanoid 0:93d4119d3f14 71 analogInPin_fullScaleVoltage[5] = 3.300;
whismanoid 0:93d4119d3f14 72 }
whismanoid 0:93d4119d3f14 73
whismanoid 0:93d4119d3f14 74 /** reset the pass/fail counters.
whismanoid 0:93d4119d3f14 75 *
whismanoid 0:93d4119d3f14 76 * @post nPass and nFail are reset to 0
whismanoid 0:93d4119d3f14 77 *
whismanoid 0:93d4119d3f14 78 */
whismanoid 0:93d4119d3f14 79 void MaximTinyTester::clear(void)
whismanoid 0:93d4119d3f14 80 {
whismanoid 0:93d4119d3f14 81 nPass = 0;
whismanoid 0:93d4119d3f14 82 nFail = 0;
whismanoid 1:f98ddb04f9e0 83 m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_OFF;
whismanoid 0:93d4119d3f14 84 }
whismanoid 0:93d4119d3f14 85
whismanoid 0:93d4119d3f14 86 /** report that a test has completed with success.
whismanoid 0:93d4119d3f14 87 *
whismanoid 0:93d4119d3f14 88 * @post nPass is increased by 1
whismanoid 0:93d4119d3f14 89 *
whismanoid 0:93d4119d3f14 90 */
whismanoid 0:93d4119d3f14 91 void MaximTinyTester::PASS()
whismanoid 0:93d4119d3f14 92 {
whismanoid 0:93d4119d3f14 93 ++nPass;
whismanoid 1:f98ddb04f9e0 94 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 95 // pulse blue LED during test to indicate activity
whismanoid 1:f98ddb04f9e0 96 m_GPassLED = LED_OFF; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 97 wait_ms(blink_time_msec); // delay
whismanoid 1:f98ddb04f9e0 98 m_GPassLED = LED_ON; m_BBusyLED = LED_OFF;
whismanoid 1:f98ddb04f9e0 99 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 100 associatedCmdLine.serial().printf("\r\n+PASS ");
whismanoid 0:93d4119d3f14 101 }
whismanoid 0:93d4119d3f14 102
whismanoid 0:93d4119d3f14 103 /** report that a test has completed with failure.
whismanoid 0:93d4119d3f14 104 *
whismanoid 0:93d4119d3f14 105 * @post nFail is increased by 1
whismanoid 0:93d4119d3f14 106 *
whismanoid 0:93d4119d3f14 107 */
whismanoid 0:93d4119d3f14 108 void MaximTinyTester::FAIL()
whismanoid 0:93d4119d3f14 109 {
whismanoid 0:93d4119d3f14 110 ++nFail;
whismanoid 1:f98ddb04f9e0 111 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 112 // pulse blue LED during test to indicate activity
whismanoid 1:f98ddb04f9e0 113 m_RFailLED = LED_OFF; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 114 wait_ms(blink_time_msec); // delay
whismanoid 1:f98ddb04f9e0 115 m_RFailLED = LED_ON; m_BBusyLED = LED_OFF;
whismanoid 1:f98ddb04f9e0 116 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 117 associatedCmdLine.serial().printf("\r\n-FAIL ");
whismanoid 0:93d4119d3f14 118 #if USE_LEDS
whismanoid 0:93d4119d3f14 119 rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 120 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 0:93d4119d3f14 121 //~ rgb_led.blue(); // diagnostic rbg led BLUE
whismanoid 0:93d4119d3f14 122 //~ rgb_led.white(); // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:93d4119d3f14 123 //~ rgb_led.cyan(); // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:93d4119d3f14 124 //~ rgb_led.magenta(); // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:93d4119d3f14 125 //~ rgb_led.yellow(); // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:93d4119d3f14 126 //~ rgb_led.black(); // diagnostic rbg led BLACK
whismanoid 0:93d4119d3f14 127 #endif // USE_LEDS
whismanoid 0:93d4119d3f14 128 }
whismanoid 0:93d4119d3f14 129
whismanoid 0:93d4119d3f14 130 /** Report number of pass and number of fail test results
whismanoid 0:93d4119d3f14 131 */
whismanoid 0:93d4119d3f14 132 void MaximTinyTester::Report_Summary(void)
whismanoid 0:93d4119d3f14 133 {
whismanoid 0:93d4119d3f14 134 associatedCmdLine.serial().printf("\r\nSummary: %d PASS %d FAIL\r\n", nPass, nFail);
whismanoid 0:93d4119d3f14 135 //~ associatedCmdLine.serial().printf(g_SelfTest_nPass);
whismanoid 0:93d4119d3f14 136 //~ associatedCmdLine.serial().printf(" PASS ");
whismanoid 0:93d4119d3f14 137 //~ associatedCmdLine.serial().printf(g_SelfTest_nFail);
whismanoid 0:93d4119d3f14 138 //~ associatedCmdLine.serial().printf(" FAIL\r\n");
whismanoid 0:93d4119d3f14 139 if (nFail == 0) {
whismanoid 1:f98ddb04f9e0 140 m_RFailLED = LED_OFF; m_GPassLED = LED_ON; m_BBusyLED = LED_OFF;
whismanoid 1:f98ddb04f9e0 141 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 1:f98ddb04f9e0 142 }
whismanoid 1:f98ddb04f9e0 143 else {
whismanoid 1:f98ddb04f9e0 144 m_RFailLED = LED_ON; m_GPassLED = LED_OFF; m_BBusyLED = LED_OFF;
whismanoid 0:93d4119d3f14 145 //~ rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 146 }
whismanoid 0:93d4119d3f14 147 }
whismanoid 0:93d4119d3f14 148
whismanoid 0:93d4119d3f14 149 /** Test a software function
whismanoid 0:93d4119d3f14 150 *
whismanoid 0:93d4119d3f14 151 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 152 *
whismanoid 0:93d4119d3f14 153 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 154 *
whismanoid 0:93d4119d3f14 155 * @param[in] voltageV is a test argument given to the function under test
whismanoid 0:93d4119d3f14 156 *
whismanoid 0:93d4119d3f14 157 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 158 *
whismanoid 0:93d4119d3f14 159 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 160 *
whismanoid 0:93d4119d3f14 161 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 162 *
whismanoid 0:93d4119d3f14 163 */
whismanoid 0:93d4119d3f14 164 bool MaximTinyTester::FunctionCall_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 165 Callback<uint16_t(double)> functionUnderTest,
whismanoid 0:93d4119d3f14 166 double voltageV, uint16_t expect_result)
whismanoid 0:93d4119d3f14 167 {
whismanoid 0:93d4119d3f14 168 uint16_t actual_result = functionUnderTest(voltageV);
whismanoid 0:93d4119d3f14 169 if (actual_result != expect_result)
whismanoid 0:93d4119d3f14 170 {
whismanoid 0:93d4119d3f14 171 FAIL();
whismanoid 0:93d4119d3f14 172 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, voltageV);
whismanoid 0:93d4119d3f14 173 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 174 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 0:93d4119d3f14 175 return false;
whismanoid 0:93d4119d3f14 176 }
whismanoid 0:93d4119d3f14 177 else
whismanoid 0:93d4119d3f14 178 {
whismanoid 0:93d4119d3f14 179 PASS();
whismanoid 0:93d4119d3f14 180 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, voltageV);
whismanoid 0:93d4119d3f14 181 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 182 return true;
whismanoid 0:93d4119d3f14 183 }
whismanoid 0:93d4119d3f14 184 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 185 }
whismanoid 0:93d4119d3f14 186
whismanoid 0:93d4119d3f14 187 /** Test a software function
whismanoid 0:93d4119d3f14 188 *
whismanoid 0:93d4119d3f14 189 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 190 *
whismanoid 0:93d4119d3f14 191 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 192 *
whismanoid 0:93d4119d3f14 193 * @param[in] value_u16 is a test argument given to the function under test
whismanoid 0:93d4119d3f14 194 *
whismanoid 0:93d4119d3f14 195 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 196 *
whismanoid 0:93d4119d3f14 197 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 198 *
whismanoid 0:93d4119d3f14 199 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 200 *
whismanoid 0:93d4119d3f14 201 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 202 *
whismanoid 0:93d4119d3f14 203 */
whismanoid 0:93d4119d3f14 204 bool MaximTinyTester::FunctionCall_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 205 Callback<double(uint16_t)> functionUnderTest,
whismanoid 0:93d4119d3f14 206 uint16_t value_u16, double expect_result)
whismanoid 0:93d4119d3f14 207 {
whismanoid 0:93d4119d3f14 208 double actual_result = functionUnderTest(value_u16);
whismanoid 0:93d4119d3f14 209 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 210 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 211 {
whismanoid 0:93d4119d3f14 212 PASS();
whismanoid 0:93d4119d3f14 213 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, value_u16);
whismanoid 0:93d4119d3f14 214 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 215 return true;
whismanoid 0:93d4119d3f14 216 }
whismanoid 0:93d4119d3f14 217 else
whismanoid 0:93d4119d3f14 218 {
whismanoid 0:93d4119d3f14 219 FAIL();
whismanoid 0:93d4119d3f14 220 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, value_u16);
whismanoid 0:93d4119d3f14 221 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 222 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 223 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 224 return false;
whismanoid 0:93d4119d3f14 225 }
whismanoid 0:93d4119d3f14 226 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 227 }
whismanoid 0:93d4119d3f14 228
whismanoid 0:93d4119d3f14 229 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 230 *
whismanoid 0:93d4119d3f14 231 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 232 *
whismanoid 0:93d4119d3f14 233 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 234 *
whismanoid 0:93d4119d3f14 235 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 236 *
whismanoid 0:93d4119d3f14 237 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 238 *
whismanoid 0:93d4119d3f14 239 */
whismanoid 0:93d4119d3f14 240 bool MaximTinyTester::AnalogIn0_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 241 {
whismanoid 0:93d4119d3f14 242 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 2:9b20cadbfa15 243 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 244 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 245 {
whismanoid 2:9b20cadbfa15 246 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 247 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 248 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 249 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 250 }
whismanoid 0:93d4119d3f14 251
whismanoid 0:93d4119d3f14 252 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 253 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 254 float normValue_0_1 = analogInPin0.read();
whismanoid 0:93d4119d3f14 255 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 256 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 257 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 258 {
whismanoid 0:93d4119d3f14 259 PASS();
whismanoid 0:93d4119d3f14 260 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 261 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 262 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 263 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 264 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 265 );
whismanoid 0:93d4119d3f14 266 //
whismanoid 0:93d4119d3f14 267 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 268 return true;
whismanoid 0:93d4119d3f14 269 }
whismanoid 0:93d4119d3f14 270 else
whismanoid 0:93d4119d3f14 271 {
whismanoid 0:93d4119d3f14 272 FAIL();
whismanoid 0:93d4119d3f14 273 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 274 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 275 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 276 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 277 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 278 );
whismanoid 0:93d4119d3f14 279 //
whismanoid 0:93d4119d3f14 280 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 281 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 282 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 283 }
whismanoid 0:93d4119d3f14 284 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 285 return false;
whismanoid 0:93d4119d3f14 286 }
whismanoid 0:93d4119d3f14 287
whismanoid 0:93d4119d3f14 288 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 289 *
whismanoid 0:93d4119d3f14 290 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 291 *
whismanoid 0:93d4119d3f14 292 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 293 *
whismanoid 0:93d4119d3f14 294 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 295 *
whismanoid 0:93d4119d3f14 296 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 297 *
whismanoid 0:93d4119d3f14 298 */
whismanoid 0:93d4119d3f14 299 bool MaximTinyTester::AnalogIn1_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 300 {
whismanoid 0:93d4119d3f14 301 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[1];
whismanoid 2:9b20cadbfa15 302 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 303 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 304 {
whismanoid 2:9b20cadbfa15 305 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 306 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 307 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 308 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 309 }
whismanoid 0:93d4119d3f14 310
whismanoid 0:93d4119d3f14 311 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 312 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 313 float normValue_0_1 = analogInPin1.read();
whismanoid 0:93d4119d3f14 314 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 315 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 316 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 317 {
whismanoid 0:93d4119d3f14 318 PASS();
whismanoid 0:93d4119d3f14 319 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 320 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 321 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 322 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 323 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 324 );
whismanoid 0:93d4119d3f14 325 //
whismanoid 0:93d4119d3f14 326 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 327 return true;
whismanoid 0:93d4119d3f14 328 }
whismanoid 0:93d4119d3f14 329 else
whismanoid 0:93d4119d3f14 330 {
whismanoid 0:93d4119d3f14 331 FAIL();
whismanoid 0:93d4119d3f14 332 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 333 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 334 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 335 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 336 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 337 );
whismanoid 0:93d4119d3f14 338 //
whismanoid 0:93d4119d3f14 339 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 340 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 341 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 342 }
whismanoid 0:93d4119d3f14 343 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 344 return false;
whismanoid 0:93d4119d3f14 345 }
whismanoid 0:93d4119d3f14 346
whismanoid 0:93d4119d3f14 347 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 348 *
whismanoid 0:93d4119d3f14 349 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 350 *
whismanoid 0:93d4119d3f14 351 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 352 *
whismanoid 0:93d4119d3f14 353 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 354 *
whismanoid 0:93d4119d3f14 355 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 356 *
whismanoid 0:93d4119d3f14 357 */
whismanoid 0:93d4119d3f14 358 bool MaximTinyTester::AnalogIn2_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 359 {
whismanoid 0:93d4119d3f14 360 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[2];
whismanoid 2:9b20cadbfa15 361 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 362 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 363 {
whismanoid 2:9b20cadbfa15 364 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 365 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 366 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 367 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 368 }
whismanoid 0:93d4119d3f14 369
whismanoid 0:93d4119d3f14 370 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 371 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 372 float normValue_0_1 = analogInPin2.read();
whismanoid 0:93d4119d3f14 373 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 374 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 375 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 376 {
whismanoid 0:93d4119d3f14 377 PASS();
whismanoid 0:93d4119d3f14 378 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 379 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 380 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 381 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 382 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 383 );
whismanoid 0:93d4119d3f14 384 //
whismanoid 0:93d4119d3f14 385 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 386 return true;
whismanoid 0:93d4119d3f14 387 }
whismanoid 0:93d4119d3f14 388 else
whismanoid 0:93d4119d3f14 389 {
whismanoid 0:93d4119d3f14 390 FAIL();
whismanoid 0:93d4119d3f14 391 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 392 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 393 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 394 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 395 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 396 );
whismanoid 0:93d4119d3f14 397 //
whismanoid 0:93d4119d3f14 398 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 399 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 400 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 401 }
whismanoid 0:93d4119d3f14 402 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 403 return false;
whismanoid 0:93d4119d3f14 404 }
whismanoid 0:93d4119d3f14 405
whismanoid 0:93d4119d3f14 406 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 407 *
whismanoid 0:93d4119d3f14 408 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 409 *
whismanoid 0:93d4119d3f14 410 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 411 *
whismanoid 0:93d4119d3f14 412 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 413 *
whismanoid 0:93d4119d3f14 414 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 415 *
whismanoid 0:93d4119d3f14 416 */
whismanoid 0:93d4119d3f14 417 bool MaximTinyTester::AnalogIn3_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 418 {
whismanoid 0:93d4119d3f14 419 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[3];
whismanoid 2:9b20cadbfa15 420 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 421 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 422 {
whismanoid 2:9b20cadbfa15 423 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 424 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 425 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 426 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 427 }
whismanoid 0:93d4119d3f14 428
whismanoid 0:93d4119d3f14 429 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 430 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 431 float normValue_0_1 = analogInPin3.read();
whismanoid 0:93d4119d3f14 432 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 433 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 434 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 435 {
whismanoid 0:93d4119d3f14 436 PASS();
whismanoid 0:93d4119d3f14 437 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 438 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 439 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 440 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 441 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 442 );
whismanoid 0:93d4119d3f14 443 //
whismanoid 0:93d4119d3f14 444 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 445 return true;
whismanoid 0:93d4119d3f14 446 }
whismanoid 0:93d4119d3f14 447 else
whismanoid 0:93d4119d3f14 448 {
whismanoid 0:93d4119d3f14 449 FAIL();
whismanoid 0:93d4119d3f14 450 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 451 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 452 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 453 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 454 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 455 );
whismanoid 0:93d4119d3f14 456 //
whismanoid 0:93d4119d3f14 457 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 458 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 459 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 460 }
whismanoid 0:93d4119d3f14 461 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 462 return false;
whismanoid 0:93d4119d3f14 463 }
whismanoid 0:93d4119d3f14 464
whismanoid 0:93d4119d3f14 465 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 466 *
whismanoid 0:93d4119d3f14 467 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 468 *
whismanoid 0:93d4119d3f14 469 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 470 *
whismanoid 0:93d4119d3f14 471 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 472 *
whismanoid 0:93d4119d3f14 473 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 474 *
whismanoid 0:93d4119d3f14 475 */
whismanoid 0:93d4119d3f14 476 bool MaximTinyTester::AnalogIn4_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 477 {
whismanoid 0:93d4119d3f14 478 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[4];
whismanoid 2:9b20cadbfa15 479 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 480 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 481 {
whismanoid 2:9b20cadbfa15 482 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 483 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 484 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 485 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 486 }
whismanoid 0:93d4119d3f14 487
whismanoid 0:93d4119d3f14 488 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 489 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 490 float normValue_0_1 = analogInPin4.read();
whismanoid 0:93d4119d3f14 491 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 492 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 493 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 494 {
whismanoid 0:93d4119d3f14 495 PASS();
whismanoid 0:93d4119d3f14 496 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 497 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 498 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 499 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 500 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 501 );
whismanoid 0:93d4119d3f14 502 //
whismanoid 0:93d4119d3f14 503 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 504 return true;
whismanoid 0:93d4119d3f14 505 }
whismanoid 0:93d4119d3f14 506 else
whismanoid 0:93d4119d3f14 507 {
whismanoid 0:93d4119d3f14 508 FAIL();
whismanoid 0:93d4119d3f14 509 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 510 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 511 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 512 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 513 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 514 );
whismanoid 0:93d4119d3f14 515 //
whismanoid 0:93d4119d3f14 516 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 517 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 518 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 519 }
whismanoid 0:93d4119d3f14 520 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 521 return false;
whismanoid 0:93d4119d3f14 522 }
whismanoid 0:93d4119d3f14 523
whismanoid 0:93d4119d3f14 524 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 525 *
whismanoid 0:93d4119d3f14 526 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 527 *
whismanoid 0:93d4119d3f14 528 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 529 *
whismanoid 0:93d4119d3f14 530 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 531 *
whismanoid 0:93d4119d3f14 532 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 533 *
whismanoid 0:93d4119d3f14 534 */
whismanoid 0:93d4119d3f14 535 bool MaximTinyTester::AnalogIn5_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 536 {
whismanoid 0:93d4119d3f14 537 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[5];
whismanoid 2:9b20cadbfa15 538 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 539 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 540 {
whismanoid 2:9b20cadbfa15 541 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 542 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 543 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 544 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 545 }
whismanoid 0:93d4119d3f14 546
whismanoid 0:93d4119d3f14 547 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 548 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 549 float normValue_0_1 = analogInPin5.read();
whismanoid 0:93d4119d3f14 550 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 551 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 552 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 553 {
whismanoid 0:93d4119d3f14 554 PASS();
whismanoid 0:93d4119d3f14 555 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 556 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 557 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 558 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 559 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 560 );
whismanoid 0:93d4119d3f14 561 //
whismanoid 0:93d4119d3f14 562 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 563 return true;
whismanoid 0:93d4119d3f14 564 }
whismanoid 0:93d4119d3f14 565 else
whismanoid 0:93d4119d3f14 566 {
whismanoid 0:93d4119d3f14 567 FAIL();
whismanoid 0:93d4119d3f14 568 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 569 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 570 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 571 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 572 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 573 );
whismanoid 0:93d4119d3f14 574 //
whismanoid 0:93d4119d3f14 575 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 576 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 577 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 578 }
whismanoid 0:93d4119d3f14 579 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 580 return false;
whismanoid 0:93d4119d3f14 581 }
whismanoid 0:93d4119d3f14 582
whismanoid 0:93d4119d3f14 583 bool MaximTinyTester::AnalogIn_Read_Expect_voltageV(AnalogIn& analogInPin, double expect_result)
whismanoid 0:93d4119d3f14 584 {
whismanoid 0:93d4119d3f14 585 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 2:9b20cadbfa15 586 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 587 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 588 {
whismanoid 2:9b20cadbfa15 589 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 590 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 591 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 592 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 593 }
whismanoid 0:93d4119d3f14 594
whismanoid 0:93d4119d3f14 595 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 596 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 597 float normValue_0_1 = analogInPin.read();
whismanoid 0:93d4119d3f14 598 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 599 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 600 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 601 {
whismanoid 0:93d4119d3f14 602 PASS();
whismanoid 0:93d4119d3f14 603 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 604 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 605 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 606 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 607 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 608 );
whismanoid 0:93d4119d3f14 609 //
whismanoid 0:93d4119d3f14 610 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 611 return true;
whismanoid 0:93d4119d3f14 612 }
whismanoid 0:93d4119d3f14 613 else
whismanoid 0:93d4119d3f14 614 {
whismanoid 0:93d4119d3f14 615 FAIL();
whismanoid 0:93d4119d3f14 616 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 617 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 618 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 619 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 620 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 621 );
whismanoid 0:93d4119d3f14 622 //
whismanoid 0:93d4119d3f14 623 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 624 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 625 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 626 }
whismanoid 0:93d4119d3f14 627 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 628 return false;
whismanoid 0:93d4119d3f14 629 }
whismanoid 0:93d4119d3f14 630
whismanoid 0:93d4119d3f14 631 bool MaximTinyTester::DigitalIn_Read_Expect_WarnOnly(DigitalIn& digitalInPin, const char* pinName, int expect_result, const char *expect_description)
whismanoid 0:93d4119d3f14 632 {
whismanoid 0:93d4119d3f14 633 int actual_UPO_value = -1;
whismanoid 0:93d4119d3f14 634 for (int retry_count = 0; retry_count < 10; retry_count++) {
whismanoid 0:93d4119d3f14 635 actual_UPO_value = digitalInPin.read(); // g_MAX5171_device.UPOinputValue();
whismanoid 0:93d4119d3f14 636 if (actual_UPO_value == expect_result) {
whismanoid 0:93d4119d3f14 637 PASS();
whismanoid 0:93d4119d3f14 638 associatedCmdLine.serial().printf("%s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 639 return true;
whismanoid 0:93d4119d3f14 640 }
whismanoid 0:93d4119d3f14 641 // UPO condition not met, retry for a while until give up
whismanoid 0:93d4119d3f14 642 wait_ms(input_timeout_time_msec / 10); // delay
whismanoid 0:93d4119d3f14 643 }
whismanoid 0:93d4119d3f14 644 associatedCmdLine.serial().printf("\r\n!WARN "); // SelfTest_FAIL(cmdLine);
whismanoid 0:93d4119d3f14 645 associatedCmdLine.serial().printf("expected %s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 646 associatedCmdLine.serial().printf(", but got actual %s=%d", pinName, actual_UPO_value);
whismanoid 0:93d4119d3f14 647 associatedCmdLine.serial().printf(", missing %s connections?", pinName);
whismanoid 0:93d4119d3f14 648 return false;
whismanoid 0:93d4119d3f14 649 }
whismanoid 0:93d4119d3f14 650
whismanoid 0:93d4119d3f14 651 void MaximTinyTester::Wait_Output_Settling()
whismanoid 0:93d4119d3f14 652 {
whismanoid 0:93d4119d3f14 653 wait_ms(settle_time_msec); // delay
whismanoid 0:93d4119d3f14 654 }
whismanoid 0:93d4119d3f14 655
whismanoid 0:93d4119d3f14 656
whismanoid 0:93d4119d3f14 657 // End of file