From 8ddae82395a6cc9855e3c1a93f5191b09a14326a Mon Sep 17 00:00:00 2001 From: Tom Nisbet Date: Fri, 17 Jul 2020 11:17:56 -0400 Subject: [PATCH] Add detailed troubleshooting commands --- docs/troubleshooting.md | 87 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index ff0b674..461c2dd 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -77,3 +77,90 @@ Writing the unlock code to disable Software Write Protect mode. #cd ``` + +## Troubleshooting + +If the programmer seems to be working, but 28C256 EEPROMs cannot be written, the problem +may simply be a locked chip. Some chips have been received with the Software Data +Protection (SDP) enabled, even though the data sheet states that it should be disabled +from the factory. If the chip does not write (try the Zap command in the TommyPROM code), +then try an Unlock command and then retry the write. + +If the programmer is not working, the most common problem is a simple wiring error. The +hardware verify sketch can help to find missing or crossed connections. + +The hardware has three sections: an 8-bit read-write data bus connected to the target +PROM's data line, a set of write-only address lines generated by shift registers and +connected to the target PROM's address lines, and a set of write-only control lines from +the Arduino that toggle the PROM's output enable and write lines. + +The first step in general testing it to remove the target chip and then toggle single +lines from the Arduino. The result should be measured at the target PROM footprint, not +at the Arduino. To fully test, use a multimeter to verify that the lines that should be +active are active and that any other lines are not. + +### Testing the data bus + +Issue a set of Data commands from the Hardware Verify sketch and measure EACH data line at +the PROM footprint. **If the expected result is "D0 HIGH", verify not only that D0 reads +HIGH, but that all of the other lines read LOW.** + +Data test commands + +|Command|Result| +|:--- |:--- | +|D0 |All data lines LOW| +|D1 |D0 HIGH| +|D2 |D1 HIGH| +|D4 |D2 HIGH| +|D8 |D3 HIGH| +|D10 |D4 HIGH| +|D20 |D5 HIGH| +|D40 |D6 HIGH| +|D80 |D7 HIGH| +|Dff |all data lines HIGH| + +### Testing the address lines + +As with the data tests above, verify not only the line with the expected result, but all +other address lines as well. + +|Command|Result| +|:--- |:--- | +|A0 |All address lines LOW| +|A1 |A0 HIGH| +|A2 |A1 HIGH| +|A4 |A2 HIGH| +|A8 |A3 HIGH| +|A10 |A4 HIGH| +|A20 |A5 HIGH| +|A40 |A6 HIGH| +|A80 |A7 HIGH| +|A100 |A8 HIGH| +|A200 |A9 HIGH| +|A400 |A10 HIGH| +|A800 |A11 HIGH| +|A1000 |A12 HIGH| +|A2000 |A13 HIGH| +|A4000 |A14 HIGH| +|A7fff |all address lines HIGH| + +### Testing the control lines + +The PROM control lines are active LOW, so an enable command will set the corresponding +control line LOW and a disable will set it HIGH. Try the commands in the following table. +Note that they should be done in the order listed, because a test command on one control +line will not change the state of any of the other lines. + +To begin, issue the following commands: D0, A0, Cd, Od, Wd. Note that the Od command is +the letter 'O', not the number zero. All three control lines should read HIGH after these +commands are complete. + +|Command|Result| +|:--- |:--- | +|Ce | Chip Enable (CE) LOW, others HIGH| +|Cd | CE, OE, WE all HIGH| +|Oe | Output Enable (OE) LOW, others HIGH| +|Cd | CE, OE, WE all HIGH| +|We | Write Enable (WE) LOW, others HIGH| +|Wd | CE, OE, WE all HIGH|