Меня вот этот проект давно интересовал... С тех пор, как
murgatroid_79 о нём поведал...
Но, то руки не доходили, то
PIC12F629 мне не нравился (у меня такого нет)... Смущало также, что у одних он великолепно работает, а у других - категорически не работает...
И схема-то проще некуда, но для проверки нужен ей симулятор сигнала АТ-клавиатуры...
В общем, вчера меня интерес захлестнул, и всё срослось!
Имитатор клавиатуры АТ я сделал вот из этого проекта на
8051:
Имитируем работу клавиатуры.
Чтобы не шаманить с программой, я приделал генератор 5...10 Гц, который "нажимает" на кнопку и вызывает передачу
"клавиатурой АТ" кода
55Н - он хорошо виден на осциллограммах.
Чтобы всегда выдавался код
55Н, я чуть подпортил исходник программы для
8051, найти это можно.
В остальном проект на
8051 весьма путно имитирует "клавиатуру АТ".
В совокупности с
PIC12F629 получилось вот что:
I2C монитор там, чтобы отслеживать наличие сигнала. По коду он лажает.. да и годен ли он для такого
I2C?
PIC12F629 нормально опознает код
55Н от "клавиатуры АТ", правильно преобразует его в код ХТ =
0DH,
а вот имитирует протокол ХТ клавиатуры он, на мой взгляд, херовенько.
От того и, видимо, он у одних работает, у других - нет.
На осциллограммах: верхняя пара - то, что выдает
PIC12F629Нижняя пара - то, что передает
8051 в качестве "клавиатуры АТ" (масштаб сжат вдвое).
Видимо, для большей четкости передачи, надо код
PIC12F629 чутка подработать, хотя авторы в комментах
пишут, что времянки все четко по стандарту реализованы.
Исходник проекта
Протезус доступен вот здесь, если кто захочет "поиграть" с ним.
В исходнике -
XTATKEY_094.HEX оригинальная прошивка от автора
АТ2ХТ.
XTATKEY.ASM - оригинальный код, но я в нем кое что правил на свой взгляд, так что
оригинал исходника лучше брать с сайта
http://www.vintage-computer.com/Ну и мне сегодня удался очень приятный трюк, может кому пригодится... При симуляции
PIC в Протезусе надо вручную выставит биты конфигурации, хотя для прошивки они уже есть в НЕХ-файле.
__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT ;Internal osc.В
MPLAB есть встроенная утилита, которая этот код вычисляет наглядно, но у меня - только
MPASM...
И я с этим кодом всегда вручную мучаюсь...
Может я чего не знаю, и он тоже где-то может нужный код посчитать - я не нашел...
А порешал я проблему так: в свободном месте программы вставил следующее...
dw _MCLRE_OFF & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT ;Internal osc.Ну и при компиляции в листинге мне
MPASM нужный код конфигурации
PIC и сосчитал!