/*! \fn initTouchSensing() * \brief Initialize AT42QT2120 */ RET_TYPE initTouchSensing(void) { #ifndef HARDWARE_V1 RET_TYPE temp_return = checkTSPres(); if (temp_return == RETURN_OK) { // Perform measurements every 16ms writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_LP, 1); // Settings for each key writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY0_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Wheel writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY1_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Wheel writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY2_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Wheel writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY3_CTRL, AT42QT2120_GUARD_VAL|AT42QT2120_AKS_GP1_MASK); // Guard key writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY4_CTRL, AT42QT2120_OUTPUT_L_VAL); // LED (top right) writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY5_CTRL, AT42QT2120_OUTPUT_L_VAL); // LED (right button) writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY6_CTRL, AT42QT2120_OUTPUT_L_VAL); // LED (bottom right) writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY7_CTRL, AT42QT2120_OUTPUT_L_VAL); // LED (bottom left) writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY8_CTRL, AT42QT2120_OUTPUT_L_VAL); // LED (left button) writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY9_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Left button writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY10_CTRL, AT42QT2120_OUTPUT_L_VAL); // LED (top left) writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_KEY11_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Right button writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_SLID_OPT, 0x40); // Enable wheel writeDataToTS(AT42QT2120_ADDR, REG_AT42QT_SLID_OPT, 0xC0); // Enable wheel } return temp_return; #else return RETURN_NOK; #endif }
/*! \fn initTouchSensing() * \brief Initialize AT42QT2120 */ RET_TYPE initTouchSensing(void) { #if !defined(HARDWARE_V1) && !defined(V2_DEVELOPERS_BOTPCB_BOOTLOADER_SETUP) RET_TYPE temp_return = checkTSPres(); uint8_t reg, val; uint8_t i; if (temp_return == RETURN_OK) { // Initialization sequence stored in flash for (i = 0; i < sizeof(touch_init);) { reg = pgm_read_byte(&touch_init[i++]); val = pgm_read_byte(&touch_init[i++]); writeDataToTS(reg, val); } // Custom sensitivity settings writeDataToTS(REG_AT42QT_DI, getMooltipassParameterInEeprom(TOUCH_DI_PARAM)); // Increase detection integrator value writeDataToTS(REG_AT42QT_CHARGE_TIME, getMooltipassParameterInEeprom(TOUCH_CHARGE_TIME_PARAM)); // Prolongs the charge transfer period of signal acq writeDataToTS(REG_AT42QT_KEY0_PULSE_SCL, getMooltipassParameterInEeprom(TOUCH_WHEEL_OS_PARAM0));// Touch weel oversample (gain one bit by default) writeDataToTS(REG_AT42QT_KEY1_PULSE_SCL, getMooltipassParameterInEeprom(TOUCH_WHEEL_OS_PARAM1));// Touch weel oversample (gain one bit by default) writeDataToTS(REG_AT42QT_KEY2_PULSE_SCL, getMooltipassParameterInEeprom(TOUCH_WHEEL_OS_PARAM2));// Touch weel oversample (gain one bit by default) } return temp_return; #else return RETURN_NOK; #endif }
/*! \fn begin() * \brief Initialize AT42QT2120 */ uint8_t mooltipass_touch_sensing::begin(void) { WIRE.begin(); uint8_t temp_return = checkTSPres(); if (temp_return == RETURN_OK) { // Perform measurements every 16ms writeDataToTS(REG_AT42QT_LP, 1); // LED settings writeDataToTS(REG_AT42QT_KEY4_CTRL, AT42QT2120_OUTPUT_H_VAL); // LED (top right) writeDataToTS(REG_AT42QT_KEY5_CTRL, AT42QT2120_OUTPUT_H_VAL); // LED (right button) writeDataToTS(REG_AT42QT_KEY6_CTRL, AT42QT2120_OUTPUT_H_VAL); // LED (bottom right) writeDataToTS(REG_AT42QT_KEY7_CTRL, AT42QT2120_OUTPUT_H_VAL); // LED (bottom left) writeDataToTS(REG_AT42QT_KEY8_CTRL, AT42QT2120_OUTPUT_H_VAL); // LED (left button) writeDataToTS(REG_AT42QT_KEY10_CTRL, AT42QT2120_OUTPUT_H_VAL); // LED (top left) // Sensitivity settings #ifndef LOW_SENSITIVITY writeDataToTS(REG_AT42QT_DI, 6); // Increase detection integrator value writeDataToTS(REG_AT42QT_KEY0_PULSE_SCL, 0x21); // Oversample to gain one bit writeDataToTS(REG_AT42QT_KEY1_PULSE_SCL, 0x21); // Oversample to gain one bit writeDataToTS(REG_AT42QT_KEY2_PULSE_SCL, 0x21); // Oversample to gain one bit #endif writeDataToTS(REG_AT42QT_TRD, 50); // Recalibration if touch detected for more than 8 seconds // Key settings writeDataToTS(REG_AT42QT_KEY0_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Enable Wheel key writeDataToTS(REG_AT42QT_KEY1_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Enable Wheel key writeDataToTS(REG_AT42QT_KEY2_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Enable Wheel key writeDataToTS(REG_AT42QT_KEY9_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Enable Left button writeDataToTS(REG_AT42QT_KEY11_CTRL, AT42QT2120_TOUCH_KEY_VAL|AT42QT2120_AKS_GP1_MASK); // Enable Right button writeDataToTS(REG_AT42QT_SLID_OPT, 0x40); // Enable wheel writeDataToTS(REG_AT42QT_SLID_OPT, 0xC0); // Enable wheel activateGuardKey(); // Guard key } return temp_return; }