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

mTouch_eeprom.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_eeprom.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  *************************************************************************/
00062 #ifndef __MTOUCH_EEPROM_H
00063 #define __MTOUCH_EEPROM_H
00064 
00065     #if (_EEPROMSIZE == 0) && !defined(MTOUCH_EEPROM_STORED_IN_RAM)
00066         #error The mTouch Framework's EEPROM implementation has been enabled, but the selected part does not contain an EEPROM! Please choose another processor or comment-out MTOUCH_EEPROM_ENABLED in mTouch_config.h
00067     #endif
00068 
00069     #if defined(MTOUCH_EEPROM_STORED_IN_RAM)
00070         #define MTOUCH_EEPROM_read(addr)            mTouch_configOptions[addr]
00071         #define MTOUCH_EEPROM_write(addr, value)    mTouch_configOptions[addr] = value
00072     #else
00073     #if defined(_PIC18) | defined(_PIC14)
00074         #define MTOUCH_EEPROM_read(addr)            EEPROM_READ(addr)
00075         #define MTOUCH_EEPROM_write(addr, value)    EEPROM_WRITE(addr, value)
00076     #else
00077         #define MTOUCH_EEPROM_read(addr)            eeprom_read(addr)
00078         #define MTOUCH_EEPROM_write(addr, value)    eeprom_write(addr, value)
00079     #endif
00080     #endif
00081 
00082     #if defined(MTOUCH_EEPROM_ENABLED)
00083     void mTouch_EEPROM_Init(void);
00084     void mTouch_EEPROM_Reset(void);
00085     #endif
00086 
00087     //
00088     // MTOUCH EEPROM MAPPING
00089     //
00090     
00091     // Block sizes
00092     #define   MTOUCH_EEPROM_SYS_SIZE    15
00093     #define   MTOUCH_EEPROM_SENS_SIZE   4
00094     #define   MTOUCH_EEPROM_SIZE        MTOUCH_EEPROM_SYS_SIZE + (MTOUCH_EEPROM_SENS_SIZE * MTOUCH_NUMBER_SENSORS)
00095     
00096     // Addresses Calculations
00097     #define   MTOUCH_EEPROM_SYS_ADR     MTOUCH_EEPROM_START_ADR
00098     #define   MTOUCH_EEPROM_SENS_ADR    MTOUCH_EEPROM_SYS_ADR   + MTOUCH_EEPROM_SYS_SIZE    
00099     
00100     // Ending Address Calculations
00101     #define   MTOUCH_EEPROM_END_ADR     MTOUCH_EEPROM_SENS_ADR  + (MTOUCH_EEPROM_SENS_SIZE * MTOUCH_NUMBER_SENSORS)
00102 
00103     
00104     //
00105     // Individual Value Address Calculations
00106     //
00107     
00108     // Noise immunity related parameters
00109     #define   MTOUCH_EEPROM_pDEB_ADRL       MTOUCH_EEPROM_START_ADR + 0
00110     #define   MTOUCH_EEPROM_pDEB_ADRH       MTOUCH_EEPROM_START_ADR + 1
00111     #define   MTOUCH_EEPROM_rDEB_ADRL       MTOUCH_EEPROM_START_ADR + 2
00112     #define   MTOUCH_EEPROM_rDEB_ADRH       MTOUCH_EEPROM_START_ADR + 3
00113     #define   MTOUCH_EEPROM_JITTER_ADR      MTOUCH_EEPROM_START_ADR + 4
00114 
00115     // Baseline related parameters
00116     #define   MTOUCH_EEPROM_BLWEIGHT_ADR    MTOUCH_EEPROM_START_ADR + 5
00117     #define   MTOUCH_EEPROM_BLRATE_ADRL     MTOUCH_EEPROM_START_ADR + 6
00118     #define   MTOUCH_EEPROM_BLRATE_ADRH     MTOUCH_EEPROM_START_ADR + 7
00119     
00120     // Touch behavior related parameters
00121     #define   MTOUCH_EEPROM_pTIMEOUT_ADRL   MTOUCH_EEPROM_START_ADR + 8 
00122     #define   MTOUCH_EEPROM_pTIMEOUT_ADRH   MTOUCH_EEPROM_START_ADR + 9 
00123     #define   MTOUCH_EEPROM_SpS_ADRL        MTOUCH_EEPROM_START_ADR + 10
00124     #define   MTOUCH_EEPROM_SpS_ADRH        MTOUCH_EEPROM_START_ADR + 11
00125     #define   MTOUCH_EEPROM_SCALE_ADR       MTOUCH_EEPROM_START_ADR + 12
00126     #define   MTOUCH_EEPROM_DECSTEP_ADRL    MTOUCH_EEPROM_START_ADR + 13
00127     #define   MTOUCH_EEPROM_DECSTEP_ADRH    MTOUCH_EEPROM_START_ADR + 14
00128     
00129     // Sensor Block
00130     #define   MTOUCH_EEPROM_pTHRESH_ADRL    MTOUCH_EEPROM_SENS_ADR
00131     #define   MTOUCH_EEPROM_pTHRESH_ADRH    MTOUCH_EEPROM_SENS_ADR + 1
00132     #define   MTOUCH_EEPROM_rTHRESH_ADRL    MTOUCH_EEPROM_SENS_ADR + 2
00133     #define   MTOUCH_EEPROM_rTHRESH_ADRH    MTOUCH_EEPROM_SENS_ADR + 3
00134     
00135     //
00136     // Generate Default EEPROM Threshold Values
00137     //
00138     
00139     #define MTOUCH_pTHRESH(index)           __paste(THRESHOLD_PRESS_SENSOR, index)
00140     #define MTOUCH_rTHRESH(index)           __paste(THRESHOLD_RELEASE_SENSOR, index)
00141     
00142     #define MTOUCH_EEPROM_THRESH(index)     ,(uint8_t)(MTOUCH_pTHRESH(index) & 0xFF),                   \
00143                                             (uint8_t)(MTOUCH_pTHRESH(index) >> 8),                      \
00144                                             (uint8_t)(MTOUCH_rTHRESH(index) & 0xFF),                    \
00145                                             (uint8_t)(MTOUCH_rTHRESH(index) >> 8)
00146                                             
00147     #define MTOUCH_EEPROM_THRESH0           MTOUCH_EEPROM_THRESH(0)
00148     #define MTOUCH_EEPROM_THRESH1           MTOUCH_EEPROM_THRESH(1)
00149     #define MTOUCH_EEPROM_THRESH2           MTOUCH_EEPROM_THRESH(2)
00150     #define MTOUCH_EEPROM_THRESH3           MTOUCH_EEPROM_THRESH(3)
00151     #define MTOUCH_EEPROM_THRESH4           MTOUCH_EEPROM_THRESH(4)
00152     #define MTOUCH_EEPROM_THRESH5           MTOUCH_EEPROM_THRESH(5)
00153     #define MTOUCH_EEPROM_THRESH6           MTOUCH_EEPROM_THRESH(6)
00154     #define MTOUCH_EEPROM_THRESH7           MTOUCH_EEPROM_THRESH(7)
00155     #define MTOUCH_EEPROM_THRESH8           MTOUCH_EEPROM_THRESH(8)
00156     #define MTOUCH_EEPROM_THRESH9           MTOUCH_EEPROM_THRESH(9)
00157     #define MTOUCH_EEPROM_THRESH10          MTOUCH_EEPROM_THRESH(10)
00158     #define MTOUCH_EEPROM_THRESH11          MTOUCH_EEPROM_THRESH(11)
00159     #define MTOUCH_EEPROM_THRESH12          MTOUCH_EEPROM_THRESH(12)
00160     #define MTOUCH_EEPROM_THRESH13          MTOUCH_EEPROM_THRESH(13)
00161     #define MTOUCH_EEPROM_THRESH14          MTOUCH_EEPROM_THRESH(14)
00162     #define MTOUCH_EEPROM_THRESH15          MTOUCH_EEPROM_THRESH(15)
00163     #define MTOUCH_EEPROM_THRESH16          MTOUCH_EEPROM_THRESH(16)
00164     #define MTOUCH_EEPROM_THRESH17          MTOUCH_EEPROM_THRESH(17)
00165     #define MTOUCH_EEPROM_THRESH18          MTOUCH_EEPROM_THRESH(18)
00166     #define MTOUCH_EEPROM_THRESH19          MTOUCH_EEPROM_THRESH(19)
00167     #define MTOUCH_EEPROM_THRESH20          MTOUCH_EEPROM_THRESH(20)
00168     #define MTOUCH_EEPROM_THRESH21          MTOUCH_EEPROM_THRESH(21)
00169     #define MTOUCH_EEPROM_THRESH22          MTOUCH_EEPROM_THRESH(22)
00170     #define MTOUCH_EEPROM_THRESH23          MTOUCH_EEPROM_THRESH(23)
00171     #define MTOUCH_EEPROM_THRESH24          MTOUCH_EEPROM_THRESH(24)
00172     #define MTOUCH_EEPROM_THRESH25          MTOUCH_EEPROM_THRESH(25)
00173     #define MTOUCH_EEPROM_THRESH26          MTOUCH_EEPROM_THRESH(26)
00174     #define MTOUCH_EEPROM_THRESH27          MTOUCH_EEPROM_THRESH(27)
00175     #define MTOUCH_EEPROM_THRESH28          MTOUCH_EEPROM_THRESH(28)
00176     #define MTOUCH_EEPROM_THRESH29          MTOUCH_EEPROM_THRESH(29)
00177     
00178     #define MTOUCH_EEPROM_THRESHOLDS        MTOUCH_EEPROM_THRESH0   \
00179                                             MTOUCH_EEPROM_THRESH1   \
00180                                             MTOUCH_EEPROM_THRESH2   \
00181                                             MTOUCH_EEPROM_THRESH3   \
00182                                             MTOUCH_EEPROM_THRESH4   \
00183                                             MTOUCH_EEPROM_THRESH5   \
00184                                             MTOUCH_EEPROM_THRESH6   \
00185                                             MTOUCH_EEPROM_THRESH7   \
00186                                             MTOUCH_EEPROM_THRESH8   \
00187                                             MTOUCH_EEPROM_THRESH9   \
00188                                             MTOUCH_EEPROM_THRESH10  \
00189                                             MTOUCH_EEPROM_THRESH11  \
00190                                             MTOUCH_EEPROM_THRESH12  \
00191                                             MTOUCH_EEPROM_THRESH13  \
00192                                             MTOUCH_EEPROM_THRESH14  \
00193                                             MTOUCH_EEPROM_THRESH15  \
00194                                             MTOUCH_EEPROM_THRESH16  \
00195                                             MTOUCH_EEPROM_THRESH17  \
00196                                             MTOUCH_EEPROM_THRESH18  \
00197                                             MTOUCH_EEPROM_THRESH19  \
00198                                             MTOUCH_EEPROM_THRESH20  \
00199                                             MTOUCH_EEPROM_THRESH21  \
00200                                             MTOUCH_EEPROM_THRESH22  \
00201                                             MTOUCH_EEPROM_THRESH23  \
00202                                             MTOUCH_EEPROM_THRESH24  \
00203                                             MTOUCH_EEPROM_THRESH25  \
00204                                             MTOUCH_EEPROM_THRESH26  \
00205                                             MTOUCH_EEPROM_THRESH27  \
00206                                             MTOUCH_EEPROM_THRESH28  \
00207                                             MTOUCH_EEPROM_THRESH29   
00208     
00209     #if MTOUCH_NUMBER_SENSORS < 30
00210         #undef  MTOUCH_EEPROM_THRESH29
00211         #define MTOUCH_EEPROM_THRESH29
00212     #endif
00213     #if MTOUCH_NUMBER_SENSORS < 29
00214         #undef  MTOUCH_EEPROM_THRESH28
00215         #define MTOUCH_EEPROM_THRESH28
00216     #endif
00217     #if MTOUCH_NUMBER_SENSORS < 28
00218         #undef  MTOUCH_EEPROM_THRESH27
00219         #define MTOUCH_EEPROM_THRESH27
00220     #endif
00221     #if MTOUCH_NUMBER_SENSORS < 27
00222         #undef  MTOUCH_EEPROM_THRESH26
00223         #define MTOUCH_EEPROM_THRESH26
00224     #endif
00225     #if MTOUCH_NUMBER_SENSORS < 26
00226         #undef  MTOUCH_EEPROM_THRESH25
00227         #define MTOUCH_EEPROM_THRESH25
00228     #endif
00229     #if MTOUCH_NUMBER_SENSORS < 25 
00230         #undef  MTOUCH_EEPROM_THRESH24
00231         #define MTOUCH_EEPROM_THRESH24
00232     #endif
00233     #if MTOUCH_NUMBER_SENSORS < 24
00234         #undef  MTOUCH_EEPROM_THRESH23
00235         #define MTOUCH_EEPROM_THRESH23
00236     #endif
00237     #if MTOUCH_NUMBER_SENSORS < 23
00238         #undef  MTOUCH_EEPROM_THRESH22
00239         #define MTOUCH_EEPROM_THRESH22
00240     #endif
00241     #if MTOUCH_NUMBER_SENSORS < 22
00242         #undef  MTOUCH_EEPROM_THRESH21
00243         #define MTOUCH_EEPROM_THRESH21
00244     #endif
00245     #if MTOUCH_NUMBER_SENSORS < 21
00246         #undef  MTOUCH_EEPROM_THRESH20
00247         #define MTOUCH_EEPROM_THRESH20
00248     #endif
00249     #if MTOUCH_NUMBER_SENSORS < 20
00250         #undef  MTOUCH_EEPROM_THRESH19
00251         #define MTOUCH_EEPROM_THRESH19 
00252     #endif
00253     #if MTOUCH_NUMBER_SENSORS < 19
00254         #undef  MTOUCH_EEPROM_THRESH18
00255         #define MTOUCH_EEPROM_THRESH18
00256     #endif
00257     #if MTOUCH_NUMBER_SENSORS < 18
00258         #undef  MTOUCH_EEPROM_THRESH17
00259         #define MTOUCH_EEPROM_THRESH17
00260     #endif
00261     #if MTOUCH_NUMBER_SENSORS < 17
00262         #undef  MTOUCH_EEPROM_THRESH16
00263         #define MTOUCH_EEPROM_THRESH16
00264     #endif
00265     #if MTOUCH_NUMBER_SENSORS < 16
00266         #undef  MTOUCH_EEPROM_THRESH15
00267         #define MTOUCH_EEPROM_THRESH15
00268     #endif
00269     #if MTOUCH_NUMBER_SENSORS < 15
00270         #undef  MTOUCH_EEPROM_THRESH14
00271         #define MTOUCH_EEPROM_THRESH14
00272     #endif
00273     #if MTOUCH_NUMBER_SENSORS < 14
00274         #undef  MTOUCH_EEPROM_THRESH13
00275         #define MTOUCH_EEPROM_THRESH13
00276     #endif
00277     #if MTOUCH_NUMBER_SENSORS < 13
00278         #undef  MTOUCH_EEPROM_THRESH12
00279         #define MTOUCH_EEPROM_THRESH12
00280     #endif
00281     #if MTOUCH_NUMBER_SENSORS < 12
00282         #undef  MTOUCH_EEPROM_THRESH11
00283         #define MTOUCH_EEPROM_THRESH11
00284     #endif
00285     #if MTOUCH_NUMBER_SENSORS < 11
00286         #undef  MTOUCH_EEPROM_THRESH10
00287         #define MTOUCH_EEPROM_THRESH10
00288     #endif
00289     #if MTOUCH_NUMBER_SENSORS < 10
00290         #undef  MTOUCH_EEPROM_THRESH9
00291         #define MTOUCH_EEPROM_THRESH9
00292     #endif
00293     #if MTOUCH_NUMBER_SENSORS < 9
00294         #undef  MTOUCH_EEPROM_THRESH8
00295         #define MTOUCH_EEPROM_THRESH8
00296     #endif
00297     #if MTOUCH_NUMBER_SENSORS < 8
00298         #undef  MTOUCH_EEPROM_THRESH7
00299         #define MTOUCH_EEPROM_THRESH7
00300     #endif
00301     #if MTOUCH_NUMBER_SENSORS < 7
00302         #undef  MTOUCH_EEPROM_THRESH6
00303         #define MTOUCH_EEPROM_THRESH6
00304     #endif
00305     #if MTOUCH_NUMBER_SENSORS < 6
00306         #undef  MTOUCH_EEPROM_THRESH5
00307         #define MTOUCH_EEPROM_THRESH5
00308     #endif
00309     #if MTOUCH_NUMBER_SENSORS < 5
00310         #undef  MTOUCH_EEPROM_THRESH4
00311         #define MTOUCH_EEPROM_THRESH4
00312     #endif
00313     #if MTOUCH_NUMBER_SENSORS < 4
00314         #undef  MTOUCH_EEPROM_THRESH3
00315         #define MTOUCH_EEPROM_THRESH3
00316     #endif
00317     #if MTOUCH_NUMBER_SENSORS < 3
00318         #undef  MTOUCH_EEPROM_THRESH2
00319         #define MTOUCH_EEPROM_THRESH2
00320     #endif
00321     #if MTOUCH_NUMBER_SENSORS < 2
00322         #undef  MTOUCH_EEPROM_THRESH1
00323         #define MTOUCH_EEPROM_THRESH1
00324     #endif
00325     
00326     
00327 
00328     #define MTOUCH_EEPROM_pTHRESHOLD(index) (uint16_t)((uint16_t)(MTOUCH_EEPROM_read(MTOUCH_EEPROM_pTHRESH_ADRH + (MTOUCH_EEPROM_SENS_SIZE*index))) << 8) + MTOUCH_EEPROM_read(MTOUCH_EEPROM_pTHRESH_ADRL + (MTOUCH_EEPROM_SENS_SIZE*index))
00329     #define MTOUCH_EEPROM_rTHRESHOLD(index) (uint16_t)((uint16_t)(MTOUCH_EEPROM_read(MTOUCH_EEPROM_rTHRESH_ADRH + (MTOUCH_EEPROM_SENS_SIZE*index))) << 8) + MTOUCH_EEPROM_read(MTOUCH_EEPROM_rTHRESH_ADRL + (MTOUCH_EEPROM_SENS_SIZE*index))
00330 
00331  
00332 
00333 #endif

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