DEVICE NAME := "MAX6316"
PINS
RESET := 1;
WATCHDOG := 4;
SWITCH := 3;
END;
DISABLE DEVICE
WATCHDOG := Z;
END;
TEST COVERAGE
RESET := OPEN HI LO;
WATCHDOG := OPEN HI LO;
END;
END;
CONST INT PASS := FALSE;
CONST INT FAIL := TRUE;
Test()(INT result)
INT value, key;
result := FAIL;
PRINT("Press RESET button (press any key to fail).\n");
DO
SET value := RESET;
WHILE value = 1 && (GETKEY() = 0)
END;
IF value = 1 THEN
PRINT("RESET Test failed.\n");
RETURN;
END;
PRINT("RESET test passed, release RESET button (any key to fail).\n");
DO
SET value := RESET;
WHILE value = 0 && (GETKEY() = 0)
END;
IF value = 0 THEN
PRINT("RESET test failed.\n");
RETURN;
END;
WatchDogTest()(result);
END;
WatchDogTest()(INT result)
INT res, startTime, timeout, lowTime, endTime;
result := FAIL;
SET res := RESET;
IF res = 0 THEN
PRINT("nRESET line is stuck at zero.\n");
RETURN;
END;
SET WATCHDOG := 0;
FLUSH;
startTime := NOW();
timeout := NOW() + 2000;
DO
SET res := RESET;
WHILE res = 1 && NOW() < timeout
END;
IF res = 1 THEN
PRINT("Timed out waiting for watchdog to reset.\n");
RETURN;
END;
timeout := NOW() + 2000;
lowTime := NOW();
DO
SET res := RESET;
WHILE res = 0 && NOW() < timeout
END;
IF res = 0 THEN
PRINT("Timed out waiting for end of reset period.\n");
RETURN;
END;
endTime := NOW();
PRINT("Reset occurred ", lowTime - startTime, " ms after watchdog kick - reset continued for ", endTime - lowTime, " ms.\n" );
result := PASS;
END;