Skip to content

Commit 2f3b976

Browse files
committed
Updated crystalless startup to be compliant with CMSIS-Atmel 4.5
1 parent f19c919 commit 2f3b976

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

cores/arduino/startup.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void SystemInit( void )
5959
* 1) Enable OSC32K clock (Internal 32.768Hz oscillator)
6060
*/
6161

62-
uint32_t calib = (*((uint32_t *) SYSCTRL_FUSES_OSC32K_ADDR) & SYSCTRL_FUSES_OSC32K_Msk) >> SYSCTRL_FUSES_OSC32K_Pos;
62+
uint32_t calib = (*((uint32_t *) FUSES_OSC32K_CAL_ADDR) & FUSES_OSC32K_CAL_Msk) >> FUSES_OSC32K_CAL_Pos;
6363

6464
SYSCTRL->OSC32K.reg = SYSCTRL_OSC32K_CALIB(calib) |
6565
SYSCTRL_OSC32K_STARTUP( 0x6u ) | // cf table 15.10 of product datasheet in chapter 15.8.6
@@ -161,7 +161,6 @@ void SystemInit( void )
161161
#define NVM_SW_CALIB_DFLL48M_FINE_VAL 64
162162

163163
// Turn on DFLL
164-
SYSCTRL_DFLLVAL_Type dfllval_conf = {0};
165164
uint32_t coarse =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_SW_CALIB_DFLL48M_COARSE_VAL / 32)) >> (NVM_SW_CALIB_DFLL48M_COARSE_VAL % 32) )
166165
& ((1 << 6) - 1);
167166
if (coarse == 0x3f) {
@@ -172,10 +171,9 @@ void SystemInit( void )
172171
if (fine == 0x3ff) {
173172
fine = 0x1ff;
174173
}
175-
dfllval_conf.bit.COARSE = coarse;
176-
dfllval_conf.bit.FINE = fine;
177174

178-
SYSCTRL->DFLLVAL.reg = dfllval_conf.reg;
175+
SYSCTRL->DFLLVAL.bit.COARSE = coarse;
176+
SYSCTRL->DFLLVAL.bit.FINE = fine;
179177
/* Write full configuration to DFLL control register */
180178
SYSCTRL->DFLLCTRL.reg = SYSCTRL_DFLLCTRL_USBCRM | /* USB correction */
181179
SYSCTRL_DFLLCTRL_CCDIS |

0 commit comments

Comments
 (0)