|
|
View previous topic :: View next topic |
Author |
Message |
Warren Massey Guest
|
ICD debugger hangs while stepping past delay_ms? |
Posted: Thu Feb 13, 2003 3:27 pm |
|
|
Hi,
I am familiarizing myself with the CCS ICD-U device and have been trying various exercises in the manual that came with it. In exercise #6 (Debugging) it has me enter a program and step through it. The main loop of the program looks like this:
Code: | main()
{
int count = 0;
while(TRUE)
{
show_binary_using_leds( count );
delay_ms( 1000 );
count = count + 1;
}
} |
I have discovered that the debugger has a problem with the "delay_ms(1000);" line if I press the single step button. I can use the "step-over" button without a problem, but the "step" button takes me to the "#use delay(clock=20000000)" line and at that point if I press either the step over or step buttons things stop working. What's going on? Is this a known feature?
Also, is it usual for the 7805 voltage regulator to run quite hot? Mine sure does. Nothing is connected to the PCB except for the ICD-U. The code running (or hanging) is the stuff mentioned above.
___________________________
This message was ported from CCS's old forum
Original Post ID: 11658 |
|
|
Eric Minbiole Guest
|
Re: ICD debugger hangs while stepping past delay_ms? |
Posted: Fri Feb 14, 2003 9:23 am |
|
|
:=I have discovered that the debugger has a problem with the "delay_ms(1000);" line if I press the single step button. I can use the "step-over" button without a problem, but the "step" button takes me to the "#use delay(clock=20000000)" line and at that point if I press either the step over or step buttons things stop working. What's going on? Is this a known feature?
CCS puts most of the delay_xx() code at the #use delay line of the .c file. That's why when you step into the delay routine, it appears to jump to the #use line.
Most likely, the ICD isn't actually stuck... instead it's actually running the delay code. The problem is that, at 20MHz, your 1 second delay requires 5 <I>million</I> instructions. Unless you're really patient, you'll never be able to step through the whole thing. (I don't think that the current Microchip debuggers let you "step out" of a routine.)
You do have a couple of choices: One (which you've already figured out) is to step over the delay code. Another option, if you accidentally step into the delay, is to use the "run to cursor" feature to step to the next line <I>after</I> the delay. Another common approach is to put #infdef DEBUG around the the delays. When you're debugging, the delays won't be included at all.
:=Also, is it usual for the 7805 voltage regulator to run quite hot? Mine sure does.
Not sure what your circuit looks like, but one thing to check is what voltage are you using to supply the 7805? The 7805 "burns off" any excess voltage, so a high input voltage will make it run hotter. If you're using 15V, for example, the regulator has to "burn off" 10 volts. Even if your circuit only draws 100mA, you're still dissipating 1W (a fair amount of heat) from the regulator. Of course, you can always add a heat sink to make it run cooler.
Hope this helps.
___________________________
This message was ported from CCS's old forum
Original Post ID: 11684 |
|
|
Warren Massey Guest
|
Re: ICD debugger hangs while stepping past delay_ms? |
Posted: Fri Feb 14, 2003 6:51 pm |
|
|
:=CCS puts most of the delay_xx() code at the #use delay line of the .c file. That's why when you step into the delay routine, it appears to jump to the #use line.
:=
:=Most likely, the ICD isn't actually stuck... instead it's actually running the delay code. The problem is that, at 20MHz, your 1 second delay requires 5 <I>million</I> instructions. Unless you're really patient, you'll never be able to step through the whole thing. (I don't think that the current Microchip debuggers let you "step out" of a routine.)
I thought something like this might be happening...
:=You do have a couple of choices: One (which you've already figured out) is to step over the delay code. Another option, if you accidentally step into the delay, is to use the "run to cursor" feature to step to the next line <I>after</I> the delay. Another common approach is to put #infdef DEBUG around the the delays. When you're debugging, the delays won't be included at all.
OK, I'll try that. I also asked CCS this same question and their response (so far) was "This was a problem we thought was fixed." Oh well, I know what not to do at least.
:=Not sure what your circuit looks like, but one thing to check is what voltage are you using to supply the 7805? The 7805 "burns off" any excess voltage, so a high input voltage will make it run hotter. If you're using 15V, for example, the regulator has to "burn off" 10 volts. Even if your circuit only draws 100mA, you're still dissipating 1W (a fair amount of heat) from the regulator. Of course, you can always add a heat sink to make it run cooler.
I'm using the wall-wart supply CCS provided just for this hardware. It says it puts out 12VDC but that must be only when it's fully loaded (300mA) 'cause at the 80mA the ICD & associated PC board draw, it's up around 16.5 volts (it's 19+ volts open-circuit). You are right, 11.5v @ 80mA (.92W) is a lot of heat for the regulator to dump. I have added a heatsink and I'm going to see if I can find a better source of input power.
___________________________
This message was ported from CCS's old forum
Original Post ID: 11720 |
|
|
|
|
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
|