| Line No. | Rev | Author | Line |
|---|---|---|---|
| 1 | 32 | kaklik | |
| 2 | /***************************************************************************** |
||
| 3 | * FileName: mTouchCap_Adc.c |
||
| 4 | * Dependencies: |
||
| 5 | * Processor: PIC18, PIC24 |
||
| 6 | * Compiler: C18, C30 |
||
| 7 | * Linker: MPLINK,MPLAB LINK30 |
||
| 8 | * Company: Microchip Technology Incorporated |
||
| 9 | * |
||
| 10 | * Software License Agreement |
||
| 11 | * |
||
| 12 | * Copyright © 2009 Microchip Technology Inc. |
||
| 13 | * Microchip licenses this software to you solely for use with Microchip products, according to the terms of the |
||
| 14 | * accompanying click-wrap software license. Microchip and its licensors retain all right, title and interest in |
||
| 15 | * and to the software. All rights reserved. This software and any accompanying information is for suggestion only. |
||
| 16 | * It shall not be deemed to modify Microchips standard warranty for its products. It is your responsibility to ensure |
||
| 17 | * that this software meets your requirements. |
||
| 18 | |||
| 19 | * SOFTWARE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
||
| 20 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT |
||
| 21 | * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP OR ITS LICENSORS BE LIABLE |
||
| 22 | * FOR ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT LIMITED TO INCIDENTAL, |
||
| 23 | * SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, |
||
| 24 | * COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, OR ANY CLAIMS BY THIRD PARTIES |
||
| 25 | * (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. |
||
| 26 | * The aggregate and cumulative liability of Microchip and its licensors for damages related to the use of the software |
||
| 27 | * will in no event exceed $1000 or the amount you paid Microchip for the software, whichever is greater. |
||
| 28 | |||
| 29 | * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE TERMS AND |
||
| 30 | * THE TERMS OF THE ACCOMPANYING CLICK-WRAP SOFTWARE LICENSE. |
||
| 31 | * |
||
| 32 | * |
||
| 33 | * Author Date Comment |
||
| 34 | *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
||
| 35 | * Naveen. M 14 Apr 2009 Version 0.1 Initial Draft |
||
| 36 | * Sasha. M / Naveen. M 4 May 2009 Version 0.2 Updates |
||
| 37 | * Sasha. M / Naveen. M 11 Nov 2009 Version 1.0 Release |
||
| 38 | * Sasha. M / Nithin. 10 April 2010 Version 1.20 Release |
||
| 39 | *****************************************************************************/ |
||
| 40 | |||
| 41 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 42 | /* ~~~~~~~~~~~~~~~~~~~~~ Includes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 43 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 44 | |||
| 45 | #ifdef __PIC24F__ |
||
| 46 | #include "mTouchCap_PIC24_CTMU_Physical.h" |
||
| 47 | #else |
||
| 48 | #include "mTouchCap_PIC18_CTMU_Physical.h" |
||
| 49 | #endif |
||
| 50 | |||
| 51 | #include "mTouchCap_Adc.h" |
||
| 52 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 53 | /* ~~~~~~~~~~~~~~~~~~~~~ Variables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 54 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 55 | |||
| 56 | |||
| 57 | |||
| 58 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 59 | /* ~~~~~~~~~~~~~~~~~~~~~ Declarations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 60 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 61 | |||
| 62 | |||
| 63 | |||
| 64 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 65 | /* ~~~~~~~~~~~~~~~~~~~~~ Function Prototypes ~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 66 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 67 | |||
| 68 | |||
| 69 | |||
| 70 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 71 | /* ~~~~~~~~~~~~~~~~~~~~~ Function Definitions ~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 72 | /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |
||
| 73 | |||
| 74 | /******************************************************************** |
||
| 75 | * Function : void mTouchCapADC_SetChannelADC(WORD chan_param) |
||
| 76 | * |
||
| 77 | * PreCondition : None |
||
| 78 | * |
||
| 79 | * Input : channel_select - This contains the input select parameter to be |
||
| 80 | configured into the ADCHS register as defined below |
||
| 81 | * |
||
| 82 | * Output : None |
||
| 83 | * |
||
| 84 | * Side Effects : None |
||
| 85 | * |
||
| 86 | * Overview : This function sets the positive and negative inputs for |
||
| 87 | the sample multiplexers A and B. |
||
| 88 | * |
||
| 89 | * Note : |
||
| 90 | *******************************************************************/ |
||
| 91 | void mTouchCapADC_SetChannelADC(WORD channel_select) |
||
| 92 | { |
||
| 93 | ADC_CHANNEL_SELECT = channel_select; |
||
| 94 | } |
||
| 95 | |||
| 96 | |||
| 97 | |||
| 98 | /********* End of Function *********************/ |
||
| 99 | |||
| 100 | |||
| 101 | /******************************************************************** |
||
| 102 | * Function : WORD mTouchCapADC_ReadADCBuff(BYTE bufIndex) |
||
| 103 | * |
||
| 104 | * PreCondition : None |
||
| 105 | * |
||
| 106 | * Input : bufIndex - This is the ADC buffer number which is to be read. |
||
| 107 | * |
||
| 108 | * Output : Returns the contents of the ADC Buffer register (ADCBUF0 to ADCBUFF) |
||
| 109 | * |
||
| 110 | * Side Effects : None |
||
| 111 | * |
||
| 112 | * Overview : This function reads the ADC Buffer register which contains |
||
| 113 | * the conversion value. |
||
| 114 | * |
||
| 115 | * Note : User should provide bufIndex value between 0 to 15 to |
||
| 116 | ensure correct read of the ADCBUF0 to ADCBUFF. |
||
| 117 | *******************************************************************/ |
||
| 118 | |||
| 119 | WORD mTouchCapADC_ReadADCBuff(BYTE BufIndex) |
||
| 120 | { |
||
| 121 | #ifdef __PIC24F__ |
||
| 122 | return(*(&ADCBUF+BufIndex)); |
||
| 123 | #else |
||
| 124 | return(*(&ADRES+BufIndex)); //PIC18 |
||
| 125 | #endif |
||
| 126 | } |
||
| 127 | |||
| 128 | |||
| 129 | /********* End of Function *********************/ |
||
| 130 | |||
| 131 | /******************************************************************** |
||
| 132 | * Function : void mTouchCapADC_InitializeInterrupt(WORD config) |
||
| 133 | * |
||
| 134 | * PreCondition : None |
||
| 135 | * |
||
| 136 | * Input : config - ADC interrupt priority and enable/disable information |
||
| 137 | * |
||
| 138 | * Output : None |
||
| 139 | * |
||
| 140 | * Side Effects : None |
||
| 141 | * |
||
| 142 | * Overview : This function clears the Interrupt Flag (ADIF) bit and then |
||
| 143 | * sets the interrupt priority and enables/disables the interrupt. |
||
| 144 | * |
||
| 145 | * Note : |
||
| 146 | *******************************************************************/ |
||
| 147 | |||
| 148 | |||
| 149 | |||
| 150 | void mTouchCapADC_InitializeInterrupt(BYTE Interrupt_State) |
||
| 151 | { |
||
| 152 | |||
| 153 | //************************************ |
||
| 154 | //*Clearing the Interrupt Flag bit |
||
| 155 | //************************************/ |
||
| 156 | ADC1_Clear_Intr_Status_Bit; |
||
| 157 | |||
| 158 | //************************************ |
||
| 159 | //*Setting Priority |
||
| 160 | //************************************/ |
||
| 161 | SetPriorityIntADC1(ADC_PRIORITY); |
||
| 162 | |||
| 163 | //************************************ |
||
| 164 | //*Configure the Interrupt enable/disable bit |
||
| 165 | //************************************/ |
||
| 166 | Set_Adc_Enable_State(Interrupt_State); |
||
| 167 | |||
| 168 | } |
||
| 169 | /********* End of Function *********************/ |
||
| 170 | |||
| 171 | |||
| 172 | /******************************************************************** |
||
| 173 | * Function : BYTE mTouchCapADC_BusyADC(void) |
||
| 174 | * |
||
| 175 | * PreCondition : None |
||
| 176 | * |
||
| 177 | * Input : None |
||
| 178 | * |
||
| 179 | * Output : If the value of DONE is 0, then 1 is returned,indicating that the |
||
| 180 | * ADC is busy in conversion.If the value of DONE is 1, then 0 is |
||
| 181 | * returned, indicating that the ADC has completed conversion. |
||
| 182 | * |
||
| 183 | * Side Effects : None |
||
| 184 | * |
||
| 185 | * Overview : This function returns the complement of the ADCON1 <DONE> bit |
||
| 186 | * status which indicates whether the ADC is busy in conversion. |
||
| 187 | * |
||
| 188 | * Note : |
||
| 189 | *******************************************************************/ |
||
| 190 | |||
| 191 | BYTE mTouchCapADC_BusyADC(void) |
||
| 192 | { |
||
| 193 | return !(ADC_Done_Bit); /* returns the DONE bit status */ |
||
| 194 | } |
||
| 195 | |||
| 196 | /********* End of Function *********************/ |
||
| 197 | |||
| 198 | |||
| 199 | /******************************************************************** |
||
| 200 | * Function : void mTouchCapADC_CloseADC(void) |
||
| 201 | * |
||
| 202 | * PreCondition : None |
||
| 203 | * |
||
| 204 | * Input : None |
||
| 205 | * |
||
| 206 | * Output : None |
||
| 207 | * |
||
| 208 | * Side Effects : None |
||
| 209 | * |
||
| 210 | * Overview : This function first disables the ADC interrupt and then turns off the ADC |
||
| 211 | * module.The Interrupt Flag bit (ADIF) is also cleared. |
||
| 212 | * |
||
| 213 | * Note : |
||
| 214 | *******************************************************************/ |
||
| 215 | |||
| 216 | void mTouchCapADC_CloseADC(void) |
||
| 217 | { |
||
| 218 | |||
| 219 | //************************************ |
||
| 220 | //*disable ADC interrupt |
||
| 221 | //************************************/ |
||
| 222 | DisableIntADC1; |
||
| 223 | |||
| 224 | |||
| 225 | //************************************ |
||
| 226 | //*turn off ADC |
||
| 227 | //************************************/ |
||
| 228 | DisableADC1; |
||
| 229 | |||
| 230 | |||
| 231 | //************************************ |
||
| 232 | //*Clearing the Interrupt Flag bit |
||
| 233 | //************************************/ |
||
| 234 | ADC1_Clear_Intr_Status_Bit; |
||
| 235 | } |
||
| 236 | |||
| 237 | /********* End of Function *********************/ |
||
| 238 | |||
| 239 | |||
| 240 | /******************************************************************** |
||
| 241 | * Function : void mTouchCapADC_OpenADC(void) |
||
| 242 | * |
||
| 243 | * PreCondition : None |
||
| 244 | * |
||
| 245 | * Input : None |
||
| 246 | * |
||
| 247 | * Output : None |
||
| 248 | * |
||
| 249 | * Side Effects : None |
||
| 250 | * |
||
| 251 | * Overview : This function first disables the ADC interrupt and then turns off the ADC |
||
| 252 | * module.The Interrupt Flag bit (ADIF) is also cleared. |
||
| 253 | * |
||
| 254 | * Note : |
||
| 255 | *******************************************************************/ |
||
| 256 | void mTouchCapADC_OpenADC(void) |
||
| 257 | { |
||
| 258 | //************************************ |
||
| 259 | //*digital/analog mode selection on the port bits |
||
| 260 | //************************************/ |
||
| 261 | |||
| 262 | #ifdef __PIC24F__ |
||
| 263 | #ifdef ADC_LEGACY |
||
| 264 | Adc_Port_Configuration(ADC_PORT_CONFIG_DEFAULT_VALUE); // A/D mux must connect to channel for CTMU to drain charge |
||
| 265 | #endif |
||
| 266 | |||
| 267 | #ifdef ADC_NEW |
||
| 268 | Adc_PortA_Configuration(ADC_PORTA_CONFIG_DEFAULT_VALUE); // A/D mux must connect to channel for CTMU to drain charge |
||
| 269 | Adc_PortB_Configuration(ADC_PORTB_CONFIG_DEFAULT_VALUE); // A/D mux must connect to channel for CTMU to drain charge |
||
| 270 | Adc_PortC_Configuration(ADC_PORTC_CONFIG_DEFAULT_VALUE); // A/D mux must connect to channel for CTMU to drain charge |
||
| 271 | Adc_PortE_Configuration(ADC_PORTE_CONFIG_DEFAULT_VALUE); // A/D mux must connect to channel for CTMU to drain charge |
||
| 272 | Adc_PortG_Configuration(ADC_PORTG_CONFIG_DEFAULT_VALUE); // A/D mux must connect to channel for CTMU to drain charge |
||
| 273 | #endif |
||
| 274 | #else |
||
| 275 | AD_CON_REG0 = ADC_CONFIG_ADCON0; |
||
| 276 | AD_CON_REG1 = ADC_CONFIG_ADCON1; |
||
| 277 | Adc_Port_Configuration1(ADC_PORT_CONFIG_DEFAULT_VALUE); // A/D mux must connect to channel for CTMU to drain charge |
||
| 278 | Adc_Port_Configuration2(ADC_PORT_CONFIG_DEFAULT_VALUE); // A/D mux must connect to channel for CTMU to drain charge |
||
| 279 | |||
| 280 | |||
| 281 | #endif |
||
| 282 | } |
||
| 283 | |||
| 284 | /********* End of Function *********************/ |
||
| 285 | |||
| 286 |
Powered by WebSVN v2.8.3