This is the QTouch Library for AVR and AVR32 devices that consists of one api header file(touch_api.h) and respective pre-compiled libraries.
All projects using these libraries must also provide the required header file(touch_qt_config.h) used to configure the library. For more information on the Qtouch Library, check www.atmel.com/qtouchlib.
Data Structures | |
struct | qt_lib_sig_info_t |
This will be used to get the library information from the library. More... | |
struct | tag_qt_touch_lib_config_data_t |
post processing configuration data that is received from the debug interface. More... | |
struct | tag_qt_touch_lib_measure_data_t |
measured touch data that is sent for the debugging and fine tunning. More... | |
struct | tag_qt_touch_status_t |
The state of the library sensors. More... | |
struct | tag_sensor_t |
struct | tag_x_line_info_t |
info stored for each x line. More... | |
struct | tag_y_line_info_t |
info stored for each y line. More... | |
Macros | |
#define | BURST_FUNC_1 BURST_JOIN(burst_qm_,PORT_NUM_1) |
#define | BURST_FUNC_2 BURST_JOIN(burst_qm_,PORT_NUM_2) |
#define | BURST_JOIN(A, B) JOIN(A,B) |
Macros for string concatenation. More... | |
#define | CONCAT(A, B, C) JOIN1( A, B, C ) |
#define | FILL_OUT_X_LINE_INFO(port_num, x_bit) {JOIN(burst_qm_, port_num) ,(TOUCH_DATA_T)( 1u << x_bit ), BURST_MASK_X_PORT_ ## port_num } |
QTouch libraries are supplied built with a range of charge times. More... | |
#define | FILL_OUT_Y_LINE_INFO(bit) { bit, (TOUCH_DATA_T)(1u<<bit) } |
Info stored for each y line. More... | |
#define | FILL_OUT_YA_LINE_INFO(bit) { bit, (uint8_t)(1u<<bit) } |
Info stored for each ya line. More... | |
#define | FILL_OUT_YB_LINE_INFO(bit) { bit, (uint8_t)(1u<<bit) } |
Info stored for each yb line. More... | |
#define | JOIN(x, y) x ## y |
Check necessary definitions. More... | |
#define | JOIN1(A, B, C) A ## B ## C |
#define | qt_init_sensing() qt_init_sensing_with_burst( ) |
initialise touch sensing. More... | |
#define | QT_NUM_SENSOR_STATE_BYTES ( ( QT_NUM_CHANNELS + 7u ) / 8u ) |
The number of bytes required to report the maximum possible number of sensors. More... | |
#define | QTLIB_BURST_AGAIN (uint16_t) 0x0100 |
indicating that reburst is needed to resolve in FILTERIN or FILTEROUT or RECALIBRATE state. More... | |
#define | QTLIB_CHANNEL_REF_CHANGE (uint16_t) 0x0008 |
indicating that at least one reference value has changed since last call to measure_sensors. More... | |
#define | QTLIB_IN_DETECT (uint16_t) 0x0001 |
indicating that at least one sensor is in detect. More... | |
#define | QTLIB_NO_ACTIVITY (uint16_t) 0x0000 |
Status flags used with debug. More... | |
#define | QTLIB_RESOLVE_CAL (uint16_t) 0x0200 |
indicating that reburst is needed to resolve in CALIBRATION. More... | |
#define | QTLIB_RESOLVE_DI (uint16_t) 0x0800 |
indicating that reburst is needed to resolve in RECAL. More... | |
#define | QTLIB_RESOLVE_FILTERIN (uint16_t) 0x0400 |
indicating that reburst is needed to resolve in FILTERING. More... | |
#define | QTLIB_RESOLVE_POS_RECAL (uint16_t) 0x1000 |
indicating that reburst is needed to resolve in RECAL. More... | |
#define | QTLIB_ROTOR_SLIDER_POS_CHANGE (uint16_t) 0x0004 |
indicating that at least one rotor slider has changed position since last call to measure_sensors. More... | |
#define | QTLIB_STATUS_CHANGE (uint16_t) 0x0002 |
indicating that at least one sensor haschanged ON/OFF state since last call to measure_sensors. More... | |
#define | REG(REGISTER, SIDE) JOIN( REGISTER, SIDE ) |
Macro to build register writes for controlling ports. More... | |
#define | TOUCH_DATA_T uint8_t |
This part of the code below is used for library selection. More... | |
Typedefs | |
typedef enum tag_aks_group_t | aks_group_t |
Which AKS group, if any, a sensor is in. More... | |
typedef enum tag_burst_mask_t | burst_mask_t |
enumeration of recognised burst masks. More... | |
typedef enum tag_channel_t | channel_t |
The channel(s) in a sensor. More... | |
typedef enum tag_hysteresis_t | hysteresis_t |
A sensor detection hysteresis value. More... | |
typedef void(* | PF_CHANNEL )(uint8_t channel) |
pointer to function to be called for a channel. More... | |
typedef void(* | PFV )(uint8_t channel, TOUCH_DATA_T line_mask) |
pointer to function returning void. More... | |
typedef struct qt_lib_sig_info_t | qt_lib_siginfo_t |
This will be used to get the library information from the library. More... | |
typedef struct tag_qt_touch_lib_config_data_t | qt_touch_lib_config_data_t |
post processing configuration data that is received from the debug interface. More... | |
typedef struct tag_qt_touch_lib_measure_data_t | qt_touch_lib_measure_data_t |
measured touch data that is sent for the debugging and fine tunning. More... | |
typedef struct tag_qt_touch_status_t | qt_touch_status_t |
The state of the library sensors. More... | |
typedef enum tag_recal_threshold_t | recal_threshold_t |
A sensor recalibration threshold. More... | |
typedef enum tag_resolution_t | resolution_t |
For rotors and sliders, the resolution of the reported angle or position. More... | |
typedef struct tag_sensor_t | sensor_t |
typedef enum tag_sensor_type_t | sensor_type_t |
Options for the sensor types available. More... | |
typedef uint8_t | threshold_t |
QMATRIX End. More... | |
typedef struct tag_x_line_info_t | x_line_info_t |
info stored for each x line. More... | |
typedef struct tag_y_line_info_t | y_line_info_t |
info stored for each y line. More... | |
Functions | |
void | BURST_FUNC_1 (uint8_t channel, TOUCH_DATA_T x_mask) |
void | BURST_FUNC_2 (uint8_t channel, TOUCH_DATA_T x_mask) |
void | qt_calibrate_sensing (void) |
calibrate touch sensing. More... | |
void | qt_enable_key (channel_t channel, aks_group_t aks_group, threshold_t detect_threshold, hysteresis_t detect_hysteresis) |
enable a key sensor. More... | |
void | qt_enable_rotor (channel_t from_channel, channel_t to_channel, aks_group_t aks_group, threshold_t detect_threshold, hysteresis_t detect_hysteresis, resolution_t angle_resolution, uint8_t angle_hysteresis) |
enable a rotor sensor. More... | |
void | qt_enable_slider (channel_t from_channel, channel_t to_channel, aks_group_t aks_group, threshold_t detect_threshold, hysteresis_t detect_hysteresis, resolution_t position_resolution, uint8_t position_hysteresis) |
enable a slider sensor. More... | |
void | qt_get_library_sig (qt_lib_siginfo_t *lib_sig_ptr) |
Get the library signature. More... | |
int16_t | qt_get_sensor_delta (uint8_t sensor) |
get the current delta on the specified sensor. More... | |
void | qt_init_sensing_with_burst () |
uint16_t | qt_measure_sensors (uint16_t current_time_ms) |
measure touch sensors. More... | |
void | qt_reset_sensing (void) |
reset touch sensing. More... | |
Variables | |
TOUCH_DATA_T | tag_y_line_info_t::bit |
which bit this y line is on. More... | |
TOUCH_DATA_T | tag_x_line_info_t::burst_mask_array_index |
index into array of burst masks. More... | |
void(* | burst_proc_qm )(uint8_t channel, TOUCH_DATA_T drive_mask) |
Function pointer used for bursting. More... | |
uint16_t | tag_qt_touch_lib_measure_data_t::channel_references [QT_NUM_CHANNELS] |
reference signal for each channel. More... | |
uint16_t | tag_qt_touch_lib_measure_data_t::channel_signals [QT_NUM_CHANNELS] |
measured signal on each channel. More... | |
uint8_t | tag_sensor_t::from_channel |
sensor from and to channels keys: from channel = to channel rotors/sliders run between the from and to channels NB: only need to_channel for keys in rotors/sliders build More... | |
uint8_t | tag_sensor_t::general_counter |
general purpose ctr: used for calibration, drifting, etc. More... | |
uint8_t | tag_sensor_t::index |
index into array of rotor/slider values. More... | |
uint16_t | qt_lib_sig_info_t::lib_sig_hword |
uint16_t | qt_lib_sig_info_t::lib_sig_lword |
uint16_t | lib_status_flags |
variable holding the status flags. More... | |
uint16_t | qt_lib_sig_info_t::library_version |
TOUCH_DATA_T | tag_x_line_info_t::mask |
bit mask for driving/clamping this x line. More... | |
TOUCH_DATA_T | tag_y_line_info_t::mask |
mask for y line. More... | |
uint8_t | tag_sensor_t::ndil_counter |
DI ctr. More... | |
PFV | tag_x_line_info_t::p_burst_function |
ptr to function to burst on this line. More... | |
uint8_t | qt_burst_lengths [QT_NUM_CHANNELS] |
The burst length on each QMatrix channel. More... | |
qt_touch_lib_config_data_t | qt_config_data |
This configuration data structure parameters if needs to be changed will be changed in the qt_set_parameters function. More... | |
uint8_t | tag_qt_touch_lib_config_data_t::qt_di |
Sensor detect integration (DI) limit. More... | |
uint8_t | tag_qt_touch_lib_config_data_t::qt_drift_hold_time |
Sensor drift hold time. More... | |
void(* | qt_filter_callback )(void) |
This function is called after the library has made capacitive measurements, but before it has processed them. The user can use this hook to apply filter functions to the measured signal values. More... | |
uint8_t | tag_qt_touch_lib_config_data_t::qt_max_on_duration |
Sensor maximum on duration. More... | |
qt_touch_lib_measure_data_t | qt_measure_data |
measurement data. More... | |
uint16_t | qt_measurement_period_msec |
timer period in msec. More... | |
uint8_t | tag_qt_touch_lib_config_data_t::qt_neg_drift_rate |
Sensor negative drift rate. More... | |
uint8_t | tag_qt_touch_lib_config_data_t::qt_pos_drift_rate |
Sensor positive drift rate. More... | |
uint8_t | tag_qt_touch_lib_config_data_t::qt_pos_recal_delay |
Positive recalibration delay. More... | |
recal_threshold_t | tag_qt_touch_lib_config_data_t::qt_recal_threshold |
Sensor recalibration threshold. More... | |
qt_touch_status_t | tag_qt_touch_lib_measure_data_t::qt_touch_status |
state of sensors. More... | |
uint8_t | tag_qt_touch_status_t::rotor_slider_values [QT_MAX_NUM_ROTORS_SLIDERS] |
Rotor angles or slider positions. More... | |
uint8_t | tag_qt_touch_status_t::sensor_states [QT_NUM_SENSOR_STATE_BYTES] |
The state (on/off) of the library sensors. More... | |
sensor_t | sensors [QT_NUM_CHANNELS] |
the library sensors. More... | |
uint8_t | tag_sensor_t::state |
sensor state (calibrating, on, ...). More... | |
uint8_t | tag_sensor_t::threshold |
sensor detection threshold. More... | |
uint8_t | tag_sensor_t::to_channel |
uint8_t | tag_sensor_t::type_aks_pos_hyst |
sensor type, AKS group, positive recal flag, and hysteresis value bits 7..6: sensor type: 00: key 01: rotor 10: slider 11: reserved bits 5..3: AKS group (0..7): 0 = no AKS group bit 2 : positive recal flag bits 1..0: hysteresis More... | |
#define BURST_FUNC_1 BURST_JOIN(burst_qm_,PORT_NUM_1) |
#define BURST_FUNC_2 BURST_JOIN(burst_qm_,PORT_NUM_2) |
#define BURST_JOIN | ( | A, | |
B | |||
) | JOIN(A,B) |
Macros for string concatenation.
#define CONCAT | ( | A, | |
B, | |||
C | |||
) | JOIN1( A, B, C ) |
#define FILL_OUT_X_LINE_INFO | ( | port_num, | |
x_bit | |||
) | {JOIN(burst_qm_, port_num) ,(TOUCH_DATA_T)( 1u << x_bit ), BURST_MASK_X_PORT_ ## port_num } |
QTouch libraries are supplied built with a range of charge times.
Charge time is the duration in which charge is transferred from the AVR onto the measurement capacitor. Shorter charge times result in faster measurements, but may be too fast to completely transfer charge onto the measurement capacitor.
The range of charge times lets the user choose a suitable version for the clock rate their chip is running at.
To make capacitive measurements, a charge time on the order of 0.25us to 2.5us is typically required. The following table shows the charge times corresponding to a range of clock speeds.
Clock speed (MHz) Cycle time (us) Suitable charge times
1 1 1~2 cycles (1us to 2us) 2 0.5 1~5 cycles (0.5us to 2.5us) 4 0.25 1~10 cycles (0.25us to 2.5us) 8 0.125 2~10 cycles (0.25us to 1.25us) 10 0.1 3~25 cycles (0.3us to 2.5us) 16 0.0625 4~25 cycles (0.25us to 1.5625s) 20 0.05 5~50 cycles (0.25us to 2.5us) Error Checking For the User Configuration Options Starts here. Info stored for each x line.
For each X line, enter the port and pin it is on. For instance, if X3 is on PB1, the 4th entry would be FILL_OUT_X_LINE_INFO( 1,1 ), and PORT_X_1 is B
#define FILL_OUT_Y_LINE_INFO | ( | bit | ) | { bit, (TOUCH_DATA_T)(1u<<bit) } |
Info stored for each y line.
For each Y line, enter the pin it is on. For instance, if Y2 is on PA5 and PF5, the 3th entry would be FILL_OUT_Y_LINE_INFO( 5 ) NOTE: 1. The PORTs for YA and YB on which Y lines are going to be needs to be defined as PORT_YA and PORT_YB.
Example: PORT_YA=A and PORT_YB=F in the case above.
#define FILL_OUT_YA_LINE_INFO | ( | bit | ) | { bit, (uint8_t)(1u<<bit) } |
Info stored for each ya line.
For each YA line, enter the pin it is on. For instance, if Y2A is on PA5 , the 3th entry would be FILL_OUT_YA_LINE_INFO( 5 ) NOTE: 1. The PORTs for YA and YB on which Y lines are going to be needs to be defined as PORT_YA and PORT_YB.
Example: PORT_YA=A in the case above.
#define FILL_OUT_YB_LINE_INFO | ( | bit | ) | { bit, (uint8_t)(1u<<bit) } |
Info stored for each yb line.
For each YB line, enter the pin it is on. For instance, if Y2B is on PF3, the 3th entry would be FILL_OUT_YB_LINE_INFO( 3 ) NOTE: 1. The PORTs for YA and YB on which Y lines are going to be needs to be defined as PORT_YA and PORT_YB.
Example: PORT_YB=F in the case above.
#define JOIN | ( | x, | |
y | |||
) | x ## y |
Check necessary definitions.
MAKE_BUILD. QMATRIX Error Checking For the User Configuration Options ends here. WARNING! Do not edit below this line. Utility macro for expanding port registers.
#define JOIN1 | ( | A, | |
B, | |||
C | |||
) | A ## B ## C |
#define qt_init_sensing | ( | ) | qt_init_sensing_with_burst( ) |
initialise touch sensing.
This function calculates internal library variables and configures the touch channels, and must be called before qt_measure_sensors().
Referenced by main().
#define QT_NUM_SENSOR_STATE_BYTES ( ( QT_NUM_CHANNELS + 7u ) / 8u ) |
The number of bytes required to report the maximum possible number of sensors.
Referenced by Transmit_State().
#define QTLIB_BURST_AGAIN (uint16_t) 0x0100 |
indicating that reburst is needed to resolve in FILTERIN or FILTEROUT or RECALIBRATE state.
Referenced by app_task().
#define QTLIB_CHANNEL_REF_CHANGE (uint16_t) 0x0008 |
indicating that at least one reference value has changed since last call to measure_sensors.
Referenced by QDebug_SendData().
#define QTLIB_IN_DETECT (uint16_t) 0x0001 |
indicating that at least one sensor is in detect.
#define QTLIB_NO_ACTIVITY (uint16_t) 0x0000 |
Status flags used with debug.
indicating no activity.
#define QTLIB_RESOLVE_CAL (uint16_t) 0x0200 |
indicating that reburst is needed to resolve in CALIBRATION.
#define QTLIB_RESOLVE_DI (uint16_t) 0x0800 |
indicating that reburst is needed to resolve in RECAL.
#define QTLIB_RESOLVE_FILTERIN (uint16_t) 0x0400 |
indicating that reburst is needed to resolve in FILTERING.
#define QTLIB_RESOLVE_POS_RECAL (uint16_t) 0x1000 |
indicating that reburst is needed to resolve in RECAL.
#define QTLIB_ROTOR_SLIDER_POS_CHANGE (uint16_t) 0x0004 |
indicating that at least one rotor slider has changed position since last call to measure_sensors.
Referenced by QDebug_SendData().
#define QTLIB_STATUS_CHANGE (uint16_t) 0x0002 |
indicating that at least one sensor haschanged ON/OFF state since last call to measure_sensors.
Referenced by QDebug_SendData().
#define REG | ( | REGISTER, | |
SIDE | |||
) | JOIN( REGISTER, SIDE ) |
Macro to build register writes for controlling ports.
The intermediate JOIN macro is required for correct expansion of the args.
#define TOUCH_DATA_T uint8_t |
This part of the code below is used for library selection.
This code will not be documented. QMATRIX Start.
typedef enum tag_aks_group_t aks_group_t |
Which AKS group, if any, a sensor is in.
NO_AKS_GROUP = sensor is not in an AKS group, and cannot be suppressed. AKS_GROUP_x = sensor is in AKS group x.
typedef enum tag_burst_mask_t burst_mask_t |
enumeration of recognised burst masks.
typedef enum tag_channel_t channel_t |
The channel(s) in a sensor.
typedef enum tag_hysteresis_t hysteresis_t |
A sensor detection hysteresis value.
This is expressed as a percentage of the sensor detection threshold.
HYST_x = hysteresis value is x% of detection threshold value (rounded down). NB: a minimum value of 2 is used.
Example: if detection threshold = 20, then: HYST_50 = 10 (50% of 20) HYST_25 = 5 (25% of 20) HYST_12_5 = 2 (12.5% of 20) HYST_6_25 = 2 (6.25% of 20 = 1, but value is hardlimited to 2)
typedef void(* PF_CHANNEL)(uint8_t channel) |
pointer to function to be called for a channel.
typedef void(* PFV)(uint8_t channel, TOUCH_DATA_T line_mask) |
pointer to function returning void.
typedef struct qt_lib_sig_info_t qt_lib_siginfo_t |
This will be used to get the library information from the library.
typedef struct tag_qt_touch_lib_config_data_t qt_touch_lib_config_data_t |
post processing configuration data that is received from the debug interface.
typedef struct tag_qt_touch_lib_measure_data_t qt_touch_lib_measure_data_t |
measured touch data that is sent for the debugging and fine tunning.
typedef struct tag_qt_touch_status_t qt_touch_status_t |
The state of the library sensors.
typedef enum tag_recal_threshold_t recal_threshold_t |
A sensor recalibration threshold.
This is expressed as a percentage of the sensor detection threshold.
RECAL_x = recalibration threshold is x% of detection threshold value (rounded down). NB: a minimum value of 4 is used.
Example: if detection threshold = 40, then: RECAL_100 = 40 (100% of 40) RECAL_50 = 20 (50% of 40) RECAL_25 = 10 (25% of 40) RECAL_12_5 = 5 (12.5% of 40) RECAL_6_25 = 4 (6.25% of 40 = 2, but value is hardlimited to 4)
typedef enum tag_resolution_t resolution_t |
For rotors and sliders, the resolution of the reported angle or position.
RES_x_BIT = rotor/slider reports x-bit values.
Example: if slider resolution is RES_7_BIT, then reported positions are in the range 0..127.
typedef struct tag_sensor_t sensor_t |
typedef enum tag_sensor_type_t sensor_type_t |
Options for the sensor types available.
typedef uint8_t threshold_t |
QMATRIX End.
An unsigned 8-bit number setting a sensor detection threshold.
typedef struct tag_x_line_info_t x_line_info_t |
info stored for each x line.
typedef struct tag_y_line_info_t y_line_info_t |
info stored for each y line.
enum tag_aks_group_t |
enum tag_burst_mask_t |
enum tag_channel_t |
The channel(s) in a sensor.
enum tag_hysteresis_t |
A sensor detection hysteresis value.
This is expressed as a percentage of the sensor detection threshold.
HYST_x = hysteresis value is x% of detection threshold value (rounded down). NB: a minimum value of 2 is used.
Example: if detection threshold = 20, then: HYST_50 = 10 (50% of 20) HYST_25 = 5 (25% of 20) HYST_12_5 = 2 (12.5% of 20) HYST_6_25 = 2 (6.25% of 20 = 1, but value is hardlimited to 2)
Enumerator | |
---|---|
HYST_50 | |
HYST_25 | |
HYST_12_5 | |
HYST_6_25 |
A sensor recalibration threshold.
This is expressed as a percentage of the sensor detection threshold.
RECAL_x = recalibration threshold is x% of detection threshold value (rounded down). NB: a minimum value of 4 is used.
Example: if detection threshold = 40, then: RECAL_100 = 40 (100% of 40) RECAL_50 = 20 (50% of 40) RECAL_25 = 10 (25% of 40) RECAL_12_5 = 5 (12.5% of 40) RECAL_6_25 = 4 (6.25% of 40 = 2, but value is hardlimited to 4)
Enumerator | |
---|---|
RECAL_100 | |
RECAL_50 | |
RECAL_25 | |
RECAL_12_5 | |
RECAL_6_25 |
enum tag_resolution_t |
For rotors and sliders, the resolution of the reported angle or position.
RES_x_BIT = rotor/slider reports x-bit values.
Example: if slider resolution is RES_7_BIT, then reported positions are in the range 0..127.
Enumerator | |
---|---|
RES_1_BIT | |
RES_2_BIT | |
RES_3_BIT | |
RES_4_BIT | |
RES_5_BIT | |
RES_6_BIT | |
RES_7_BIT | |
RES_8_BIT |
enum tag_sensor_type_t |
void BURST_FUNC_1 | ( | uint8_t | channel, |
TOUCH_DATA_T | x_mask | ||
) |
void BURST_FUNC_2 | ( | uint8_t | channel, |
TOUCH_DATA_T | x_mask | ||
) |
void qt_calibrate_sensing | ( | void | ) |
calibrate touch sensing.
void qt_enable_key | ( | channel_t | channel, |
aks_group_t | aks_group, | ||
threshold_t | detect_threshold, | ||
hysteresis_t | detect_hysteresis | ||
) |
enable a key sensor.
channel,: | which touch channel the key sensor uses |
aks_group,: | which AKS group (if any) the sensor is in |
detect_threshold,: | the sensor detection threshold |
detect_hysteresis,: | the sensor detection hysteresis value |
The current state of the key (on or off) can be checked in qt_touch_status.sensor_states.
Referenced by config_sensors().
void qt_enable_rotor | ( | channel_t | from_channel, |
channel_t | to_channel, | ||
aks_group_t | aks_group, | ||
threshold_t | detect_threshold, | ||
hysteresis_t | detect_hysteresis, | ||
resolution_t | angle_resolution, | ||
uint8_t | angle_hysteresis | ||
) |
enable a rotor sensor.
from_channel,: | the first channel in the rotor sensor |
to_channel,: | the last channel in the rotor sensor |
aks_group,: | which AKS group (if any) the sensor is in |
detect_threshold,: | the sensor detection threshold |
detect_hysteresis,: | the sensor detection hysteresis value |
angle_resolution,: | the resolution of the reported angle value |
angle_hysteresis,: | the hysteresis of the reported angle value |
The current state of the rotor (on or off) can be checked in qt_touch_status.sensor_states.
The rotor value is in qt_touch_status.rotor_slider_values[]. Which array element is used depends on the order in which sensors are enabled. The first rotor or slider enabled will use and so on.
The reported rotor value is valid when the rotor is on.
Referenced by config_sensors().
void qt_enable_slider | ( | channel_t | from_channel, |
channel_t | to_channel, | ||
aks_group_t | aks_group, | ||
threshold_t | detect_threshold, | ||
hysteresis_t | detect_hysteresis, | ||
resolution_t | position_resolution, | ||
uint8_t | position_hysteresis | ||
) |
enable a slider sensor.
from_channel,: | the first channel in the slider sensor |
to_channel,: | the last channel in the slider sensor |
aks_group,: | which AKS group (if any) the sensor is in |
detect_threshold,: | the sensor detection threshold |
detect_hysteresis,: | the sensor detection hysteresis value |
position_resolution,: | the resolution of the reported position value |
position_hysteresis,: | the hysteresis of the reported position value |
The current state of the slider (on or off) can be checked in qt_touch_status.sensor_states.
The slider value is in qt_touch_status.rotor_slider_values[]. Which array element is used depends on the order in which sensors are enabled. The first rotor or slider enabled will use rotor_slider_values[0], the second will use rotor_slider_values[1], and so on.
The reported slider value is valid when the rotor is on.
void qt_get_library_sig | ( | qt_lib_siginfo_t * | lib_sig_ptr | ) |
Get the library signature.
qt_lib_siginfo_t,: | lib_sig_ptr=Pointer to the library signature structure |
Referenced by QDebug_Init().
int16_t qt_get_sensor_delta | ( | uint8_t | sensor | ) |
get the current delta on the specified sensor.
sensor,: | sensor number for which to get the delta. |
Referenced by Transmit_Delta().
void qt_init_sensing_with_burst | ( | ) |
uint16_t qt_measure_sensors | ( | uint16_t | current_time_ms | ) |
measure touch sensors.
current_time_ms,: | the current time, in ms |
The current state of all enabled sensors is reported in the qt_touch_status struct.
Before calling this function, one or more sensors must have been enabled (using qt_enable_xxx()), and qt_init_sensing() must have been called.
Referenced by app_task().
void qt_reset_sensing | ( | void | ) |
reset touch sensing.
This may be useful if it is desired to dynamically reconfigure sensing. After calling this function, any required sensors must be re-enabled, and qt_init_sensing() must be called before qt_measure_channels() is called again.
TOUCH_DATA_T tag_y_line_info_t::bit |
which bit this y line is on.
TOUCH_DATA_T tag_x_line_info_t::burst_mask_array_index |
index into array of burst masks.
void(* burst_proc_qm)(uint8_t channel, TOUCH_DATA_T drive_mask) |
Function pointer used for bursting.
uint16_t tag_qt_touch_lib_measure_data_t::channel_references[QT_NUM_CHANNELS] |
reference signal for each channel.
Referenced by qt_avr477_filter_cb(), and Transmit_Ref().
uint16_t tag_qt_touch_lib_measure_data_t::channel_signals[QT_NUM_CHANNELS] |
measured signal on each channel.
Referenced by qt_avr477_filter_cb(), and Transmit_Signals().
uint8_t tag_sensor_t::from_channel |
sensor from and to channels keys: from channel = to channel rotors/sliders run between the from and to channels NB: only need to_channel for keys in rotors/sliders build
uint8_t tag_sensor_t::general_counter |
general purpose ctr: used for calibration, drifting, etc.
uint8_t tag_sensor_t::index |
index into array of rotor/slider values.
uint16_t qt_lib_sig_info_t::lib_sig_hword |
uint16_t qt_lib_sig_info_t::lib_sig_lword |
Referenced by Transmit_Sign_On().
uint16_t lib_status_flags |
variable holding the status flags.
uint16_t qt_lib_sig_info_t::library_version |
Referenced by Transmit_Sign_On().
TOUCH_DATA_T tag_x_line_info_t::mask |
bit mask for driving/clamping this x line.
TOUCH_DATA_T tag_y_line_info_t::mask |
mask for y line.
uint8_t tag_sensor_t::ndil_counter |
DI ctr.
PFV tag_x_line_info_t::p_burst_function |
ptr to function to burst on this line.
uint8_t qt_burst_lengths[QT_NUM_CHANNELS] |
The burst length on each QMatrix channel.
Units: pulses Default value: 64 pulses
Referenced by burst_len_config(), Set_QM_Burst_Lengths(), and Transmit_Burst_Lengths().
qt_touch_lib_config_data_t qt_config_data |
This configuration data structure parameters if needs to be changed will be changed in the qt_set_parameters function.
uint8_t tag_qt_touch_lib_config_data_t::qt_di |
Sensor detect integration (DI) limit.
Referenced by qt_set_parameters(), Set_Global_Config(), and Transmit_Global_Config().
uint8_t tag_qt_touch_lib_config_data_t::qt_drift_hold_time |
Sensor drift hold time.
Referenced by qt_set_parameters(), Set_Global_Config(), and Transmit_Global_Config().
void(* qt_filter_callback)(void) |
This function is called after the library has made capacitive measurements, but before it has processed them. The user can use this hook to apply filter functions to the measured signal values.
Referenced by main().
uint8_t tag_qt_touch_lib_config_data_t::qt_max_on_duration |
Sensor maximum on duration.
Referenced by qt_set_parameters(), Set_Global_Config(), and Transmit_Global_Config().
qt_touch_lib_measure_data_t qt_measure_data |
measurement data.
Referenced by app_task(), qt_avr477_filter_cb(), Transmit_Ref(), Transmit_Signals(), and Transmit_State().
uint16_t qt_measurement_period_msec |
timer period in msec.
Referenced by init_timer_isr(), ISR(), Set_Global_Config(), and Transmit_Global_Config().
uint8_t tag_qt_touch_lib_config_data_t::qt_neg_drift_rate |
Sensor negative drift rate.
Referenced by qt_set_parameters(), Set_Global_Config(), and Transmit_Global_Config().
uint8_t tag_qt_touch_lib_config_data_t::qt_pos_drift_rate |
Sensor positive drift rate.
Referenced by qt_set_parameters(), Set_Global_Config(), and Transmit_Global_Config().
uint8_t tag_qt_touch_lib_config_data_t::qt_pos_recal_delay |
Positive recalibration delay.
Referenced by qt_set_parameters(), Set_Global_Config(), and Transmit_Global_Config().
recal_threshold_t tag_qt_touch_lib_config_data_t::qt_recal_threshold |
Sensor recalibration threshold.
Referenced by qt_set_parameters(), Set_Global_Config(), and Transmit_Global_Config().
qt_touch_status_t tag_qt_touch_lib_measure_data_t::qt_touch_status |
state of sensors.
Referenced by app_task(), and Transmit_State().
uint8_t tag_qt_touch_status_t::rotor_slider_values[QT_MAX_NUM_ROTORS_SLIDERS] |
Rotor angles or slider positions.
These values are valid when sensor_states shows that the corresponding rotor or slider sensor is in detect.
Referenced by app_task(), and Transmit_State().
uint8_t tag_qt_touch_status_t::sensor_states[QT_NUM_SENSOR_STATE_BYTES] |
The state (on/off) of the library sensors.
Bit 'n' = state of sensor 'n'. Bit 0 = sensor_states[0] bit 0 Bit 1 = sensor_states[0] bit 1 ... Bit 7 = sensor_states[0] bit 7 Bit 8 = sensor_states[1] bit 0 Bit 9 = sensor_states[1] bit 1 ... etc 0 = not in detect, 1 = in detect.
Referenced by app_task(), and Transmit_State().
sensor_t sensors[QT_NUM_CHANNELS] |
the library sensors.
uint8_t tag_sensor_t::state |
sensor state (calibrating, on, ...).
uint8_t tag_sensor_t::threshold |
sensor detection threshold.
Referenced by Set_Channel_Config().
uint8_t tag_sensor_t::to_channel |
uint8_t tag_sensor_t::type_aks_pos_hyst |
sensor type, AKS group, positive recal flag, and hysteresis value bits 7..6: sensor type: 00: key 01: rotor 10: slider 11: reserved bits 5..3: AKS group (0..7): 0 = no AKS group bit 2 : positive recal flag bits 1..0: hysteresis
Referenced by Set_Channel_Config().