Цитата(HARMHARM @ Apr 15 2008, 15:17)

Читайте еще
Вот так - работает:
Запускается у меня PLL, раз он проходит цикл
Код
while (!PLLSTAT_bit.PLOCK) {}
у меня делитель частоты CCLK не ставится.
Код
void init_system_controls_and_status_register(void)
{
PCONP = 0;
PLLCON_bit.PLLC = 0;
PLLFEED = hw::PLLFEED_DATA1;
PLLFEED = hw::PLLFEED_DATA2;
PLLCON_bit.PLLE = 0;
PLLFEED = hw::PLLFEED_DATA1;
PLLFEED = hw::PLLFEED_DATA2;
SCS = BIT_(hw::SCS_GPIOM) | BIT_(hw::SCS_OSCEN);
while (!SCS_bit.OSCSTAT) {} // æäàòü ïîêà çàïóñêàåòñÿ
CLKSRCSEL = hw::CS_MAIN_OSCILLATOR; // âûáðàòü â êà÷åñòâå èñòî÷íèêà ÷àñòîòû êâàðö
PLLCFG_bit.MSEL = PLL_REGISTER_M - 1;
PLLCFG_bit.NSEL = PLL_REGISTER_N - 1;
PLLFEED = hw::PLLFEED_DATA1;
PLLFEED = hw::PLLFEED_DATA2;
PLLCON_bit.PLLE = 1;
PLLFEED = hw::PLLFEED_DATA1;
PLLFEED = hw::PLLFEED_DATA2;
while (!PLLSTAT_bit.PLOCK) {}
// вот тут PLL работает (раз управление сюда доходит).
// осталось подключить его через адекватный делитель к процессору.
CCLKCFG = 0; // без делителя работает
CCLKCFG = 199; // делитель 200 все ломает
PLLCON_bit.PLLC = 1;
PLLFEED = hw::PLLFEED_DATA1;
PLLFEED = hw::PLLFEED_DATA2;
}