单片机/MCU论坛
直播中

邓长生

9年用户 877经验值
擅长:可编程逻辑
私信 关注

capsense scan扫描通道数过多会使MCDWT配置不能立即生效要怎么解决?

大家好
     我在做capsense在deepsleep模式扫描唤醒时发现:当capsense通道数大于等于8时,判断while(CapSense_NOT_BUSY != CapSense_IsBusy());(等待扫描完成),使用MCWDT_SetMatch(CY_MCWDT_COUNTER0,319,93)配置MCWDT后不能立即生效,当通道数小于8或者不执行while(CapSense_NOT_BUSY != CapSense_IsBusy());时可以立即生效,(用LED闪烁看效果,附件是简化扫描过程后的逻辑)。但是while(CapSense_NOT_BUSY != CapSense_IsBusy());这个判断在整个扫描过程中好像是必不可少的,我该怎么改呢?
                           

回帖(1)

刘文娟

2024-2-21 15:51:32
 1: 从代码的整体设计,我推测你是想在M0+上面设计,这一点也基于你之前建的几个问题。
2: 请删除在M4的文件里面写中断入口函数。把中断的入口函数写在M0+的main.c里面,因为你的中断都是M0+触发的。
3: 你LED亮的时间选的是match393,也就是12.31ms,这个时间不太适合做测试。建议选择和灭的时间选用一样的match18000。
5: 你代码里面用了三个counter,需要Enable一下:
Cy_MCWDT_Enable(MCWDT_0_HW, CY_MCWDT_CTR0|CY_MCWDT_CTR1|CY_MCWDT_CTR2,MCWDT_0_TWO_LF_CLK_CYCLES_DELAY);
6:另外,我需要解释的是: 深度睡眠之后第一次扫描,状态位是不是会改为ON,是要根据你debounce的设计的,如果你debounce是3,那么需要连续三次扫描一个sensor是ON的状态,最终才会check到active。
举报

更多回帖

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