367 lines
17 KiB
Plaintext
367 lines
17 KiB
Plaintext
====================================================================
|
||
DR 6502 AER 201S Engineering Design 6502 Execution Simulator
|
||
====================================================================
|
||
|
||
Supplementary Notes By: M.J.Malone
|
||
|
||
|
||
Trouble Shooting the 6502 Project Board
|
||
=======================================
|
||
|
||
Quick Checks
|
||
============
|
||
|
||
There is only one important thing to keep in mind when faced
|
||
with a non-functioning 6502 board. The board is just a series of
|
||
traces. The errors in the trace pattern are well known and once
|
||
fixed using the jumpers described in the project board notes, their
|
||
is no reason for a board not to work except for reasons of software,
|
||
power, bad chips and wiring mistakes. The quick diagnosis methods
|
||
and quick are given below.
|
||
|
||
|
||
A Software Error
|
||
----------------
|
||
|
||
Many times when a design group is trying something the test
|
||
fails, the software person is blamed. After a recheck of the
|
||
program source code, the programmer says confidently, "Just look at
|
||
this code, it is so simple how could there be an error? It must be
|
||
'the board' !". After several hours the software person discovers
|
||
that they have typed:
|
||
|
||
lda DDRA_Port_Mask ; The mask for the I/O pattern of Port A
|
||
sta DDRA
|
||
|
||
instead of:
|
||
|
||
lda #DDRA_Port_Mask ; The mask for the I/O pattern of Port A
|
||
sta DDRA
|
||
|
||
If the bit pattern 'DDRA_Port_Mask' were interpreted as an address
|
||
as in the first example, of course nothing works.
|
||
|
||
There are many such one character errors that are very
|
||
difficult to see late at night on the fourth check of the source
|
||
code especially when the checker is convinced there is no error.
|
||
The solution is to have a test EPROM around at all times that checks
|
||
all components of the computer. Whenever a dispute of 'Is the error
|
||
in hardware or software?' arises simply plug in the test EPROM and
|
||
see if the board performs as expected or not. An example test EPROM
|
||
program is given in BOARDTST.ASM. If your board has failed such a
|
||
test as the one given in BOARDTST.ASM then continue.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
page 2
|
||
|
||
Bad/No Power
|
||
------------
|
||
|
||
Check the power supply, batteries and connections. Check WITH
|
||
A VOLTMETER the actual voltage being produced by the 7805 power
|
||
regulator. The +5 volt trace is the one connected to the regulator
|
||
pin next to the edge of the board. This trace runs the length of
|
||
the board and has connections to several 10K resistors and at least
|
||
one capacitor. The ground trace is connected to the middle pin on
|
||
the power regulator. If the voltage is greater than 5 volts (like
|
||
maybe 7-12 volts) see: 'Over Voltage' below. If the voltage is less
|
||
than 5 volts (like maybe 0-4 volts) see 'Under Voltage' below. If
|
||
the voltage is 5 +/- .1 volts then proceed.
|
||
|
||
|
||
Bad Chip
|
||
--------
|
||
|
||
It is possible that you have a bad chip. First check that your
|
||
check EPROM is good by checking it on someone else's computer
|
||
board. If the EPROM is OK then put it back in the non-functioning
|
||
board and proceed to swap chips with the working board ONE AT A
|
||
TIME. If at some time the working board stops working or the
|
||
non-functioning board checks out you can determine which of and how
|
||
many bad chips you have.
|
||
|
||
|
||
Wiring Mistakes
|
||
---------------
|
||
|
||
Probably the fastest way to check if there is a wiring mistake
|
||
is to have someone else look at your computer board, preferably
|
||
comparing it to a functioning board. Check the EPROM jumper is
|
||
correct and in place and measures 5 volts. Check that there are two
|
||
jumpers near the 74xx04. Check that one has a polarity of +5volts
|
||
and the other GND. Check that there is a jumper near the 74xx74.
|
||
Check that this jumper has a voltage of GND. Check that there is a
|
||
jumper on the bottom of the 6502 and that it measures 5 volts.
|
||
Check the polarity of the tantalum capacitors.
|
||
|
||
|
||
Trouble Shooting Procedure
|
||
==========================
|
||
|
||
Though all non-functioning computers will fail to function from
|
||
one of the above causes, a more detailed trouble-shooting procedure
|
||
will be developed. After this several symptom-solution scenarios
|
||
will be presented.
|
||
|
||
1) Connect the computer board to +12 and GND connections on the
|
||
power supply. Place you finger on the back of the 7805 power
|
||
regulator and turn on the power supply. If the regulator becomes
|
||
uncomfortable to touch then go to 'High Current Drain'. If the
|
||
regulator does not become hot then continue.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
page 3
|
||
|
||
2) First we will check the output of the 2 MHz clock circuit. Check
|
||
pin #6 on the 74xx04 chip with an oscilloscope set to 1 microsecond
|
||
per division and 1 volt per division with the GND level at the
|
||
bottom of the screen. If the pin shows an AC signal that is a
|
||
rounded square wave of 2 MHz frequency (two complete cycles per
|
||
division) then advance to step 5. If the signal is at either 0
|
||
volts or 5 volts (almost exactly) then go to step 3. If the signal
|
||
is between .7 volts and 2.7 volts then go to 4).
|
||
|
||
3) You are at this step because the clock oscillator which is
|
||
supposed to be astable has latched into the high or low state. This
|
||
is simply not possible if everything is connected and the 74xx04 is
|
||
even close to working. Check the connection of the crystal, two
|
||
resistors and the .1 microF capacitor. Try also replacing the
|
||
74xx04 chip.
|
||
|
||
4) You are at this step because your clock signal is not starting by
|
||
itself but instead is sitting in an equilibrium state. We will try
|
||
disturbing its equilibrium a bit. Touch the leads of the crystal
|
||
with your finger while continuing to probe the 74xx04 chip. If an
|
||
AC signal develops then the solution to this problem is to turn off
|
||
the power, connect a 100-1000pF capacitor from the square GND area
|
||
to one of the leads of the crystal and then power up. If the AC
|
||
signal develops immediately then continue to step 5 otherwise
|
||
increase the capacitance and try again.
|
||
|
||
5) You now have a functioning 2 MHz clock unit. Probe pin #37 of
|
||
the 6502. The signal should be a square wave of frequency 1 MHz,
|
||
one cycle per division. If this is the case advance to step 8). If
|
||
the signal is a square wave but at a frequency of 2 MHz then go to
|
||
step 7) otherwise continue to step 6).
|
||
|
||
6) You are here because your 74xx74 chip is probably not
|
||
functioning. Check it by swapping the chip and also check the
|
||
jumper near the 74xx74 chip that it is 0 volts. Try removing the
|
||
6502 chip and see if the problem persists. If the clock signal
|
||
becomes normal then perhaps the 6502 is blown or the 74xx74 is
|
||
blown.
|
||
|
||
7) You are here because you have the 2 MHz clock problem as
|
||
described in the assembly notes. Try the solution as described in
|
||
the printed notes you received with your computer board.
|
||
|
||
8) You have a proven CPU clock. Next test to see if the 6502
|
||
properly resets. Check the voltage on pin #40 of the 6502 using an
|
||
oscilloscope. The voltage should be 5 volts. It is normal to see
|
||
small spikes in the 5 volt level of approximately +/-.3 volts.
|
||
Press the reset button and check that the voltage is 0 volts. If
|
||
the voltage is the opposite to that expected then it is probably
|
||
that you have a momentary open switch not a momentary closed switch
|
||
as specified. If this is the case then you can still test your
|
||
computer temporarily by holding the reset switch but you should
|
||
replace the switch at the earliest opportunity.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
page 4
|
||
|
||
9) You now have a proven Reset circuit. Next test to see if the
|
||
6502 is executing instructions by probing the SYNC signal of the
|
||
CPU. The SYNC signal goes high every time the CPU fetches an opcode
|
||
of program. The SYNC signal can be monitored by probing pin #7 of
|
||
the 6502.
|
||
Note: to get the pulse pattern to be stationary on the screen
|
||
and not covered with ghosts and flickers, set the time base on 10
|
||
microseconds per division and then adjust the time base 'cal' knob
|
||
slightly until the pattern locks in with the fewest ghosts. Set the
|
||
times 10 sweep magnification on the time base. The time base should
|
||
be effectively just a bit more than 1 microsecond per division. By
|
||
adjusting the horizontal position knob, you will be able to scan
|
||
through the series of pulses.
|
||
The opcode fetch will last 1 microsecond. This pulse will be
|
||
followed by at least 1 microsecond low. NOP, LDA #, TAY, BNE (not
|
||
taken), SEC are all instructions that will take two machine cycles
|
||
(microseconds) and will be seen on the oscilloscope as one cycle
|
||
high followed by one cycle low. The longest instructions (cycles)
|
||
are RTS (6), BRK (8) and Reset (6). On average, most instructions
|
||
will show 3 or 4 cycles since all non-indexed memory fetches, jumps
|
||
and arithmetic or logical statements are 3 or 4 cycles. It may seem
|
||
for very long programs that it would be impossible to use this sort
|
||
of count the cycles type analysis but it is usually not. Since most
|
||
programs have one small segment of the code that is executed most of
|
||
the time (like the innermost nest of a delay loop) it is possible to
|
||
assume that most of what you see on the screen that small part of
|
||
the program with the ghosts being the other parts of the program.
|
||
By this method it is possible to determine whether the 6502 is
|
||
executing the program intended or not.
|
||
|
||
|
||
Summary
|
||
-------
|
||
|
||
If the above procedure does not lead to a cause of the problem
|
||
then the recommended procedure is to trim down the program to its
|
||
minimum, and attempt chip swapping again paying particular attention
|
||
to the VIA's, CPU, EPROM and RAM. It may also be possible that a
|
||
poor soldering job may have left some connection not connected. If
|
||
this is suspected then it is recommended that the board be inspected
|
||
by someone, preferably someone else, and suspicious areas be touched
|
||
up.
|
||
Your computer board will work eventually. If there are no
|
||
missing jumpers and no bad chips the test EPROM must check out.
|
||
|
||
|
||
Symptoms/Cures
|
||
==============
|
||
|
||
|
||
Symptom: Over Voltage
|
||
---------------------
|
||
First there are three possible causes for this. The power
|
||
regulator is designed to produce at least 5 volts. If there is
|
||
another source of voltage on the board of greater than 5 volts, the
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
page 5
|
||
|
||
system voltage may rise above 5 volts. This is commonly caused by
|
||
some user circuit or input to a CMOS VIA. The obvious remedy is to
|
||
turn off all external voltage sources and recheck the system
|
||
voltage.
|
||
|
||
The second problem may be simply that the +12 volt power supply
|
||
has been mistakenly connected to the +5 volt connection on the
|
||
bottom of the circuit board.
|
||
The third possible problem may be that the 7805 is blown and
|
||
not operating properly.
|
||
The over voltage condition is very serious and can lead to
|
||
destruction of ALL of the chips in the system (the $35 mistake).
|
||
|
||
|
||
Symptom: Under Voltage
|
||
----------------------
|
||
If the voltage in the system is low and the 7805 power
|
||
regulator is not getting uncomfortably warm then this can only mean
|
||
that the 7805 is defective or is not properly connected or the
|
||
measurement of voltage is not being done properly. If the 7805 is
|
||
getting uncomfortably hot to touch then go on to 'High Current
|
||
Drain'.
|
||
|
||
|
||
Symptom: High Current Drain
|
||
---------------------------
|
||
This assumes that the VIA's are not connected to any circuitry
|
||
which may be causing large currents to be drawn from the board. If
|
||
the VIA's are connected to external circuitry then disconnect them
|
||
and begin again.
|
||
If NMOS 6502 or 6522 chips have been used then it is quite
|
||
possible that there is nothing wrong at all. An computer with an
|
||
NMOS 6502 and two NMOS 6522s can easily draw 1 ampere as compared to
|
||
0.024 milliamperes (yes a factor of 40!) for an all CMOS computer.
|
||
This extra current draw is enough to make any 7805 a bit hot. For
|
||
testing, it is possible to bypass the regulator and feed the
|
||
computer board from a high current supply for testing purposes but
|
||
it is recommended that the NMOS components be replaced with CMOS at
|
||
the earliest possible opportunity. It is entirely possible that the
|
||
board may not work at all with too many NMOS components because of
|
||
voltage drops over the lengths of the fine traces used to make the
|
||
circuit.
|
||
This can be caused by a bad chip, a short circuit in the wiring
|
||
or a bad tantalum capacitor. To check to see if a bad chip is to
|
||
blame, try removing the chips one by one and trying again each
|
||
time. If the current drain disappears then the last chip removed
|
||
may be the cause. Another troubleshooting method recommended is to
|
||
bypass the 7805 and connect a high current 5 volt supply directly to
|
||
the 5 volt rail of the board. Turn on the power and quickly check
|
||
all chips with the back of a finger (because it is most sensitive to
|
||
heat) to look for one that may be heating. NMOS and TTL chips may
|
||
become warm but will never be hot under normal operation.
|
||
Transistors and regulators may become hot but will never be
|
||
uncomfortable to touch. If none of the chips seem to be heating
|
||
then leave the power on and check the voltage and current being
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
page 6
|
||
|
||
output by the supply. If the supply voltage is very close to zero
|
||
then there is likely a short in the wiring (see next heading). Wait
|
||
a short time and look for smoke (big white clouds of smoke) from one
|
||
of the tantalum capacitors. If one of the capacitors is bad it will
|
||
progress from smoke to flames quickly so stand by the off switch.
|
||
As soon as heat is detected from a chip or smoke from a capacitor
|
||
shut off the supply and replace the component. See if there is
|
||
still a problem with a high current drain.
|
||
|
||
|
||
Symptom: Unlocatable Short Circuit
|
||
----------------------------------
|
||
Sometimes there is an unlocatable short circuit somewhere on
|
||
the board, usually the result of a poor soldering job or a resistor
|
||
or capacitor lead bent over and touching another area. If the board
|
||
has been thoroughly inspected by several people and the error is not
|
||
obvious then there is another suggested course of action.
|
||
Remove all the chips from the board and bypass the regulator
|
||
with a high current variable supply. Adjust the current limiting or
|
||
the voltage until the current flowing through the board is something
|
||
between .05 and .1 amperes. Using a voltmeter set to read
|
||
millivolts, measure the voltage across the power supply. If the
|
||
voltage is too great to be read in millivolts do not become alarmed,
|
||
this is actually better.
|
||
The idea here is than any trace that has a current flowing
|
||
through it also has a small voltage drop along its length. If you
|
||
start where you have connected the -ve lead of the power supply and
|
||
test all paths leading from it there will be one with a significant
|
||
voltage difference in millivolts along some test length. This path
|
||
is the one that leads to the short circuit. Continue to leap frog
|
||
along until you find your way back to the +ve lead of the power
|
||
supply. Somewhere on the path you will discover a wrong connection
|
||
and there is your short.
|
||
|