// setup PLL from internal 2MHz oscillator sysclk=2*30/2 = 30MHz void clock_init(void){ CCP=CCP_IOREG_gc; // unlock writing to CLK.PSCTRL CLK.PSCTRL = CLK_PSADIV_2_gc; // Set up prescalers OSC.PLLCTRL = OSC_PLLSRC_RC2M_gc | 30; // setup PLL source (internal 2MHz), PLL_FAC = 30 (multiply clock 30x) OSC.CTRL |= OSC_PLLEN_bm; // enable PLL while (!(OSC.STATUS & OSC_PLLRDY_bm)){}; // wait until PLL is stabilized CCP=CCP_IOREG_gc; // unlock writing to CLK_CTRL CLK.CTRL = CLK_SCLKSEL_PLL_gc; // select PLL as system clock }