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

mTouchCVD_HardwareProfile_16F193x.h

Go to the documentation of this file.
00001 /*************************************************************************
00002  *  © 2011 Microchip Technology Inc.                                       
00003  *  
00004  *  Project Name:    mTouch CVD Framework v1.1
00005  *  FileName:        mTouchCVD_HardwareProfile_16F193x.h
00006  *  Dependencies:    mTouchCVD.h
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 CVD Framework Hardware Profile Header File
00014  *                   - Provides information about correct SFR addresses,
00015  *                     pin assignments, module availability, and any other
00016  *                     part-specific data.
00017  *                   - See the documentation for more information.
00018  *************************************************************************/
00019  /**************************************************************************
00020  * MICROCHIP SOFTWARE NOTICE AND DISCLAIMER: You may use this software, and 
00021  * any derivatives created by any person or entity by or on your behalf, 
00022  * exclusively with Microchip's products in accordance with applicable
00023  * software license terms and conditions, a copy of which is provided for
00024  * your referencein accompanying documentation. Microchip and its licensors 
00025  * retain all ownership and intellectual property rights in the 
00026  * accompanying software and in all derivatives hereto. 
00027  * 
00028  * This software and any accompanying information is for suggestion only. 
00029  * It does not modify Microchip's standard warranty for its products. You 
00030  * agree that you are solely responsible for testing the software and 
00031  * determining its suitability. Microchip has no obligation to modify, 
00032  * test, certify, or support the software. 
00033  * 
00034  * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
00035  * EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED 
00036  * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A 
00037  * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE, ITS INTERACTION WITH 
00038  * MICROCHIP'S PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY 
00039  * APPLICATION. 
00040  * 
00041  * IN NO EVENT, WILL MICROCHIP BE LIABLE, WHETHER IN CONTRACT, WARRANTY, 
00042  * TORT (INCLUDING NEGLIGENCE OR BREACH OF STATUTORY DUTY), STRICT 
00043  * LIABILITY, INDEMNITY, CONTRIBUTION, OR OTHERWISE, FOR ANY INDIRECT, 
00044  * SPECIAL, PUNITIVE, EXEMPLARY, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, 
00045  * FOR COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, 
00046  * HOWSOEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY 
00047  * OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT ALLOWABLE BY LAW, 
00048  * MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS 
00049  * SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID 
00050  * DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. 
00051  * 
00052  * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF 
00053  * THESE TERMS. 
00054  *************************************************************************/
00058 
00059 #if !defined(__MTOUCHCVD_HARDWARE_16F193X_H)
00060 #define __MTOUCHCVD_HARDWARE_16F193X_H
00061 
00062 #if !defined(_16F1933) && !defined(_16LF1933)
00063 #if !defined(_16F1934) && !defined(_16LF1934)
00064 #if !defined(_16F1936) && !defined(_16LF1936)
00065 #if !defined(_16F1937) && !defined(_16LF1937)
00066 #if !defined(_16F1938) && !defined(_16LF1938)
00067 #if !defined(_16F1939) && !defined(_16LF1939)
00068     #error The current mTouch hardware include file does not support this PIC microcontroller.
00069 #endif
00070 #endif
00071 #endif
00072 #endif
00073 #endif
00074 #endif
00075 
00076 #if defined(_16F1933) || defined(_16LF1933)
00077     #if CVD_NUMBER_SENSORS > 11
00078         #error The PIC16F/LF1933 is not able to support more than 11 sensors due to pinout limitations.
00079     #endif
00080 #endif
00081 #if defined(_16F1936) || defined(_16LF1936)
00082     #if CVD_NUMBER_SENSORS > 11
00083         #error The PIC16F/LF1936 is not able to support more than 11 sensors due to pinout limitations.
00084     #endif
00085 #endif
00086 #if defined(_16F1938) || defined(_16LF1938)
00087     #if CVD_NUMBER_SENSORS > 11
00088         #error The PIC16F/LF1938 is not able to support more than 11 sensors due to pinout limitations.
00089     #endif
00090 #endif
00091 #if defined(_16F1934) || defined(_16LF1934)
00092     #if CVD_NUMBER_SENSORS > 14
00093         #error The PIC16F/LF1934 is not able to support more than 14 sensors due to pinout limitations.
00094     #endif
00095 #endif
00096 #if defined(_16F1937) || defined(_16LF1937)
00097     #if CVD_NUMBER_SENSORS > 14
00098         #error The PIC16F/LF1937 is not able to support more than 14 sensors due to pinout limitations.
00099     #endif
00100 #endif
00101 #if defined(_16F1939) || defined(_16LF1939)
00102     #if CVD_NUMBER_SENSORS > 14
00103         #error The PIC16F/LF1939 is not able to support more than 14 sensors due to pinout limitations.
00104     #endif
00105 #endif
00106 
00107 #define CVD_DEBUG_UART_ENABLED
00108 
00109 #define CVD_DEBUG_COMM_INIT()                                       \
00110     do {                                                            \
00111         TXSTA       = CVD_DEBUG_TXSTA;                              \
00112         RCSTA       = CVD_DEBUG_RCSTA;                              \
00113         BAUDCON     = CVD_DEBUG_BAUDCON;                            \
00114         SPBRGL      = CVD_DEBUG_SPBRGL;                             \
00115         SPBRGH      = CVD_DEBUG_SPBRGH;                             \
00116     } while (0)
00117 
00118 #define CVD_DEBUG_COMM_TXIF             TXIF
00119 #define CVD_DEBUG_COMM_TXREG            TXREG
00120 
00121 #define CVD_SET_TMR0IE()                TMR0IE = 1
00122 #define CVD_SET_GIE()                   GIE    = 1  
00123     
00124 #define CVD_SET_ADC_CLK_32MHZ()         ADCON1 = 0b10100000 // 32
00125 #define CVD_SET_ADC_CLK_16MHZ()         ADCON1 = 0b11010000 // 16
00126 #define CVD_SET_ADC_CLK_8MHZ()          ADCON1 = 0b10010000 // 8
00127 #define CVD_SET_ADC_CLK_4MHZ()          ADCON1 = 0b11000000 // 4
00128 #define CVD_SET_ADC_CLK_2MHZ()          ADCON1 = 0b10000000 // 2
00129 #define CVD_SET_ADC_CLK_1MHZ()          ADCON1 = 0b10000000 // 2
00130 
00131 #define CVD_UNIMPLEMENTED_AVAILABLE     1
00132 
00133 #if defined(CVD_DEBUG) && (CVD_DEBUG == 1)
00134 #if !(CVD_DEBUG_SPEED == 9600 || CVD_DEBUG_SPEED == 115200)
00135     #error CVD_DEBUG_SPEED must be set to either 9600 or 115200 in the configuration file.
00136 #endif
00137 #endif
00138 
00139 #if     _XTAL_FREQ == 32000000 
00140     #define CVD_SET_ADC_CLK()   CVD_SET_ADC_CLK_32MHZ()  
00141     #define CVD_TAD             1  
00142     #if     CVD_DEBUG_SPEED == 115200
00143         #define CVD_DEBUG_TXSTA     0b00100100
00144         #define CVD_DEBUG_RCSTA     0b10010000
00145         #define CVD_DEBUG_BAUDCON   0b00001000
00146         #define CVD_DEBUG_SPBRGL    68
00147         #define CVD_DEBUG_SPBRGH    0
00148     #elif   CVD_DEBUG_SPEED == 9600
00149         #define CVD_DEBUG_TXSTA     0b00100100
00150         #define CVD_DEBUG_RCSTA     0b10010000
00151         #define CVD_DEBUG_BAUDCON   0b00000000
00152         #define CVD_DEBUG_SPBRGL    207
00153         #define CVD_DEBUG_SPBRGH    0
00154     #endif
00155 #elif   _XTAL_FREQ == 16000000 
00156     #define CVD_SET_ADC_CLK()   CVD_SET_ADC_CLK_16MHZ()
00157     #define CVD_TAD             1  
00158     #if     CVD_DEBUG_SPEED == 115200
00159         #define CVD_DEBUG_TXSTA     0b00100100
00160         #define CVD_DEBUG_RCSTA     0b10010000
00161         #define CVD_DEBUG_BAUDCON   0b00001000
00162         #define CVD_DEBUG_SPBRGL    33
00163         #define CVD_DEBUG_SPBRGH    0
00164     #elif   CVD_DEBUG_SPEED == 9600
00165         #define CVD_DEBUG_TXSTA     0b00100100
00166         #define CVD_DEBUG_RCSTA     0b10010000
00167         #define CVD_DEBUG_BAUDCON   0b00000000
00168         #define CVD_DEBUG_SPBRGL    103
00169         #define CVD_DEBUG_SPBRGH    0
00170     #endif
00171 #elif   _XTAL_FREQ ==  8000000 
00172     #define CVD_SET_ADC_CLK()   CVD_SET_ADC_CLK_8MHZ()
00173     #define CVD_TAD             1  
00174     #if     CVD_DEBUG_SPEED == 115200
00175         #define CVD_DEBUG_TXSTA     0b00100100
00176         #define CVD_DEBUG_RCSTA     0b10010000
00177         #define CVD_DEBUG_BAUDCON   0b00001000
00178         #define CVD_DEBUG_SPBRGL    16
00179         #define CVD_DEBUG_SPBRGH    0
00180     #elif   CVD_DEBUG_SPEED == 9600
00181         #define CVD_DEBUG_TXSTA     0b00100100
00182         #define CVD_DEBUG_RCSTA     0b10010000
00183         #define CVD_DEBUG_BAUDCON   0b00001000
00184         #define CVD_DEBUG_SPBRGL    207
00185         #define CVD_DEBUG_SPBRGH    0
00186     #endif
00187 #elif   _XTAL_FREQ ==  4000000 
00188     #define CVD_SET_ADC_CLK()   CVD_SET_ADC_CLK_4MHZ()
00189     #define CVD_TAD             1  
00190     #if     CVD_DEBUG_SPEED == 115200
00191         #define CVD_DEBUG_TXSTA     0b00100100
00192         #define CVD_DEBUG_RCSTA     0b10010000
00193         #define CVD_DEBUG_BAUDCON   0b00001000
00194         #define CVD_DEBUG_SPBRGL    8
00195         #define CVD_DEBUG_SPBRGH    0
00196     #elif   CVD_DEBUG_SPEED == 9600
00197         #define CVD_DEBUG_TXSTA     0b00100100
00198         #define CVD_DEBUG_RCSTA     0b10010000
00199         #define CVD_DEBUG_BAUDCON   0b00001000
00200         #define CVD_DEBUG_SPBRGL    103
00201         #define CVD_DEBUG_SPBRGH    0
00202     #endif
00203 #elif   _XTAL_FREQ ==  2000000 
00204     #define CVD_SET_ADC_CLK()   CVD_SET_ADC_CLK_2MHZ()
00205     #define CVD_TAD             1  
00206     #if     CVD_DEBUG_SPEED == 115200
00207         #error The 115.2kbps UART baudrate option cannot be used with a 2MHz Fosc. Please select '9600'.
00208     #elif   CVD_DEBUG_SPEED == 9600
00209         #define CVD_DEBUG_TXSTA     0b00100100
00210         #define CVD_DEBUG_RCSTA     0b10010000
00211         #define CVD_DEBUG_BAUDCON   0b00001000
00212         #define CVD_DEBUG_SPBRGL    51
00213         #define CVD_DEBUG_SPBRGH    0
00214     #endif
00215 #elif   _XTAL_FREQ ==  1000000 
00216     #define CVD_SET_ADC_CLK()   CVD_SET_ADC_CLK_1MHZ()
00217     #define CVD_TAD             2
00218     #if     CVD_DEBUG_SPEED == 115200
00219         #error The 115.2kbps UART baudrate option cannot be used with a 1MHz Fosc. Please select '9600'.
00220     #elif   CVD_DEBUG_SPEED == 9600
00221         #define CVD_DEBUG_TXSTA     0b00100100
00222         #define CVD_DEBUG_RCSTA     0b10010000
00223         #define CVD_DEBUG_BAUDCON   0b00001000
00224         #define CVD_DEBUG_SPBRGL    25
00225         #define CVD_DEBUG_SPBRGH    0
00226     #endif
00227 #else
00228     #error _XTAL_FREQ is not set to a valid value for this processor.
00229 #endif
00230 
00231 #define CVD_ADCON0_BANK         1
00232   
00233 #define CVD_DACCON0_VDD         0xC0
00234 #define CVD_DACCON1_VDD         0x1F
00235 #define CVD_DACCON0_VSS         0x80
00236 #define CVD_DACCON1_VSS         0x00
00237 
00238 // A/D MUX selection for each A/D button, do not change this, refer to datasheet if curious how these are derived
00239 // Right Justified, Vdd as reference, A/D on, Go/Done  asserted, do not change this, refer to datasheet if curious how these are derived 
00240 #define CVD_AD_AN0              0x01    
00241 #define CVD_AD_AN1              0x05
00242 #define CVD_AD_AN2              0x09
00243 #define CVD_AD_AN3              0x0D
00244 #define CVD_AD_AN4              0x11
00245 
00246 #if !defined(_16F1933) && !defined(_16LF1933)
00247 #if !defined(_16F1936) && !defined(_16LF1936)
00248 #if !defined(_16F1938) && !defined(_16LF1938)
00249     #define     CVD_AD_AN5              0x15    
00250     #define     CVD_AD_AN6              0x19
00251     #define     CVD_AD_AN7              0x1D
00252 #endif
00253 #endif
00254 #endif
00255 
00256 #define CVD_AD_AN8              0x21
00257 #define CVD_AD_AN9              0x25
00258 #define CVD_AD_AN10             0x29    
00259 #define CVD_AD_AN11             0x2D    
00260 #define CVD_AD_AN12             0x31    
00261 #define CVD_AD_AN13             0x35
00262 #define CVD_AD_FVR_AND_GO   0x7F // Selects the FVR as the ADC mux option and sets the GO/DONE bit.
00263 #define CVD_AD_DAC_NOGO     0x79 // Selects the DAC as the ADC mux option w/o setting the GO/DONE bit.
00264 #define CVD_AD_DAC_AND_GO   0x7B // Selects the DAC as the ADC mux option and sets the GO/DONE bit.
00265 #define CVD_AD_ISO_AND_GO   0x43 // Selects an unimplemented, isolated ADC mux option and sets the GO/DONE bit.
00266 #define CVD_AD_ISO_NOGO     0x41 // Selects an unimplemented, isolated ADC mux option w/o setting the GO/DONE bit.
00267 
00268 #define CVD_SELECT_SENSOR0          __paste(CVD_AD_, CVD_SENSOR0)
00269 #define CVD_SELECT_SENSOR1          __paste(CVD_AD_, CVD_SENSOR1)
00270 #define CVD_SELECT_SENSOR2          __paste(CVD_AD_, CVD_SENSOR2)
00271 #define CVD_SELECT_SENSOR3          __paste(CVD_AD_, CVD_SENSOR3)
00272 #define CVD_SELECT_SENSOR4          __paste(CVD_AD_, CVD_SENSOR4)
00273 #define CVD_SELECT_SENSOR5          __paste(CVD_AD_, CVD_SENSOR5)
00274 #define CVD_SELECT_SENSOR6          __paste(CVD_AD_, CVD_SENSOR6)
00275 #define CVD_SELECT_SENSOR7          __paste(CVD_AD_, CVD_SENSOR7)
00276 #define CVD_SELECT_SENSOR8          __paste(CVD_AD_, CVD_SENSOR8)
00277 #define CVD_SELECT_SENSOR9          __paste(CVD_AD_, CVD_SENSOR9)
00278 #define CVD_SELECT_SENSOR10     __paste(CVD_AD_, CVD_SENSOR10)
00279 #define CVD_SELECT_SENSOR11     __paste(CVD_AD_, CVD_SENSOR11)
00280 #define CVD_SELECT_SENSOR12     __paste(CVD_AD_, CVD_SENSOR12)
00281 #define CVD_SELECT_SENSOR13     __paste(CVD_AD_, CVD_SENSOR13)
00282 #define CVD_SELECT_FVR_AND_GO   __paste(CVD_AD_, FVR_AND_GO)
00283 #define CVD_SELECT_DAC_AND_GO   __paste(CVD_AD_, DAC_AND_GO)
00284 #define CVD_SELECT_DAC_NOGO     __paste(CVD_AD_, DAC_NOGO)
00285 #define CVD_SELECT_ISO_AND_GO   __paste(CVD_AD_, ISO_AND_GO) 
00286 #define CVD_SELECT_ISO_NOGO     __paste(CVD_AD_, ISO_NOGO) 
00287 #define CVD_SELECT_REFERENCE    __paste(CVD_AD_, CVD_REFERENCE)
00288         
00289 #define CVD_PIN_AN0             0
00290 #define CVD_PIN_AN1             1
00291 #define CVD_PIN_AN2             2
00292 #define CVD_PIN_AN3             3
00293 #define CVD_PIN_AN4             5
00294 
00295 #if !defined(_16F1933) && !defined(_16LF1933)
00296 #if !defined(_16F1936) && !defined(_16LF1936)
00297 #if !defined(_16F1938) && !defined(_16LF1938)
00298     #define     CVD_PIN_AN5         0        
00299     #define     CVD_PIN_AN6         1       
00300     #define     CVD_PIN_AN7         2        
00301 #endif
00302 #endif
00303 #endif
00304 
00305 #define CVD_PIN_AN8             2       
00306 #define CVD_PIN_AN9             3
00307 #define CVD_PIN_AN10    1
00308 #define CVD_PIN_AN11    4
00309 #define CVD_PIN_AN12    0
00310 #define CVD_PIN_AN13    5
00311 
00312 #define CVD_PIN_SENSOR0     __paste(CVD_PIN_,CVD_SENSOR0)
00313 #define CVD_PIN_SENSOR1     __paste(CVD_PIN_,CVD_SENSOR1)
00314 #define CVD_PIN_SENSOR2     __paste(CVD_PIN_,CVD_SENSOR2)
00315 #define CVD_PIN_SENSOR3     __paste(CVD_PIN_,CVD_SENSOR3)
00316 #define CVD_PIN_SENSOR4     __paste(CVD_PIN_,CVD_SENSOR4)
00317 #define CVD_PIN_SENSOR5     __paste(CVD_PIN_,CVD_SENSOR5)
00318 #define CVD_PIN_SENSOR6     __paste(CVD_PIN_,CVD_SENSOR6)
00319 #define CVD_PIN_SENSOR7     __paste(CVD_PIN_,CVD_SENSOR7)
00320 #define CVD_PIN_SENSOR8     __paste(CVD_PIN_,CVD_SENSOR8)
00321 #define CVD_PIN_SENSOR9     __paste(CVD_PIN_,CVD_SENSOR9)
00322 #define CVD_PIN_SENSOR10    __paste(CVD_PIN_,CVD_SENSOR10)
00323 #define CVD_PIN_SENSOR11    __paste(CVD_PIN_,CVD_SENSOR11)
00324 #define CVD_PIN_SENSOR12    __paste(CVD_PIN_,CVD_SENSOR12)
00325 #define CVD_PIN_SENSOR13    __paste(CVD_PIN_,CVD_SENSOR13)
00326 #define CVD_PIN_REFERENCE   __paste(CVD_PIN_,CVD_REFERENCE)
00327 
00328 #define CVD_PORT_AN0    _PORTA  
00329 #define CVD_PORT_AN1    _PORTA  
00330 #define CVD_PORT_AN2    _PORTA  
00331 #define CVD_PORT_AN3    _PORTA
00332 #define CVD_PORT_AN4    _PORTA
00333 
00334 #if !defined(_16F1933) && !defined(_16LF1933)
00335 #if !defined(_16F1936) && !defined(_16LF1936)
00336 #if !defined(_16F1938) && !defined(_16LF1938)
00337     #define     CVD_PORT_AN5    _PORTE       
00338     #define     CVD_PORT_AN6    _PORTE       
00339     #define     CVD_PORT_AN7    _PORTE        
00340 #endif
00341 #endif
00342 #endif
00343 
00344 #define CVD_PORT_AN8    _PORTB  
00345 #define CVD_PORT_AN9    _PORTB  
00346 #define CVD_PORT_AN10   _PORTB  
00347 #define CVD_PORT_AN11   _PORTB  
00348 #define CVD_PORT_AN12   _PORTB  
00349 #define CVD_PORT_AN13   _PORTB
00350 
00351 #define CVD_PORT_SENSOR0    __paste(CVD_PORT_,CVD_SENSOR0)
00352 #define CVD_PORT_SENSOR1    __paste(CVD_PORT_,CVD_SENSOR1)
00353 #define CVD_PORT_SENSOR2    __paste(CVD_PORT_,CVD_SENSOR2)
00354 #define CVD_PORT_SENSOR3    __paste(CVD_PORT_,CVD_SENSOR3)
00355 #define CVD_PORT_SENSOR4    __paste(CVD_PORT_,CVD_SENSOR4)
00356 #define CVD_PORT_SENSOR5    __paste(CVD_PORT_,CVD_SENSOR5)
00357 #define CVD_PORT_SENSOR6    __paste(CVD_PORT_,CVD_SENSOR6)
00358 #define CVD_PORT_SENSOR7    __paste(CVD_PORT_,CVD_SENSOR7)
00359 #define CVD_PORT_SENSOR8    __paste(CVD_PORT_,CVD_SENSOR8)
00360 #define CVD_PORT_SENSOR9    __paste(CVD_PORT_,CVD_SENSOR9)
00361 #define CVD_PORT_SENSOR10   __paste(CVD_PORT_,CVD_SENSOR10)
00362 #define CVD_PORT_SENSOR11   __paste(CVD_PORT_,CVD_SENSOR11)
00363 #define CVD_PORT_SENSOR12   __paste(CVD_PORT_,CVD_SENSOR12)
00364 #define CVD_PORT_SENSOR13   __paste(CVD_PORT_,CVD_SENSOR13)
00365 #define CVD_PORT_REFERENCE  __paste(CVD_PORT_,CVD_REFERENCE)
00366 
00367 #endif
00368 

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