Druzyek wrote:
You mentioned that you have an Arduino. Could you remove the button, resistor, and capacitor and wire up one of the Arduino outputs to control the 6502 reset? That would at least help you diagnose the problem even if you don't plan to rely on the Arduino for resets long term. You could also try bringing the LCD reset line low while the 6502 reset is low.
EDIT: I would add that a microcontroller running at the same voltage as your 6502 (5v in the Arduino's case) can also be a cheap and very useful circuit debugging tool. IIRC, Ben Eater used a 555 to clean up a push button on one of his breadboard computer videos. You can use a microcontroller to generate lots of little signals like that and eliminate analog errors you might be getting from button bounce or plugging in signal wires while it's running. It's not a replacement for an oscilloscope, though you can monitor slow signals like the data bus when you're single stepping as you would with a logic analyzer.
If you decide to go this route, you can remove the crystal oscillator and generate the clock signal with the Arduino. This will let you see what is happening on each cycle and pinpoint what's going wrong.
Nice Idea! Tried it - But still doesn't work.
I made a simple arduino sketch which helped a lot - Actually I think the problem is with the LCD, as Marta said about the reset.
The CPU seems to be active while displaying nothing on the LCD (I will send an image later).
Here's the code I wrote:
Code:
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
Serial.begin(115200);
lcd.begin(16, 2);
lcd.print("OSCILLOSCOPE");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print("RUNNING v1.");
lcd.setCursor(11, 1);
lcd.print(millis() / 1000);
// Uncomment for self test
// To use plug pin A0 in A7
// for(int i=0; i < 1000; i++){
// analogWrite(A7, i);
// analogWrite(A7, i);
// analogWrite(A7, i);
// analogWrite(A7, i);
//
// }
int val = analogRead(A0);
int val1 = analogRead(A1);
int val2 = analogRead(A2);
Serial.println("Scale"); Serial.print(6); Serial.print("\t");
Serial.print("1: "); Serial.print(val); Serial.print("\t");
Serial.print("2: "); Serial.print(val1); Serial.print("\t");
Serial.print("3: "); Serial.print(val2); Serial.print("\t");
Serial.println("");
}