Hi all,
I can't for the life of me figure out why this isn't working but break-point always shows RES= 0-4. Anything obvious?
VREF.CTRLC = VREF_ADC1REFSEL_1V1_gc; ADC1.CALIB = ADC_DUTYCYC_DUTY25_gc; ADC1.CTRLC = ADC_PRESC_DIV4_gc | ADC_REFSEL_INTREF_gc | ADC_SAMPCAP_bm; // 62.5KHz ADC1.CTRLD = ADC_INITDLY_DLY256_gc; ADC1.DBGCTRL = ADC_DBGRUN_bm; ADC1.EVCTRL = ADC_STARTEI_bm; // Auto trigger ADC1.SAMPCTRL = 0x1F; ADC1.MUXPOS = ADC_MUXPOS_TEMPSENSE_gc; ADC1.CTRLA = ADC_RUNSTBY_bm | ADC_RESSEL_10BIT_gc | ADC_ENABLE_bm; // the event is a rtc trigger at 2Hz and will be picked up by the main loop which on the intflag being set will run the following inline void TEMPERATURE_Adc (void) { int8_t sigrow_offset = SIGROW.TEMPSENSE1; uint8_t sigrow_gain = SIGROW.TEMPSENSE0; uint16_t read = ADC1.RES; uint32_t work = read - sigrow_offset; work *= sigrow_gain; // Result might overflow 16 bit variable (10bit+8bit) work += 0x80; // Add 1/2 to get correct rounding on division below temperature.kelvin = work >> 8; // into kelvin temperature.warn = temperature.warn ? (temperature.kelvin < TEMPERATURE_WARN_KELVIN - TEMPERATURE_WARN_KELVIN_HYSTERESIS? 0:1) : (temperature.kelvin > TEMPERATURE_WARN_KELVIN + TEMPERATURE_WARN_KELVIN_HYSTERESIS? 1:0); }