| void analogReadRes(unsigned int bits) | void analogReadRes(unsigned int bits) | ||||
| { | { | ||||
| uint32_t tmp32, mode; | |||||
| if (bits == 8) { | |||||
| // 8 bit conversion (17 clocks) plus 8 clocks for input settling | |||||
| mode = ADC_CFG_MODE(0) | ADC_CFG_ADSTS(3); | |||||
| } else if (bits == 10) { | |||||
| // 10 bit conversion (17 clocks) plus 20 clocks for input settling | |||||
| mode = ADC_CFG_MODE(1) | ADC_CFG_ADSTS(2) | ADC_CFG_ADLSMP; | |||||
| } else { | |||||
| // 12 bit conversion (25 clocks) plus 24 clocks for input settling | |||||
| mode = ADC_CFG_MODE(2) | ADC_CFG_ADSTS(3) | ADC_CFG_ADLSMP; | |||||
| } | |||||
| tmp32 = (ADC1_CFG & ((1u << 22)-1) << 10); | |||||
| tmp32 |= (ADC1_CFG & ((1u << 2)-1) << 0); // ADICLK | |||||
| tmp32 |= ADC1_CFG & (((1u << 3)-1) << 5); // ADIV & ADLPC | |||||
| tmp32 |= mode; | |||||
| ADC1_CFG = tmp32; | |||||
| } | } | ||||