We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
My company is using Philips 8031 chip. The new batch of chips we received, every one of them keeps reseting itself when when it come accross the PRINTF statement !!! The c-code works fine with the old 8031 chip !! Does anybody in this forum experience such problem? The PRINTF statement we are using is to send out a stream of characters to the RS232 port. It is a SOFTWARE routine, we are not used the built-in UART, could this be the problem? however, I was very confused why the old chip works !!! Thanks in advance, any helps or suggestions are veru appreciated.
The following enhancements that were not present in the original 80c31 may be the cause of your problem: Dual Data Pointers 4 level priority interrupt 6 interrupt sources Full-duplex enhanced UART Framing error detection Low EMI (inhibit ALE ) e.g. if you have a write to the sfr controlling which data pointer is used, that would not have had any effect in the older 8031s. Have fun, Erik
Which chip are you using? Does it have a watchdog timer? Was it disabled by default in the original chip but now enabled? If you have software that works AND if you have not changed it AND if you use the same EPROM or HEX file that worked with the old chip AND if it doesn't work with the new chip... ...then, there is something different with the new chip. Have you checked with Philips to see if there are any differences between these parts? Jon
Here's another idea. Could this be a power-supply problem? Jon
Hi, I had similar problem years ago. My code worked with old chip but kept reseting with new chips. Finally I found I need initialize some internal ram to zero,if I clear these location to zero, the new chip works. I think the problem is that new chip won't clear internal RAM by default when it powers on and old one does that.
"Finally I found I need initialize some internal ram to zero,if I clear these location to zero, the new chip works." This is precisely why it is so important to ensure that all variables are initialised [1] before they are used! "I think the problem is that new chip won't clear internal RAM by default when it powers on and old one does that." Did the datasheet for the old processor actually say that it cleared internal RAM? Usually, the content of RAM is undefined at powerup - that means that it could be absolutely anything, and it does not have to be consistent, or repeatable, or predictable, or anything! It could very well change between batches of chips, or the phase of the moon! You were probably just lucky that it worked with the old chips (the RAM just happened to powerup in a favourable state for you!) [1] By "initialised" here, I just mean "specifically assigned some value" - whether that's done in your startup, or as part of your main code.
Hi, You are absolutely right,we should initialize any variables before use them. In fact, I was extremely lucky, because the old code with init. problem worked well on Intel and Philips chips for years but did not work with Winbond chips at all. Xiao J