Алгоритм работы pic12c508a в программаторе PGM02 (Дополненная версия v1.1) Дополнения: #1# - см. сноску внизу документа. !!! Вся информация приведенная ниже - абсолютно легальна, ибо никто не запрещал мне пользоваться вольтметром и Паскалем. !!! Обозначения : p - сигнал на входе GP3 a - сигнал на входе GP1 0,2,4,6 - цифра, записываемая в управляющий регистр LPT (base+2) (т.к. нулевой бит этого байта (WR) равен нулю, то порт КР580ВВ55 находится в режиме "нет операции" - #WR=1 и #RD=1 и значение его адресных линий нам не интересно (это биты 3 и 1)) - следовательно эти четыре значения влияют только на наш контроллер Контроллер используется в следующем включении в схему : * Управляющие входы GP1(a), GP3(p) * Выходы управляющих сигналов GP0(#ce), GP4(#we), GP5(a15) * Выход - дублирует состояние входа "p" (с некоторой задержкой) #1# * Входы питания (по схеме) Для управления контроллером используются последовательности длинной 11 символов из 4 возможных (на двух входах) комбинаций. Всего (как я понял) управляющих последовательностей (далее упр. слов) 7. Управляющие слова приведены ниже (нумерация с нуля - думаю понятно почему) Слово #0 (Сбросить все) 4 0 6 2 6 2 6 2 6 2 6 p - p - p - p - p - p a a - - - - - - - - - Слово #1 (#ce - Set) 4 0 6 2 6 2 6 2 6 0 4 p - p - p - p - p - p a a - - - - - - - a a Слово #2 (#ce - Reset) 4 0 6 2 6 2 6 0 4 2 6 p - p - p - p - p - p a a - - - - - a a - - Слово #3 (#we - Set) 4 0 6 2 6 2 6 0 4 0 4 p - p - p - p - p - p a a - - - - - a a a a Слово #4 (#we - Reset) 4 0 6 2 6 0 4 2 6 2 6 p - p - p - p - p - p a a - - - a a - - - - Слово #5 (a15 - Set) 4 0 6 2 6 0 4 2 6 0 4 p - p - p - p - p - p a a - - - a a - - a a Слово #6 (a15 - Reset) 4 0 6 2 6 0 4 0 4 2 6 p - p - p - p - p - p a a - - - a a a a - - Алгоритм контроллера мне не известен. Но я думаю, что при желании его не сложно теперь описать. Разумеется слова нужно формировать в соответствии с быстродействием контроллера (и логикой программы в нем). Прошивки у меня нет, поэтому значения задержек получены экспериментально. Задержка между байтами в слове - минимум 8мкс (для надежности 10мкс), задержка после управляющего слова (для обработки полученной команды контроллером) - минимум 20мкс (рекомендуется 30). Также см. #1# Приведенная выше информация закрывает "черную дыру" в архитектуре программатора PGM02 и позволяет (совместно с прочей общедоступной справочной информацией) написать программу управления этим программатором. MiGeRA (C) 2003. Дополнения: #1# Действительно выход GP2(busy) дублирует состояние входа GP3(p), !НО! - происходит это не сразу а лишь после того как контроллер будет готов приему очередного байта управляющего слова. Ранее предлагалось производить "стандартную" задержку, что не всегда было корректным (при маленькой задержке) или оптимальным по быстродействию (при большой задержке). Необходимые значения могут варьироваться от 5-30мкс. Путем программного опроса изменения линии GP2(busy) - определяется минимальная и достаточная задержка между байтами в слове. (Не забываем, что бит "busy" на порту LPT инверсный).