Про запуск и конфигурирование PMC у этого чипа большая ERRATA. Если использовать много разных режимов отладки, прошивки и штатной работы, то PMC шизеет. Долгие опыты в начале освоения чипа дали более менее устойчивый к смене режимов код:
Код
//Включить главный генератор и задать время запуска 6/32768= 0,18 мс
PMC_MOR = 1 | (6<<8); // MOSCEN | OSCOUNT
while(!PMC_SR_bit.MOSCS); //Ждем пока генератор стабилизируется
//Переводим процессор на главный генератор
PMC_MCKR = 1 | (0<<2) | (0<<8); // MCK = MAIN PRES=0 MDIV=0
//Настроим PLLA на 196,608 МГц
//Действуем согласно ERRATA
PMC_PLLAR = (1<<29) | (32<<16) | (2<<14) | (28<<8) | 4; // MULA | OUTA | PLLACOUNT | DIVA
while(!PMC_SR_bit.LOCKA); //Ждем пока PLLA захватится
PMC_PLLAR = (1<<29) | (31<<16) | (2<<14) | (28<<8) | 3; // MULA | OUTA | PLLACOUNT | DIVA
while(!PMC_SR_bit.LOCKA); //Ждем пока PLLA захватится
//Настроим PLLB на 95,8464 МГц
//Действуем согласно ERRATA
PMC_PLLBR = (1<<28) | (24<<16) | (28<<8) | 5;
while(!PMC_SR_bit.LOCKB); //Ждем пока PLLB захватится
PMC_PLLBR = (1<<28) | (25<<16) | (28<<8) | 5; // USB96M | MULB | PLLBCOUNT | DIVB
while(!PMC_SR_bit.LOCKB); //Ждем пока PLLB захватится
//Переключим процессор на PLLA и MCK на PLLA/2
//Действуем согласно ERRATA
PMC_MCKR_bit.MDIV=1; //MCK = PCK/2
PMC_MCKR_bit.PRES=0; PMC_MCKR_bit.CSS=2; //PCK = PLLA
Каким бы код ни казался странным - каждая строчка буквально вымучена опытами на железе.