//
//Written by : JINGPENG
// Modified : 03 Dec 2005
// Date : 20 07 2009
// WHEN CONECT PIN WIRE ,NOT OK,IF NOT CONNECT PIN WIRE ,OK
#include "C://ST200F//Samples//color.h"
#define HEXFILE "eu050722-D.hex"
#define COMPORT "4"
#define DEVICE "18F24J10"
#define PW_VUP 4
#define SW_VUP 1
#define PW_12VD 3
#define SW_12VD 2
#define PIN_GND 180
#define PIN_Ref5V 142
#define PIN_5VD 146
#define PIN_12VD 141
#define PIN_VS 171
#define PIN_DRTN 134
#define PIN_TEMP_SEC 202
#define PIN_BOOST_OK_SEC 179
#define PIN_5VD_OV 225
#define LMT_H5VDOVP 6.5
#define LMT_L5VDOVP 5.6
#define ERR_NOERROR 0
#define ERR_SETUP 1
#define ERR_VUP 5
#define ERR_5VDOV 13
#define TEST_progamU37 1
#define TEST_OVP5VD 1
#define DEBUG 1
func DispPassFail(bPass, sMsg, dv)
Dim sDisp1 as string
if bPass then
print sMsg , " OK at ",dV , endl
else
sDisp1 := sMsg + " Fail"
print sDisp1, " : ", dv, endl
BoardMessage(1, sDisp1, RED)
end
end
func MessV(pinp, pinm)
Dim v as Double
ict.SetMeasurePin( pinp, pinm )
v := ict.MeasureDC( )
ict.CutMeasurePin( pinp, pinm )
timer.delayms(1)
return v
end
func PowerON()
pw.SetVoltCurr( PW_VUP, 5.0, 0.5 ) // Apply Power to DUT
pw.SetVoltCurr( PW_12VD, 12.0, 1.0 )
timer.delayms(30)
end
func PowerOff()
pw.SetVoltCurr( PW_VUP, 0.0, 0.5 )
pw.DischargeON( PW_VUP, 0.5)
pw.SetVoltCurr( PW_12VD, 0.0, 0.5 )
pw.DischargeON( PW_12VD, 0.5)
timer.delayms(50)
pw.DischargeOFF( PW_VUP)
pw.DischargeOFF( PW_12VD)
end
Dim nStatus as Integer
Dim s as string
proc main()
Dim nStatus as Integer
Dim dV, dVset, dLmtH, dLmtL, dVLast as Double
Dim dvApp as Double
Dim bPass as Bool
SetPassFail(1, FALSE) // Set Fail First
nStatus := 0
if !pw.Init() then
BOARDMESSAGE(1, "Power Fail", RED)
return
end
BoardMessage(1, "Start normal test...", BLUE)
print "...... Start Test ......", endl
#ifdef TEST_progamU37
Dim sCmd as String
Dim nRet as Integer
sCmd := '"C://Microchip//MPLAB IDE//Programmer Utilities//PM3Cmd//PM3CMD" /'
// sCmd := '"D://Program Files//Microchip//MPLAB IDE//Programmer Utilities//PM3Cmd//PM3CMD" /'
sCmd := sCmd + COMPORT
sCmd := sCmd + " /P"
sCmd := sCmd + DEVICE
sCmd := sCmd + " /F"
sCmd := sCmd + HEXFILE
sCmd := sCmd + " /M /Y"
SetPassFail(1, FALSE)
if !pw.Init( ) then
BOARDMESSAGE(1, 'FAIL', RED)
print "Power Supply Fail", endl
return
end
pw.OutputON( 1, 1, TRUE)//PSW1.1
pw.OutputON( 3,1, TRUE) // for discharge relay PSW1.3
pw.SetVoltCurr( 1, 24.0, 0.5 ) // power on to close the relay for progarmming /PSW1.1
timer.delayms( 100 )
BOARDMESSAGE(1, 'Programming', YELLOW)
print sCmd , endl
nRet := run(sCmd)
if nRet = 0 then
SetPassFail(1, TRUE)
BOARDMESSAGE(1, 'PASS', GREEN)
nStatus :=0
else
BOARDMESSAGE(0, 'FAIL', RED)
nStatus :=1
print "Error Code=", nRet, endl
end
//Discharge the MCLR
pw.SetVoltCurr( 3, 24.0, 0.5)//PSW1.3
timer.delayms(800)
pw.SetVoltCurr( 1, 0.0, 0.5 ) // power off to open the relay for progarmming PSW1.1
pw.OutputON( 1, 1, FALSE)//PSW1.1
timer.delayms(300)
pw.SetVoltCurr( 3, 0.0, 0.5)//PSW1.3
#endif
#ifdef TEST_OVP5VD
if nStatus = ERR_NOERROR then
ict.EXTRelayOn(5,true)//5-15-12VD
ict.EXTRelayOn(6,true)//6-16-VS
ict.EXTRelayOn(1,true)//1-SIG_GND
ict.EXTRelayOn(2,true)//2-DRTN
ict.EXTRelayOn(4,true)//4-0 BOOST
ict.EXTRelayOn(3,true)//3-9 temp
ict.EXTRelayOn(8,true)//8-12.5 OHM
pw.OutputON( PW_VUP, SW_VUP, TRUE ) // Connect Power to DUT
pw.OutputON( PW_12VD, SW_12VD, TRUE )
PowerON()
timer.delayms(120)
dV := MessV(PIN_12VD, PIN_GND) // Mess 12vd Bias
bPass := dV > 11.4 and dV <12.5
DispPassFail(bPass, "12VD Bias", dv)
if !bPass then
nStatus := ERR_VUP
end
dV := MessV(PIN_VS, PIN_GND) // Mess 12 vs Bias
bPass := dV > 11.4 and dV <12.5
DispPassFail(bPass, "VS Bias", dv)
if !bPass then
nStatus := ERR_VUP
end
dV := MessV(PIN_Ref5V, PIN_GND) // Mess ref 5.0v Bias
bPass := dV > 4.7 and dV < 5.2
DispPassFail(bPass, "Ref_12VD 5.0V", dv)
if !bPass then
nStatus := ERR_VUP
end
dV := MessV(162, PIN_GND) // Mess VUP=3.3 Bias
bPass := dV > 2.9 and dV <3.5
DispPassFail(bPass, "VUP 3.3V", dV)
if !bPass then
nStatus := ERR_VUP
end
end
if nStatus != ERR_NOERROR then
BoardMessage(1, "Power Connect/nFail", RED)
end
if nStatus = ERR_NOERROR then //5VD OVP
BoardMessage(1, "Testing/n5VD OVP", YELLOW)
print "Testing 5VD OVP", endl
bPass := FALSE
timer.delayms(800)
dV := MessV(PIN_5VD, PIN_GND) // Mess ref 5.0v Bias
bPass := dV > 4.7 and dV < 5.2
DispPassFail(bPass, "5VD NODE", dv)
if !bPass then
nStatus := ERR_VUP
end
#ifdef DEBUG
print " ", endl
print "5VD=", MessV(146, PIN_GND), endl
print "TEMP_SEC=", MessV(202, PIN_GND), endl
print "BOOST_OK_SEC=", MessV(179, PIN_GND), endl
print "DRTN=", MessV(134, PIN_GND), endl
print "SIG_GND=", MessV(180, PIN_GND), endl
print "12VD=", MessV(141, PIN_GND), endl
print "VS=", MessV(171, PIN_GND), endl
print "VUP=", MessV(162, PIN_GND), endl
print "176=", MessV(176, PIN_GND), endl
print "Vcc=", MessV(131, PIN_GND), endl
print "132=", MessV(132, PIN_GND), endl
print "196=", MessV(196, PIN_GND), endl
print "ref_12VD_5.0V=", MessV(142, PIN_GND), endl
print "3.3V=", MessV(162, PIN_GND), endl
print "ENABLE 5+12VD=", MessV(225, PIN_GND), endl
print "FB =", MessV(132, PIN_GND), endl
print "214 =", MessV(214, PIN_GND), endl
#endif
if nStatus = ERR_NOERROR then //5VD OVP
ict.EXTRelayOn(7,true)//7-6.04K OHM
print "Parallel 6.04K ohm Resistor with R386", endl
timer.delayms(1000)
dV := MessV(PIN_5VD, PIN_GND) // Mess ref 5.0v Bias
bPass := dV < 1.0
DispPassFail(bPass, "5VD NODE", dv)
if !bPass then
nStatus := ERR_VUP
end
end
if bPass then
print "/nOVP 5VD at : ", dV, endl
BoardMessage(1, "5VD OVP Pass", BLUE)
else
nStatus := ERR_5VDOV
BoardMessage(1, "5VD OVP Fail", RED)
print "/nOVP 5VD don't happen at = ",dV, endl
end
end
pw.SetVoltCurr( PW_12VD, 0.0, 0.0 ) // 12VD VS
pw.DischargeON( PW_12VD, 0.5 )
pw.SetVoltCurr( PW_VUP, 0.0, 0.0 ) // 5.0VD
pw.DischargeON( PW_VUP, 0.5 )
timer.delayms(100)
//pw.OutputON( 4,1, FALSE )
ict.EXTRelayOn(5,FALSE)
ict.EXTRelayOn(6,FALSE)
ict.EXTRelayOn(1,FALSE)
ict.EXTRelayOn(2,FALSE)
ict.EXTRelayOn(3,FALSE)
ict.EXTRelayOn(4,FALSE)
ict.EXTRelayOn(8,FALSE)//4-10
ict.EXTRelayOn(7,FALSE)//4-10
#endif
if nStatus = 0 then
print "ALL PASS", endl
BoardMessage(1, "Pass", GREEN)
SetPassFail(1, TRUE ) // Set Fail First
end
end
// "C:/Microchip/MPLAB IDE/Programmer Utilities/PM3Cmd/PM3CMD" /3 /P18F2320 /Feu026642.hex /Y /M
//Written by : JINGPENG
// Modified : 03 Dec 2005
// Date : 20 07 2009
// WHEN CONECT PIN WIRE ,NOT OK,IF NOT CONNECT PIN WIRE ,OK
#include "C://ST200F//Samples//color.h"
#define HEXFILE "eu050722-D.hex"
#define COMPORT "4"
#define DEVICE "18F24J10"
#define PW_VUP 4
#define SW_VUP 1
#define PW_12VD 3
#define SW_12VD 2
#define PIN_GND 180
#define PIN_Ref5V 142
#define PIN_5VD 146
#define PIN_12VD 141
#define PIN_VS 171
#define PIN_DRTN 134
#define PIN_TEMP_SEC 202
#define PIN_BOOST_OK_SEC 179
#define PIN_5VD_OV 225
#define LMT_H5VDOVP 6.5
#define LMT_L5VDOVP 5.6
#define ERR_NOERROR 0
#define ERR_SETUP 1
#define ERR_VUP 5
#define ERR_5VDOV 13
#define TEST_progamU37 1
#define TEST_OVP5VD 1
#define DEBUG 1
func DispPassFail(bPass, sMsg, dv)
Dim sDisp1 as string
if bPass then
print sMsg , " OK at ",dV , endl
else
sDisp1 := sMsg + " Fail"
print sDisp1, " : ", dv, endl
BoardMessage(1, sDisp1, RED)
end
end
func MessV(pinp, pinm)
Dim v as Double
ict.SetMeasurePin( pinp, pinm )
v := ict.MeasureDC( )
ict.CutMeasurePin( pinp, pinm )
timer.delayms(1)
return v
end
func PowerON()
pw.SetVoltCurr( PW_VUP, 5.0, 0.5 ) // Apply Power to DUT
pw.SetVoltCurr( PW_12VD, 12.0, 1.0 )
timer.delayms(30)
end
func PowerOff()
pw.SetVoltCurr( PW_VUP, 0.0, 0.5 )
pw.DischargeON( PW_VUP, 0.5)
pw.SetVoltCurr( PW_12VD, 0.0, 0.5 )
pw.DischargeON( PW_12VD, 0.5)
timer.delayms(50)
pw.DischargeOFF( PW_VUP)
pw.DischargeOFF( PW_12VD)
end
Dim nStatus as Integer
Dim s as string
proc main()
Dim nStatus as Integer
Dim dV, dVset, dLmtH, dLmtL, dVLast as Double
Dim dvApp as Double
Dim bPass as Bool
SetPassFail(1, FALSE) // Set Fail First
nStatus := 0
if !pw.Init() then
BOARDMESSAGE(1, "Power Fail", RED)
return
end
BoardMessage(1, "Start normal test...", BLUE)
print "...... Start Test ......", endl
#ifdef TEST_progamU37
Dim sCmd as String
Dim nRet as Integer
sCmd := '"C://Microchip//MPLAB IDE//Programmer Utilities//PM3Cmd//PM3CMD" /'
// sCmd := '"D://Program Files//Microchip//MPLAB IDE//Programmer Utilities//PM3Cmd//PM3CMD" /'
sCmd := sCmd + COMPORT
sCmd := sCmd + " /P"
sCmd := sCmd + DEVICE
sCmd := sCmd + " /F"
sCmd := sCmd + HEXFILE
sCmd := sCmd + " /M /Y"
SetPassFail(1, FALSE)
if !pw.Init( ) then
BOARDMESSAGE(1, 'FAIL', RED)
print "Power Supply Fail", endl
return
end
pw.OutputON( 1, 1, TRUE)//PSW1.1
pw.OutputON( 3,1, TRUE) // for discharge relay PSW1.3
pw.SetVoltCurr( 1, 24.0, 0.5 ) // power on to close the relay for progarmming /PSW1.1
timer.delayms( 100 )
BOARDMESSAGE(1, 'Programming', YELLOW)
print sCmd , endl
nRet := run(sCmd)
if nRet = 0 then
SetPassFail(1, TRUE)
BOARDMESSAGE(1, 'PASS', GREEN)
nStatus :=0
else
BOARDMESSAGE(0, 'FAIL', RED)
nStatus :=1
print "Error Code=", nRet, endl
end
//Discharge the MCLR
pw.SetVoltCurr( 3, 24.0, 0.5)//PSW1.3
timer.delayms(800)
pw.SetVoltCurr( 1, 0.0, 0.5 ) // power off to open the relay for progarmming PSW1.1
pw.OutputON( 1, 1, FALSE)//PSW1.1
timer.delayms(300)
pw.SetVoltCurr( 3, 0.0, 0.5)//PSW1.3
#endif
#ifdef TEST_OVP5VD
if nStatus = ERR_NOERROR then
ict.EXTRelayOn(5,true)//5-15-12VD
ict.EXTRelayOn(6,true)//6-16-VS
ict.EXTRelayOn(1,true)//1-SIG_GND
ict.EXTRelayOn(2,true)//2-DRTN
ict.EXTRelayOn(4,true)//4-0 BOOST
ict.EXTRelayOn(3,true)//3-9 temp
ict.EXTRelayOn(8,true)//8-12.5 OHM
pw.OutputON( PW_VUP, SW_VUP, TRUE ) // Connect Power to DUT
pw.OutputON( PW_12VD, SW_12VD, TRUE )
PowerON()
timer.delayms(120)
dV := MessV(PIN_12VD, PIN_GND) // Mess 12vd Bias
bPass := dV > 11.4 and dV <12.5
DispPassFail(bPass, "12VD Bias", dv)
if !bPass then
nStatus := ERR_VUP
end
dV := MessV(PIN_VS, PIN_GND) // Mess 12 vs Bias
bPass := dV > 11.4 and dV <12.5
DispPassFail(bPass, "VS Bias", dv)
if !bPass then
nStatus := ERR_VUP
end
dV := MessV(PIN_Ref5V, PIN_GND) // Mess ref 5.0v Bias
bPass := dV > 4.7 and dV < 5.2
DispPassFail(bPass, "Ref_12VD 5.0V", dv)
if !bPass then
nStatus := ERR_VUP
end
dV := MessV(162, PIN_GND) // Mess VUP=3.3 Bias
bPass := dV > 2.9 and dV <3.5
DispPassFail(bPass, "VUP 3.3V", dV)
if !bPass then
nStatus := ERR_VUP
end
end
if nStatus != ERR_NOERROR then
BoardMessage(1, "Power Connect/nFail", RED)
end
if nStatus = ERR_NOERROR then //5VD OVP
BoardMessage(1, "Testing/n5VD OVP", YELLOW)
print "Testing 5VD OVP", endl
bPass := FALSE
timer.delayms(800)
dV := MessV(PIN_5VD, PIN_GND) // Mess ref 5.0v Bias
bPass := dV > 4.7 and dV < 5.2
DispPassFail(bPass, "5VD NODE", dv)
if !bPass then
nStatus := ERR_VUP
end
#ifdef DEBUG
print " ", endl
print "5VD=", MessV(146, PIN_GND), endl
print "TEMP_SEC=", MessV(202, PIN_GND), endl
print "BOOST_OK_SEC=", MessV(179, PIN_GND), endl
print "DRTN=", MessV(134, PIN_GND), endl
print "SIG_GND=", MessV(180, PIN_GND), endl
print "12VD=", MessV(141, PIN_GND), endl
print "VS=", MessV(171, PIN_GND), endl
print "VUP=", MessV(162, PIN_GND), endl
print "176=", MessV(176, PIN_GND), endl
print "Vcc=", MessV(131, PIN_GND), endl
print "132=", MessV(132, PIN_GND), endl
print "196=", MessV(196, PIN_GND), endl
print "ref_12VD_5.0V=", MessV(142, PIN_GND), endl
print "3.3V=", MessV(162, PIN_GND), endl
print "ENABLE 5+12VD=", MessV(225, PIN_GND), endl
print "FB =", MessV(132, PIN_GND), endl
print "214 =", MessV(214, PIN_GND), endl
#endif
if nStatus = ERR_NOERROR then //5VD OVP
ict.EXTRelayOn(7,true)//7-6.04K OHM
print "Parallel 6.04K ohm Resistor with R386", endl
timer.delayms(1000)
dV := MessV(PIN_5VD, PIN_GND) // Mess ref 5.0v Bias
bPass := dV < 1.0
DispPassFail(bPass, "5VD NODE", dv)
if !bPass then
nStatus := ERR_VUP
end
end
if bPass then
print "/nOVP 5VD at : ", dV, endl
BoardMessage(1, "5VD OVP Pass", BLUE)
else
nStatus := ERR_5VDOV
BoardMessage(1, "5VD OVP Fail", RED)
print "/nOVP 5VD don't happen at = ",dV, endl
end
end
pw.SetVoltCurr( PW_12VD, 0.0, 0.0 ) // 12VD VS
pw.DischargeON( PW_12VD, 0.5 )
pw.SetVoltCurr( PW_VUP, 0.0, 0.0 ) // 5.0VD
pw.DischargeON( PW_VUP, 0.5 )
timer.delayms(100)
//pw.OutputON( 4,1, FALSE )
ict.EXTRelayOn(5,FALSE)
ict.EXTRelayOn(6,FALSE)
ict.EXTRelayOn(1,FALSE)
ict.EXTRelayOn(2,FALSE)
ict.EXTRelayOn(3,FALSE)
ict.EXTRelayOn(4,FALSE)
ict.EXTRelayOn(8,FALSE)//4-10
ict.EXTRelayOn(7,FALSE)//4-10
#endif
if nStatus = 0 then
print "ALL PASS", endl
BoardMessage(1, "Pass", GREEN)
SetPassFail(1, TRUE ) // Set Fail First
end
end
// "C:/Microchip/MPLAB IDE/Programmer Utilities/PM3Cmd/PM3CMD" /3 /P18F2320 /Feu026642.hex /Y /M