[an error occurred while processing this directive]
|
Итак, бегущая строка...
Mega64, Timer1 в режиме Fast PWM top=OCR1A, выход ШИМ- inverted OC1B, частота 800 Гц.
По TOP вызывается прерывание.
В прерывании происходит последовательная загрузка данных в драйверы светодиодов.
ШИМ управляет общей яркостью.
При сканировании строк (динамическая индикация) имеется факт постсвечения строки в связи с медленным закрыванием транзисторов-ключей строк. Необходимо уменьшать яркость экрана до минимума на интервал времени, включающий в себя захватывание данных в драйверы светодиодов, переключение строки, а также соответствующие задержки.
То есть мне нужно принудительно на этот момент времени явно подать на вывод ШИМ единицу(откл.экрана).
Пробовал делать так: отключал на этот интервал вывод OC1B (COM1B1=0,COM1B0=0), выдавал на порт единицу, задержка, ноль на порт,далее заново включал OC1B.
Однако, получается , если факт совпадения OCR1B приходится на этот временной интервал, сравнения и установки бита ШИМ не происходит.
(Внешне выглядит так, что при последовательном снижении яркости экрана со 100% до 0% (ШИМ 0-100%) наблюдается где-то посередке провал яркости до нуля (100% ШИМ). Пробовал дергать бит FOC- не помогает. Была идея дергать DDR- вроде не получится-подтяжек по выходу нет, паяльником уже не подлезть.
Временно работает так: Яркость 100% - дергаем пином ОС1B, меняем яркость-пин не дергаем, терпим глюки с подсветкой соседних строк.
Как решить проблему?-/
E-mail: info@telesys.ru