Sign in

username:

password:



Not a member?

Search c6x



Search tips

Subscribe to c6x



c6x by Keywords

AD535 | BIOS | Booting | Bootloader | C621 | C6211 | C6415 | C671 | C6711 | C6711DSK | C6713 | CCS | Chassaing | COFF | DAT | DM64 | DM642 | DMA | DSK671 | DSK6711 | EDM | EDMA | EMIF | Emulator | EVM | EVM620 | FFT | FIR | GPIO | Halting | HPI | HWI | IDK | JTAG | LDB | LDH | LDW | Linker | LMS | LOG_printf | Matlab | McBSP | MEM_alloc | MIPS | PCI | PCM3003 | Pipeline | Profiling | QDM | Reset | ROM | RTDX | Sampling | SDRAM | Stack | TEB | THS1206 | TMS320C621 | TMS320C6416 | TMS320C6711 | TMS320C6713 | UART | Vector Table | XBUS | XDS560


Discussion Groups

See Also

Embedded SystemsFPGAElectronics

Discussion Groups | TMS320C6x | PCM3003 - no stereo output

Technical discussions about the TI C6000 DSPs (including the c62x, c64x and c67x DSPs).

  

Post a new Thread

PCM3003 - no stereo output - Truth Master - Oct 13 22:56:00 2002

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



______________________________
Start your Android Ice Cream Sandwich development on TI's AM35x Sitara ARM Cortex-A8 processor today.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )

Re: PCM3003 - no stereo output - Jeff Brower - Oct 14 2:23:00 2002

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



______________________________
Start your Android Ice Cream Sandwich development on TI's AM35x Sitara ARM Cortex-A8 processor today.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )

Re: PCM3003 - no stereo output - Jeff Brower - Oct 14 14:15:00 2002

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



______________________________
Start your Android Ice Cream Sandwich development on TI's AM35x Sitara ARM Cortex-A8 processor today.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )