Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

stm32 WWDG.IWDG настройка таймеров.

Пн фев 28, 2022 19:55:41

[Решил я настроить WWDG.IWDG.Последний настроил работает но как то не так.Со сбоем.А оконный WWDG так и не понял как правильно работает .Кто подскажет.?

Добавлено after 1 hour 1 minute 13 seconds:
Ау где вы?

Re: stm32 WWDG.IWDG настройка таймеров.

Пн фев 28, 2022 19:59:06

Ау где вы?
Все ушли на фронт.

Re: stm32 WWDG.IWDG настройка таймеров.

Пн фев 28, 2022 21:14:13

Фронт Украина .Я живу в Украине.Окупация .

Добавлено after 39 minutes 14 seconds:
Ау где вы?
Все ушли на фронт.
Ну может проконсультируете?

Re: stm32 WWDG.IWDG настройка таймеров.

Пн фев 28, 2022 21:16:58

Кто подскажет.?
Документация.

Re: stm32 WWDG.IWDG настройка таймеров.

Пн фев 28, 2022 21:34:17

ну от смотрите.Там написано по буржуйси.

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 03:19:22

ivan dimir писал(а):работает но как то не так.Со сбоем.

Всё верно, собака должна кусаться, если её вовремя не покормить. В документации об этом написано.

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 04:16:33

А чем же отличается WWDG от IWDG.Я имею ввиду что настроил таймер IWDG и в основном цикле вставки ключа сделал 0xAAAA .А тут я должен настраивать 4 параметра.Прескаллер от какого значения считать.И ещё 2 они в документации пишутся как T и W? и T>W.И когда он срабатывает в этом окне?.Или когда значения меньше.Да и ещё IWDG.Когда я вставки 0xAAAA убираю контроллер перерезагружается некоторое время а потом глохнет.И ещё одно в Кубе я зделал генерацию и там другие цифрки 0x000AAAAU.Я вставил в другой проект настроенній вручную не работает?Благодорю за помощь.Война войной а обед по расписанию.

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 06:18:34

WWDG отличается от IWDG тем, что у него прямо в названии указано, что он ОКОННЫЙ.
Проще говоря:
IWDG (независимый сторожевой таймер) можно сбрасывать в любой момент, WWDG (оконный) только при открытом окне.
Для тех, кто в закрытой комнате без гугла:
Настраиваем значение окна: WWDG->CFR = 0x43 | 0x0100;
И время от времени пытаемся сбросить значение счётчика:
WWDG->CR = 0xFF;

Только если значение счётчика в WWDG->CR больше, чем установленное в WWDG->CFR, сброса не произойдёт.
А как только значение того же WWDG->CR опустится ниже 0x40, произойдёт сброс.

Там как раз чёрным по буржуйски написано.
Настоятельно рекомендую или пропустить читаемую главу через переводчик, или наконец начать учить технический английский. У меня почему-то чтение технической документации не вызвает проблем.

И ещё 2 они в документации пишутся как T и W? и T>W.И когда он срабатывает в этом окне?.Или когда значения меньше.

Снова документация, описание регистров:
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.

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 06:53:45

Так T и W это пределы.Если счёт больше T то таймер сбросит программу.И если счёт меньше W то тоже сбросит.Так я понимаю.Ну он точнее работает.А эти два таймера можно включать одновременно.Именно те значения что вы написали нужно выставлять? А от чего это зависит?

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 08:46:54

:facepalm:

Так T и W это пределы.Если счёт больше T то таймер сбросит программу.

Во-первых, этот таймер считает вниз.
Во-вторых, с какого перепугу? Сброс происходит при переходе T из 0x40 в 0x3F (при очистке бита #6 (0x40)).
И если счёт меньше W то тоже сбросит.Так я понимаю.Ну он точнее работает.


Нет.
Ещё раз предлагаю прочитать 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

Что сложного?
А эти два таймера можно включать одновременно.

Одновременно можно включать ВООБЩЕ ВСЕ периферийные блоки. В некоторых случаях даже те, которые используют одну область памяти для внутренних нужд, как в некоторых линейках кристаллов блоки CAN и USB. И даже можно как-то их заставить работать совместно.
Так что и сторожевые таймеры можно запускать параллельно.

Именно те значения что вы написали нужно выставлять? А от чего это зависит?

Можно. Я взял эти значения от балды на самом деле. Просто для примера, используя крайне узкое окно всего в 3 тика таймера. Его можно делать и шире (хоть до 0x7F, хотя в этом случае он перестанет быть оконным, ибо размер окна равен максимальному значению регистра, значит обновлять значение можно в любой момент).

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 12:50:50

А эти два таймера можно эти два таймера вместе использовать? Или они друг друга мешать будут?

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 13:39:47

AlanDrakes писал(а):
А эти два таймера можно включать одновременно.

Одновременно можно включать ВООБЩЕ ВСЕ периферийные блоки. В некоторых случаях даже те, которые используют одну область памяти для внутренних нужд, как в некоторых линейках кристаллов блоки CAN и USB. И даже можно как-то их заставить работать совместно.
Так что и сторожевые таймеры можно запускать параллельно.

А эти два таймера можно эти два таймера вместе использовать? Или они друг друга мешать будут?

:facepalm:

[offtop]Прошу модераторов не воспринимать это сообщение как оскорбление. Но я уже не знаю, как ещё ответить.[/offtop]

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 13:56:18

Спасибо вам за труд.И не обижайтесь.Главное мир во всём мире.У нас тут такое месиво.Жалко всех.

Re: stm32 WWDG.IWDG настройка таймеров.

Вт мар 01, 2022 14:07:34

Я понимаю, что месиво, но вы же не читаете ответов :(
А у нас ссанкции. Именно через две "с".
И давайте не будем поднимать тему политики хотя бы на электронном форуме.

Re: stm32 WWDG.IWDG настройка таймеров.

Ср мар 02, 2022 07:08:12

Согласен.У меня ещё вопрос по вач догам.Политика дело грязное.Она приводит иногда к таким результатам.При каких условиях вач дог независимый не сработает.А также оконный.Я имею ввиду что настроив таймер независимый и написав вкладки 0xAAAA .При включении контроллера он иногда подвисает.Незнаю как оконный.А независимый не всегда срабатывает.Почему?

Re: stm32 WWDG.IWDG настройка таймеров.

Ср мар 02, 2022 09:48:05

ivan dimir писал(а):При включении контроллера он иногда подвисает.

Ты думал в сказку попал?
Собака используется для защиты ценного оборудования, например целого дома, в котором работает газовый котёл с твоим мк. Программа газового котла имеет основной цикл, который должен прогнозируемо выполниться допустим за 50мс. Там всё: и опрос датчиков, и дёрганье лапками, и управление периферией, и даже программная диагностика. Всё это выполняется за 50мс или чуть меньше, и в самом конце цикла кормим собаку. А когда подвисает, и общее время становится 51мс - вот тогда собака кусается, и ресетит мк.

Таймеры WWDG, IWDG не предназначены для моргания светиком. И кормить их по аппаратному таймеру - самая глупая идея, что может прийти в чью-то голову (есть публикации). Они предназначены для защиты от непредсказуемых внешних факторов. Например комбинации состояний датчиков (или входных данных) - которая приводит к значительному увеличению времени обработки сигналов.

Re: stm32 WWDG.IWDG настройка таймеров.

Ср мар 02, 2022 09:57:22

И кормить их по аппаратному таймеру - самая глупая идея, что может прийти в чью-то голову (есть публикации).
Подпишусь. Придумать ситуацию, когда программа легла, а прерывания работают как нефиг нафиг.

Re: stm32 WWDG.IWDG настройка таймеров.

Чт мар 03, 2022 08:43:34

А ещё одно.Нужно наверное и аппаратно убирать всплески напряжения.Ну например.Если я захочу управлять контактором или пускателем.То программа без вач дога подвисает.А с ним сбрасывает программу.Я додумался зпаял на резонатор проводок и на корпус. И вся проблема ушла.Насчёт аппаратного таймера согласен.В AVR этот вариант катит.А в stm32 не катит.Катит лиш в том случае когда инкремент записанный в обработчике прерываний .А подпрограммка в основном цикле.Резонатор как антена эл.магнитных волн.

Re: stm32 WWDG.IWDG настройка таймеров.

Чт мар 03, 2022 10:44:14

А ещё одно.Нужно наверное и аппаратно убирать всплески напряжения.Ну например.Если я захочу управлять контактором или пускателем.

Это вообще первостепенная задача в сколь-нибудь силовой электронике. Экранирование - наше всё. И здесь я не иронизирую. Ну может чуть-чуть.

А в stm32 не катит.Катит лиш в том случае когда инкремент записанный в обработчике прерываний .А подпрограммка в основном цикле.

Нельзя сбрасывать сторожевой таймер из прерывания аппаратного таймера. Это не имеет смысла.
Скажем, программа повисла, зато обработчик прерывания да пусть того же SysTick'а, продолжает мерно тикать и сбрасывать сторожевой таймер. А программа повисла. Но таймер сбрасывается. Но устройство не работает. Хотя таймер сбрасывается.
Улавливаете?

Сброс таймера должен производиться в основном рабочем цикле.
Код:
while (1) {
 Задача1();
 Задача2();
 Сброс_Сторожевого_Таймера();
 __WFI(); // Здоровый крепкий сон
};

Re: stm32 WWDG.IWDG настройка таймеров.

Чт мар 03, 2022 18:31:01

Код:
__WFI(); // Здоровый крепкий сон
А это обязательно.?.Ведь говорят в сон ввести можно а пробудить или прерыванием внешним или ресетом?
Ответить