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

 
 
> Cторожевой таймер, Как сделать так чтобы значения переменных при сбросе не потерять
sKWO
сообщение Apr 19 2007, 18:23
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Чтобы привести в чувство зависший контроллер использую вотчдог.
При сбросе теряются значения переменных
Можно ли сделать так чтобы их не терять и как?
Программа слишком большая и искать причину сложно. sad.gif


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
WHALE
сообщение Apr 19 2007, 20:36
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Специальной директивы нет sad.gif ,имхо только использовать свой старт-ап.
Курите в сторону HELP-->Using an External Startup File,все более-менее описано.Тока там асм.
Я беру его собственный старт-ап и рихтую руками,вам нужна эта область
;GLOBAL VARIABLES INITIALIZATION.
Откройте map-файл,посмотрите где лежат ваши переменные и грохните обнуление.
Но в общем это борьба с зубной болью с помощью димедрола-надо все-равно побороться с перезапуском программы.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 19 2007, 23:57
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(WHALE @ Apr 19 2007, 19:36) *
Но в общем это борьба с зубной болью с помощью димедрола-надо все-равно побороться с перезапуском программы.
С этой оценкой согласен, но если это какое-то сверхнадежное_устройство_от_которого_зависит_жизнь, то надо не грохнуть обнуление (как же программа первый раз стартанет с мусором в переменных-то?) а сделать проверку на предмет "а по собаке ли мы сюда попали" и если по собаке - обойти обнуление. В ИАРе для обхода инициализации надо вернуть 0 из __low_level_init() и переделывать cstartup не придется.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
satellite-plus
сообщение Apr 20 2007, 09:35
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 8-01-07
Из: Одесса
Пользователь №: 24 196



Цитата(Сергей Борщ @ Apr 19 2007, 22:57) *
С этой оценкой согласен, но если это какое-то сверхнадежное_устройство_от_которого_зависит_жизнь, то надо не грохнуть обнуление (как же программа первый раз стартанет с мусором в переменных-то?) а сделать проверку на предмет "а по собаке ли мы сюда попали" и если по собаке - обойти обнуление. В ИАРе для обхода инициализации надо вернуть 0 из __low_level_init() и переделывать cstartup не придется.


Для исключения лишнего кода я прописываю пустые функции.
void __low_level_init(void){}
void __memclr(void){}
void __flashcpy(void){}
void __segment_init(void){}


--------------------
Опыт - это та чудесная штука, которая позволяет вам узнать ошибку, когда вы ее повторите.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:46
Рейтинг@Mail.ru


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