77 void CCPWrite(
volatile uint8_t * address, uint8_t value )
94 asm(
"ldi r16, 0xD8 \n"
96 #if (__MEMORY_MODEL__ == 1)
98 #elif (__MEMORY_MODEL__ == 2)
107 #elif defined __GNUC__
109 volatile uint8_t * tmpAddr = address;
114 "movw r30, %0" "\n\t"
119 :
"r" (tmpAddr),
"r" (value),
"M" (CCP_IOREG_gc),
"i" (&CCP)
120 :
"r16",
"r30",
"r31"
143 OSC_XOSCSEL_t xoscModeSelection )
145 OSC.XOSCCTRL = (uint8_t) freqRange |
146 ( lowPower32kHz ? OSC_X32KLPM_bm : 0 ) |
169 factor &= OSC_PLLFAC_gm;
170 OSC.PLLCTRL = (uint8_t) clockSource | ( factor << OSC_PLLFAC_gp );
190 uint8_t clkEnabled = OSC.CTRL & oscSel;
207 CLK_PSBCDIV_t PSBCfactor )
209 uint8_t PSconfig = (uint8_t) PSAfactor | PSBCfactor;
227 uint8_t clkCtrl = ( CLK.CTRL & ~CLK_SCLKSEL_gm ) | clockSource;
229 clkCtrl = ( CLK.CTRL & clockSource );
243 CLK.RTCCTRL = ( CLK.RTCCTRL & ~CLK_RTCSRC_gm ) |
262 OSC.DFLLCTRL = ( OSC.DFLLCTRL & ~clkSource ) |
263 ( extReference ? clkSource : 0 );
264 if (clkSource == OSC_RC2MCREF_bm) {
265 DFLLRC2M.CTRL |= DFLL_ENABLE_bm;
266 }
else if (clkSource == OSC_RC32MCREF_gm) {
267 DFLLRC32M.CTRL |= DFLL_ENABLE_bm;
282 CCPWrite( &OSC.XOSCFAIL, ( OSC_XOSCFDIF_bm | OSC_XOSCFDEN_bm ) );