реклама на сайте
подробности

 
 
> Эмулятор PS/2 клавиатуры, проблемы с передачей данных
vitko
сообщение Jul 4 2007, 12:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066



Есть устройство на AVR - считыватель карточек, включенный в разрыв PS/2-клавиатуры. При считывании карточки клавиатура блокируется и устройство от имени клавиатуры передает код карточки в виде скан-кодов. Проблема в том, что если в это время дергать PS/2-мышкой, передача идет со сбоями.
Может кто-то что-то посоветовать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dimmy
сообщение Jul 4 2007, 21:25
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 106
Регистрация: 12-09-05
Пользователь №: 8 503



Совершенно с вами согласен!!! :-) И я о том-же. Рисунок 2 Device-to-host. Но инициатор сигнала STOP (ACK) - ХОСТ!
Впрочем, мы уходим от темы - человек задал вопрос - как побороть конфликт с мышью. Я ответил. Конфликт действительно ЕСТЬ. Не раз натыкался - при активности мышки хост манипулирует клоком клавиатуры подтягивая его к 0. Возможны два варианта, когда это произойдет:
1. Во время передачи данных от девайса к хосту. (он самый маловероятный, т.к. в этот момент хост делает то же самое с клоком мышки, заставляя прекращать передачу от нее). В этом случае необходимо в процессе передачи считывать значение пина CLK когда этот самый клок ДЕВАЙСОМ же и отпущен (выход с открытым коллектором). И если CLK подтянут к нулю - прекращать передачу. Подождем для уверенности 2мс - и снова передадим те-же данные. А то что данные приняты ХОСТОМ - определяем по наличию ACK. Он как-раз 11-й. А в Вашей же статье (to Rezident):
"If a transmission is inhibited before the 11th clock pulse"
Если надо - схему сопряжения которую использовал приаттачу
2. Линия CLK подтягивается к 0 во время простоя девайса. Это более вероятный вариант. По сути в данном случае хост сигнализирует, что в данный момент обрабатывается мышка. Я обрабатывал его в прерывании по пину (вход CLK на девайс). В прерывании отслеживал состояние пина DATA. Если DATA в 1 - то это либо ACK (если до этого мы что-нить передавали), либо запрет на передачу нашим устройством (как раз этот случай мы и рассматривали). Его обрабатывать не надо - просто ничего не передавать. А если в момент когда CLK со стороны хоста подтянут к 0 и DATA в 0 - то это запрос от хоста на передачу в наше устройство. (HOST_RQ_BIT в моем случае)
Вот кусок - он для MSP430:
;-----------------------------------------------------------------------------
; прерывание от Хоста (по CLK)
;-----------------------------------------------------------------------------
P2_INT:
bic.b #0x02,P2IFG
bit.b #DIN_BIT,&P2IN
jc HostAck
bis #HOST_RQ_BIT,Flags
bic #LPM3, 0(SP) ; Decode = Active in Mainloop
reti
HostAck: bis #HOST_ACK_BIT,Flags
bis.b #WDTIE,&IE1 ;разрешим прерывания от WDT
reti

Сообщение отредактировал Dimmy - Jul 4 2007, 21:52
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vitko   Эмулятор PS/2 клавиатуры   Jul 4 2007, 12:09
- - =GM=   Цитата(vitko @ Jul 4 2007, 12:09) Проблем...   Jul 4 2007, 12:59
- - GDI   Мышка же к другому порту подключается или я не в т...   Jul 4 2007, 13:05
- - vitko   С питанием и наводками все ОК. PS/2-мышка использу...   Jul 4 2007, 13:43
- - rezident   Насколько я помню в протоколе PS/2 интерфейса не п...   Jul 4 2007, 15:51
- - AndryG   rezident, совершенно верно - квитирования нет. Е...   Jul 4 2007, 16:47
|- - zltigo   Цитата(AndryG @ Jul 4 2007, 19:47) Если в...   Jul 4 2007, 18:07
- - Dimmy   не знаю, как клавиатура на мышь, но мышь на порт к...   Jul 4 2007, 18:51
- - rezident   Вот в этом сообщении я уже приаттачил страничку с ...   Jul 4 2007, 20:13
- - Dimmy   Эту статью я видел. Ну и посмотрите на рисунок 2. ...   Jul 4 2007, 20:25
- - rezident   Device-to-Host communication это передача от девай...   Jul 4 2007, 20:33
|- - zltigo   Цитата(Dimmy @ Jul 5 2007, 00:25) Впрочем...   Jul 4 2007, 21:54
- - Dimmy   Для направления на путь истинный - см пост выше. Э...   Jul 4 2007, 22:01
|- - zltigo   Цитата(Dimmy @ Jul 5 2007, 01:01) Это не ...   Jul 4 2007, 22:28
- - vitko   В принципе, глобально - вопрос был в том, может ли...   Jul 5 2007, 16:31
|- - Dimmy   ЦитатаВ принципе, глобально - вопрос был в том, мо...   Jul 5 2007, 18:48
|- - vitko   Цитата(Dimmy @ Jul 5 2007, 21:48) Только ...   Jul 6 2007, 09:12
- - Dimmy   Да, настраивать прерывание по CLK надо на фронт (т...   Jul 5 2007, 20:16


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 21:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016