CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

PIC24 and V5.048 blues

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
soonc



Joined: 03 Dec 2013
Posts: 215

View user's profile Send private message

PIC24 and V5.048 blues
PostPosted: Sun Aug 09, 2015 4:25 pm     Reply with quote

Compiler: V5.048
Using CCS IDE also 5.048
Chip: 24FJ128GA306.h

Trying to get two breakpoints in my code to work.

I wrote this simple code to illustrate the problem.

In this example in main() I set two break.

The code stops at BP #1 but ignores BP#2

I do Clean and remove all compiled files, recompile, load and then set BP#2 only it still ignores BP#2

Is this a known issue ?
Is it me or the IDE ?

Getting started with PIC24 and CCS is difficult.
The Old IDE (V4.1xx) had nice feature this new IDE is not so nice.
No description about fuses. Yes I know about fuses.txt but the old IDE had a windows that sorted out which ones are valid for the particular chip. I did not see that on the 5.048 IDE !

Code:

#include <24FJ128GA306.h>
#device adc=12
#build (stack=512)
#device ICD=TRUE
#device ICSP=2
#use delay(clock=29491200, crystal=7372800)

#ZERO_RAM

#FUSES NOWDT         //No Watch Dog Timer
#FUSES NOJTAG        //JTAG disabled
#FUSES CKSFSM        //Clock Switching is enabled


//////////////////////////////////////////////////////////////////////
//
void main()
{
 char BreakPointUseOnly;
 
 output_high(PIN_F0);
 
 BreakPointUseOnly=0; // Break point #1
 
 output_low(PIN_B10);

 BreakPointUseOnly=0;  // Break point #2
 
 while(1)
 {
   delay_ms(1000);
   output_toggle(PIN_B5);
 }
 
} // end main()
jeremiah



Joined: 20 Jul 2010
Posts: 1349

View user's profile Send private message

PostPosted: Sun Aug 09, 2015 5:11 pm     Reply with quote

the IDE still shows the configuration bits/fuses with descriptions. It should be in one of the ribbons. I want to say it is the View ribbon (I don't have the IDE in front of me). Look for the Configuration Bits button on the leftish side (smaller button on the ribbon).

I don't generally use the debugger, so I can't help there.
soonc



Joined: 03 Dec 2013
Posts: 215

View user's profile Send private message

Yes there it is
PostPosted: Sun Aug 09, 2015 5:51 pm     Reply with quote

jeremiah wrote:
the IDE still shows the configuration bits/fuses with descriptions. It should be in one of the ribbons. I want to say it is the View ribbon (I don't have the IDE in front of me). Look for the Configuration Bits button on the leftish side (smaller button on the ribbon).

I don't generally use the debugger, so I can't help there.


Thanks I don't use the Ribbon, I did enable it and found the Config Bits screen. I was looking for the "Valid Fuses" that the old IDE used to call Config Bits. !

So that helps a lot Thanks, but I still can't set a second break point !
Ttelmah



Joined: 11 Mar 2010
Posts: 19513

View user's profile Send private message

PostPosted: Mon Aug 10, 2015 12:55 am     Reply with quote

Try setting 'BreakPointUseOnly' to 1 the second time.

I'd suspect the line is being optimised away. The compiler knows the variable has already been set to 0, so removes the second line.... So there is no code there to actually break at.
soonc



Joined: 03 Dec 2013
Posts: 215

View user's profile Send private message

PostPosted: Mon Aug 10, 2015 7:09 am     Reply with quote

Ttelmah wrote:
Try setting 'BreakPointUseOnly' to 1 the second time.

I'd suspect the line is being optimised away. The compiler knows the variable has already been set to 0, so removes the second line.... So there is no code there to actually break at.

Good thought but no luck there:
The .lst file shows code for each location.

I added a third breakpoint and it still only stops on the first.

Code:

....................  char BreakPointUseOnly;
....................   
....................  output_high(PIN_F0); 
00238:  BCLR.B  2E8.0
0023A:  BSET.B  2EC.0
....................   
....................  BreakPointUseOnly=0; // Break point #1
0023C:  CLR.B   85C
.................... 
....................  delay_ms(1000);
0023E:  MOV     #3E8,W0
00240:  CALL    200
....................   
....................  output_low(PIN_B10);
00244:  BCLR.B  2C9.2
00246:  BCLR.B  2CD.2
.................... 
....................  BreakPointUseOnly++;  // Break point #2
00248:  INC.B   085C
.................... 
....................  delay_ms(1000);
0024A:  MOV     #3E8,W0
0024C:  CALL    200
.................... 
....................  BreakPointUseOnly++; // Break point #3
00250:  INC.B   085C
.................... 
....................  delay_ms(1000);
00252:  MOV     #3E8,W0
00254:  CALL    200
soonc



Joined: 03 Dec 2013
Posts: 215

View user's profile Send private message

Update and work around
PostPosted: Wed Aug 12, 2015 8:38 pm     Reply with quote

Setting more than one break point (BP) causes problems.

When using the IDE in debug mode you need to Load the code and "Clear All BP's" on the Break Point menu.
then set ONE BP.

If you need to set more than one BP:
Set the first BP when the code stops.
CLEAR that BP, and then set the second BP.

Essentially the trick is to only use one BP and after loading changed code CLEAR all BP's and then set the first BP.

I have a service request in with CCS hopefully a fix will happen soon to allow more than one BP.
dish_moose



Joined: 06 Oct 2006
Posts: 13

View user's profile Send private message

Re: Update and work around
PostPosted: Wed Dec 02, 2015 5:01 pm     Reply with quote

soonc wrote:
Setting more than one break point (BP) causes problems.

When using the IDE in debug mode you need to Load the code and "Clear All BP's" on the Break Point menu.
then set ONE BP.

If you need to set more than one BP:
Set the first BP when the code stops.
CLEAR that BP, and then set the second BP.

Essentially the trick is to only use one BP and after loading changed code CLEAR all BP's and then set the first BP.

I have a service request in with CCS hopefully a fix will happen soon to allow more than one BP.


Has this been fixed _ I'm going crazy trying to debug code with only being able to set 1 Break at a time.
-Bruce
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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