00001 00042 #ifndef BOARD_TOUCH_H 00043 #define BOARD_TOUCH_H 00044 00045 #include <pmic.h> 00046 #include <clk/sys.h> 00047 #include <regs/xmega_adc.h> 00048 #include <regs/xmega_pr.h> 00049 00067 __always_inline static void board_enable_touch_adc(void) 00068 { 00069 sysclk_enable_module(SYSCLK_PORT_A, SYSCLK_ADC); 00070 } 00071 00072 00079 __always_inline static void board_disable_touch_adc(void) 00080 { 00081 uint8_t temp; 00082 00083 // Disable unnecessary references, leave selection. 00084 temp = adc_read_reg(CONFIG_TOUCH_ADC_BASE, REFCTRL); 00085 temp &= ADC_BFMASK(REFSEL); 00086 adc_write_reg(CONFIG_TOUCH_ADC_BASE, REFCTRL, temp); 00087 00088 // Disable the ADC itself. 00089 temp = adc_read_reg(CONFIG_TOUCH_ADC_BASE, CTRLA); 00090 temp &= ~ADC_BIT(ENABLE); 00091 adc_write_reg(CONFIG_TOUCH_ADC_BASE, CTRLA, temp); 00092 00093 // Finally, set the ADC's PR bit. 00094 sysclk_disable_module(SYSCLK_PORT_A, SYSCLK_ADC); 00095 } 00096 00098 00099 #endif /* BOARD_TOUCH_H */
1.6.3