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.
Hi, I use AT89S52 in a project. I send and receive data through TXD, RXD pins to a GSM module for sending SMS to another mobile equipment. I use watchdog facility and the watchdog counter is reset at every 256 counts. My crystal frequency is 11.0592 MHz. It happens once in a while that the uC doesn't respond and remains as if it hangs. Then it has to be RESET again. I doubt whether it happens while serial data reception and sending happens simultaneously. I wrote the program in C using KEIL IDE. My questions are 1) What are the special precautions to be taken in this case?(sending and receiving simultaneously) 2)why this happens even when the watchdog is active? It will be highly appreciated if anybody can give some guidance.
assuming your watchdog is working and configured to reset the MCU, it is safe to assume that your program ends up in a condition in which it services the watchdog but not performing its main function.
I don't think that is a safe assumption.
That needs to be verified - not assumed!
Also that there is nothing that disables the Watchdog after it has been correctly started!
I thought of that possibility. But still unable to find out any reason.
That needs to be verified - not assumed! I checked with the debugger. How can I verify otherwise?
How, precisely, did you check?
Have you actually verified that, if you deliberately enter an infinite loop, the watchdog does cause a reset?
Remember: the only things we know about you or your project are those that you explicitly state in your posts.
Which possibility?
program ends up in a condition in which it services the watchdog but not performing its main function.
I updated WD in timer ISR. Now I think, it should not be like that.
Can you see why it's not a Good Thing?
Yes
And why you really, really shouldn't be using one in an application like this:
www.8052.com/.../119931
THANK YOU VERY MUCH. Really useful information.
Suppose there is a spike coming to the reset pin and it doesn't have sufficient duration to RESET properly. I think that can also lead to a 'hang' situation like this. Am I right? If that is the case, a good power supply(without glitches) can also solve my problem. Right? Is there any IC with built in RESET and pin compatible with 89S52 ?
If that is the case, a good power supply(without glitches) can also solve my problem. Right? No, there is no such thing as a "power supply(without glitches)" no power supply can handle e.g. a "ground jump". Is there any IC with built in RESET and pin compatible with 89S52 ? I guess with RESET you mean supervisor and I recall no uC with a built in supervisor that is "pin compatible" but e.g. all SILabs chips have built in supervisor
keep hawing if you like but you will end up with a supervisor.
Erik
Check out the AT89C51XXX family for pin compatibility and built in reset supervisors.
There are actually stupid internal watchdogs that are using the same clock source as the processor core. That means that if the processor clock stops, then the watchdog stops.
With an external watchdog, you know that it has independent timing. Even better is of couse an external watchdog that can't just reset the processor, but that can even power-cycle the processor.