|
|
View previous topic :: View next topic |
Author |
Message |
jeremiah
Joined: 20 Jul 2010 Posts: 1345
|
Using "step over" in MPLAB sim with CCS compiler |
Posted: Fri Jan 21, 2011 1:53 pm |
|
|
So I have run into an interesting problem that I have yet to find any info on, though I am still going through google results.
On some of my programs, when I hit the Step Over button, it runs all the code from that point until the end of the program. I am used to the step over button simply moving to the next line rather than going into a function or something. And indeed the button does function like this until a certain point (usually delay_ms() or printf()).
I was hoping someone with more mplab sim experience might have seen this and can give me a couple of tips.
My ccs compiler is 4.114 and I am using the lastest MPLAB ide. I am just quickly fishing to see if this is a known issue with a work around or possible just me setting up mplab sim incorrectly.
any thoughts?
Thanks!
Code: |
//Include file that comes with the compiler
#include <24FJ64GA004.h>
//16 bit pointers
#device *=16
#device ADC=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOJTAG //JTAG disabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES ICSP1 //ICD uses PGC1/PGD1 pins
#FUSES NOIOL1WAY //Allows multiple reconfigurations of peripheral pins
#FUSES WINDIS //Watch Dog Timer in non-Window mode
#FUSES WDT128 //Watch Dog Timer PreScalar 1:128
#FUSES WPOSTS16 //Watch Dog Timer PostScalar 1:32768
#FUSES NOIESO //Internal External Switch Over mode enabled
#FUSES PR //Pimary oscillaotr enabled
#FUSES NOCKSFSM //Clock Switching is disabled, fail Safe clock monitor is disabled
#FUSES NOOSCIO //OSC2 is clock output
#FUSES HS
#FUSES I2C1SELD
//Pin Selects for remappable pins
#pin_select U1TX = PIN_C1 //C1 //C7
#pin_select U1RX = PIN_B3 //B3 //C6
// #use statements for delays, rs232, and i2c
#use delay(clock=22118400)
#use rs232(UART1,baud=9600,parity=N,bits=8,DISABLE_INTS)
///////////////////////////////////////////////////////////////////////////////
// NAME: main()
// DESC: This is the main entry for the program. The PIC is setup and then
// set to sleep.
// IN: NONE -- only globals are used
// OUT: NONE
///////////////////////////////////////////////////////////////////////////////
void main()
{
//This line serves no function other than to remove an annoying warning.
rs232_errors = 0;
//Turn off SPI, ADC, and unneccessary timers
SPI1STAT = 0;
SPI1_EN = 0;
SPI2STAT = 0;
SPI2_EN = 0;
setup_wdt(WDT_OFF);
setup_timer2(TMR_DISABLED);
setup_timer3(TMR_DISABLED);
setup_timer4(TMR_DISABLED);
setup_timer5(TMR_DISABLED);
//setup_adc(ADC_OFF);
setup_vref(VREF_DISABLED);
//ADC
setup_adc_ports(sAN11 | sAN12,VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
//Turn off I2C general call
I2C1_GCEN = 0;
//Turn on SOSC. Must be done in ASM due to timing
#asm
MOV #0x742, W0 //Address of clock control
MOV.B #0x46, W1 //Unlock sequence 1 for lower byte
MOV.B #0x57, W2 //Unlock sequence 2 for lower byte
MOV.B #0x02, W3 //Enable for secondary oscillator
MOV.B W1,[W0]
MOV.B W2,[W0]
MOV.B W3,[W0]
#endasm
output_high(UART_VCC);
delay_ms(50); //breakpoint set here. Using step over jumps to very end
printf("\r\n#######################START#######################\r\n");
//go to sleep
delay_ms(50);
while (TRUE) {sleep();}
}
|
|
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19496
|
|
Posted: Fri Jan 21, 2011 3:07 pm |
|
|
Step over, _executes_ the line, without stopping to display what it is doing in the code inside. If the function is simple, quick, but remember that the emulator runs perhaps 1/1000th the speed of the real chip, so if you step over a delay, for say 1/10th second, expect it to take several seconds. Things like printf, wait to see the required hardware signals (use the UART emulation, in the simulator, if you don't want these to hang). Step over, _does not_ 'skip' code.
Best Wishes |
|
|
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Fri Jan 21, 2011 4:20 pm |
|
|
I can confirm, that step over often doesn't stop at the next instruction for some reason, at least with PIC24 and SIM. I mean to remember, that it also happened with hardware debugging I'm not sure if it's an issue related to the CCS C *.cof file or a general MPLAB issue.
But I ignored the problem up to now and used breakpoints to re-catch the code flow. |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1933 Location: Norman, OK
|
|
Posted: Fri Jan 21, 2011 4:23 pm |
|
|
The problem happens with hardware debugging using the CCS IDE,
ICD-U64/4.114 and the 18F46K22. Just like FVM I also use the breakpoints
to "catch" the code flow. _________________ Google and Forum Search are some of your best tools!!!! |
|
|
miro
Joined: 15 Jan 2011 Posts: 62
|
Re: Using "step over" in MPLAB sim with CCS compil |
Posted: Fri Jan 21, 2011 4:30 pm |
|
|
I am running 4.114 and MPLAB 8.56. When "stepping over" with SIM it steps line by line as expected till the first printf:
...
printf ("\n\r################# THIS IS THE START \r\n\n");
..
and then it runs towards the end of the source _without_ stopping at the next line. It could be stopped with Halt. So it seems to me it is a bug . Miro |
|
|
jeremiah
Joined: 20 Jul 2010 Posts: 1345
|
|
Posted: Wed Jan 26, 2011 11:41 am |
|
|
Well that confirms to me that it is a bug. I don't suppose someone would be willing to fire it up into the most recent CCS compiler but in MPLAB and see if it does the same? I can't upgrade atm due to work policy. I would like to be able to fire up a ticket at microchip to see if they can look into it.
thanks all for the input. |
|
|
|
|
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
|