• Main Page
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

mTouch_processConfiguration.h

Go to the documentation of this file.
00001 /*************************************************************************
00002  *  © 2012 Microchip Technology Inc.                                       
00003  *  
00004  *  Project Name:    mTouch Framework v2.1
00005  *  FileName:        mTouch_processConfiguration.h
00006  *
00007  *  Processor:       See documentation for supported PIC® microcontrollers 
00008  *  Compiler:        HI-TECH Ver. 9.81 or later
00009  *  IDE:             MPLAB® IDE v8.50 (or later) or MPLAB® X                        
00010  *  Hardware:         
00011  *  Company:         
00012  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00013  *  Description:     mTouch Framework Include File
00014  *                   - No application code should be implemented in this
00015  *                     or any other mTouch framework file. This will allow
00016  *                     for better customer support and easier upgrades to
00017  *                     later firmware versions. Use the main.c and user-
00018  *                     generated files to implement your application.
00019  *                   - See the documentation located in the docs/ folder
00020  *                     for a more information about how the framework is
00021  *                     implemented.
00022  *************************************************************************/
00023 /**************************************************************************
00024  * MICROCHIP SOFTWARE NOTICE AND DISCLAIMER: You may use this software, and 
00025  * any derivatives created by any person or entity by or on your behalf, 
00026  * exclusively with Microchip's products in accordance with applicable
00027  * software license terms and conditions, a copy of which is provided for
00028  * your referencein accompanying documentation. Microchip and its licensors 
00029  * retain all ownership and intellectual property rights in the 
00030  * accompanying software and in all derivatives hereto. 
00031  * 
00032  * This software and any accompanying information is for suggestion only. 
00033  * It does not modify Microchip's standard warranty for its products. You 
00034  * agree that you are solely responsible for testing the software and 
00035  * determining its suitability. Microchip has no obligation to modify, 
00036  * test, certify, or support the software. 
00037  * 
00038  * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
00039  * EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED 
00040  * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A 
00041  * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE, ITS INTERACTION WITH 
00042  * MICROCHIP'S PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY 
00043  * APPLICATION. 
00044  * 
00045  * IN NO EVENT, WILL MICROCHIP BE LIABLE, WHETHER IN CONTRACT, WARRANTY, 
00046  * TORT (INCLUDING NEGLIGENCE OR BREACH OF STATUTORY DUTY), STRICT 
00047  * LIABILITY, INDEMNITY, CONTRIBUTION, OR OTHERWISE, FOR ANY INDIRECT, 
00048  * SPECIAL, PUNITIVE, EXEMPLARY, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, 
00049  * FOR COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, 
00050  * HOWSOEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY 
00051  * OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT ALLOWABLE BY LAW, 
00052  * MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS 
00053  * SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID 
00054  * DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. 
00055  * 
00056  * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF 
00057  * THESE TERMS. 
00058  *************************************************************************/
00065 #ifndef __MTOUCH_PROCESSCONFIGURATION_H
00066 #define __MTOUCH_PROCESSCONFIGURATION_H
00067 
00069 
00070 // COPIED FROM stdint.h DUE TO THESE BEING MISSING (BUT STILL SUPPORTED) FROM THE PIC18 COMPILER
00071 
00072 #ifndef int8_t
00073 typedef signed char int8_t;
00074 #define int8_t int8_t
00075 #define INT8_MIN (-128)
00076 #define INT8_MAX (127)
00077 #endif
00078 #ifndef int16_t
00079 typedef signed int int16_t;
00080 #define int16_t int16_t
00081 #define INT16_MIN (-32768)
00082 #define INT16_MAX (32767)
00083 #endif
00084 #ifndef int24_t
00085 typedef signed short long int int24_t;
00086 #define int24_t int24_t
00087 #define INT24_MIN (-8388608L)
00088 #define INT24_MAX (8388607L)
00089 #endif
00090 #ifndef int32_t
00091 typedef signed long int int32_t;
00092 #define int32_t int32_t
00093 #define INT32_MIN (-2147483648L)
00094 #define INT32_MAX (2147483647L)
00095 #endif
00096 #ifndef uint8_t
00097 typedef unsigned char uint8_t;
00098 #define uint8_t uint8_t
00099 #define UINT8_MAX (255)
00100 #endif
00101 #ifndef uint16_t
00102 typedef unsigned int uint16_t;
00103 #define uint16_t uint16_t
00104 #define UINT16_MAX (65535U)
00105 #endif
00106 #ifndef uint24_t
00107 typedef unsigned short long int uint24_t;
00108 #define uint24_t uint24_t
00109 #define UINT24_MAX (16777216UL)
00110 #endif
00111 #ifndef uint32_t
00112 typedef unsigned long int uint32_t;
00113 #define uint32_t uint32_t
00114 #define UINT32_MAX (4294967295UL)
00115 #endif
00116 
00117 
00118 #if defined(HI_TECH_C)
00119 #pragma warning disable 1395    // Disables the following message from appearing at compile time:
00120                                 //
00121                                 //  Advisory[1395] notable code sequence candidate suitable 
00122                                 //                 for compiler validation suite detected
00123                                 //
00124                                 // TIP: The compiler will display this message if it encounters a 
00125                                 //      specific code sequence that results in compiler templates 
00126                                 //      being used in a unique way -- this is difficult to explain 
00127                                 //      if you are not familiar with the compiler internals. It 
00128                                 //      does not mean there is a bug in the generated code, but 
00129                                 //      that the code sequence is less tested. If you run across
00130                                 //      this advisory, sending in the code to the compiler team
00131                                 //      enables them to create new test suite cases that will more 
00132                                 //      rigorously test that particular situation.
00133                                 //      The code that is currently generating this advisory in the
00134                                 //      mTouch Framework has already been submitted to Hi-Tech.
00135 #endif
00136 
00137 //****************************************************************************************************
00138 //  _   _      _                   __  __                          
00139 // | | | | ___| |_ __   ___ _ __  |  \/  | __ _  ___ _ __ ___  ___ 
00140 // | |_| |/ _ \ | '_ \ / _ \ '__| | |\/| |/ _` |/ __| '__/ _ \/ __|
00141 // |  _  |  __/ | |_) |  __/ |    | |  | | (_| | (__| | | (_) \__ \
00142 // |_| |_|\___|_| .__/ \___|_|    |_|  |_|\__,_|\___|_|  \___/|___/
00143 //              |_|  
00144 //****************************************************************************************************
00145 
00146 #define     __paste(a,b)                    __pasteX(a,b)               // Use this macro to concatonate 2 strings in the pre-compiler
00147 #define     __pasteX(a,b)                   a##b                        // Do not use directly. Use __paste(a,b) instead.
00148 #define     __paste2(a,b)                   __paste2X(a,b)              
00149 #define     __paste2X(a,b)                  a##b                        
00150 #define     __paste3(a,b)                   __paste3X(a,b)              
00151 #define     __paste3X(a,b)                  a##b                        
00152 #define     __paste4(a,b)                   __paste4X(a,b)              
00153 #define     __paste4X(a,b)                  a##b                        
00154 #define     __paste5(a,b)                   __paste5X(a,b)              
00155 #define     __paste5X(a,b)                  a##b                        
00156 
00157 #define     __3paste(a,b,c)                 __3pasteX(a,b,c)            // Use this macro to concatonate 3 strings in the pre-compiler
00158 #define     __4paste(a,b,c,d)               __4pasteX(a,b,c,d)          // Use this macro to concatonate 4 strings in the pre-compiler
00159 #define     __5paste(a,b,c,d,e)             __5pasteX(a,b,c,d,e)        // Use this macro to concatonate 5 strings in the pre-compiler
00160 #define     __3pasteX(a,b,c)                a##b##c                     // Do not use directly. Use __paste3(a,b,c) instead.
00161 #define     __4pasteX(a,b,c,d)              a##b##c##d                  // Do not use directly. Use __paste4(a,b,c,d) instead.
00162 #define     __5pasteX(a,b,c,d,e)            a##b##c##d##e               // Do not use directly. Use __paste5(a,b,c,d,e) instead.
00163 
00164 
00165 //****************************************************************************************************
00166 //   ____                      _ _              ____                            _   _ _     _ _ _ _         
00167 //  / ___|___  _ __ ___  _ __ (_) | ___ _ __   / ___|___  _ __ ___  _ __   __ _| |_(_) |__ (_) (_) |_ _   _ 
00168 // | |   / _ \| '_ ` _ \| '_ \| | |/ _ \ '__| | |   / _ \| '_ ` _ \| '_ \ / _` | __| | '_ \| | | | __| | | |
00169 // | |__| (_) | | | | | | |_) | | |  __/ |    | |__| (_) | | | | | | |_) | (_| | |_| | |_) | | | | |_| |_| |
00170 //  \____\___/|_| |_| |_| .__/|_|_|\___|_|     \____\___/|_| |_| |_| .__/ \__,_|\__|_|_.__/|_|_|_|\__|\__, |
00171 //                      |_|                                        |_|                                |___/ 
00172 //****************************************************************************************************
00173 #if defined(__PICC18__)
00174     #if (_HTC_VER_MAJOR_ < 9) || ((_HTC_VER_MAJOR_ == 9) && (_HTC_VER_MINOR_ < 80))
00175     #error The mTouch Framework is not compatible with your version of the compiler. Please update to Hi-Tech PICC-18 9.80 or later - currently available on microchip.com
00176     #endif
00177 #endif
00178 
00179 
00180 //****************************************************************************************************
00181 //  _   _               _                          ____             __ _ _           
00182 // | | | | __ _ _ __ __| |_      ____ _ _ __ ___  |  _ \ _ __ ___  / _(_) | ___  ___ 
00183 // | |_| |/ _` | '__/ _` \ \ /\ / / _` | '__/ _ \ | |_) | '__/ _ \| |_| | |/ _ \/ __|
00184 // |  _  | (_| | | | (_| |\ V  V / (_| | | |  __/ |  __/| | | (_) |  _| | |  __/\__ \
00185 // |_| |_|\__,_|_|  \__,_| \_/\_/ \__,_|_|  \___| |_|   |_|  \___/|_| |_|_|\___||___/ 
00186 //
00187 //****************************************************************************************************
00188 
00189 // Include the hardware profile header file that corresponds to the currently selected PIC microcontroller.
00190 #if     defined(_16F1827) || defined(_16LF1827) || defined(_16F1826) || defined(_16LF1826) || defined(_16F1823) || defined(_16LF1823) || defined(_12F1822) || defined(_12LF1822) || defined(_16F1824) || defined(_16LF1824) || defined(_16F1825) || defined(_16LF1825) || defined(_16F1828) || defined(_16LF1828) || defined(_16F1829) || defined(_16LF1829)
00191     #include "Alternative Configurations/mTouch_hardwareProfile_16F182x.h"
00192     #define _16F182x
00193 #elif   defined(_12F1840) || defined(_12LF1840)
00194     #include "Alternative Configurations/mTouch_hardwareProfile_12F184x.h"
00195     #define _12F184x
00196 #elif   defined(_16F1847) || defined(_16LF1847)
00197     #include "Alternative Configurations/mTouch_hardwareProfile_16F184x.h"
00198     #define _16F184x
00199 #elif   defined(_16F1933) || defined(_16LF1933) || defined(_16F1934) || defined(_16LF1934) || defined(_16F1936) || defined(_16LF1936) || defined(_16F1937) || defined(_16LF1937) || defined(_16F1938) || defined(_16LF1938) || defined(_16F1939) || defined(_16LF1939)
00200     #include "Alternative Configurations/mTouch_hardwareProfile_16F193x.h"
00201     #define _16F193x
00202 #elif   defined(_16F1946) || defined(_16LF1946) || defined(_16F1947) || defined(_16LF1947) 
00203     #include "Alternative Configurations/mTouch_hardwareProfile_16F194x.h"
00204     #define _16F194x
00205 #elif   defined(_16LF1902) || defined(_16LF1903) || defined(_16LF1904) || defined(_16LF1906) || defined(_16LF1907) 
00206     #include "Alternative Configurations/mTouch_hardwareProfile_16LF190x.h"
00207     #define _16LF190x
00208 #elif   defined(_16F1526) || defined(_16LF1526) || defined(_16F1527) || defined(_16LF1527) 
00209     #include "Alternative Configurations/mTouch_hardwareProfile_16F152x.h"
00210     #define _16F152x
00211 #elif   defined(_16F1516) || defined(_16LF1516) || defined(_16F1517) || defined(_16LF1517) || defined(_16F1518) || defined(_16LF1518) || defined(_16F1519) || defined(_16LF1519)
00212     #include "Alternative Configurations/mTouch_hardwareProfile_16F151x.h" 
00213     #define _16F151x
00214 #elif   defined(_16F1507) || defined(_16LF1507) || defined(_16F1509) || defined(_16LF1509)
00215     #include "Alternative Configurations/mTouch_hardwareProfile_16F150x.h" 
00216     #define _16F150x
00217 #elif   defined(_16F913) || defined(_16F914) || defined(_16F916) || defined(_16F917) || defined(_16F946)
00218     #include "Alternative Configurations/mTouch_hardwareProfile_16F91x.h"
00219 #elif   defined(_16F882) || defined(_16F883) || defined(_16F884) || defined(_16F886) || defined(_16F887)
00220     #include "Alternative Configurations/mTouch_hardwareProfile_16F88x.h"
00221 #elif   defined(_16F818) || defined(_16F819)
00222     #include "Alternative Configurations/mTouch_hardwareProfile_16F81x.h"
00223 #elif   defined(_16F785) || defined(_16HV785)
00224     #include "Alternative Configurations/mTouch_hardwareProfile_16F785.h"
00225 #elif   defined(_16F720) || defined(_16LF720) || defined(_16F721) || defined(_16LF721) || defined(_16F722) || defined(_16LF722) || defined(_16F722A) || defined(_16LF722A) || defined(_16F723) || defined(_16LF723) || defined(_16F723A) || defined(_16LF723A) || defined(_16F724) || defined(_16LF724) || defined(_16F726) || defined(_16LF726) || defined(_16F727) || defined(_16LF727)
00226     #include "Alternative Configurations/mTouch_hardwareProfile_16F72x.h"
00227 #elif   defined(_12F615) || defined(_12HV615) || defined(_12F617)
00228     #include "Alternative Configurations/mTouch_hardwareProfile_12F61x.h"
00229     #define _12F61x
00230 #elif   defined(_16F616) || defined(_16HV616)
00231     #include "Alternative Configurations/mTouch_hardwareProfile_16F61x.h"
00232     #define _16F61x
00233 #elif   defined(_16F677) || defined(_16F685) || defined(_16F687) || defined(_16F688) || defined(_16F689) || defined(_16F690)
00234     #include "Alternative Configurations/mTouch_hardwareProfile_16F68x.h"
00235     #define _16F68x
00236 #elif   defined(_16F684)
00237     #include "Alternative Configurations/mTouch_hardwareProfile_16F684.h"
00238     #define _16F68x
00239 #elif   defined(_12F683)
00240     #include "Alternative Configurations/mTouch_hardwareProfile_12F683.h"
00241 #elif   defined(_18F24J50)  || defined(_18LF24J50)  || defined(_18F25J50)  || defined(_18LF25J50)  || defined(_18F26J50)  || defined(_18LF26J50)  || defined(_18F44J50)  || defined(_18LF44J50)  || defined(_18F45J50)  || defined(_18LF45J50)  || defined(_18F46J50)  || defined(_18LF46J50)  || defined(_18F65J50)  || defined(_18F66J50)  || defined(_18F67J50)  || defined(_18F85J50)  || defined(_18F86J50)  || defined(_18F87J50) \
00242      || defined(__18F24J50) || defined(__18LF24J50) || defined(__18F25J50) || defined(__18LF25J50) || defined(__18F26J50) || defined(__18LF26J50) || defined(__18F44J50) || defined(__18LF44J50) || defined(__18F45J50) || defined(__18LF45J50) || defined(__18F46J50) || defined(__18LF46J50) || defined(__18F65J50) || defined(__18F66J50) || defined(__18F67J50) || defined(__18F85J50) || defined(__18F86J50) || defined(__18F87J50)
00243     #include "Alternative Configurations/mTouch_hardwareProfile_18FxxJ50.h"
00244     #define _18FxxJ50
00245 #else
00246     #error The currently chosen processor is not yet supported by the mTouch Framework.
00247 #endif 
00248 
00249 
00250 #if !defined(PIC_ADC_ADFM_RIGHT)
00251 #define PIC_ADC_ADFM_RIGHT          1
00252 #endif
00253 #if !defined(PIC_ADC_ADFM_LEFT)
00254 #define PIC_ADC_ADFM_LEFT           0
00255 #endif
00256 
00257 
00258 //****************************************************************************************************
00259 // __     __    _ _     _       _          ____             __ _                       _   _             
00260 // \ \   / /_ _| (_) __| | __ _| |_ ___   / ___|___  _ __  / _(_) __ _ _   _ _ __ __ _| |_(_) ___  _ __  
00261 //  \ \ / / _` | | |/ _` |/ _` | __/ _ \ | |   / _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \ 
00262 //   \ V / (_| | | | (_| | (_| | ||  __/ | |__| (_) | | | |  _| | (_| | |_| | | | (_| | |_| | (_) | | | |
00263 //    \_/ \__,_|_|_|\__,_|\__,_|\__\___|  \____\___/|_| |_|_| |_|\__, |\__,_|_|  \__,_|\__|_|\___/|_| |_|
00264 //                                                               |___/    
00265 //****************************************************************************************************
00266 #if defined(MTOUCH_BOARD_REVISION) && defined(MTOUCH_SOFTWARE_REVISION)
00267     #define MTOUCH_FIRMWARE_VERSION    ((MTOUCH_BOARD_REVISION << 8) | MTOUCH_SOFTWARE_REVISION)
00268 #endif
00269 
00270 #if defined(MTOUCH_NUMBER_SENSORS) && (MTOUCH_NUMBER_SENSORS > 0)
00271     #if !defined(MTOUCH_INTEGRATION_TYPE)
00272         #define MTOUCH_INTEGRATION_TYPE     MTOUCH_CONTROLS_ISR
00273         #warning MTOUCH_INTEGRATION_TYPE not defined. The framework will attempt to control 100% of the ISR, by default.
00274     #else
00275         #if (MTOUCH_INTEGRATION_TYPE != MTOUCH_CONTROLS_ISR) && (MTOUCH_INTEGRATION_TYPE != MTOUCH_CALLED_FROM_ISR) && (MTOUCH_INTEGRATION_TYPE != MTOUCH_CALLED_FROM_MAINLOOP)
00276         #undef MTOUCH_INTEGRATION_TYPE
00277         #define MTOUCH_INTEGRATION_TYPE     MTOUCH_CONTROLS_ISR
00278         #warning MTOUCH_INTEGRATION_TYPE defined to an invalid value. Defaulting to MTOUCH_CONTROLS_ISR. The framework will attempt to control 100% of the ISR.
00279         #endif
00280     #endif
00281 #else
00282     #error You must have at least one mTouch sensor enabled. Please use mTouch_config.h to reconfigure the mTouch framework's sensors.
00283 #endif
00284 
00285 
00286 #if !defined(MTOUCH_RELEASE_THRESH_FACTOR)
00287     #warning MTOUCH_RELEASE_THRESH_FACTOR must be defined in the configuration file. Setting to '0.5'.
00288     #define MTOUCH_RELEASE_THRESH_FACTOR 0.5
00289 #endif
00290 #if defined(MTOUCH_BASELINE_WEIGHT)
00291     #if ((MTOUCH_BASELINE_WEIGHT != 1) && (MTOUCH_BASELINE_WEIGHT != 2) && (MTOUCH_BASELINE_WEIGHT != 3) && (MTOUCH_BASELINE_WEIGHT != 4))
00292         #warning Invalid value for MTOUCH_BASELINE_WEIGHT. Setting to default value of 3.
00293         #undef  MTOUCH_BASELINE_WEIGHT
00294         #define MTOUCH_BASELINE_WEIGHT 3
00295     #endif
00296 #endif
00297 
00298 #if !defined(MTOUCH_POWER_UP_SAMPLES)
00299     #warning MTOUCH_POWER_UP_SAMPLES must be defined in the configuration file. Setting to '50'.
00300     #define MTOUCH_POWER_UP_SAMPLES 50
00301 #else
00302     #if MTOUCH_POWER_UP_SAMPLES > 65535
00303         #warning MTOUCH_POWER_UP_SAMPLES exceeds the maximum limit of 65535. Setting to '65535'.
00304         #undef MTOUCH_POWER_UP_SAMPLES
00305         #define MTOUCH_POWER_UP_SAMPLES 65535
00306     #endif
00307     #if MTOUCH_POWER_UP_SAMPLES < 1
00308         #warning MTOUCH_POWER_UP_SAMPLES must be at least '1'. Setting to '1'.
00309         #undef MTOUCH_POWER_UP_SAMPLES
00310         #define MTOUCH_POWER_UP_SAMPLES 1
00311     #endif
00312 #endif
00313 #if defined (MTOUCH_BUTTON_TIMEOUT)
00314     #if MTOUCH_BUTTON_TIMEOUT > 65535
00315         #warning MTOUCH_BUTTON_TIMEOUT exceeds the maximum limit of 65535. Setting to '65535'.
00316         #undef MTOUCH_BUTTON_TIMEOUT
00317         #define MTOUCH_BUTTON_TIMEOUT 65535
00318     #endif
00319 #endif
00320 #if defined(MTOUCH_BUTTON_TIMEOUT)
00321     #if MTOUCH_BUTTON_TIMEOUT > MTOUCH_POWER_UP_SAMPLES
00322     #define CVD_TIMER_MAX  MTOUCH_BUTTON_TIMEOUT
00323     #else
00324     #define CVD_TIMER_MAX  MTOUCH_POWER_UP_SAMPLES
00325     #endif
00326 #else
00327 #define CVD_TIMER_MAX  MTOUCH_POWER_UP_SAMPLES
00328 #endif
00329 #if CVD_TIMER_MAX > 0
00330     #if CVD_TIMER_MAX > 1
00331         #if CVD_TIMER_MAX > 3
00332             #if CVD_TIMER_MAX > 7
00333                 #if CVD_TIMER_MAX > 15
00334                     #if CVD_TIMER_MAX > 31
00335                         #if CVD_TIMER_MAX > 63
00336                             #if CVD_TIMER_MAX > 127
00337                                 #if CVD_TIMER_MAX > 255
00338                                     #if CVD_TIMER_MAX > 511
00339                                         #if CVD_TIMER_MAX > 1023
00340                                             #if CVD_TIMER_MAX > 2047
00341                                                 #if CVD_TIMER_MAX > 4096
00342                                                     #if CVD_TIMER_MAX > 8192
00343                                                         #if CVD_TIMER_MAX > 16384
00344                                                             #if CVD_TIMER_MAX > 32768
00345                                                                 #define CVD_STATE_TIMER_BITS 16
00346                                                             #else
00347                                                             #define CVD_STATE_TIMER_BITS 15
00348                                                             #endif
00349                                                         #else
00350                                                         #define CVD_STATE_TIMER_BITS 14
00351                                                         #endif
00352                                                     #else
00353                                                     #define CVD_STATE_TIMER_BITS 13
00354                                                     #endif
00355                                                 #else
00356                                                 #define CVD_STATE_TIMER_BITS 12
00357                                                 #endif
00358                                             #else
00359                                             #define CVD_STATE_TIMER_BITS 11
00360                                             #endif
00361                                         #else
00362                                         #define CVD_STATE_TIMER_BITS 10
00363                                         #endif
00364                                     #else
00365                                     #define CVD_STATE_TIMER_BITS 9
00366                                     #endif
00367                                 #else
00368                                 #define CVD_STATE_TIMER_BITS 8
00369                                 #endif
00370                             #else
00371                             #define CVD_STATE_TIMER_BITS 7
00372                             #endif
00373                         #else
00374                         #define CVD_STATE_TIMER_BITS 6
00375                         #endif
00376                     #else
00377                     #define CVD_STATE_TIMER_BITS 5
00378                     #endif
00379                 #else
00380                 #define CVD_STATE_TIMER_BITS 4
00381                 #endif
00382             #else
00383             #define CVD_STATE_TIMER_BITS 3
00384             #endif
00385         #else
00386         #define CVD_STATE_TIMER_BITS 2
00387         #endif
00388     #else
00389     #define CVD_STATE_TIMER_BITS 1
00390     #endif
00391 #else
00392 #define CVD_STATE_TIMER_BITS 0
00393 #endif
00394 #if (CVD_STATE_TIMER_BITS > 8)
00395     #define MTOUCH_STATE_TIMER()               uint16_t timer
00396 #else
00397     #define MTOUCH_STATE_TIMER()               __paste(unsigned timer  :,CVD_STATE_TIMER_BITS)
00398 #endif
00399 
00400 #if !defined(MTOUCH_DEBOUNCE_RELEASE)
00401     #define MTOUCH_DEBOUNCE_RELEASE 0
00402 #else
00403     #if MTOUCH_DEBOUNCE_RELEASE > 65535
00404         #warning MTOUCH_DEBOUNCE_RELEASE exceeds the maximum limit of 65535. Setting to '65535'.
00405         #undef MTOUCH_DEBOUNCE_RELEASE
00406         #define MTOUCH_DEBOUNCE_RELEASE 65535
00407     #endif
00408     #if MTOUCH_DEBOUNCE_RELEASE < 0
00409         #warning MTOUCH_DEBOUNCE_RELEASE must be at least '0'. Setting to '0'.
00410         #undef MTOUCH_DEBOUNCE_RELEASE
00411         #define MTOUCH_DEBOUNCE_RELEASE 0
00412     #endif
00413 #endif
00414 #if !defined(MTOUCH_DEBOUNCE_PRESS)
00415     #define MTOUCH_DEBOUNCE_PRESS 0
00416 #else
00417     #if MTOUCH_DEBOUNCE_PRESS > 65535
00418         #warning MTOUCH_DEBOUNCE_PRESS exceeds the maximum limit of 65535. Setting to '65535'.
00419         #undef MTOUCH_DEBOUNCE_PRESS
00420         #define MTOUCH_DEBOUNCE_PRESS 65535
00421     #endif
00422     #if MTOUCH_DEBOUNCE_PRESS < 0
00423         #warning MTOUCH_DEBOUNCE_PRESS must be at least '0'. Setting to '0'.
00424         #undef MTOUCH_DEBOUNCE_PRESS
00425         #define MTOUCH_DEBOUNCE_PRESS 0
00426     #endif
00427 #endif
00428 #if MTOUCH_DEBOUNCE_PRESS > MTOUCH_DEBOUNCE_RELEASE
00429     #define CVD_DEBOUNCE_MAX    MTOUCH_DEBOUNCE_PRESS
00430 #else
00431     #define CVD_DEBOUNCE_MAX    MTOUCH_DEBOUNCE_RELEASE
00432 #endif
00433 #if CVD_DEBOUNCE_MAX > 0
00434     #if CVD_DEBOUNCE_MAX > 1
00435         #if CVD_DEBOUNCE_MAX > 3
00436             #if CVD_DEBOUNCE_MAX > 7
00437                 #if CVD_DEBOUNCE_MAX > 15
00438                     #if CVD_DEBOUNCE_MAX > 31
00439                         #if CVD_DEBOUNCE_MAX > 63
00440                             #if CVD_DEBOUNCE_MAX > 127
00441                                 #if CVD_DEBOUNCE_MAX > 255
00442                                     #if CVD_DEBOUNCE_MAX > 511
00443                                         #if CVD_DEBOUNCE_MAX > 1023
00444                                             #if CVD_DEBOUNCE_MAX > 2047
00445                                                 #if CVD_DEBOUNCE_MAX > 4096
00446                                                     #if CVD_DEBOUNCE_MAX > 8192
00447                                                         #if CVD_DEBOUNCE_MAX > 16384
00448                                                             #if CVD_DEBOUNCE_MAX > 32768
00449                                                                 #define CVD_STATE_DEBOUNCE_BITS 16
00450                                                             #else
00451                                                             #define CVD_STATE_DEBOUNCE_BITS 15
00452                                                             #endif
00453                                                         #else
00454                                                         #define CVD_STATE_DEBOUNCE_BITS 14
00455                                                         #endif
00456                                                     #else
00457                                                     #define CVD_STATE_DEBOUNCE_BITS 13
00458                                                     #endif
00459                                                 #else
00460                                                 #define CVD_STATE_DEBOUNCE_BITS 12
00461                                                 #endif
00462                                             #else
00463                                             #define CVD_STATE_DEBOUNCE_BITS 11
00464                                             #endif
00465                                         #else
00466                                         #define CVD_STATE_DEBOUNCE_BITS 10
00467                                         #endif
00468                                     #else
00469                                     #define CVD_STATE_DEBOUNCE_BITS 9
00470                                     #endif
00471                                 #else
00472                                 #define CVD_STATE_DEBOUNCE_BITS 8
00473                                 #endif
00474                             #else
00475                             #define CVD_STATE_DEBOUNCE_BITS 7
00476                             #endif
00477                         #else
00478                         #define CVD_STATE_DEBOUNCE_BITS 6
00479                         #endif
00480                     #else
00481                     #define CVD_STATE_DEBOUNCE_BITS 5
00482                     #endif
00483                 #else
00484                 #define CVD_STATE_DEBOUNCE_BITS 4
00485                 #endif
00486             #else
00487             #define CVD_STATE_DEBOUNCE_BITS 3
00488             #endif
00489         #else
00490         #define CVD_STATE_DEBOUNCE_BITS 2
00491         #endif
00492     #else
00493     #define CVD_STATE_DEBOUNCE_BITS 1
00494     #endif
00495 #else
00496 #define CVD_STATE_DEBOUNCE_BITS 0
00497 #endif
00498 #if (CVD_STATE_DEBOUNCE_BITS > 8)
00499     #define MTOUCH_STATE_DEBOUNCE()               uint16_t debounce
00500 #elif CVD_STATE_DEBOUNCE_BITS != 0
00501     #define MTOUCH_STATE_DEBOUNCE()               __paste(unsigned debounce  :,CVD_STATE_DEBOUNCE_BITS)
00502 #else
00503     #define MTOUCH_DEBOUNCE_IS_ZERO
00504 #endif
00505 
00506 #if !defined(MTOUCH_SAMPLES_PER_SCAN)
00507     #warning MTOUCH_SAMPLES_PER_SCAN must be defined in the configuration file. Defaulting to 20ms timing.
00508     #define MTOUCH_SAMPLES_PER_SCAN CVD_20ms_Timing
00509 #endif
00510 #if !defined(MTOUCH_SAMPLES_PER_SCAN)
00511     #warning MTOUCH_SAMPLES_PER_SCAN must be defined in the configuration file. Defaulting to 30 samples.
00512     #define MTOUCH_SAMPLES_PER_SCAN 30
00513 #endif
00514 #if MTOUCH_SAMPLES_PER_SCAN > 0
00515     #if MTOUCH_SAMPLES_PER_SCAN > 1
00516         #if MTOUCH_SAMPLES_PER_SCAN > 3
00517             #if MTOUCH_SAMPLES_PER_SCAN > 7
00518                 #if MTOUCH_SAMPLES_PER_SCAN > 15
00519                     #if MTOUCH_SAMPLES_PER_SCAN > 31
00520                         #if MTOUCH_SAMPLES_PER_SCAN > 63
00521                             #if MTOUCH_SAMPLES_PER_SCAN > 127
00522                                 #if MTOUCH_SAMPLES_PER_SCAN > 255
00523                                     #if MTOUCH_SAMPLES_PER_SCAN > 511
00524                                         #if MTOUCH_SAMPLES_PER_SCAN > 1023
00525                                             #if MTOUCH_SAMPLES_PER_SCAN > 2047
00526                                                 #if MTOUCH_SAMPLES_PER_SCAN > 4096
00527                                                     #if MTOUCH_SAMPLES_PER_SCAN > 8192
00528                                                         #if MTOUCH_SAMPLES_PER_SCAN > 16384
00529                                                             #if MTOUCH_SAMPLES_PER_SCAN > 32768
00530                                                                 #define CVD_STATE_SPS_BITS 16
00531                                                             #else
00532                                                             #define CVD_STATE_SPS_BITS 15
00533                                                             #endif
00534                                                         #else
00535                                                         #define CVD_STATE_SPS_BITS 14
00536                                                         #endif
00537                                                     #else
00538                                                     #define CVD_STATE_SPS_BITS 13
00539                                                     #endif
00540                                                 #else
00541                                                 #define CVD_STATE_SPS_BITS 12
00542                                                 #endif
00543                                             #else
00544                                             #define CVD_STATE_SPS_BITS 11
00545                                             #endif
00546                                         #else
00547                                         #define CVD_STATE_SPS_BITS 10
00548                                         #endif
00549                                     #else
00550                                     #define CVD_STATE_SPS_BITS 9
00551                                     #endif
00552                                 #else
00553                                 #define CVD_STATE_SPS_BITS 8
00554                                 #endif
00555                             #else
00556                             #define CVD_STATE_SPS_BITS 7
00557                             #endif
00558                         #else
00559                         #define CVD_STATE_SPS_BITS 6
00560                         #endif
00561                     #else
00562                     #define CVD_STATE_SPS_BITS 5
00563                     #endif
00564                 #else
00565                 #define CVD_STATE_SPS_BITS 4
00566                 #endif
00567             #else
00568             #define CVD_STATE_SPS_BITS 3
00569             #endif
00570         #else
00571         #define CVD_STATE_SPS_BITS 2
00572         #endif
00573     #else
00574     #define CVD_STATE_SPS_BITS 1
00575     #endif
00576 #else
00577 #define CVD_STATE_SPS_BITS 0
00578 #endif
00579 #if (CVD_STATE_SPS_BITS > 8)
00580     #define MTOUCH_STATE_SAMPLE_COUNTER()               uint16_t sampleCounter
00581 #else
00582     #define MTOUCH_STATE_SAMPLE_COUNTER()               __paste(unsigned sampleCounter  :,CVD_STATE_SPS_BITS)
00583 #endif
00584 
00585 #if (defined(MTOUCH_JITTER_BITS) && (MTOUCH_JITTER_BITS != 0)) || defined(MTOUCH_EEPROM_ENABLED)
00586     #define MTOUCH_JITTER_ENABLE
00587 #else
00588     #if defined(MTOUCH_JITTER_ENABLE)
00589     #undef MTOUCH_JITTER_ENABLE
00590     #endif
00591 #endif
00592 
00593 #if defined(MTOUCH_JITTER_ENABLE)
00594     #define MTOUCH_JITTER_MASK0         0x00
00595     #define MTOUCH_JITTER_MASK1         0x01
00596     #define MTOUCH_JITTER_MASK2         0x03
00597     #define MTOUCH_JITTER_MASK3         0x07
00598     #define MTOUCH_JITTER_MASK4         0x0F
00599     #define MTOUCH_JITTER_MASK5         0x1F
00600     #define MTOUCH_JITTER_MASK6         0x3F
00601     #define MTOUCH_JITTER_MASK7         0x7F
00602     #define MTOUCH_JITTER_MASK8         0xFF
00603     
00604     #define MTOUCH_JITTER_MASK          __paste4(MTOUCH_JITTER_MASK,MTOUCH_JITTER_BITS)
00605     #define MTOUCH_JITTER_MASK_ARRAY    { MTOUCH_JITTER_MASK0, MTOUCH_JITTER_MASK1, MTOUCH_JITTER_MASK2, MTOUCH_JITTER_MASK3, MTOUCH_JITTER_MASK4, MTOUCH_JITTER_MASK5, MTOUCH_JITTER_MASK6, MTOUCH_JITTER_MASK7, MTOUCH_JITTER_MASK8 } 
00606 #endif
00607 
00608 #if !defined(_XTAL_FREQ)
00609     #error _XTAL_FREQ is not defined in the configuration file. Framework must be told how fast Fosc is running.
00610 #endif
00611 #if !defined(MTOUCH_SENSOR0)
00612     #error There is no MTOUCH_SENSOR0 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00613 #endif
00614 #if !defined(MTOUCH_NEGATIVE_CAPACITANCE)
00615     #define MTOUCH_NEGATIVE_CAPACITANCE 0
00616 #endif
00617 #if (MTOUCH_NEGATIVE_CAPACITANCE != 0) && (MTOUCH_NEGATIVE_CAPACITANCE != 1) && (MTOUCH_NEGATIVE_CAPACITANCE != 2)
00618     #warning MTOUCH_NEGATIVE_CAPACITANCE is set to an invalid value. Defaulting to 0.
00619     #undef MTOUCH_NEGATIVE_CAPACITANCE
00620     #define MTOUCH_NEGATIVE_CAPACITANCE 0
00621 #endif
00622 #if MTOUCH_BASELINE_RATE > 0
00623     #if MTOUCH_BASELINE_RATE > 1
00624         #if MTOUCH_BASELINE_RATE > 3
00625             #if MTOUCH_BASELINE_RATE > 7
00626                 #if MTOUCH_BASELINE_RATE > 15
00627                     #if MTOUCH_BASELINE_RATE > 31
00628                         #if MTOUCH_BASELINE_RATE > 63
00629                             #if MTOUCH_BASELINE_RATE > 127
00630                                 #if MTOUCH_BASELINE_RATE > 255
00631                                     #if MTOUCH_BASELINE_RATE > 511
00632                                         #if MTOUCH_BASELINE_RATE > 1023
00633                                             #if MTOUCH_BASELINE_RATE > 2047
00634                                                 #if MTOUCH_BASELINE_RATE > 4096
00635                                                     #if MTOUCH_BASELINE_RATE > 8192
00636                                                         #if MTOUCH_BASELINE_RATE > 16384
00637                                                             #if MTOUCH_BASELINE_RATE > 32768
00638                                                                 #define CVD_STATE_BLCOUNT_BITS 16
00639                                                             #else
00640                                                             #define CVD_STATE_BLCOUNT_BITS 15
00641                                                             #endif
00642                                                         #else
00643                                                         #define CVD_STATE_BLCOUNT_BITS 14
00644                                                         #endif
00645                                                     #else
00646                                                     #define CVD_STATE_BLCOUNT_BITS 13
00647                                                     #endif
00648                                                 #else
00649                                                 #define CVD_STATE_BLCOUNT_BITS 12
00650                                                 #endif
00651                                             #else
00652                                             #define CVD_STATE_BLCOUNT_BITS 11
00653                                             #endif
00654                                         #else
00655                                         #define CVD_STATE_BLCOUNT_BITS 10
00656                                         #endif
00657                                     #else
00658                                     #define CVD_STATE_BLCOUNT_BITS 9
00659                                     #endif
00660                                 #else
00661                                 #define CVD_STATE_BLCOUNT_BITS 8
00662                                 #endif
00663                             #else
00664                             #define CVD_STATE_BLCOUNT_BITS 7
00665                             #endif
00666                         #else
00667                         #define CVD_STATE_BLCOUNT_BITS 6
00668                         #endif
00669                     #else
00670                     #define CVD_STATE_BLCOUNT_BITS 5
00671                     #endif
00672                 #else
00673                 #define CVD_STATE_BLCOUNT_BITS 4
00674                 #endif
00675             #else
00676             #define CVD_STATE_BLCOUNT_BITS 3
00677             #endif
00678         #else
00679         #define CVD_STATE_BLCOUNT_BITS 2
00680         #endif
00681     #else
00682     #define CVD_STATE_BLCOUNT_BITS 1
00683     #endif
00684 #else
00685 #define CVD_STATE_BLCOUNT_BITS 0
00686 #endif
00687 #if (CVD_STATE_BLCOUNT_BITS > 8)
00688     #define MTOUCH_STATE_BASELINE_COUNT()         uint16_t baselineCount
00689     #define MTOUCH_BLCOUNT_16BITS_REQUIRED
00690 #else
00691     #define MTOUCH_STATE_BASELINE_COUNT()         __paste(unsigned baselineCount  :,CVD_STATE_BLCOUNT_BITS)
00692 #endif
00693 
00694 
00695 #define MTOUCH_EXIT_SENSOR0()   EXIT_LAST_SENSOR(0)
00696 #if MTOUCH_NUMBER_SENSORS > 1
00697     #if !defined(MTOUCH_SENSOR1)
00698         #error There is no MTOUCH_SENSOR1 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00699     #endif
00700     #undef  MTOUCH_EXIT_SENSOR0()
00701     #define MTOUCH_EXIT_SENSOR0()   EXIT_SENSOR(mTouch_currentSensor)
00702     #define MTOUCH_EXIT_SENSOR1()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00703 #endif
00704 #if MTOUCH_NUMBER_SENSORS > 2
00705     #if !defined(MTOUCH_SENSOR2)
00706         #error There is no MTOUCH_SENSOR2 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00707     #endif
00708     #undef  MTOUCH_EXIT_SENSOR1()
00709     #define MTOUCH_EXIT_SENSOR1()   EXIT_SENSOR(mTouch_currentSensor)
00710     #define MTOUCH_EXIT_SENSOR2()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00711 #endif
00712 #if MTOUCH_NUMBER_SENSORS > 3
00713     #if !defined(MTOUCH_SENSOR3)
00714         #error There is no MTOUCH_SENSOR3 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00715     #endif
00716     #undef  MTOUCH_EXIT_SENSOR2()
00717     #define MTOUCH_EXIT_SENSOR2()   EXIT_SENSOR(mTouch_currentSensor)
00718     #define MTOUCH_EXIT_SENSOR3()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00719 #endif
00720 #if MTOUCH_NUMBER_SENSORS > 4
00721     #if !defined(MTOUCH_SENSOR4)
00722         #error There is no MTOUCH_SENSOR4 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00723     #endif
00724     #undef  MTOUCH_EXIT_SENSOR3()
00725     #define MTOUCH_EXIT_SENSOR3()   EXIT_SENSOR(mTouch_currentSensor)
00726     #define MTOUCH_EXIT_SENSOR4()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00727 #endif
00728 #if MTOUCH_NUMBER_SENSORS > 5
00729     #if !defined(MTOUCH_SENSOR5)
00730         #error There is no MTOUCH_SENSOR5 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00731     #endif
00732     #undef  MTOUCH_EXIT_SENSOR4()
00733     #define MTOUCH_EXIT_SENSOR4()   EXIT_SENSOR(mTouch_currentSensor)
00734     #define MTOUCH_EXIT_SENSOR5()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00735 #endif
00736 #if MTOUCH_NUMBER_SENSORS > 6
00737     #if !defined(MTOUCH_SENSOR6)
00738         #error There is no MTOUCH_SENSOR6 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00739     #endif
00740     #undef  MTOUCH_EXIT_SENSOR5()
00741     #define MTOUCH_EXIT_SENSOR5()   EXIT_SENSOR(mTouch_currentSensor)
00742     #define MTOUCH_EXIT_SENSOR6()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00743 #endif
00744 #if MTOUCH_NUMBER_SENSORS > 7
00745     #if !defined(MTOUCH_SENSOR7)
00746         #error There is no MTOUCH_SENSOR7 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00747     #endif
00748     #undef  MTOUCH_EXIT_SENSOR6()
00749     #define MTOUCH_EXIT_SENSOR6()   EXIT_SENSOR(mTouch_currentSensor)
00750     #define MTOUCH_EXIT_SENSOR7()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00751 #endif
00752 #if MTOUCH_NUMBER_SENSORS > 8
00753     #if !defined(MTOUCH_SENSOR8)
00754         #error There is no MTOUCH_SENSOR8 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00755     #endif
00756     #undef  MTOUCH_EXIT_SENSOR7()
00757     #define MTOUCH_EXIT_SENSOR7()   EXIT_SENSOR(mTouch_currentSensor)
00758     #define MTOUCH_EXIT_SENSOR8()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00759 #endif
00760 #if MTOUCH_NUMBER_SENSORS > 9
00761     #if !defined(MTOUCH_SENSOR9)
00762         #error There is no MTOUCH_SENSOR9 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00763     #endif
00764     #undef  MTOUCH_EXIT_SENSOR8()
00765     #define MTOUCH_EXIT_SENSOR8()   EXIT_SENSOR(mTouch_currentSensor)
00766     #define MTOUCH_EXIT_SENSOR9()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00767 #endif
00768 #if MTOUCH_NUMBER_SENSORS > 10
00769     #if !defined(MTOUCH_SENSOR10)
00770         #error There is no MTOUCH_SENSOR10 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00771     #endif
00772     #undef  MTOUCH_EXIT_SENSOR9()
00773     #define MTOUCH_EXIT_SENSOR9()   EXIT_SENSOR(mTouch_currentSensor)
00774     #define MTOUCH_EXIT_SENSOR10()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00775 #endif
00776 #if MTOUCH_NUMBER_SENSORS > 11
00777     #if !defined(MTOUCH_SENSOR11)
00778         #error There is no MTOUCH_SENSOR11 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00779     #endif
00780     #undef  MTOUCH_EXIT_SENSOR10()
00781     #define MTOUCH_EXIT_SENSOR10()   EXIT_SENSOR(mTouch_currentSensor)
00782     #define MTOUCH_EXIT_SENSOR11()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00783 #endif
00784 #if MTOUCH_NUMBER_SENSORS > 12
00785     #if !defined(MTOUCH_SENSOR12)
00786         #error There is no MTOUCH_SENSOR12 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00787     #endif
00788     #undef  MTOUCH_EXIT_SENSOR11()
00789     #define MTOUCH_EXIT_SENSOR11()   EXIT_SENSOR(mTouch_currentSensor)
00790     #define MTOUCH_EXIT_SENSOR12()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00791 #endif
00792 #if MTOUCH_NUMBER_SENSORS > 13
00793     #if !defined(MTOUCH_SENSOR13)
00794         #error There is no MTOUCH_SENSOR13 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00795     #endif
00796     #undef  MTOUCH_EXIT_SENSOR12()
00797     #define MTOUCH_EXIT_SENSOR12()   EXIT_SENSOR(mTouch_currentSensor)
00798     #define MTOUCH_EXIT_SENSOR13()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00799 #endif
00800 #if MTOUCH_NUMBER_SENSORS > 14
00801     #if !defined(MTOUCH_SENSOR14)
00802         #error There is no MTOUCH_SENSOR14 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00803     #endif
00804     #undef  MTOUCH_EXIT_SENSOR13()
00805     #define MTOUCH_EXIT_SENSOR13()   EXIT_SENSOR(mTouch_currentSensor)
00806     #define MTOUCH_EXIT_SENSOR14()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00807 #endif
00808 #if MTOUCH_NUMBER_SENSORS > 15
00809     #if !defined(MTOUCH_SENSOR15)
00810         #error There is no MTOUCH_SENSOR15 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00811     #endif
00812     #undef  MTOUCH_EXIT_SENSOR14()
00813     #define MTOUCH_EXIT_SENSOR14()   EXIT_SENSOR(mTouch_currentSensor)
00814     #define MTOUCH_EXIT_SENSOR15()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00815 #endif
00816 #if MTOUCH_NUMBER_SENSORS > 16
00817     #if !defined(MTOUCH_SENSOR16)
00818         #error There is no MTOUCH_SENSOR16 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00819     #endif
00820     #undef  MTOUCH_EXIT_SENSOR15()
00821     #define MTOUCH_EXIT_SENSOR15()   EXIT_SENSOR(mTouch_currentSensor)
00822     #define MTOUCH_EXIT_SENSOR16()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00823 #endif
00824 #if MTOUCH_NUMBER_SENSORS > 17
00825     #if !defined(MTOUCH_SENSOR17)
00826         #error There is no MTOUCH_SENSOR17 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00827     #endif
00828     #undef  MTOUCH_EXIT_SENSOR16()
00829     #define MTOUCH_EXIT_SENSOR16()   EXIT_SENSOR(mTouch_currentSensor)
00830     #define MTOUCH_EXIT_SENSOR17()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00831 #endif
00832 #if MTOUCH_NUMBER_SENSORS > 18
00833     #if !defined(MTOUCH_SENSOR18)
00834         #error There is no MTOUCH_SENSOR18 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00835     #endif
00836     #undef  MTOUCH_EXIT_SENSOR17()
00837     #define MTOUCH_EXIT_SENSOR17()   EXIT_SENSOR(mTouch_currentSensor)
00838     #define MTOUCH_EXIT_SENSOR18()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00839 #endif
00840 #if MTOUCH_NUMBER_SENSORS > 19
00841     #if !defined(MTOUCH_SENSOR19)
00842         #error There is no MTOUCH_SENSOR19 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00843     #endif
00844     #undef  MTOUCH_EXIT_SENSOR18()
00845     #define MTOUCH_EXIT_SENSOR18()   EXIT_SENSOR(mTouch_currentSensor)
00846     #define MTOUCH_EXIT_SENSOR19()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00847 #endif
00848 #if MTOUCH_NUMBER_SENSORS > 20
00849     #if !defined(MTOUCH_SENSOR20)
00850         #error There is no MTOUCH_SENSOR20 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00851     #endif
00852     #undef  MTOUCH_EXIT_SENSOR19()
00853     #define MTOUCH_EXIT_SENSOR19()   EXIT_SENSOR(mTouch_currentSensor)
00854     #define MTOUCH_EXIT_SENSOR20()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00855 #endif
00856 #if MTOUCH_NUMBER_SENSORS > 21
00857     #if !defined(MTOUCH_SENSOR21)
00858         #error There is no MTOUCH_SENSOR21 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00859     #endif
00860     #undef  MTOUCH_EXIT_SENSOR20()
00861     #define MTOUCH_EXIT_SENSOR20()   EXIT_SENSOR(mTouch_currentSensor)
00862     #define MTOUCH_EXIT_SENSOR21()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00863 #endif
00864 #if MTOUCH_NUMBER_SENSORS > 22
00865     #if !defined(MTOUCH_SENSOR22)
00866         #error There is no MTOUCH_SENSOR22 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00867     #endif
00868     #undef  MTOUCH_EXIT_SENSOR21()
00869     #define MTOUCH_EXIT_SENSOR21()   EXIT_SENSOR(mTouch_currentSensor)
00870     #define MTOUCH_EXIT_SENSOR22()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00871 #endif
00872 #if MTOUCH_NUMBER_SENSORS > 23
00873     #if !defined(MTOUCH_SENSOR23)
00874         #error There is no MTOUCH_SENSOR23 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00875     #endif
00876     #undef  MTOUCH_EXIT_SENSOR22()
00877     #define MTOUCH_EXIT_SENSOR22()   EXIT_SENSOR(mTouch_currentSensor)
00878     #define MTOUCH_EXIT_SENSOR23()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00879 #endif
00880 #if MTOUCH_NUMBER_SENSORS > 24
00881     #if !defined(MTOUCH_SENSOR24)
00882         #error There is no MTOUCH_SENSOR24 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00883     #endif
00884     #undef  MTOUCH_EXIT_SENSOR23()
00885     #define MTOUCH_EXIT_SENSOR23()   EXIT_SENSOR(mTouch_currentSensor)
00886     #define MTOUCH_EXIT_SENSOR24()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00887 #endif
00888 #if MTOUCH_NUMBER_SENSORS > 25
00889     #if !defined(MTOUCH_SENSOR25)
00890         #error There is no MTOUCH_SENSOR25 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00891     #endif
00892     #undef  MTOUCH_EXIT_SENSOR24()
00893     #define MTOUCH_EXIT_SENSOR24()   EXIT_SENSOR(mTouch_currentSensor)
00894     #define MTOUCH_EXIT_SENSOR25()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00895 #endif
00896 #if MTOUCH_NUMBER_SENSORS > 26
00897     #if !defined(MTOUCH_SENSOR26)
00898         #error There is no MTOUCH_SENSOR26 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00899     #endif
00900     #undef  MTOUCH_EXIT_SENSOR25()
00901     #define MTOUCH_EXIT_SENSOR25()   EXIT_SENSOR(mTouch_currentSensor)
00902     #define MTOUCH_EXIT_SENSOR26()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00903 #endif
00904 #if MTOUCH_NUMBER_SENSORS > 27
00905     #if !defined(MTOUCH_SENSOR27)
00906         #error There is no MTOUCH_SENSOR27 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00907     #endif
00908     #undef  MTOUCH_EXIT_SENSOR26()
00909     #define MTOUCH_EXIT_SENSOR26()   EXIT_SENSOR(mTouch_currentSensor)
00910     #define MTOUCH_EXIT_SENSOR27()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00911 #endif
00912 #if MTOUCH_NUMBER_SENSORS > 28
00913     #if !defined(MTOUCH_SENSOR28)
00914         #error There is no MTOUCH_SENSOR28 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00915     #endif
00916     #undef  MTOUCH_EXIT_SENSOR27()
00917     #define MTOUCH_EXIT_SENSOR27()   EXIT_SENSOR(mTouch_currentSensor)
00918     #define MTOUCH_EXIT_SENSOR28()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00919 #endif
00920 #if MTOUCH_NUMBER_SENSORS > 29
00921     #if !defined(MTOUCH_SENSOR29)
00922         #error There is no MTOUCH_SENSOR29 definition in the configuration file. Framework unable to associate the sensor with an analog pin.
00923     #endif
00924     #undef  MTOUCH_EXIT_SENSOR28()
00925     #define MTOUCH_EXIT_SENSOR28()   EXIT_SENSOR(mTouch_currentSensor)
00926     #define MTOUCH_EXIT_SENSOR29()   EXIT_LAST_SENSOR(mTouch_currentSensor)
00927 #endif
00928 #if MTOUCH_NUMBER_SENSORS > 30
00929     #error This version of the mTouch CVD Framework does not support more than 30 sensors at this time.
00930 #endif
00931 
00932 #if !defined(THRESHOLD_PRESS_SENSOR0)
00933     #if MTOUCH_NUMBER_SENSORS > 0
00934         #error Required definition, THRESHOLD_PRESS_SENSOR0, is not defined in the configuration file.
00935     #else
00936         #define THRESHOLD_PRESS_SENSOR0 0
00937     #endif
00938 #endif
00939 #if !defined(THRESHOLD_PRESS_SENSOR1)
00940     #if MTOUCH_NUMBER_SENSORS > 1
00941         #error Required definition, THRESHOLD_PRESS_SENSOR1, is not defined in the configuration file.
00942     #else
00943         #define THRESHOLD_PRESS_SENSOR1 0
00944     #endif
00945 #endif
00946 #if !defined(THRESHOLD_PRESS_SENSOR2)
00947     #if MTOUCH_NUMBER_SENSORS > 2
00948         #error Required definition, THRESHOLD_PRESS_SENSOR2, is not defined in the configuration file.
00949     #else
00950         #define THRESHOLD_PRESS_SENSOR2 0
00951     #endif
00952 #endif
00953 #if !defined(THRESHOLD_PRESS_SENSOR3)
00954     #if MTOUCH_NUMBER_SENSORS > 3
00955         #error Required definition, THRESHOLD_PRESS_SENSOR3, is not defined in the configuration file.
00956     #else
00957         #define THRESHOLD_PRESS_SENSOR3 0
00958     #endif
00959 #endif
00960 #if !defined(THRESHOLD_PRESS_SENSOR4)
00961     #if MTOUCH_NUMBER_SENSORS > 4
00962         #error Required definition, THRESHOLD_PRESS_SENSOR4, is not defined in the configuration file.
00963     #else
00964         #define THRESHOLD_PRESS_SENSOR4 0
00965     #endif
00966 #endif
00967 #if !defined(THRESHOLD_PRESS_SENSOR5)
00968     #if MTOUCH_NUMBER_SENSORS > 5
00969         #error Required definition, THRESHOLD_PRESS_SENSOR5, is not defined in the configuration file.
00970     #else
00971         #define THRESHOLD_PRESS_SENSOR5 0
00972     #endif
00973 #endif
00974 #if !defined(THRESHOLD_PRESS_SENSOR6)
00975     #if MTOUCH_NUMBER_SENSORS > 6
00976         #error Required definition, THRESHOLD_PRESS_SENSOR6, is not defined in the configuration file.
00977     #else
00978         #define THRESHOLD_PRESS_SENSOR6 0
00979     #endif
00980 #endif
00981 #if !defined(THRESHOLD_PRESS_SENSOR7)
00982     #if MTOUCH_NUMBER_SENSORS > 7
00983         #error Required definition, THRESHOLD_PRESS_SENSOR7, is not defined in the configuration file.
00984     #else
00985         #define THRESHOLD_PRESS_SENSOR7 0
00986     #endif
00987 #endif
00988 #if !defined(THRESHOLD_PRESS_SENSOR8)
00989     #if MTOUCH_NUMBER_SENSORS > 8
00990         #error Required definition, THRESHOLD_PRESS_SENSOR8, is not defined in the configuration file.
00991     #else
00992         #define THRESHOLD_PRESS_SENSOR8 0
00993     #endif
00994 #endif
00995 #if !defined(THRESHOLD_PRESS_SENSOR9)
00996     #if MTOUCH_NUMBER_SENSORS > 9
00997         #error Required definition, THRESHOLD_PRESS_SENSOR9, is not defined in the configuration file.
00998     #else
00999         #define THRESHOLD_PRESS_SENSOR9 0
01000     #endif
01001 #endif
01002 #if !defined(THRESHOLD_PRESS_SENSOR10)
01003     #if MTOUCH_NUMBER_SENSORS > 10
01004         #error Required definition, THRESHOLD_PRESS_SENSOR10, is not defined in the configuration file.
01005     #else
01006         #define THRESHOLD_PRESS_SENSOR10 0
01007     #endif
01008 #endif
01009 #if !defined(THRESHOLD_PRESS_SENSOR11)
01010     #if MTOUCH_NUMBER_SENSORS > 11
01011         #error Required definition, THRESHOLD_PRESS_SENSOR11, is not defined in the configuration file.
01012     #else
01013         #define THRESHOLD_PRESS_SENSOR11 0
01014     #endif
01015 #endif
01016 #if !defined(THRESHOLD_PRESS_SENSOR12)
01017     #if MTOUCH_NUMBER_SENSORS > 12
01018         #error Required definition, THRESHOLD_PRESS_SENSOR12, is not defined in the configuration file.
01019     #else
01020         #define THRESHOLD_PRESS_SENSOR12 0
01021     #endif
01022 #endif
01023 #if !defined(THRESHOLD_PRESS_SENSOR13)
01024     #if MTOUCH_NUMBER_SENSORS > 13
01025         #error Required definition, THRESHOLD_PRESS_SENSOR13, is not defined in the configuration file.
01026     #else
01027         #define THRESHOLD_PRESS_SENSOR13 0
01028     #endif
01029 #endif
01030 #if !defined(THRESHOLD_PRESS_SENSOR14)
01031     #if MTOUCH_NUMBER_SENSORS > 14
01032         #error Required definition, THRESHOLD_PRESS_SENSOR14, is not defined in the configuration file.
01033     #else
01034         #define THRESHOLD_PRESS_SENSOR14 0
01035     #endif
01036 #endif
01037 #if !defined(THRESHOLD_PRESS_SENSOR15)
01038     #if MTOUCH_NUMBER_SENSORS > 15
01039         #error Required definition, THRESHOLD_PRESS_SENSOR15, is not defined in the configuration file.
01040     #else
01041         #define THRESHOLD_PRESS_SENSOR15 0
01042     #endif
01043 #endif
01044 #if !defined(THRESHOLD_PRESS_SENSOR16)
01045     #if MTOUCH_NUMBER_SENSORS > 16
01046         #error Required definition, THRESHOLD_PRESS_SENSOR16, is not defined in the configuration file.
01047     #else
01048         #define THRESHOLD_PRESS_SENSOR16 0
01049     #endif
01050 #endif
01051 #if !defined(THRESHOLD_PRESS_SENSOR17)
01052     #if MTOUCH_NUMBER_SENSORS > 17
01053         #error Required definition, THRESHOLD_PRESS_SENSOR17, is not defined in the configuration file.
01054     #else
01055         #define THRESHOLD_PRESS_SENSOR17 0
01056     #endif
01057 #endif
01058 #if !defined(THRESHOLD_PRESS_SENSOR18)
01059     #if MTOUCH_NUMBER_SENSORS > 18
01060         #error Required definition, THRESHOLD_PRESS_SENSOR18, is not defined in the configuration file.
01061     #else
01062         #define THRESHOLD_PRESS_SENSOR18 0
01063     #endif
01064 #endif
01065 #if !defined(THRESHOLD_PRESS_SENSOR19)
01066     #if MTOUCH_NUMBER_SENSORS > 19
01067         #error Required definition, THRESHOLD_PRESS_SENSOR19, is not defined in the configuration file.
01068     #else
01069         #define THRESHOLD_PRESS_SENSOR19 0
01070     #endif
01071 #endif
01072 #if !defined(THRESHOLD_PRESS_SENSOR20)
01073     #if MTOUCH_NUMBER_SENSORS > 20
01074         #error Required definition, THRESHOLD_PRESS_SENSOR20, is not defined in the configuration file.
01075     #else
01076         #define THRESHOLD_PRESS_SENSOR20 0
01077     #endif
01078 #endif
01079 #if !defined(THRESHOLD_PRESS_SENSOR21)
01080     #if MTOUCH_NUMBER_SENSORS > 21
01081         #error Required definition, THRESHOLD_PRESS_SENSOR21, is not defined in the configuration file.
01082     #else
01083         #define THRESHOLD_PRESS_SENSOR21 0
01084     #endif
01085 #endif
01086 #if !defined(THRESHOLD_PRESS_SENSOR22)
01087     #if MTOUCH_NUMBER_SENSORS > 22
01088         #error Required definition, THRESHOLD_PRESS_SENSOR22, is not defined in the configuration file.
01089     #else
01090         #define THRESHOLD_PRESS_SENSOR22 0
01091     #endif
01092 #endif
01093 #if !defined(THRESHOLD_PRESS_SENSOR23)
01094     #if MTOUCH_NUMBER_SENSORS > 23
01095         #error Required definition, THRESHOLD_PRESS_SENSOR23, is not defined in the configuration file.
01096     #else
01097         #define THRESHOLD_PRESS_SENSOR23 0
01098     #endif
01099 #endif
01100 #if !defined(THRESHOLD_PRESS_SENSOR24)
01101     #if MTOUCH_NUMBER_SENSORS > 24
01102         #error Required definition, THRESHOLD_PRESS_SENSOR24, is not defined in the configuration file.
01103     #else
01104         #define THRESHOLD_PRESS_SENSOR24 0
01105     #endif
01106 #endif
01107 #if !defined(THRESHOLD_PRESS_SENSOR25)
01108     #if MTOUCH_NUMBER_SENSORS > 25
01109         #error Required definition, THRESHOLD_PRESS_SENSOR25, is not defined in the configuration file.
01110     #else
01111         #define THRESHOLD_PRESS_SENSOR25 0
01112     #endif
01113 #endif
01114 #if !defined(THRESHOLD_PRESS_SENSOR26)
01115     #if MTOUCH_NUMBER_SENSORS > 26
01116         #error Required definition, THRESHOLD_PRESS_SENSOR26, is not defined in the configuration file.
01117     #else
01118         #define THRESHOLD_PRESS_SENSOR26 0
01119     #endif
01120 #endif
01121 #if !defined(THRESHOLD_PRESS_SENSOR27)
01122     #if MTOUCH_NUMBER_SENSORS > 27
01123         #error Required definition, THRESHOLD_PRESS_SENSOR27, is not defined in the configuration file.
01124     #else
01125         #define THRESHOLD_PRESS_SENSOR27 0
01126     #endif
01127 #endif
01128 #if !defined(THRESHOLD_PRESS_SENSOR28)
01129     #if MTOUCH_NUMBER_SENSORS > 28
01130         #error Required definition, THRESHOLD_PRESS_SENSOR28, is not defined in the configuration file.
01131     #else
01132         #define THRESHOLD_PRESS_SENSOR28 0
01133     #endif
01134 #endif
01135 #if !defined(THRESHOLD_PRESS_SENSOR29)
01136     #if MTOUCH_NUMBER_SENSORS > 29
01137         #error Required definition, THRESHOLD_PRESS_SENSOR29, is not defined in the configuration file.
01138     #else
01139         #define THRESHOLD_PRESS_SENSOR29 0
01140     #endif
01141 #endif
01142 
01143 #define THRESHOLD_RELEASE_SENSOR0       (uint16_t)((float) THRESHOLD_PRESS_SENSOR0  * MTOUCH_RELEASE_THRESH_FACTOR)                                             
01144 #define THRESHOLD_RELEASE_SENSOR1       (uint16_t)((float) THRESHOLD_PRESS_SENSOR1  * MTOUCH_RELEASE_THRESH_FACTOR) 
01145 #define THRESHOLD_RELEASE_SENSOR2       (uint16_t)((float) THRESHOLD_PRESS_SENSOR2  * MTOUCH_RELEASE_THRESH_FACTOR) 
01146 #define THRESHOLD_RELEASE_SENSOR3       (uint16_t)((float) THRESHOLD_PRESS_SENSOR3  * MTOUCH_RELEASE_THRESH_FACTOR) 
01147 #define THRESHOLD_RELEASE_SENSOR4       (uint16_t)((float) THRESHOLD_PRESS_SENSOR4  * MTOUCH_RELEASE_THRESH_FACTOR) 
01148 #define THRESHOLD_RELEASE_SENSOR5       (uint16_t)((float) THRESHOLD_PRESS_SENSOR5  * MTOUCH_RELEASE_THRESH_FACTOR) 
01149 #define THRESHOLD_RELEASE_SENSOR6       (uint16_t)((float) THRESHOLD_PRESS_SENSOR6  * MTOUCH_RELEASE_THRESH_FACTOR) 
01150 #define THRESHOLD_RELEASE_SENSOR7       (uint16_t)((float) THRESHOLD_PRESS_SENSOR7  * MTOUCH_RELEASE_THRESH_FACTOR)  
01151 #define THRESHOLD_RELEASE_SENSOR8       (uint16_t)((float) THRESHOLD_PRESS_SENSOR8  * MTOUCH_RELEASE_THRESH_FACTOR) 
01152 #define THRESHOLD_RELEASE_SENSOR9       (uint16_t)((float) THRESHOLD_PRESS_SENSOR9  * MTOUCH_RELEASE_THRESH_FACTOR) 
01153 #define THRESHOLD_RELEASE_SENSOR10      (uint16_t)((float) THRESHOLD_PRESS_SENSOR10 * MTOUCH_RELEASE_THRESH_FACTOR) 
01154 #define THRESHOLD_RELEASE_SENSOR11      (uint16_t)((float) THRESHOLD_PRESS_SENSOR11 * MTOUCH_RELEASE_THRESH_FACTOR) 
01155 #define THRESHOLD_RELEASE_SENSOR12      (uint16_t)((float) THRESHOLD_PRESS_SENSOR12 * MTOUCH_RELEASE_THRESH_FACTOR) 
01156 #define THRESHOLD_RELEASE_SENSOR13      (uint16_t)((float) THRESHOLD_PRESS_SENSOR13 * MTOUCH_RELEASE_THRESH_FACTOR) 
01157 #define THRESHOLD_RELEASE_SENSOR14      (uint16_t)((float) THRESHOLD_PRESS_SENSOR14 * MTOUCH_RELEASE_THRESH_FACTOR) 
01158 #define THRESHOLD_RELEASE_SENSOR15      (uint16_t)((float) THRESHOLD_PRESS_SENSOR15 * MTOUCH_RELEASE_THRESH_FACTOR) 
01159 #define THRESHOLD_RELEASE_SENSOR16      (uint16_t)((float) THRESHOLD_PRESS_SENSOR16 * MTOUCH_RELEASE_THRESH_FACTOR) 
01160 #define THRESHOLD_RELEASE_SENSOR17      (uint16_t)((float) THRESHOLD_PRESS_SENSOR17 * MTOUCH_RELEASE_THRESH_FACTOR) 
01161 #define THRESHOLD_RELEASE_SENSOR18      (uint16_t)((float) THRESHOLD_PRESS_SENSOR18 * MTOUCH_RELEASE_THRESH_FACTOR) 
01162 #define THRESHOLD_RELEASE_SENSOR19      (uint16_t)((float) THRESHOLD_PRESS_SENSOR19 * MTOUCH_RELEASE_THRESH_FACTOR)
01163 #define THRESHOLD_RELEASE_SENSOR20      (uint16_t)((float) THRESHOLD_PRESS_SENSOR20 * MTOUCH_RELEASE_THRESH_FACTOR)
01164 #define THRESHOLD_RELEASE_SENSOR21      (uint16_t)((float) THRESHOLD_PRESS_SENSOR21 * MTOUCH_RELEASE_THRESH_FACTOR)
01165 #define THRESHOLD_RELEASE_SENSOR22      (uint16_t)((float) THRESHOLD_PRESS_SENSOR22 * MTOUCH_RELEASE_THRESH_FACTOR)
01166 #define THRESHOLD_RELEASE_SENSOR23      (uint16_t)((float) THRESHOLD_PRESS_SENSOR23 * MTOUCH_RELEASE_THRESH_FACTOR)
01167 #define THRESHOLD_RELEASE_SENSOR24      (uint16_t)((float) THRESHOLD_PRESS_SENSOR24 * MTOUCH_RELEASE_THRESH_FACTOR)
01168 #define THRESHOLD_RELEASE_SENSOR25      (uint16_t)((float) THRESHOLD_PRESS_SENSOR25 * MTOUCH_RELEASE_THRESH_FACTOR)
01169 #define THRESHOLD_RELEASE_SENSOR26      (uint16_t)((float) THRESHOLD_PRESS_SENSOR26 * MTOUCH_RELEASE_THRESH_FACTOR)
01170 #define THRESHOLD_RELEASE_SENSOR27      (uint16_t)((float) THRESHOLD_PRESS_SENSOR27 * MTOUCH_RELEASE_THRESH_FACTOR)
01171 #define THRESHOLD_RELEASE_SENSOR28      (uint16_t)((float) THRESHOLD_PRESS_SENSOR28 * MTOUCH_RELEASE_THRESH_FACTOR)
01172 #define THRESHOLD_RELEASE_SENSOR29      (uint16_t)((float) THRESHOLD_PRESS_SENSOR29 * MTOUCH_RELEASE_THRESH_FACTOR)
01173 
01174 #if defined(MTOUCH_DYNAMIC_SENSORS)
01175     #if !defined(MTOUCH_DYNAMIC_THRESHOLDS)
01176     #define MTOUCH_DYNAMIC_THRESHOLDS
01177     #endif
01178 #endif
01179 
01180 #if MTOUCH_NUMBER_SENSORS == 1
01181     #define MTOUCH_INDEXMINUSONE_0 0
01182     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0")    
01183     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0}
01184     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0}
01185     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01186     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0 }
01187     #endif
01188 #endif
01189 #if MTOUCH_NUMBER_SENSORS == 2
01190     #define MTOUCH_INDEXMINUSONE_0 1
01191     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1")
01192     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1}
01193     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1}
01194     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01195     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1 }
01196     #endif
01197 #endif
01198 #if MTOUCH_NUMBER_SENSORS == 3
01199     #define MTOUCH_INDEXMINUSONE_0 2
01200     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2")
01201     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2}
01202     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2}
01203     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01204     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2 }
01205     #endif
01206 #endif
01207 #if MTOUCH_NUMBER_SENSORS == 4
01208     #define MTOUCH_INDEXMINUSONE_0 3
01209     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3")
01210     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3}
01211     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3}
01212     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01213     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3 }
01214     #endif
01215 #endif
01216 #if MTOUCH_NUMBER_SENSORS == 5
01217     #define MTOUCH_INDEXMINUSONE_0 4
01218     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4")
01219     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4}
01220     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4}
01221     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01222     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4 }
01223     #endif
01224 #endif
01225 #if MTOUCH_NUMBER_SENSORS == 6
01226     #define MTOUCH_INDEXMINUSONE_0 5
01227     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5")
01228     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5}
01229     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5}
01230     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01231     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5 }
01232     #endif
01233 #endif
01234 #if MTOUCH_NUMBER_SENSORS == 7
01235     #define MTOUCH_INDEXMINUSONE_0 6
01236     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6")
01237     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6}
01238     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6}
01239     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01240     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6 }
01241     #endif
01242 #endif
01243 #if MTOUCH_NUMBER_SENSORS == 8
01244     #define MTOUCH_INDEXMINUSONE_0 7
01245     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7")
01246     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7}
01247     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7}
01248     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01249     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7 }
01250     #endif
01251 #endif
01252 #if MTOUCH_NUMBER_SENSORS == 9
01253     #define MTOUCH_INDEXMINUSONE_0 8
01254     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8")
01255     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8}
01256     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8}
01257     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01258     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8 }
01259     #endif
01260 #endif
01261 #if MTOUCH_NUMBER_SENSORS == 10
01262     #define MTOUCH_INDEXMINUSONE_0 9
01263     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9")
01264     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9}
01265     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9}
01266     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01267     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9 }
01268     #endif
01269 #endif
01270 #if MTOUCH_NUMBER_SENSORS == 11
01271     #define MTOUCH_INDEXMINUSONE_0 10
01272     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10")
01273     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10}
01274     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10}
01275     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01276     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10 }
01277     #endif
01278 #endif
01279 #if MTOUCH_NUMBER_SENSORS == 12
01280     #define MTOUCH_INDEXMINUSONE_0 11
01281     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11")
01282     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11}
01283     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11}
01284     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01285     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11 }
01286     #endif
01287 #endif
01288 #if MTOUCH_NUMBER_SENSORS == 13
01289     #define MTOUCH_INDEXMINUSONE_0 12
01290     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12")
01291     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12}
01292     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12}
01293     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01294     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12 }
01295     #endif
01296 #endif
01297 #if MTOUCH_NUMBER_SENSORS == 14
01298     #define MTOUCH_INDEXMINUSONE_0 13
01299     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13")
01300     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13}
01301     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13}
01302     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01303     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13 }
01304     #endif
01305 #endif
01306 #if MTOUCH_NUMBER_SENSORS == 15
01307     #define MTOUCH_INDEXMINUSONE_0 14
01308     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14")
01309     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14}
01310     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14}
01311     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01312     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14 }
01313     #endif
01314 #endif
01315 #if MTOUCH_NUMBER_SENSORS == 16
01316     #define MTOUCH_INDEXMINUSONE_0 15
01317     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15")
01318     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15}
01319     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15}
01320     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01321     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15 }
01322     #endif
01323 #endif
01324 #if MTOUCH_NUMBER_SENSORS == 17
01325     #define MTOUCH_INDEXMINUSONE_0 16
01326     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16")
01327     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16}
01328     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16}
01329     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01330     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16 }
01331     #endif
01332 #endif
01333 #if MTOUCH_NUMBER_SENSORS == 18
01334     #define MTOUCH_INDEXMINUSONE_0 17
01335     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17")
01336     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17}
01337     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17}
01338     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01339     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17 }
01340     #endif
01341 #endif
01342 #if MTOUCH_NUMBER_SENSORS == 19
01343     #define MTOUCH_INDEXMINUSONE_0 18
01344     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18")
01345     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18}
01346     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18}
01347     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01348     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18 }
01349     #endif
01350 #endif
01351 #if MTOUCH_NUMBER_SENSORS == 20
01352     #define MTOUCH_INDEXMINUSONE_0 19
01353     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19")
01354     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19}
01355     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19}
01356     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01357     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19 }
01358     #endif
01359 #endif
01360 #if MTOUCH_NUMBER_SENSORS == 21
01361     #define MTOUCH_INDEXMINUSONE_0 20
01362     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20")
01363     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20}
01364     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20}
01365     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01366     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20 }
01367     #endif
01368 #endif
01369 #if MTOUCH_NUMBER_SENSORS == 22
01370     #define MTOUCH_INDEXMINUSONE_0 21
01371     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21")
01372     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21}
01373     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21}
01374     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01375     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21 }
01376     #endif
01377 #endif
01378 #if MTOUCH_NUMBER_SENSORS == 23
01379     #define MTOUCH_INDEXMINUSONE_0 22
01380     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21, sensor_22")
01381     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21,THRESHOLD_PRESS_SENSOR22}
01382     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21,THRESHOLD_RELEASE_SENSOR22}
01383     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01384     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21, MTOUCH_OVERSAMPLE22 }
01385     #endif
01386 #endif
01387 #if MTOUCH_NUMBER_SENSORS == 24
01388     #define MTOUCH_INDEXMINUSONE_0 23
01389     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21, sensor_22, sensor_23")
01390     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21,THRESHOLD_PRESS_SENSOR22,THRESHOLD_PRESS_SENSOR23}
01391     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21,THRESHOLD_RELEASE_SENSOR22,THRESHOLD_RELEASE_SENSOR23}
01392     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01393     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21, MTOUCH_OVERSAMPLE22, MTOUCH_OVERSAMPLE23 }
01394     #endif
01395 #endif
01396 #if MTOUCH_NUMBER_SENSORS == 25
01397     #define MTOUCH_INDEXMINUSONE_0 24
01398     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21, sensor_22, sensor_23, sensor_24")
01399     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21,THRESHOLD_PRESS_SENSOR22,THRESHOLD_PRESS_SENSOR23,THRESHOLD_PRESS_SENSOR24}
01400     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21,THRESHOLD_RELEASE_SENSOR22,THRESHOLD_RELEASE_SENSOR23,THRESHOLD_RELEASE_SENSOR24}
01401     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01402     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21, MTOUCH_OVERSAMPLE22, MTOUCH_OVERSAMPLE23, MTOUCH_OVERSAMPLE24 }
01403     #endif
01404 #endif
01405 #if MTOUCH_NUMBER_SENSORS == 26
01406     #define MTOUCH_INDEXMINUSONE_0 25
01407     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21, sensor_22, sensor_23, sensor_24, sensor_25")
01408     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21,THRESHOLD_PRESS_SENSOR22,THRESHOLD_PRESS_SENSOR23,THRESHOLD_PRESS_SENSOR24,THRESHOLD_PRESS_SENSOR25}
01409     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21,THRESHOLD_RELEASE_SENSOR22,THRESHOLD_RELEASE_SENSOR23,THRESHOLD_RELEASE_SENSOR24,THRESHOLD_RELEASE_SENSOR25}
01410     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01411     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21, MTOUCH_OVERSAMPLE22, MTOUCH_OVERSAMPLE23, MTOUCH_OVERSAMPLE24, MTOUCH_OVERSAMPLE25 }
01412     #endif
01413 #endif
01414 #if MTOUCH_NUMBER_SENSORS == 27
01415     #define MTOUCH_INDEXMINUSONE_0 26
01416     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21, sensor_22, sensor_23, sensor_24, sensor_25, sensor_26")
01417     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21,THRESHOLD_PRESS_SENSOR22,THRESHOLD_PRESS_SENSOR23,THRESHOLD_PRESS_SENSOR24,THRESHOLD_PRESS_SENSOR25,THRESHOLD_PRESS_SENSOR26}
01418     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21,THRESHOLD_RELEASE_SENSOR22,THRESHOLD_RELEASE_SENSOR23,THRESHOLD_RELEASE_SENSOR24,THRESHOLD_RELEASE_SENSOR25,THRESHOLD_RELEASE_SENSOR26}
01419     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01420     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21, MTOUCH_OVERSAMPLE22, MTOUCH_OVERSAMPLE23, MTOUCH_OVERSAMPLE24, MTOUCH_OVERSAMPLE25, MTOUCH_OVERSAMPLE26 }
01421     #endif
01422 #endif
01423 #if MTOUCH_NUMBER_SENSORS == 28
01424     #define MTOUCH_INDEXMINUSONE_0 27
01425     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21, sensor_22, sensor_23, sensor_24, sensor_25, sensor_26, sensor_27")
01426     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21,THRESHOLD_PRESS_SENSOR22,THRESHOLD_PRESS_SENSOR23,THRESHOLD_PRESS_SENSOR24,THRESHOLD_PRESS_SENSOR25,THRESHOLD_PRESS_SENSOR26,THRESHOLD_PRESS_SENSOR27}
01427     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21,THRESHOLD_RELEASE_SENSOR22,THRESHOLD_RELEASE_SENSOR23,THRESHOLD_RELEASE_SENSOR24,THRESHOLD_RELEASE_SENSOR25,THRESHOLD_RELEASE_SENSOR26,THRESHOLD_RELEASE_SENSOR27}
01428     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01429     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21, MTOUCH_OVERSAMPLE22, MTOUCH_OVERSAMPLE23, MTOUCH_OVERSAMPLE24, MTOUCH_OVERSAMPLE25, MTOUCH_OVERSAMPLE26, MTOUCH_OVERSAMPLE27 }
01430     #endif
01431 #endif
01432 #if MTOUCH_NUMBER_SENSORS == 29
01433     #define MTOUCH_INDEXMINUSONE_0 28
01434     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21, sensor_22, sensor_23, sensor_24, sensor_25, sensor_26, sensor_27, sensor_28")
01435     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21,THRESHOLD_PRESS_SENSOR22,THRESHOLD_PRESS_SENSOR23,THRESHOLD_PRESS_SENSOR24,THRESHOLD_PRESS_SENSOR25,THRESHOLD_PRESS_SENSOR26,THRESHOLD_PRESS_SENSOR27,THRESHOLD_PRESS_SENSOR28}
01436     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21,THRESHOLD_RELEASE_SENSOR22,THRESHOLD_RELEASE_SENSOR23,THRESHOLD_RELEASE_SENSOR24,THRESHOLD_RELEASE_SENSOR25,THRESHOLD_RELEASE_SENSOR26,THRESHOLD_RELEASE_SENSOR27,THRESHOLD_RELEASE_SENSOR28}
01437     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01438     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21, MTOUCH_OVERSAMPLE22, MTOUCH_OVERSAMPLE23, MTOUCH_OVERSAMPLE24, MTOUCH_OVERSAMPLE25, MTOUCH_OVERSAMPLE26, MTOUCH_OVERSAMPLE27, MTOUCH_OVERSAMPLE28 }
01439     #endif
01440 #endif
01441 #if MTOUCH_NUMBER_SENSORS == 30
01442     #define MTOUCH_INDEXMINUSONE_0 29
01443     #define MTOUCH_ASM_MACRO_GLOBAL_SCAN_LABELS() asm("global sensor_0, sensor_1, sensor_2, sensor_3, sensor_4, sensor_5, sensor_6, sensor_7, sensor_8, sensor_9, sensor_10, sensor_11, sensor_12, sensor_13, sensor_14, sensor_15, sensor_16, sensor_17, sensor_18, sensor_19, sensor_20, sensor_21, sensor_22, sensor_23, sensor_24, sensor_25, sensor_26, sensor_27, sensor_28, sensor_29")
01444     #define PRESS_THRESHOLD_INIT {THRESHOLD_PRESS_SENSOR0,THRESHOLD_PRESS_SENSOR1,THRESHOLD_PRESS_SENSOR2,THRESHOLD_PRESS_SENSOR3,THRESHOLD_PRESS_SENSOR4,THRESHOLD_PRESS_SENSOR5,THRESHOLD_PRESS_SENSOR6,THRESHOLD_PRESS_SENSOR7,THRESHOLD_PRESS_SENSOR8,THRESHOLD_PRESS_SENSOR9,THRESHOLD_PRESS_SENSOR10,THRESHOLD_PRESS_SENSOR11,THRESHOLD_PRESS_SENSOR12,THRESHOLD_PRESS_SENSOR13,THRESHOLD_PRESS_SENSOR14,THRESHOLD_PRESS_SENSOR15,THRESHOLD_PRESS_SENSOR16,THRESHOLD_PRESS_SENSOR17,THRESHOLD_PRESS_SENSOR18,THRESHOLD_PRESS_SENSOR19,THRESHOLD_PRESS_SENSOR20,THRESHOLD_PRESS_SENSOR21,THRESHOLD_PRESS_SENSOR22,THRESHOLD_PRESS_SENSOR23,THRESHOLD_PRESS_SENSOR24,THRESHOLD_PRESS_SENSOR25,THRESHOLD_PRESS_SENSOR26,THRESHOLD_PRESS_SENSOR27,THRESHOLD_PRESS_SENSOR28,THRESHOLD_PRESS_SENSOR29}
01445     #define RELEASE_THRESHOLD_INIT {THRESHOLD_RELEASE_SENSOR0,THRESHOLD_RELEASE_SENSOR1,THRESHOLD_RELEASE_SENSOR2,THRESHOLD_RELEASE_SENSOR3,THRESHOLD_RELEASE_SENSOR4,THRESHOLD_RELEASE_SENSOR5,THRESHOLD_RELEASE_SENSOR6,THRESHOLD_RELEASE_SENSOR7,THRESHOLD_RELEASE_SENSOR8,THRESHOLD_RELEASE_SENSOR9,THRESHOLD_RELEASE_SENSOR10,THRESHOLD_RELEASE_SENSOR11,THRESHOLD_RELEASE_SENSOR12,THRESHOLD_RELEASE_SENSOR13,THRESHOLD_RELEASE_SENSOR14,THRESHOLD_RELEASE_SENSOR15,THRESHOLD_RELEASE_SENSOR16,THRESHOLD_RELEASE_SENSOR17,THRESHOLD_RELEASE_SENSOR18,THRESHOLD_RELEASE_SENSOR19,THRESHOLD_RELEASE_SENSOR20,THRESHOLD_RELEASE_SENSOR21,THRESHOLD_RELEASE_SENSOR22,THRESHOLD_RELEASE_SENSOR23,THRESHOLD_RELEASE_SENSOR24,THRESHOLD_RELEASE_SENSOR25,THRESHOLD_RELEASE_SENSOR26,THRESHOLD_RELEASE_SENSOR27,THRESHOLD_RELEASE_SENSOR28,THRESHOLD_RELEASE_SENSOR29}
01446     #if defined(MTOUCH_UNIQUE_OVERSAMPLE_ENABLE)
01447     #define MTOUCH_UNIQUE_OVERSAMPLE_INIT   { MTOUCH_OVERSAMPLE0, MTOUCH_OVERSAMPLE1, MTOUCH_OVERSAMPLE2, MTOUCH_OVERSAMPLE3, MTOUCH_OVERSAMPLE4, MTOUCH_OVERSAMPLE5, MTOUCH_OVERSAMPLE6, MTOUCH_OVERSAMPLE7, MTOUCH_OVERSAMPLE8, MTOUCH_OVERSAMPLE9, MTOUCH_OVERSAMPLE10, MTOUCH_OVERSAMPLE11, MTOUCH_OVERSAMPLE12, MTOUCH_OVERSAMPLE13, MTOUCH_OVERSAMPLE14, MTOUCH_OVERSAMPLE15, MTOUCH_OVERSAMPLE16, MTOUCH_OVERSAMPLE17, MTOUCH_OVERSAMPLE18, MTOUCH_OVERSAMPLE19, MTOUCH_OVERSAMPLE20, MTOUCH_OVERSAMPLE21, MTOUCH_OVERSAMPLE22, MTOUCH_OVERSAMPLE23, MTOUCH_OVERSAMPLE24, MTOUCH_OVERSAMPLE25, MTOUCH_OVERSAMPLE26, MTOUCH_OVERSAMPLE27, MTOUCH_OVERSAMPLE28, MTOUCH_OVERSAMPLE29 }
01448     #endif
01449 #endif
01450 
01451 #if defined(MTOUCH_EEPROM_ENABLED)
01452     #if !defined(MTOUCH_EEPROM_START_ADR)
01453         #warning MTOUCH_EEPROM_START_ADR is not defined. Defaulting to 0x00 as the start address.
01454         #define MTOUCH_EEPROM_START_ADR     0x00
01455     #endif
01456     #include "mTouch_eeprom.h"                 // Stores select configuration options in EEPROM for live updating
01457 #endif
01458 
01459 #define NOP0    
01460 #define NOP1     asm("nop");
01461 #define NOP2     NOP1;  NOP1;
01462 #define NOP3     NOP2;  NOP1;
01463 #define NOP4     NOP3;  NOP1;
01464 #define NOP5     NOP4;  NOP1;
01465 #define NOP6     NOP5;  NOP1;
01466 #define NOP7     NOP6;  NOP1;
01467 #define NOP8     NOP7;  NOP1;
01468 #define NOP9     NOP8;  NOP1;
01469 #define NOP10    NOP9;  NOP1;
01470 #define NOP11   NOP10;  NOP1;
01471 #define NOP12   NOP11;  NOP1;
01472 #define NOP13   NOP12;  NOP1;
01473 #define NOP14   NOP13;  NOP1;
01474 #define NOP15   NOP14;  NOP1;
01475 #define NOP16   NOP15;  NOP1;
01476 #define NOP17   NOP16;  NOP1;
01477 #define NOP18   NOP17;  NOP1;
01478 #define NOP19   NOP18;  NOP1;
01479 #define NOP20   NOP19;  NOP1;
01480 #define NOP21   NOP20;  NOP1;
01481 #define NOP22   NOP21;  NOP1;
01482 #define NOP23   NOP22;  NOP1;
01483 #define NOP24   NOP23;  NOP1;
01484 #define NOP25   NOP24;  NOP1;
01485 #define NOP26   NOP25;  NOP1;
01486 #define NOP27   NOP26;  NOP1;
01487 #define NOP28   NOP27;  NOP1;
01488 #define NOP29   NOP28;  NOP1;
01489 #define NOP30   NOP29;  NOP1;
01490 #define NOP31   NOP30;  NOP1;
01491 #define NOP32   NOP31;  NOP1;
01492 #define NOP33   NOP32;  NOP1;
01493 #define NOP34   NOP33;  NOP1;
01494 #define NOP35   NOP34;  NOP1;
01495 #define NOP36   NOP35;  NOP1;
01496 #define NOP37   NOP36;  NOP1;
01497 #define NOP38   NOP37;  NOP1;
01498 #define NOP39   NOP38;  NOP1;
01499 #define NOP40   NOP39;  NOP1;
01500 #define NOP41   NOP40;  NOP1;
01501 #define NOP42   NOP41;  NOP1;
01502 #define NOP43   NOP42;  NOP1;
01503 #define NOP44   NOP43;  NOP1;
01504 #define NOP45   NOP44;  NOP1;
01505 #define NOP46   NOP45;  NOP1;
01506 #define NOP47   NOP46;  NOP1;
01507 #define NOP48   NOP47;  NOP1;
01508 #define NOP49   NOP48;  NOP1;
01509 #define NOP50   NOP49;  NOP1;
01510 #define NOP51   NOP50;  NOP1;
01511 #define NOP52   NOP50;  NOP2;
01512 #define NOP53   NOP50;  NOP3;
01513 #define NOP54   NOP50;  NOP4;
01514 #define NOP55   NOP50;  NOP5;
01515 #define NOP56   NOP50;  NOP6;
01516 #define NOP57   NOP50;  NOP7;
01517 #define NOP58   NOP50;  NOP8;
01518 #define NOP59   NOP50;  NOP9;
01519 #define NOP60   NOP50; NOP10;
01520 #define NOP61   NOP50; NOP10; NOP1;
01521 #define NOP62   NOP50; NOP11; NOP1;
01522 #define NOP63   NOP50; NOP12; NOP1;
01523 #define NOP64   NOP50; NOP13; NOP1;
01524 #define NOP65   NOP50; NOP14; NOP1;
01525 #define NOP66   NOP50; NOP15; NOP1;
01526 #define NOP67   NOP50; NOP16; NOP1;
01527 #define NOP68   NOP50; NOP17; NOP1;
01528 #define NOP69   NOP50; NOP18; NOP1;
01529 #define NOP70   NOP50; NOP19; NOP1;
01530 #define NOP71   NOP50; NOP20; NOP1;
01531 #define NOP72   NOP50; NOP21; NOP1;
01532 #define NOP73   NOP50; NOP22; NOP1;
01533 #define NOP74   NOP50; NOP23; NOP1;
01534 #define NOP75   NOP50; NOP24; NOP1;
01535 #define NOP76   NOP50; NOP25; NOP1;
01536 #define NOP77   NOP50; NOP26; NOP1;
01537 #define NOP78   NOP50; NOP27; NOP1;
01538 #define NOP79   NOP50; NOP28; NOP1;
01539 #define NOP80   NOP50; NOP29; NOP1;
01540 #define NOP81   NOP50; NOP30; NOP1;
01541 #define NOP82   NOP50; NOP31; NOP1;
01542 #define NOP83   NOP50; NOP32; NOP1;
01543 #define NOP84   NOP50; NOP33; NOP1;
01544 #define NOP85   NOP50; NOP34; NOP1;
01545 #define NOP86   NOP50; NOP35; NOP1;
01546 #define NOP87   NOP50; NOP36; NOP1;
01547 #define NOP88   NOP50; NOP37; NOP1;
01548 #define NOP89   NOP50; NOP38; NOP1;
01549 #define NOP90   NOP50; NOP39; NOP1;
01550 #define NOP91   NOP50; NOP40; NOP1;
01551 #define NOP92   NOP50; NOP41; NOP1;
01552 #define NOP93   NOP50; NOP42; NOP1;
01553 #define NOP94   NOP50; NOP43; NOP1;
01554 #define NOP95   NOP50; NOP44; NOP1;
01555 #define NOP96   NOP50; NOP45; NOP1;
01556 #define NOP97   NOP50; NOP46; NOP1;
01557 #define NOP98   NOP50; NOP47; NOP1;
01558 #define NOP99   NOP50; NOP48; NOP1;
01559 #define NOP100  NOP50; NOP50;
01560 
01561 #define _NOP_DELAY(value)       __paste(NOP,value);
01562 
01563 #if !defined(CVD_CHOLD_CHARGE_DELAY)
01564     #define CVD_CHOLD_CHARGE_DELAY 0
01565 #endif
01566 #if !defined(CVD_SETTLING_DELAY)
01567     #define CVD_SETTLING_DELAY 0
01568 #endif
01569 #if !defined(CVD_PRE_GODONE_DELAY)
01570     #define CVD_PRE_GODONE_DELAY 0
01571 #endif
01572 
01573 #if (CVD_CHOLD_CHARGE_DELAY - 2 - 3 * ((CVD_CHOLD_CHARGE_DELAY-2)/3)) == 1 
01574     #define CVD_DELAY_CHOLD_REMAINDER()   _NOP_DELAY(1);
01575 #elif (CVD_CHOLD_CHARGE_DELAY - 2 - 3 * ((CVD_CHOLD_CHARGE_DELAY-2)/3)) == 2
01576     #define CVD_DELAY_CHOLD_REMAINDER()   _NOP_DELAY(2);
01577 #else
01578     #define CVD_DELAY_CHOLD_REMAINDER()
01579 #endif
01580 
01581 #if defined(_12F615) || defined(_12HV615) || defined(_PIC18)
01582     #define CVD_DELAY_CHOLD()  _NOP_DELAY(CVD_CHOLD_CHARGE_DELAY);
01583 #else
01584     #if CVD_CHOLD_CHARGE_DELAY > 4
01585         #define CVD_DELAY_VARIABLE_REQUIRED
01586         #define CVD_DELAY_CHOLD()                                               \
01587             do {                                                                \
01588                 asm("BANKSEL    _mTouch_delayCount"                         );  \
01589                 asm("movlw  "   ___mkstr(CVD_CHOLD_CHARGE_DELAY-2)      "/3");  \
01590                 asm("movwf  "   ___mkstr(NOBANK(_mTouch_delayCount))        );  \
01591                 asm("decfsz "   ___mkstr(NOBANK(_mTouch_delayCount))   ", F");  \
01592                 asm("goto $-1");                                                \
01593                 CVD_DELAY_CHOLD_REMAINDER();                                    \
01594             } while(0)
01595     #else
01596         #define CVD_DELAY_CHOLD()   _NOP_DELAY(CVD_CHOLD_CHARGE_DELAY);
01597     #endif
01598 #endif 
01599 
01600 #if (CVD_SETTLING_DELAY - 2 - 3 * ((CVD_SETTLING_DELAY-2)/3)) == 1
01601     #define CVD_DELAY_SETTLE_REMAINDER()   _NOP_DELAY(1);
01602 #elif (CVD_SETTLING_DELAY - 2 - 3 * ((CVD_SETTLING_DELAY-2)/3)) == 2
01603     #define CVD_DELAY_SETTLE_REMAINDER()   _NOP_DELAY(2);
01604 #else
01605     #define CVD_DELAY_SETTLE_REMAINDER()
01606 #endif
01607 
01608 #if defined(_12F615) || defined(_12HV615) || defined(_PIC18)
01609     #define CVD_DELAY_SETTLE()  _NOP_DELAY(CVD_SETTLING_DELAY);
01610 #else
01611     #if CVD_SETTLING_DELAY > 4
01612         #if !defined(CVD_DELAY_VARIABLE_REQUIRED)
01613             #define CVD_DELAY_VARIABLE_REQUIRED
01614         #endif
01615         
01616         #define CVD_DELAY_SETTLE()                                              \
01617             do {                                                                \
01618                 asm("BANKSEL    _mTouch_delayCount"                         );  \
01619                 asm("movlw  "   ___mkstr(CVD_SETTLING_DELAY-2)         "/3" );  \
01620                 asm("movwf  "   ___mkstr(NOBANK(_mTouch_delayCount))        );  \
01621                 asm("decfsz "   ___mkstr(NOBANK(_mTouch_delayCount))   ", F");  \
01622                 asm("goto       $-1"                                        );  \
01623                 CVD_DELAY_SETTLE_REMAINDER();                                   \
01624             } while(0)
01625     #else
01626         #define CVD_DELAY_SETTLE()  _NOP_DELAY(CVD_SETTLING_DELAY);
01627     #endif       
01628 #endif
01629 
01630 #if (CVD_UNIMPLEMENTED_AVAILABLE == 1)
01631     #define CVD_GO_DONE_DELAY()     asm("BANKSEL "  ___mkstr(_ADCON0));                         \
01632                                     asm("movlw   "  ___mkstr(MTOUCH_SELECT_ISO_NOGO | 0x02));   \
01633                                     asm("movwf   "  ___mkstr(NOBANK(_ADCON0)));  
01634 #else
01635     #if !defined(PIC_ADC_TAD)
01636         #warning The PIC_ADC_TAD value in your devices hardware profile has not been defined. Defaulting to '1' us.
01637         #define PIC_ADC_TAD 1
01638     #endif
01639     #if PIC_ADC_TAD == 1
01640         #if _XTAL_FREQ == 32000000
01641             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(3);
01642         #elif _XTAL_FREQ == 16000000
01643             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(1);
01644         #elif _XTAL_FREQ == 8000000
01645             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01646         #elif _XTAL_FREQ == 4000000
01647             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01648         #elif _XTAL_FREQ == 2000000
01649             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01650         #elif _XTAL_FREQ == 1000000
01651             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01652         #endif
01653     #elif PIC_ADC_TAD == 2
01654         #if _XTAL_FREQ == 32000000
01655             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(7);
01656         #elif _XTAL_FREQ == 16000000
01657             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(3);
01658         #elif _XTAL_FREQ == 8000000
01659             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(1);
01660         #elif _XTAL_FREQ == 4000000
01661             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01662         #elif _XTAL_FREQ == 2000000
01663             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01664         #elif _XTAL_FREQ == 1000000
01665             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01666         #endif
01667     #elif PIC_ADC_TAD == 4
01668         #if _XTAL_FREQ == 32000000
01669             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(15);
01670         #elif _XTAL_FREQ == 16000000
01671             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(7);
01672         #elif _XTAL_FREQ == 8000000
01673             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(3);
01674         #elif _XTAL_FREQ == 4000000
01675             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(1);
01676         #elif _XTAL_FREQ == 2000000
01677             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01678         #elif _XTAL_FREQ == 1000000
01679             #define CVD_GO_DONE_DELAY()     _NOP_DELAY(0);
01680         #endif
01681     #endif
01682 #endif
01683 
01684 #if defined(MTOUCH_NUMBER_OF_SLIDERS)
01685 #if (MTOUCH_NUMBER_OF_SLIDERS > 0)
01686     #define MTOUCH_SLIDERS_ENABLED
01687     #include "mTouch_slider.h"
01688 #endif
01689 #endif
01690 
01691 #define mTouch_GetAccumulator(dataPointer)          ((uint24_t)(dataPointer->accumulator.v) & 0xFFFFF)
01692 #define mTouch_GetResult(dataPointer)               (uint16_t)(dataPointer->result.v >> 4)
01693 #define mTouch_SetAccumulator(dataPointer, value)                                   \
01694     do                                                                              \
01695     {                                                                               \
01696         mTouch_ClearAccumulator(dataPointer)                                        \
01697         dataPointer->accumulator.v |= (uint16_t)(value & 0xFFF);                    \
01698     } while(0);
01699 #define mTouch_SetResult(dataPointer, value)                                        \
01700     do                                                                              \
01701     {                                                                               \
01702         dataPointer->result.v &= 0x000F;                                            \
01703         dataPointer->result.v |= (uint16_t)(value << 4);                            \
01704     } while(0);
01705 #define mTouch_IncResult(dataPointer)                                               \
01706     do                                                                              \
01707     {                                                                               \
01708         dataPointer->result.v += 0x10;                                              \
01709         result++;                                                                   \
01710     } while(0);
01711 #define mTouch_DecResult(dataPointer)                                               \
01712     do                                                                              \
01713     {                                                                               \
01714         dataPointer->result.v -= 0x10;                                              \
01715         result--;                                                                   \
01716     } while(0);
01717 #define mTouch_UpdateAccumulator(dataPointer)                                       \
01718     do                                                                              \
01719     {                                                                               \
01720         dataPointer->accumulator.v += mTouch_GetResult(dataPointer);                \
01721     } while(0);
01722 #define mTouch_ClearAccumulator(dataPointer)                                        \
01723     do                                                                              \
01724     {                                                                               \
01725         dataPointer->accumulator.v &= 0xF00000;                                     \
01726     } while(0);
01727 
01728 #define MTOUCH_INDEXMINUSONE_1      0
01729 #define MTOUCH_INDEXMINUSONE_2      1
01730 #define MTOUCH_INDEXMINUSONE_3      2
01731 #define MTOUCH_INDEXMINUSONE_4      3
01732 #define MTOUCH_INDEXMINUSONE_5      4
01733 #define MTOUCH_INDEXMINUSONE_6      5
01734 #define MTOUCH_INDEXMINUSONE_7      6
01735 #define MTOUCH_INDEXMINUSONE_8      7
01736 #define MTOUCH_INDEXMINUSONE_9      8
01737 #define MTOUCH_INDEXMINUSONE_10     9
01738 #define MTOUCH_INDEXMINUSONE_11     10
01739 #define MTOUCH_INDEXMINUSONE_12     11
01740 #define MTOUCH_INDEXMINUSONE_13     12
01741 #define MTOUCH_INDEXMINUSONE_14     13
01742 #define MTOUCH_INDEXMINUSONE_15     14
01743 #define MTOUCH_INDEXMINUSONE_16     15
01744 #define MTOUCH_INDEXMINUSONE_17     16
01745 #define MTOUCH_INDEXMINUSONE_18     17
01746 #define MTOUCH_INDEXMINUSONE_19     18
01747 #define MTOUCH_INDEXMINUSONE_20     19
01748 #define MTOUCH_INDEXMINUSONE_21     20
01749 #define MTOUCH_INDEXMINUSONE_22     21
01750 #define MTOUCH_INDEXMINUSONE_23     22
01751 #define MTOUCH_INDEXMINUSONE_24     23
01752 #define MTOUCH_INDEXMINUSONE_25     24
01753 #define MTOUCH_INDEXMINUSONE_26     25
01754 #define MTOUCH_INDEXMINUSONE_27     26
01755 #define MTOUCH_INDEXMINUSONE_28     27   
01756 #define MTOUCH_INDEXMINUSONE_29     28
01757 
01758 
01759 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR0)  
01760 #define CVD_REFSENSOR_0  CVD_REFERENCE_SENSOR0  
01761 #else    
01762 #define CVD_REFSENSOR_0  MTOUCH_INDEXMINUSONE_0    
01763 #endif
01764 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR1)   
01765 #define CVD_REFSENSOR_1  CVD_REFERENCE_SENSOR1   
01766 #else   
01767 #define CVD_REFSENSOR_1  MTOUCH_INDEXMINUSONE_1    
01768 #endif
01769 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR2)  
01770 #define CVD_REFSENSOR_2  CVD_REFERENCE_SENSOR2   
01771 #else    
01772 #define CVD_REFSENSOR_2  MTOUCH_INDEXMINUSONE_2    
01773 #endif
01774 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR3)  
01775 #define CVD_REFSENSOR_3  CVD_REFERENCE_SENSOR3  
01776 #else    
01777 #define CVD_REFSENSOR_3  MTOUCH_INDEXMINUSONE_3    
01778 #endif
01779 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR4)  
01780 #define CVD_REFSENSOR_4  CVD_REFERENCE_SENSOR4  
01781 #else   
01782 #define CVD_REFSENSOR_4  MTOUCH_INDEXMINUSONE_4   
01783 #endif
01784 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR5)   
01785 #define CVD_REFSENSOR_5  CVD_REFERENCE_SENSOR5   
01786 #else   
01787 #define CVD_REFSENSOR_5  MTOUCH_INDEXMINUSONE_5   
01788 #endif
01789 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR6)  
01790 #define CVD_REFSENSOR_6  CVD_REFERENCE_SENSOR6   
01791 #else   
01792 #define CVD_REFSENSOR_6  MTOUCH_INDEXMINUSONE_6    
01793 #endif
01794 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR7)   
01795 #define CVD_REFSENSOR_7  CVD_REFERENCE_SENSOR7   
01796 #else    
01797 #define CVD_REFSENSOR_7  MTOUCH_INDEXMINUSONE_7    
01798 #endif
01799 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR8)  
01800 #define CVD_REFSENSOR_8  CVD_REFERENCE_SENSOR8   
01801 #else    
01802 #define CVD_REFSENSOR_8  MTOUCH_INDEXMINUSONE_8    
01803 #endif
01804 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR9)  
01805 #define CVD_REFSENSOR_9  CVD_REFERENCE_SENSOR9   
01806 #else    
01807 #define CVD_REFSENSOR_9  MTOUCH_INDEXMINUSONE_9    
01808 #endif
01809 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR10) 
01810 #define CVD_REFSENSOR_10  CVD_REFERENCE_SENSOR10 
01811 #else    
01812 #define CVD_REFSENSOR_10  MTOUCH_INDEXMINUSONE_10  
01813 #endif
01814 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR11) 
01815 #define CVD_REFSENSOR_11  CVD_REFERENCE_SENSOR11 
01816 #else    
01817 #define CVD_REFSENSOR_11  MTOUCH_INDEXMINUSONE_11  
01818 #endif
01819 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR12) 
01820 #define CVD_REFSENSOR_12  CVD_REFERENCE_SENSOR12  
01821 #else      
01822 #define CVD_REFSENSOR_12  MTOUCH_INDEXMINUSONE_12  
01823 #endif
01824 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR13) 
01825 #define CVD_REFSENSOR_13  CVD_REFERENCE_SENSOR13  
01826 #else      
01827 #define CVD_REFSENSOR_13  MTOUCH_INDEXMINUSONE_13  
01828 #endif
01829 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR14) 
01830 #define CVD_REFSENSOR_14  CVD_REFERENCE_SENSOR14  
01831 #else      
01832 #define CVD_REFSENSOR_14  MTOUCH_INDEXMINUSONE_14  
01833 #endif
01834 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR15) 
01835 #define CVD_REFSENSOR_15  CVD_REFERENCE_SENSOR15   
01836 #else     
01837 #define CVD_REFSENSOR_15  MTOUCH_INDEXMINUSONE_15  
01838 #endif
01839 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR16) 
01840 #define CVD_REFSENSOR_16  CVD_REFERENCE_SENSOR16    
01841 #else     
01842 #define CVD_REFSENSOR_16  MTOUCH_INDEXMINUSONE_16  
01843 #endif
01844 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR17)
01845 #define CVD_REFSENSOR_17  CVD_REFERENCE_SENSOR17 
01846 #else     
01847 #define CVD_REFSENSOR_17  MTOUCH_INDEXMINUSONE_17  
01848 #endif
01849 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR18) 
01850 #define CVD_REFSENSOR_18  CVD_REFERENCE_SENSOR18   
01851 #else    
01852 #define CVD_REFSENSOR_18  MTOUCH_INDEXMINUSONE_18  
01853 #endif
01854 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR19) 
01855 #define CVD_REFSENSOR_19  CVD_REFERENCE_SENSOR19 
01856 #else   
01857 #define CVD_REFSENSOR_19  MTOUCH_INDEXMINUSONE_19 
01858 #endif
01859 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR20) 
01860 #define CVD_REFSENSOR_20  CVD_REFERENCE_SENSOR20  
01861 #else   
01862 #define CVD_REFSENSOR_20  MTOUCH_INDEXMINUSONE_20 
01863 #endif
01864 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR21) 
01865 #define CVD_REFSENSOR_21  CVD_REFERENCE_SENSOR21  
01866 #else   
01867 #define CVD_REFSENSOR_21  MTOUCH_INDEXMINUSONE_21 
01868 #endif
01869 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR22)  
01870 #define CVD_REFSENSOR_22  CVD_REFERENCE_SENSOR22  
01871 #else   
01872 #define CVD_REFSENSOR_22  MTOUCH_INDEXMINUSONE_22 
01873 #endif
01874 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR23)  
01875 #define CVD_REFSENSOR_23  CVD_REFERENCE_SENSOR23  
01876 #else    
01877 #define CVD_REFSENSOR_23  MTOUCH_INDEXMINUSONE_23 
01878 #endif
01879 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR24) 
01880 #define CVD_REFSENSOR_24  CVD_REFERENCE_SENSOR24  
01881 #else    
01882 #define CVD_REFSENSOR_24  MTOUCH_INDEXMINUSONE_24  
01883 #endif
01884 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR25)  
01885 #define CVD_REFSENSOR_25  CVD_REFERENCE_SENSOR25  
01886 #else    
01887 #define CVD_REFSENSOR_25  MTOUCH_INDEXMINUSONE_25  
01888 #endif
01889 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR26)  
01890 #define CVD_REFSENSOR_26  CVD_REFERENCE_SENSOR26  
01891 #else    
01892 #define CVD_REFSENSOR_26  MTOUCH_INDEXMINUSONE_26  
01893 #endif
01894 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR27)  
01895 #define CVD_REFSENSOR_27  CVD_REFERENCE_SENSOR27  
01896 #else    
01897 #define CVD_REFSENSOR_27  MTOUCH_INDEXMINUSONE_27 
01898 #endif
01899 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR28)   
01900 #define CVD_REFSENSOR_28  CVD_REFERENCE_SENSOR28  
01901 #else    
01902 #define CVD_REFSENSOR_28  MTOUCH_INDEXMINUSONE_28 
01903 #endif
01904 #if defined(MTOUCH_UNIQUE_REFERENCE_OPTIONS) && defined(CVD_REFERENCE_SENSOR29)  
01905 #define CVD_REFSENSOR_29  CVD_REFERENCE_SENSOR29   
01906 #else    
01907 #define CVD_REFSENSOR_29  MTOUCH_INDEXMINUSONE_29   
01908 #endif
01909 
01910 #if defined(MTOUCH_UNIQUE_SCAN_OPTIONS)
01911 #if defined(CVD_GUARD_IO_0_ENABLED)
01912     #define 
01913 #endif
01914 #endif
01915 
01916 
01917 #if defined(CVD_FORCE_REF_DAC) && !defined(PIC_DACOUT_AVAILABLE)
01918     #error Your currently chosen processor does not have a DACOUT pin available. Please undefine CVD_FORCE_REF_DAC in the configuration file.
01919 #endif
01920 #if defined(CVD_GUARD_DACOUT_ENABLED) && !defined(PIC_DACOUT_AVAILABLE)
01921     #error Your currently chosen processor does not have a DACOUT pin available. Please undefine CVD_GUARD_DACOUT_ENABLED in the configuration file.
01922 #endif
01923 #if defined(CVD_MUTUAL_ENABLED) && defined(CVD_MUTUAL_EXCLUSIVE_ENABLED)
01924     #error Both CVD_MUTUAL_ENABLED and CVD_MUTUAL_EXCLUSIVE_ENABLED are defined. Please comment out one of them in the configuration file.
01925 #endif
01926 #if defined(CVD_GUARD_DACOUT_ENABLED) && defined(CVD_GUARD_IO_ENABLED)
01927     #error Both CVD_GUARD_IO_ENABLED and CVD_GUARD_DACOUT_ENABLED are defined. Please undefine one of them in the configuration file.
01928 #endif
01929 
01930 #if (MTOUCH_INTEGRATION_TYPE == MTOUCH_CONTROLS_ISR) && defined(MCOMM_ENABLED) && defined(MCOMM_TWO_WAY_ENABLED)
01931     #error mComm 2-way communications are not compatible with MTOUCH_INTEGRATION_TYPE == MTOUCH_CONTROLS_ISR, please redefine MTOUCH_INTEGRATION_TYPE to MTOUCH_CALLED_FROM_ISR or MTOUCH_CALLED_FROM_MAINLOOP. An example ISR function to handle the mComm and mTouch interrupts is available in the example main.c file.
01932 #endif
01933 
01934 #if (MTOUCH_INTEGRATION_TYPE == MTOUCH_CONTROLS_ISR) || (MTOUCH_INTEGRATION_TYPE == MTOUCH_CALLED_FROM_ISR)
01935     #if !defined(MTOUCH_ISR_TIMER)
01936         #define MTOUCH_ISR_TIMER 0
01937         #warning MTOUCH_ISR_TIMER is not defined in the configuration file. Defaulting to TMR0.
01938     #endif  
01939     
01940     #if MTOUCH_ISR_TIMER == 0
01941         #if !defined(PIC_TIMER0_AVAILABLE)
01942             #error Timer0 does not exist for the currently selected microcontroller. Please redefine MTOUCH_ISR_TIMER to an available timer.
01943         #else
01944             #if defined(_PIC18)
01945                 #define MTOUCH_ISR_TMRxIF       TMR0IF
01946                 #define MTOUCH_ISR_TMRxIE       TMR0IE
01947                 #define MTOUCH_ISR_TMR_ASM      _TMR0L
01948                 #define MTOUCH_ISR_TMR_C        TMR0L
01949             #else
01950                 #define MTOUCH_ISR_TMRxIF       TMR0IF
01951                 #define MTOUCH_ISR_TMRxIE       TMR0IE
01952                 #define MTOUCH_ISR_TMR_ASM      _TMR0
01953                 #define MTOUCH_ISR_TMR_C        TMR0
01954             #endif
01955         #endif
01956     #elif MTOUCH_ISR_TIMER == 1
01957         #error The mTouch framework is not compatible with TMR1. Please redefine MTOUCH_ISR_TIMER to an 8-bit timer.
01958     #elif MTOUCH_ISR_TIMER == 3
01959         #error The mTouch framework is not compatible with TMR3. Please redefine MTOUCH_ISR_TIMER to an 8-bit timer.
01960     #elif MTOUCH_ISR_TIMER == 5
01961         #error The mTouch framework is not compatible with TMR5. Please redefine MTOUCH_ISR_TIMER to an 8-bit timer.
01962     #elif MTOUCH_ISR_TIMER == 7
01963         #error The mTouch framework is not compatible with TMR7. Please redefine MTOUCH_ISR_TIMER to an 8-bit timer.
01964     #elif MTOUCH_ISR_TIMER == 9
01965         #error The mTouch framework is not compatible with TMR9. Please redefine MTOUCH_ISR_TIMER to an 8-bit timer.
01966     #elif MTOUCH_ISR_TIMER == 2
01967         #if !defined(PIC_TIMER2_AVAILABLE)
01968             #error Timer2 does not exist for the currently selected microcontroller. Please redefine MTOUCH_ISR_TIMER to an available timer.
01969         #else
01970             #define MTOUCH_ISR_TMRxIF       TMR2IF
01971             #define MTOUCH_ISR_TMRxIE       TMR2IE
01972             #define MTOUCH_ISR_TMR_ASM      _TMR2
01973             #define MTOUCH_ISR_TMR_C        TMR2
01974             #define MTOUCH_ISR_TMR_PEIE_REQUIRED
01975         #endif
01976     #elif MTOUCH_ISR_TIMER == 4
01977         #if !defined(PIC_TIMER4_AVAILABLE)
01978             #error Timer4 does not exist for the currently selected microcontroller. Please redefine MTOUCH_ISR_TIMER to an available timer.
01979         #else
01980             #define MTOUCH_ISR_TMRxIF       TMR4IF
01981             #define MTOUCH_ISR_TMRxIE       TMR4IE
01982             #define MTOUCH_ISR_TMR_ASM      _TMR4
01983             #define MTOUCH_ISR_TMR_C        TMR4
01984             #define MTOUCH_ISR_TMR_PEIE_REQUIRED
01985         #endif
01986     #elif MTOUCH_ISR_TIMER == 6
01987         #if !defined(PIC_TIMER6_AVAILABLE)
01988             #error Timer6 does not exist for the currently selected microcontroller. Please redefine MTOUCH_ISR_TIMER to an available timer.
01989         #else
01990             #define MTOUCH_ISR_TMRxIF       TMR6IF
01991             #define MTOUCH_ISR_TMRxIE       TMR6IE
01992             #define MTOUCH_ISR_TMR_ASM      _TMR6
01993             #define MTOUCH_ISR_TMR_C        TMR6
01994             #define MTOUCH_ISR_TMR_PEIE_REQUIRED
01995         #endif
01996     #elif MTOUCH_ISR_TIMER == 8
01997         #if !defined(PIC_TIMER8_AVAILABLE)
01998             #error Timer8 does not exist for the currently selected microcontroller. Please redefine MTOUCH_ISR_TIMER to an available timer.
01999         #else
02000             #define MTOUCH_ISR_TMRxIF       TMR8IF
02001             #define MTOUCH_ISR_TMRxIE       TMR8IE
02002             #define MTOUCH_ISR_TMR_ASM      _TMR8
02003             #define MTOUCH_ISR_TMR_C        TMR8
02004             #define MTOUCH_ISR_TMR_PEIE_REQUIRED
02005         #endif
02006     #elif MTOUCH_ISR_TIMER == 10
02007         #if !defined(PIC_TIMER10_AVAILABLE)
02008             #error Timer10 does not exist for the currently selected microcontroller. Please redefine MTOUCH_ISR_TIMER to an available timer.
02009         #else
02010             #define MTOUCH_ISR_TMRxIF       TMR10IF
02011             #define MTOUCH_ISR_TMRxIE       TMR10IE
02012             #define MTOUCH_ISR_TMR_ASM      _TMR10
02013             #define MTOUCH_ISR_TMR_C        TMR10
02014             #define MTOUCH_ISR_TMR_PEIE_REQUIRED
02015         #endif
02016     #endif
02017 #endif
02018 
02019 #if defined(MTOUCH_MOST_PRESSED_ONLY) && (MTOUCH_NUMBER_SENSORS < 2)
02020     #warning The mTouch Framework's most-pressed algorithm has been enabled but there are not 2 active sensors. Undefining MTOUCH_MOST_PRESSED_ONLY.
02021     #undef MTOUCH_MOST_PRESSED_ONLY
02022 #endif
02023 
02024 
02025     #if defined(MTOUCH_USE_GPIO)
02026         #define MTOUCH_PORT_C_SENSOR(index)     GP
02027         #define MTOUCH_PORT_ASM_SENSOR(index)   _GP
02028         #define MTOUCH_LAT_C_SENSOR(index)      GPIO
02029         #define MTOUCH_LAT_ASM_SENSOR(index)    _GPIO  
02030         #define MTOUCH_LETTER_SENSOR0           IO
02031         #define MTOUCH_LETTER_SENSOR1           IO
02032         #define MTOUCH_LETTER_SENSOR2           IO
02033         #define MTOUCH_LETTER_SENSOR3           IO
02034         #define MTOUCH_LETTER_SENSOR4           IO
02035         #define MTOUCH_LETTER_SENSOR5           IO
02036         #define MTOUCH_LETTER_SENSOR6           IO
02037         #define MTOUCH_LETTER_SENSOR7           IO
02038     #else
02039         #define MTOUCH_LETTER_SENSOR0           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR0)
02040         #define MTOUCH_LETTER_SENSOR1           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR1)
02041         #define MTOUCH_LETTER_SENSOR2           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR2)
02042         #define MTOUCH_LETTER_SENSOR3           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR3)
02043         #define MTOUCH_LETTER_SENSOR4           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR4)
02044         #define MTOUCH_LETTER_SENSOR5           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR5)
02045         #define MTOUCH_LETTER_SENSOR6           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR6)
02046         #define MTOUCH_LETTER_SENSOR7           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR7)
02047         #define MTOUCH_LETTER_SENSOR8           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR8)
02048         #define MTOUCH_LETTER_SENSOR9           __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR9)
02049         #define MTOUCH_LETTER_SENSOR10          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR10)
02050         #define MTOUCH_LETTER_SENSOR11          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR11)
02051         #define MTOUCH_LETTER_SENSOR12          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR12)
02052         #define MTOUCH_LETTER_SENSOR13          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR13)
02053         #define MTOUCH_LETTER_SENSOR14          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR14)
02054         #define MTOUCH_LETTER_SENSOR15          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR15)
02055         #define MTOUCH_LETTER_SENSOR16          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR16)
02056         #define MTOUCH_LETTER_SENSOR17          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR17)
02057         #define MTOUCH_LETTER_SENSOR18          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR18)
02058         #define MTOUCH_LETTER_SENSOR19          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR19)
02059         #define MTOUCH_LETTER_SENSOR20          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR20)
02060         #define MTOUCH_LETTER_SENSOR21          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR21)
02061         #define MTOUCH_LETTER_SENSOR22          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR22)
02062         #define MTOUCH_LETTER_SENSOR23          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR23)
02063         #define MTOUCH_LETTER_SENSOR24          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR24)
02064         #define MTOUCH_LETTER_SENSOR25          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR25)
02065         #define MTOUCH_LETTER_SENSOR26          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR26)
02066         #define MTOUCH_LETTER_SENSOR27          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR27)
02067         #define MTOUCH_LETTER_SENSOR28          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR28)
02068         #define MTOUCH_LETTER_SENSOR29          __paste5(MTOUCH_LETTER_,MTOUCH_SENSOR29)
02069         
02070         #define MTOUCH_PORT_C_SENSOR0            __paste4(R,MTOUCH_LETTER_SENSOR0)
02071         #define MTOUCH_PORT_C_SENSOR1            __paste4(R,MTOUCH_LETTER_SENSOR1)
02072         #define MTOUCH_PORT_C_SENSOR2            __paste4(R,MTOUCH_LETTER_SENSOR2)
02073         #define MTOUCH_PORT_C_SENSOR3            __paste4(R,MTOUCH_LETTER_SENSOR3)
02074         #define MTOUCH_PORT_C_SENSOR4            __paste4(R,MTOUCH_LETTER_SENSOR4)
02075         #define MTOUCH_PORT_C_SENSOR5            __paste4(R,MTOUCH_LETTER_SENSOR5)
02076         #define MTOUCH_PORT_C_SENSOR6            __paste4(R,MTOUCH_LETTER_SENSOR6)
02077         #define MTOUCH_PORT_C_SENSOR7            __paste4(R,MTOUCH_LETTER_SENSOR7)
02078         #define MTOUCH_PORT_C_SENSOR8            __paste4(R,MTOUCH_LETTER_SENSOR8)
02079         #define MTOUCH_PORT_C_SENSOR9            __paste4(R,MTOUCH_LETTER_SENSOR9)
02080         #define MTOUCH_PORT_C_SENSOR10           __paste4(R,MTOUCH_LETTER_SENSOR10)
02081         #define MTOUCH_PORT_C_SENSOR11           __paste4(R,MTOUCH_LETTER_SENSOR11)
02082         #define MTOUCH_PORT_C_SENSOR12           __paste4(R,MTOUCH_LETTER_SENSOR12)
02083         #define MTOUCH_PORT_C_SENSOR13           __paste4(R,MTOUCH_LETTER_SENSOR13)
02084         #define MTOUCH_PORT_C_SENSOR14           __paste4(R,MTOUCH_LETTER_SENSOR14)
02085         #define MTOUCH_PORT_C_SENSOR15           __paste4(R,MTOUCH_LETTER_SENSOR15)
02086         #define MTOUCH_PORT_C_SENSOR16           __paste4(R,MTOUCH_LETTER_SENSOR16)
02087         #define MTOUCH_PORT_C_SENSOR17           __paste4(R,MTOUCH_LETTER_SENSOR17)
02088         #define MTOUCH_PORT_C_SENSOR18           __paste4(R,MTOUCH_LETTER_SENSOR18)
02089         #define MTOUCH_PORT_C_SENSOR19           __paste4(R,MTOUCH_LETTER_SENSOR19)
02090         #define MTOUCH_PORT_C_SENSOR20           __paste4(R,MTOUCH_LETTER_SENSOR20)
02091         #define MTOUCH_PORT_C_SENSOR21           __paste4(R,MTOUCH_LETTER_SENSOR21)
02092         #define MTOUCH_PORT_C_SENSOR22           __paste4(R,MTOUCH_LETTER_SENSOR22)
02093         #define MTOUCH_PORT_C_SENSOR23           __paste4(R,MTOUCH_LETTER_SENSOR23)
02094         #define MTOUCH_PORT_C_SENSOR24           __paste4(R,MTOUCH_LETTER_SENSOR24)
02095         #define MTOUCH_PORT_C_SENSOR25           __paste4(R,MTOUCH_LETTER_SENSOR25)
02096         #define MTOUCH_PORT_C_SENSOR26           __paste4(R,MTOUCH_LETTER_SENSOR26)
02097         #define MTOUCH_PORT_C_SENSOR27           __paste4(R,MTOUCH_LETTER_SENSOR27)
02098         #define MTOUCH_PORT_C_SENSOR28           __paste4(R,MTOUCH_LETTER_SENSOR28)
02099         #define MTOUCH_PORT_C_SENSOR29           __paste4(R,MTOUCH_LETTER_SENSOR29)
02100         #define MTOUCH_PORT_C_SENSOR(index)      __paste3(MTOUCH_PORT_C_SENSOR, index)
02101 
02102         #define MTOUCH_PORT_ASM_SENSOR0          __paste4(_R,MTOUCH_LETTER_SENSOR0)
02103         #define MTOUCH_PORT_ASM_SENSOR1          __paste4(_R,MTOUCH_LETTER_SENSOR1)
02104         #define MTOUCH_PORT_ASM_SENSOR2          __paste4(_R,MTOUCH_LETTER_SENSOR2)
02105         #define MTOUCH_PORT_ASM_SENSOR3          __paste4(_R,MTOUCH_LETTER_SENSOR3)
02106         #define MTOUCH_PORT_ASM_SENSOR4          __paste4(_R,MTOUCH_LETTER_SENSOR4)
02107         #define MTOUCH_PORT_ASM_SENSOR5          __paste4(_R,MTOUCH_LETTER_SENSOR5)
02108         #define MTOUCH_PORT_ASM_SENSOR6          __paste4(_R,MTOUCH_LETTER_SENSOR6)
02109         #define MTOUCH_PORT_ASM_SENSOR7          __paste4(_R,MTOUCH_LETTER_SENSOR7)
02110         #define MTOUCH_PORT_ASM_SENSOR8          __paste4(_R,MTOUCH_LETTER_SENSOR8)
02111         #define MTOUCH_PORT_ASM_SENSOR9          __paste4(_R,MTOUCH_LETTER_SENSOR9)
02112         #define MTOUCH_PORT_ASM_SENSOR10         __paste4(_R,MTOUCH_LETTER_SENSOR10)
02113         #define MTOUCH_PORT_ASM_SENSOR11         __paste4(_R,MTOUCH_LETTER_SENSOR11)
02114         #define MTOUCH_PORT_ASM_SENSOR12         __paste4(_R,MTOUCH_LETTER_SENSOR12)
02115         #define MTOUCH_PORT_ASM_SENSOR13         __paste4(_R,MTOUCH_LETTER_SENSOR13)
02116         #define MTOUCH_PORT_ASM_SENSOR14         __paste4(_R,MTOUCH_LETTER_SENSOR14)
02117         #define MTOUCH_PORT_ASM_SENSOR15         __paste4(_R,MTOUCH_LETTER_SENSOR15)
02118         #define MTOUCH_PORT_ASM_SENSOR16         __paste4(_R,MTOUCH_LETTER_SENSOR16)
02119         #define MTOUCH_PORT_ASM_SENSOR17         __paste4(_R,MTOUCH_LETTER_SENSOR17)
02120         #define MTOUCH_PORT_ASM_SENSOR18         __paste4(_R,MTOUCH_LETTER_SENSOR18)
02121         #define MTOUCH_PORT_ASM_SENSOR19         __paste4(_R,MTOUCH_LETTER_SENSOR19)
02122         #define MTOUCH_PORT_ASM_SENSOR20         __paste4(_R,MTOUCH_LETTER_SENSOR20)
02123         #define MTOUCH_PORT_ASM_SENSOR21         __paste4(_R,MTOUCH_LETTER_SENSOR21)
02124         #define MTOUCH_PORT_ASM_SENSOR22         __paste4(_R,MTOUCH_LETTER_SENSOR22)
02125         #define MTOUCH_PORT_ASM_SENSOR23         __paste4(_R,MTOUCH_LETTER_SENSOR23)
02126         #define MTOUCH_PORT_ASM_SENSOR24         __paste4(_R,MTOUCH_LETTER_SENSOR24)
02127         #define MTOUCH_PORT_ASM_SENSOR25         __paste4(_R,MTOUCH_LETTER_SENSOR25)
02128         #define MTOUCH_PORT_ASM_SENSOR26         __paste4(_R,MTOUCH_LETTER_SENSOR26)
02129         #define MTOUCH_PORT_ASM_SENSOR27         __paste4(_R,MTOUCH_LETTER_SENSOR27)
02130         #define MTOUCH_PORT_ASM_SENSOR28         __paste4(_R,MTOUCH_LETTER_SENSOR28)
02131         #define MTOUCH_PORT_ASM_SENSOR29         __paste4(_R,MTOUCH_LETTER_SENSOR29)
02132         #define MTOUCH_PORT_ASM_SENSOR(index)    __paste3(MTOUCH_PORT_ASM_SENSOR, index)
02133     #endif
02134     
02135         
02136     
02137     #if defined(MTOUCH_USE_PORT)
02138         #define MTOUCH_LAT_C_SENSOR0            __paste4(PORT,MTOUCH_LETTER_SENSOR0)
02139         #define MTOUCH_LAT_C_SENSOR1            __paste4(PORT,MTOUCH_LETTER_SENSOR1)
02140         #define MTOUCH_LAT_C_SENSOR2            __paste4(PORT,MTOUCH_LETTER_SENSOR2)
02141         #define MTOUCH_LAT_C_SENSOR3            __paste4(PORT,MTOUCH_LETTER_SENSOR3)
02142         #define MTOUCH_LAT_C_SENSOR4            __paste4(PORT,MTOUCH_LETTER_SENSOR4)
02143         #define MTOUCH_LAT_C_SENSOR5            __paste4(PORT,MTOUCH_LETTER_SENSOR5)
02144         #define MTOUCH_LAT_C_SENSOR6            __paste4(PORT,MTOUCH_LETTER_SENSOR6)
02145         #define MTOUCH_LAT_C_SENSOR7            __paste4(PORT,MTOUCH_LETTER_SENSOR7)
02146         #define MTOUCH_LAT_C_SENSOR8            __paste4(PORT,MTOUCH_LETTER_SENSOR8)
02147         #define MTOUCH_LAT_C_SENSOR9            __paste4(PORT,MTOUCH_LETTER_SENSOR9)
02148         #define MTOUCH_LAT_C_SENSOR10           __paste4(PORT,MTOUCH_LETTER_SENSOR10)
02149         #define MTOUCH_LAT_C_SENSOR11           __paste4(PORT,MTOUCH_LETTER_SENSOR11)
02150         #define MTOUCH_LAT_C_SENSOR12           __paste4(PORT,MTOUCH_LETTER_SENSOR12)
02151         #define MTOUCH_LAT_C_SENSOR13           __paste4(PORT,MTOUCH_LETTER_SENSOR13)
02152         #define MTOUCH_LAT_C_SENSOR14           __paste4(PORT,MTOUCH_LETTER_SENSOR14)
02153         #define MTOUCH_LAT_C_SENSOR15           __paste4(PORT,MTOUCH_LETTER_SENSOR15)
02154         #define MTOUCH_LAT_C_SENSOR16           __paste4(PORT,MTOUCH_LETTER_SENSOR16)
02155         #define MTOUCH_LAT_C_SENSOR17           __paste4(PORT,MTOUCH_LETTER_SENSOR17)
02156         #define MTOUCH_LAT_C_SENSOR18           __paste4(PORT,MTOUCH_LETTER_SENSOR18)
02157         #define MTOUCH_LAT_C_SENSOR19           __paste4(PORT,MTOUCH_LETTER_SENSOR19)
02158         #define MTOUCH_LAT_C_SENSOR20           __paste4(PORT,MTOUCH_LETTER_SENSOR20)
02159         #define MTOUCH_LAT_C_SENSOR21           __paste4(PORT,MTOUCH_LETTER_SENSOR21)
02160         #define MTOUCH_LAT_C_SENSOR22           __paste4(PORT,MTOUCH_LETTER_SENSOR22)
02161         #define MTOUCH_LAT_C_SENSOR23           __paste4(PORT,MTOUCH_LETTER_SENSOR23)
02162         #define MTOUCH_LAT_C_SENSOR24           __paste4(PORT,MTOUCH_LETTER_SENSOR24)
02163         #define MTOUCH_LAT_C_SENSOR25           __paste4(PORT,MTOUCH_LETTER_SENSOR25)
02164         #define MTOUCH_LAT_C_SENSOR26           __paste4(PORT,MTOUCH_LETTER_SENSOR26)
02165         #define MTOUCH_LAT_C_SENSOR27           __paste4(PORT,MTOUCH_LETTER_SENSOR27)
02166         #define MTOUCH_LAT_C_SENSOR28           __paste4(PORT,MTOUCH_LETTER_SENSOR28)
02167         #define MTOUCH_LAT_C_SENSOR29           __paste4(PORT,MTOUCH_LETTER_SENSOR29)
02168         #define MTOUCH_LAT_C_SENSOR(index)      __paste3(MTOUCH_LAT_C_SENSOR, index)
02169 
02170         #define MTOUCH_LAT_ASM_SENSOR0          __paste4(_PORT,MTOUCH_LETTER_SENSOR0)
02171         #define MTOUCH_LAT_ASM_SENSOR1          __paste4(_PORT,MTOUCH_LETTER_SENSOR1)
02172         #define MTOUCH_LAT_ASM_SENSOR2          __paste4(_PORT,MTOUCH_LETTER_SENSOR2)
02173         #define MTOUCH_LAT_ASM_SENSOR3          __paste4(_PORT,MTOUCH_LETTER_SENSOR3)
02174         #define MTOUCH_LAT_ASM_SENSOR4          __paste4(_PORT,MTOUCH_LETTER_SENSOR4)
02175         #define MTOUCH_LAT_ASM_SENSOR5          __paste4(_PORT,MTOUCH_LETTER_SENSOR5)
02176         #define MTOUCH_LAT_ASM_SENSOR6          __paste4(_PORT,MTOUCH_LETTER_SENSOR6)
02177         #define MTOUCH_LAT_ASM_SENSOR7          __paste4(_PORT,MTOUCH_LETTER_SENSOR7)
02178         #define MTOUCH_LAT_ASM_SENSOR8          __paste4(_PORT,MTOUCH_LETTER_SENSOR8)
02179         #define MTOUCH_LAT_ASM_SENSOR9          __paste4(_PORT,MTOUCH_LETTER_SENSOR9)
02180         #define MTOUCH_LAT_ASM_SENSOR10         __paste4(_PORT,MTOUCH_LETTER_SENSOR10)
02181         #define MTOUCH_LAT_ASM_SENSOR11         __paste4(_PORT,MTOUCH_LETTER_SENSOR11)
02182         #define MTOUCH_LAT_ASM_SENSOR12         __paste4(_PORT,MTOUCH_LETTER_SENSOR12)
02183         #define MTOUCH_LAT_ASM_SENSOR13         __paste4(_PORT,MTOUCH_LETTER_SENSOR13)
02184         #define MTOUCH_LAT_ASM_SENSOR14         __paste4(_PORT,MTOUCH_LETTER_SENSOR14)
02185         #define MTOUCH_LAT_ASM_SENSOR15         __paste4(_PORT,MTOUCH_LETTER_SENSOR15)
02186         #define MTOUCH_LAT_ASM_SENSOR16         __paste4(_PORT,MTOUCH_LETTER_SENSOR16)
02187         #define MTOUCH_LAT_ASM_SENSOR17         __paste4(_PORT,MTOUCH_LETTER_SENSOR17)
02188         #define MTOUCH_LAT_ASM_SENSOR18         __paste4(_PORT,MTOUCH_LETTER_SENSOR18)
02189         #define MTOUCH_LAT_ASM_SENSOR19         __paste4(_PORT,MTOUCH_LETTER_SENSOR19)
02190         #define MTOUCH_LAT_ASM_SENSOR20         __paste4(_PORT,MTOUCH_LETTER_SENSOR20)
02191         #define MTOUCH_LAT_ASM_SENSOR21         __paste4(_PORT,MTOUCH_LETTER_SENSOR21)
02192         #define MTOUCH_LAT_ASM_SENSOR22         __paste4(_PORT,MTOUCH_LETTER_SENSOR22)
02193         #define MTOUCH_LAT_ASM_SENSOR23         __paste4(_PORT,MTOUCH_LETTER_SENSOR23)
02194         #define MTOUCH_LAT_ASM_SENSOR24         __paste4(_PORT,MTOUCH_LETTER_SENSOR24)
02195         #define MTOUCH_LAT_ASM_SENSOR25         __paste4(_PORT,MTOUCH_LETTER_SENSOR25)
02196         #define MTOUCH_LAT_ASM_SENSOR26         __paste4(_PORT,MTOUCH_LETTER_SENSOR26)
02197         #define MTOUCH_LAT_ASM_SENSOR27         __paste4(_PORT,MTOUCH_LETTER_SENSOR27)
02198         #define MTOUCH_LAT_ASM_SENSOR28         __paste4(_PORT,MTOUCH_LETTER_SENSOR28)
02199         #define MTOUCH_LAT_ASM_SENSOR29         __paste4(_PORT,MTOUCH_LETTER_SENSOR29)
02200         #define MTOUCH_LAT_ASM_SENSOR(index)    __paste3(MTOUCH_LAT_ASM_SENSOR, index)
02201     #elif !defined(MTOUCH_USE_GPIO)
02202         #define MTOUCH_LAT_C_SENSOR0            __paste4(LAT,MTOUCH_LETTER_SENSOR0)
02203         #define MTOUCH_LAT_C_SENSOR1            __paste4(LAT,MTOUCH_LETTER_SENSOR1)
02204         #define MTOUCH_LAT_C_SENSOR2            __paste4(LAT,MTOUCH_LETTER_SENSOR2)
02205         #define MTOUCH_LAT_C_SENSOR3            __paste4(LAT,MTOUCH_LETTER_SENSOR3)
02206         #define MTOUCH_LAT_C_SENSOR4            __paste4(LAT,MTOUCH_LETTER_SENSOR4)
02207         #define MTOUCH_LAT_C_SENSOR5            __paste4(LAT,MTOUCH_LETTER_SENSOR5)
02208         #define MTOUCH_LAT_C_SENSOR6            __paste4(LAT,MTOUCH_LETTER_SENSOR6)
02209         #define MTOUCH_LAT_C_SENSOR7            __paste4(LAT,MTOUCH_LETTER_SENSOR7)
02210         #define MTOUCH_LAT_C_SENSOR8            __paste4(LAT,MTOUCH_LETTER_SENSOR8)
02211         #define MTOUCH_LAT_C_SENSOR9            __paste4(LAT,MTOUCH_LETTER_SENSOR9)
02212         #define MTOUCH_LAT_C_SENSOR10           __paste4(LAT,MTOUCH_LETTER_SENSOR10)
02213         #define MTOUCH_LAT_C_SENSOR11           __paste4(LAT,MTOUCH_LETTER_SENSOR11)
02214         #define MTOUCH_LAT_C_SENSOR12           __paste4(LAT,MTOUCH_LETTER_SENSOR12)
02215         #define MTOUCH_LAT_C_SENSOR13           __paste4(LAT,MTOUCH_LETTER_SENSOR13)
02216         #define MTOUCH_LAT_C_SENSOR14           __paste4(LAT,MTOUCH_LETTER_SENSOR14)
02217         #define MTOUCH_LAT_C_SENSOR15           __paste4(LAT,MTOUCH_LETTER_SENSOR15)
02218         #define MTOUCH_LAT_C_SENSOR16           __paste4(LAT,MTOUCH_LETTER_SENSOR16)
02219         #define MTOUCH_LAT_C_SENSOR17           __paste4(LAT,MTOUCH_LETTER_SENSOR17)
02220         #define MTOUCH_LAT_C_SENSOR18           __paste4(LAT,MTOUCH_LETTER_SENSOR18)
02221         #define MTOUCH_LAT_C_SENSOR19           __paste4(LAT,MTOUCH_LETTER_SENSOR19)
02222         #define MTOUCH_LAT_C_SENSOR20           __paste4(LAT,MTOUCH_LETTER_SENSOR20)
02223         #define MTOUCH_LAT_C_SENSOR21           __paste4(LAT,MTOUCH_LETTER_SENSOR21)
02224         #define MTOUCH_LAT_C_SENSOR22           __paste4(LAT,MTOUCH_LETTER_SENSOR22)
02225         #define MTOUCH_LAT_C_SENSOR23           __paste4(LAT,MTOUCH_LETTER_SENSOR23)
02226         #define MTOUCH_LAT_C_SENSOR24           __paste4(LAT,MTOUCH_LETTER_SENSOR24)
02227         #define MTOUCH_LAT_C_SENSOR25           __paste4(LAT,MTOUCH_LETTER_SENSOR25)
02228         #define MTOUCH_LAT_C_SENSOR26           __paste4(LAT,MTOUCH_LETTER_SENSOR26)
02229         #define MTOUCH_LAT_C_SENSOR27           __paste4(LAT,MTOUCH_LETTER_SENSOR27)
02230         #define MTOUCH_LAT_C_SENSOR28           __paste4(LAT,MTOUCH_LETTER_SENSOR28)
02231         #define MTOUCH_LAT_C_SENSOR29           __paste4(LAT,MTOUCH_LETTER_SENSOR29)
02232         #define MTOUCH_LAT_C_SENSOR(index)      __paste3(MTOUCH_LAT_C_SENSOR, index)
02233 
02234         #define MTOUCH_LAT_ASM_SENSOR0          __paste4(_LAT,MTOUCH_LETTER_SENSOR0)
02235         #define MTOUCH_LAT_ASM_SENSOR1          __paste4(_LAT,MTOUCH_LETTER_SENSOR1)
02236         #define MTOUCH_LAT_ASM_SENSOR2          __paste4(_LAT,MTOUCH_LETTER_SENSOR2)
02237         #define MTOUCH_LAT_ASM_SENSOR3          __paste4(_LAT,MTOUCH_LETTER_SENSOR3)
02238         #define MTOUCH_LAT_ASM_SENSOR4          __paste4(_LAT,MTOUCH_LETTER_SENSOR4)
02239         #define MTOUCH_LAT_ASM_SENSOR5          __paste4(_LAT,MTOUCH_LETTER_SENSOR5)
02240         #define MTOUCH_LAT_ASM_SENSOR6          __paste4(_LAT,MTOUCH_LETTER_SENSOR6)
02241         #define MTOUCH_LAT_ASM_SENSOR7          __paste4(_LAT,MTOUCH_LETTER_SENSOR7)
02242         #define MTOUCH_LAT_ASM_SENSOR8          __paste4(_LAT,MTOUCH_LETTER_SENSOR8)
02243         #define MTOUCH_LAT_ASM_SENSOR9          __paste4(_LAT,MTOUCH_LETTER_SENSOR9)
02244         #define MTOUCH_LAT_ASM_SENSOR10         __paste4(_LAT,MTOUCH_LETTER_SENSOR10)
02245         #define MTOUCH_LAT_ASM_SENSOR11         __paste4(_LAT,MTOUCH_LETTER_SENSOR11)
02246         #define MTOUCH_LAT_ASM_SENSOR12         __paste4(_LAT,MTOUCH_LETTER_SENSOR12)
02247         #define MTOUCH_LAT_ASM_SENSOR13         __paste4(_LAT,MTOUCH_LETTER_SENSOR13)
02248         #define MTOUCH_LAT_ASM_SENSOR14         __paste4(_LAT,MTOUCH_LETTER_SENSOR14)
02249         #define MTOUCH_LAT_ASM_SENSOR15         __paste4(_LAT,MTOUCH_LETTER_SENSOR15)
02250         #define MTOUCH_LAT_ASM_SENSOR16         __paste4(_LAT,MTOUCH_LETTER_SENSOR16)
02251         #define MTOUCH_LAT_ASM_SENSOR17         __paste4(_LAT,MTOUCH_LETTER_SENSOR17)
02252         #define MTOUCH_LAT_ASM_SENSOR18         __paste4(_LAT,MTOUCH_LETTER_SENSOR18)
02253         #define MTOUCH_LAT_ASM_SENSOR19         __paste4(_LAT,MTOUCH_LETTER_SENSOR19)
02254         #define MTOUCH_LAT_ASM_SENSOR20         __paste4(_LAT,MTOUCH_LETTER_SENSOR20)
02255         #define MTOUCH_LAT_ASM_SENSOR21         __paste4(_LAT,MTOUCH_LETTER_SENSOR21)
02256         #define MTOUCH_LAT_ASM_SENSOR22         __paste4(_LAT,MTOUCH_LETTER_SENSOR22)
02257         #define MTOUCH_LAT_ASM_SENSOR23         __paste4(_LAT,MTOUCH_LETTER_SENSOR23)
02258         #define MTOUCH_LAT_ASM_SENSOR24         __paste4(_LAT,MTOUCH_LETTER_SENSOR24)
02259         #define MTOUCH_LAT_ASM_SENSOR25         __paste4(_LAT,MTOUCH_LETTER_SENSOR25)
02260         #define MTOUCH_LAT_ASM_SENSOR26         __paste4(_LAT,MTOUCH_LETTER_SENSOR26)
02261         #define MTOUCH_LAT_ASM_SENSOR27         __paste4(_LAT,MTOUCH_LETTER_SENSOR27)
02262         #define MTOUCH_LAT_ASM_SENSOR28         __paste4(_LAT,MTOUCH_LETTER_SENSOR28)
02263         #define MTOUCH_LAT_ASM_SENSOR29         __paste4(_LAT,MTOUCH_LETTER_SENSOR29)
02264         #define MTOUCH_LAT_ASM_SENSOR(index)    __paste3(MTOUCH_LAT_ASM_SENSOR, index)
02265     #endif
02266 
02267     #define MTOUCH_TRIS_C_SENSOR0           __paste4(TRIS,MTOUCH_LETTER_SENSOR0)
02268     #define MTOUCH_TRIS_C_SENSOR1           __paste4(TRIS,MTOUCH_LETTER_SENSOR1)
02269     #define MTOUCH_TRIS_C_SENSOR2           __paste4(TRIS,MTOUCH_LETTER_SENSOR2)
02270     #define MTOUCH_TRIS_C_SENSOR3           __paste4(TRIS,MTOUCH_LETTER_SENSOR3)
02271     #define MTOUCH_TRIS_C_SENSOR4           __paste4(TRIS,MTOUCH_LETTER_SENSOR4)
02272     #define MTOUCH_TRIS_C_SENSOR5           __paste4(TRIS,MTOUCH_LETTER_SENSOR5)
02273     #define MTOUCH_TRIS_C_SENSOR6           __paste4(TRIS,MTOUCH_LETTER_SENSOR6)
02274     #define MTOUCH_TRIS_C_SENSOR7           __paste4(TRIS,MTOUCH_LETTER_SENSOR7)
02275     #define MTOUCH_TRIS_C_SENSOR8           __paste4(TRIS,MTOUCH_LETTER_SENSOR8)
02276     #define MTOUCH_TRIS_C_SENSOR9           __paste4(TRIS,MTOUCH_LETTER_SENSOR9)
02277     #define MTOUCH_TRIS_C_SENSOR10          __paste4(TRIS,MTOUCH_LETTER_SENSOR10)
02278     #define MTOUCH_TRIS_C_SENSOR11          __paste4(TRIS,MTOUCH_LETTER_SENSOR11)
02279     #define MTOUCH_TRIS_C_SENSOR12          __paste4(TRIS,MTOUCH_LETTER_SENSOR12)
02280     #define MTOUCH_TRIS_C_SENSOR13          __paste4(TRIS,MTOUCH_LETTER_SENSOR13)
02281     #define MTOUCH_TRIS_C_SENSOR14          __paste4(TRIS,MTOUCH_LETTER_SENSOR14)
02282     #define MTOUCH_TRIS_C_SENSOR15          __paste4(TRIS,MTOUCH_LETTER_SENSOR15)
02283     #define MTOUCH_TRIS_C_SENSOR16          __paste4(TRIS,MTOUCH_LETTER_SENSOR16)
02284     #define MTOUCH_TRIS_C_SENSOR17          __paste4(TRIS,MTOUCH_LETTER_SENSOR17)
02285     #define MTOUCH_TRIS_C_SENSOR18          __paste4(TRIS,MTOUCH_LETTER_SENSOR18)
02286     #define MTOUCH_TRIS_C_SENSOR19          __paste4(TRIS,MTOUCH_LETTER_SENSOR19)
02287     #define MTOUCH_TRIS_C_SENSOR20          __paste4(TRIS,MTOUCH_LETTER_SENSOR20)
02288     #define MTOUCH_TRIS_C_SENSOR21          __paste4(TRIS,MTOUCH_LETTER_SENSOR21)
02289     #define MTOUCH_TRIS_C_SENSOR22          __paste4(TRIS,MTOUCH_LETTER_SENSOR22)
02290     #define MTOUCH_TRIS_C_SENSOR23          __paste4(TRIS,MTOUCH_LETTER_SENSOR23)
02291     #define MTOUCH_TRIS_C_SENSOR24          __paste4(TRIS,MTOUCH_LETTER_SENSOR24)
02292     #define MTOUCH_TRIS_C_SENSOR25          __paste4(TRIS,MTOUCH_LETTER_SENSOR25)
02293     #define MTOUCH_TRIS_C_SENSOR26          __paste4(TRIS,MTOUCH_LETTER_SENSOR26)
02294     #define MTOUCH_TRIS_C_SENSOR27          __paste4(TRIS,MTOUCH_LETTER_SENSOR27)
02295     #define MTOUCH_TRIS_C_SENSOR28          __paste4(TRIS,MTOUCH_LETTER_SENSOR28)
02296     #define MTOUCH_TRIS_C_SENSOR29          __paste4(TRIS,MTOUCH_LETTER_SENSOR29)
02297     #define MTOUCH_TRIS_C_SENSOR(index)     __paste3(MTOUCH_TRIS_C_SENSOR, index)
02298 
02299     #define MTOUCH_TRIS_ASM_SENSOR0         __paste4(_TRIS,MTOUCH_LETTER_SENSOR0)
02300     #define MTOUCH_TRIS_ASM_SENSOR1         __paste4(_TRIS,MTOUCH_LETTER_SENSOR1)
02301     #define MTOUCH_TRIS_ASM_SENSOR2         __paste4(_TRIS,MTOUCH_LETTER_SENSOR2)
02302     #define MTOUCH_TRIS_ASM_SENSOR3         __paste4(_TRIS,MTOUCH_LETTER_SENSOR3)
02303     #define MTOUCH_TRIS_ASM_SENSOR4         __paste4(_TRIS,MTOUCH_LETTER_SENSOR4)
02304     #define MTOUCH_TRIS_ASM_SENSOR5         __paste4(_TRIS,MTOUCH_LETTER_SENSOR5)
02305     #define MTOUCH_TRIS_ASM_SENSOR6         __paste4(_TRIS,MTOUCH_LETTER_SENSOR6)
02306     #define MTOUCH_TRIS_ASM_SENSOR7         __paste4(_TRIS,MTOUCH_LETTER_SENSOR7)
02307     #define MTOUCH_TRIS_ASM_SENSOR8         __paste4(_TRIS,MTOUCH_LETTER_SENSOR8)
02308     #define MTOUCH_TRIS_ASM_SENSOR9         __paste4(_TRIS,MTOUCH_LETTER_SENSOR9)
02309     #define MTOUCH_TRIS_ASM_SENSOR10        __paste4(_TRIS,MTOUCH_LETTER_SENSOR10)
02310     #define MTOUCH_TRIS_ASM_SENSOR11        __paste4(_TRIS,MTOUCH_LETTER_SENSOR11)
02311     #define MTOUCH_TRIS_ASM_SENSOR12        __paste4(_TRIS,MTOUCH_LETTER_SENSOR12)
02312     #define MTOUCH_TRIS_ASM_SENSOR13        __paste4(_TRIS,MTOUCH_LETTER_SENSOR13)
02313     #define MTOUCH_TRIS_ASM_SENSOR14        __paste4(_TRIS,MTOUCH_LETTER_SENSOR14)
02314     #define MTOUCH_TRIS_ASM_SENSOR15        __paste4(_TRIS,MTOUCH_LETTER_SENSOR15)
02315     #define MTOUCH_TRIS_ASM_SENSOR16        __paste4(_TRIS,MTOUCH_LETTER_SENSOR16)
02316     #define MTOUCH_TRIS_ASM_SENSOR17        __paste4(_TRIS,MTOUCH_LETTER_SENSOR17)
02317     #define MTOUCH_TRIS_ASM_SENSOR18        __paste4(_TRIS,MTOUCH_LETTER_SENSOR18)
02318     #define MTOUCH_TRIS_ASM_SENSOR19        __paste4(_TRIS,MTOUCH_LETTER_SENSOR19)
02319     #define MTOUCH_TRIS_ASM_SENSOR20        __paste4(_TRIS,MTOUCH_LETTER_SENSOR20)
02320     #define MTOUCH_TRIS_ASM_SENSOR21        __paste4(_TRIS,MTOUCH_LETTER_SENSOR21)
02321     #define MTOUCH_TRIS_ASM_SENSOR22        __paste4(_TRIS,MTOUCH_LETTER_SENSOR22)
02322     #define MTOUCH_TRIS_ASM_SENSOR23        __paste4(_TRIS,MTOUCH_LETTER_SENSOR23)
02323     #define MTOUCH_TRIS_ASM_SENSOR24        __paste4(_TRIS,MTOUCH_LETTER_SENSOR24)
02324     #define MTOUCH_TRIS_ASM_SENSOR25        __paste4(_TRIS,MTOUCH_LETTER_SENSOR25)
02325     #define MTOUCH_TRIS_ASM_SENSOR26        __paste4(_TRIS,MTOUCH_LETTER_SENSOR26)
02326     #define MTOUCH_TRIS_ASM_SENSOR27        __paste4(_TRIS,MTOUCH_LETTER_SENSOR27)
02327     #define MTOUCH_TRIS_ASM_SENSOR28        __paste4(_TRIS,MTOUCH_LETTER_SENSOR28)
02328     #define MTOUCH_TRIS_ASM_SENSOR29        __paste4(_TRIS,MTOUCH_LETTER_SENSOR29)
02329     #define MTOUCH_TRIS_ASM_SENSOR(index)   __paste3(MTOUCH_TRIS_ASM_SENSOR, index)
02330 
02331     #define MTOUCH_PIN_SENSOR0              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR0)
02332     #define MTOUCH_PIN_SENSOR1              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR1)
02333     #define MTOUCH_PIN_SENSOR2              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR2)
02334     #define MTOUCH_PIN_SENSOR3              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR3)
02335     #define MTOUCH_PIN_SENSOR4              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR4)
02336     #define MTOUCH_PIN_SENSOR5              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR5)
02337     #define MTOUCH_PIN_SENSOR6              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR6)
02338     #define MTOUCH_PIN_SENSOR7              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR7)
02339     #define MTOUCH_PIN_SENSOR8              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR8)
02340     #define MTOUCH_PIN_SENSOR9              __paste4(MTOUCH_PIN_,MTOUCH_SENSOR9)
02341     #define MTOUCH_PIN_SENSOR10             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR10)
02342     #define MTOUCH_PIN_SENSOR11             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR11)
02343     #define MTOUCH_PIN_SENSOR12             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR12)
02344     #define MTOUCH_PIN_SENSOR13             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR13)
02345     #define MTOUCH_PIN_SENSOR14             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR14)
02346     #define MTOUCH_PIN_SENSOR15             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR15)
02347     #define MTOUCH_PIN_SENSOR16             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR16)
02348     #define MTOUCH_PIN_SENSOR17             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR17)
02349     #define MTOUCH_PIN_SENSOR18             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR18)
02350     #define MTOUCH_PIN_SENSOR19             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR19)
02351     #define MTOUCH_PIN_SENSOR20             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR20)
02352     #define MTOUCH_PIN_SENSOR21             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR21)
02353     #define MTOUCH_PIN_SENSOR22             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR22)
02354     #define MTOUCH_PIN_SENSOR23             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR23)
02355     #define MTOUCH_PIN_SENSOR24             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR24)
02356     #define MTOUCH_PIN_SENSOR25             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR25)
02357     #define MTOUCH_PIN_SENSOR26             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR26)
02358     #define MTOUCH_PIN_SENSOR27             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR27)
02359     #define MTOUCH_PIN_SENSOR28             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR28)
02360     #define MTOUCH_PIN_SENSOR29             __paste4(MTOUCH_PIN_,MTOUCH_SENSOR29)
02361     #define MTOUCH_PIN_REFERENCE            __paste4(MTOUCH_PIN_,CVD_REFERENCE)
02362     #define MTOUCH_PIN_SENSOR(index)        __paste3(MTOUCH_PIN_SENSOR, index)
02363         
02364     #define MTOUCH_SELECT_SENSOR0               __paste4(MTOUCH_AD_, MTOUCH_SENSOR0)
02365     #define MTOUCH_SELECT_SENSOR1               __paste4(MTOUCH_AD_, MTOUCH_SENSOR1)
02366     #define MTOUCH_SELECT_SENSOR2               __paste4(MTOUCH_AD_, MTOUCH_SENSOR2)
02367     #define MTOUCH_SELECT_SENSOR3               __paste4(MTOUCH_AD_, MTOUCH_SENSOR3)
02368     #define MTOUCH_SELECT_SENSOR4               __paste4(MTOUCH_AD_, MTOUCH_SENSOR4)
02369     #define MTOUCH_SELECT_SENSOR5               __paste4(MTOUCH_AD_, MTOUCH_SENSOR5)
02370     #define MTOUCH_SELECT_SENSOR6               __paste4(MTOUCH_AD_, MTOUCH_SENSOR6)
02371     #define MTOUCH_SELECT_SENSOR7               __paste4(MTOUCH_AD_, MTOUCH_SENSOR7)
02372     #define MTOUCH_SELECT_SENSOR8               __paste4(MTOUCH_AD_, MTOUCH_SENSOR8)
02373     #define MTOUCH_SELECT_SENSOR9               __paste4(MTOUCH_AD_, MTOUCH_SENSOR9)
02374     #define MTOUCH_SELECT_SENSOR10          __paste4(MTOUCH_AD_, MTOUCH_SENSOR10)
02375     #define MTOUCH_SELECT_SENSOR11          __paste4(MTOUCH_AD_, MTOUCH_SENSOR11)
02376     #define MTOUCH_SELECT_SENSOR12          __paste4(MTOUCH_AD_, MTOUCH_SENSOR12)
02377     #define MTOUCH_SELECT_SENSOR13          __paste4(MTOUCH_AD_, MTOUCH_SENSOR13)
02378     #define MTOUCH_SELECT_SENSOR14          __paste4(MTOUCH_AD_, MTOUCH_SENSOR14)
02379     #define MTOUCH_SELECT_SENSOR15          __paste4(MTOUCH_AD_, MTOUCH_SENSOR15)
02380     #define MTOUCH_SELECT_SENSOR16          __paste4(MTOUCH_AD_, MTOUCH_SENSOR16)
02381     #define MTOUCH_SELECT_SENSOR17          __paste4(MTOUCH_AD_, MTOUCH_SENSOR17)
02382     #define MTOUCH_SELECT_SENSOR18          __paste4(MTOUCH_AD_, MTOUCH_SENSOR18)
02383     #define MTOUCH_SELECT_SENSOR19          __paste4(MTOUCH_AD_, MTOUCH_SENSOR19)
02384     #define MTOUCH_SELECT_SENSOR20          __paste4(MTOUCH_AD_, MTOUCH_SENSOR20)
02385     #define MTOUCH_SELECT_SENSOR21          __paste4(MTOUCH_AD_, MTOUCH_SENSOR21)
02386     #define MTOUCH_SELECT_SENSOR22          __paste4(MTOUCH_AD_, MTOUCH_SENSOR22)
02387     #define MTOUCH_SELECT_SENSOR23          __paste4(MTOUCH_AD_, MTOUCH_SENSOR23)
02388     #define MTOUCH_SELECT_SENSOR24          __paste4(MTOUCH_AD_, MTOUCH_SENSOR24)
02389     #define MTOUCH_SELECT_SENSOR25          __paste4(MTOUCH_AD_, MTOUCH_SENSOR25)
02390     #define MTOUCH_SELECT_SENSOR26          __paste4(MTOUCH_AD_, MTOUCH_SENSOR26)
02391     #define MTOUCH_SELECT_SENSOR27          __paste4(MTOUCH_AD_, MTOUCH_SENSOR27)
02392     #define MTOUCH_SELECT_SENSOR28          __paste4(MTOUCH_AD_, MTOUCH_SENSOR28)
02393     #define MTOUCH_SELECT_SENSOR29          __paste4(MTOUCH_AD_, MTOUCH_SENSOR29)
02394     #define MTOUCH_SELECT_FVR_AND_GO        __paste4(MTOUCH_AD_, FVR_AND_GO)
02395     #define MTOUCH_SELECT_DAC_AND_GO        __paste4(MTOUCH_AD_, DAC_AND_GO)
02396     #define MTOUCH_SELECT_DAC_NOGO          __paste4(MTOUCH_AD_, DAC_NOGO)
02397     #define MTOUCH_SELECT_ISO_AND_GO        __paste4(MTOUCH_AD_, ISO_AND_GO) 
02398     #define MTOUCH_SELECT_ISO_NOGO          __paste4(MTOUCH_AD_, ISO_NOGO) 
02399     #define MTOUCH_SELECT_REFERENCE         __paste4(MTOUCH_AD_, CVD_REFERENCE)
02400     #define MTOUCH_SELECT_SENSOR(index)     __paste3(MTOUCH_SELECT_SENSOR, index)
02401     
02402 // Include the macro library header file that corresponds to the currently selected PIC microcontroller's core.
02403 #if defined(_PIC14E)
02404     // Enhanced Mid-range
02405     #include "mTouchCVD_macroLibrary_PIC16F1.h"
02406 #elif defined(_PIC14)
02407     // Normal Mid-range
02408     #include "mTouchCVD_macroLibrary_PIC16F.h"
02409 #elif defined(_PIC18) || defined(__18CXX)
02410     // PIC18F
02411     #include "mTouchCVD_macroLibrary_PIC18F.h"
02412 #else
02413     #error The currently chosen processor core does not have a matching macroLibrary file associated with it.
02414 #endif    
02415 
02416     #if defined(MTOUCH_EEPROM_ENABLED)
02417 
02418         #define MTOUCH_pDEBOUNCE_VALUE              (((uint16_t)(MTOUCH_EEPROM_read(MTOUCH_EEPROM_pDEB_ADRH))       << 8) + MTOUCH_EEPROM_read(MTOUCH_EEPROM_pDEB_ADRL))
02419         #define MTOUCH_rDEBOUNCE_VALUE              (((uint16_t)(MTOUCH_EEPROM_read(MTOUCH_EEPROM_rDEB_ADRH))       << 8) + MTOUCH_EEPROM_read(MTOUCH_EEPROM_rDEB_ADRL))
02420         #define MTOUCH_SCALING_VALUE                MTOUCH_EEPROM_read(MTOUCH_EEPROM_SCALE_ADR)
02421         #define MTOUCH_BASELINE_WEIGHT_VALUE        MTOUCH_EEPROM_read(MTOUCH_EEPROM_BLWEIGHT_ADR)
02422         #define MTOUCH_NEGCAP_VALUE                 MTOUCH_EEPROM_read(MTOUCH_EEPROM_NEGCAP_ADR)
02423         #define MTOUCH_JITTER_VALUE                 MTOUCH_EEPROM_read(MTOUCH_EEPROM_JITTER_ADR)
02424         #define MTOUCH_SpS_VALUE                    (((uint16_t)(MTOUCH_EEPROM_read(MTOUCH_EEPROM_SpS_ADRH))        << 8) + MTOUCH_EEPROM_read(MTOUCH_EEPROM_SpS_ADRL))
02425         #define MTOUCH_pTIMEOUT_VALUE               (((uint16_t)(MTOUCH_EEPROM_read(MTOUCH_EEPROM_pTIMEOUT_ADRH))   << 8) + MTOUCH_EEPROM_read(MTOUCH_EEPROM_pTIMEOUT_ADRL))
02426         #define MTOUCH_BASELINE_RATE_VALUE          (((uint16_t)(MTOUCH_EEPROM_read(MTOUCH_EEPROM_BLRATE_ADRH))     << 8) + MTOUCH_EEPROM_read(MTOUCH_EEPROM_BLRATE_ADRL))
02427         #define MTOUCH_DECIMATION_MAX_VALUE         (((uint16_t)(MTOUCH_EEPROM_read(MTOUCH_EEPROM_DECSTEP_ADRH))    << 8) + MTOUCH_EEPROM_read(MTOUCH_EEPROM_DECSTEP_ADRL))
02428 
02429         #define mTouch_GetPressThreshold(i)         MTOUCH_EEPROM_pTHRESHOLD(i)
02430         #define mTouch_GetReleaseThreshold(i)       MTOUCH_EEPROM_rTHRESHOLD(i)
02431 
02432         
02433     #else
02434         
02435         #define mTouch_GetPressThreshold(i)         mTouch_pressThreshold[i]  
02436         #define mTouch_GetReleaseThreshold(i)       mTouch_releaseThreshold[i]  
02437         
02438         #define MTOUCH_pDEBOUNCE_VALUE              MTOUCH_DEBOUNCE_PRESS
02439         #define MTOUCH_rDEBOUNCE_VALUE              MTOUCH_DEBOUNCE_RELEASE
02440         #define MTOUCH_pTIMEOUT_VALUE               MTOUCH_BUTTON_TIMEOUT
02441         #define MTOUCH_SpS_VALUE                    MTOUCH_SAMPLES_PER_SCAN
02442         #define MTOUCH_SCALING_VALUE                MTOUCH_SCALING
02443         #define MTOUCH_BASELINE_WEIGHT_VALUE        MTOUCH_BASELINE_WEIGHT
02444         #define MTOUCH_BASELINE_RATE_VALUE          MTOUCH_BASELINE_RATE
02445         #define MTOUCH_NEGCAP_VALUE                 MTOUCH_NEGATIVE_CAPACITANCE
02446         #define MTOUCH_DECIMATION_MAX_VALUE         MTOUCH_DECIMATION_MAX_STEP
02447 
02448         
02449     #endif      // end: if !defined(MTOUCH_EEPROM_ENABLED)
02450 
02451     #if defined(MTOUCH_MATRIX_ENABLED)
02452         
02453         // Make sure everything is defined that needs to be...
02454         #if !defined(MTOUCH_MATRIX_ROW_START)       || \
02455             !defined(MTOUCH_MATRIX_ROW_END)         || \
02456             !defined(MTOUCH_MATRIX_COLUMN_START)    || \
02457             !defined(MTOUCH_MATRIX_COLUMN_END)
02458             
02459             #error You have enabled the mTouch matrix feature but have not defined all of the necessary parameters. Please make sure mTouch_config.h contains definitions for MTOUCH_MATRIX_ROW_START, MTOUCH_MATRIX_ROW_END, MTOUCH_MATRIX_COLUMN_START, and MTOUCH_MATRIX_COLUMN_END.
02460             
02461         #endif
02462 
02463         #define MTOUCH_MATRIX_ROW_COUNT         (MTOUCH_MATRIX_ROW_END-MTOUCH_MATRIX_ROW_START+1)
02464         #define MTOUCH_MATRIX_COLUMN_COUNT      (MTOUCH_MATRIX_COLUMN_END-MTOUCH_MATRIX_COLUMN_START+1)
02465         
02466         // Find the full matrix block consisting of all rows and columns.
02467         #if MTOUCH_MATRIX_ROW_START < MTOUCH_MATRIX_COLUMN_START
02468             #define MTOUCH_MATRIX_START MTOUCH_MATRIX_ROW_START
02469             #define MTOUCH_MATRIX_END   MTOUCH_MATRIX_COLUMN_END
02470             #define MTOUCH_MATRIX_ROWS_FIRST
02471             
02472             #if (MTOUCH_MATRIX_ROW_END + 1) != MTOUCH_MATRIX_COLUMN_START
02473                 #define MTOUCH_MATRIX_NOTCONTIGUOUS
02474             #endif
02475         #else
02476             #define MTOUCH_MATRIX_START MTOUCH_MATRIX_COLUMN_START
02477             #define MTOUCH_MATRIX_END   MTOUCH_MATRIX_ROW_END
02478             #define MTOUCH_MATRIX_COLUMNS_FIRST  
02479             
02480             #if (MTOUCH_MATRIX_COLUMN_END + 1) != MTOUCH_MATRIX_ROW_START
02481                 #define MTOUCH_MATRIX_NOTCONTIGUOUS
02482             #endif
02483         #endif
02484         
02485         #if defined(MTOUCH_MATRIX_NOTCONTIGUOUS)
02486             #error The mTouch matrix indexes for rows and columns are not contiguous. Please rearrange the sensor definitions in mTouch_config.h to place the row and column sensor indexes next to each other. Ex: Rows 0-1, Columns 2-3. Or Columns 0-4, Rows 5-10.
02487         #endif
02488         
02489         // Find the non-matrix sensor block
02490         #if MTOUCH_MATRIX_START == 0
02491         
02492             #if MTOUCH_MATRIX_END == (MTOUCH_NUMBER_SENSOR - 1)
02493                 #define MTOUCH_MATRIX_SENSORS_ONLY
02494             #else
02495                 #define MTOUCH_SENSOR_START MTOUCH_MATRIX_END+1
02496                 #define MTOUCH_SENSOR_END   MTOUCH_NUMBER_SENSORS-1
02497             #endif
02498         
02499             #define MTOUCH_MATRIX_DEFS_AT_START
02500         #else
02501             #define MTOUCH_SENSOR_START 0
02502             #define MTOUCH_SENSOR_END   MTOUCH_MATRIX_START-1
02503             
02504             #if (MTOUCH_MATRIX_END + 1) != MTOUCH_NUMBER_SENSORS
02505                 #error The mTouch matrix sensors implementing the rows and columns must be either the very first sensors (in terms of index) or the very last sensors. Right now, the non-matrix sensors are split on either side of the matrix sensors. Please rearrange the sensors in mTouch_config.h.
02506             #endif
02507             
02508             #define MTOUCH_MATRIX_DEFS_AT_END
02509         #endif
02510         
02511         #if !defined(MTOUCH_MOST_PRESSED_THRESHOLD)
02512             #error Please define MTOUCH_MOST_PRESSED_THRESHOLD in the mTouch_config.h file - it is required for the matrix implementation so that the rows and columns may be run through a most-pressed algorithm to avoid issues with crosstalk.
02513         #endif
02514         
02515         // Used for the result value
02516         #if MTOUCH_MATRIX_ROW_COUNT == 2
02517             #define MTOUCH_MATRIX_ROW_OFFSET    1
02518             #define MTOUCH_MATRIX_ROW_MASK      0x01
02519         #elif MTOUCH_MATRIX_ROW_COUNT < 5
02520             #define MTOUCH_MATRIX_ROW_OFFSET    2
02521             #define MTOUCH_MATRIX_ROW_MASK      0x03
02522         #elif MTOUCH_MATRIX_ROW_COUNT < 9
02523             #define MTOUCH_MATRIX_ROW_OFFSET    3
02524             #define MTOUCH_MATRIX_ROW_MASK      0x07
02525         #elif MTOUCH_MATRIX_ROW_COUNT < 17
02526             #define MTOUCH_MATRIX_ROW_OFFSET    4
02527             #define MTOUCH_MATRIX_ROW_MASK      0x0F
02528         #else
02529             #error The mTouch Framework's matrix output logic does not currently support more than 16 rows or columns.    
02530         #endif
02531     #else
02532     
02533         // If no matrix is being implemented...
02534         #define MTOUCH_SENSOR_START 0
02535         #define MTOUCH_SENSOR_END   MTOUCH_NUMBER_SENSORS-1
02536         
02537     #endif
02538     
02539     #if   (PIC_ADC_BITS ==  8)
02540         #define MTOUCH_ADC_INIT()       PIC_ADC_SETCLK();
02541     #elif (PIC_ADC_BITS == 10)
02542         #define MTOUCH_ADC_INIT()       PIC_ADC_SETCLK();   PIC_ADC_ADFM = PIC_ADC_ADFM_RIGHT;
02543     #elif (PIC_ADC_BITS == 12)
02544         #define MTOUCH_ADC_INIT()       PIC_ADC_SETCLK();   PIC_ADC_ADFM = PIC_ADC_ADFM_RIGHT;
02545     #endif
02546 
02547     #if (MTOUCH_NUMBER_SENSORS <= 8)
02548     #define MTOUCH_STATEMASK_BYTES  1
02549     #elif (MTOUCH_NUMBER_SENSORS <= 16)
02550     #define MTOUCH_STATEMASK_BYTES  2
02551     #elif (MTOUCH_NUMBER_SENSORS <= 24)
02552     #define MTOUCH_STATEMASK_BYTES  3
02553     #elif (MTOUCH_NUMBER_SENSORS <= 32)
02554     #define MTOUCH_STATEMASK_BYTES  4
02555     #endif
02556     
02557     #if defined(MTOUCH_SLIDERS_ENABLED) || defined(MTOUCH_MOST_PRESSED_ONLY) || defined(MTOUCH_MATRIX_ENABLED)
02558         #define MTOUCH_REQUIRES_DELTA_ARRAY
02559     #endif
02560     
02561     #if MTOUCH_NUMBER_PROXIMITY > 0
02562         #define MTOUCH_PROXIMITY_ENABLED
02563     #endif
02564 
02565     #define MTOUCH_STATEMACHINE_0       &mTouch_ButtonStateMachine
02566     #define MTOUCH_STATEMACHINE_1       , &mTouch_ButtonStateMachine
02567     #define MTOUCH_STATEMACHINE_2       , &mTouch_ButtonStateMachine
02568     #define MTOUCH_STATEMACHINE_3       , &mTouch_ButtonStateMachine
02569     #define MTOUCH_STATEMACHINE_4       , &mTouch_ButtonStateMachine
02570     #define MTOUCH_STATEMACHINE_5       , &mTouch_ButtonStateMachine
02571     #define MTOUCH_STATEMACHINE_6       , &mTouch_ButtonStateMachine
02572     #define MTOUCH_STATEMACHINE_7       , &mTouch_ButtonStateMachine
02573     #define MTOUCH_STATEMACHINE_8       , &mTouch_ButtonStateMachine
02574     #define MTOUCH_STATEMACHINE_9       , &mTouch_ButtonStateMachine
02575     #define MTOUCH_STATEMACHINE_10      , &mTouch_ButtonStateMachine
02576     #define MTOUCH_STATEMACHINE_11      , &mTouch_ButtonStateMachine
02577     #define MTOUCH_STATEMACHINE_12      , &mTouch_ButtonStateMachine
02578     #define MTOUCH_STATEMACHINE_13      , &mTouch_ButtonStateMachine
02579     #define MTOUCH_STATEMACHINE_14      , &mTouch_ButtonStateMachine
02580     #define MTOUCH_STATEMACHINE_15      , &mTouch_ButtonStateMachine
02581     #define MTOUCH_STATEMACHINE_16      , &mTouch_ButtonStateMachine
02582     #define MTOUCH_STATEMACHINE_17      , &mTouch_ButtonStateMachine
02583     #define MTOUCH_STATEMACHINE_18      , &mTouch_ButtonStateMachine
02584     #define MTOUCH_STATEMACHINE_19      , &mTouch_ButtonStateMachine
02585     #define MTOUCH_STATEMACHINE_20      , &mTouch_ButtonStateMachine
02586     #define MTOUCH_STATEMACHINE_21      , &mTouch_ButtonStateMachine
02587     #define MTOUCH_STATEMACHINE_22      , &mTouch_ButtonStateMachine
02588     #define MTOUCH_STATEMACHINE_23      , &mTouch_ButtonStateMachine
02589     #define MTOUCH_STATEMACHINE_24      , &mTouch_ButtonStateMachine
02590     #define MTOUCH_STATEMACHINE_25      , &mTouch_ButtonStateMachine
02591     #define MTOUCH_STATEMACHINE_26      , &mTouch_ButtonStateMachine
02592     #define MTOUCH_STATEMACHINE_27      , &mTouch_ButtonStateMachine
02593     #define MTOUCH_STATEMACHINE_28      , &mTouch_ButtonStateMachine
02594     #define MTOUCH_STATEMACHINE_29      , &mTouch_ButtonStateMachine
02595     
02596     #define MTOUCH_SENSOR0_PROXINDEX    MTOUCH_NUMBER_SENSORS
02597     #define MTOUCH_SENSOR1_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02598     #define MTOUCH_SENSOR2_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02599     #define MTOUCH_SENSOR3_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02600     #define MTOUCH_SENSOR4_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02601     #define MTOUCH_SENSOR5_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02602     #define MTOUCH_SENSOR6_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02603     #define MTOUCH_SENSOR7_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02604     #define MTOUCH_SENSOR8_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02605     #define MTOUCH_SENSOR9_PROXINDEX    , MTOUCH_NUMBER_SENSORS
02606     #define MTOUCH_SENSOR10_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02607     #define MTOUCH_SENSOR11_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02608     #define MTOUCH_SENSOR12_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02609     #define MTOUCH_SENSOR13_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02610     #define MTOUCH_SENSOR14_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02611     #define MTOUCH_SENSOR15_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02612     #define MTOUCH_SENSOR16_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02613     #define MTOUCH_SENSOR17_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02614     #define MTOUCH_SENSOR18_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02615     #define MTOUCH_SENSOR19_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02616     #define MTOUCH_SENSOR20_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02617     #define MTOUCH_SENSOR21_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02618     #define MTOUCH_SENSOR22_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02619     #define MTOUCH_SENSOR23_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02620     #define MTOUCH_SENSOR24_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02621     #define MTOUCH_SENSOR25_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02622     #define MTOUCH_SENSOR26_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02623     #define MTOUCH_SENSOR27_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02624     #define MTOUCH_SENSOR28_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02625     #define MTOUCH_SENSOR29_PROXINDEX   , MTOUCH_NUMBER_SENSORS
02626     
02627     #if MTOUCH_NUMBER_SENSORS > 0
02628     #if defined(MTOUCH_SENSOR0_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02629         #undef  MTOUCH_STATEMACHINE_0
02630         #undef  MTOUCH_SENSOR0_PROXINDEX
02631         #define MTOUCH_STATEMACHINE_0       &mTouch_ProxStateMachine        
02632         #define MTOUCH_SENSOR0_PROXINDEX    MTOUCH_SENSOR0_IS_PROX    
02633     #endif
02634     #else
02635         #undef  MTOUCH_SENSOR0_PROXINDEX
02636         #define MTOUCH_SENSOR0_PROXINDEX
02637         #undef  MTOUCH_STATEMACHINE_0
02638         #define MTOUCH_STATEMACHINE_0
02639     #endif
02640     #if MTOUCH_NUMBER_SENSORS > 1
02641     #if defined(MTOUCH_SENSOR1_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02642         #undef  MTOUCH_STATEMACHINE_1
02643         #undef  MTOUCH_SENSOR1_PROXINDEX
02644         #define MTOUCH_STATEMACHINE_1       , &mTouch_ProxStateMachine        
02645         #define MTOUCH_SENSOR1_PROXINDEX    , MTOUCH_SENSOR1_IS_PROX    
02646     #endif
02647     #else
02648         #undef  MTOUCH_SENSOR1_PROXINDEX
02649         #define MTOUCH_SENSOR1_PROXINDEX
02650         #undef  MTOUCH_STATEMACHINE_1
02651         #define MTOUCH_STATEMACHINE_1
02652     #endif
02653     #if MTOUCH_NUMBER_SENSORS > 2
02654     #if defined(MTOUCH_SENSOR2_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02655         #undef  MTOUCH_STATEMACHINE_2
02656         #undef  MTOUCH_SENSOR2_PROXINDEX
02657         #define MTOUCH_STATEMACHINE_2       , &mTouch_ProxStateMachine        
02658         #define MTOUCH_SENSOR2_PROXINDEX    , MTOUCH_SENSOR2_IS_PROX    
02659     #endif
02660     #else
02661         #undef  MTOUCH_SENSOR2_PROXINDEX
02662         #define MTOUCH_SENSOR2_PROXINDEX
02663         #undef  MTOUCH_STATEMACHINE_2
02664         #define MTOUCH_STATEMACHINE_2
02665     #endif
02666     #if MTOUCH_NUMBER_SENSORS > 3
02667     #if defined(MTOUCH_SENSOR3_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02668         #undef  MTOUCH_STATEMACHINE_3
02669         #undef  MTOUCH_SENSOR3_PROXINDEX
02670         #define MTOUCH_STATEMACHINE_3       , &mTouch_ProxStateMachine       
02671         #define MTOUCH_SENSOR3_PROXINDEX    , MTOUCH_SENSOR3_IS_PROX   
02672     #endif
02673     #else
02674         #undef  MTOUCH_SENSOR3_PROXINDEX
02675         #define MTOUCH_SENSOR3_PROXINDEX
02676         #undef  MTOUCH_STATEMACHINE_3
02677         #define MTOUCH_STATEMACHINE_3
02678     #endif
02679     #if MTOUCH_NUMBER_SENSORS > 4
02680     #if defined(MTOUCH_SENSOR4_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02681         #undef  MTOUCH_STATEMACHINE_4
02682         #undef  MTOUCH_SENSOR4_PROXINDEX
02683         #define MTOUCH_STATEMACHINE_4       , &mTouch_ProxStateMachine        
02684         #define MTOUCH_SENSOR4_PROXINDEX    , MTOUCH_SENSOR4_IS_PROX    
02685     #endif
02686     #else
02687         #undef  MTOUCH_SENSOR4_PROXINDEX
02688         #define MTOUCH_SENSOR4_PROXINDEX
02689         #undef  MTOUCH_STATEMACHINE_4
02690         #define MTOUCH_STATEMACHINE_4
02691     #endif
02692     #if MTOUCH_NUMBER_SENSORS > 5
02693     #if defined(MTOUCH_SENSOR5_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02694         #undef  MTOUCH_STATEMACHINE_5
02695         #undef  MTOUCH_SENSOR5_PROXINDEX
02696         #define MTOUCH_STATEMACHINE_5       , &mTouch_ProxStateMachine        
02697         #define MTOUCH_SENSOR5_PROXINDEX    , MTOUCH_SENSOR5_IS_PROX    
02698     #endif
02699     #else
02700         #undef  MTOUCH_SENSOR5_PROXINDEX
02701         #define MTOUCH_SENSOR5_PROXINDEX
02702         #undef  MTOUCH_STATEMACHINE_5
02703         #define MTOUCH_STATEMACHINE_5
02704     #endif
02705     #if MTOUCH_NUMBER_SENSORS > 6
02706     #if defined(MTOUCH_SENSOR6_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02707         #undef  MTOUCH_STATEMACHINE_6
02708         #undef  MTOUCH_SENSOR6_PROXINDEX
02709         #define MTOUCH_STATEMACHINE_6       , &mTouch_ProxStateMachine        
02710         #define MTOUCH_SENSOR6_PROXINDEX    , MTOUCH_SENSOR6_IS_PROX    
02711     #endif
02712     #else
02713         #undef  MTOUCH_SENSOR6_PROXINDEX
02714         #define MTOUCH_SENSOR6_PROXINDEX
02715         #undef  MTOUCH_STATEMACHINE_6
02716         #define MTOUCH_STATEMACHINE_6
02717     #endif
02718     #if MTOUCH_NUMBER_SENSORS > 7
02719     #if defined(MTOUCH_SENSOR7_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02720         #undef  MTOUCH_STATEMACHINE_7
02721         #undef  MTOUCH_SENSOR7_PROXINDEX
02722         #define MTOUCH_STATEMACHINE_7       , &mTouch_ProxStateMachine       
02723         #define MTOUCH_SENSOR7_PROXINDEX    , MTOUCH_SENSOR7_IS_PROX    
02724     #endif
02725     #else
02726         #undef  MTOUCH_SENSOR7_PROXINDEX
02727         #define MTOUCH_SENSOR7_PROXINDEX
02728         #undef  MTOUCH_STATEMACHINE_7
02729         #define MTOUCH_STATEMACHINE_7
02730     #endif
02731     #if MTOUCH_NUMBER_SENSORS > 8
02732     #if defined(MTOUCH_SENSOR8_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02733         #undef  MTOUCH_STATEMACHINE_8
02734         #undef  MTOUCH_SENSOR8_PROXINDEX
02735         #define MTOUCH_STATEMACHINE_8       , &mTouch_ProxStateMachine       
02736         #define MTOUCH_SENSOR8_PROXINDEX    , MTOUCH_SENSOR8_IS_PROX    
02737     #endif
02738     #else
02739         #undef  MTOUCH_SENSOR8_PROXINDEX
02740         #define MTOUCH_SENSOR8_PROXINDEX
02741         #undef  MTOUCH_STATEMACHINE_8
02742         #define MTOUCH_STATEMACHINE_8
02743     #endif
02744     #if MTOUCH_NUMBER_SENSORS > 9
02745     #if defined(MTOUCH_SENSOR9_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02746         #undef  MTOUCH_STATEMACHINE_9
02747         #undef  MTOUCH_SENSOR9_PROXINDEX
02748         #define MTOUCH_STATEMACHINE_9       , &mTouch_ProxStateMachine          
02749         #define MTOUCH_SENSOR9_PROXINDEX    , MTOUCH_SENSOR9_IS_PROX    
02750     #endif
02751     #else
02752         #undef  MTOUCH_SENSOR9_PROXINDEX
02753         #define MTOUCH_SENSOR9_PROXINDEX
02754         #undef  MTOUCH_STATEMACHINE_9
02755         #define MTOUCH_STATEMACHINE_9
02756     #endif
02757     #if MTOUCH_NUMBER_SENSORS > 10
02758     #if defined(MTOUCH_SENSOR10_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02759         #undef  MTOUCH_STATEMACHINE_10
02760         #undef  MTOUCH_SENSOR10_PROXINDEX
02761         #define MTOUCH_STATEMACHINE_10       , &mTouch_ProxStateMachine        
02762         #define MTOUCH_SENSOR10_PROXINDEX    , MTOUCH_SENSOR10_IS_PROX    
02763     #endif
02764     #else
02765         #undef  MTOUCH_SENSOR10_PROXINDEX
02766         #define MTOUCH_SENSOR10_PROXINDEX
02767         #undef  MTOUCH_STATEMACHINE_10
02768         #define MTOUCH_STATEMACHINE_10
02769     #endif
02770     #if MTOUCH_NUMBER_SENSORS > 11
02771     #if defined(MTOUCH_SENSOR11_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02772         #undef  MTOUCH_STATEMACHINE_11
02773         #undef  MTOUCH_SENSOR11_PROXINDEX
02774         #define MTOUCH_STATEMACHINE_11       , &mTouch_ProxStateMachine        
02775         #define MTOUCH_SENSOR11_PROXINDEX    , MTOUCH_SENSOR11_IS_PROX    
02776     #endif
02777     #else
02778         #undef  MTOUCH_SENSOR11_PROXINDEX
02779         #define MTOUCH_SENSOR11_PROXINDEX
02780         #undef  MTOUCH_STATEMACHINE_11
02781         #define MTOUCH_STATEMACHINE_11
02782     #endif
02783     #if MTOUCH_NUMBER_SENSORS > 12
02784     #if defined(MTOUCH_SENSOR12_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02785         #undef  MTOUCH_STATEMACHINE_12
02786         #undef  MTOUCH_SENSOR12_PROXINDEX
02787         #define MTOUCH_STATEMACHINE_12       , &mTouch_ProxStateMachine        
02788         #define MTOUCH_SENSOR12_PROXINDEX    , MTOUCH_SENSOR12_IS_PROX    
02789     #endif
02790     #else
02791         #undef  MTOUCH_SENSOR12_PROXINDEX
02792         #define MTOUCH_SENSOR12_PROXINDEX
02793         #undef  MTOUCH_STATEMACHINE_12
02794         #define MTOUCH_STATEMACHINE_12
02795     #endif
02796     #if MTOUCH_NUMBER_SENSORS > 13
02797     #if defined(MTOUCH_SENSOR13_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02798         #undef  MTOUCH_STATEMACHINE_13
02799         #undef  MTOUCH_SENSOR13_PROXINDEX
02800         #define MTOUCH_STATEMACHINE_13       , &mTouch_ProxStateMachine        
02801         #define MTOUCH_SENSOR13_PROXINDEX    , MTOUCH_SENSOR13_IS_PROX    
02802     #endif
02803     #else
02804         #undef  MTOUCH_SENSOR13_PROXINDEX
02805         #define MTOUCH_SENSOR13_PROXINDEX
02806         #undef  MTOUCH_STATEMACHINE_13
02807         #define MTOUCH_STATEMACHINE_13
02808     #endif
02809     #if MTOUCH_NUMBER_SENSORS > 14
02810     #if defined(MTOUCH_SENSOR14_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02811         #undef  MTOUCH_STATEMACHINE_14
02812         #undef  MTOUCH_SENSOR14_PROXINDEX
02813         #define MTOUCH_STATEMACHINE_14       , &mTouch_ProxStateMachine        
02814         #define MTOUCH_SENSOR14_PROXINDEX    , MTOUCH_SENSOR14_IS_PROX    
02815     #endif
02816     #else
02817         #undef  MTOUCH_SENSOR14_PROXINDEX
02818         #define MTOUCH_SENSOR14_PROXINDEX
02819         #undef  MTOUCH_STATEMACHINE_14
02820         #define MTOUCH_STATEMACHINE_14
02821     #endif
02822     #if MTOUCH_NUMBER_SENSORS > 15
02823     #if defined(MTOUCH_SENSOR15_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02824         #undef  MTOUCH_STATEMACHINE_15
02825         #undef  MTOUCH_SENSOR15_PROXINDEX
02826         #define MTOUCH_STATEMACHINE_15       , &mTouch_ProxStateMachine        
02827         #define MTOUCH_SENSOR15_PROXINDEX    , MTOUCH_SENSOR15_IS_PROX    
02828     #endif
02829     #else
02830         #undef  MTOUCH_SENSOR15_PROXINDEX
02831         #define MTOUCH_SENSOR15_PROXINDEX
02832         #undef  MTOUCH_STATEMACHINE_15
02833         #define MTOUCH_STATEMACHINE_15
02834     #endif
02835     #if MTOUCH_NUMBER_SENSORS > 16
02836     #if defined(MTOUCH_SENSOR16_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02837         #undef  MTOUCH_STATEMACHINE_16
02838         #undef  MTOUCH_SENSOR16_PROXINDEX
02839         #define MTOUCH_STATEMACHINE_16       , &mTouch_ProxStateMachine        
02840         #define MTOUCH_SENSOR16_PROXINDEX    , MTOUCH_SENSOR16_IS_PROX    
02841     #endif
02842     #else
02843         #undef  MTOUCH_SENSOR16_PROXINDEX
02844         #define MTOUCH_SENSOR16_PROXINDEX
02845         #undef  MTOUCH_STATEMACHINE_16
02846         #define MTOUCH_STATEMACHINE_16
02847     #endif
02848     #if MTOUCH_NUMBER_SENSORS > 17
02849     #if defined(MTOUCH_SENSOR17_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02850         #undef  MTOUCH_STATEMACHINE_17
02851         #undef  MTOUCH_SENSOR17_PROXINDEX
02852         #define MTOUCH_STATEMACHINE_17       , &mTouch_ProxStateMachine        
02853         #define MTOUCH_SENSOR17_PROXINDEX    , MTOUCH_SENSOR17_IS_PROX    
02854     #endif
02855     #else
02856         #undef  MTOUCH_SENSOR17_PROXINDEX
02857         #define MTOUCH_SENSOR17_PROXINDEX
02858         #undef  MTOUCH_STATEMACHINE_17
02859         #define MTOUCH_STATEMACHINE_17
02860     #endif
02861     #if MTOUCH_NUMBER_SENSORS > 18
02862     #if defined(MTOUCH_SENSOR18_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02863         #undef  MTOUCH_STATEMACHINE_18
02864         #undef  MTOUCH_SENSOR18_PROXINDEX
02865         #define MTOUCH_STATEMACHINE_18       , &mTouch_ProxStateMachine        
02866         #define MTOUCH_SENSOR18_PROXINDEX    , MTOUCH_SENSOR18_IS_PROX    
02867     #endif
02868     #else
02869         #undef  MTOUCH_SENSOR18_PROXINDEX
02870         #define MTOUCH_SENSOR18_PROXINDEX
02871         #undef  MTOUCH_STATEMACHINE_18
02872         #define MTOUCH_STATEMACHINE_18
02873     #endif
02874     #if MTOUCH_NUMBER_SENSORS > 19
02875     #if defined(MTOUCH_SENSOR19_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02876         #undef  MTOUCH_STATEMACHINE_19
02877         #undef  MTOUCH_SENSOR19_PROXINDEX
02878         #define MTOUCH_STATEMACHINE_19       , &mTouch_ProxStateMachine        
02879         #define MTOUCH_SENSOR19_PROXINDEX    , MTOUCH_SENSOR19_IS_PROX    
02880     #endif
02881     #else
02882         #undef  MTOUCH_SENSOR19_PROXINDEX
02883         #define MTOUCH_SENSOR19_PROXINDEX
02884         #undef  MTOUCH_STATEMACHINE_19
02885         #define MTOUCH_STATEMACHINE_19
02886     #endif
02887     #if MTOUCH_NUMBER_SENSORS > 20
02888     #if defined(MTOUCH_SENSOR20_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02889         #undef  MTOUCH_STATEMACHINE_20
02890         #undef  MTOUCH_SENSOR20_PROXINDEX
02891         #define MTOUCH_STATEMACHINE_20       , &mTouch_ProxStateMachine       
02892         #define MTOUCH_SENSOR20_PROXINDEX    , MTOUCH_SENSOR20_IS_PROX    
02893     #endif
02894     #else
02895         #undef  MTOUCH_SENSOR20_PROXINDEX
02896         #define MTOUCH_SENSOR20_PROXINDEX
02897         #undef  MTOUCH_STATEMACHINE_20
02898         #define MTOUCH_STATEMACHINE_20
02899     #endif
02900     #if MTOUCH_NUMBER_SENSORS > 21
02901     #if defined(MTOUCH_SENSOR21_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02902         #undef  MTOUCH_STATEMACHINE_21
02903         #undef  MTOUCH_SENSOR21_PROXINDEX
02904         #define MTOUCH_STATEMACHINE_21       , &mTouch_ProxStateMachine        
02905         #define MTOUCH_SENSOR21_PROXINDEX    , MTOUCH_SENSOR21_IS_PROX    
02906     #endif
02907     #else
02908         #undef  MTOUCH_SENSOR21_PROXINDEX
02909         #define MTOUCH_SENSOR21_PROXINDEX
02910         #undef  MTOUCH_STATEMACHINE_21
02911         #define MTOUCH_STATEMACHINE_21
02912     #endif
02913     #if MTOUCH_NUMBER_SENSORS > 22
02914     #if defined(MTOUCH_SENSOR22_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02915         #undef  MTOUCH_STATEMACHINE_22
02916         #undef  MTOUCH_SENSOR22_PROXINDEX
02917         #define MTOUCH_STATEMACHINE_22       , &mTouch_ProxStateMachine        
02918         #define MTOUCH_SENSOR22_PROXINDEX    , MTOUCH_SENSOR22_IS_PROX    
02919     #endif
02920     #else
02921         #undef  MTOUCH_SENSOR22_PROXINDEX
02922         #define MTOUCH_SENSOR22_PROXINDEX
02923         #undef  MTOUCH_STATEMACHINE_22
02924         #define MTOUCH_STATEMACHINE_22
02925     #endif
02926     #if MTOUCH_NUMBER_SENSORS > 23
02927     #if defined(MTOUCH_SENSOR23_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02928         #undef  MTOUCH_STATEMACHINE_23
02929         #undef  MTOUCH_SENSOR23_PROXINDEX
02930         #define MTOUCH_STATEMACHINE_23       , &mTouch_ProxStateMachine        
02931         #define MTOUCH_SENSOR23_PROXINDEX    , MTOUCH_SENSOR23_IS_PROX    
02932     #endif
02933     #else
02934         #undef  MTOUCH_SENSOR23_PROXINDEX
02935         #define MTOUCH_SENSOR23_PROXINDEX
02936         #undef  MTOUCH_STATEMACHINE_23
02937         #define MTOUCH_STATEMACHINE_23
02938     #endif
02939     #if MTOUCH_NUMBER_SENSORS > 24
02940     #if defined(MTOUCH_SENSOR24_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02941         #undef  MTOUCH_STATEMACHINE_24
02942         #undef  MTOUCH_SENSOR24_PROXINDEX
02943         #define MTOUCH_STATEMACHINE_24       , &mTouch_ProxStateMachine        
02944         #define MTOUCH_SENSOR24_PROXINDEX    , MTOUCH_SENSOR24_IS_PROX    
02945     #endif
02946     #else
02947         #undef  MTOUCH_SENSOR24_PROXINDEX
02948         #define MTOUCH_SENSOR24_PROXINDEX
02949         #undef  MTOUCH_STATEMACHINE_24
02950         #define MTOUCH_STATEMACHINE_24
02951     #endif
02952     #if MTOUCH_NUMBER_SENSORS > 25
02953     #if defined(MTOUCH_SENSOR25_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02954         #undef  MTOUCH_STATEMACHINE_25
02955         #undef  MTOUCH_SENSOR25_PROXINDEX
02956         #define MTOUCH_STATEMACHINE_25       , &mTouch_ProxStateMachine        
02957         #define MTOUCH_SENSOR25_PROXINDEX    , MTOUCH_SENSOR25_IS_PROX    
02958     #endif
02959     #else
02960         #undef  MTOUCH_SENSOR25_PROXINDEX
02961         #define MTOUCH_SENSOR25_PROXINDEX
02962         #undef  MTOUCH_STATEMACHINE_25
02963         #define MTOUCH_STATEMACHINE_25
02964     #endif
02965     #if MTOUCH_NUMBER_SENSORS > 26
02966     #if defined(MTOUCH_SENSOR26_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02967         #undef  MTOUCH_STATEMACHINE_26
02968         #undef  MTOUCH_SENSOR26_PROXINDEX
02969         #define MTOUCH_STATEMACHINE_26       , &mTouch_ProxStateMachine         
02970         #define MTOUCH_SENSOR26_PROXINDEX    , MTOUCH_SENSOR26_IS_PROX    
02971     #endif
02972     #else
02973         #undef  MTOUCH_SENSOR26_PROXINDEX
02974         #define MTOUCH_SENSOR26_PROXINDEX
02975         #undef  MTOUCH_STATEMACHINE_26
02976         #define MTOUCH_STATEMACHINE_26
02977     #endif
02978     #if MTOUCH_NUMBER_SENSORS > 27
02979     #if defined(MTOUCH_SENSOR27_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02980         #undef  MTOUCH_STATEMACHINE_27
02981         #undef  MTOUCH_SENSOR27_PROXINDEX
02982         #define MTOUCH_STATEMACHINE_27       , &mTouch_ProxStateMachine         
02983         #define MTOUCH_SENSOR27_PROXINDEX    , MTOUCH_SENSOR27_IS_PROX    
02984     #endif
02985     #else
02986         #undef  MTOUCH_SENSOR27_PROXINDEX
02987         #define MTOUCH_SENSOR27_PROXINDEX
02988         #undef  MTOUCH_STATEMACHINE_27
02989         #define MTOUCH_STATEMACHINE_27
02990     #endif
02991     #if MTOUCH_NUMBER_SENSORS > 28
02992     #if defined(MTOUCH_SENSOR28_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
02993         #undef  MTOUCH_STATEMACHINE_28
02994         #undef  MTOUCH_SENSOR28_PROXINDEX
02995         #define MTOUCH_STATEMACHINE_28       , &mTouch_ProxStateMachine       
02996         #define MTOUCH_SENSOR28_PROXINDEX    , MTOUCH_SENSOR28_IS_PROX    
02997     #endif
02998     #else
02999         #undef  MTOUCH_SENSOR28_PROXINDEX
03000         #define MTOUCH_SENSOR28_PROXINDEX
03001         #undef  MTOUCH_STATEMACHINE_28
03002         #define MTOUCH_STATEMACHINE_28
03003     #endif
03004     #if MTOUCH_NUMBER_SENSORS > 29
03005     #if defined(MTOUCH_SENSOR29_IS_PROX) && defined(MTOUCH_PROXIMITY_ENABLED)
03006         #undef  MTOUCH_STATEMACHINE_29
03007         #undef  MTOUCH_SENSOR29_PROXINDEX
03008         #define MTOUCH_STATEMACHINE_29       , &mTouch_ProxStateMachine        
03009         #define MTOUCH_SENSOR29_PROXINDEX    , MTOUCH_SENSOR29_IS_PROX    
03010     #endif
03011     #else
03012         #undef  MTOUCH_SENSOR29_PROXINDEX
03013         #define MTOUCH_SENSOR29_PROXINDEX
03014         #undef  MTOUCH_STATEMACHINE_29       
03015         #define MTOUCH_STATEMACHINE_29       
03016     #endif
03017 
03018 
03019     
03020     #if defined(MTOUCH_EEPROM_ENABLED)
03021         #define MTOUCH_CONFIG_EEPROM    0x01
03022     #else
03023         #define MTOUCH_CONFIG_EEPROM    0x00
03024     #endif
03025 
03026     #define MTOUCH_CVD_OR_CTMU      0x00
03027 
03028     #if defined(MTOUCH_EEPROM_STORED_IN_RAM)
03029         #define MTOUCH_CONFIG_EERAMSTORAGE  0x80
03030     #else
03031         #define MTOUCH_CONFIG_EERAMSTORAGE  0x00
03032     #endif
03033     
03034     #define MTOUCH_CONFIGURATION_BYTE   (MTOUCH_CVD_OR_CTMU | MTOUCH_CONFIG_EEPROM | MTOUCH_CONFIG_EERAMSTORAGE)
03035     
03036     
03037 #endif
03038 

mTouch Framework v2.1 documentation by  Click here to visit our website at www.microchip.com