第七节 自检和侦错代码
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'Self Test Code
'///////////////////////////////////////////////////////////////////////////////////////////////////
Function Selftest() As Byte
Local iTestcode As Byte
iTestcode = 0
Charat = "Self Test......" : DrawChr(1,1)
Format(5,0)
' Check the Tempresult Sense(DS18b20)
IsTempresultSense = 1Wreset
If Not(IsTempresultSense) Then
Charat = ">TepSense not install" : DrawChr(1,2)
IsTempresultSense = 0
Else
Charat = ">TemperatureSense Chk" : DrawChr(1,2)
1Wwrite &hcc; &h44
WaitMs 500
1Wreset
1Wwrite &hcc; &hbe
1Wread dTempdatum ,2
1Wreset
1Wwrite &hcc; &h44
dTempresult = dTempdatum(0)
'Charat = Str(dTempresult) : DrawChr(156,2)
If dTempresult = 0 Then
Charat = ">TemperatureSense Err" : DrawChr(1,2)
IsTempresultSense = 0
iTestcode = iTestcode Or &b00000001
Else
Charat = ">Temperature Sense OK" : DrawChr(1,2)
IsTempresultSense = 1
End If
End If
' Check the ADC(LTC2400)
'Charat = ">ADC Checked..." : DrawChr(1,3)
If IO_ADC_DAT = 1 Then
Charat = ">ADC Detect...Failed" : DrawChr(1,3)
iTestcode = iTestcode Or &b00000010
Else
SetChannel(GndOffset)
bADCResult(3) = ShiftIn : bADCResult(2) = ShiftIn : bADCResult(1) = ShiftIn : bADCResult(0) = ShiftIn
iBusystp = 0
For i = 1 To 200
iBusystp = iBusystp + 1
If IO_ADC_DAT = 0 Then Exit For
WaitMs 1
Next i
If iBusystp < 155 Or iBusystp > 166 Then
Charat = ">ADC ChK Failed" : DrawChr(1,3)
Charat = Str(iBusystp) : DrawChr(94,3)
iTestcode = iTestcode Or &b00000100
Else
Charat = ">ADC Checked...Passed" : DrawChr(1,3)
iError = ADCheck(Reference) 'Result = GND Offset < +10~-10 >
If iError <> 0 Then
If iError > -10 And iError < 10 Then
Charat = ">COM Checked...Passed" : DrawChr(1,4)
Else
Charat = ">COM ChK Failed " : DrawChr(1,4)
Charat = Str(iError) : DrawChr(94,4)
iTestcode = iTestcode Or &b00001000
End If
Else
Charat = ">COM Checked...Passed" : DrawChr(1,4)
End If
'Check the Reference
Charat = ">Reference Chk:" : DrawChr(1,5)
SetVoltage(0) : WaitMs 10
iError = ADCheck(Synthesis) 'Result = Reference, Next is Synthesis Out Voltage <6500*1.024~7500*1.024 / 6655~7680>
wError = iError * 25 / 8
If wError > 6800 And wError < 7475 Then
Charat = ">REF Checked...Passed" : DrawChr(1,5)
Else
Charat = Str(wError) : DrawChr(94,5)
iTestcode = iTestcode Or &b00010000
End If
'Check the DAC Offset
Charat = ">DAC Check 1st." : DrawChr(1,6)
WaitMs 200 'Wait the ADC to Converting...
SetVoltage(12000000) : WaitMs 10 'Set Next Check Item = DAC Fullscale Out
iError = ADCheck(Synthesis) 'Result = Synthesis Out Voltage(Set=0V) <+~-1>
If iError <> 0 Then
If iError > -10 And iError < 10 Then
Charat = ">DAC Check 1st Passed" : DrawChr(1,6)
Else
Charat = Str(iError) : DrawChr(94,6)
iTestcode = iTestcode Or &b00100000
End If
Else
Charat = ">DAC Check 1st Passed" : DrawChr(1,6)
End If
'Check the DAC Full Scale
Charat = "2nd" : DrawChr(67,7)
WaitMs 200
'SetVoltage(0)
iError = ADCheck(Synthesis) 'Result = Synthesis Out Voltage(Set=12V) <12282 +/- 10word, 12270~12295>
wError = (iError / 2) * 25 / 4
If wError > 12000 And wError < 12575 Then
Charat = "Passed" : DrawChr(91,7)
Else
Charat = Str(wError) : DrawChr(94,7)
iTestcode = iTestcode Or &b01000000
End If
End If
End If
Return iTestcode
End Function
Function Debug(iTestcode As Byte) As Byte
Format(5,0)
ClsKS(0)
Charat = "Debug Code Result" : DrawChr(1,0)
Charat = " >REG 0x00" : DrawChr(1,1)
Charat = " >REG 0xFF" : DrawChr(1,2)
Charat = " >DAC 0000" : DrawChr(1,3)
Charat = " >DAC 8000" : DrawChr(1,4)
Charat = " >DAC FF00" : DrawChr(1,5)
Charat = " >DAC 0080" : DrawChr(1,6)
Charat = " >DAC 00FF" : DrawChr(1,7)
Do
WriteSReg(0)
MemLoad(VarPtr(iCursors), &b01111111, &b00111110, &b00011100, &b00001000) : DrawCursors(1, 1, 4)
Wait 5
MemLoad(VarPtr(iCursors), 0, 0, 0, 0) : DrawCursors(1, 1, 4)
WriteSReg(255)
MemLoad(VarPtr(iCursors), &b01111111, &b00111110, &b00011100, &b00001000) : DrawCursors(1, 2, 4)
Wait 5
MemLoad(VarPtr(iCursors), 0, 0, 0, 0) : DrawCursors(1, 2, 4)
WriteDAC(&h00, &h00, &h00, &h00)
MemLoad(VarPtr(iCursors), &b01111111, &b00111110, &b00011100, &b00001000) : DrawCursors(1, 3, 4)
Wait 5
iError = ADCheck(Synthesis)
Charat = Str(iError) : DrawChr(94,3)
MemLoad(VarPtr(iCursors), 0, 0, 0, 0) : DrawCursors(1, 3, 4)
WriteDAC(&h80, &h00, &h00, &h00)
MemLoad(VarPtr(iCursors), &b01111111, &b00111110, &b00011100, &b00001000) : DrawCursors(1, 4, 4)
Wait 5
iError = ADCheck(Synthesis)
Charat = Str(iError) : DrawChr(94,4)
MemLoad(VarPtr(iCursors), 0, 0, 0, 0) : DrawCursors(1, 4, 4)
WriteDAC(&hFF, &hFF, &h00, &h00)
MemLoad(VarPtr(iCursors), &b01111111, &b00111110, &b00011100, &b00001000) : DrawCursors(1, 5, 4)
Wait 5
iError = ADCheck(Synthesis)
Charat = Str(iError) : DrawChr(94,5)
MemLoad(VarPtr(iCursors), 0, 0, 0, 0) : DrawCursors(1, 5, 4)
WriteDAC(&h00, &h00, &h80, &h00)
MemLoad(VarPtr(iCursors), &b01111111, &b00111110, &b00011100, &b00001000) : DrawCursors(1, 6, 4)
Wait 5
iError = ADCheck(Synthesis)
Charat = Str(iError) : DrawChr(94,6)
MemLoad(VarPtr(iCursors), 0, 0, 0, 0) : DrawCursors(1, 6, 4)
WriteDAC(&h00, &h00, &hFF, &hFF)
MemLoad(VarPtr(iCursors), &b01111111, &b00111110, &b00011100, &b00001000) : DrawCursors(1, 7, 4)
Wait 5
iError = ADCheck(Synthesis)
Charat = Str(iError) : DrawChr(94,7)
MemLoad(VarPtr(iCursors), 0, 0, 0, 0) : DrawCursors(1, 7, 4)
Loop
End Function
|