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

Кто любит RISC в жизни, заходим, не стесняемся.
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

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

Сообщение ivan dimir »

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

Добавлено after 1 hour 1 minute 13 seconds:
Ау где вы?
Реклама
jcxz
Мудрый кот
Сообщения: 1726
Зарегистрирован: Вт авг 15, 2017 10:51:13

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

Сообщение jcxz »

[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191233#p4191233"]Ау где вы?[/uquote]Все ушли на фронт.
Реклама
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

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

Сообщение ivan dimir »

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

Добавлено 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 настройка таймеров.

Сообщение Аlex »

[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191233#p4191233"]Кто подскажет.?[/uquote]Документация.
Реклама
Эиком - электронные компоненты и радиодетали
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

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

Сообщение ivan dimir »

ну от смотрите.Там написано по буржуйси.
Реклама
Аватара пользователя
AVI-crak
Прорезались зубы
Сообщения: 202
Зарегистрирован: Сб янв 09, 2016 15:51:17
Контактная информация:

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

Сообщение AVI-crak »

ivan dimir писал(а):работает но как то не так.Со сбоем.
Всё верно, собака должна кусаться, если её вовремя не покормить. В документации об этом написано.
Реклама
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

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

Сообщение ivan dimir »

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

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

Сообщение AlanDrakes »

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

Сообщение ivan dimir »

Так T и W это пределы.Если счёт больше T то таймер сбросит программу.И если счёт меньше W то тоже сбросит.Так я понимаю.Ну он точнее работает.А эти два таймера можно включать одновременно.Именно те значения что вы написали нужно выставлять? А от чего это зависит?
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

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

Сообщение AlanDrakes »

:facepalm:

[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 настройка таймеров.

Сообщение ivan dimir »

А эти два таймера можно эти два таймера вместе использовать? Или они друг друга мешать будут?
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

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

Сообщение AlanDrakes »

AlanDrakes писал(а):[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191453#p4191453"]А эти два таймера можно включать одновременно.[/uquote]
Одновременно можно включать ВООБЩЕ ВСЕ периферийные блоки. В некоторых случаях даже те, которые используют одну область памяти для внутренних нужд, как в некоторых линейках кристаллов блоки CAN и USB. И даже можно как-то их заставить работать совместно.
Так что и сторожевые таймеры можно запускать параллельно.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4191643#p4191643"]А эти два таймера можно эти два таймера вместе использовать? Или они друг друга мешать будут?[/uquote]
:facepalm:

[offtop]Прошу модераторов не воспринимать это сообщение как оскорбление. Но я уже не знаю, как ещё ответить.[/offtop]
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

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

Сообщение ivan dimir »

Спасибо вам за труд.И не обижайтесь.Главное мир во всём мире.У нас тут такое месиво.Жалко всех.
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

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

Сообщение AlanDrakes »

Я понимаю, что месиво, но вы же не читаете ответов :(
А у нас ссанкции. Именно через две "с".
И давайте не будем поднимать тему политики хотя бы на электронном форуме.
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

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

Сообщение ivan dimir »

Согласен.У меня ещё вопрос по вач догам.Политика дело грязное.Она приводит иногда к таким результатам.При каких условиях вач дог независимый не сработает.А также оконный.Я имею ввиду что настроив таймер независимый и написав вкладки 0xAAAA .При включении контроллера он иногда подвисает.Незнаю как оконный.А независимый не всегда срабатывает.Почему?
Аватара пользователя
AVI-crak
Прорезались зубы
Сообщения: 202
Зарегистрирован: Сб янв 09, 2016 15:51:17
Контактная информация:

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

Сообщение AVI-crak »

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

Таймеры WWDG, IWDG не предназначены для моргания светиком. И кормить их по аппаратному таймеру - самая глупая идея, что может прийти в чью-то голову (есть публикации). Они предназначены для защиты от непредсказуемых внешних факторов. Например комбинации состояний датчиков (или входных данных) - которая приводит к значительному увеличению времени обработки сигналов.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

[uquote="AVI-crak",url="/forum/viewtopic.php?p=4192147#p4192147"]И кормить их по аппаратному таймеру - самая глупая идея, что может прийти в чью-то голову (есть публикации).[/uquote]Подпишусь. Придумать ситуацию, когда программа легла, а прерывания работают как нефиг нафиг.
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

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

Сообщение ivan dimir »

А ещё одно.Нужно наверное и аппаратно убирать всплески напряжения.Ну например.Если я захочу управлять контактором или пускателем.То программа без вач дога подвисает.А с ним сбрасывает программу.Я додумался зпаял на резонатор проводок и на корпус. И вся проблема ушла.Насчёт аппаратного таймера согласен.В AVR этот вариант катит.А в stm32 не катит.Катит лиш в том случае когда инкремент записанный в обработчике прерываний .А подпрограммка в основном цикле.Резонатор как антена эл.магнитных волн.
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

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

Сообщение AlanDrakes »

[uquote="ivan dimir",url="/forum/viewtopic.php?p=4192611#p4192611"]А ещё одно.Нужно наверное и аппаратно убирать всплески напряжения.Ну например.Если я захочу управлять контактором или пускателем.[/uquote]
Это вообще первостепенная задача в сколь-нибудь силовой электронике. Экранирование - наше всё. И здесь я не иронизирую. Ну может чуть-чуть.

[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 настройка таймеров.

Сообщение ivan dimir »

Код: Выделить всё

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

Вернуться в «ARM»