Dear team,
I have almost the same issue. Count and Lta do not have the same value.
I got a config file from the customer, so I uploaded it.
Please help.
/* --COPYRIGHT--,BSD
* Copyright (c) 2017, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* --/COPYRIGHT--*/
// Generated by Captivate Design Center v1_82_00_06 on Thu Nov 19 11:29:45 GMT+08:00 2020
//*****************************************************************************
// CAPT_UserConfig.c
//
// \version 1.82.00.02
// Released on January 22, 2020
//
//*****************************************************************************
//*****************************************************************************
//
// NOTE: This is an automatically generated source code file! The Captivate
// Design Center generates the User Configuration file automatically based
// upon the sensor layout that was created.
//
// Changes to this file will be OVERWRITTEN if a you select
// "Update Existing Project" under "Generate Source Code" in the Design Center.
//
// To avoid interference with the code generation process, keep ALL application
// code external to this file.
//
//*****************************************************************************
#include "CAPT_UserConfig.h"
//*****************************************************************************
//
//! Captivate Element Definitions
//! All elements in this application are defined below.
//! Each element has 3 components:
//! 1) a raw count array (One index per freq. scanned) (uint16_t)
//! 2) a tuning array (One index per freq. scanned) (tCaptivateElementTuning)
//! 3) a element structure (tElement)
//
//*****************************************************************************
// Sensor: BTN00, Element: E00
uint16_t BTN00_E00_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning BTN00_E00_Tuning[CAPT_SELF_FREQ_CNT];
tElement BTN00_E00 =
{
.ui8RxPin = 0,
.ui8RxBlock = 0,
.ui8TouchThreshold = 10,
.pRawCount = BTN00_E00_RawCnts,
.pTuning = BTN00_E00_Tuning,
};
// Sensor: BTN00, Element: E01
uint16_t BTN00_E01_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning BTN00_E01_Tuning[CAPT_SELF_FREQ_CNT];
tElement BTN00_E01 =
{
.ui8RxPin = 0,
.ui8RxBlock = 1,
.ui8TouchThreshold = 10,
.pRawCount = BTN00_E01_RawCnts,
.pTuning = BTN00_E01_Tuning,
};
// Sensor: BTN00, Element: E02
uint16_t BTN00_E02_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning BTN00_E02_Tuning[CAPT_SELF_FREQ_CNT];
tElement BTN00_E02 =
{
.ui8RxPin = 0,
.ui8RxBlock = 2,
.ui8TouchThreshold = 10,
.pRawCount = BTN00_E02_RawCnts,
.pTuning = BTN00_E02_Tuning,
};
// Sensor: BTN00, Element: E03
uint16_t BTN00_E03_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning BTN00_E03_Tuning[CAPT_SELF_FREQ_CNT];
tElement BTN00_E03 =
{
.ui8RxPin = 0,
.ui8RxBlock = 3,
.ui8TouchThreshold = 10,
.pRawCount = BTN00_E03_RawCnts,
.pTuning = BTN00_E03_Tuning,
};
// Sensor: BTN00, Element: E04
uint16_t BTN00_E04_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning BTN00_E04_Tuning[CAPT_SELF_FREQ_CNT];
tElement BTN00_E04 =
{
.ui8RxPin = 1,
.ui8RxBlock = 0,
.ui8TouchThreshold = 10,
.pRawCount = BTN00_E04_RawCnts,
.pTuning = BTN00_E04_Tuning,
};
// Sensor: BTN00, Element: E05
uint16_t BTN00_E05_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning BTN00_E05_Tuning[CAPT_SELF_FREQ_CNT];
tElement BTN00_E05 =
{
.ui8RxPin = 1,
.ui8RxBlock = 1,
.ui8TouchThreshold = 10,
.pRawCount = BTN00_E05_RawCnts,
.pTuning = BTN00_E05_Tuning,
};
// Sensor: BTN00, Element: E06
uint16_t BTN00_E06_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning BTN00_E06_Tuning[CAPT_SELF_FREQ_CNT];
tElement BTN00_E06 =
{
.ui8RxPin = 1,
.ui8RxBlock = 2,
.ui8TouchThreshold = 10,
.pRawCount = BTN00_E06_RawCnts,
.pTuning = BTN00_E06_Tuning,
};
// Sensor: BTN00, Element: E07
uint16_t BTN00_E07_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning BTN00_E07_Tuning[CAPT_SELF_FREQ_CNT];
tElement BTN00_E07 =
{
.ui8RxPin = 1,
.ui8RxBlock = 3,
.ui8TouchThreshold = 10,
.pRawCount = BTN00_E07_RawCnts,
.pTuning = BTN00_E07_Tuning,
};
// Sensor: PRX00, Element: E00
uint16_t PRX00_E00_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning PRX00_E00_Tuning[CAPT_SELF_FREQ_CNT];
tElement PRX00_E00 =
{
.ui8RxPin = 1,
.ui8RxBlock = 2,
.ui8TouchThreshold = 10,
.pRawCount = PRX00_E00_RawCnts,
.pTuning = PRX00_E00_Tuning,
};
// Sensor: PRX01, Element: E00
uint16_t PRX01_E00_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning PRX01_E00_Tuning[CAPT_SELF_FREQ_CNT];
tElement PRX01_E00 =
{
.ui8RxPin = 0,
.ui8RxBlock = 2,
.ui8TouchThreshold = 10,
.pRawCount = PRX01_E00_RawCnts,
.pTuning = PRX01_E00_Tuning,
};
// Sensor: PRX02, Element: E00
uint16_t PRX02_E00_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning PRX02_E00_Tuning[CAPT_SELF_FREQ_CNT];
tElement PRX02_E00 =
{
.ui8RxPin = 3,
.ui8RxBlock = 3,
.ui8TouchThreshold = 10,
.pRawCount = PRX02_E00_RawCnts,
.pTuning = PRX02_E00_Tuning,
};
//*****************************************************************************
//
//! Captivate Time Cycle Definitions
//! All time cycles in this application are defined below. Time cycles are
//! groups of elements that are measured together in parallel in one time slot.
//! Each cycle has 2 components:
//! 1) an element pointer array to the member elements (tElement*)
//! 2) a cycle structure (tCycle)
//
//*****************************************************************************
// Time Cycle: BTN00_C00
tElement* BTN00_C00_Elements[4] =
{
&BTN00_E00,
&BTN00_E01,
&BTN00_E02,
&BTN00_E03,
};
tCycle BTN00_C00 =
{
.ui8NrOfElements = 4,
.pElements = BTN00_C00_Elements,
};
// Time Cycle: BTN00_C01
tElement* BTN00_C01_Elements[4] =
{
&BTN00_E04,
&BTN00_E05,
&BTN00_E06,
&BTN00_E07,
};
tCycle BTN00_C01 =
{
.ui8NrOfElements = 4,
.pElements = BTN00_C01_Elements,
};
// Time Cycle: PRX00_C00
tElement* PRX00_C00_Elements[1] =
{
&PRX00_E00,
};
tCycle PRX00_C00 =
{
.ui8NrOfElements = 1,
.pElements = PRX00_C00_Elements,
};
// Time Cycle: PRX01_C00
tElement* PRX01_C00_Elements[1] =
{
&PRX01_E00,
};
tCycle PRX01_C00 =
{
.ui8NrOfElements = 1,
.pElements = PRX01_C00_Elements,
};
// Time Cycle: PRX02_C00
tElement* PRX02_C00_Elements[1] =
{
&PRX02_E00,
};
tCycle PRX02_C00 =
{
.ui8NrOfElements = 1,
.pElements = PRX02_C00_Elements,
};
//*****************************************************************************
//
//! Captivate Sensor Definitions
//! All sensors in this application are defined below. Sensors are
//! groups of time cycles that utilize raw measurement data to create an
//! abstract sensor type, such as a button, slider, wheel, or prox sensor.
//! Each sensor has 3 components:
//! 1) a cycle pointer array to the member time cycles (tCycle*)
//! 2) a sensor-specific parameter structure (tGenericSensorParams)
//! 3) a sensor structure (tSensor)
//
//*****************************************************************************
//Sensor: BTN00
const tCycle* BTN00_Cycles[2] =
{
&BTN00_C00,
&BTN00_C01,
};
tButtonSensorParams BTN00_Params;
tSensor BTN00 =
{
// Basic Properties
.TypeOfSensor = eButtonGroup,
.SensingMethod = eSelf,
.DirectionOfInterest = eDOIDown,
.pvCallback = NULL,
.ui8NrOfCycles = 2,
.pCycle = BTN00_Cycles,
.pSensorParams = (tGenericSensorParams*)&BTN00_Params,
// Conversion Control Parameters
.ui16ConversionCount = 500,
.ui16ConversionGain = 100,
.ui8FreqDiv = 2,
.ui8ChargeLength = 0,
.ui8TransferLength = 0,
.bModEnable = false,
.ui8BiasControl = 3,
.bCsDischarge = true,
.bLpmControl = false,
.ui8InputSyncControl = 0,
.bTimerSyncControl = false,
.bIdleState = true,
// Tuning Parameters
.ui16ProxThreshold = 10,
.ui16NegativeTouchThreshold = 30,
.ui16ErrorThreshold = 8191,
.ui16TimeoutThreshold = 65535,
.ProxDbThreshold.DbIn = 1,
.ProxDbThreshold.DbOut = 0,
.TouchDbThreshold.DbIn = 1,
.TouchDbThreshold.DbOut = 0,
.bCountFilterEnable = true,
.ui8CntBeta = 1,
.bSensorHalt = false,
.bPTSensorHalt = true,
.bPTElementHalt = true,
.ui8LTABeta = 7,
.bReCalibrateEnable = true,
};
//Sensor: PRX00
const tCycle* PRX00_Cycles[1] =
{
&PRX00_C00,
};
tProxSensorParams PRX00_Params =
{
.pSensor = NULL,
.ui8NumberOfSensors = 0,
};
tSensor PRX00 =
{
// Basic Properties
.TypeOfSensor = eProx,
.SensingMethod = eSelf,
.DirectionOfInterest = eDOIDown,
.pvCallback = NULL,
.ui8NrOfCycles = 1,
.pCycle = PRX00_Cycles,
.pSensorParams = (tGenericSensorParams*)&PRX00_Params,
// Conversion Control Parameters
.ui16ConversionCount = 1000,
.ui16ConversionGain = 100,
.ui8FreqDiv = 2,
.ui8ChargeLength = 0,
.ui8TransferLength = 0,
.bModEnable = false,
.ui8BiasControl = 3,
.bCsDischarge = true,
.bLpmControl = false,
.ui8InputSyncControl = 0,
.bTimerSyncControl = false,
.bIdleState = true,
// Tuning Parameters
.ui16ProxThreshold = 20,
.ui16NegativeTouchThreshold = 30,
.ui16ErrorThreshold = 8191,
.ui16TimeoutThreshold = 100,
.ProxDbThreshold.DbIn = 1,
.ProxDbThreshold.DbOut = 0,
.TouchDbThreshold.DbIn = 1,
.TouchDbThreshold.DbOut = 0,
.bCountFilterEnable = true,
.ui8CntBeta = 1,
.bSensorHalt = false,
.bPTSensorHalt = true,
.bPTElementHalt = true,
.ui8LTABeta = 7,
.bReCalibrateEnable = true,
};
//Sensor: PRX01
const tCycle* PRX01_Cycles[1] =
{
&PRX01_C00,
};
tProxSensorParams PRX01_Params =
{
.pSensor = NULL,
.ui8NumberOfSensors = 0,
};
tSensor PRX01 =
{
// Basic Properties
.TypeOfSensor = eProx,
.SensingMethod = eSelf,
.DirectionOfInterest = eDOIDown,
.pvCallback = NULL,
.ui8NrOfCycles = 1,
.pCycle = PRX01_Cycles,
.pSensorParams = (tGenericSensorParams*)&PRX01_Params,
// Conversion Control Parameters
.ui16ConversionCount = 1000,
.ui16ConversionGain = 100,
.ui8FreqDiv = 2,
.ui8ChargeLength = 0,
.ui8TransferLength = 0,
.bModEnable = false,
.ui8BiasControl = 3,
.bCsDischarge = true,
.bLpmControl = false,
.ui8InputSyncControl = 0,
.bTimerSyncControl = false,
.bIdleState = true,
// Tuning Parameters
.ui16ProxThreshold = 20,
.ui16NegativeTouchThreshold = 30,
.ui16ErrorThreshold = 8191,
.ui16TimeoutThreshold = 100,
.ProxDbThreshold.DbIn = 1,
.ProxDbThreshold.DbOut = 0,
.TouchDbThreshold.DbIn = 1,
.TouchDbThreshold.DbOut = 0,
.bCountFilterEnable = true,
.ui8CntBeta = 1,
.bSensorHalt = false,
.bPTSensorHalt = true,
.bPTElementHalt = true,
.ui8LTABeta = 7,
.bReCalibrateEnable = true,
};
//Sensor: PRX02
const tCycle* PRX02_Cycles[1] =
{
&PRX02_C00,
};
tProxSensorParams PRX02_Params =
{
.pSensor = NULL,
.ui8NumberOfSensors = 0,
};
tSensor PRX02 =
{
// Basic Properties
.TypeOfSensor = eProx,
.SensingMethod = eSelf,
.DirectionOfInterest = eDOIDown,
.pvCallback = NULL,
.ui8NrOfCycles = 1,
.pCycle = PRX02_Cycles,
.pSensorParams = (tGenericSensorParams*)&PRX02_Params,
// Conversion Control Parameters
.ui16ConversionCount = 1000,
.ui16ConversionGain = 100,
.ui8FreqDiv = 2,
.ui8ChargeLength = 0,
.ui8TransferLength = 0,
.bModEnable = false,
.ui8BiasControl = 3,
.bCsDischarge = true,
.bLpmControl = false,
.ui8InputSyncControl = 0,
.bTimerSyncControl = false,
.bIdleState = true,
// Tuning Parameters
.ui16ProxThreshold = 20,
.ui16NegativeTouchThreshold = 30,
.ui16ErrorThreshold = 8191,
.ui16TimeoutThreshold = 100,
.ProxDbThreshold.DbIn = 1,
.ProxDbThreshold.DbOut = 0,
.TouchDbThreshold.DbIn = 1,
.TouchDbThreshold.DbOut = 0,
.bCountFilterEnable = true,
.ui8CntBeta = 1,
.bSensorHalt = false,
.bPTSensorHalt = true,
.bPTElementHalt = true,
.ui8LTABeta = 7,
.bReCalibrateEnable = true,
};
#if (CAPT_CONDUCTED_NOISE_IMMUNITY_ENABLE==true)
//*****************************************************************************
//
//! \var g_EMCConfig
//! This structure stores the EMC configuration for this application.
//
//*****************************************************************************
const tEMCConfig g_EMCConfig =
{
// Conversion Style
.selfModeConversionStyle = CAPT_SELF_MODE_CONVERSION_STYLE,
.projModeConversionStyle = CAPT_PROJ_MODE_CONVERSION_STYLE,
// Oversampling Style
.selfModeOversamplingStyle = CAPT_SELF_MODE_OVERSAMPLING_STYLE,
.projModeOversamplingStyle = CAPT_PROJ_MODE_OVERSAMPLING_STYLE,
// Jitter Filter Enable
.bJitterFilterEnable = true,
// Noise Thresholds and Calibration Noise Limits
.ui8NoiseThreshold = CAPT_NOISE_THRESHOLD,
.ui16CalibrationNoiseLimit = CAPT_CALIBRATION_NOISE_LIMIT,
.ui8CalibrationTestSampleSize = 8,
// Dynamic Threshold Adjustment Parameters
.bEnableDynamicThresholdAdjustment = CAPT_DYNAMIC_THRESHOLD_ADJUSTMENT,
.ui8MaxRelThreshAdj = 76,
.ui8NoiseLevelFilterEntryThresh = 40,
.ui8NoiseLevelFilterExitThresh = 0,
.ui8NoiseLevelFilterDown = 6,
.ui8NoiseLevelFilterUp = 1,
.coeffA = _IQ31(0.0065),
.coeffB = _IQ31(0.050)
};
#endif
//*****************************************************************************
//
//! \var g_pCaptivateSensorArray
//! This array allows for indexed access to any
//! sensor in the configuration.
//
//*****************************************************************************
tSensor* g_pCaptivateSensorArray[CAPT_SENSOR_COUNT] =
{
&BTN00,
&PRX00,
&PRX01,
&PRX02,
};
//*****************************************************************************
//
//! \var g_uiApp
//! This structure stores the global settings for this application.
//
//*****************************************************************************
tCaptivateApplication g_uiApp =
{
.state = eUIActive,
.pSensorList = &g_pCaptivateSensorArray[0],
.ui8NrOfSensors = CAPT_SENSOR_COUNT,
.ui8AppLPM = CAPT_LOW_POWER_MODE,
.bElementDataTxEnable = true,
.bSensorDataTxEnable = true,
.ui16ActiveModeScanPeriod = 33,
.ui16WakeOnProxModeScanPeriod = 100,
.ui16InactivityTimeout = 32,
.ui8WakeupInterval = 5,
};