Вот мой код:
Код
// Функция установки тактирования от кварцевого генератора с умножением частоты в 2 раза
void clock_system (void)
{
//Настраиваем тактирование
//Кварц 14,7456МГц, умножение на 2
OSC.XOSCCTRL=0xcb; //Кварц(12-16),16К циклов (сb) или 256К - (с3)
OSC.CTRL|=0x08; //Включаем кварцевый генератор
do{} while ((OSC.STATUS & 0x08)==0); //ожидаем готовности кв. генератора
OSC.PLLCTRL=0xc2;// PLL от кварца, К=2
OSC.CTRL|=0x10;//Включаем PLL
do{} while ((OSC.STATUS & 0x10)==0); //Ожидаем готовности PLL
//переключаемся на тактирование от PLL
asm ("ldi r16,0xd8");
asm ("ldi r17,0x04");
asm ("out 0x34,r16");
asm ("sts 64,r17");
OSC.CTRL=0x18; //выключаем все генераторы, кроме кварца и PLL
}
а без асемблера - вроде по даташиту неработает (необходимо очень быстро переключать источники тактирования.