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.

[参考译文] MSP430FR2676:每次在 CapTIvate 扫描之后触发 CPU 进程

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/914712/msp430fr2676-triggering-a-cpu-process-every-after-captivate-scan

器件型号:MSP430FR2676

您好!

我的客户希望在 CapTIvate 转换之后的每一次都实施一个 CPU 服务。
例如、他们希望具有 ISR、函数返回或回调
在扫描8按钮传感器之后。

请告知您是否可能、如果可能、
您能否推荐该机制或 API?
我们也非常感谢您提供示例代码。


只要我发现"工作模式"与问题看起来一样。
<software-dl.ti.com/.../ch_technology.html

然后,是否有材料或示例代码尝试“工作模式”?

我找到了一个中断矢量 CAPT_IV_END_OF_conversion 和一个标志 g_bEndOfConversionFlag、
但是从下面的链接中、我不确定触发器是否可用于用户代码。
software-dl.ti.com/.../ch_library.html

我还找到了 CAPT_IV_conversion 计数器和 g_BConvCounterFlag、但我不确定它是否在每次转换后激活。
EVSW 中的"唤醒间隔"参数未显示"1"。 它从16~512 μ s 样本中进行选择。

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

    Hallo、

    感谢您发帖。

    我有一个问题可以更好地理解您的请求。

    在具有4个按钮的应用中、您希望持续扫描按钮、如果检测到触控、

    以唤醒 FR2676并使 LED 闪烁。

    我的理解是否正确?

    谢谢

    此致

    Kostas

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


    Kostas、

    感谢您的确认。

    无论触摸检测结果或计数值如何、都需要 CapTIvate 硬件来唤醒 CPU。
    按钮数量实际上大于8个。

    电极类型是相互的。

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

    Hallo、

    您的意思是、当处于未检测的扫描模式时、可能还有其他源也会唤醒 CPU、或出于其他目的定期唤醒?

    此致

    Kostas

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

    Kostas、

    我们希望定期唤醒。

    我们希望 CPU 在 CapTIvate 扫描完成后立即唤醒、然后
    在下一次扫描之前进行一些工作。

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

    Hallo Hideaki、

    由于 CapTIvate 的设计方式、这可以实现。

    我们可以使用回调函数来实现应用程序代码。

    每次扫描传感器时都会自动调用回调函数。  这样、每次扫描后您都会获得触摸结果、您还可以添加要在返回睡眠状态之前执行的其他应用程序代码。

    请查看 技术指南(软件部分)的回调部分。

    我创建了一个示例、在该示例中、每次调用回调时、都会执行与触控状态相关的任务(例如 LED2)和其他应用任务(例如 LED1闪存)。 执行回调后,CPU 返回到睡眠(Capt_appSleep ()),直到下一个扫描中断。

    为了进行测试、只需在 CapTIvate 设计中心 GUI 中创建单按钮设计、生成源代码、将生成的工程导入 CCS 并对导入的 main.c 代码进行以下修改即可。

     

    #include //通用 MSP430器件包括
    #include "driverlib.h" // MSPWare 驱动程序库
    #include "captate.h" // CapTIvate 触控软件库
    #include "CAPT_App.h" // CapTIvate 应用程序代码
    #include "CAPT_BSP.h" // CapTIvate EVM 板级支持包
    
    
    //每次扫描后,LED1将闪烁。 如果检测到触控、LED2开启
    
    
    //添加了回调函
    数 void my_BTN_Callback (TSENSOR* pSensor)
    {
    if (((pSensor->bSensorTouch = true)&&(pSensor->bSensorPrevTouch = false))
    {
    LED2_ON;
    }
    否则(((pSensor->bSensorTouch == false)&&(pSensor->bSensorPrevTouch == true))
    {
    LED2_OFF;
    }
    //每次调用回调时闪烁
    LED1_ON;
    _DELAY_CYCLES (50000);
    LED1_OFF;
    }
    
    
    void main (void)
    {
    //
    初始化 MCU
    // bsp_configureMCU ()设置器件 IO 和计时
    //设置全局中断使能以允许外设
    //唤醒 MCU。
    //
    WDTCTL = WDTPW | WDTHOLD;
    bsp_configureMCU ();
    __bis_SR_register (GIE);
    
    //
    启动 CapTIvate 应用
    //
    CAPT_AppStart ();
    
    //
    后台循环
    //
    while (1)
    {
    //
    运行 CapTIvate 应用程序处理程序。
    //在应用程序处理程序运行时设置 LED1,
    //如果在
    任何传感器上检测到接近,则设置 LED2。
    //
    
    //将回调函数“my_button_callback”注册到传感器 BTN00。
    MAP_CAPT_registerCallback (&BTN00、&my_BTN_Callback); //已添加 
    
    CAPT_appHandler(); //添加
    
    了/*删除此部分
    LED1_ON;
    if (CAPT_appHandler ()=true)
    LED2_ON;
    否则
    为 LED2_OFF;
    LED1_OFF;
    */
    //
    //////这是一个添加到任何
    //后台应用程序代码的好地方。
    //
    __no_operation ();
    
    //
    后台循环迭代结束
    //如果没有剩余操作则进入睡眠
    //
    CAPT_appSleep ();
    
    }//结束后台循环
    }//结束 main ()
    

    请告诉我您是否在寻找答案、并帮助回答问题。

    此致

    Kostas