mirror of
https://github.com/dougg3/mac-rom-simm-programmer.git
synced 2024-12-27 06:29:22 +00:00
Don't assert OE and CS simultaneously during electrical test
If you do, and a SIMM is installed in the socket, you will get an erroneous short detected for any data pins that are currently outputting a 0. Avoid this by testing OE and CS for 5V shorts separately.
This commit is contained in:
parent
0b88f61542
commit
c46b9d5e5f
@ -214,8 +214,12 @@ int SIMMElectricalTest_Run(void (*errorHandler)(uint8_t, uint8_t))
|
|||||||
ParallelBus_SetDataPulldowns(SIMM_DATA_PINS_MASK);
|
ParallelBus_SetDataPulldowns(SIMM_DATA_PINS_MASK);
|
||||||
ParallelBus_SetCSPullup(false);
|
ParallelBus_SetCSPullup(false);
|
||||||
ParallelBus_SetCSPulldown(true);
|
ParallelBus_SetCSPulldown(true);
|
||||||
ParallelBus_SetOEPullup(false);
|
// We can't enable pulldowns on both CS and OE simultaneously, because if
|
||||||
ParallelBus_SetOEPulldown(true);
|
// they're both low at the same time, a SIMM mounted in the socket will
|
||||||
|
// output data and interfere with our electrical test. So only enable CS's
|
||||||
|
// pulldown at first. Enable a pullup on OE just to be sure it's not low.
|
||||||
|
ParallelBus_SetOEPullup(true);
|
||||||
|
ParallelBus_SetOEPulldown(false);
|
||||||
ParallelBus_SetWEPullup(false);
|
ParallelBus_SetWEPullup(false);
|
||||||
ParallelBus_SetWEPulldown(true);
|
ParallelBus_SetWEPulldown(true);
|
||||||
|
|
||||||
@ -277,6 +281,17 @@ int SIMMElectricalTest_Run(void (*errorHandler)(uint8_t, uint8_t))
|
|||||||
}
|
}
|
||||||
curPin++;
|
curPin++;
|
||||||
|
|
||||||
|
// Now that we've tested CS, turn off its pulldown and turn on OE's pulldown instead.
|
||||||
|
// Pull up CS -- again, this ensures that a SIMM won't output data and interfere with
|
||||||
|
// the electrical test if it's mounted in the socket right now.
|
||||||
|
ParallelBus_SetOEPullup(false);
|
||||||
|
ParallelBus_SetCSPulldown(false);
|
||||||
|
ParallelBus_SetOEPulldown(true);
|
||||||
|
ParallelBus_SetCSPullup(true);
|
||||||
|
|
||||||
|
// Wait a brief moment...
|
||||||
|
DelayMS(DELAY_SETTLE_TIME_MS);
|
||||||
|
|
||||||
// Output enable...
|
// Output enable...
|
||||||
if (ParallelBus_ReadOE())
|
if (ParallelBus_ReadOE())
|
||||||
{
|
{
|
||||||
@ -299,8 +314,8 @@ int SIMMElectricalTest_Run(void (*errorHandler)(uint8_t, uint8_t))
|
|||||||
}
|
}
|
||||||
curPin++; // Doesn't need to be here, but for consistency I'm leaving it.
|
curPin++; // Doesn't need to be here, but for consistency I'm leaving it.
|
||||||
|
|
||||||
// Clear the pulldowns now that we're done; we won't need them anymore
|
// Clear the pulldowns now that we're done with 5V short testing; we won't
|
||||||
// for the rest of the testing
|
// need them anymore for the rest of the electrical test.
|
||||||
ParallelBus_SetAddressPulldowns(0);
|
ParallelBus_SetAddressPulldowns(0);
|
||||||
ParallelBus_SetDataPulldowns(0);
|
ParallelBus_SetDataPulldowns(0);
|
||||||
ParallelBus_SetCSPulldown(false);
|
ParallelBus_SetCSPulldown(false);
|
||||||
|
Loading…
Reference in New Issue
Block a user