This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Real time graph in CCS 3.3

Hello!

I'm sure the question I going to ask was asked many times in one form or another, but searching the forum I could not find right answer.

I am using Graph tool of CCS 3.3. I have to plot array of integers, whose length could be from 72 to 1200 in one frame. The data become available every 10 ms. Inserting Graph and its formatting is straightforward. The only thing is that application is halted to upload graph data from CPU to CCS. It breaks real time operation of the application. So I wonder is there any good way to obtain graph data without actually halting the CPU?

I understand, that JTAG emulator throughput is limited (I am using BH XDS560). I don't mind to skip many frames, if I can upload just one without interrupting the CPU.

  • Hello,

    There is something called real-time mode which would allow you to have some target access without halting the processor. This is the functionality you are looking for. But it is not supported on all devices:

    http://processors.wiki.ti.com/index.php/Real-Time_Mode

    Thanks

    ki

  • Hi,

    Thank you very much for suggestion. Real-Time mode is what I completely missed. Using this mode not only I got my graph, but also resolved race condition bug, which did not shown itself in regular debug.

    Pressing "Verified answer" with pleasure.

  • I'm also having an issue with graphing on CCS 3.3.  I have graphed before with CCS 3.3 but it's been a while.  All I get is random data to display in the window.  I can see that varaible in the watch window to display 0 and it matches the raw data I see when I view the location of this variable but the graph continues to show random data.  I can't get any variable to display correctly in the window.  Any help would be great.

     

  • Hello!

    With what you describe is too hard to guess, what is the real trouble with your graph. If I were you I would try to plot some fixed fake array first to make sure I can plot any value. If that works, then proceed with real data debug. Sorry, no more ideas.

  • I did what you suggested.  I defined a global 32-bit signed number and set it to 100.  From the watch window at the bottom, you can see that "reference"  = 100.  On the right side displays the location of "reference" at 0x0000860A and the value at this location is 0x64 = 100.  On the left side you can see the properties on my graph and I did a dual time graph.  For the top graph I manually inserted the actual address of the variable and the bottom plot I entered the name of the variable.  In the grpah you can see what I mean be random data and what's even more confusing is that the two graphs don't match and they are representing the same variable.  You can see that the plot is going from 2E9 to -2E9 which is the max and min of a 32-bit signed number.  I am operating in real time mode.  Am I missing a driver or forgetting one crucial step to graph information?  Like I said before, I have graphed in CCS3 before with the same emulator but it may or may not have occured after i upgraded to windows 7 (can't remember if it was before or after) and had to install CCS3.3 again.  Thanks.

  • Hello!

    I have no CCS 3.3 at my hands at the time, but I guess I see several problems with your setup.

    First, graph tool takes address of buffer to plot. When you defined start address manually as 0x0860A, that is correct. However, when you define second plot to origin at 'reference', graph tool thinks data buffer starts at 0x64, which is content of the variable and obviously is incorrect.If you about to plot single value, you'd write start address as &reference.

    Theses issues are related with the following one. Usually we plot multiple values, so above example does not apply. I suggest you define fake array as

    int data[128];

    Perhaps, you may want some realistic values there. Then you may write start address as 'data' or '&data[0]'.

    Next, your acquisition buffer is set to 128. It means 128 values are read at start address every time plot updates. In your example you have just one single int, but trying to read 128 effectively reading neighbour variables.

    You may want to play wit Display data size as well. If you have it larger, than acquisition size, then just part of the graph is updated, while other is shifted.