@@ -109,16 +109,16 @@ void init( void )
109109 // Initialize Analog Controller
110110 // Setting clock
111111#if defined(__SAMD51__ )
112- //Set ADC sampling rate to 1/ ( 1/(120MHz/16) ) * (30 + 1 ) = 241935 Samples/Sec
112+ //set to 1/( 1/(48000000/32) * 6 ) = 250000 SPS
113113
114- GCLK -> PCHCTRL [ADC0_GCLK_ID ].reg = GCLK_PCHCTRL_GEN_GCLK0_Val | (1 << GCLK_PCHCTRL_CHEN_Pos ); //use clock generator 1 (48Mhz)
114+ GCLK -> PCHCTRL [ADC0_GCLK_ID ].reg = GCLK_PCHCTRL_GEN_GCLK1_Val | (1 << GCLK_PCHCTRL_CHEN_Pos ); //use clock generator 1 (48Mhz)
115115
116- ADC0 -> CTRLA .bit .PRESCALER = ADC_CTRLA_PRESCALER_DIV16_Val ;
116+ ADC0 -> CTRLA .bit .PRESCALER = ADC_CTRLA_PRESCALER_DIV32_Val ;
117117 ADC0 -> CTRLB .bit .RESSEL = ADC_CTRLB_RESSEL_10BIT_Val ;
118118
119119 while ( ADC0 -> SYNCBUSY .reg & ADC_SYNCBUSY_CTRLB ); //wait for sync
120120
121- ADC0 -> SAMPCTRL .reg = 30 ; // ampling Time Length
121+ ADC0 -> SAMPCTRL .reg = 5 ; // sampling Time Length
122122
123123 while ( ADC0 -> SYNCBUSY .reg & ADC_SYNCBUSY_SAMPCTRL ); //wait for sync
124124
@@ -148,6 +148,8 @@ void init( void )
148148 DAC -> DACCTRL [1 ].bit .REFRESH = 2 ;
149149
150150#else
151+ //set to 1/(1/(48000000/32) * 6) = 250000 SPS
152+
151153 while (GCLK -> STATUS .reg & GCLK_STATUS_SYNCBUSY );
152154
153155 GCLK -> CLKCTRL .reg = GCLK_CLKCTRL_ID ( GCM_ADC ) | // Generic Clock ADC
@@ -156,10 +158,10 @@ void init( void )
156158
157159 while ( ADC -> STATUS .bit .SYNCBUSY == 1 ); // Wait for synchronization of registers between the clock domains
158160
159- ADC -> CTRLB .reg = ADC_CTRLB_PRESCALER_DIV512 | // Divide Clock by 512 .
161+ ADC -> CTRLB .reg = ADC_CTRLB_PRESCALER_DIV32 | // Divide Clock by 32 .
160162 ADC_CTRLB_RESSEL_10BIT ; // 10 bits resolution as default
161163
162- ADC -> SAMPCTRL .reg = 0x3f ; // Set max Sampling Time Length
164+ ADC -> SAMPCTRL .reg = 5 ; // Sampling Time Length
163165
164166 while ( ADC -> STATUS .bit .SYNCBUSY == 1 ); // Wait for synchronization of registers between the clock domains
165167
0 commit comments