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!!!
RTDX Interupt Problem (Probably)
Started by ●March 4, 2006
Reply by ●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