Цитата(Ave @ Aug 22 2012, 17:59)

Если еще интересно инициализация кварца для MSP430F5528 на XT2 выполняется так
Хотелоcь бы заметить, что поскольку в вашей программе регистры инициализируются не явными значениями, а с иcпользованием масок, то вот в этом куске кода можно зациклиться навсегда.
Цитата(Ave @ Aug 22 2012, 17:59)

Код
// Loop until XT1,XT2 & DCO stabilizes - in this case loop until XT2 settles
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG_L + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
} while (SFRIFG1 & OFIFG); // Test oscillator fault flag
Причина в том, что "по умолчанию" FLL включена (бит SCG0 сброшен) и подключана к REFO (опорная частота, до того как LFXT "заведется"), а DCO ей (системой FLL) настраивается на частоту DCOCLK=2МГц, DCOCLKDIV=1МГц. И если вы не проинициализировали
явными значениями коэффициенты "петевого деления" FLL (регистр UCSCTL2) и диапазона частоты DCO (регистр UCSCTL1), то FLL имеет возможность свалить модулятор DCO на "упор". При этом бит аварии DCOFFG будет всегда установлен и соответственно бит OFIFG сбрасываться тоже не будет. Так что, во-первых, после старта нужно инициализировать все регистры
явными значениями. Во-вторых, при проверке готовности генераторов использовать только соответствующие им биты (XT1LFOFFG/XT1HFOFFG и XT2OFFG), а не бит общей аварии OFIFG. В-третьих, не использовать FLL все время, а только однократно для "грубой"/начальной подстройки частоты DCO. Затем отключать FLL и при необходимости подстраивать DCO "вручную" используя TimerB и ACLK. Подробнее все это по мотивам бага UCS10 освещается в документе
UCS10 Guidance (slaa489a). UCS10 в Errata MSP430F5529 не упомянут, но тем не менее указанный AppNote почитать стоит.