Reply by Fran MacCarthy●January 28, 20042004-01-28
Cool, thanks very much John.
john@nospam.demon.co.uk (John McCabe) wrote in message news:<4017c200.18295737@news.btclick.com>...
> On 28 Jan 2004 03:35:50 -0800, aine_canby@yahoo.com (?ine Canby)
> wrote:
>
> >Thats the problem, thanks. The thing is though, in my DSP/Bios config,
> >I have set the Target Board Name to C6711 and the CSL to 6711. I'm
> >presuming that the compiler thinks that I'm working on a C6211. What
> >else might cause this?
>
> Select "Project" => "Build Options". Under the "Compiler" tab, what
> have you got set for "Target Version" under "Basic"?
>
> Also in the "Preprocessor" section, have you defined
> CHIP_6711;BOARD_6711DSK in the "Define Symbols (-d)" option?
>
>
> Best Regards
> John McCabe
>
> To reply by email replace 'nospam' with 'assen'
Reply by John McCabe●January 28, 20042004-01-28
On 28 Jan 2004 03:35:50 -0800, aine_canby@yahoo.com (?ine Canby)
wrote:
>Thats the problem, thanks. The thing is though, in my DSP/Bios config,
>I have set the Target Board Name to C6711 and the CSL to 6711. I'm
>presuming that the compiler thinks that I'm working on a C6211. What
>else might cause this?
Select "Project" => "Build Options". Under the "Compiler" tab, what
have you got set for "Target Version" under "Basic"?
Also in the "Preprocessor" section, have you defined
CHIP_6711;BOARD_6711DSK in the "Define Symbols (-d)" option?
Best Regards
John McCabe
To reply by email replace 'nospam' with 'assen'
Reply by ?ine Canby●January 28, 20042004-01-28
Thats the problem, thanks. The thing is though, in my DSP/Bios config,
I have set the Target Board Name to C6711 and the CSL to 6711. I'm
presuming that the compiler thinks that I'm working on a C6211. What
else might cause this?
Thanks.
john@nospam.demon.co.uk (John McCabe) wrote in message news:<4016a43b.31008077@news.btclick.com>...
> On 26 Jan 2004 09:53:57 -0800, rockall_rebel@yahoo.com (Fran
> MacCarthy) wrote:
>
> >With this code I get a load of about 70%, but when I change my
> >declaration to -
> >
> >float sig[882];
> >
> >and change nothing else, the load drops to 15% or so. Why is this?
>
> What is the result of evaluation sizef (FLoat). The code in std.h:
>
> #if defined(_80_) || defined(_SUN_) || defined(_67_)
> typedef float Float;
> #else
> typedef double Float;
> #endif
>
> may be something to do with it if you haven't got the flags set
> properly in the DSP/BIOS to say that it is a C67x Processor.
>
>
> Best Regards
> John McCabe
>
> To reply by email replace 'nospam' with 'assen'
Reply by John McCabe●January 27, 20042004-01-27
On 26 Jan 2004 09:53:57 -0800, rockall_rebel@yahoo.com (Fran
MacCarthy) wrote:
>With this code I get a load of about 70%, but when I change my
>declaration to -
>
>float sig[882];
>
>and change nothing else, the load drops to 15% or so. Why is this?
What is the result of evaluation sizef (FLoat). The code in std.h:
#if defined(_80_) || defined(_SUN_) || defined(_67_)
typedef float Float;
#else
typedef double Float;
#endif
may be something to do with it if you haven't got the flags set
properly in the DSP/BIOS to say that it is a C67x Processor.
Best Regards
John McCabe
To reply by email replace 'nospam' with 'assen'
Reply by Fran MacCarthy●January 27, 20042004-01-27
Sorry, I copied that array wrong - it is infact Float sig[882]; Late
night... Hers my code in more detail -
#pragma DATA_SECTION(hundred, "SIN_BUFFER")
float sin[882]; // changing this to Float changes the CPU load
dramatically
Void main()
{
Int i;
for(i=0;i<882;i++)
sin[i] = 0.25*cos(w(700.0)*i/(float)(SR));
McBSP_Init();
EDMA_Init();
return;
}
Void AudioSWI(PIP_Obj *in, PIP_Obj *out)
{
Uns *src, *dst;
Uns size;
Uns f1,f2; //each channel in floating point form
Uns size;
Int j=0;
size = getBuf(in, &src); // size = 128
allocBuf(out, &dst);
for (i = 0; i < size/2; i++)
{
if(j==882)
j=0;
f1 = sin[j]; // set channel 1 sample
// channel 1 and 2 stored as 32-bit
FloatToUns(*(dst+i),f1,f2);
}
putBuf(out, size);
freeBuf(in);
}
me <secad@netspace.net.au> wrote in message news:<bv467o$2pr5$1@otis.netspace.net.au>...
> <snips>
> > Float sig[100];
> >
> > for(i=0;i<882;i++)
> > sig[i] = cos(2*PI*100*i/(Float)(SR));
>
> (A)
> The line
> Float sig[100];
> reserves space for 100 f.p. numbers.
>
> By using a loop counter i which exceeds the maximum allowable array
> index value of 99 (i.e. 100 - 1), you are writing to memory areas
> beyond the allocated array space. You are trashing other variables
> stack. This can result in almost any behaviour/crash symptoms from the
> system. Recommmend you allocate 882 items (same value used as maximum
> loop count).
>
> (B)
> I am unfamiliar with TI DSP's, so I do not know what the following does:
> ��������McBSP_Init();
> ��������EDMA_Init();
> so I assume it is a legitimate way to send data to the DAC, but I don't
> see any parameters being passed, (like array base address & itemcount)
> which I would have expected.
>
> (C)
> Could you clarify what you mean by "load of xx%"? If this refers to
> some sort of CPU idle loop indication, changes to the declared array
> size will result in different kinds of crash. The CPU is doing a BTN
> (Branch to Telephone Number).
>
> Hope this helps
> Jim Adamthwaite
Reply by John McCabe●January 27, 20042004-01-27
On 26 Jan 2004 09:53:57 -0800, rockall_rebel@yahoo.com (Fran
MacCarthy) wrote:
Other people have answered (at least partly) your other questions,
although I would repeat that there are some fundamental flaws there!
>I plan to write a PC application which allows the user to specify the
>frequency they wish to output. To do this I was going to create a
>memory segment of size 882, at base 0x20. I have the DSP set for 3 way
>cache. The PC would then write in the samples to this buffer for
>outputting. The available frequencies would be multiples of 100Hz. Is
>this the best approach?
It's one approach, and it might work if you use RTDX. If you're
looking to use the HPI you'll proably have difficulty getting it to
work; the HPI is notoriously flaky on the C6711DSK. Have a google for
some older threads on C6711 DSK HPI problems.
Best Regards
John McCabe
To reply by email replace 'nospam' with 'assen'
(A)
The line
Float sig[100];
reserves space for 100 f.p. numbers.
By using a loop counter i which exceeds the maximum allowable array
index value of 99 (i.e. 100 - 1), you are writing to memory areas
beyond the allocated array space. You are trashing other variables
stack. This can result in almost any behaviour/crash symptoms from the
system. Recommmend you allocate 882 items (same value used as maximum
loop count).
(B)
I am unfamiliar with TI DSP's, so I do not know what the following does:
��������McBSP_Init();
��������EDMA_Init();
so I assume it is a legitimate way to send data to the DAC, but I don't
see any parameters being passed, (like array base address & itemcount)
which I would have expected.
(C)
Could you clarify what you mean by "load of xx%"? If this refers to
some sort of CPU idle loop indication, changes to the declared array
size will result in different kinds of crash. The CPU is doing a BTN
(Branch to Telephone Number).
Hope this helps
Jim Adamthwaite
Reply by Jerry Avins●January 26, 20042004-01-26
Fran MacCarthy wrote:
> Hi all,
>
> I'm new to the C6711DSK and have a question regarding DSP/BIOS data
> types. I'm outputting a 100Hz sin wave from my 88.2kHz DAC. To produce
> this signal, I've filled a buffer of size 882, as follows -
>
> Float sig[100];
...
Please enlighten me. Why (how?) do you send a float to a DAC?
Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
Reply by Fran MacCarthy●January 26, 20042004-01-26
Hi all,
I'm new to the C6711DSK and have a question regarding DSP/BIOS data
types. I'm outputting a 100Hz sin wave from my 88.2kHz DAC. To produce
this signal, I've filled a buffer of size 882, as follows -
Float sig[100];
Void main()
{
Int i;
for(i=0;i<882;i++)
sig[i] = cos(2*PI*100*i/(Float)(SR));
McBSP_Init();
EDMA_Init();
return;
}
With this code I get a load of about 70%, but when I change my
declaration to -
float sig[882];
and change nothing else, the load drops to 15% or so. Why is this?
I've also noticed that if I set the frequency of the output signal to
400Hz, with the same buffer size, my output has a slight distortion.
This glitch appears as if one of the samples is being outputted
incorrectly for every cycle of the signal. Its as if, a value is being
writen to the sig buffer which shouldn't be there. This glitch occurs
if I declare sig as -
float sig[100];
but disappears if I use -
Float sig[100];
If I declare the following -
float sig1[100]; //not used
float sig[100];
the glitch again disappears. When should I use DSP/BIOS data types and
when should I not?
I plan to write a PC application which allows the user to specify the
frequency they wish to output. To do this I was going to create a
memory segment of size 882, at base 0x20. I have the DSP set for 3 way
cache. The PC would then write in the samples to this buffer for
outputting. The available frequencies would be multiples of 100Hz. Is
this the best approach?
Thanks,
Fran.