Хотите страшную сказку на ночь?
Решил тут на днях заняться одной проблемой со шкальным индикатором. Заметил, что когда светится нужное количество сегментов, следующий за ними сегмент слегка подсвечивается.
Правая шкала работает по старому алгоритму, а левая по улучшенному. Шкалы показывают одинаковые данные - +3°С. Вот на правой шкале видно, что сегмент 3.5°С чуть подсвечивает. Причина, похоже, из-за запаздывания закрывания анодного ключа. Поэтому, я решил закрывать ключ до того, как будут переключаться катоды. Для гарантированного отсутствия подсветки решил закрывать ключ за 5 мкс до переключения (левая шкала работает именно в таком режиме).
Ну и когда я заимплементил новый алгоритм, решил проверить его работу. Запрограммировал сначала показать одно деление, а потом 200 - должны светить все сегменты, кроме самого последнего. И тут мне вздумалось проверить значения, которые в памяти записываются в таблицу. Устройство было под отладчиком и чтобы посмотреть, надо было за суспендить процессор. Причем, когда процессор остановлен, таймеры продолжают работать, но не получают новые значения. Так вот катодный драйвер и продолжал мотить 1-2-3-1-2-3. В результате чего разряд постоянно и сидел на самых последних сегментах. И очень ярко, ведь скважность была не две сотни, а всего 4. Ну, посмотрел я таблицу и нажал капу, чтобы процессор работал дальше. Шкала опять развернулась, но последние несколько сегментов уже не светились - отравились?
Но через 15-20 секунд они "оттаяли" и начали светиться нормально. В общем, отделался лёгким испугом. Но теперь я долго буду думать, останавливать развёртку или нет? Ээх, надо было делать загрузку через ПДП - тогда развёртка при остановке процессора всё-равно продолжала бы работать.