|
Обобщение алгоритмов работы управляемых подсистемИсходный текст управляющего кода можно взять здесь. Итак, контроллер управляет индикатором, используя динамический (даже - дважды динамический) режим, получает команды от ИК-пульта и обменивается информацией с компьютером. ИндикаторИнформация принимается по интерфейсу rs232 в модифицированной версии КОИ-8, посылка должна содержать 16 байт и быть передана менее чем за 0.1с. В противном случае считается, что при передаче произошел сбой и принятая строка игнорируется. Также можно сбросить буфер приёма, передав специальный код 0xFF. Правильно принятая строка копируется в видеобуфер. Процедура обновления индикатора работает по таймерным прерываниям 2000 Гц. Каждое прерывание вызывает переключение группы анодов (матрица символа - 7x5 точек - пять групп по семь анодов в каждой). Аноды включаются в соответствии со знакогенератором (находится в памяти программ) и данными в видеобуфере. Если для данного знакоместа все пять групп анодов уже были отображены, происходит переход к следующей сетке. Таким образом, сетки переключаются 2000 / 5 = 400 раз в секунду. Если имел место переход от последней сетки к первой, на внешний счётчик сеток подаётся сигнал сброса. Это позволяет, даже в случае сбоя внешнего и внутреннего счетчика сеток, вновь синхронизовать их. Полное обновление индикатора происходит 400 / 16 = 25 раз в секунду. Т.е. мерцание хотя и заметно, но картинка получается целостной. Эксперименты с данной схемой показали, что частоту обновления снижать нельзя, но повысить (без заметного снижения яркости индикатора) можно еще раз в 100 (по видимому, дальше начинает сказываться инерционность ключей, управляющих сетками и анодами). Для экономии выводов контроллера, переключение групп анодов реализовано через дешифратор к155ид4 - на его три входа подаются сигналы с P3.0..P3.2, пять выводов используются для коммутации P1.7..P1.1 с соответствующими ключами анодов, восьмой подключен к счетному входу счетчика сеток - комбинация P3.0 = P3.1 = P3.2 = 1 переключает сетки. Одновременно изменить состояние всех пинов процессора и счетчика сеток невозможно. Поэтому, чтобы избежать появления на индикаторе мусора переходных процессов, на время переключения состояния на сетки подается запирающее напряжение. ИК-приёмникПринятый от ИК ДУ сигнал дешифруется и выделенный из него код клавиши сразу же отправляется по интерфейсу rs232. Итоговая схема (без блока питания)Транзисторы-драйверы анодов в моём экземпляре конструкции - разные. Там есть всё подряд: мп25, мп25а, мп26б, мп39, мп40, мп42а, поэтому на схеме конкретная марка не указана. На схеме не показаны также линии питания 155-х микросхем, но это не значит, что они не нужны :). Конденсатор сброса (между лапками 1 и 20 контроллера) можно сильно уменьшить. 0,1...1,0 мкф - хороший выбор. Отладка управляющего кодаКак пишется в умных журналах: "правильно собранная схема из исправных деталей настройки и регулировки не требует". Но собрать все правильно с первого раза сложно, а к тому же, вероятно, вы будете использовать другой пульт ДУ и, следовательно, вам придется переписывать соответствующую процедуру. Ну и отлаживать потом, конечно. Поэтому набросаю план отладки схемы и кода по шагам:
Конечно, если что-то не получается, можно написать мне, но удалённое консультирование не слишком часто приводит к положительным результатам. Лучше просто помнить: схема пытается вас обмануть, все глюки прячутся не там, где вы ищите, ничему нельзя верить, если что-то кажется - в этом ещё нужно убедиться. Долгие поиски ошибок в расчёте - ничто, в сравнении с последующими ощущениями, когда причина оказывается в обрыве провода питания :) А уж флюс, который неожиданно оказывается электропроводящим - это просто хит неожиданностей, о которых я слышал :)) P.S. Редактор шрифтовТут вас поджидают некоторые сложности. Во первых, я сначала паяю схему, а потом пишу под неё софт. Поэтому у меня нет ясной схемы соединений анодов индикатора и лапок порта P1. Схемы рисовать лень: теория есть в голове, а детали практики можно скорректировать програмно. Редактор шрифтов сразу генерирует asm-текст с определением шрифта с учётом реально получившейся схемы соединений. Схема задается в виде таблицы в процедуре BuildAsm. Во вторых: я люблю разные языки программирования: код контроллера написан на асме, код управления PC - на C, а редактор шрифтов собирается Free Pascal'ем, да ещё и под *NIX с библиотеками X11. Если возиться с этим лень, можно просто использовать мой шрифт из исходника, но тогда придется соблюдать моё же соответствие анодов и лапок порта P1 - из процедуры BuildAsm. Тут лежит это творение (исходники + собранный для FreeBSD 6.1 бинарник). |