Защиты от ошибок в UTC

Блог проекта UTC
UTC становится довольно сложной штукой, и, как с любой сложной штукой, в нем могут остаться не отловленные ошибки. Благодаря возможности обновлять прошивку, я могу исправлять ошибки когда UTC уже у пользователей, но очень не хотелось бы, чтобы при этом взрывались транзисторы. В UTC есть два механизма, которые позволяют избежать взрывов даже если в программу закралась ошибка.

Картинка для привлечения внимания

Ограничитель прерывателя
Первый механизм — ограничитель прерывателя. Он защищает от превышения частоты/периода повторения стриммера. Ограничитель работает и с внешними и с внутренними прерывателями, поэтому имеет смысл запустить его даже при использовании внутреннего прерывателя.

Ограничитель прерывателя

Ограничитель сделан так, что он может только отключать прерыватель:
assign out = interrupter_async & enable;

Поэтому, если глюкнет сам ограничитель, ничего страшного он сделать не сможет.

Рекомендую держать ограничитель включенным и настроить его на максимальные параметры вашего прерывателя.

Защита от сквозняка
Второй механизм — нововведение в версии 4. Он работает всегда и просто проверяет фактические уровни на выходных ножках. Если уровни получились такими, что в силовухе может произойти сквозняк, UTC устанавливает на всех выходах 0 и начинает мигать красным светодиодом до отключения питания.

Пока UTC поддерживал только GDT это было не актуально — GDT не может открыть два транзистора в плече, но это стало актуально для режимов с двумя GDT и для внешних (опто-)драйверов.

До сих пор, эта защита ни разу не срабатывала (за исключением специальных тестов), так что за прошлые версии контроллеров я спокоен.

Как оказывается, практически любую сложную систему можно обезопасить такими вот простыми проверками на «вменяемость» выходных сигналов в процессе выполнения. Я довольно давно использую этот метод, и иногда он выручает.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.