Skip to content

Commit 15e26fa

Browse files
committed
Improve accuracy of HS crystal (fixed off-by-one calculation)
1 parent 76de5a4 commit 15e26fa

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

bootloaders/zero/board_init.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ void board_init( void )
283283
#endif
284284

285285
#if defined(PLL_FRACTIONAL_ENABLED)
286-
#define DPLLRATIO_LDR (uint16_t)DPLLRATIO_FLOAT
286+
#define DPLLRATIO_LDR ((uint16_t)DPLLRATIO_FLOAT - 1)
287287
#if (SAMD51)
288288
#define DPLLRATIO_LDRFRAC (uint8_t)((DPLLRATIO_FLOAT - (uint16_t)DPLLRATIO_FLOAT) * 32.0)
289289
#if (VARIANT_MCK == 120000000ul)
@@ -293,10 +293,10 @@ void board_init( void )
293293
#define DPLLRATIO_LDRFRAC (uint8_t)((DPLLRATIO_FLOAT - (uint16_t)DPLLRATIO_FLOAT) * 16.0)
294294
#endif
295295
#else
296-
#define DPLLRATIO_LDR (uint16_t)DPLLRATIO_FLOAT
296+
#define DPLLRATIO_LDR ((uint16_t)DPLLRATIO_FLOAT - 1)
297297
#define DPLLRATIO_LDRFRAC 0
298298
#if (SAMD51 && (VARIANT_MCK == 120000000ul))
299-
#define DPLL1RATIO_LDR (uint16_t)DPLLRATIO_FLOAT
299+
#define DPLL1RATIO_LDR ((uint16_t)DPLL1RATIO_FLOAT - 1)
300300
#define DPLL1RATIO_LDRFRAC 0
301301
#endif
302302
#endif

cores/arduino/startup.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,10 @@ void SystemInit( void )
189189
#define DPLLRATIO_FLOAT (96000000.0 / ((float)HS_CRYSTAL_FREQUENCY_HERTZ / HS_CRYSTAL_DIVIDER))
190190

191191
#if defined(PLL_FRACTIONAL_ENABLED)
192-
#define DPLLRATIO_LDR (uint16_t)DPLLRATIO_FLOAT
192+
#define DPLLRATIO_LDR ((uint16_t)DPLLRATIO_FLOAT - 1)
193193
#define DPLLRATIO_LDRFRAC (uint8_t)((DPLLRATIO_FLOAT - (uint16_t)DPLLRATIO_FLOAT) * 16.0)
194194
#else
195-
#define DPLLRATIO_LDR (uint16_t)DPLLRATIO_FLOAT
195+
#define DPLLRATIO_LDR ((uint16_t)DPLLRATIO_FLOAT - 1)
196196
#define DPLLRATIO_LDRFRAC 0
197197
#endif
198198

0 commit comments

Comments
 (0)