@@ -274,7 +274,13 @@ void init()
274
274
275
275
int64_t cpu_freq ;
276
276
277
- #if (F_CPU == 16000000 )
277
+ #if (F_CPU == 20000000 )
278
+ cpu_freq = 20000000 ;
279
+
280
+ /* No division on clock */
281
+ _PROTECTED_WRITE (CLKCTRL_MCLKCTRLB , 0x00 );
282
+
283
+ #elif (F_CPU == 16000000 )
278
284
cpu_freq = 16000000 ;
279
285
280
286
/* No division on clock */
@@ -321,19 +327,21 @@ void init()
321
327
322
328
#if defined(ADC0 )
323
329
324
- /* ADC clock between 50-200KHz */
330
+ /* ADC clock between 50-200 kHz */
325
331
326
- #if F_CPU >= 16000000 // 16 MHz / 128 = 125 KHz
332
+ #if F_CPU >= 20000000 // 20 MHz / 128 = 156.250 kHz
333
+ ADC0 .CTRLC |= ADC_PRESC_DIV128_gc ;
334
+ #elif F_CPU >= 16000000 // 16 MHz / 128 = 125 kHz
327
335
ADC0 .CTRLC |= ADC_PRESC_DIV128_gc ;
328
- #elif F_CPU >= 8000000 // 8 MHz / 64 = 125 KHz
336
+ #elif F_CPU >= 8000000 // 8 MHz / 64 = 125 kHz
329
337
ADC0 .CTRLC |= ADC_PRESC_DIV64_gc ;
330
- #elif F_CPU >= 4000000 // 4 MHz / 32 = 125 KHz
338
+ #elif F_CPU >= 4000000 // 4 MHz / 32 = 125 kHz
331
339
ADC0 .CTRLC |= ADC_PRESC_DIV32_gc ;
332
- #elif F_CPU >= 2000000 // 2 MHz / 16 = 125 KHz
340
+ #elif F_CPU >= 2000000 // 2 MHz / 16 = 125 kHz
333
341
ADC0 .CTRLC |= ADC_PRESC_DIV16_gc ;
334
- #elif F_CPU >= 1000000 // 1 MHz / 8 = 125 KHz
342
+ #elif F_CPU >= 1000000 // 1 MHz / 8 = 125 kHz
335
343
ADC0 .CTRLC |= ADC_PRESC_DIV8_gc ;
336
- #else // 128 kHz / 2 = 64 KHz -> This is the closest you can get, the prescaler is 2
344
+ #else // 128 kHz / 2 = 64 kHz -> This is the closest you can get, the prescaler is 2
337
345
ADC0 .CTRLC |= ADC_PRESC_DIV2_gc ;
338
346
#endif
339
347
@@ -374,4 +382,4 @@ void init()
374
382
sei ();
375
383
}
376
384
377
- void setup_timers (void ) __attribute__((weak ));
385
+ void setup_timers (void ) __attribute__((weak ));
0 commit comments