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

 
 
> После софтварной перезагрузки не работает прерывание SysTick, ((void (*)(void))HWREG(0x00000004))();
=Zap=
сообщение Dec 15 2012, 11:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 7-01-09
Пользователь №: 42 985



Выполняю перезагрузку с помощью прыжка по адресу ResetISR, хранящемуся во флэше 0x4:
Код
((void (*)(void))HWREG(0x00000004))();

Всё перезагружается нормально, проходит __iar_program_start, main, вообще всё работает кроме прерываний SysTick. При этом SysTick работает, считает его счётчик, он ставит бит пендинг прерывания, если бит снять, то SysTick его опять ставит. Другие прерывания происходят. Да и вообще ошибки в коде инициализации нет, так как при аппаратном ресете всё работает. А при софтварном ресете вот такое чудо.
Такое ощущение, что я чего-то не знаю про инициализацию Cortex-M3 ядра.
Есть советы куда копать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=Zap=
сообщение Dec 21 2012, 07:36
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 7-01-09
Пользователь №: 42 985



Спасибо за рекомендации. Перезагружал таким способом так как по-быстрому это когда-то работало и с тех пор не трогал. А потом вдруг сломалось и было непонятно почему.
Тем не менее, разгадку я, видимо, нашёл. Поделюсь опытом: в перезагрузку я ухожу из прерывания SysTick (использовал его для счёта задержки времени перед перезагрузкой), таким образом NVIC не чувствует возврата из SysTick и новые прерывания больше не вызывает. Вызывает только более высокоприоритетные.
С SP (stack pointer) проблем нет: его нормально переинициализирует стартовый код IAR.
Кроме перезагрузки мы используем переход из бутлоадера в основную прошивку, что NVIC_SystemReset() или SYSRESETREQ уже не помогает сделать. Там были те же проблемы и придётся использовать прыжок на адрес. Теперь понятно, что его надо сделать не из прерывания.
Watchdog timer хорошая мысль. Как раз подойдёт для отсчёта той задержки, которая нужна перед перезагрузкой.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 00:49
Рейтинг@Mail.ru


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