From 9cb20143eeb15edd8ede643e2b274a33d26816dc Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Sun, 30 Aug 2020 22:07:45 +0200 Subject: [PATCH] working temperature measurement on ch0 --- newcode/main.c | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/newcode/main.c b/newcode/main.c index 0230b57..2bb3b91 100644 --- a/newcode/main.c +++ b/newcode/main.c @@ -1,6 +1,9 @@ #include #include #include +#include +#include +#include #include "yaMBSiavr.h" uint16_t inputStatus[9]; @@ -35,13 +38,44 @@ void init_timer_100us(){ TCC0.INTCTRLA |= TC_OVFINTLVL_MED_gc; } +void adc_init(void){ + ADCA.CTRLB = 0x00; + ADCA.REFCTRL = ADC_REFSEL_VCC_gc; + ADCA.PRESCALER = ADC_PRESCALER_DIV512_gc; + + uint8_t CalibrationByteL; + uint8_t CalibrationByteH; + NVM_CMD = NVM_CMD_READ_CALIB_ROW_gc; + CalibrationByteL = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, ADCACAL0)); + CalibrationByteH = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, ADCACAL1)); + NVM_CMD = NVM_CMD_NO_OPERATION_gc; + ADCA.CALL = CalibrationByteL; + ADCA.CALH = CalibrationByteH; + + ADCA.CTRLA = ADC_ENABLE_bm; + + ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc; + ADCA.CH0.MUXCTRL = ADC_CH_MUXPOS_PIN0_gc; +} + +uint16_t adc_read(void){ + ADCA.CH0.CTRL |= ADC_CH_START_bm; + while(!(ADCA.CH0.INTFLAGS & ADC_CH_CHIF_bm)); + ADCA.CH0.INTFLAGS = ADC_CH_CHIF_bm; + return ADCA.CH0.RES; +} + void modbusGet(void) { if (modbusGetBusState() & (1<