|
|
View previous topic :: View next topic |
Author |
Message |
s_mack
Joined: 04 Jun 2009 Posts: 107
|
WDT question... debugging |
Posted: Tue Sep 29, 2009 1:30 pm |
|
|
Crap, I posted this a couple days ago and I was wondering why nobody was answering... now I see my post must not have taken :(
Anyway. I have a WDT issure.
PIC 18F4480
When I set WDT_OFF (first line of main()) then everything works good. Setting it to WDT_ON and my device doesn't work - it appears to "stall". I presume then that this means the watchdog isn't getting reset in time. I do have restart_wdt() in my main() code and it was working before I made some changes to my code. So obviously the changes I made are slowing down the system to the point that the WDT can't be reset fast enough.
So that's my issue... is there a way to "time audit" to figure out what routine(s) is/are taking too long?
If it helps, here's the top of my header file:
Code: | #include <18F4480.h>
#DEVICE HIGH_INTS=TRUE, ADC=8, WRITE_EEPROM=ASYNC
#use delay(clock=40000000)
#fuses HS,NOWDT,WDT128,BROWNOUT,BORV28
//PROTECT,CPB,CPD,NOEBTR
#ZERO_RAM |
Thanks. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Tue Sep 29, 2009 2:12 pm |
|
|
To measure the time required for a block of code, you can use the
MPLAB Simulator's Stopwatch feature. This thread has instructions on
how to use it:
http://www.ccsinfo.com/forum/viewtopic.php?t=38351
You can also set an i/o pin high at the start of a routine and low at the
end, and use an oscilloscope or a logic analyzer to see the pulse length,
and thus find the length of the routine.
On a more global scale, you could output a pulse just after the line that
calls restart_wdt() in your program. Then use a scope or logic analyzer
to see the time between pulses. (Or, just toggle an i/o pin at that line).
This assumes you have only one line that calls restart_wdt(). |
|
|
s_mack
Joined: 04 Jun 2009 Posts: 107
|
|
Posted: Tue Sep 29, 2009 2:16 pm |
|
|
Thanks for the link. I'll check out the simulator. |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|