Цитата(k155la3 @ Dec 30 2016, 15:14)

Шас проверил еще раз (только на отладчике)
(
controller_m30)
Код
или совсем напрямую
mov &0xfffe,PC
а тк код сишный
Код
__no_operation(); << BP
asm("mov &0xfffe,PC");
Прошагал отладчиком по asm - все ресетится.
Проверю еще на Release.
======
Исследования показали, что переход по ресету проходит (на адрес, куда указывает ресетный вектор)
и далее в начало main().
По непонятной для меня причине при таком "ресете" происходит зацикл в ф-ии инициализации UCS (тактовой системы).
При ресете через WDT, fetch или аппаратном - этот блок не циклит.
Код
. . . .
do
{
UCSCTL7 &= ~( XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags
__no_operation();
SFRIFG1 &= ~OFIFG; // Clear fault flags
} while ( SFRIFG1 & OFIFG ); // Test oscillator fault flag
. . . .
(функция XT2 выводов отключена, генератор XT2 не исползуется и физически кварца нет)
Упорно устанавливается (при программном ресете по JMP) флаг XT2OFFG в UCSCTL7 и соотв-но общий флаг (SFRIFG1 & OFIFG).
Делаю для себя вывод, что для такого "рестарта" требуется начальная подготовка процессора, чтобы все прошло корректно.
(установка UCS и возможно, PMM в определенное состояние)
Итак. Ресетится проще всего:
(1) - через WDT
(2) - через peripheral/config area fetch
Шас использую (2), потом переделаю на (1)
(сугобо IMHO)