Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как отличить Сброс МК от включения?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
_Алекс
Есть сторожевой таймер, который при зависании МК сбрасывает его (ресетит). Можно ли отличить сброс МК от сторожевого таймера, от просто включения – подачи питания на схему?
gte
Цитата(_Алекс @ Apr 30 2013, 21:09) *
Есть сторожевой таймер, который при зависании МК сбрасывает его (ресетит). Можно ли отличить сброс МК от сторожевого таймера, от просто включения – подачи питания на схему?

Посадите на один вход RC цепочку с диодом на питание. При старте анализируйте состояние этого входа.
ARV
большинство современных МК позволяют узнать источник сброса путем чтения специального регистра. например, для AVR эта информация хранится в регистре MCUSR - есть отдельные биты для сброса при включении питания, для сброса от WDT и т.п.

читайте документацию
_Артём_
Цитата(_Алекс @ Apr 30 2013, 21:09) *
Есть сторожевой таймер, который при зависании МК сбрасывает его (ресетит). Можно ли отличить сброс МК от сторожевого таймера, от просто включения – подачи питания на схему?

Читайте соответствующий регистр статуса.
Для STM32101 это был регистр RCC_CSR с флагами PINRSTF, PORRSTF и т.п.
iosifk
Цитата(_Алекс @ Apr 30 2013, 22:09) *
Есть сторожевой таймер, который при зависании МК сбрасывает его (ресетит). Можно ли отличить сброс МК от сторожевого таймера, от просто включения – подачи питания на схему?

Самый тупой вариант: При вклдючении в памяти записаны либо нули, либо хаос. По включению пройдет "холодный сброс", эта память читается и если там хаос, то туда, в определенную область памяти пишется контрольная информация..
toweroff
Цитата(iosifk @ Apr 30 2013, 22:45) *
Самый тупой вариант: При вклдючении в памяти записаны либо нули, либо хаос. По включению пройдет "холодный сброс", эта память читается и если там хаос, то туда, в определенную область памяти пишется контрольная информация..

хмм... сомнение берет.
После включения - да, согласен. Но, если это просто дернулм Reset, программно область не инициализируется, SRAM же останется в том же состоянии
_Алекс
Сделал так:
CODE
//******************Определяем причину сброса МК начало**********************
/*
RCC_FLAG_PINRST: Произошел внешний сброс.
RCC_FLAG_PORRST: Произошёл сброс от POR/PDR.
RCC_FLAG_SFTRST: Произошёл программный сброс.
RCC_FLAG_IWDGRST: Сброс от независимого сторожевого таймера.
RCC_FLAG_WWDGRST: Сброс от оконного сторожевого таймера.
RCC_FLAG_LPWRRST: Сброс при пониженном питании.
*/

if (RCC_GetFlagStatus(RCC_FLAG_SFTRST)){
strncpy (buferRCCresetStatus, "Software reset", 18);
}
else
if (RCC_GetFlagStatus(RCC_FLAG_PORRST)){
strncpy (buferRCCresetStatus, "Power ON/OFF reset", 18);
}
else
if (RCC_GetFlagStatus(RCC_FLAG_PINRST)){
strncpy (buferRCCresetStatus, "Pin reset", 18);
}
else
if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST)){
strncpy (buferRCCresetStatus, "IndWatchdog reset", 18);
}
else
if (RCC_GetFlagStatus(RCC_FLAG_WWDGRST)){
strncpy (buferRCCresetStatus, "WinWatchdog reset", 18);
}
else
if (RCC_GetFlagStatus(RCC_FLAG_LPWRRST)){
strncpy (buferRCCresetStatus, "LowPower reset", 18);
}
else strncpy (buferRCCresetStatus, "?reset", 18);

RCC_ClearFlag();
//******************Определяем причину сброса МК конец**********************
_Артём_
Цитата(_Алекс @ May 1 2013, 15:08) *
Сделал так:
CODE
//******************Определяем причину сброса МК начало**********************
/*
RCC_FLAG_PINRST: Произошел внешний сброс.
RCC_FLAG_PORRST: Произошёл сброс от POR/PDR.
RCC_FLAG_SFTRST: Произошёл программный сброс.
RCC_FLAG_IWDGRST: Сброс от независимого сторожевого таймера.
RCC_FLAG_WWDGRST: Сброс от оконного сторожевого таймера.
RCC_FLAG_LPWRRST: Сброс при пониженном питании.
*/

if (RCC_GetFlagStatus(RCC_FLAG_SFTRST)){
strncpy (buferRCCresetStatus, "Software reset", 18);
}
else
i

RCC_ClearFlag();
//******************Определяем причину сброса МК конец**********************

Нормально в общем. Только не учитывается случай, если установленно несколько флагов сброса одновременно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.