I got my program to a point where I needed to test so I ran it in the uVision simulator. It was flawless. I fired up my Nohau emulator and ran it on our new PC board. Perfect.
I burned a chip (89C51RD2) and popped it in the board...nothing.
Since I am now the only embedded guy in the shop I work alone I have no one to bounce ideas off. So I've come here.
The oscilloscope shows that timer_0 is running, and my ISR is OK because the watchdog strobe is happening and the timer values are being reloaded.
Has anyone seen this before? Do you have a suggestion of of path to find the differences between the simulated and emulated situation and running on the board?
That, however, leads me back to the simulator which, I assume, models the chips RAM closely.
That assumption is not particularly safe, to put it mildly. Real static RAM tends to come out of power-up or reset containing random garbage, whereas the simulator starts with all-zeroes.
If anything, it would be the emulator that more closely models real RAM behaviour.
Real static RAM tends to come out of power-up or reset containing random garbage, whereas the simulator starts with all-zeroes. thus if the sizes in startup.a51 are wrong that would give the described effect.
Erik