реклама на сайте
подробности

 
 
> Программный рестарт MSP430F5438A, не работает, зараза. А на F2618 "прокатывало"
k155la3
сообщение Dec 29 2016, 07:45
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Как правильно сделать программный рестарт в MSP430F5438A ?
(IAR, MODEL == LARGE)

То, что работало на F2618, не прокатывает:
Код
void SystemReStart()
{
        __disable_interrupt();
    asm ("push &0xfffe");
    asm ("ret");        
};

Код этой функции размещен в "за-64К" области.

Насколько удается посмотреть на отладчике, после этой процедуры идет влет в пустую область памяти 0xFF.

Изменил на asm для 20-битного адреса (pushx.a, reta) - "рояль не заиграл".

Ресет успешно выполняется способами
- старта WDT
- "подсовывания" перехода на команду, находящуюся не в программной памяти а в области адресов регистров (fetch)

(?) что может быть не так с "прямым" вызовом push+ret ?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amiller
сообщение Dec 30 2016, 04:06
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Мне кажется поиск уникальных особенностей процессора для того, чтобы вызвать фатальное исключение - тупиковый путь.
Да и зачем? Программный reset весьма редкая и не требующая скорости операция.
Это не то место, которое нужно оптимизировать.
Чем Вам не нравится сброс через таймер-сторож? Этот способ уж точно работает на всех архитектурах.
Даже там, где нет встроенного WDT, всё равно ведь придётся ставить внешний WDT, без него никак.
Я лично просто запрещаю сброс WDT и жду reset.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 16:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016