Як правильно встановити логічний високий рівень на порту PS / 2?


3

Я намагаюся зробити емулятор клавіатури на ATmega16A. В даний час я реалізую логічний низький як вихідний нуль , і, оскільки хост (?) Повинен підтягувати лінію, я надсилаю логічний високий стан як режим введення моїх штифтів. Це дозволяє мені легко перевірити, чи не відбулося стан гальмування під час передачі даних, окрім виведення "1".

Але проблема полягає в тому, що в цьому режимі час підняття напруги до 95% V CC становить приблизно 25 мкс, що становить чверть максимально дозволеного тактового періоду (мінімальна частота - 10 кГц). Тому я зараз спробував активно загнати штифт на V CC , і лише потім переключити його у режим введення, щоб перевірити стан гальмування .

Чи ця суєта щодо того, що активно їхати в автобусі, є дійсно законною з протоколу POV? Я стежу за цим документом і не знайшов, як саме слід вивести логічно високий рівень.

Чи слід замість цього використовувати резистор з нижчим опором на стороні клавіатури і залишити штифт у вхідному стані при спробі вивести логічне високе значення?


1
95% - це "ледь не схожий на хороший сигнал", якщо чесно, це досить солідно (і не дуже дивно, що це займає багато часу - ефективно, підтягувач повинен заряджати ємність паразитичної лінії, і ви знаєте, як виглядають криві заряду конденсатора !). Я дійсно не знаю достатньо про характеристики IO-штифтів ATMegas, щоб коментувати імпеданс, але PS / 2 дійсно є шиною відкритого колектора, і тому ви не повинні активно їздити на ньому високо, тому що вам не вистачить умови гальмування . Можливо, додавання слабких підкачок на стороні клавіатури було б допустимим? (зовсім інший напрямок: чому б не USB? чому Atmega?)
Маркус Мюллер

1
Але який сенс матиме налагодження апаратного забезпечення, яке ви зрештою не використовуєте?
Маркус Мюллер

1
@ Логіка MarcusMüller не залежить від обладнання. Що я намагаюся розробити спочатку - це логічна сторона: біти, затримки, послідовності команд та відповідей тощо
Руслан,

1
ATMEGA16 робить USB, але погано - див. AVRUSB.
Ясен

1
Ви можете зробити те, що роблять серії MCS51 (8051 і побратими): перемкнутись на високий на короткий час із низьким опором і після цього перейти на високий опір. Ну, для цього вам може знадобитися додатковий штифт і резистор. Або ви спробуєте внутрішні підтяжки.
Зайнята бджола

Відповіді:


7

З інтерфейсами PS / 2 і хост, і пристрій повинні мати підключення. Тож покладіть сильніші підтяжки на сторону AVR. Потягнути його високо навіть на мить - просто неправильно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.