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.

[参考译文] CC1352R:具有两个事件触发器的传感器控制器任务

Guru**** 2551110 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1069057/cc1352r-sensor-controller-task-with-two-event-triggers

部件号:CC1352R

我有一项 I2C 任务来读取加速计数据(加速度,陀螺仪,计量仪等)。 我尝试每10毫秒读取一次加速计和陀螺仪,而每1秒只查询一次计量器。 所以我分配了两个这样的活动:

我将其初始化如下:

我用相同的数字重置每个事件处理程序中的触发器。

事件处理程序 A

事件处理程序 B

但是,两个事件处理程序每次运行间隔~1000 ms。 如果我将触发器1更改为  evhSetupTimer1Trigger (1,10,2),则两个事件处理程序始终以~10ms 的间隔运行。 即使我尝试在事件处理程序中将触发器1更改为1000毫秒。 如果我完全从任务中删除了事件 B,则事件句柄 A 根本不会运行。 这是为什么? 是否无法在同一任务中运行两个事件触发器? 我是否误解了如何使用计时器?

注意:我在另一个利用触发器0的任务上使用计时器0,但这是一个完全不同的任务,我不希望它影响此任务。

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

    您可以执行以下操作:

    在执行代码中运行计量器代码,并将其设置为每1000毫秒运行一次

    加速计和陀螺仪代码可以在倍功放器 A 代码中运行:

    //-----------------------------------------------
    // Initialization Code
    //-----------------------------------------------
    evhSetupTimer1Trigger(0, 10, 2) ;
    
    // Schedule the first execution
    fwScheduleTask(1);
    //-----------------------------------------------
    
    
    
    //-----------------------------------------------
    // Execution Code
    //-----------------------------------------------
    // Pedometer Code
    
    // Schedule the next execution
    fwScheduleTask(1);
    //-----------------------------------------------
    
    
    
    //-----------------------------------------------
    // Event Handler A Code
    //-----------------------------------------------
    // Accelerometer and gyroscope code
    
    evhSetupTimer1Trigger(0, 10, 2) ;
    //-----------------------------------------------
    

    在应用中:

    // Enable RTC ticks, with 1 Hz tick interval
    scifStartRtcTicksNow(0x00010000 / 1);

    西里

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

    该解决方案似乎按预期工作。 但是,我对 这个问题仍然很好奇:

    1. 是否无法在同一任务中运行两个事件触发器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不能对两个事件使用相同的计时器。

    evhSetupTimer1Trigger(0, 10, 2);
    evhSetupTimer1Trigger(1, 1000, 2);

    第二个 evhSetupTimer1Trigger 将只覆盖第一个。

    西里

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

    谢谢你。