Chromatix wrote:
Quote:
WDC branded 65C02S8P-10's
Can you post photos of the top and bottom of these, or at least tell us the date codes? It's likely that these are counterfeits, especially if you obtained them from China (most AliExpress and many eBay chip sources are there).
The "S8P" in the middle tells us that this should be a mid-life (circa early 2000s) WDC part manufactured on the TSMC .8µm process, in the DIP-40 package; "early" would be 1990s. However, with the .8µm process, WDC began specifying all of their basic CPU and interface parts as capable of 14MHz, ie. with a -14 suffix. So this is already suspicious. The date codes and any identifiable markings on the bottom should clear it up.
Chromatix's assessment agrees with mine. By the time WDC switched to the .8µm geometry there was only one speed grade, which is 14 MHz. So your S8P-10 part number would be fake.
We've had discussion elsewhere on this forum about the hazards of buying electronic components through eBay sources, especially Chinese sources. That good deal is often not good, as the odds are very likely you will receive counterfeit parts if you choose that route. Only authorized distributors will have genuine WDC parts and while it will cost a little more to go through one of them, at least you will know you've got what you think you've gotten.
Also be wary of 65C02s with the Rockwell brand. While Rockwell did produce a huge number of 65C02s, that was mostly in the 1980s and early 1990s. Production shut down in 1999, which means a genuine Rockwell 65C02 will have a date code no later than 99xx. The majority of Rockwell 'C02s still in circulation are pulls, not NOS. So, again, caveat emptor.
Getting back to your circuit, you need to pull the MPU's BE and SO inputs up to Vcc—CMOS inputs, as a rule, should not be allowed to float. Also, change R2 from 1K to 3.3K. RDY on the WDC 65C02 is bidirectional—the MPU will attempt to drive it low if a WAI instruction (opcode) $CB) is executed, intentionally or otherwise. A higher resistor value will limit the amount of current drawn by RDY when driven low to a safe level, while not making the input too noise-sensitive.
Assuming you are using a W65C22S, your IRQ circuit is okay. If you are using the W65C22N you must pull IRQ up to Vcc, as the 'C22N has an open-drain IRQ output. 3.3K is a customary value for the pullup resistor.
Your hookup to the SRAM is not good. /CS should not be qualified by the Ø2 clock—the address bus becomes valid about midway through Ø2 low. However, the SRAM's /WE does need to be qualified by Ø2 to prevent a wild write during the time when the address bus is settling. For best results, /OE of both the SRAM and the EEPROM should also be qualified by Ø2 to avoid possible glitching as the MPU sets up the address bus and other signals.
You may run into some trouble with your reset circuit at power-on. Many can oscillators require tens of milliseconds to start oscillating and stabilize. The short time-constant of your reset circuit may cause the MPU to come out of reset before Vcc is fully settled and a stable Ø2 clock signal is available. Lacking a stable Ø2 signal after coming out of reset, the MPU will likely play possum. Although it adds a little cost to the circuit, a Maxim DS1813 reset controller (or something similar) will hold reset down for about 150ms after Vcc has stabilized.
You don't have enough bypass capacitors nor are you correctly using them. Bypass capacitors should be used at each active device, with the capacitor connections as short and direct as possible to the device being bypassed. Merely bypassing across the power supply rails will do little for you.