| 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