单片机/MCU论坛
直播中

贾桂林

7年用户 1526经验值
私信 关注

关于CSD Capsense ISR的几个疑问求解

关于CSD Capsense的ISR我这边有几点困惑,麻烦给解释一下,谢谢。
我看了Cpasense组件的Datasheet,关于 Interrupt  的描述比较少,当所有按键扫描完成后会触发中断;
1、触发Capsense中断后,测量数据复制到定义的数据结构中不是在中断函数里执行的,是通过调用CapSense_ProcessAllWidgets()函数去处理的吧,还是有其他的函数;
2、CSD Capsense 在扫描过程中是需要CPU参与的吧,这主要体现哪些方面需要占用CPU的资源?
3、如果CSD占用CPU的资源,由于按键扫描时间太长,会导致其他任务得不到及时处理,采用非阻塞的方式(即判断CapSense_IsBusy() == CapSense_NOT_BUSY)也是无法解决的吧。
4、目前竞品遇到了第3点的问题,我们有没有好的解决办法。

回帖(2)

于惠

2024-2-1 13:58:21
1: 是的,时间只是算了硬件的扫描时间,没有计算软件的执行时间。
2:你可以把需要执行的任务的中断优先级调高,这样的话,就会先执行另外的任务,而不是执行CSD中断。CSD是不需要block住直到扫描完毕,同时可以执行别的任务。
3:这里需要详细的了解一下,目前在别的产品上面遇到的具体问题的详细信息。以及,客户是一个什么应用,需要达到什么效果,综合分析,我们是否可以达到要求。
4:PS0C4100S Max是有两种方式,一个是INT driven,这个就和我们之前的方式是一样的,另外一个是CS-DMA,这种方式就是扫描好了才触发中断,但是还是要CPU响应中断的。
举报

陈杰

2024-2-1 17:35:00
1、触发Capsense中断后,测量数据确实不是在中断函数里执行的,而是通过调用CapSense_ProcessAllWidgets()函数进行处理的。除此之外,还可以通过其他相关函数获取测量数据,例如CapSense_GetCentroidPos()函数用于获取探电极的位置信息。

2、是的,CSD Capsense在扫描过程中需要CPU参与。CPU会执行CSD Capsense的工作周期,包括控制引脚的电平切换,电容值的充放电等。此外,CPU还需要处理CSD Capsense的中断请求和测量数据的处理。

3、CSD Capsense占用CPU的资源,确实可能导致其他任务得不到及时处理。为了避免这种情况,可以采用非阻塞的方式进行按键扫描。通过设置CSD Capsense的中断级别,使得其优先级较低,从而确保其他任务能够及时处理。此外,还可以采用定时器中断来配合按键扫描,以确保按键扫描不会占用太长时间。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分