periodic reset, no source code lines were found

tomirtos wrote on Monday, October 13, 2014:

Hi everyone!

I have narrowed down my problem a little. Maybe now someone can point me into the right direction.

So I am using a dspic33fj128mc802 with mplabX. I made a new project and in that project I just created a task that just adds 1 to a variable.

The problem is that when in debug mode the compiler keeps telling me that
No source code lines were found at current PC 0x29e
No source code lines were found at current PC 0x0

I have used mallocfailedhook function and it doesn’t gets called so its not a stack problem.

In the debugging program memory I can see that at 0x29e the program steps on a reset, and I have no idea why or how I can prevent this. Can please someone suggest a way of getting around this?

0270 TBLRDL.B [W1++], [W2++]
     DEC W3, W3
     BRA Z, 0x28E
     TBLRDL.B [W1--], [W2++]
     DEC W3, W3
     BRA Z, 0x28C
     CP0 W4
     BRA NZ, 0x286
     ADD W1, #0x2, W1
     ADDC TBLPAG
     BRA __memcpypd3_std
     TBLRDH.B [W1], [W2++]
     DEC W3, W3
     BRA NZ, 0x280
     INC W1, W1
     ADD W1, #0x1, W1
     ADDC TBLPAG
     RETURN
     GOTO prvIdleTask
     NOP
     GOTO send_task
     NOP
029c BREAK
029E RESET

the send_task function


void send_task(void *p)
{
    while (1)
    {
    
        A=A+1;     
        vTaskDelay(500);
    }
}

The main function:

int main (void)

{
    

    pll_setup(); // set internal oscillator to 80MHz-->40MIPS FCY=Fosc/2
    


xTaskCreate(send_task, "send_task", 16, NULL, 1, NULL);

vTaskStartScheduler();


return 0;

}

Also is that normal that the heap address is 0 and maximum length is 0 as well?

Dynamic Memory Usage

region                     address                      maximum length  (dec)
------                     -------                      ---------------------
heap                             0                                   0  (0)
stack                       0x1d06                              0x2afa  (11002)

rtel wrote on Monday, October 13, 2014:

I don’t understand the asm output, but you still don’t seem to be setting a proper stack size for your task. In your previous post it was absolutely massive - in fact using up half the RAM on the chip - now it it way too small. Why don’t use use the value 105 as per the examples in the download?

Regards.

davedoors wrote on Monday, October 13, 2014:

Also is that normal that the heap address is 0 and maximum length is 0 as well?

The address depends on the the chip. Does it have RAM at address 0? The size depends on your linker script.

In any case if you are using any of the heap implementations other than heap_3 you don’t need a heap to be defined by the compiler.

tomirtos wrote on Monday, October 13, 2014:

Stack size of 105 is not good either. I have tried a lot of stack sizes to be sure. To be exact all the powers of two. 2-4-8 … 256 512 etc. I also turned watchdog timer off, so that wont cause the resetting either.

I am using heap_1. At address 0x0 theres is a GOTO instruction. and after that there are is the interrupt vector table.

tomirtos wrote on Monday, October 13, 2014:

Is there any more information I should be giving about the problem?

rtel wrote on Monday, October 13, 2014:

If your project is self contained, in that it can be built on any
computer without any absolute path names, then zip it up and send it to
us using the business contact email address on
http://www.freertos.org/contact

Regards.

tomirtos wrote on Monday, October 13, 2014:

Thank you for the offer. I’ve compressed it and sent it to the email.

It has no absolute path names.

( Except I am using p33FJ128MC802.h and libpic30.h files which are not in the project directory. )

rtel wrote on Monday, October 13, 2014:

If I run your project as you sent it then I get the same problem you do. However if I define MPLAB_DSPIC_PORT in the project options (as I think was mentioned in the original reply to the first post in your other thread) then I find the first task starts as expected.

Reagrds.

tomirtos wrote on Monday, October 13, 2014:

Thank you for checking out my code. I’ve reread my previous thread and I couldn’t find any mention of MPLAB_DSPIC_PORT.

Nevertheless I am very thankful for your constant help and support!

Probably I’m getting on your nerves, but can you explain it in a little bit more detail how to define MPLAB_DSPIC_PORT in the project options in mplabX?

rtel wrote on Monday, October 13, 2014:

As we use some 18 different compilers I’m afraid we have to limit the
support we provide to FreeRTOS related topics - besides which a question
about using MPLAB X is best posted Microchip’s forum which is dedicated
to MPLAB X as that is where other users with the same question will look.

Before posting there however I would suggest looking up how to set
compiler and preprocessor options in the MPLAB X manual. As the
compiler is basically GCC you could even add the definition using the
GCC command line options - but that would still require looking up how
to set your project options.

Finally entering “MPLAB X Preprocessor Macro” into Google will probably
tell you the answer too.

Regards.

tomirtos wrote on Monday, October 13, 2014:

Thank you. This is only what I need. I didn’t even know how to start searching for this in google.

Thanks a million!!