5 Reading the DAC Internally with the ADC
The analog output of the DAC can be internally connected to other peripherals
            when the DAC is enabled (ENABLE = 1 in DACn.CTRLA). When the DAC analog
            output is only being used internally, it is not necessary to enable the pin output
            driver (OUTEN = 0 in DACn.CTRLA is acceptable).
Referring to the ADC block diagram below, the output of the 10-bit DAC can be used as the internal input to the ADC.
The DAC voltage reference is initialized as mentioned in Generating Constant Analog Signal Using 10-Bit DAC and the ADC voltage reference is initialized in the same way from the VREF peripheral.
The complete VREF initialization is shown below:
VREF.DAC0REF = VREF_REFSEL_2V048_gc /* Select the 2.048V Internal Voltage Reference for DAC */ | VREF_ALWAYSON_bm; /* Set the Voltage Reference in Always On mode */ VREF.ADC0REF = VREF_REFSEL_2V048_gc /* Select the 2.048V Internal Voltage Reference for ADC */ | VREF_ALWAYSON_bm; /* Set the Voltage Reference in Always On mode */ /* Wait VREF start-up time */ _delay_us(VREF_STARTUP_TIME);
Then, the ADC must be initialized:
ADC0.CTRLC = ADC_PRESC_DIV2_gc;
ADC0.CTRLA = ADC_ENABLE_bm | ADC_RESSEL_12BIT_gc;
        To read the DAC with the ADC, the MUXPOS register of the ADC must be set to
                0x48, corresponding to DAC0.
ADC0.MUXPOS = ADC_MUXPOS_DAC0_gc;
The ADC conversion is started by writing the corresponding bit to the ADCn.COMMAND register:
ADC0.COMMAND = ADC_STCONV_bm;
When the conversion is done, the RESRDY bit in the ADCn.INTFLAGS register will be set by hardware.
while(!(ADC0.INTFLAGS & ADC_RESRDY_bm))
{
	;
}
        The flag is cleared by either writing a ‘1’ to the RESRDY
            bit location or by reading the Result (ADCn.RES) register. Writing a
            ‘0’ to this bit has no effect.
ADC0.INTFLAGS = ADC_RESRDY_bm;
The ADC data can be read from the Result (ADCn.RES) register.
The DAC output can be set to different values, and read with the ADC in a loop:
while (1) 
{
	adcVal = ADC0_read();
	dacVal++;
	DAC0_setVal(dacVal);
}
        
        
