【问题标题】:watching variable values in Code Composer在 Code Composer 中观察变量值
【发布时间】:2015-02-17 15:55:07
【问题描述】:

我在 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[]?

【问题讨论】:

    标签: c code-composer


    【解决方案1】:

    这三个步骤对我有用:

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

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

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

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

    告诉我它对你有什么作用:)?

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

    【讨论】:

    • @Day_Dreamer 如果你手动破解代码,你能观察变量吗?如果没有,它也不会自动更新其值。
    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多