Страница 1 из 1

Добавлено: 29 май 2019, 10:56
IljaEl
Алгоритм (BYTE b_tmp; b_tmp=SystemInfo.RestartReason; DiscretWrite(1,b_tmp); ) после рестарта контроллера А9 с помощью кнопки RESET выдаёт 0 , хотя по описанию в файле power.h должен выдать 2. В результате нельзя отличить причину рестарта при пропадании питания (которая должна выдать 0) , от рестарта после нажатия кнопки! Может не правильно считываю причину рестарта ? Если всё правильно , то каким способом можно отличить причину рестарта контроллера ?

Добавлено: 29 май 2019, 16:24
dws
Выдержка из справки по системным параметрам
516 Причина перестарта. Код последней причины перезапуска контроллера:
0 - пропадание питания и для контроллера Decont-A9 кнопка сброс;
2 - по кнопке сброса контроллера (только для контроллера Decont-182);
3 - сработал охранный таймер (WatchDogTimer);
4 - закончилась процедура переливки или копрессии РПЗУ;
5 - ошибка ядра;
16 - нормальный запрос от программного обеспечения;
17 - запрос от программного обеспечения при ошибках.

Так что, да, для A9 пропадание питания и нажатие кнопки этим параметром не различаются.

Добавлено: 30 май 2019, 08:24
IljaEl
А как мне отличить сброс по кнопке от пропадания питания на А9 ?

Добавлено: 30 май 2019, 18:17
dws
Рестарт по кнопке физически эквивалентен рестарту по питанию, поэтому никак не различается.