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

 
 
> МК после сброса по WatchDog
ListenReality
сообщение Jan 21 2016, 09:47
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 2-04-15
Из: Железногорск
Пользователь №: 86 023



Всем привет.

Проблема такая: Необходимо завести такую переменную, которая после сброса МК по WatchDog сохранит свое значение.

Пробовал через static. Но видимо я чего-то глубоко не понимаю. Если переменную не инициализировать, то в ней рандомное значение, которое нельзя никак изменить. (А писать static int i=0 глупо, т.к. оно каждый раз будет обнуляться).

Вообще возможно ли это? или МК после сброса по WatchDog затирает память?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dog Pawlowa
сообщение Jan 30 2016, 18:57
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(ListenReality @ Jan 21 2016, 12:47) *
Но видимо я чего-то глубоко не понимаю. Если переменную не инициализировать, то в ней рандомное значение, которое нельзя никак изменить.

Вообще возможно ли это?

Возможно - что?
Кажется, вы каких-то чудес хотите - чтобы переменная не инициализировалась, но чтобы в ней не было рандомного значения.
"Горячий лед", "сухая вода" ?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
ListenReality
сообщение Feb 2 2016, 02:43
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 2-04-15
Из: Железногорск
Пользователь №: 86 023



Цитата(Dog Pawlowa @ Jan 31 2016, 01:57) *
Возможно - что?
Кажется, вы каких-то чудес хотите - чтобы переменная не инициализировалась, но чтобы в ней не было рандомного значения.
"Горячий лед", "сухая вода" ?


Вы видимо не правильно поняли.
1) Включение МК по питанию(сигнал POR и PUC)
2) Сброс МК по WatchDog(только сигнал PUC). Программа начинает выполняться с начала, но есть бит, который указывает, что мы сбросились именно по WatchDog.
Код
if((IFG1&WDTIFG)==WDTIFG)//сбросились по собаке
{
IFG1&=~WDTIFG;//обнуляем флаг
countWatchDog++;
}


Поставлю вопрос тогда так. Где и как мне объявить переменную countWatchDog, чтобы:
1) Если включились по питанию, countWatchDog=0;
2) Если сброс по WatchDog, то countWatchDog++;

По сути нужно посчитать кол-во сбросов по WatchDog.

Пробовал:
Объявлял переменную за функцией main по-разному:
Код
int countWatchDog;
static int countWatchDog;

При этом main выглядит примерно так:
Код
int main(void)
{
/*настройка сторожевого таймера*/
WDTCTL =  WDTPW    // ключ защиты
             + WDTCNTCL // Обнуляем таймер
             + WDTSSEL;    // 0 - тактовый сигнал от SMCLK, 1 - ACLK
IE1 = WDTIE;// разрешаем прерывания от сторожевого таймера

BCSCTL3 = LFXT1S_2;//задаем для ACLK источник тактирования VLO

if((IFG1&WDTIFG)!=WDTIFG)//по питанию
{
  countWatchDog=0;
}
if((IFG1&WDTIFG)==WDTIFG)//сбросились по собаке
{
  IFG1&=~WDTIFG;//обнуляем флаг
  countWatchDog++;
}
}


При этом в случае, когда "int countWatchDog;" переменная всегда = 0
В случае, когда "static int countWatchDog;" переменная всегда равна 0х261. И в отладчике, после прохождения строчки "countWatchDog=0;" - значение переменной не меняется.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ListenReality   МК после сброса по WatchDog   Jan 21 2016, 09:47
- - mcheb   Компилятор по умолчанию при сбросе устанавливает у...   Jan 21 2016, 10:49
- - k155la3   Цитата(ListenReality @ Jan 21 2016, 12:47...   Jan 21 2016, 14:39
|- - jcxz   Цитата(k155la3 @ Jan 21 2016, 20:39) обра...   Jan 31 2016, 07:46
|- - k155la3   Цитата(jcxz @ Jan 31 2016, 10:46) Это кон...   Jan 31 2016, 12:24
|- - jcxz   Цитата(k155la3 @ Jan 31 2016, 18:24) Случ...   Feb 1 2016, 05:34
- - ListenReality   mcheb, k155la3 Спасибо за ваши ответы. Не вижу фа...   Jan 22 2016, 03:07
- - Obam   Так вы бы сразу указали, что не IARом пользуетесь.   Jan 22 2016, 07:56
|- - ListenReality   Цитата(Obam @ Jan 22 2016, 14:56) Так вы ...   Jan 22 2016, 08:35
|- - k155la3   Цитата(ListenReality @ Jan 22 2016, 12:35...   Jan 22 2016, 10:50
|- - jcxz   Цитата(ListenReality @ Feb 2 2016, 08:43)...   Feb 2 2016, 03:49
- - E.V.G.   В компиляторе IAR есть такая функция - int __low_...   Jan 31 2016, 09:51
- - ListenReality   Спасибо всем за помощь. Впредь буду детальнее чита...   Mar 10 2016, 03:43
- - d7d1cd   Цитата(ListenReality @ Jan 21 2016, 12:47...   Apr 24 2016, 07:08
|- - Baser   Цитата(d7d1cd @ Apr 24 2016, 10:08) Меня ...   Apr 24 2016, 11:41
- - d7d1cd   Baser, Спасибо за ответ. Он, кстати, был Вашим 100...   Apr 24 2016, 18:52


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

 


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


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