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

 
 
 
Reply to this topicStart new topic
> Проблема с Watchdog, STM32F10X
Jenya7
сообщение Nov 25 2013, 06:50
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Инициализирую собаку
Код
void IWD_Init(void)
{
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

    IWDG_SetPrescaler(IWDG_Prescaler_16);

    IWDG_SetReload(0xFFF);

    IWDG_ReloadCounter();

     IWDG_Enable();
}


Чтоб проверить ставлю заглушку в мэйне
Код
int main(void)
{
  
  GlobalInit();
  UsartSendString("Start\r");
  while(1)
  {
    
    switch(mot_state)
   {
      //some code
    }

     while(1)
    {
          //zaglushka
     }

    if(rx_command_recieved)
    {
        //some code
    }

     IWDG_SetReload(0xFFF);
    IWDG_ReloadCounter();
  }


После 4-5 рисетов камень умирает и оживить его можно только передернув питание. cranky.gif
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Nov 25 2013, 07:39
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Для перезапуска таймера IWDG_SetReload(0xFFF) не нужен.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Nov 25 2013, 07:42
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(vlad_new @ Nov 25 2013, 12:39) *
Для перезапуска таймера IWDG_SetReload(0xFFF) не нужен.

спасибо за информацию, не знал. но проблема все равно осталась.
Go to the top of the page
 
+Quote Post
adnega
сообщение Nov 25 2013, 07:56
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Jenya7 @ Nov 25 2013, 11:42) *
спасибо за информацию, не знал. но проблема все равно осталась.

А пробовали разобраться в чем заключается "умирание"?
Причина может быть никак не связана со сторожевым таймером...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 25 2013, 08:24
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я попробовал на STM32F207.
Код
/* Инициализация */
  IWDG->KR = 0x5555;        // Key
  // IWDG->PR = 5;            // Prescaler /128 (4 ms)
  IWDG->PR = 3;            // Prescaler /32  (1 ms)
  IWDG->RLR = 0xFFF;        // 4096 (> 16 s) -> > 4 s
  IWDG->KR = 0xCCCC;        // Start

/* Перезапуск */
  IWDG->KR =  0xAAAA;        // Reload Independent Whatchdog Timer

Все просто, все работает...
Go to the top of the page
 
+Quote Post
adnega
сообщение Nov 25 2013, 08:34
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(ViKo @ Nov 25 2013, 12:24) *
Все просто, все работает...

Когда-то давно я уже писал, что в "готовке" есть некоторые тонкие моменты...
Например, при сбросе на ножке RESET будет импульс отрицательной полярности, который собственно камень-то и сбрасывает.
Если по каким-либо причинам этому импульсу не бывать (например, RESET "хорошо притянут" к VCC), то сброса не будет и программа
продолжит исполняться дальше (тот же while(1)).
Дополню: "хорошо притянут" - это и емкий конденсотор на RESET.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 25 2013, 08:50
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



У меня NRST подтянут к питанию через 4.7 кОм, а сигналы сброса подаются в эту цепь через диоды (анод - к резистору, катод - к источнику сброса). Вот и нет никаких чудес. Почему так сделал, не знаю... само нарисовалось. laughing.gif
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Nov 25 2013, 08:56
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(ViKo @ Nov 25 2013, 13:50) *
У меня NRST подтянут к питанию через 4.7 кОм, а сигналы сброса подаются в эту цепь через диоды (анод - к резистору, катод - к источнику сброса). Вот и нет никаких чудес. Почему так сделал, не знаю... само нарисовалось. laughing.gif

вот схема демо борда. вроде никакого криминала.
Прикрепленные файлы
Прикрепленный файл  STM32F103R.pdf ( 545.05 килобайт ) Кол-во скачиваний: 28
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 25 2013, 09:07
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Jenya7 @ Nov 25 2013, 11:56) *
вот схема демо борда. вроде никакого криминала.

Может, и есть, как сказал adnega. Конденсатор C3 заряжен до 3,3В, и должен разрядиться при срабатывании IWDG. Попробуйте уменьшить в 10 раз.
Go to the top of the page
 
+Quote Post
adnega
сообщение Nov 25 2013, 09:30
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(ViKo @ Nov 25 2013, 13:07) *
Может, и есть, как сказал adnega. Конденсатор C3 заряжен до 3,3В, и должен разрядиться при срабатывании IWDG. Попробуйте уменьшить в 10 раз.

Я не настаиваю)) По схеме особого криминала не вижу:
- если J1 и J2 оба на земле (а не в воздухе),
- если к JP1 не подключен отладчик (который может на NRST воздействовать).

Нужно разобраться, где продолжает работать программа. Контроллер не может "умирать" - скорее всего он продолжает крутить while(1)...
или находится в HardFault))
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Nov 25 2013, 09:56
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Позвольте не согласиться с этой схемой. По даташыту выходной ток на лапу не должен привышать 50 ма, а потому последовательно с лапой nrst извольте поставить резистор 68 ом, а дальше можете куда угодно и как угодно подтягивать. К стате последовательно с кнопкой ресет резистор то же не помешал бы.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Nov 25 2013, 10:48
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



я пробовал и с подключенным отладчиком и без него. придется помахать паяльником. доложу что получилось.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Nov 25 2013, 19:32
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



в вайле бы диодом мигали или на порт что-то слали бы... можно было бы понять отпустило его или нет...
Go to the top of the page
 
+Quote Post
adnega
сообщение Nov 25 2013, 19:51
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Golikov A. @ Nov 25 2013, 23:32) *
в вайле бы диодом мигали или на порт что-то слали бы... можно было бы понять отпустило его или нет...

+1
И в прерывании от таймера (например, Systick) вторым светодиодом.
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Nov 26 2013, 02:40
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



По скольку у других проблемм с рестартом от собаки не было, то что то банальное ищите. Проседание питания, лапа не пропаяна, кварц не всегда запускается и.т.д. Уберите все свои уарты и систики. Просто включайте светодиод при старте. Отделите железо от программы.
Go to the top of the page
 
+Quote Post

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

 


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


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