Skip to content

Commit d2ef319

Browse files
committed
DM: set all samd boards to 250k sps ADC
1 parent 00dd128 commit d2ef319

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

cores/arduino/wiring.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)