This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2650:传感器控制器任务仅调用两次、并永久停止

Guru**** 2599655 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/923962/cc2650-sensor-controller-task-calling-only-twice-and-stops-forever

器件型号:CC2650

你好! 我将使用传感器控制器对待机模式下的脉冲进行计数。

但任务仅调用两次、并永久停止、而不是使用 RTC 通道2作为触发器每秒运行一次。

初始化代码:

//启用脉冲计数器、数字输入引脚作为源
pcntEnable (PCNT_INPUT_AUXIO_BASE + AUXIO_I_COUNTER);
//安排第一次执行
fwScheduleTask (1); 

执行代码:

pcntGetValue (output.dcntValue);
fwGenAlertInterrupt ();
fwScheduleTask (1); 

主应用程序代码:

__ROOT 静态 uint16_t COUNTER_value = 0;

void scCtrlReadyCallback (void){
}

uint32_t READ_Geiger_counter (void){
返回 Geigr_counter;
}

void scTaskAlertCallback (void){
//清除警报中断源
scifClearAlertIntSource();

COUNTER_value = scifTaskData.pulseCounterTask.output.dcntValue;

//确认警报事件
scifAckAlertEvents ();
} 

初始化:

//初始化 SCIF 操作系统抽象层
scifOsalInit();
scifOsalRegisterCtrlReadyCallback (scCtrlReadyCallback);
scifOsalTaskAlertCallback (scifStartAlertCallback);
//初始化 SCIF 驱动程序 scifInit(&scifReadyCallback)
;
//启用


RTC_T000N;<scifStart1 rtc = 1;scif_rtc 任务计数器<1;scif_rtc 000n<1;scif_rtc <1 rtc 

我出了什么问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    可能是您的任务未正确初始化。 您能否在 scifStartTasksNbl (1 << SCIF_PULSE_COUNTER_TASK_TASK_ID)之后添加下面的行;

    while (scifWaitOnNbl(1000)!= SCIF_SUCCESS)

    这基本上会在传感器控制器上挂起、直到它成功启动任务。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果在此行之后没有从主程序调用传感器控制器、为什么要等待任务启动?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你说得好、我不知道你没有再打电话。

    您能否尝试一下、看看这是否能解决问题?

    我想尝试并在我的末尾重新创建、但我没有可用的硬件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没问题、明天我会试一下。