This is a demonstration of using the tft display of the Cypress PSoC 6 WiFi-BT Pioneer kit. The demo displays the status of the capsense buttons, slider and user button on the tft display. Makes use of emwin, capsense and PinDetect libraries.
Revision 1:f8f4e789361f, committed 2019-10-11
- Comitter:
- reedas
- Date:
- Fri Oct 11 12:43:11 2019 +0000
- Parent:
- 0:4ad2c16b6e43
- Commit message:
- Version working for Cypress psoc 6 Pioneer kit wifi board with tft display sw2 debounced mechanical switch, capsense buttons and capsense slider.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PinDetect.lib Fri Oct 11 12:43:11 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/AjK/code/PinDetect/#cb3afc45028b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/capsense.lib Fri Oct 11 12:43:11 2019 +0000 @@ -0,0 +1,1 @@ +https://github.com/cypresssemiconductorco/capsense/#6aa6547460365ee39e12c238e177b0552359219b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cycfg_capsense.c Fri Oct 11 12:43:11 2019 +0000
@@ -0,0 +1,806 @@
+/*******************************************************************************
+* File Name: cycfg_capsense.c
+* Version: 2.0
+*
+* Description:
+* CapSense middleware configuration
+* This file should not be modified. It was automatically generated by
+* CapSense Configurator 2.0.0 build 566
+*
+********************************************************************************
+* Copyright 2019 Cypress Semiconductor Corporation
+* SPDX-License-Identifier: Apache-2.0
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*******************************************************************************/
+
+#include "cycfg_capsense.h"
+
+#if (CY_CAPSENSE_CORE == __CORTEX_M)
+
+#ifndef CSD_CMODPADS_PORT
+#define CSD_CMODPADS_PORT 0xFF
+#endif
+#ifndef CSD_CMODPADS_PIN
+#define CSD_CMODPADS_PIN 0xFF
+#endif
+#ifndef CSD_CSH_TANKPADS_PORT
+#define CSD_CSH_TANKPADS_PORT 0xFF
+#endif
+#ifndef CSD_CSH_TANKPADS_PIN
+#define CSD_CSH_TANKPADS_PIN 0xFF
+#endif
+#ifndef CSD_CSHIELDPADS_PORT
+#define CSD_CSHIELDPADS_PORT 0xFF
+#endif
+#ifndef CSD_CSHIELDPADS_PIN
+#define CSD_CSHIELDPADS_PIN 0xFF
+#endif
+#ifndef CSD_VREF_EXT_PORT
+#define CSD_VREF_EXT_PORT 0xFF
+#endif
+#ifndef CSD_VREF_EXT_PIN
+#define CSD_VREF_EXT_PIN 0xFF
+#endif
+
+#define CY_CAPSENSE_WIDGET_COUNT (3u)
+#define CY_CAPSENSE_SENSOR_COUNT (7u)
+#define CY_CAPSENSE_ELTD_COUNT (9u)
+#define CY_CAPSENSE_PIN_COUNT (9u)
+#define CY_CAPSENSE_SHIELD_PIN_COUNT (0u)
+#define CY_CAPSENSE_POSITION_SIZE (1u)
+#define CY_CAPSENSE_DEBOUNCE_SIZE (3u)
+#define CY_CAPSENSE_NOISE_ENVELOPE_SIZE (0u)
+#define CY_CAPSENSE_RAW_HISTORY_SIZE (0u)
+#define CY_CAPSENSE_IIR_HISTORY_LOW_SIZE (0u)
+#define CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE (1u)
+#define CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE (1u)
+#define CY_CAPSENSE_DIPLEX_SIZE (0u)
+#define CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE (0u)
+#define CY_CAPSENSE_CSX_TOUCH_BUFFER_ENABLE (0u)
+#define CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE (0u)
+#define CY_CAPSENSE_BALLISTIC_WIDGET_COUNT (0u)
+#define CY_CAPSENSE_GESTURE_WIDGET_COUNT (0u)
+
+static cy_stc_capsense_internal_context_t cy_capsense_internalContext;
+static cy_stc_active_scan_sns_t cy_capsense_activeScanSns;
+
+#if (CY_CAPSENSE_DEBOUNCE_SIZE > 0)
+ static uint8_t cy_capsense_debounce[CY_CAPSENSE_DEBOUNCE_SIZE] = {0};
+#endif
+
+#if (CY_CAPSENSE_NOISE_ENVELOPE_SIZE > 0)
+ static cy_stc_capsense_smartsense_csd_noise_envelope_t cy_capsense_noiseEnvelope[CY_CAPSENSE_NOISE_ENVELOPE_SIZE];
+#endif
+
+#if (CY_CAPSENSE_RAW_HISTORY_SIZE > 0)
+ static uint16_t cy_capsense_rawFilterHistory[CY_CAPSENSE_RAW_HISTORY_SIZE] = {0};
+#endif
+
+#if (CY_CAPSENSE_IIR_HISTORY_LOW_SIZE > 0)
+ static uint8_t cy_capsense_iirHistoryLow[CY_CAPSENSE_IIR_HISTORY_LOW_SIZE] = {0};
+#endif
+
+#if (CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE > 0)
+ static cy_stc_capsense_position_t cy_capsense_positionFilterHistory[CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE];
+#endif
+
+#if (CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE > 0)
+ static cy_stc_capsense_touch_t cy_capsense_touchFilterHistory[CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE] =
+ {
+ {
+ .ptrPosition = &cy_capsense_positionFilterHistory[0u],
+.numPosition = 0u, },
+ };
+#endif
+
+#if (CY_CAPSENSE_DIPLEX_SIZE > 0)
+ static const uint8_t cy_capsense_diplexTable[CY_CAPSENSE_DIPLEX_SIZE] =
+ {
+ };
+#endif
+
+#if (CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE > 0)
+ static uint16 cy_capsense_csdTouchBuffer[CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE] = {0};
+#endif
+
+#if (CY_CAPSENSE_CSX_TOUCH_BUFFER_ENABLE > 0)
+ static cy_stc_capsense_csx_touch_buffer_t cy_capsense_csxTouchBuffer;
+#endif
+
+#if (CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE > 0)
+ static cy_stc_capsense_csx_touch_history_t cy_capsense_csxTouchHistory[CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE] =
+ {
+ };
+#endif
+
+#if (CY_CAPSENSE_BALLISTIC_WIDGET_COUNT > 0)
+ static cy_stc_capsense_ballistic_context_t cy_capsense_ballisticContext[CY_CAPSENSE_BALLISTIC_WIDGET_COUNT];
+#endif
+
+#if (CY_CAPSENSE_GESTURE_WIDGET_COUNT > 0)
+ static cy_stc_capsense_gesture_context_t cy_capsense_gestureContext[CY_CAPSENSE_GESTURE_WIDGET_COUNT];
+#endif
+
+static const cy_stc_capsense_common_config_t cy_capsense_commonConfig =
+{
+ .cpuClkHz = CY_CAPSENSE_CPU_CLK,
+ .periClkHz = CY_CAPSENSE_PERI_CLK,
+ .vdda = CY_CAPSENSE_VDDA_MV,
+ .numPin = CY_CAPSENSE_PIN_COUNT,
+ .numSns = CY_CAPSENSE_SENSOR_COUNT,
+ .numWd = CY_CAPSENSE_WIDGET_COUNT,
+ .csdEn = CY_CAPSENSE_ENABLE,
+ .csxEn = CY_CAPSENSE_ENABLE,
+ .mfsEn = CY_CAPSENSE_DISABLE,
+ .positionFilterEn = CY_CAPSENSE_ENABLE,
+ .periDividerType = CY_CAPSENSE_PERI_DIV_TYPE,
+ .periDividerIndex = CY_CAPSENSE_PERI_DIV_INDEX,
+ .analogWakeupDelay = 25u,
+ .ssIrefSource = CY_CAPSENSE_IREF_SRSS,
+ .ssVrefSource = CY_CAPSENSE_VREF_SRSS,
+ .proxTouchCoeff = 300u,
+ .swSensorAutoResetEn = CY_CAPSENSE_DISABLE,
+ .portCmodPadNum = CSD_CMODPADS_PORT,
+ .pinCmodPad = CSD_CMODPADS_PIN,
+ .portCshPadNum = CSD_CSH_TANKPADS_PORT,
+ .pinCshPad = CSD_CSH_TANKPADS_PIN,
+ .portShieldPadNum = CSD_CSHIELDPADS_PORT,
+ .pinShieldPad = CSD_CSHIELDPADS_PIN,
+ .portVrefExtPadNum = CSD_VREF_EXT_PORT,
+ .pinVrefExtPad = CSD_VREF_EXT_PIN,
+ .portCmodNum = Cmod_PORT_NUM,
+ .idacGainTable = {
+ {0x01000000u, 37500u},
+ {0x03000000u, 75000u},
+ {0x01400000u, 300000u},
+ {0x03400000u, 600000u},
+ {0x01800000u, 2400000u},
+ {0x03800000u, 4800000u},
+ },
+ .ptrCsdBase = CSD0,
+ .ptrCsdContext = &cy_csd_0_context,
+ .portCmod = Cmod_PORT,
+ .portCsh = NULL,
+ .portCintA = CintA_PORT,
+ .portCintB = CintB_PORT,
+ .pinCmod = Cmod_PIN,
+ .portCshNum = 0u,
+ .pinCsh = 0u,
+ .pinCintA = CintA_PIN,
+ .pinCintB = CintB_PIN,
+ .csdShieldEn = CY_CAPSENSE_DISABLE,
+ .csdInactiveSnsConnection = CY_CAPSENSE_SNS_CONNECTION_GROUND,
+ .csdShieldDelay = CY_CAPSENSE_SH_DELAY_0NS,
+ .csdVref = 0u,
+ .csdRConst = 1000u,
+ .csdCTankShieldEn = CY_CAPSENSE_DISABLE,
+ .csdShieldNumPin = 0u,
+ .csdShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_MEDIUM,
+ .csdInitSwRes = CY_CAPSENSE_INIT_SW_RES_MEDIUM,
+ .csdChargeTransfer = CY_CAPSENSE_IDAC_SOURCING,
+ .csdRawTarget = 85u,
+ .csdAutotuneEn = CY_CAPSENSE_CSD_SS_DIS,
+ .csdIdacAutocalEn = CY_CAPSENSE_ENABLE,
+ .csdIdacAutoGainEn = CY_CAPSENSE_ENABLE,
+ .csdCalibrationError = 10u,
+ .csdIdacGainInitIndex = 4u,
+ .csdIdacMin = 20u,
+ .csdIdacCompEn = CY_CAPSENSE_ENABLE,
+ .csdFineInitTime = 10u,
+ .csdIdacRowColAlignEn = CY_CAPSENSE_ENABLE,
+ .csdMfsDividerOffsetF1 = 1u,
+ .csdMfsDividerOffsetF2 = 2u,
+ .csxRawTarget = 40u,
+ .csxIdacGainInitIndex = 2u,
+ .csxIdacAutocalEn = CY_CAPSENSE_ENABLE,
+ .csxCalibrationError = 20u,
+ .csxFineInitTime = 10u,
+ .csxInitSwRes = CY_CAPSENSE_INIT_SW_RES_MEDIUM,
+ .csxScanSwRes = CY_CAPSENSE_INIT_SW_RES_MEDIUM,
+ .csxInitShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_MEDIUM,
+ .csxScanShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_MEDIUM,
+ .csxMfsDividerOffsetF1 = 1u,
+ .csxMfsDividerOffsetF2 = 2u,
+};
+
+static const cy_stc_capsense_fptr_config_t cy_capsense_fptrConfig =
+{
+#if (CY_CAPSENSE_CSD_EN == 0)
+ .fptrCSDSetupWidget = NULL,
+ .fptrCSDScan = NULL,
+ .fptrDpProcessCsdWidgetRawCounts = NULL,
+ .fptrDpProcessCsdWidgetStatus = NULL,
+ .fptrCSDDisableMode = NULL,
+ .fptrCSDInitialize = NULL,
+ .fptrCSDScanISR = NULL,
+#else
+ .fptrCSDSetupWidget = &Cy_CapSense_CSDSetupWidget,
+ .fptrCSDScan = &Cy_CapSense_CSDScan,
+ .fptrDpProcessCsdWidgetRawCounts = &Cy_CapSense_DpProcessCsdWidgetRawCounts,
+ .fptrDpProcessCsdWidgetStatus = &Cy_CapSense_DpProcessCsdWidgetStatus,
+ .fptrCSDDisableMode = &Cy_CapSense_CSDDisableMode,
+ .fptrCSDInitialize = &Cy_CapSense_CSDInitialize,
+ .fptrCSDScanISR = &Cy_CapSense_CSDScanISR,
+#endif
+
+#if (CY_CAPSENSE_CSX_EN == 0)
+ .fptrCSXSetupWidget = NULL,
+ .fptrCSXScan = NULL,
+ .fptrDpProcessCsxWidgetRawCounts = NULL,
+ .fptrDpProcessCsxWidgetStatus = NULL,
+ .fptrCSXInitialize = NULL,
+ .fptrCSXDisableMode = NULL,
+ .fptrCSXScanISR = NULL,
+#else
+ .fptrCSXSetupWidget = &Cy_CapSense_CSXSetupWidget,
+ .fptrCSXScan = &Cy_CapSense_CSXScan,
+ .fptrDpProcessCsxWidgetRawCounts = &Cy_CapSense_DpProcessCsxWidgetRawCounts,
+ .fptrDpProcessCsxWidgetStatus = &Cy_CapSense_DpProcessCsxWidgetStatus,
+ .fptrCSXInitialize = &Cy_CapSense_CSXInitialize,
+ .fptrCSXDisableMode = &Cy_CapSense_CSXDisableMode,
+ .fptrCSXScanISR = &Cy_CapSense_CSXScanISR,
+#endif
+
+#if (CY_CAPSENSE_ADAPTIVE_FILTER_EN == 0)
+ .fptrAdaptiveFilterInitializeLib = NULL,
+ .fptrAdaptiveFilterRunLib = NULL,
+#else
+ .fptrAdaptiveFilterInitializeLib = &Cy_CapSense_AdaptiveFilterInitialize_Lib,
+ .fptrAdaptiveFilterRunLib = &Cy_CapSense_AdaptiveFilterRun_Lib,
+#endif
+
+#if (CY_CAPSENSE_BALLISTIC_MULTIPLIER_EN == 0)
+ .fptrBallisticMultiplierLib = NULL,
+#else
+ .fptrBallisticMultiplierLib = &Cy_CapSense_BallisticMultiplier_Lib,
+#endif
+
+#if (CY_CAPSENSE_RAWCOUNT_FILTER_EN == 0)
+ .fptrInitializeAllFilters = NULL,
+ .fptrFtRunEnabledFiltersInternal = NULL,
+#else
+ .fptrInitializeAllFilters = &Cy_CapSense_InitializeAllFilters,
+ .fptrFtRunEnabledFiltersInternal = &Cy_CapSense_FtRunEnabledFiltersInternal,
+#endif
+
+#if (CY_CAPSENSE_CSD_POSITION_FILTER_EN == 0)
+ .fptrProcessPositionFilters = NULL,
+#else
+ .fptrProcessPositionFilters = &Cy_CapSense_ProcessPositionFilters,
+#endif
+
+#if ((CY_CAPSENSE_CSX_POSITION_FILTER_EN == 0) && (CY_CAPSENSE_CSD_POSITION_FILTER_EN == 0))
+ .fptrRunPositionFilters = NULL,
+ .fptrInitPositionFilters = NULL,
+#else
+ .fptrRunPositionFilters = &Cy_CapSense_RunPositionFilters,
+ .fptrInitPositionFilters = &Cy_CapSense_InitPositionFilters,
+#endif
+
+#if ((CY_CAPSENSE_CSD_BUTTON_EN == 0) && \
+ (CY_CAPSENSE_CSX_BUTTON_EN == 0) && (CY_CAPSENSE_CSX_MATRIX_EN == 0))
+ .fptrDpProcessButton = NULL,
+#else
+ .fptrDpProcessButton = &Cy_CapSense_DpProcessButton,
+#endif
+
+#if (CY_CAPSENSE_CSD_SLIDER_EN == 0)
+ .fptrDpProcessSlider = NULL,
+#else
+ .fptrDpProcessSlider = &Cy_CapSense_DpProcessSlider,
+#endif
+
+#if (CY_CAPSENSE_CSD_MATRIX_EN == 0)
+ .fptrDpProcessCsdMatrix = NULL,
+#else
+ .fptrDpProcessCsdMatrix = &Cy_CapSense_DpProcessCsdMatrix,
+#endif
+
+#if (CY_CAPSENSE_CSD_TOUCHPAD_EN == 0)
+ .fptrDpProcessCsdTouchpad = NULL,
+#else
+ .fptrDpProcessCsdTouchpad = &Cy_CapSense_DpProcessCsdTouchpad,
+#endif
+
+#if (CY_CAPSENSE_CSD_PROXIMITY_EN == 0)
+ .fptrDpProcessProximity = NULL,
+#else
+ .fptrDpProcessProximity = &Cy_CapSense_DpProcessProximity,
+#endif
+
+#if (CY_CAPSENSE_CSX_TOUCHPAD_EN == 0)
+ .fptrDpProcessCsxTouchpad = NULL,
+#else
+ .fptrDpProcessCsxTouchpad = &Cy_CapSense_DpProcessCsxTouchpad,
+#endif
+
+#if (CY_CAPSENSE_ADVANCED_CENTROID_5X5_EN == 0)
+ .fptrDpAdvancedCentroidTouchpad = NULL,
+#else
+ .fptrDpAdvancedCentroidTouchpad = &Cy_CapSense_DpAdvancedCentroidTouchpad,
+#endif
+
+#if ((CY_CAPSENSE_CSD_CALIBRATION_EN == 0) && (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0))
+ .fptrCSDCalibrateWidget = NULL,
+ .fptrCalibrateAllCsdWidgets = NULL,
+#else
+ .fptrCSDCalibrateWidget = &Cy_CapSense_CSDCalibrateWidget,
+ .fptrCalibrateAllCsdWidgets = &Cy_CapSense_CalibrateAllCsdWidgets,
+#endif
+
+#if (CY_CAPSENSE_CSX_CALIBRATION_EN == 0)
+ .fptrCalibrateAllCsxWidgets = NULL,
+#else
+ .fptrCalibrateAllCsxWidgets = &Cy_CapSense_CalibrateAllCsxWidgets,
+#endif
+
+#if (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0)
+ .fptrRunNoiseEnvelopeLib = NULL,
+ .fptrDpUpdateThresholds = NULL,
+ .fptrInitializeNoiseEnvelopeLib = NULL,
+#else
+ .fptrRunNoiseEnvelopeLib = &Cy_CapSense_RunNoiseEnvelope_Lib,
+ .fptrDpUpdateThresholds = &Cy_CapSense_DpUpdateThresholds,
+ .fptrInitializeNoiseEnvelopeLib = &Cy_CapSense_InitializeNoiseEnvelope_Lib,
+#endif
+
+#if ((CY_CAPSENSE_SMARTSENSE_HW_EN == 0) && (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0))
+ .fptrSsAutoTune = NULL,
+#else
+ .fptrSsAutoTune = &Cy_CapSense_SsAutoTune,
+#endif
+};
+
+static const cy_stc_capsense_pin_config_t cy_capsense_pinConfig[CY_CAPSENSE_PIN_COUNT] =
+{
+ { /* Button0_Rx0 */
+ Button0_Rx0_PORT,
+ Button0_Rx0_PIN,
+ },
+ { /* Button0_Tx */
+ Button0_Tx_PORT,
+ Button0_Tx_PIN,
+ },
+ { /* Button1_Rx0 */
+ Button1_Rx0_PORT,
+ Button1_Rx0_PIN,
+ },
+ { /* Button1_Tx */
+ Button1_Tx_PORT,
+ Button1_Tx_PIN,
+ },
+ { /* LinearSlider0_Sns0 */
+ LinearSlider0_Sns0_PORT,
+ LinearSlider0_Sns0_PIN,
+ },
+ { /* LinearSlider0_Sns1 */
+ LinearSlider0_Sns1_PORT,
+ LinearSlider0_Sns1_PIN,
+ },
+ { /* LinearSlider0_Sns2 */
+ LinearSlider0_Sns2_PORT,
+ LinearSlider0_Sns2_PIN,
+ },
+ { /* LinearSlider0_Sns3 */
+ LinearSlider0_Sns3_PORT,
+ LinearSlider0_Sns3_PIN,
+ },
+ { /* LinearSlider0_Sns4 */
+ LinearSlider0_Sns4_PORT,
+ LinearSlider0_Sns4_PIN,
+ },
+};
+
+#if (CY_CAPSENSE_SHIELD_PIN_COUNT > 0)
+ static const cy_stc_capsense_pin_config_t cy_capsense_shieldPinConfig[CY_CAPSENSE_SHIELD_PIN_COUNT] =
+ {
+ };
+#endif
+
+static const cy_stc_capsense_electrode_config_t cy_capsense_electrodeConfig[CY_CAPSENSE_ELTD_COUNT] =
+{
+ { /* Button0_Rx0 */
+ .ptrPin = &cy_capsense_pinConfig[0u],
+ .type = CY_CAPSENSE_ELTD_TYPE_MUT_RX_E,
+ .numPins = 1u,
+ },
+ { /* Button0_Tx */
+ .ptrPin = &cy_capsense_pinConfig[1u],
+ .type = CY_CAPSENSE_ELTD_TYPE_MUT_TX_E,
+ .numPins = 1u,
+ },
+ { /* Button1_Rx0 */
+ .ptrPin = &cy_capsense_pinConfig[2u],
+ .type = CY_CAPSENSE_ELTD_TYPE_MUT_RX_E,
+ .numPins = 1u,
+ },
+ { /* Button1_Tx */
+ .ptrPin = &cy_capsense_pinConfig[3u],
+ .type = CY_CAPSENSE_ELTD_TYPE_MUT_TX_E,
+ .numPins = 1u,
+ },
+ { /* LinearSlider0_Sns0 */
+ .ptrPin = &cy_capsense_pinConfig[4u],
+ .type = CY_CAPSENSE_ELTD_TYPE_SELF_E,
+ .numPins = 1u,
+ },
+ { /* LinearSlider0_Sns1 */
+ .ptrPin = &cy_capsense_pinConfig[5u],
+ .type = CY_CAPSENSE_ELTD_TYPE_SELF_E,
+ .numPins = 1u,
+ },
+ { /* LinearSlider0_Sns2 */
+ .ptrPin = &cy_capsense_pinConfig[6u],
+ .type = CY_CAPSENSE_ELTD_TYPE_SELF_E,
+ .numPins = 1u,
+ },
+ { /* LinearSlider0_Sns3 */
+ .ptrPin = &cy_capsense_pinConfig[7u],
+ .type = CY_CAPSENSE_ELTD_TYPE_SELF_E,
+ .numPins = 1u,
+ },
+ { /* LinearSlider0_Sns4 */
+ .ptrPin = &cy_capsense_pinConfig[8u],
+ .type = CY_CAPSENSE_ELTD_TYPE_SELF_E,
+ .numPins = 1u,
+ },
+};
+
+static const cy_stc_capsense_widget_config_t cy_capsense_widgetConfig[CY_CAPSENSE_WIDGET_COUNT] =
+{
+ { /* Button0 */
+ .ptrWdContext = &cy_capsense_tuner.widgetContext[0u],
+ .ptrSnsContext = &cy_capsense_tuner.sensorContext[0u],
+ .ptrEltdConfig = &cy_capsense_electrodeConfig[0u],
+ .ptrNoiseEnvelope = NULL,
+ .ptrRawFilterHistory = NULL,
+ .ptrRawFilterHistoryLow = NULL,
+ .iirCoeff = 128u,
+ .ptrDebounceArr = &cy_capsense_debounce[0u],
+ .ptrDiplexTable = NULL,
+ .centroidConfig = 0u,
+ .xResolution = 0u,
+ .yResolution = 0u,
+ .numSns = 1u,
+ .numCols = 1u,
+ .numRows = 1u,
+ .ptrPosFilterHistory = NULL,
+ .ptrCsxTouchHistory = NULL,
+ .ptrCsxTouchBuffer = NULL,
+ .ptrCsdTouchBuffer = NULL,
+ .ptrGestureConfig = NULL,
+ .ptrGestureContext = NULL,
+ .ballisticConfig = {
+ .accelCoeff = 9u,
+ .speedCoeff = 2u,
+ .divisorValue = 4u,
+ .speedThresholdX = 3u,
+ .speedThresholdY = 4u,
+ },
+ .ptrBallisticContext = NULL,
+ .aiirConfig = {
+ .maxK = 60u,
+ .minK = 1u,
+ .noMovTh = 3u,
+ .littleMovTh = 7u,
+ .largeMovTh = 12u,
+ .divVal = 64u,
+ },
+ .advConfig = {
+ .penultimateTh = 100u,
+ .virtualSnsTh = 100u,
+ .crossCouplingTh = 5u,
+ },
+ .posFilterConfig = 0u,
+ .rawFilterConfig = 0u,
+ .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSX_E,
+ .wdType = CY_CAPSENSE_WD_BUTTON_E,
+ },
+ { /* Button1 */
+ .ptrWdContext = &cy_capsense_tuner.widgetContext[1u],
+ .ptrSnsContext = &cy_capsense_tuner.sensorContext[1u],
+ .ptrEltdConfig = &cy_capsense_electrodeConfig[2u],
+ .ptrNoiseEnvelope = NULL,
+ .ptrRawFilterHistory = NULL,
+ .ptrRawFilterHistoryLow = NULL,
+ .iirCoeff = 128u,
+ .ptrDebounceArr = &cy_capsense_debounce[1u],
+ .ptrDiplexTable = NULL,
+ .centroidConfig = 0u,
+ .xResolution = 0u,
+ .yResolution = 0u,
+ .numSns = 1u,
+ .numCols = 1u,
+ .numRows = 1u,
+ .ptrPosFilterHistory = NULL,
+ .ptrCsxTouchHistory = NULL,
+ .ptrCsxTouchBuffer = NULL,
+ .ptrCsdTouchBuffer = NULL,
+ .ptrGestureConfig = NULL,
+ .ptrGestureContext = NULL,
+ .ballisticConfig = {
+ .accelCoeff = 9u,
+ .speedCoeff = 2u,
+ .divisorValue = 4u,
+ .speedThresholdX = 3u,
+ .speedThresholdY = 4u,
+ },
+ .ptrBallisticContext = NULL,
+ .aiirConfig = {
+ .maxK = 60u,
+ .minK = 1u,
+ .noMovTh = 3u,
+ .littleMovTh = 7u,
+ .largeMovTh = 12u,
+ .divVal = 64u,
+ },
+ .advConfig = {
+ .penultimateTh = 100u,
+ .virtualSnsTh = 100u,
+ .crossCouplingTh = 5u,
+ },
+ .posFilterConfig = 0u,
+ .rawFilterConfig = 0u,
+ .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSX_E,
+ .wdType = CY_CAPSENSE_WD_BUTTON_E,
+ },
+ { /* LinearSlider0 */
+ .ptrWdContext = &cy_capsense_tuner.widgetContext[2u],
+ .ptrSnsContext = &cy_capsense_tuner.sensorContext[2u],
+ .ptrEltdConfig = &cy_capsense_electrodeConfig[4u],
+ .ptrNoiseEnvelope = NULL,
+ .ptrRawFilterHistory = NULL,
+ .ptrRawFilterHistoryLow = NULL,
+ .iirCoeff = 128u,
+ .ptrDebounceArr = &cy_capsense_debounce[2u],
+ .ptrDiplexTable = NULL,
+ .centroidConfig = 1u,
+ .xResolution = 100u,
+ .yResolution = 0u,
+ .numSns = 5u,
+ .numCols = 5u,
+ .numRows = 0u,
+ .ptrPosFilterHistory = &cy_capsense_touchFilterHistory[0u],
+ .ptrCsxTouchHistory = NULL,
+ .ptrCsxTouchBuffer = NULL,
+ .ptrCsdTouchBuffer = NULL,
+ .ptrGestureConfig = NULL,
+ .ptrGestureContext = NULL,
+ .ballisticConfig = {
+ .accelCoeff = 9u,
+ .speedCoeff = 2u,
+ .divisorValue = 4u,
+ .speedThresholdX = 3u,
+ .speedThresholdY = 4u,
+ },
+ .ptrBallisticContext = NULL,
+ .aiirConfig = {
+ .maxK = 60u,
+ .minK = 1u,
+ .noMovTh = 3u,
+ .littleMovTh = 7u,
+ .largeMovTh = 12u,
+ .divVal = 64u,
+ },
+ .advConfig = {
+ .penultimateTh = 100u,
+ .virtualSnsTh = 100u,
+ .crossCouplingTh = 5u,
+ },
+ .posFilterConfig = 272u,
+ .rawFilterConfig = 0u,
+ .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSD_E,
+ .wdType = CY_CAPSENSE_WD_LINEAR_SLIDER_E,
+ },
+};
+
+cy_stc_capsense_tuner_t cy_capsense_tuner =
+{
+ .commonContext = {
+ .configId = 0xca04,
+ .tunerCmd = 0u,
+ .scanCounter = 0u,
+ .tunerSt = 0u,
+ .initDone = 0u,
+ .ptrSSCallback = NULL,
+ .ptrEOSCallback = NULL,
+ .ptrTunerSendCallback = NULL,
+ .ptrTunerReceiveCallback = NULL,
+ .status = 0u,
+ .timestampInterval = 1u,
+ .timestamp = 0u,
+ .modCsdClk = 4u,
+ .modCsxClk = 4u,
+ .tunerCnt = 0u,
+ },
+ .widgetContext = {
+ {
+ .fingerCap = 300u,
+ .sigPFC = 0u,
+ .resolution = 100u,
+ .maxRawCount = 0u,
+ .fingerTh = 90u,
+ .proxTh = 200u,
+ .lowBslnRst = 30u,
+ .snsClk = 80u,
+ .rowSnsClk = 2u,
+ .gestureDetected = 0u,
+ .gestureDirection = 0u,
+ .xDelta = 0u,
+ .yDelta = 0u,
+ .noiseTh = 40u,
+ .nNoiseTh = 40u,
+ .hysteresis = 20u,
+ .onDebounce = 3u,
+ .snsClkSource = CY_CAPSENSE_CLK_SOURCE_AUTO_MASK,
+ .idacMod = { 32u, 32u, 32u, },
+ .idacGainIndex = 2u,
+ .rowIdacMod = { 32u, 32u, 32u, },
+ .bslnCoeff = 1u,
+ .status = 0u,
+ .wdTouch = {
+ .ptrPosition = NULL,
+ .numPosition = 0,
+ },
+ },
+ {
+ .fingerCap = 160u,
+ .sigPFC = 0u,
+ .resolution = 100u,
+ .maxRawCount = 0u,
+ .fingerTh = 90u,
+ .proxTh = 200u,
+ .lowBslnRst = 30u,
+ .snsClk = 80u,
+ .rowSnsClk = 16u,
+ .gestureDetected = 0u,
+ .gestureDirection = 0u,
+ .xDelta = 0u,
+ .yDelta = 0u,
+ .noiseTh = 40u,
+ .nNoiseTh = 40u,
+ .hysteresis = 20u,
+ .onDebounce = 3u,
+ .snsClkSource = CY_CAPSENSE_CLK_SOURCE_AUTO_MASK,
+ .idacMod = { 32u, 32u, 32u, },
+ .idacGainIndex = 2u,
+ .rowIdacMod = { 32u, 32u, 32u, },
+ .bslnCoeff = 1u,
+ .status = 0u,
+ .wdTouch = {
+ .ptrPosition = NULL,
+ .numPosition = 0,
+ },
+ },
+ {
+ .fingerCap = 100u,
+ .sigPFC = 0u,
+ .resolution = 13u,
+ .maxRawCount = 0u,
+ .fingerTh = 100u,
+ .proxTh = 200u,
+ .lowBslnRst = 30u,
+ .snsClk = 34u,
+ .rowSnsClk = 2u,
+ .gestureDetected = 0u,
+ .gestureDirection = 0u,
+ .xDelta = 0u,
+ .yDelta = 0u,
+ .noiseTh = 40u,
+ .nNoiseTh = 40u,
+ .hysteresis = 10u,
+ .onDebounce = 3u,
+ .snsClkSource = CY_CAPSENSE_CLK_SOURCE_DIRECT,
+ .idacMod = { 32u, 32u, 32u, },
+ .idacGainIndex = 4u,
+ .rowIdacMod = { 32u, 32u, 32u, },
+ .bslnCoeff = 1u,
+ .status = 0u,
+ .wdTouch = {
+ .ptrPosition = &cy_capsense_tuner.position[0u],
+ .numPosition = 1,
+ },
+ },
+ },
+ .sensorContext = {
+ {
+ .raw = 0u,
+ .bsln = 0u,
+ .diff = 0u,
+ .status = 0u,
+ .negBslnRstCnt = 0u,
+ .idacComp = 32u,
+ .bslnExt = 0u,
+ },
+ {
+ .raw = 0u,
+ .bsln = 0u,
+ .diff = 0u,
+ .status = 0u,
+ .negBslnRstCnt = 0u,
+ .idacComp = 32u,
+ .bslnExt = 0u,
+ },
+ {
+ .raw = 0u,
+ .bsln = 0u,
+ .diff = 0u,
+ .status = 0u,
+ .negBslnRstCnt = 0u,
+ .idacComp = 32u,
+ .bslnExt = 0u,
+ },
+ {
+ .raw = 0u,
+ .bsln = 0u,
+ .diff = 0u,
+ .status = 0u,
+ .negBslnRstCnt = 0u,
+ .idacComp = 32u,
+ .bslnExt = 0u,
+ },
+ {
+ .raw = 0u,
+ .bsln = 0u,
+ .diff = 0u,
+ .status = 0u,
+ .negBslnRstCnt = 0u,
+ .idacComp = 32u,
+ .bslnExt = 0u,
+ },
+ {
+ .raw = 0u,
+ .bsln = 0u,
+ .diff = 0u,
+ .status = 0u,
+ .negBslnRstCnt = 0u,
+ .idacComp = 32u,
+ .bslnExt = 0u,
+ },
+ {
+ .raw = 0u,
+ .bsln = 0u,
+ .diff = 0u,
+ .status = 0u,
+ .negBslnRstCnt = 0u,
+ .idacComp = 32u,
+ .bslnExt = 0u,
+ },
+ },
+ .position = {
+ {
+ .x = 0u,
+ .y = 0u,
+ .z = 0u,
+ .id = 0u,
+ },
+ },
+};
+
+cy_stc_capsense_context_t cy_capsense_context =
+{
+ .ptrCommonConfig = &cy_capsense_commonConfig,
+ .ptrCommonContext = &cy_capsense_tuner.commonContext,
+ .ptrInternalContext = &cy_capsense_internalContext,
+ .ptrWdConfig = &cy_capsense_widgetConfig[0u],
+ .ptrWdContext = &cy_capsense_tuner.widgetContext[0u],
+ .ptrPinConfig = &cy_capsense_pinConfig[0u],
+ .ptrShieldPinConfig = NULL,
+ .ptrActiveScanSns = &cy_capsense_activeScanSns,
+ .ptrFptrConfig = (const void *) &cy_capsense_fptrConfig,
+};
+
+#endif /* CY_CAPSENSE_CORE == __CORTEX_M */
+
+/* [] END OF FILE */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cycfg_capsense.h Fri Oct 11 12:43:11 2019 +0000
@@ -0,0 +1,615 @@
+/*******************************************************************************
+* File Name: cycfg_capsense.h
+* Version: 2.0
+*
+* Description:
+* CapSense middleware configuration
+* This file should not be modified. It was automatically generated by
+* CapSense Configurator 2.0.0 build 566
+*
+********************************************************************************
+* Copyright 2019 Cypress Semiconductor Corporation
+* SPDX-License-Identifier: Apache-2.0
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*******************************************************************************/
+
+#if !defined(CYCFG_CAPSENSE_H)
+#define CYCFG_CAPSENSE_H
+
+#include <stddef.h>
+#include "cy_device_headers.h"
+#include "cycfg_peripherals.h"
+
+#if (CY_CAPSENSE_CORE == __CORTEX_M)
+
+
+#if !defined(Cmod_PORT) || !defined(Cmod_PIN) || !defined(Cmod_PORT_NUM)
+#error Cmod Capacitor is not assigned: missing #define Cmod_PORT, #define Cmod_PIN, #define Cmod_PORT_NUM
+#endif
+
+#if !defined(CintA_PORT) || !defined(CintA_PIN) || !defined(CintA_PORT_NUM)
+#error CintA Capacitor is not assigned: missing #define CintA_PORT, #define CintA_PIN, #define CintA_PORT_NUM
+#endif
+
+#if !defined(CintB_PORT) || !defined(CintB_PIN) || !defined(CintB_PORT_NUM)
+#error CintB Capacitor is not assigned: missing #define CintB_PORT, #define CintB_PIN, #define CintB_PORT_NUM
+#endif
+
+#if !defined(Button0_Rx0_PORT) || !defined(Button0_Rx0_PIN)
+#error Button0_Rx0 Sensor is not assigned: missing #define Button0_Rx0_PORT, #define Button0_Rx0_PIN
+#endif
+
+#if !defined(Button0_Tx_PORT) || !defined(Button0_Tx_PIN)
+#error Button0_Tx Sensor is not assigned: missing #define Button0_Tx_PORT, #define Button0_Tx_PIN
+#endif
+
+#if !defined(Button1_Rx0_PORT) || !defined(Button1_Rx0_PIN)
+#error Button1_Rx0 Sensor is not assigned: missing #define Button1_Rx0_PORT, #define Button1_Rx0_PIN
+#endif
+
+#if !defined(Button1_Tx_PORT) || !defined(Button1_Tx_PIN)
+#error Button1_Tx Sensor is not assigned: missing #define Button1_Tx_PORT, #define Button1_Tx_PIN
+#endif
+
+#if !defined(LinearSlider0_Sns0_PORT) || !defined(LinearSlider0_Sns0_PIN)
+#error LinearSlider0_Sns0 Sensor is not assigned: missing #define LinearSlider0_Sns0_PORT, #define LinearSlider0_Sns0_PIN
+#endif
+
+#if !defined(LinearSlider0_Sns1_PORT) || !defined(LinearSlider0_Sns1_PIN)
+#error LinearSlider0_Sns1 Sensor is not assigned: missing #define LinearSlider0_Sns1_PORT, #define LinearSlider0_Sns1_PIN
+#endif
+
+#if !defined(LinearSlider0_Sns2_PORT) || !defined(LinearSlider0_Sns2_PIN)
+#error LinearSlider0_Sns2 Sensor is not assigned: missing #define LinearSlider0_Sns2_PORT, #define LinearSlider0_Sns2_PIN
+#endif
+
+#if !defined(LinearSlider0_Sns3_PORT) || !defined(LinearSlider0_Sns3_PIN)
+#error LinearSlider0_Sns3 Sensor is not assigned: missing #define LinearSlider0_Sns3_PORT, #define LinearSlider0_Sns3_PIN
+#endif
+
+#if !defined(LinearSlider0_Sns4_PORT) || !defined(LinearSlider0_Sns4_PIN)
+#error LinearSlider0_Sns4 Sensor is not assigned: missing #define LinearSlider0_Sns4_PORT, #define LinearSlider0_Sns4_PIN
+#endif
+
+#if !defined(CY_CAPSENSE_CPU_CLK)
+#error CPU clock frequency is not set: missing #define CY_CAPSENSE_CPU_CLK
+#endif
+
+#if !defined(CY_CAPSENSE_PERI_CLK)
+#error Peripheral clock core is not set: missing #define CY_CAPSENSE_PERI_CLK
+#endif
+
+#if !defined(CY_CAPSENSE_VDDA_MV)
+#error VDDA voltage is not set: missing #define CY_CAPSENSE_VDDA_MV
+#endif
+
+#if !defined(CY_CAPSENSE_PERI_DIV_TYPE)
+#error Peripheral clock divider type is not set: missing #define CY_CAPSENSE_PERI_DIV_TYPE
+#endif
+
+#if !defined(CY_CAPSENSE_PERI_DIV_INDEX)
+#error Peripheral clock divider index is not set: missing #define CY_CAPSENSE_PERI_DIV_INDEX
+#endif
+
+
+
+#include "cy_capsense.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*Widget names */
+#define CY_CAPSENSE_BUTTON0_WDGT_ID (0u)
+#define CY_CAPSENSE_BUTTON1_WDGT_ID (1u)
+#define CY_CAPSENSE_LINEARSLIDER0_WDGT_ID (2u)
+
+/* Button0 sensor names */
+#define CY_CAPSENSE_BUTTON0_SNS0_ID (0u)
+
+/* Button0 node names */
+#define CY_CAPSENSE_BUTTON0_RX0_TX0_ID (0u)
+
+/* Button0 sensor element IDs */
+#define CY_CAPSENSE_BUTTON0_RX0_ID (0u)
+#define CY_CAPSENSE_BUTTON0_TX0_ID (1u)
+
+/* Button1 sensor names */
+#define CY_CAPSENSE_BUTTON1_SNS0_ID (0u)
+
+/* Button1 node names */
+#define CY_CAPSENSE_BUTTON1_RX0_TX0_ID (0u)
+
+/* Button1 sensor element IDs */
+#define CY_CAPSENSE_BUTTON1_RX0_ID (0u)
+#define CY_CAPSENSE_BUTTON1_TX0_ID (1u)
+
+/* LinearSlider0 sensor names */
+#define CY_CAPSENSE_LINEARSLIDER0_SNS0_ID (0u)
+#define CY_CAPSENSE_LINEARSLIDER0_SNS1_ID (1u)
+#define CY_CAPSENSE_LINEARSLIDER0_SNS2_ID (2u)
+#define CY_CAPSENSE_LINEARSLIDER0_SNS3_ID (3u)
+#define CY_CAPSENSE_LINEARSLIDER0_SNS4_ID (4u)
+
+/* Sensing Methods */
+#define CY_CAPSENSE_CSD_EN (1u)
+#define CY_CAPSENSE_CSX_EN (1u)
+#define CY_CAPSENSE_CSD_CALIBRATION_EN (1u)
+#define CY_CAPSENSE_CSX_CALIBRATION_EN (1u)
+#define CY_CAPSENSE_SMARTSENSE_FULL_EN (0u)
+#define CY_CAPSENSE_SMARTSENSE_HW_EN (0u)
+#define CY_CAPSENSE_SMARTSENSE_DISABLED (1u)
+#define CY_CAPSENSE_CSD_SHIELD_EN (0u)
+#define CY_CAPSENSE_CSD_SHIELD_CAP_EN (0u)
+
+/* Filtering */
+#define CY_CAPSENSE_ADAPTIVE_FILTER_EN (0u)
+#define CY_CAPSENSE_BALLISTIC_MULTIPLIER_EN (0u)
+#define CY_CAPSENSE_RAWCOUNT_FILTER_EN (0u)
+#define CY_CAPSENSE_POSITION_FILTER_EN (1u)
+#define CY_CAPSENSE_CSD_POSITION_FILTER_EN (1u)
+#define CY_CAPSENSE_CSX_POSITION_FILTER_EN (0u)
+
+/* Widgets */
+#define CY_CAPSENSE_CSD_BUTTON_EN (0u)
+#define CY_CAPSENSE_CSD_MATRIX_EN (0u)
+#define CY_CAPSENSE_CSD_SLIDER_EN (1u)
+#define CY_CAPSENSE_CSD_TOUCHPAD_EN (0u)
+#define CY_CAPSENSE_CSD_PROXIMITY_EN (0u)
+#define CY_CAPSENSE_CSX_BUTTON_EN (1u)
+#define CY_CAPSENSE_CSX_MATRIX_EN (0u)
+#define CY_CAPSENSE_CSX_TOUCHPAD_EN (0u)
+#define CY_CAPSENSE_ADVANCED_CENTROID_5X5_EN (0u)
+#define CY_CAPSENSE_CSD_LINEAR_SLIDER_EN (1u)
+#define CY_CAPSENSE_CSD_RADIAL_SLIDER_EN (0u)
+#define CY_CAPSENSE_CSD_DIPLEX_SLIDER_EN (0u)
+
+/* Features */
+#define CY_CAPSENSE_GESTURE_EN (0u)
+#define CY_CAPSENSE_MULTI_FREQUENCY_SCAN_EN (0u)
+#define CY_CAPSENSE_SNS_AUTO_RESET_EN (0u)
+
+typedef struct {
+ cy_stc_capsense_common_context_t commonContext;
+ cy_stc_capsense_widget_context_t widgetContext[3];
+ cy_stc_capsense_sensor_context_t sensorContext[7];
+ cy_stc_capsense_position_t position[1];
+} cy_stc_capsense_tuner_t;
+
+extern cy_stc_capsense_tuner_t cy_capsense_tuner;
+
+extern cy_stc_capsense_context_t cy_capsense_context;
+
+/*
+CAPSENSE_CONFIG_START
+<?xml version="1.0"?>
+<Configuration major="1" minor="1">
+ <GeneralProperties>
+ <Property id="REGULAR_RC_IIR_FILTER_EN" value="false"/>
+ <Property id="REGULAR_IIR_RC_N" value="128"/>
+ <Property id="REGULAR_RC_MEDIAN_FILTER_EN" value="false"/>
+ <Property id="REGULAR_RC_AVERAGE_FILTER_EN" value="false"/>
+ <Property id="REGULAR_RC_AVERAGE_SAMPLE_SIZE" value="SAMPLE_4"/>
+ <Property id="PROX_RC_IIR_FILTER_EN" value="false"/>
+ <Property id="PROX_IIR_RC_N" value="128"/>
+ <Property id="PROX_RC_MEDIAN_FILTER_EN" value="false"/>
+ <Property id="PROX_RC_AVERAGE_FILTER_EN" value="false"/>
+ <Property id="PROX_RC_AVERAGE_SAMPLE_SIZE" value="SAMPLE_4"/>
+ <Property id="REGULAR_IIR_BL_N" value="1"/>
+ <Property id="REGULAR_IIR_BL_TYPE" value="PERFORMANCE"/>
+ <Property id="PROX_IIR_BL_N" value="1"/>
+ <Property id="PROX_IIR_BL_TYPE" value="PERFORMANCE"/>
+ <Property id="MULTI_FREQ_SCAN_EN" value="false"/>
+ <Property id="SENSOR_AUTO_RESET_EN" value="false"/>
+ <Property id="SLIDER_MULTIPLIER" value="SNS_NUM_MINUS_1"/>
+ <Property id="TOUCHPAD_MULTIPLIER" value="SNS_NUM_MINUS_1"/>
+ <Property id="BLOCK_ANALOG_WAKEUP_DELAY_US" value="25"/>
+ <Property id="VREF_SOURCE" value="SRSS"/>
+ <Property id="IREF_SOURCE" value="SRSS"/>
+ <Property id="PROX_TOUCH_COEFF" value="300"/>
+ <Property id="NUM_CENTROIDS" value="1"/>
+ </GeneralProperties>
+ <CsdProperties>
+ <Property id="CSD_AUTOTUNE" value="DISABLE"/>
+ <Property id="CSD_MOD_CLK_DIVIDER" value="1"/>
+ <Property id="CSD_INACTIVE_SNS_CONNECTION" value="GROUND"/>
+ <Property id="CSD_CHARGE_TRANSFER" value="SOURCING"/>
+ <Property id="CSD_IDAC_GAIN_INIT" value="4"/>
+ <Property id="CSD_IDAC_ROW_COL_ALIGN_EN" value="true"/>
+ <Property id="CSD_IDAC_AUTOCAL_EN" value="true"/>
+ <Property id="CSD_IDAC_AUTOGAIN_EN" value="true"/>
+ <Property id="CSD_IDAC_GAIN_INDEX" value="4"/>
+ <Property id="CSD_IDAC_MIN" value="20"/>
+ <Property id="CSD_IDAC_COMP_EN" value="true"/>
+ <Property id="CSD_RAWCOUNT_CAL_LEVEL" value="85"/>
+ <Property id="CSD_VREF_CUSTOM" value="false"/>
+ <Property id="CSD_VREF" value="1219"/>
+ <Property id="CSD_SHIELD_EN" value="false"/>
+ <Property id="CSD_SHIELD_TANK_EN" value="false"/>
+ <Property id="CSD_SHIELD_DELAY" value="DELAY_0NS"/>
+ <Property id="CSD_TOTAL_SHIELD_COUNT" value="1"/>
+ <Property id="CSD_INIT_SWITCH_RES" value="MEDIUM"/>
+ <Property id="CSD_SHIELD_SWITCH_RES" value="MEDIUM"/>
+ <Property id="CSD_FINE_INIT_TIME" value="10"/>
+ <Property id="CSD_CALIBRATION_ERROR" value="10"/>
+ <Property id="CSD_R_CONST" value="1000"/>
+ <Property id="CSD_MFS_DIVIDER_OFFSET_F1" value="1"/>
+ <Property id="CSD_MFS_DIVIDER_OFFSET_F2" value="2"/>
+ </CsdProperties>
+ <CsxProperties>
+ <Property id="CSX_MOD_CLK_DIVIDER" value="1"/>
+ <Property id="CSX_MAX_FINGERS" value="1"/>
+ <Property id="CSX_IDAC_GAIN" value="MEDIUM"/>
+ <Property id="CSX_IDAC_AUTOCAL_EN" value="true"/>
+ <Property id="CSX_RAWCOUNT_CAL_LEVEL" value="85"/>
+ <Property id="CSX_INIT_SWITCH_RES" value="MEDIUM"/>
+ <Property id="CSX_SCAN_SWITCH_RES" value="MEDIUM"/>
+ <Property id="CSX_INIT_SHIELD_SWITCH_RES" value="MEDIUM"/>
+ <Property id="CSX_SCAN_SHIELD_SWITCH_RES" value="MEDIUM"/>
+ <Property id="CSX_FINE_INIT_TIME" value="10"/>
+ <Property id="CSX_CALIBRATION_ERROR" value="20"/>
+ <Property id="CSX_MFS_DIVIDER_OFFSET_F1" value="1"/>
+ <Property id="CSX_MFS_DIVIDER_OFFSET_F2" value="2"/>
+ </CsxProperties>
+ <Widgets>
+ <Widget id="Button0" type="CSX_BUTTON">
+ <WidgetProperties>
+ <Property id="DIPLEXING" value="false"/>
+ <Property id="MAX_POS_X" value="100"/>
+ <Property id="MAX_POS_Y" value="100"/>
+ <Property id="FINGER_CP" value="0.3"/>
+ <Property id="SNS_CLK" value="2"/>
+ <Property id="SNS_CLK_FREQ" value=""/>
+ <Property id="ROW_SNS_CLK" value="2"/>
+ <Property id="ROW_SNS_CLK_FREQ" value=""/>
+ <Property id="SNS_CLK_SOURCE" value="DIRECT"/>
+ <Property id="TX_CLK" value="80"/>
+ <Property id="TX_CLK_FREQ" value=""/>
+ <Property id="TX_CLK_SOURCE" value="AUTO"/>
+ <Property id="RESOLUTION" value="RES12BIT"/>
+ <Property id="NUM_CONV" value="100"/>
+ <Property id="IDAC_MOD0" value="32"/>
+ <Property id="IDAC_MOD1" value="32"/>
+ <Property id="IDAC_MOD2" value="32"/>
+ <Property id="ROW_IDAC_MOD0" value="32"/>
+ <Property id="ROW_IDAC_MOD1" value="32"/>
+ <Property id="ROW_IDAC_MOD2" value="32"/>
+ <Property id="FINGER_TH" value="90"/>
+ <Property id="PROX_TOUCH_TH" value="200"/>
+ <Property id="NOISE_TH" value="40"/>
+ <Property id="NNOISE_TH" value="40"/>
+ <Property id="LOW_BSLN_RST" value="30"/>
+ <Property id="HYSTERESIS" value="20"/>
+ <Property id="ON_DEBOUNCE" value="3"/>
+ <Property id="VELOCITY" value="2500"/>
+ <Property id="IIR_FILTER" value="false"/>
+ <Property id="IIR_FILTER_COEFF" value="128"/>
+ <Property id="MEDIAN_FILTER" value="false"/>
+ <Property id="AVG_FILTER" value="false"/>
+ <Property id="JITTER_FILTER" value="false"/>
+ <Property id="AIIR_FILTER" value="false"/>
+ <Property id="AIIR_NO_MOV_TH" value="3"/>
+ <Property id="AIIR_LITTLE_MOV_TH" value="7"/>
+ <Property id="AIIR_LARGE_MOV_TH" value="12"/>
+ <Property id="AIIR_MAXK" value="60"/>
+ <Property id="AIIR_MINK" value="1"/>
+ <Property id="AIIR_DIV_VAL" value="64"/>
+ <Property id="CENTROID_TYPE" value="CSD3X3"/>
+ <Property id="CROSS_COUPLING_POS_TH" value="5"/>
+ <Property id="EDGE_CORRECTION" value="true"/>
+ <Property id="EDGE_VIRTUAL_SENSOR_TH" value="100"/>
+ <Property id="EDGE_PENULTIMATE_TH" value="100"/>
+ <Property id="TWO_FINGER_DETECTION" value="false"/>
+ <Property id="ACCEL_COEFF" value="9"/>
+ <Property id="SPEED_COEFF" value="2"/>
+ <Property id="DIVISOR" value="4"/>
+ <Property id="SPEED_TH_X" value="3"/>
+ <Property id="SPEED_TH_Y" value="4"/>
+ <Property id="BALLISTIC_MULT" value="false"/>
+ <Property id="GESTURE_ENABLE" value="false"/>
+ <Property id="GESTURE_1F_SINGLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_DOUBLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_CLICK_DRAG_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_SINGLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_SCROLL_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_SCROLL_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_EDGE_SWIPE_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_FLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_ROTATE_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_ZOOM_ENABLE" value="true"/>
+ <Property id="GESTURE_FILTERING_ENABLE" value="false"/>
+ <Property id="CLICK_TIMEOUT_MAX" value="1000"/>
+ <Property id="CLICK_TIMEOUT_MIN" value="0"/>
+ <Property id="CLICK_DISTANCE_MAX" value="100"/>
+ <Property id="SECOND_CLICK_INTERVAL_MAX" value="1000"/>
+ <Property id="SECOND_CLICK_INTERVAL_MIN" value="0"/>
+ <Property id="SECOND_CLICK_DISTANCE_MAX" value="100"/>
+ <Property id="SCROLL_DEBOUNCE" value="3"/>
+ <Property id="SCROLL_DISTANCE_MIN" value="20"/>
+ <Property id="ROTATE_DEBOUNCE" value="10"/>
+ <Property id="ROTATE_DISTANCE_MIN" value="50"/>
+ <Property id="ZOOM_DEBOUNCE" value="3"/>
+ <Property id="ZOOM_DISTANCE_MIN" value="50"/>
+ <Property id="FLICK_TIMEOUT_MAX" value="300"/>
+ <Property id="FLICK_DISTANCE_MIN" value="100"/>
+ <Property id="EDGE_EDGE_SIZE" value="200"/>
+ <Property id="EDGE_DISTANCE_MIN" value="200"/>
+ <Property id="EDGE_TIMEOUT_MAX" value="2000"/>
+ <Property id="EDGE_ANGLE_MAX" value="45"/>
+ </WidgetProperties>
+ <Electrodes>
+ <Electrode id="Rx0" kind="Column">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ <Electrode id="Tx" kind="Row">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ </Electrodes>
+ </Widget>
+ <Widget id="Button1" type="CSX_BUTTON">
+ <WidgetProperties>
+ <Property id="DIPLEXING" value="false"/>
+ <Property id="MAX_POS_X" value="300"/>
+ <Property id="MAX_POS_Y" value="300"/>
+ <Property id="FINGER_CP" value="0.16"/>
+ <Property id="SNS_CLK" value="16"/>
+ <Property id="SNS_CLK_FREQ" value=""/>
+ <Property id="ROW_SNS_CLK" value="16"/>
+ <Property id="ROW_SNS_CLK_FREQ" value=""/>
+ <Property id="SNS_CLK_SOURCE" value="AUTO"/>
+ <Property id="TX_CLK" value="80"/>
+ <Property id="TX_CLK_FREQ" value=""/>
+ <Property id="TX_CLK_SOURCE" value="AUTO"/>
+ <Property id="RESOLUTION" value="RES12BIT"/>
+ <Property id="NUM_CONV" value="100"/>
+ <Property id="IDAC_MOD0" value="32"/>
+ <Property id="IDAC_MOD1" value="32"/>
+ <Property id="IDAC_MOD2" value="32"/>
+ <Property id="ROW_IDAC_MOD0" value="32"/>
+ <Property id="ROW_IDAC_MOD1" value="32"/>
+ <Property id="ROW_IDAC_MOD2" value="32"/>
+ <Property id="FINGER_TH" value="90"/>
+ <Property id="PROX_TOUCH_TH" value="200"/>
+ <Property id="NOISE_TH" value="40"/>
+ <Property id="NNOISE_TH" value="40"/>
+ <Property id="LOW_BSLN_RST" value="30"/>
+ <Property id="HYSTERESIS" value="20"/>
+ <Property id="ON_DEBOUNCE" value="3"/>
+ <Property id="VELOCITY" value="45000"/>
+ <Property id="IIR_FILTER" value="false"/>
+ <Property id="IIR_FILTER_COEFF" value="128"/>
+ <Property id="MEDIAN_FILTER" value="false"/>
+ <Property id="AVG_FILTER" value="false"/>
+ <Property id="JITTER_FILTER" value="false"/>
+ <Property id="AIIR_FILTER" value="false"/>
+ <Property id="AIIR_NO_MOV_TH" value="3"/>
+ <Property id="AIIR_LITTLE_MOV_TH" value="7"/>
+ <Property id="AIIR_LARGE_MOV_TH" value="12"/>
+ <Property id="AIIR_MAXK" value="60"/>
+ <Property id="AIIR_MINK" value="1"/>
+ <Property id="AIIR_DIV_VAL" value="64"/>
+ <Property id="CENTROID_TYPE" value="CSD3X3"/>
+ <Property id="CROSS_COUPLING_POS_TH" value="5"/>
+ <Property id="EDGE_CORRECTION" value="true"/>
+ <Property id="EDGE_VIRTUAL_SENSOR_TH" value="100"/>
+ <Property id="EDGE_PENULTIMATE_TH" value="100"/>
+ <Property id="TWO_FINGER_DETECTION" value="false"/>
+ <Property id="ACCEL_COEFF" value="9"/>
+ <Property id="SPEED_COEFF" value="2"/>
+ <Property id="DIVISOR" value="4"/>
+ <Property id="SPEED_TH_X" value="3"/>
+ <Property id="SPEED_TH_Y" value="4"/>
+ <Property id="BALLISTIC_MULT" value="false"/>
+ <Property id="GESTURE_ENABLE" value="false"/>
+ <Property id="GESTURE_1F_SINGLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_DOUBLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_CLICK_DRAG_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_SINGLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_SCROLL_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_SCROLL_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_EDGE_SWIPE_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_FLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_ROTATE_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_ZOOM_ENABLE" value="true"/>
+ <Property id="GESTURE_FILTERING_ENABLE" value="false"/>
+ <Property id="CLICK_TIMEOUT_MAX" value="1000"/>
+ <Property id="CLICK_TIMEOUT_MIN" value="0"/>
+ <Property id="CLICK_DISTANCE_MAX" value="100"/>
+ <Property id="SECOND_CLICK_INTERVAL_MAX" value="1000"/>
+ <Property id="SECOND_CLICK_INTERVAL_MIN" value="0"/>
+ <Property id="SECOND_CLICK_DISTANCE_MAX" value="100"/>
+ <Property id="SCROLL_DEBOUNCE" value="3"/>
+ <Property id="SCROLL_DISTANCE_MIN" value="20"/>
+ <Property id="ROTATE_DEBOUNCE" value="10"/>
+ <Property id="ROTATE_DISTANCE_MIN" value="50"/>
+ <Property id="ZOOM_DEBOUNCE" value="3"/>
+ <Property id="ZOOM_DISTANCE_MIN" value="50"/>
+ <Property id="FLICK_TIMEOUT_MAX" value="300"/>
+ <Property id="FLICK_DISTANCE_MIN" value="100"/>
+ <Property id="EDGE_EDGE_SIZE" value="200"/>
+ <Property id="EDGE_DISTANCE_MIN" value="200"/>
+ <Property id="EDGE_TIMEOUT_MAX" value="2000"/>
+ <Property id="EDGE_ANGLE_MAX" value="45"/>
+ </WidgetProperties>
+ <Electrodes>
+ <Electrode id="Rx0" kind="Column">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ <Electrode id="Tx" kind="Row">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ </Electrodes>
+ </Widget>
+ <Widget id="LinearSlider0" type="LINEAR_SLIDER">
+ <WidgetProperties>
+ <Property id="DIPLEXING" value="false"/>
+ <Property id="MAX_POS_X" value="100"/>
+ <Property id="MAX_POS_Y" value="100"/>
+ <Property id="FINGER_CP" value="0.1"/>
+ <Property id="SNS_CLK" value="34"/>
+ <Property id="SNS_CLK_FREQ" value=""/>
+ <Property id="ROW_SNS_CLK" value="2"/>
+ <Property id="ROW_SNS_CLK_FREQ" value=""/>
+ <Property id="SNS_CLK_SOURCE" value="DIRECT"/>
+ <Property id="TX_CLK" value="2"/>
+ <Property id="TX_CLK_FREQ" value=""/>
+ <Property id="TX_CLK_SOURCE" value="AUTO"/>
+ <Property id="RESOLUTION" value="RES13BIT"/>
+ <Property id="NUM_CONV" value="100"/>
+ <Property id="IDAC_MOD0" value="32"/>
+ <Property id="IDAC_MOD1" value="32"/>
+ <Property id="IDAC_MOD2" value="32"/>
+ <Property id="ROW_IDAC_MOD0" value="32"/>
+ <Property id="ROW_IDAC_MOD1" value="32"/>
+ <Property id="ROW_IDAC_MOD2" value="32"/>
+ <Property id="FINGER_TH" value="100"/>
+ <Property id="PROX_TOUCH_TH" value="200"/>
+ <Property id="NOISE_TH" value="40"/>
+ <Property id="NNOISE_TH" value="40"/>
+ <Property id="LOW_BSLN_RST" value="30"/>
+ <Property id="HYSTERESIS" value="10"/>
+ <Property id="ON_DEBOUNCE" value="3"/>
+ <Property id="VELOCITY" value="2500"/>
+ <Property id="IIR_FILTER" value="false"/>
+ <Property id="IIR_FILTER_COEFF" value="128"/>
+ <Property id="MEDIAN_FILTER" value="false"/>
+ <Property id="AVG_FILTER" value="false"/>
+ <Property id="JITTER_FILTER" value="true"/>
+ <Property id="AIIR_FILTER" value="false"/>
+ <Property id="AIIR_NO_MOV_TH" value="3"/>
+ <Property id="AIIR_LITTLE_MOV_TH" value="7"/>
+ <Property id="AIIR_LARGE_MOV_TH" value="12"/>
+ <Property id="AIIR_MAXK" value="60"/>
+ <Property id="AIIR_MINK" value="1"/>
+ <Property id="AIIR_DIV_VAL" value="64"/>
+ <Property id="CENTROID_TYPE" value="CSD3X3"/>
+ <Property id="CROSS_COUPLING_POS_TH" value="5"/>
+ <Property id="EDGE_CORRECTION" value="true"/>
+ <Property id="EDGE_VIRTUAL_SENSOR_TH" value="100"/>
+ <Property id="EDGE_PENULTIMATE_TH" value="100"/>
+ <Property id="TWO_FINGER_DETECTION" value="false"/>
+ <Property id="ACCEL_COEFF" value="9"/>
+ <Property id="SPEED_COEFF" value="2"/>
+ <Property id="DIVISOR" value="4"/>
+ <Property id="SPEED_TH_X" value="3"/>
+ <Property id="SPEED_TH_Y" value="4"/>
+ <Property id="BALLISTIC_MULT" value="false"/>
+ <Property id="GESTURE_ENABLE" value="false"/>
+ <Property id="GESTURE_1F_SINGLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_DOUBLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_CLICK_DRAG_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_SINGLE_CLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_SCROLL_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_SCROLL_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_EDGE_SWIPE_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_FLICK_ENABLE" value="true"/>
+ <Property id="GESTURE_1F_ROTATE_ENABLE" value="true"/>
+ <Property id="GESTURE_2F_ZOOM_ENABLE" value="true"/>
+ <Property id="GESTURE_FILTERING_ENABLE" value="false"/>
+ <Property id="CLICK_TIMEOUT_MAX" value="1000"/>
+ <Property id="CLICK_TIMEOUT_MIN" value="0"/>
+ <Property id="CLICK_DISTANCE_MAX" value="100"/>
+ <Property id="SECOND_CLICK_INTERVAL_MAX" value="1000"/>
+ <Property id="SECOND_CLICK_INTERVAL_MIN" value="0"/>
+ <Property id="SECOND_CLICK_DISTANCE_MAX" value="100"/>
+ <Property id="SCROLL_DEBOUNCE" value="3"/>
+ <Property id="SCROLL_DISTANCE_MIN" value="20"/>
+ <Property id="ROTATE_DEBOUNCE" value="10"/>
+ <Property id="ROTATE_DISTANCE_MIN" value="50"/>
+ <Property id="ZOOM_DEBOUNCE" value="3"/>
+ <Property id="ZOOM_DISTANCE_MIN" value="50"/>
+ <Property id="FLICK_TIMEOUT_MAX" value="300"/>
+ <Property id="FLICK_DISTANCE_MIN" value="100"/>
+ <Property id="EDGE_EDGE_SIZE" value="200"/>
+ <Property id="EDGE_DISTANCE_MIN" value="200"/>
+ <Property id="EDGE_TIMEOUT_MAX" value="2000"/>
+ <Property id="EDGE_ANGLE_MAX" value="45"/>
+ </WidgetProperties>
+ <Electrodes>
+ <Electrode id="Sns0" kind="Sensor">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ <Electrode id="Sns1" kind="Sensor">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ <Electrode id="Sns2" kind="Sensor">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ <Electrode id="Sns3" kind="Sensor">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ <Electrode id="Sns4" kind="Sensor">
+ <ElectrodeProperties>
+ <Property id="IDAC0" value="32"/>
+ <Property id="IDAC1" value="32"/>
+ <Property id="IDAC2" value="32"/>
+ <Property id="PINS" value="Dedicated pin"/>
+ </ElectrodeProperties>
+ </Electrode>
+ </Electrodes>
+ </Widget>
+ </Widgets>
+</Configuration>
+CAPSENSE_CONFIG_END
+*/
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* CY_CAPSENSE_CORE == __CORTEX_M */
+
+#endif /* CYCFG_CAPSENSE_H */
+
+/* [] END OF FILE */
\ No newline at end of file
--- a/main.cpp Fri Aug 09 23:18:24 2019 +0000
+++ b/main.cpp Fri Oct 11 12:43:11 2019 +0000
@@ -2,37 +2,73 @@
#include "GUI.h"
#include "cy8ckit_028_tft.h"
#define Cy_SysLib_Delay wait_ms
+#include "cy_pdl.h"
+#include "cycfg_capsense.h"
+#include "cycfg.h"
+#include "PinDetect.h"
DigitalOut ledGreen(LED_GREEN);
DigitalIn sw2(SWITCH2, PullUp);
DigitalOut ledRed(LED_RED);
DigitalOut ledBlue(LED_BLUE);
+DigitalOut ledBlue2(P13_4);
+DigitalOut ledGreen2(P13_3);
+DigitalOut ledRed2(P13_2);
-DigitalInOut LCD_REG0(P9_0);
-DigitalInOut LCD_REG1(P9_1);
-DigitalInOut LCD_REG2(P9_2);
-DigitalInOut LCD_REG3(P9_4);
-DigitalInOut LCD_REG4(P9_5);
-DigitalInOut LCD_REG5(P0_2);
-DigitalInOut LCD_REG6(P13_0);
-DigitalInOut LCD_REG7(P13_1);
-
-DigitalOut LCD_NWR(P12_0);
-DigitalOut LCD_DC(P12_1);
-DigitalOut LCD_RESET(P12_2);
-DigitalOut LCD_NRD(P12_3);
-
-#define NUMBER_OF_DEMO_PAGES (10u)
-
+PinDetect pb2(P0_4);
/* Macros for switch press status */
#define BTN_PRESSED (0u)
#define BTN_RELEASED (1u)
-/* Macros to control LEDs */
-#define LED_ON (0)
-#define LED_OFF (1)
+/***************************************************************************
+* Global constants
+***************************************************************************/
+#define SLIDER_NUM_TOUCH (1u) /* Number of touches on the slider */
+#define LED_OFF (1u)
+#define LED_ON (0u)
+#define CAPSENSE_SCAN_PERIOD_MS (20u) /* milliseconds */
+
+
+/***************************************
+* Function Prototypes
+**************************************/
+void RunCapSenseScan(void);
+void InitTunerCommunication(void);
+void ProcessTouchStatus(void);
+void EZI2C_InterruptHandler(void);
+void CapSense_InterruptHandler(void);
+void CapSenseEndOfScanCallback(cy_stc_active_scan_sns_t * ptrActiveScan);
+void InitCapSenseClock(void);
+
+/*******************************************************************************
+* Interrupt configuration
+*******************************************************************************/
+const cy_stc_sysint_t CapSense_ISR_cfg =
+{
+ .intrSrc = CYBSP_CSD_IRQ,
+ .intrPriority = 4u
+};
+
+const cy_stc_sysint_t EZI2C_ISR_cfg = {
+ .intrSrc = CYBSP_CSD_COMM_IRQ,
+ .intrPriority = 3u
+};
+
+
+/*******************************************************************************
+* Global variables
+*******************************************************************************/
+//DigitalOut ledRed(LED_RED);
+Semaphore capsense_sem;
+EventQueue queue;
+cy_stc_scb_ezi2c_context_t EZI2C_context;
+uint32_t prevBtn0Status = 0u;
+uint32_t prevBtn1Status = 0u;
+uint32_t prevSliderPos = 0u;
+bool sw2Pressed = false;
+bool prevSw2Pressed = false;
/* External global references */
@@ -41,826 +77,16 @@
extern GUI_CONST_STORAGE GUI_BITMAP bmExampleImage;
extern GUI_CONST_STORAGE GUI_BITMAP bmCypressLogo;
-/* Function prototypes */
-void ShowTextModes(void);
-void ShowTextColors(void);
-void ShowFontSizesNormal(void);
-void ShowFontSizesBold(void);
-void ShowColorBar(void);
-void Show2DGraphics1(void);
-void Show2DGraphics2(void);
-void ShowConcentricCircles(void);
-void ShowTextWrapAndOrientation(void);
-void ShowBitmap(void);
-
-/* Array of demo pages functions */
-void (*demoPageArray[NUMBER_OF_DEMO_PAGES])(void) = {
- ShowTextModes,
- ShowTextColors,
- ShowFontSizesNormal,
- ShowFontSizesBold,
- ShowTextWrapAndOrientation,
- ShowColorBar,
- Show2DGraphics1,
- Show2DGraphics2,
- ShowConcentricCircles,
- ShowBitmap
-};
-
-
-/*******************************************************************************
-* Function Name: void ShowStartupScreen(void)
-********************************************************************************
-*
-* Summary: This function displays the startup screen.
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowStartupScreen(void)
-{
- /* Set font size, foreground and background Colours */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetColor(GUI_WHITE);
- GUI_SetBkColor(GUI_BLACK);
-
- /* Clear the screen */
- GUI_Clear();
-
- /* Draw the Cypress Logo */
- GUI_DrawBitmap(&bmCypressLogo, 4, 4);
-
- /* Print the text CYPRESS EMWIN GRAPHICS DEMO TFT DISPLAY */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("CYPRESS", 160, 120);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("EMWIN GRAPHICS DEMO", 160, 140);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("TFT DISPLAY", 160, 160);
-}
-
-
-/*******************************************************************************
-* Function Name: void ShowInstructionsScreen(void)
-********************************************************************************
-*
-* Summary: This function shows screen with instructions to press SW2 to
-* scroll through various display pages
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowInstructionsScreen(void)
-{
- /* Set font size, background Colour and text mode */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetColor(GUI_WHITE);
- GUI_SetTextMode(GUI_TM_NORMAL);
-
- /* Clear the display */
- GUI_Clear();
-
- /* Display instructions text */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("PRESS SW2 ON THE KIT", 160, 90);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("TO SCROLL THROUGH ", 160, 110);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("DEMO PAGES!", 160, 130);
-}
-
-
-/*******************************************************************************
-* Function Name: void ShowTextModes(void)
-********************************************************************************
-*
-* Summary: This function displays the following
-* 1. Left, Center and Right aligned text
-* 2. Underline, overline and strikethrough style text
-* 3. Normal, reverse, transparent and XOR text modes
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowTextModes(void)
-{
- /* Set font size, foreground and background Colours */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetColor(GUI_WHITE);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Clear the screen */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_DispStringAt("1 OF 10: TEXT ALIGNMENTS, STYLES AND MODES", 160, 10);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Display left aligned text */
- GUI_SetTextAlign(GUI_TA_LEFT);
- GUI_DispStringAt("TEXT ALIGNMENT LEFT", 0, 40);
-
- /* Display center aligned text */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("TEXT ALIGNMENT CENTER", 160, 60);
-
- /* Display right aligned text */
- GUI_SetTextAlign(GUI_TA_RIGHT);
- GUI_DispStringAt("TEXT ALIGNMENT RIGHT", 319, 80);
-
- /* Display underlined text */
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_SetTextAlign(GUI_TA_LEFT);
- GUI_DispStringAt("TEXT STYLE UNDERLINE", 0, 100);
-
- /* Display overlined text */
- GUI_SetTextStyle(GUI_TS_OVERLINE);
- GUI_SetTextAlign(GUI_TA_LEFT);
- GUI_DispStringAt("TEXT STYLE OVERLINE", 0, 120);
-
- /* Display strikethrough text */
- GUI_SetTextStyle(GUI_TS_STRIKETHRU);
- GUI_SetTextAlign(GUI_TA_LEFT);
- GUI_DispStringAt("TEXT STYLE STRIKETHROUGH", 0, 140);
-
- /* Create a rectangle filled with blue Colour */
- GUI_SetColor(GUI_BROWN);
- GUI_FillRect(0, 160, 319, 239);
-
- /* Draw two diagonal lines */
- GUI_SetColor(GUI_BLUE);
- GUI_SetPenSize(3);
- GUI_DrawLine(0, 160, 319, 239);
- GUI_DrawLine(0, 239, 319, 160);
-
- /* Set text Colour to white with black background */
- GUI_SetColor(GUI_WHITE);
- GUI_SetBkColor(GUI_BLACK);
-
- /* Set text style to normal */
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Display text in normal mode. This will print white text in
- a black box */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_DispStringAt("TEXT MODE NORMAL", 160, 165);
-
- /* Display text in reverse mode. This will print black text n
- a white box */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextMode(GUI_TM_REV);
- GUI_DispStringAt("TEXT MODE REVERSE", 160, 185);
-
- /* Display transparent text. This will display white text
- on the blue background already present in the rectangle */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextMode(GUI_TM_TRANS);
- GUI_DispStringAt("TEXT MODE TRANSPARENT", 160, 205);
-
- /* Display XOR text. This will XOR the blue background with
- the white text */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextMode(GUI_TM_XOR);
- GUI_DispStringAt("TEXT MODE XOR", 160, 225);
-}
-
-
-/*******************************************************************************
-* Function Name: void ShowTextColors(void)
-********************************************************************************
-*
-* Summary: This function displays text in various Colours
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowTextColors(void)
-{
- /* Set font size, background Colour and text mode */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetTextMode(GUI_TM_NORMAL);
-
- /* Clear the display */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_SetColor(GUI_WHITE);
- GUI_DispStringAt("2 OF 10: TEXT COLOURS", 160, 10);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* White */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_WHITE);
- GUI_DispStringAt("TEXT COLOUR WHITE", 160, 40);
-
- /* Gray */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_GRAY);
- GUI_DispStringAt("TEXT COLOUR GRAY", 160, 60);
-
- /* Red */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_RED);
- GUI_DispStringAt("TEXT COLOUR RED", 160, 80);
-
- /* Green */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_GREEN);
- GUI_DispStringAt("TEXT COLOUR GREEN", 160, 100);
-
- /* Blue */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_BLUE);
- GUI_DispStringAt("TEXT COLOUR BLUE", 160, 120);
-
- /* Yellow */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_YELLOW);
- GUI_DispStringAt("TEXT COLOUR YELLOW", 160, 140);
-
- /* Brown */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_BROWN);
- GUI_DispStringAt("TEXT COLOUR BROWN", 160, 160);
-
- /* Magenta */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_MAGENTA);
- GUI_DispStringAt("TEXT COLOUR MAGENTA", 160, 180);
-
- /* Cyan */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_CYAN);
- GUI_DispStringAt("TEXT COLOUR CYAN", 160, 200);
-
- /* Orange */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetColor(GUI_ORANGE);
- GUI_DispStringAt("TEXT COLOUR ORANGE", 160, 220);
-}
-
-
-/*******************************************************************************
-* Function Name: void ShowFontSizesNormal(void)
-********************************************************************************
-*
-* Summary: This function shows various font sizes
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowFontSizesNormal(void)
-{
- /* Set font size, background colour and text mode */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_SetColor(GUI_GRAY);
-
- /* Clear the display */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_DispStringAt("3 OF 10: NORMAL FONTS", 160, 10);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Font8_1*/
- GUI_SetFont(GUI_FONT_8_1);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetColor(GUI_GRAY);
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_DispStringAt("GUI_Font8_1", 10, 40);
-
- /* Font10_1*/
- GUI_SetFont(GUI_FONT_10_1);
- GUI_DispStringAt("GUI_Font10_1", 10, 50);
-
- /* Font13_1*/
- GUI_SetFont(GUI_FONT_13_1);
- GUI_DispStringAt("GUI_Font13_1", 10, 62);
-
- /* Font16_1*/
- GUI_SetFont(GUI_FONT_16_1);
- GUI_DispStringAt("GUI_Font16_1", 10, 77);
-
- /* Font20_1*/
- GUI_SetFont(GUI_FONT_20_1);
- GUI_DispStringAt("GUI_Font20_1", 10, 95);
-
- /* Font24_1*/
- GUI_SetFont(GUI_FONT_24_1);
- GUI_DispStringAt("GUI_Font24_1", 10, 117);
-
- /* Font32_1*/
- GUI_SetFont(GUI_FONT_32_1);
- GUI_DispStringAt("GUI_Font32_1", 10, 143);
-
- /* Font48_1*/
- GUI_SetFont(GUI_FONT_8X16X2X2);
- GUI_DispStringAt("GUI_Font8x16x2x2", 10, 180);
-}
-
-
-/*******************************************************************************
-* Function Name: void ShowFontSizesBold(void)
-********************************************************************************
-*
-* Summary: This function shows various font sizes
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowFontSizesBold(void)
-{
- /* Set font size, background colour and text mode */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetColor(GUI_GRAY);
- GUI_SetTextMode(GUI_TM_NORMAL);
-
- /* Clear the display */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_DispStringAt("4 OF 10: BOLD FONTS", 160, 10);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Font13B_1*/
- GUI_SetFont(GUI_FONT_13B_1);
- GUI_DispStringAt("GUI_Font13B_1", 10, 40);
-
- /* Font13HB_1*/
- GUI_SetFont(GUI_FONT_13HB_1);
- GUI_DispStringAt("GUI_Font13HB_1", 10, 55);
-
- /* Font16B_1*/
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_DispStringAt("GUI_Font6B_1", 10, 70);
-
- /* FontComic18B_1*/
- GUI_SetFont(GUI_FONT_COMIC18B_1);
- GUI_DispStringAt("GUI_FontComic18B_1", 10, 88);
-
- /* Font20B_1*/
- GUI_SetFont(GUI_FONT_20B_1);
- GUI_DispStringAt("GUI_Font20B_1", 10, 108);
-
- /* Font24B_1*/
- GUI_SetFont(GUI_FONT_24B_1);
- GUI_DispStringAt("GUI_Font24B_1", 10, 130);
-
- /* Font32B_1*/
- GUI_SetFont(GUI_FONT_32B_1);
- GUI_DispStringAt("GUI_Font32B_1", 10, 156);
-
- /* Font48B_1*/
- GUI_SetFont(GUI_FONT_8X16X3X3);
- GUI_DispStringAt("GUI_Font8x16x3x3", 10, 190);
-}
-
-
-/*******************************************************************************
-* Function Name: void ShowColorBar(void)
-********************************************************************************
-*
-* Summary: This function displays displays horizontal colour bars. For each
-* colour, two bars are printed, one bar that has a gradient from
-* black to the colour and another bar that has a gradient from white
-* to the colour.
-*
-* Note: This function is provided by EmWin as a demo code.
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowColorBar(void)
-{
- /* Local variables */
- int x0;
- int y0;
- int yStep;
- int i;
- int xsize;
- U16 cs;
- U16 x;
-
- /* Initialize parameters */
- x0 = 60;
- y0 = 40;
- yStep = 15;
- xsize = LCD_GetDevCap(LCD_DEVCAP_XSIZE) - x0;
-
- /* Clear the screen */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetColor(GUI_WHITE);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_DispStringAt("6 OF 10: COLOUR BARS", 160, 5);
-
- /* Set text mode to normal and left alignment */
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_SetTextAlign(GUI_TA_LEFT);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Display labels for the bars */
- GUI_SetFont(&GUI_Font8x16);
- GUI_SetColor(GUI_WHITE);
- GUI_SetBkColor(GUI_BLACK);
- GUI_DispStringAt("Red", 0, y0 + yStep);
- GUI_DispStringAt("Green", 0, y0 + 3 * yStep);
- GUI_DispStringAt("Blue", 0, y0 + 5 * yStep);
- GUI_DispStringAt("Yellow", 0, y0 + 7 * yStep);
- GUI_DispStringAt("Cyan", 0, y0 + 9 * yStep);
- GUI_DispStringAt("Magenta", 0, y0 + 11 * yStep);
-
- /* Draw the colour bars */
- for (i = 0; i < xsize; i++)
- {
- cs = (0xFF * (U32)i) / xsize;
- x = x0 + i;;
-
- /* Red */
- GUI_SetColor(cs);
- GUI_DrawVLine(x, y0 , y0 + yStep - 1);
- GUI_SetColor(0xff + (255 - cs) * 0x10100uL);
- GUI_DrawVLine(x, y0 + yStep, y0 + 2 * yStep - 1);
-
- /* Green */
- GUI_SetColor(cs<<8);
- GUI_DrawVLine(x, y0 + 2 * yStep, y0 + 3 * yStep - 1);
- GUI_SetColor(0xff00 + (255 - cs) * 0x10001uL);
- GUI_DrawVLine(x, y0 + 3 * yStep, y0 + 4 * yStep - 1);
-
- /* Blue */
- GUI_SetColor(cs * 0x10000uL);
- GUI_DrawVLine(x, y0 + 4 * yStep, y0 + 5 * yStep - 1);
- GUI_SetColor(0xff0000 + (255 - cs) * 0x101uL);
- GUI_DrawVLine(x, y0 + 5 * yStep, y0 + 6 * yStep - 1);
-
- /* Yellow */
- GUI_SetColor(cs * 0x101uL);
- GUI_DrawVLine(x, y0 + 6 * yStep, y0 + 7 * yStep - 1);
- GUI_SetColor(0xffff + (255 - cs) * 0x10000uL);
- GUI_DrawVLine(x, y0 + 7 * yStep, y0 + 8 * yStep - 1);
-
- /* Cyan */
- GUI_SetColor(cs * 0x10100uL);
- GUI_DrawVLine(x, y0 + 8 * yStep, y0 + 9 * yStep - 1);
- GUI_SetColor(0xffff00 + (255 - cs) * 0x1L);
- GUI_DrawVLine(x, y0 + 9 * yStep, y0 + 10 * yStep - 1);
-
- /* Magenta */
- GUI_SetColor(cs * 0x10001uL);
- GUI_DrawVLine(x, y0 + 10 * yStep, y0 + 11 * yStep - 1);
- GUI_SetColor(0xff00ff + (255 - cs) * 0x100uL);
- GUI_DrawVLine(x, y0 + 11 * yStep, y0 + 12 * yStep - 1);
+// Callback routine is interrupt activated by a debounced pb1 hit
+void pb2_hit_callback (void) {
+// printf("Count is %d\n", ++countit);
+ sw2Pressed = true;
}
-}
-
-
-/*******************************************************************************
-* Function Name: void Show2DGraphics1(void)
-********************************************************************************
-*
-* Summary: This function displays the following 2D graphics
-* 1. Horizontal lines with various pen widths
-* 2. Vertical lines with various pen widths
-* 3. Arcs
-* 4. Filled rounded rectangle
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void Show2DGraphics1(void)
-{
- /* Set font size, foreground and background colours */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetColor(GUI_WHITE);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Clear the screen */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_DispStringAt("7 OF 10: 2D GRAPHICS - 1", 160, 10);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Set drawing colour to gray */
- GUI_SetColor(GUI_GRAY);
-
- /* Display labels */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("H-LINES", 80, 110);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("V-LINES", 240, 110);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("ARCS", 80, 220);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("ROUNDED RECT", 240, 220);
-
- /* Horizontal lines */
- GUI_SetPenSize(1);
- GUI_DrawLine(10, 35, 150, 35);
- GUI_SetPenSize(2);
- GUI_DrawLine(10, 50, 150, 50);
- GUI_SetPenSize(3);
- GUI_DrawLine(10, 65, 150, 65);
- GUI_SetPenSize(4);
- GUI_DrawLine(10, 80, 150, 80);
- GUI_SetPenSize(5);
- GUI_DrawLine(10, 95, 150, 95);
-
- /* Vertical lines */
- GUI_SetPenSize(1);
- GUI_DrawLine(210, 30, 210, 100);
- GUI_SetPenSize(2);
- GUI_DrawLine(225, 30, 225, 100);
- GUI_SetPenSize(3);
- GUI_DrawLine(240, 30, 240, 100);
- GUI_SetPenSize(4);
- GUI_DrawLine(255, 30, 255, 100);
- GUI_SetPenSize(5);
- GUI_DrawLine(270, 30, 270, 100);
-
- /* Arcs */
- GUI_SetPenSize(2);
- GUI_DrawArc(80, 210, 10, 10, 0, 180);
- GUI_DrawArc(80, 210, 20, 20, 0, 180);
- GUI_DrawArc(80, 210, 30, 30, 0, 180);
- GUI_DrawArc(80, 210, 40, 40, 0, 180);
- GUI_DrawArc(80, 210, 50, 50, 0, 180);
- GUI_DrawArc(80, 210, 60, 60, 0, 180);
-
- /* Rounded rectangle */
- GUI_FillRoundedRect(180, 150, 300, 210, 5);
-}
-
-
-/*******************************************************************************
-* Function Name: void Show2DGraphics2(void)
-********************************************************************************
-*
-* Summary: This function displays the following 2D graphics
-* 1. Concentric circles
-* 2. Concentric ellipses
-* 3. Filled rectangle with horizontal colour gradient
-* 4. Filled rectangle with vertical colour gradient
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void Show2DGraphics2(void)
-{
- /* Set font size, foreground and background colours */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetColor(GUI_WHITE);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Clear the screen */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_DispStringAt("8 OF 10: 2D GRAPHICS - 2", 160, 10);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Set drawing colour to gray */
- GUI_SetColor(GUI_GRAY);
-
- /* Display labels */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("CIRCLE", 80, 110);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("ELLIPSE", 240, 110);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("RECT-HGRAD", 80, 220);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("RECT-VGRAD", 240, 220);
-
- /* Concentric Circles */
- GUI_DrawCircle(80, 65, 35);
- GUI_DrawCircle(80, 65, 25);
- GUI_DrawCircle(80, 65, 15);
- GUI_DrawCircle(80, 65, 5);
-
- /* Concentric Ellipses */
- GUI_DrawEllipse(240, 65, 60, 35);
- GUI_DrawEllipse(240, 65, 50, 25);
- GUI_DrawEllipse(240, 65, 40, 15);
- GUI_DrawEllipse(240, 65, 30, 5);
-
- /* Rectangle horizontal gradient */
- GUI_DrawGradientH(20, 150, 140, 210, GUI_BLACK, GUI_GREEN);
-
- /* Rectangle vertical gradient */
- GUI_DrawGradientV(180, 150, 300, 210, GUI_RED, GUI_BLACK);
-}
-
-
-/*******************************************************************************
-* Function Name: void ShowConcentricCircles(void)
-********************************************************************************
-*
-* Summary: This function displays a short animation by drawing concentric circles
-* with colour gradients
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowConcentricCircles(void)
-{
- #define NUMBER_OF_COLOURS (3u)
- #define MAX_RADIUS (100u)
-
- uint16 radius = 0;
- uint16 colourIndex = 0;
-
- const uint32 colourArray[NUMBER_OF_COLOURS] =
- {
- GUI_RED,
- GUI_BLUE,
- GUI_GREEN,
- };
-
- /* Set font size, background colour and text mode */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetTextMode(GUI_TM_NORMAL);
-
- /* Clear the display */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
- GUI_SetColor(GUI_WHITE);
- GUI_DispStringAt("9 OF 10: CONCENTRIC CIRCLES", 160, 10);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Draw concentric circles with colour gradient */
- /* Cycle through number of colours */
- for(colourIndex = 0; colourIndex < NUMBER_OF_COLOURS; colourIndex++)
- {
- /* Draw circles with increasing radius */
- for(radius = 0; radius < MAX_RADIUS; radius++)
- {
- GUI_SetColor(radius*colourArray[colourIndex]);
- GUI_DrawCircle(160, 130, radius);
- CyDelay(2);
- }
+// Callback routine is interrupt activated by a debounced pb1 hit
+void pb2_released_callback (void) {
+// printf("Count is %d\n", ++countit);
+ sw2Pressed = false;
}
-}
-
-
-/*******************************************************************************
-* Function Name: void ShowBitmap(void)
-********************************************************************************
-*
-* Summary: This function displays a bitmap image with an overlay text
-*
-* Parameters:
-* None
-*
-* Return:
-* None
-*
-*******************************************************************************/
-void ShowTextWrapAndOrientation(void)
-{
- GUI_RECT leftRect = {4, 19, 24, 166};
- GUI_RECT rightRect = {238, 19, 258, 166};
- GUI_RECT middleRect = {29, 19, 233, 166};
- GUI_RECT middleRectMargins = {31, 20, 232, 165};
- GUI_RECT bottomRect = {31, 170, 232, 220};
-
- const char leftText[] = "ROTATED TEXT CCW";
- const char rightText[] = "ROTATED TEXT CW";
- const char bottomText[] = "INVERTED TEXT 180";
-
- const char middleText[] = "This project demonstrates displaying 2D graphics in a TFT display using Segger EmWin Graphics Library. \n\nThis page shows the text wrap and text rotation features. In the left rectangle, the text is rotated counter clockwise and in the right rectangle, the text is rotated clockwise.";
-
-
- /* Set font size, foreground and background colours */
- GUI_SetFont(GUI_FONT_13B_1);
- GUI_SetColor(GUI_WHITE);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_SetTextStyle(GUI_TS_NORMAL);
-
- /* Clear the screen */
- GUI_Clear();
-
- /* Display page title */
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_DispStringAt("5 OF 10: TEXT WRAP AND ROTATION", 132, 5);
-
- /* Draw rectangles to hold text */
- GUI_DrawRectEx(&leftRect);
- GUI_DrawRectEx(&rightRect);
- GUI_DrawRectEx(&middleRect);
- GUI_DrawRectEx(&bottomRect);
-
- /* Display string in left rectangle rotated counter clockwise */
- GUI_DispStringInRectEx(leftText, &leftRect, GUI_TA_HCENTER | GUI_TA_VCENTER, strlen(leftText), GUI_ROTATE_CCW);
-
- /* Display string in right rectangle rotated clockwise */
- GUI_DispStringInRectEx(rightText, &rightRect, GUI_TA_HCENTER | GUI_TA_VCENTER, strlen(rightText), GUI_ROTATE_CW);
-
- /* Display string in right rectangle rotated clockwise */
- GUI_DispStringInRectEx(bottomText, &bottomRect, GUI_TA_HCENTER | GUI_TA_VCENTER, strlen(bottomText), GUI_ROTATE_180);
-
- /* Display string in middle rectangle with word wrap */
- GUI_DispStringInRectWrap(middleText, &middleRectMargins, GUI_TA_LEFT, GUI_WRAPMODE_WORD);
-
-}
-void ShowBitmap(void)
-{
- /* Set background colour to black and clear screen */
- GUI_SetBkColor(GUI_BLACK);
- GUI_Clear();
-
- /* Display the bitmap image on the screen */
- GUI_DrawBitmap(&bmExampleImage, 0, 4);
-
- /* Set font size, font colour to black */
- GUI_SetFont(GUI_FONT_16B_1);
- GUI_SetColor(GUI_BLACK);
-
- /* Set text mode to transparent, underlined and center aligned */
- GUI_SetTextMode(GUI_TM_TRANS);
- GUI_SetTextAlign(GUI_TA_HCENTER);
- GUI_SetTextStyle(GUI_TS_UNDERLINE);
-
- /* Print the page title text */
- GUI_DispStringAt("10 OF 10: BITMAP IMAGE", 160, 10);
-}
-
-
/*******************************************************************************
* Function Name: bool IsBtnClicked
********************************************************************************
@@ -897,85 +123,267 @@
return result;
}
+/*****************************************************************************
+* Function Name: RunCapSenseScan()
+******************************************************************************
+* Summary:
+* This function starts the scan, and processes the touch status. It is
+* periodically called by an event dispatcher.
+*
+*****************************************************************************/
+void RunCapSenseScan(void)
+{
+ Cy_CapSense_ScanAllWidgets(&cy_capsense_context);
+ capsense_sem.acquire();
+ Cy_CapSense_ProcessAllWidgets(&cy_capsense_context);
+ Cy_CapSense_RunTuner(&cy_capsense_context);
+ ProcessTouchStatus();
+}
+
/*******************************************************************************
-* Function Name: int main(void)
+* Function Name: InitTunerCommunication
********************************************************************************
*
-* Summary: This is the main for this code example. This function does the following
-* 1. Initializes the EmWin display engine
-* 2. Displays startup screen for 3 seconds
-* 3. In an infinite loop, displays the following screens on
-* key press and release
-* a. Text alignment, styles and modes
-* b. Text colour
-* c. Normal fonts
-* d. Bold fonts
-* e. colour bars
-* f. 2D graphics #1
-* g. 2D graphics #2
-* h. Concentric circles
-* i. Bitmap image
-*
-* Parameters:
-* None
-*
-* Return:
-* None
+* Summary:
+* This function performs the following functions:
+* - Initializes SCB block for operation in EZI2C mode
+* - Configures EZI2C pins
+* - Configures EZI2C clock
+* - Sets communication data buffer to CapSense data structure
*
*******************************************************************************/
-int main(void)
+void InitTunerCommunication(void)
{
- uint8_t pageNumber = 0;
-
- /* Turn off both red and green LEDs */
- ledGreen = LED_OFF;
- ledRed = LED_OFF;
- ledBlue = LED_ON;
+ /* Initialize EZI2C pins */
+ Cy_GPIO_Pin_Init(CYBSP_EZI2C_SCL_PORT, CYBSP_EZI2C_SCL_PIN, &CYBSP_EZI2C_SCL_config);
+ Cy_GPIO_Pin_Init(CYBSP_EZI2C_SDA_PORT, CYBSP_EZI2C_SDA_PIN, &CYBSP_EZI2C_SDA_config);
+
+ /* Configure the peripheral clock for EZI2C */
+ Cy_SysClk_PeriphAssignDivider(PCLK_SCB3_CLOCK, CY_SYSCLK_DIV_8_BIT, 1U);
+ Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 1U);
+ Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 1U, 7U);
+ Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 1U);
- /* Initialize EmWin driver*/
- GUI_Init();
-
- /* Display the startup screen for 2 seconds */
- ShowStartupScreen();
- Cy_SysLib_Delay(2000);
+ Cy_SCB_EZI2C_Init(CYBSP_CSD_COMM_HW, &CYBSP_CSD_COMM_config, &EZI2C_context);
+
+ /* Initialize and enable EZI2C interrupts */
+ Cy_SysInt_Init(&EZI2C_ISR_cfg, &EZI2C_InterruptHandler);
+ NVIC_EnableIRQ(EZI2C_ISR_cfg.intrSrc);
+
+ /* Set up communication data buffer to CapSense data structure to be exposed
+ * to I2C master at primary slave address request.
+ */
+ Cy_SCB_EZI2C_SetBuffer1(CYBSP_CSD_COMM_HW, (uint8 *)&cy_capsense_tuner,
+ sizeof(cy_capsense_tuner), sizeof(cy_capsense_tuner), &EZI2C_context);
+
+ /* Enable EZI2C block */
+ Cy_SCB_EZI2C_Enable(CYBSP_CSD_COMM_HW);
+}
+
- /* Show Instructions Screen */
- ShowInstructionsScreen();
+/*******************************************************************************
+* Function Name: ProcessTouchStatus
+********************************************************************************
+*
+* Summary:
+* Controls the LED status according to the status of CapSense widgets and
+* prints the status to serial terminal.
+*
+*******************************************************************************/
+void ProcessTouchStatus(void)
+{
+ uint32_t currSliderPos;
+ uint32_t currBtn0Status = Cy_CapSense_IsSensorActive(CY_CAPSENSE_BUTTON0_WDGT_ID, CY_CAPSENSE_BUTTON0_SNS0_ID, &cy_capsense_context);
+ uint32_t currBtn1Status = Cy_CapSense_IsSensorActive(CY_CAPSENSE_BUTTON1_WDGT_ID, CY_CAPSENSE_BUTTON1_SNS0_ID, &cy_capsense_context);
+ cy_stc_capsense_touch_t *sldrTouch = Cy_CapSense_GetTouchInfo(CY_CAPSENSE_LINEARSLIDER0_WDGT_ID, &cy_capsense_context);
+ char outputString[80];
+ if(currBtn0Status != prevBtn0Status)
+ {
+ printf("Button_0 status: %u\r\n", currBtn0Status);
+ sprintf(outputString," Button_0 status: %u ", currBtn0Status);
+ GUI_SetTextAlign(GUI_TA_HCENTER);
+ GUI_DispStringAt(outputString, 160, 60);
+ prevBtn0Status = currBtn0Status;
+ }
+
+ if(currBtn1Status != prevBtn1Status)
+ {
+ printf("Button_1 status: %u\r\n", currBtn1Status);
+ sprintf(outputString," Button_1 status: %u ", currBtn1Status);
+ GUI_SetTextAlign(GUI_TA_HCENTER);
+ GUI_DispStringAt(outputString, 160, 80);
+ prevBtn1Status = currBtn1Status;
+ }
+ if(sw2Pressed != prevSw2Pressed) {
+ sprintf(outputString," Button_2 status: %u ", sw2Pressed);
+ GUI_SetTextAlign(GUI_TA_HCENTER);
+ GUI_DispStringAt(outputString, 160, 100);
+ prevSw2Pressed = sw2Pressed;
+ }
+ if (sldrTouch->numPosition == SLIDER_NUM_TOUCH)
+ {
+ currSliderPos = sldrTouch->ptrPosition->x;
- /* Display various demo pages in a loop */
- for(;;)
- {
- if(IsBtnClicked())
+ if(currSliderPos != prevSliderPos)
{
- /* Using pageNumber as index, update the display with a demo screen
- Following are the functions that are called in sequence
- ShowTextModes()
- ShowTextColors()
- ShowFontSizesNormal()
- ShowFontSizesBold()
- ShowTextWrapAndOrientation()
- ShowColorBar()
- Show2DGraphics1()
- Show2DGraphics2()
- ShowConcentricCircles()
- ShowBitmap()
- */
- (*demoPageArray[pageNumber])();
-
- ledBlue = !ledBlue;
-
- /* Increment page number */
- pageNumber++;
-
- /* If page number exceeds maximum pages, reset */
- if(pageNumber >= NUMBER_OF_DEMO_PAGES)
- {
- pageNumber = 0;
- }
+ printf("Slider position: %u\r\n", currSliderPos);
+ sprintf(outputString," Slider position: %u ", currSliderPos);
+ GUI_SetTextAlign(GUI_TA_HCENTER);
+ GUI_DispStringAt(outputString, 160, 120);
+ prevSliderPos = currSliderPos;
}
}
+
+ ledRed = (sw2Pressed || currBtn0Status || currBtn1Status || (sldrTouch->numPosition == SLIDER_NUM_TOUCH)) ? LED_ON : LED_OFF;
}
-/* [] END OF FILE */
+/*******************************************************************************
+* Function Name: EZI2C_InterruptHandler
+********************************************************************************
+* Summary:
+* Wrapper function for handling interrupts from EZI2C block.
+*
+*******************************************************************************/
+void EZI2C_InterruptHandler(void)
+{
+ Cy_SCB_EZI2C_Interrupt(CYBSP_CSD_COMM_HW, &EZI2C_context);
+}
+
+/*****************************************************************************
+* Function Name: CapSense_InterruptHandler()
+******************************************************************************
+* Summary:
+* Wrapper function for handling interrupts from CSD block.
+*
+*****************************************************************************/
+void CapSense_InterruptHandler(void)
+{
+ Cy_CapSense_InterruptHandler(CYBSP_CSD_HW, &cy_capsense_context);
+}
+
+
+/*****************************************************************************
+* Function Name: CapSenseEndOfScanCallback()
+******************************************************************************
+* Summary:
+* This function releases a semaphore to indicate end of a CapSense scan.
+*
+* Parameters:
+* cy_stc_active_scan_sns_t* : pointer to active sensor details.
+*
+*****************************************************************************/
+void CapSenseEndOfScanCallback(cy_stc_active_scan_sns_t * ptrActiveScan)
+{
+ capsense_sem.release();
+}
+
+
+/*****************************************************************************
+* Function Name: InitCapSenseClock()
+******************************************************************************
+* Summary:
+* This function configures the peripheral clock for CapSense.
+*
+*****************************************************************************/
+void InitCapSenseClock(void)
+{
+ Cy_SysClk_PeriphAssignDivider(PCLK_CSD_CLOCK, CYBSP_CSD_CLK_DIV_HW, CYBSP_CSD_CLK_DIV_NUM);
+ Cy_SysClk_PeriphDisableDivider(CYBSP_CSD_CLK_DIV_HW, CYBSP_CSD_CLK_DIV_NUM);
+ Cy_SysClk_PeriphSetDivider(CYBSP_CSD_CLK_DIV_HW, CYBSP_CSD_CLK_DIV_NUM, 0u);
+ Cy_SysClk_PeriphEnableDivider(CYBSP_CSD_CLK_DIV_HW, CYBSP_CSD_CLK_DIV_NUM);
+}
+
+/*****************************************************************************
+* Function Name: main()
+******************************************************************************
+* Summary:
+* Main function that starts a thread for CapSense scan and enters a forever
+* wait state.
+*
+*****************************************************************************/
+int main(void)
+{
+ /* Turn off both red and green LEDs */
+ ledGreen = LED_OFF;
+ ledRed = LED_OFF;
+ ledBlue = LED_OFF;
+ ledGreen2 = 0; /* 1 for on 0 for off */
+ ledRed2 = 0;
+ ledBlue2 = 0;
+ char outputString[80];
+
+ /* Initialize EmWin driver*/
+ GUI_Init();
+ /* Set font size, foreground and background Colours */
+ GUI_SetFont(GUI_FONT_16B_1);
+ GUI_SetColor(GUI_WHITE);
+ GUI_SetBkColor(GUI_BLACK);
+
+ GUI_Clear();
+ GUI_SetTextAlign(GUI_TA_HCENTER);
+ GUI_DispStringAt("Capsense Demo", 160, 20);
+ printf("\r\nApplication has started. Touch any CapSense button or slider.\r\n");
+ sprintf(outputString,"\r\nApplication has started.\r\n Touch any CapSense button or slider.");
+ GUI_SetTextAlign(GUI_TA_HCENTER);
+ GUI_DispStringAt(outputString, 160, 180);
+ wait(0.10);
+ /* Configure AMUX bus for CapSense */
+ init_cycfg_routing();
+
+ /* Configure PERI clocks for CapSense */
+ InitCapSenseClock();
+
+ InitTunerCommunication();
+
+ /* Initialize the CSD HW block to the default state. */
+ cy_status status = Cy_CapSense_Init(&cy_capsense_context);
+ if(CY_RET_SUCCESS != status)
+ {
+ printf("CapSense initialization failed. Status code: %u\r\n", status);
+ sprintf(outputString,"CapSense initialization failed. Status code: %u", status);
+ GUI_SetTextAlign(GUI_TA_HCENTER);
+ GUI_DispStringAt(outputString, 160, 40);
+ wait(osWaitForever);
+ }
+
+ /* Initialize CapSense interrupt */
+ Cy_SysInt_Init(&CapSense_ISR_cfg, &CapSense_InterruptHandler);
+ NVIC_ClearPendingIRQ(CapSense_ISR_cfg.intrSrc);
+ NVIC_EnableIRQ(CapSense_ISR_cfg.intrSrc);
+
+ /* Initialize the CapSense firmware modules. */
+ Cy_CapSense_Enable(&cy_capsense_context);
+ Cy_CapSense_RegisterCallback(CY_CAPSENSE_END_OF_SCAN_E, CapSenseEndOfScanCallback, &cy_capsense_context);
+
+ /* Create a thread to run CapSense scan periodically using an event queue
+ * dispatcher.
+ */
+ Thread thread(osPriorityNormal, OS_STACK_SIZE, NULL, "CapSense Scan Thread");
+ thread.start(callback(&queue, &EventQueue::dispatch_forever));
+ queue.call_every(CAPSENSE_SCAN_PERIOD_MS, RunCapSenseScan);
+
+ /* Initiate scan immediately since the first call of RunCapSenseScan()
+ * happens CAPSENSE_SCAN_PERIOD_MS after the event queue dispatcher has
+ * started.
+ */
+ Cy_CapSense_ScanAllWidgets(&cy_capsense_context);
+
+
+ // Use internal pullups for pushbutton
+ pb2.mode(PullUp);
+// pb2.mode(PullUp);
+ // Delay for initial pullup to take effect
+ wait(.01);
+ // Setup Interrupt callback functions for a pb hit
+ pb2.attach_deasserted(&pb2_hit_callback);
+// pb2.attach_deasserted(&pb2_hit_callback);
+ // Start sampling pb inputs using interrupts
+ pb2.setSampleFrequency();
+
+ pb2.attach_asserted( &pb2_released_callback );
+ wait(osWaitForever);
+
+}
+
--- a/mbed-os.lib Fri Aug 09 23:18:24 2019 +0000 +++ b/mbed-os.lib Fri Oct 11 12:43:11 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#cfa7938a4dd6d1a4c501945b9c26ca68f70e284e +https://github.com/ARMmbed/mbed-os/#808c45062f940790e1287bd6b8420290c062775c
--- a/middleware-emwin.lib Fri Aug 09 23:18:24 2019 +0000 +++ b/middleware-emwin.lib Fri Oct 11 12:43:11 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/cypresssemiconductorco/middleware-emwin/#4f7b679659cb7696659d1a5bc084b1a5b3be6c70 +https://github.com/cypresssemiconductorco/middleware-emwin/#f628fb3e66c51b9a7abe0bfa2a6a46aff8efd062
--- a/tft_interface/cy8ckit_028_tft.cpp Fri Aug 09 23:18:24 2019 +0000 +++ b/tft_interface/cy8ckit_028_tft.cpp Fri Oct 11 12:43:11 2019 +0000 @@ -27,7 +27,21 @@ #include "cy8ckit_028_tft.h" #include <mbed_wait_api.h> +#include "mbed.h" +DigitalInOut LCD_REG0(P9_0); +DigitalInOut LCD_REG1(P9_1); +DigitalInOut LCD_REG2(P9_2); +DigitalInOut LCD_REG3(P9_4); +DigitalInOut LCD_REG4(P9_5); +DigitalInOut LCD_REG5(P0_2); +DigitalInOut LCD_REG6(P13_0); +DigitalInOut LCD_REG7(P13_1); + +DigitalOut LCD_NWR(P12_0); +DigitalOut LCD_DC(P12_1); +DigitalOut LCD_RESET(P12_2); +DigitalOut LCD_NRD(P12_3); /******************************************************************************* * Function Name: DataWrite