gpt4 book ai didi

c - 在 Code Composer 中观察变量值

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:50 28 4
gpt4 key购买 nike

我在 Code Composer Studio 版本:6.0.1.00040 中工作与卡 LCDK C6748,但我认为这是一个更普遍的问题,通常与 CCS 有关。我正在尝试实现 LMS 来消除声学回声,这是我的 .c 文件的骨架:

void waitForInterrupt()
{
while (flag==0) {}

flag=0; // reach this line only when flag == 1
}

interrupt void interrupt4(void)
{
// Inputs
inputRight_micSignal = (float)input_right_sample();

// Outputs
outputLeft_referenceSignal= whiteNoiseSample;
codec_data.channel[RIGHT]= (uint16_t)outputRight_cleanedSound;
codec_data.channel[LEFT]= (uint16_t)outputLeft_referenceSignal;
output_sample(codec_data.uint);

flag = 1;
}

void main()
{
// variables decelerations
int i;
float filter_output;

// initialising filter coefficients
for (i=0 ; i<ADAPTIVE_FILT_SIZE ; i++) // initialise weights and delay line
{
w[i] = 0.0;
x[i] = 0.0;
}

// initialising the interrupt routine
L138_initialise_intr(FS_8000_HZ,ADC_GAIN_0DB,DAC_ATTEN_0DB,LCDK_MIC_INPUT);

while(1) // adaptive filtering routine
{
waitForInterrupt();

whiteNoiseSample = getPrnFiltered();

for (i = ADAPTIVE_FILT_SIZE-1; i > 0; i--) // update delay line - TDL:merge later with w loop (still make sure no magic NaN's appear)
{
x[i] = x[i-1];
}
x[0] = outputLeft_referenceSignal; // input to adaptive filter

filter_output = 0; //reseting filter output
// compute adaptive filter output
for (i = 0; i < ADAPTIVE_FILT_SIZE; i++)
filter_output += (w[i]*x[i]);

outputRight_cleanedSound = inputRight_micSignal - filter_output; // compute error

for (i = ADAPTIVE_FILT_SIZE-1; i >= 0; i--) // update weights and delay line
{
w[i] = w[i] + beta*outputRight_cleanedSound*x[i]; // w[i]+=beta*"error"*"reference"
}

出于某种原因,当我将数组 x[]w[] 放入“观察表”时我暂停了程序的运行(为了在一段时间后检查 w[] 系数,我看到它充满了 NaN - 而 x[] 包含“常规”值。当我在计算 w[] 的行内放置断点时:

            w[i] = w[i] + beta*outputRight_cleanedSound*x[i]; // w[i]+=beta*"error"*"reference"

我看到流向那里。NaN 的原因可能是什么?有没有办法在“观察表”中观察 w[]?

最佳答案

这三个步骤对我有用:

1) 首先您需要确保变量是全局可用的(例如,它们没有分配在堆栈上)。

2) 在尝试读取变量之前,您需要暂停处理器。 (在调试 View 中:工具 -> 调试器选项 -> 自动运行和启动选项)。

3) 在监 window 口中启用“在任何调试器访问之前暂停目标”并单击“变量”窗口中的“自动更新”图标。

我已经上传了一张屏幕截图,在您需要触摸的内容周围带有红色框。看看这是否对您有帮助 :) 否则请查看 TI 的 Engineer2Engineer 论坛 (E2E)。根据我的经验,TI 人员会很快回答,我从他们那里得到了非常称职的帮助。

告诉我它是如何为你工作的:)?

FWIW 我正在使用 Code Composer Studio v.5.5.0.00077。

alt text

关于c - 在 Code Composer 中观察变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28565521/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com