[freertos - Open Discussion and Support] Run Time Stats failure in 7.0.2

47 views
Skip to first unread message

SourceForge.net

unread,
Nov 21, 2011, 11:56:00 AM11/21/11
to SourceForge.net

Read and respond to this message at:
https://sourceforge.net/projects/freertos/forums/forum/382005/topic/4831360
By: ksoldavin

I am currently running version 7.0.2 on a dsPIC33. We recently upgraded from
version 5.3.1 and aside from slightly more RAM and Flash usage everything seems
OK. We have recently found that when we attempt to get the real time stats on
the tasks we are getting strange results. When we request the stats the first
time, everything seems to work fine. All subsequent requests for the stats returns
0% or <1% CPU usage for all tasks. This code worked perfectly under 5.3.1.

Any suggestions on where to look for the problem?

Thank you
Keith


_____________________________________________________________________________________
You are receiving this email because you elected to monitor this topic or entire forum.
To stop monitoring this topic visit:
https://sourceforge.net/projects/freertos/forums/forum/382005/topic/4831360/unmonitor
To stop monitoring this forum visit:
https://sourceforge.net/projects/freertos/forums/forum/382005/unmonitor

SourceForge.net

unread,
Nov 21, 2011, 12:02:29 PM11/21/11
to SourceForge.net
By: edwards3

What is the run time stats code? Can you post it?

SourceForge.net

unread,
Nov 21, 2011, 12:25:54 PM11/21/11
to SourceForge.net
By: ksoldavin

To start with, I have configGENERATE_RUN_TIME_STATS set to 1 in freeRTOSConfig.h.

Here is the code for setting up the timer, reading the timer, and the timer
interrupt. The code that calculates the stats is in the FreeRTOS code and was
not modified.

[code]void vConfigureTimerForRunTimeStats( void )
{
const unsigned long ulCompareMatch = ( configCPU_CLOCK_HZ / 8 ) / configTICK_RATE_HZ
/ 10;

runTimeStatsTicker = 0;

T4CON = 0;
TMR4 = 0;

PR4 = ( unsigned portSHORT ) ulCompareMatch;

/* Setup timer 1 interrupt priority. */
IPC6bits.T4IP = configKERNEL_INTERRUPT_PRIORITY;

/* Clear the interrupt as a starting condition. */
IFS1bits.T4IF = 0;

/* Enable the interrupt. */
IEC1bits.T4IE = 1;

/* Setup the prescale value. */
T4CONbits.TCKPS0 = 1;
T4CONbits.TCKPS1 = 0;

/* Start the timer. */
T4CONbits.TON = 1;

} // vConfigureTimerForRunTimeStats



// ulGetTimerForRunTimeStats
unsigned long ulGetTimerForRunTimeStats( void )
{
return( runTimeStatsTicker );
} // ulGetTimerForRunTimeStats


// ulGetTimerForRunTimeStats
void __attribute__((__interrupt__, auto_psv)) _T4Interrupt( void )
{
/* Clear the timer interrupt. */
IFS1bits.T4IF = 0;

runTimeStatsTicker++;

} // _T4Interrupt[/code]

SourceForge.net

unread,
Nov 21, 2011, 4:35:28 PM11/21/11
to SourceForge.net
By: edwards3

Looks ok, I think. Have you checked that _T4Interrupt is actually executing
at the expected frequency?

SourceForge.net

unread,
Nov 22, 2011, 7:29:27 AM11/22/11
to SourceForge.net
By: ksoldavin

Yes, That was one of the first things I checked. The interrupt is being triggered
and the runTimeStatsTicker variable is being incremented.

SourceForge.net

unread,
Nov 28, 2011, 11:30:00 AM11/28/11
to SourceForge.net

Read and respond to this message at:
https://sourceforge.net/projects/freertos/forums/forum/382005/topic/4831360
By: ksoldavin

Anyone else have any suggestions? I have hit a wall.

Reply all
Reply to author
Forward
0 new messages