TSC_ADC: False Pen-up Interrupts
Revisions Affected
1.1, 1.2
Details
The touchscreen controller (TSC) determines the pen state (up or down) by checking the respective analog input (AIN0 for 4-wire or AIN4 for 5-wire) voltage level immediately after the Charge step. This does not provide enough time for the analog input voltage to return to the normal Pen-down voltage before testing the pen state. This will cause the TSC to generate a false Pen-up interrupt if the Charge step is enabled with the strong pull-up turned on when using hardware synchronized steps. Figure 3-4 illustrates the effect on the analog voltage when constant pen pressure is applied to the touchscreen and held through the Charge step.
Workarounds
There are two possible workarounds for this problem:
- The first workaround is implemented by configuring the Charge step exactly like the Idle step, where the internal strong pull-up is not turned on. This workaround will remove the strong pull-up on the analog input during the Charge step and leave only the internal weak pull-up. The weak pull-up is not strong enough to effect the normal Pen-down voltage. Therefore, the voltage applied to the analog input will not rise and cause the TSC to generate a false Pen-up interrupt. There is a drawback to this approach; this workaround will cause the Pen-down event to remain active until the weak pull-up turned on in the Idle step charges the touchscreen capacitance, as shown in Figure 3-5.
- Another method is available for 4-wire touchscreen implementations. It this case, it is possible to enable and configure one of the 16 steps to emulate the Charge step with the strong pull-up turned on as the step before the actual Charge step that has been configured like the Idle step with the strong pull-up turned off. The advantage of this implementation is that you are able to charge the touchscreen quicker and avoid the possible false Pen-down interrupts. The disadvantage is that you lose one of the 16 programmable steps and during this step there will be a garbage result stored in the FIFO. You will need to set the Step_ID_tag bit in the CTRL register so that you can identify the garbage result in the FIFO and discard it.