Reply by Grzegorz March 4, 20062006-03-04
jcockburn wrote:

> Hi, > > I'm doing a student project and I have made a simple graphic equalizer > using a c6711 DSK. I am trying to write a host application to put a pretty > user interface on the equalizer using RTDX (JTAG, not HSRTDX) to send the > positions of several sliders to the DSK. > > I have successfully written the host program, and a corresponding target > application that reads the values that are written and prints them to > stdout in code composer. This works fine. The problem arises when I try to > add the EQ functionality to the target program. When I do this, the EQ part > works fine, but calls to RTDX_read never return (or using RTDX_readNB, > RTDX_channelBusy is always true). > > The EQ uses interrupt 11 to input and output samples to the codec and it > is my feeling that this interrupt is somehow conflicting with RTDX > interrupts. In fact, I'm almost certain this is the case because > commenting out my modifications to the interrupt vector file fixes the > problem but obviously removes the EQ part. (I'm using the intvecs.asm file > from the RTDX tutorials) > > In CC, you can see in the channel viewer that data is available but no > read requests show up, despite RTDX_channelBusy reporting that it is busy, > and the call to RTDX_readNB returning successfully. Another odd problem is > that CC becomes almost completely unresponsive when a the target is > running and RTDX is enabled. (Possibly indicating communication > timeouts?) > > So, questions... > If an interrupt is executing, and another interrupt occurs, what happens? > Does the later interrupt get ignored, does the original interrupt get > abandoned, or what? I thought they got queued up and executed in priority > order. > Can interrupts interfere with each other? My ISR is written in C, and only > uses C variables. > What exactly does the RTDX (MSGINT) interrupt do? And what does the ISR > that is called do? > Anyone out there able to help me in general with my problem? > > Any help would be most appreciated, > Jamie > > PS I'll even mention you in my report's acknowledgments section!!! > >
I did similar project few years ago. I'm not sure if I had the same problem but it was connected with interrupt. First of all You have to choose use dispatcher option if it is DSP/Bios application. But the most sensitive and problematic thing in my case were hardware interrupts generated by timer (to get the sample of voice). if two hardware interrupts were generated in almost the same time dsk hanged. This problem didn't happen if I used software intterupts. So when timer generated interrupt occured insted of calling my function I posted software interrupt to call this function. My application (digital filtering and few others audio algorithms) was tested also on C6711 DSK and the control panel was developed in Visual C++. Regards Greg
Reply by jcockburn March 4, 20062006-03-04
Hi,

I'm doing a student project and I have made a simple graphic equalizer
using a c6711 DSK. I am trying to write a host application to put a pretty
user interface on the equalizer using RTDX (JTAG, not HSRTDX) to send the
positions of several sliders to the DSK.

I have successfully written the host program, and a corresponding target
application that reads the values that are written and prints them to
stdout in code composer. This works fine. The problem arises when I try to
add the EQ functionality to the target program. When I do this, the EQ part
works fine, but calls to RTDX_read never return (or using RTDX_readNB,
RTDX_channelBusy is always true).

The EQ uses interrupt 11 to input and output samples to the codec and it
is my feeling that this interrupt is somehow conflicting with RTDX
interrupts. In fact, I'm almost certain this is the case because
commenting out my modifications to the interrupt vector file fixes the
problem but obviously removes the EQ part. (I'm using the intvecs.asm file
from the RTDX tutorials)

In CC, you can see in the channel viewer that data is available but no
read requests show up, despite RTDX_channelBusy reporting that it is busy,
and the call to RTDX_readNB returning successfully. Another odd problem is
that CC becomes almost completely unresponsive when a the target is
running and RTDX is enabled. (Possibly indicating communication
timeouts?)

So, questions...
If an interrupt is executing, and another interrupt occurs, what happens?
Does the later interrupt get ignored, does the original interrupt get
abandoned, or what? I thought they got queued up and executed in priority
order.
Can interrupts interfere with each other? My ISR is written in C, and only
uses C variables.
What exactly does the RTDX (MSGINT) interrupt do? And what does the ISR
that is called do?
Anyone out there able to help me in general with my problem?

Any help would be most appreciated,
Jamie

PS I'll even mention you in my report's acknowledgments section!!!