История изменений
Исправление alegz, (текущая версия) :
UTCTL0 |= SSEL1 + SSEL0 + URXSE; // UCLK = SMCLK, start edge detect
Никогда не понимал, зачем так себя мучить. Есть же техасовская DriverLib (MSPWare430) с человеческими именами функций, она даже в исходниках.
Кварц 32768 Гц подключен к соответствующим ножкам.
#define DELTA 488 // Target DCO = DELTA*(4096) = 2MHz
Не знаю про серию 1xxx, но в 5xxx эта подсистема называется UCS. Кури про нее доки. Для внешнего кварца, возможно, надо еще ноги XIN/XOUT настраивать. Взрослые дяди делают как-то так:
void clocks_init(unsigned long freq)
{
UCS_bypassXT1(UCS_XT1_HIGH_FREQUENCY);
UCS_clockSignalInit(UCS_ACLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
UCS_clockSignalInit(UCS_MCLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
UCS_clockSignalInit(UCS_SMCLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
UCS_setExternalClockSource(freq, 0);
__bis_SR_register(SCG0); // выкл FLL
__bis_SR_register(SCG1); // выкл DCO
}
И зря ты пока с режимами пониженного энергопотребления связываешься:
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, int's active
Там бывает много всякой неочевидной магии. Сначала сделай чтоб оно вообще хоть как-то заработало.
Исходная версия alegz, :
UTCTL0 |= SSEL1 + SSEL0 + URXSE; // UCLK = SMCLK, start edge detect
Никогда не понимал, зачем так себя мучить. Есть же техасовская DriverLib (MSPWare430) с человеческими именами функций, она даже в исходниках.
Кварц 32768 Гц подключен к соответствующим ножкам.
#define DELTA 488 // Target DCO = DELTA*(4096) = 2MHz
Не знаю про серию 1xxx, но в 5xxx эта подсистема называется UCS. Кури про нее доки. Для внешнего кварца, возможно, надо еще ноги XT0/XT1 настраивать. Взрослые дяди делают как-то так:
void clocks_init(unsigned long freq)
{
UCS_bypassXT1(UCS_XT1_HIGH_FREQUENCY);
UCS_clockSignalInit(UCS_ACLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
UCS_clockSignalInit(UCS_MCLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
UCS_clockSignalInit(UCS_SMCLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1);
UCS_setExternalClockSource(freq, 0);
__bis_SR_register(SCG0); // выкл FLL
__bis_SR_register(SCG1); // выкл DCO
}
И зря ты пока с режимами пониженного энергопотребления связываешься:
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, int's active
Там бывает много всякой неочевидной магии. Сначала сделай чтоб оно вообще хоть как-то заработало.