stm32 WWDG.IWDG настройка таймеров.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
stm32 WWDG.IWDG настройка таймеров.
[Решил я настроить WWDG.IWDG.Последний настроил работает но как то не так.Со сбоем.А оконный WWDG так и не понял как правильно работает .Кто подскажет.?
Добавлено after 1 hour 1 minute 13 seconds:
Ау где вы?
Добавлено after 1 hour 1 minute 13 seconds:
Ау где вы?
- Реклама
Re: stm32 WWDG.IWDG настройка таймеров.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191233#p4191233"]Ау где вы?[/uquote]Все ушли на фронт.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
Фронт Украина .Я живу в Украине.Окупация .
Добавлено after 39 minutes 14 seconds:
[uquote="jcxz",url="/forum/viewtopic.php?p=4191291#p4191291"][uquote="ivan dimir",url="/forum/viewtopic.php?p=4191233#p4191233"]Ау где вы?[/uquote]Все ушли на фронт.[/uquote] Ну может проконсультируете?
Добавлено after 39 minutes 14 seconds:
[uquote="jcxz",url="/forum/viewtopic.php?p=4191291#p4191291"][uquote="ivan dimir",url="/forum/viewtopic.php?p=4191233#p4191233"]Ау где вы?[/uquote]Все ушли на фронт.[/uquote] Ну может проконсультируете?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: stm32 WWDG.IWDG настройка таймеров.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191233#p4191233"]Кто подскажет.?[/uquote]Документация.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
ну от смотрите.Там написано по буржуйси.
- Реклама
- AVI-crak
- Прорезались зубы
- Сообщения: 202
- Зарегистрирован: Сб янв 09, 2016 15:51:17
- Контактная информация:
Re: stm32 WWDG.IWDG настройка таймеров.
Всё верно, собака должна кусаться, если её вовремя не покормить. В документации об этом написано.ivan dimir писал(а):работает но как то не так.Со сбоем.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
А чем же отличается WWDG от IWDG.Я имею ввиду что настроил таймер IWDG и в основном цикле вставки ключа сделал 0xAAAA .А тут я должен настраивать 4 параметра.Прескаллер от какого значения считать.И ещё 2 они в документации пишутся как T и W? и T>W.И когда он срабатывает в этом окне?.Или когда значения меньше.Да и ещё IWDG.Когда я вставки 0xAAAA убираю контроллер перерезагружается некоторое время а потом глохнет.И ещё одно в Кубе я зделал генерацию и там другие цифрки 0x000AAAAU.Я вставил в другой проект настроенній вручную не работает?Благодорю за помощь.Война войной а обед по расписанию.
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: stm32 WWDG.IWDG настройка таймеров.
WWDG отличается от IWDG тем, что у него прямо в названии указано, что он ОКОННЫЙ.
Проще говоря:
IWDG (независимый сторожевой таймер) можно сбрасывать в любой момент, WWDG (оконный) только при открытом окне.
Для тех, кто в закрытой комнате без гугла:
Настраиваем значение окна: WWDG->CFR = 0x43 | 0x0100;
И время от времени пытаемся сбросить значение счётчика:
WWDG->CR = 0xFF;
Только если значение счётчика в WWDG->CR больше, чем установленное в WWDG->CFR, сброса не произойдёт.
А как только значение того же WWDG->CR опустится ниже 0x40, произойдёт сброс.
Там как раз чёрным по буржуйски написано.
Настоятельно рекомендую или пропустить читаемую главу через переводчик, или наконец начать учить технический английский. У меня почему-то чтение технической документации не вызвает проблем.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191437#p4191437"]И ещё 2 они в документации пишутся как T и W? и T>W.И когда он срабатывает в этом окне?.Или когда значения меньше.[/uquote]
Снова документация, описание регистров:
Проще говоря:
IWDG (независимый сторожевой таймер) можно сбрасывать в любой момент, WWDG (оконный) только при открытом окне.
Для тех, кто в закрытой комнате без гугла:
Настраиваем значение окна: WWDG->CFR = 0x43 | 0x0100;
И время от времени пытаемся сбросить значение счётчика:
WWDG->CR = 0xFF;
Только если значение счётчика в WWDG->CR больше, чем установленное в WWDG->CFR, сброса не произойдёт.
А как только значение того же WWDG->CR опустится ниже 0x40, произойдёт сброс.
Там как раз чёрным по буржуйски написано.
Настоятельно рекомендую или пропустить читаемую главу через переводчик, или наконец начать учить технический английский. У меня почему-то чтение технической документации не вызвает проблем.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191437#p4191437"]И ещё 2 они в документации пишутся как T и W? и T>W.И когда он срабатывает в этом окне?.Или когда значения меньше.[/uquote]
Снова документация, описание регистров:
Control register (WWDG_CR)
Bits 31:8 Reserved, must be kept at reset value.
Bit 7 WDGA: Activation bit
This bit is set by software and only cleared by hardware after a reset. When WDGA = 1, the watchdog can generate a reset.
0: Watchdog disabled
1: Watchdog enabled
Bits 6:0 T[6:0]: 7-bit counter (MSB to LSB)
These bits contain the value of the watchdog counter. It is decremented every (4096 x 2 WDGTB[1:0] ) PCLK1 cycles. A reset is produced when it rolls over from 0x40 to 0x3F (T6 becomes cleared).
<...>
Configuration register (WWDG_CFR)
Bit 9 EWI: Early wakeup interrupt
When set, an interrupt occurs whenever the counter reaches the value 0x40. This interrupt is only cleared by hardware after a reset.
Bits 8:7 WDGTB[1:0]: Timer base
The time base of the prescaler can be modified as follows:
00: CK Counter Clock (PCLK1 div 4096) div 1
01: CK Counter Clock (PCLK1 div 4096) div 2
10: CK Counter Clock (PCLK1 div 4096) div 4
11: CK Counter Clock (PCLK1 div 4096) div 8
Bits 6:0 W[6:0]: 7-bit window value
These bits contain the window value to be compared to the downcounter.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
Так T и W это пределы.Если счёт больше T то таймер сбросит программу.И если счёт меньше W то тоже сбросит.Так я понимаю.Ну он точнее работает.А эти два таймера можно включать одновременно.Именно те значения что вы написали нужно выставлять? А от чего это зависит?
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: stm32 WWDG.IWDG настройка таймеров.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191453#p4191453"]Так T и W это пределы.Если счёт больше T то таймер сбросит программу.[/uquote]
Во-первых, этот таймер считает вниз.
Во-вторых, с какого перепугу? Сброс происходит при переходе T из 0x40 в 0x3F (при очистке бита #6 (0x40)).
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191453#p4191453"]И если счёт меньше W то тоже сбросит.Так я понимаю.Ну он точнее работает.[/uquote]
Нет.
Ещё раз предлагаю прочитать Reference Manual.
Либо ещё раз МЕДЛЕННО прочитать то, что я написал. Я почти дословно перевёл часть текста.
Мне ещё картинку перевести оттуда же?
T[6:0] находится в регистре WWDG->CR
W[6:0] находится в регистре WWDG->CFR
Пока значение T больше значения W, запись нового значения в T не произойдёт. Но когда T < W (но при этом больше чем 0x40) - записать новое значение можно. И это приведёт к обновлению значения T до "безопасного"
Грубо говоря:
W == 0x45
T == 0x60
Пишем T = 0x7F.
Так как T > W, запись завершится неудачей.
T == 0x60 (или 0x59, если таймер тикнул)
Теперь попытаемся записать чуть позже:
W == 0x45
T == 0x44
Пишем T = 0x7F
Так как T < W (но больше 0x40), значение запишется успешно.
T == 0x7F
W == 0x45
Что сложного?
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191453#p4191453"]А эти два таймера можно включать одновременно.[/uquote]
Одновременно можно включать ВООБЩЕ ВСЕ периферийные блоки. В некоторых случаях даже те, которые используют одну область памяти для внутренних нужд, как в некоторых линейках кристаллов блоки CAN и USB. И даже можно как-то их заставить работать совместно.
Так что и сторожевые таймеры можно запускать параллельно.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191453#p4191453"]Именно те значения что вы написали нужно выставлять? А от чего это зависит?[/uquote]
Можно. Я взял эти значения от балды на самом деле. Просто для примера, используя крайне узкое окно всего в 3 тика таймера. Его можно делать и шире (хоть до 0x7F, хотя в этом случае он перестанет быть оконным, ибо размер окна равен максимальному значению регистра, значит обновлять значение можно в любой момент).
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
А эти два таймера можно эти два таймера вместе использовать? Или они друг друга мешать будут?
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: stm32 WWDG.IWDG настройка таймеров.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191643#p4191643"]А эти два таймера можно эти два таймера вместе использовать? Или они друг друга мешать будут?[/uquote]AlanDrakes писал(а):[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191453#p4191453"]А эти два таймера можно включать одновременно.[/uquote]
Одновременно можно включать ВООБЩЕ ВСЕ периферийные блоки. В некоторых случаях даже те, которые используют одну область памяти для внутренних нужд, как в некоторых линейках кристаллов блоки CAN и USB. И даже можно как-то их заставить работать совместно.
Так что и сторожевые таймеры можно запускать параллельно.
[offtop]Прошу модераторов не воспринимать это сообщение как оскорбление. Но я уже не знаю, как ещё ответить.[/offtop]
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
Спасибо вам за труд.И не обижайтесь.Главное мир во всём мире.У нас тут такое месиво.Жалко всех.
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: stm32 WWDG.IWDG настройка таймеров.
Я понимаю, что месиво, но вы же не читаете ответов 
А у нас ссанкции. Именно через две "с".
И давайте не будем поднимать тему политики хотя бы на электронном форуме.
А у нас ссанкции. Именно через две "с".
И давайте не будем поднимать тему политики хотя бы на электронном форуме.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
Согласен.У меня ещё вопрос по вач догам.Политика дело грязное.Она приводит иногда к таким результатам.При каких условиях вач дог независимый не сработает.А также оконный.Я имею ввиду что настроив таймер независимый и написав вкладки 0xAAAA .При включении контроллера он иногда подвисает.Незнаю как оконный.А независимый не всегда срабатывает.Почему?
- AVI-crak
- Прорезались зубы
- Сообщения: 202
- Зарегистрирован: Сб янв 09, 2016 15:51:17
- Контактная информация:
Re: stm32 WWDG.IWDG настройка таймеров.
Ты думал в сказку попал?ivan dimir писал(а):При включении контроллера он иногда подвисает.
Собака используется для защиты ценного оборудования, например целого дома, в котором работает газовый котёл с твоим мк. Программа газового котла имеет основной цикл, который должен прогнозируемо выполниться допустим за 50мс. Там всё: и опрос датчиков, и дёрганье лапками, и управление периферией, и даже программная диагностика. Всё это выполняется за 50мс или чуть меньше, и в самом конце цикла кормим собаку. А когда подвисает, и общее время становится 51мс - вот тогда собака кусается, и ресетит мк.
Таймеры WWDG, IWDG не предназначены для моргания светиком. И кормить их по аппаратному таймеру - самая глупая идея, что может прийти в чью-то голову (есть публикации). Они предназначены для защиты от непредсказуемых внешних факторов. Например комбинации состояний датчиков (или входных данных) - которая приводит к значительному увеличению времени обработки сигналов.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32 WWDG.IWDG настройка таймеров.
[uquote="AVI-crak",url="/forum/viewtopic.php?p=4192147#p4192147"]И кормить их по аппаратному таймеру - самая глупая идея, что может прийти в чью-то голову (есть публикации).[/uquote]Подпишусь. Придумать ситуацию, когда программа легла, а прерывания работают как нефиг нафиг.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
А ещё одно.Нужно наверное и аппаратно убирать всплески напряжения.Ну например.Если я захочу управлять контактором или пускателем.То программа без вач дога подвисает.А с ним сбрасывает программу.Я додумался зпаял на резонатор проводок и на корпус. И вся проблема ушла.Насчёт аппаратного таймера согласен.В AVR этот вариант катит.А в stm32 не катит.Катит лиш в том случае когда инкремент записанный в обработчике прерываний .А подпрограммка в основном цикле.Резонатор как антена эл.магнитных волн.
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: stm32 WWDG.IWDG настройка таймеров.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4192611#p4192611"]А ещё одно.Нужно наверное и аппаратно убирать всплески напряжения.Ну например.Если я захочу управлять контактором или пускателем.[/uquote]
Это вообще первостепенная задача в сколь-нибудь силовой электронике. Экранирование - наше всё. И здесь я не иронизирую. Ну может чуть-чуть.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4192611#p4192611"]А в stm32 не катит.Катит лиш в том случае когда инкремент записанный в обработчике прерываний .А подпрограммка в основном цикле.[/uquote]
Нельзя сбрасывать сторожевой таймер из прерывания аппаратного таймера. Это не имеет смысла.
Скажем, программа повисла, зато обработчик прерывания да пусть того же SysTick'а, продолжает мерно тикать и сбрасывать сторожевой таймер. А программа повисла. Но таймер сбрасывается. Но устройство не работает. Хотя таймер сбрасывается.
Улавливаете?
Сброс таймера должен производиться в основном рабочем цикле.
Это вообще первостепенная задача в сколь-нибудь силовой электронике. Экранирование - наше всё. И здесь я не иронизирую. Ну может чуть-чуть.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4192611#p4192611"]А в stm32 не катит.Катит лиш в том случае когда инкремент записанный в обработчике прерываний .А подпрограммка в основном цикле.[/uquote]
Нельзя сбрасывать сторожевой таймер из прерывания аппаратного таймера. Это не имеет смысла.
Скажем, программа повисла, зато обработчик прерывания да пусть того же SysTick'а, продолжает мерно тикать и сбрасывать сторожевой таймер. А программа повисла. Но таймер сбрасывается. Но устройство не работает. Хотя таймер сбрасывается.
Улавливаете?
Сброс таймера должен производиться в основном рабочем цикле.
Код: Выделить всё
while (1) {
Задача1();
Задача2();
Сброс_Сторожевого_Таймера();
__WFI(); // Здоровый крепкий сон
};
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 WWDG.IWDG настройка таймеров.
Код: Выделить всё
__WFI(); // Здоровый крепкий сон

