Cypress技术论坛
直播中

李明

7年用户 1299经验值
私信 关注
[问答]

Capsense按钮按API无法检测

你好,
IAM使用PSCO4 CYC4014微控制器为我们的项目,
IAM使用下面提到的API来检测手指按压按钮,
1)
2)CAPENSESEIGCHECISWIDGETACtiVE()
下面是函数片段。
UIT32 32 CAPENSESEA校验传感器(UIT32传感器)
{
UIT8小部件;
UTIN 8去抖动;
UITN8 DeBunCEDATABLE;
UTIT8指纹阈值;
UIT8滞后现象;
*准备寻找反跳计数器索引*/
小部件= CAPENSESEIWIDGETIONT [传感器];
指纹阈值=CAPENSESEI指纹阈值[WIDGET ];
滞后=CAPENSESEA滞后[小部件];
DeBung=CAPENSESEBDUNCHUNG [WIDGET ];
DeBunCeCurth=小部件;
* * * *
如果(0U)!= CAPENSESEIGETBITE值(CAPENSESEA感测器掩模,传感器)
{
/*滞后减去*/
如果(CAPENSESEA传感器信号[传感器] &(指阈-滞后))
{
CAPENSESEY SETBIT值(CAPENSESEA传感器,传感器,0U);
********
CabSnSeBeDunCeCurter(DeunCeCurdie=)去抖动;
}
}
其他/ *关闭*
{
/*滞后加*
如果(CAPENSESEA传感器信号[传感器]和GT;=(指阈+滞后))
{
CopsSeNeDeBuncCeCurter [ DeBunCEDe]
*传感器活性,减量反跳计数器*
如果(CopsSeNeDeBuncCeCurter [DeBouCEDe]==0U)
{
CAPSESESEY SETBIT值(CAPENSESEA传感器,传感器,1U);
}
}
其他的
{
********
CabSnSeBeDunCeCurter(DeunCeCurdie=)去抖动;
}
}
返回((UIT32)(0U)!= CAPENSESEIGETBIT值(CAPENSESEA传感器,传感器)?1U:0U);
}
我无法检测手指按压,请让我知道问题在哪里。
谢谢和问候,
普拉莫德

以上来自于百度翻译


     以下为原文
  Hello,

Iam using PSCO4 CYC4014 Microcontroller for our project,

Iam using below mentioned API's for detecting if finger press on button,

1) CapSense_CheckIsSensorActive()

2) CapSense_CheckIsWidgetActive()


Below is function snippet.

uint32 CapSense_CheckIsSensorActive(uint32 sensor)
{
    uint8 widget;
    uint8 debounce;
    uint8 debounceIndex;
    uint8 fingerThreshold;
    uint8 hysteresis;
   
    /* Prepare to find debounce counter index */
    widget = CapSense_widgetNumber[sensor];
    fingerThreshold = CapSense_fingerThreshold[widget];
    hysteresis = CapSense_hysteresis[widget];
   debounce = CapSense_debounce[widget];
        debounceIndex = widget;
    /* Was on */
    if (0u != CapSense_GetBitValue(CapSense_sensorOnMask, sensor))
    {
        /* Hysteresis minus */
        if (CapSense_sensorSignal[sensor] < (fingerThreshold - hysteresis))
        {
            CapSense_SetBitValue(CapSense_sensorOnMask, sensor, 0u);
            /* Sensor inactive - reset Debounce counter */
            CapSense_debounceCounter[debounceIndex] = debounce;
        }
    }
    else    /* Was off */
    {
        /* Hysteresis plus */
        if (CapSense_sensorSignal[sensor] >= (fingerThreshold + hysteresis))
        {
            CapSense_debounceCounter[debounceIndex]--;
            /* Sensor active, decrement debounce counter */
            if(CapSense_debounceCounter[debounceIndex] == 0u)
            {
                CapSense_SetBitValue(CapSense_sensorOnMask, sensor, 1u);
            }
        }
        else
        {
            /* Sensor inactive - reset Debounce counter */
            CapSense_debounceCounter[debounceIndex] = debounce;
        }
    }
    return ((uint32)((0u != CapSense_GetBitValue(CapSense_sensorOnMask, sensor)) ? 1u : 0u));
}

Iam not able to detect the finger press,Please let me know where the issue is.

Thanks & Regards,
Pramod

回帖(11)

李洪洋

2018-10-29 11:44:55
嗨,Pramod,
你能分享整个项目吗?
UIT32 32 CAPSESESECPSECISRORACTION(UIT32传感器)是CAPSENSE V2.X的内部功能。
一般来说,建议在主.c中使用CAPENSEXIGCHECISWIDGETActuple(WigGETNUM)。
谢谢,
赖安

以上来自于百度翻译


     以下为原文
  Hi Pramod,
 
Could you share the full project?
uint32 CapSense_CheckIsSensorActive(uint32 sensor) is an internal function of CapSense v2.x.
Generally, it is recommended to use CapSense_CheckIsWidgetActive(Widget_Num) in main.c.
 
Thanks,
Ryan
举报

李明

2018-10-29 12:03:14
引用: pengzhongdianzi 发表于 2018-10-29 12:42
嗨,Pramod,
你能分享整个项目吗?
UIT32 32 CAPSESESECPSECISRORACTION(UIT32传感器)是CAPSENSE V2.X的内部功能。

嗨,赖安,
项目的PFA档案,
告诉我哪里出错了。
谢谢和问候,
普拉莫德卡希亚普
CopShansC.D.Cyrj.CaseVo.01.Zip
529 K

以上来自于百度翻译


     以下为原文
  Hi Ryan,
 
PFA Archive of the project,
 
Let me know where iam going wrong.
 
Thanks & Regards,
Pramod Kashyap


举报

李洪洋

2018-10-29 12:23:12
引用: yvochen 发表于 2018-10-29 13:01
嗨,赖安,
项目的PFA档案,
告诉我哪里出错了。

嗨,Pramod,
我得到了这个项目,我将在这几天调试,然后回来给你更多的细节。
在此之前,这里有一些建议:
1。使用CAPENSEXIGCHECISWIDGET Actudio(0)检测所有传感器的状态,然后直接使用CAPENSESEYSCONSORMONDATION(0)。
2。修改ISRS的所有优先级为3。
三。仅用CAPENSESEJCSD组件创建简单调试项目,以验证CAPSENSE可以很好地工作。
谢谢,
赖安

以上来自于百度翻译


     以下为原文
  Hi Pramod,
 
I got the project, I will have a debug in these several days and then come back to you with more details.
Before that, here are some suggestions FYI:
1. Use CapSense_CheckIsWidgetActive(0) to detect all sensors' status and then use CapSense_sensorOnMask[0] directly.
2. Modify all priority of ISRs as 3.
3. Create a simply debug project only with CapSense_CSD component to verify CapSense can work well.
 
Thanks,
Ryan
举报

李明

2018-10-29 12:29:07
引用: pengzhongdianzi 发表于 2018-10-29 13:21
嗨,Pramod,
我得到了这个项目,我将在这几天调试,然后回来给你更多的细节。
在此之前,这里有一些建议:

嗨,瑞安,
谢谢你的回应,
我会试试你提到的API。
请尽快检查一下文件。
因为我需要尽早解决这个问题。
谢谢,
普拉莫德

以上来自于百度翻译


     以下为原文
  Hi ryan,
 
Thanks for Response,
 
I will try the API you have mentioned.
 
Please can you review the porject file ASAP.
 
As i need to fix this issue at the earliest.
 
Thanks,
Pramod
举报

更多回帖

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