Hello group, I am using the C6711 DSK with the PCM3003 daughter card. Ever since I changed operating systems (win98--->winXP), my PCM3003 doesn't seem to want to output both a right and left channel in interrupt-driven mode. I have gotten it to work sporadically in polling mode, but this is not my preferred setup. The code (which seemingly couldn't get much simpler) is posted below; note that whichever channel I output to _last_ is the one that actually gets output (in this case, right): ////////////////////////////// float Fs = 16000.0; interrupt void c_int11() //interrupt service routine { output_left_sample(input_left_sample()); //output sample output_right_sample(input_right_sample()); //output sample } void main() { comm_intr(); //init DSK, codec, McBSP while(1); //drop to idle loop } ///////////////////////////// TIA, Strangled Goat |
|
PCM3003 - no stereo output
Started by ●October 13, 2002
Reply by ●October 14, 20022002-10-14
Truth Master- What does changing host OS have to do with interrupts on the C6711 processor? Are you using a Visual Studio program via C DLLs to talk to the C6711 HPI while it's running? Some other host interaction? Otherwise, there's no connection. Something else is the problem. Jeff Brower DSP sw/hw engineer Signalogic Truth Master wrote: > > Hello group, > > I am using the C6711 DSK with the PCM3003 daughter card. Ever since I > changed operating systems (win98--->winXP), my PCM3003 doesn't seem to want > to output both a right and left channel in interrupt-driven mode. I have > gotten it to work sporadically in polling mode, but this is not my preferred > setup. The code (which seemingly couldn't get much simpler) is posted > below; note that whichever channel I output to _last_ is the one that > actually gets output (in this case, right): > > ////////////////////////////// > float Fs = 16000.0; > > interrupt void c_int11() //interrupt service routine > { > output_left_sample(input_left_sample()); //output sample > output_right_sample(input_right_sample()); //output sample > } > > void main() > { > comm_intr(); //init DSK, codec, McBSP > while(1); //drop to idle loop > } > ///////////////////////////// > > TIA, > Strangled Goat |
Reply by ●October 14, 20022002-10-14
Truth Master > I was mistaken into believing that my code snippet was working under > Win98, when in actuality it wasn't. I didn't realize that the > output_sample() function could be used with the PCM3003 (as it can be > with the C6711) to output both the right and left channels > simultaneously; my convoluted thinking was stuck on using both the > left and right output functions individually...I'm still not sure why > this doesn't work the way I envisioned it...some digging into the > function prototypes may answer this puzzle. In any case, I am up and > running using the single output_sample(input_sample()). If you're saying that output_sample() and input_sample() work on a 2-integer array, and thus can be used to do stereo I/O, then it may be that the individual sample routines are not working due to timing-related problems. Since the PCM3003 is using a McBSP (serial port) interface, then the typical method is to handle different channels with 2 successive interrupts. What might be happening is that the second write to the serial port is bouncing off, because the port is not ready to accept 2 words, or the 2nd word is mis-interpreted as a control word, etc. Another common -- and faster -- method for interrupt-driven, multichannel McBSP interfaces is to treat the data as buffers containing interleaved channel data, and use EDMA with the McBSP. Jeff Brower DSP sw/hw engineer Signalogic > --- In c6x@y..., Jeff Brower <jbrower@s...> wrote: > > Truth Master- > > > > What does changing host OS have to do with interrupts on the C6711 > processor? > > > > Are you using a Visual Studio program via C DLLs to talk to the > C6711 HPI while it's > > running? Some other host interaction? Otherwise, there's no > connection. Something > > else is the problem. > > > > Jeff Brower > > DSP sw/hw engineer > > Signalogic > > > > > > Truth Master wrote: > > > > > > Hello group, > > > > > > I am using the C6711 DSK with the PCM3003 daughter card. Ever > since I > > > changed operating systems (win98--->winXP), my PCM3003 doesn't > seem to want > > > to output both a right and left channel in interrupt-driven > mode. I have > > > gotten it to work sporadically in polling mode, but this is not > my preferred > > > setup. The code (which seemingly couldn't get much simpler) is > posted > > > below; note that whichever channel I output to _last_ is the one > that > > > actually gets output (in this case, right): > > > > > > ////////////////////////////// > > > float Fs = 16000.0; > > > > > > interrupt void c_int11() //interrupt service routine > > > { > > > output_left_sample(input_left_sample()); //output sample > > > output_right_sample(input_right_sample()); //output sample > > > } > > > > > > void main() > > > { > > > comm_intr(); //init DSK, codec, McBSP > > > while(1); //drop to idle loop > > > } > > > ///////////////////////////// > > > > > > TIA, > > > Strangled Goat |