LAS9891 0 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба Контроллер GigaDevice GD32F103RBT6. Вопрос в заголовке. Использую FWDGT. Запускается и ресетится как надо, а как его выключить, если он перестал быть нужным? В регистрах нужного бита не нашёл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 5 minutes ago, LAS9891 said: В регистрах нужного бита не нашёл. Лень смотреть доку. Но возможно, что сделано это в целях безопасности. Нельзя отключить сторожевую собаку, которую заставили охранять целостность ПО. Ведь отключить его может потенциальная ошибка программы. Включили, живите с ним) На это намекает и постоянное включение сторожевика через биты опций. Т.е. без участия кода, и таймер включается сразу же со стартом микроконтроллера, вернее, заводстким загрузчиком. Но к старту Вашего кода он уже запущен и работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 1 час назад, haker_fox сказал: Лень смотреть доку. Но возможно, что сделано это в целях безопасности. Это не возможно, это так и есть. Отключаемый WDT - это бесполезный WDT. Даже просто "включаемый WDT" - это уже бесполезный WDT. WDT должен быть включен всегда. В работающей программе. И что такое "перестал быть нужным"? Т.е. - на старте программа может содержать ошибки, а начиная с какого-то момента работы - становится идеальной? PS: Вроде как вопрос задаётся не в ветке для чайников, а таких само собой разумеющихся вещей не понимать - это очень странно.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0men 2 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба On 12/13/2023 at 11:17 AM, LAS9891 said: Контроллер GigaDevice GD32F103RBT6. Вопрос в заголовке. Использую FWDGT. Запускается и ресетится как надо, а как его выключить, если он перестал быть нужным? В регистрах нужного бита не нашёл. FWDGT клокируется от IRC40K. Это клок можно выключить в регистре RCU_RSTSCK битом IRC40KEN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 13 декабря, 2023 Опубликовано 13 декабря, 2023 (изменено) · Жалоба клокируется Клокуется!!! "рука-лицо" \-8<Ж "Вам чизу послайсать или так, целым писом возьмёте?" Это клок можно выключить в регистре RCU_RSTSCK битом IRC40KEN Тем более бессмысленный WDT, если у него можно "отрубить" тактовый сигнал. Изменено 13 декабря, 2023 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 14 декабря, 2023 Опубликовано 14 декабря, 2023 · Жалоба 3 hours ago, Obam said: Тем более бессмысленный WDT, если у него можно "отрубить" тактовый сигнал. Всё зависит от области применения микроконтроллера. Думаю, что если он стоит в каком-либо лабораторном приборе, то зависание микроконтроллера - ведь неприятная, но не приводящая к экономическим потерям и т.п. результатам. Если же такой МК стоит на плате привода лифта, то внешний сторожевой таймер - единственный допустимый вариант. P.S. На счёт лабораторного оборудования, конечно, не всё так просто. В случае зависания какого-нибудь вольтметра, измеряющего непрерывно процесс в течение нескольких суток, экономический ущерб тоже может оказаться довольно большим. P.S.S. Насколько я понимаю, если таймер включить с помощью байт опций (option bytes), то он всё равно будет включен программно, но загрузчиком, встроенным в микроконтроллер на заводе. А это значит, что его надёжность всё же ниже, чем надёжность таймера внешнего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 14 декабря, 2023 Опубликовано 14 декабря, 2023 · Жалоба 10 часов назад, Obam сказал: Тем более бессмысленный WDT, если у него можно "отрубить" тактовый сигнал. Это же "чайный" контроллер. Если разработчики контроллера не догадались заблокировать возможность выключения тактирования при разрешённом WDT, то, да - это бессмысленный WDT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 14 декабря, 2023 Опубликовано 14 декабря, 2023 · Жалоба 7 часов назад, haker_fox сказал: Всё зависит от области применения микроконтроллера. Думаю, что если он стоит в каком-либо лабораторном приборе, то зависание микроконтроллера - ведь неприятная, но не приводящая к экономическим потерям и т.п. результатам. Не согласен. Представьте, что у вас на столе стоит прибор, который вобщем-то работает, но иногда вдруг виснет или перезапускается из-за какой-то помехи (например - включившегося/выключившегося рядом холодильника). При том, что другие приборы на неё не реагируют. Да - скорее всего вы просто будете отзываться о его разработчиках нехорошими словами после каждого зависания, но скорее всего не выкинете его. Даже если перезапуск прибора произойдёт в самый неподходящий момент, когда на его экране находились результаты измерений, которые стоило получить немалых трудов (представьте: Вы отлаживаете девайс, в котором происходят редкие, непериодические сбои. Вы потратили целый день, пытаясь их воспроизвести и захватить на осциллографе картинку с проявлением этого сбоя. Вам это наконец-то удалось, Вы воскликнули "Эврика!" и........ тут включился холодильник ). Когда в следующий раз потребуется пополнить парк ваших измерительных приборов, я думаю - вы скорее всего предпочтёте этому глючному прибору другой, от другого производителя. Так ведь? И скорее всего - к любым приборам от этого производителя станете относиться с недоверием, и будете предпочитать им аналоги от других производителей? А значит - это приведёт к экономическим потерям для производителя сего глючного девайса. И "лабораторный прибор", имхо - вещь довольно серьёзная, чтобы экономить в нём на пуговицах, разочаровывая своих пользователей и теряя их. 7 часов назад, haker_fox сказал: P.S.S. Насколько я понимаю, если таймер включить с помощью байт опций (option bytes), то он всё равно будет включен программно, но загрузчиком, встроенным в микроконтроллер на заводе. А это значит, что его надёжность всё же ниже, чем надёжность таймера внешнего. Если таймер включается ROM-загрузчиком, то почему МК не может зависнуть в этом загрузчике, не дойдя до включения WDT? Как правило - помехи ходят пачками. Первый импульс пачки помех перегружает контроллер, второй - случается во время выполнеия ROM-кода. Любой WDT, который включается/выключается неким устройством, которое может зависнуть - априори ненадёжен. WDT не должен управляться защищаемым устройством. Никак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 14 декабря, 2023 Опубликовано 14 декабря, 2023 · Жалоба В STM32 (а значит, скорее всего, и в GD32) бит в байтах опций отвечает за аппаратное включение WDT при старте. А при BOOT0 == 0 никакого выполнения из ROM-области не происходит, CPU стартует как описано в RM на Cortex-M. Загнать в таком случае устройство в кирпич внешним помеховым воздействием значит, что плата спроектирована не помехоустойчивой. P.S. Вообще самое интересное начинается тогда, когда внешний WDT нужно каким-то образом единократно "попросить" подождать, пока загрузится ОС. Приходилось использовать специализированные микросхемы. Т.е. WDT не отключался, а лишь после сброса и до первого перепада на WDI принудительно увеличивал таймаут ожидания в несколько раз больший, чем при штатной работе. Ну а зависания, не исправляемые банальным сбросом CPU (на случай непреднамеренного защелкивания КМОП внутри), я парировал сбросом питания всего процессорного узла, т.е. WDT стоял на входе EN системы питания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 14 декабря, 2023 Опубликовано 14 декабря, 2023 · Жалоба 8 минут назад, Arlleex сказал: самое интересное начинается тогда, когда внешний WDT нужно каким-то образом единократно "попросить" подождать, пока загрузится ОС. ISR от таймера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 14 декабря, 2023 Опубликовано 14 декабря, 2023 · Жалоба Только что, jcxz сказал: ISR от таймера. WDT-схема - железобетонная внешняя. RESET-выход заводится на EN системы питания или (что было для нас невозможным) RESET CPU. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба В 13.12.2023 в 20:06, 0men сказал: FWDGT клокируется от IRC40K. Это клок можно выключить в регистре RCU_RSTSCK битом IRC40KEN Согласно UserManual (рисунок тактирования МК), данный бит отключает частоту от RTC, на FWDT частота идет всегда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0men 2 15 декабря, 2023 Опубликовано 15 декабря, 2023 · Жалоба On 12/15/2023 at 1:05 PM, Edit2007 said: Согласно UserManual (рисунок тактирования МК), данный бит отключает частоту от RTC, на FWDT частота идет всегда. согласно рисунку от RTC отключает RTCSRC[1:0], а IRC40KEN отключает сам клок IRC40K Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться