Форум Beholder
http://beholder.ru/bb/

Регистр нажатой клавиши пульта ДУ
http://beholder.ru/bb/viewtopic.php?f=10&t=3072
Страница 1 из 2

Автор:  gonzales [ 15 июн 2006, 11:14 ]
Заголовок сообщения:  Регистр нажатой клавиши пульта ДУ

Скажите пожалуйста, а какие регистры нужно читать для определения кода нажатой клавиши пульта Ду на различных чипах.
Я знаю, что на SAA7134 Регистр нажатой клавиши Word GIPIO $1b6 маска $0fc0, но с другими чипами он не работает

Заранее спасибо

Автор:  Admin [ 15 июн 2006, 12:04 ]
Заголовок сообщения: 

Биты GPIO8-13 содержат код нажатой клавиши, бит GPIO14 – флаг готовности кода, 0 – данные готовы, 1 – данные не готовы.
Скажите, зачем вам это? Дело в том, что обработка считанных данных может немного отличаться для ранних партий тюнеров и для текущих, кроме того, привязываясь к порту GPIO вы теряете совместимость с будущими моделями тюнеров. Наша библиотека BeholdRC.dll гарантирует корректную обработку считанных данных, обеспечивает корректное распознавание модели тюнера и необходимого алгоритма работы, гарантирует совместимость с будущими моделями тюнеров, позволяет вам абстрагироваться от необходимости работы с драйвером. Кроме того, она всегда присутствует в системе вместе с родным ПО.

Автор:  gonzales [ 15 июн 2006, 12:38 ]
Заголовок сообщения: 

Цитата:
Скажите, зачем вам это

это затем, что Ваша библиотека накладывает ограничение на использование только тюнеров Beholder (что конечно же логично:)
и не позволяет использовать использовать ее с другими моделями тюнеров, построенных на таких же чипсетах.
Хотя драйвер у Вас правильный ;)

Цитата:
Биты GPIO8-13 содержат код нажатой клавиши

не совсем понял Ваш ответ, вот например, я считываю код клавиши для SAA7134
Код:
kod:=fDrvCard.ReadWord($1b6) and $0fc0;

а откуда мне считывать биты GPIO я не понял, не могли бы Вы объяснить?

Заранее спасибо
С уважением,
Миронов Алексей

Автор:  Admin [ 16 июн 2006, 13:11 ]
Заголовок сообщения: 

писал(а):
не позволяет использовать использовать ее с другими моделями тюнеров, построенных на таких же чипсетах.

У разных производителей ИК-декодер может быть организован совершенно по-разному. Поэтому общего алгоритма в данном случае быть не может.

писал(а):
а откуда мне считывать биты GPIO я не понял, не могли бы Вы объяснить?

Считывая данные по адресам PCI-пространства 1B4h-1B7h вы тем самым считываете данные с порта GPIO. По адресу 1B4h считываются биты 0-7 ... по адресу 1B7h биты 25-27 (не все биты порта реализованы). Вам, как уже сказано выше, нужны биты №№8-13 и 14.

Автор:  gonzales [ 16 июн 2006, 15:59 ]
Заголовок сообщения: 

спасибо

ЗЫ. респект техподдержке за терпение и профессионализм :D

Автор:  gonzales [ 17 июн 2006, 11:57 ]
Заголовок сообщения: 

а можно еще маленький вопросик? :roll:

Цитата:
бит GPIO14 – флаг готовности кода, 0 – данные готовы, 1 – данные не готовы

этот бит - отвечает за то, нажата кнопка пульта или отжата ???

у меня регистр 1b5h возвращает разные значения, согласно нажатым клавишам, только в том случае, если параллельно запущена какая нибудь сторонняя программа сканирования GPIO (например тест из Вашего SDK), в другом случае возвращаемое значение не меняется. Я выяснил, что программа правильно возвращает значение, когда параллельно (например в другом приложении)) проходит функция GetRemoteCode из Вашей библиотеки. Такое впечатление, что для того, чтобы в регистр попали новые значения необходимо что-то сделать, разрешить им туда попасть, как будто надо флаг какой-то выставить. Вы мне не подскажете, что предпринять?


заранее спасибо за ответ
с уважением
Миронов Алексей

Автор:  Admin [ 19 июн 2006, 10:44 ]
Заголовок сообщения: 

писал(а):
Цитата:
бит GPIO14 – флаг готовности кода, 0 – данные готовы, 1 – данные не готовы

этот бит - отвечает за то, нажата кнопка пульта или отжата ???

Да.

писал(а):
Я выяснил, что программа правильно возвращает значение, когда параллельно (например в другом приложении)) проходит функция GetRemoteCode из Вашей библиотеки. Такое впечатление, что для того, чтобы в регистр попали новые значения необходимо что-то сделать, разрешить им туда попасть, как будто надо флаг какой-то выставить.

Декодер работает совершенно автономно, всегда выдаёт данные на линии порта GPIO и никакого флага разрешения или запрещения передачи данных нет. Возможно, проблема кроется в используемом вами механизме доступа к PCI-регистрам.

Автор:  gonzales [ 20 окт 2006, 11:25 ]
Заголовок сообщения: 

Доброе время суток, уважаемый Саппорт. Вот опять вернулся к старой теме. После некоторых стараний мне все таки удалось добиться считывания кодов нажатых клавиш используя драйвер. НО, как обычно не без сюрпризов

Цитата:
Дело в том, что обработка считанных данных может немного отличаться для ранних партий тюнеров и для текущих, кроме того, привязываясь к порту GPIO вы теряете совместимость с будущими моделями тюнеров.

Я так понимаю, что речь идет о шестой серии тюнеров, потому что именно они отказались работать с написанным мною софтом. Только мне не очень понятно почему, ведь чип тюнера остался тот же, или нет? И получается, что тюнер не выставляет значения кодов клавиш на линию GPIO? А тогда откуда их брать? (ну кроме библиотеки:)

PS. Надеюсь на Ваш, как всегда квалифицированный ответ

Заранее спасибо,
С уважением,
Миронов Алексей

Автор:  Admin [ 20 окт 2006, 12:15 ]
Заголовок сообщения: 

писал(а):
Цитата:
привязываясь к порту GPIO вы теряете совместимость с будущими моделями тюнеров.

Я так понимаю, что речь идет о шестой серии тюнеров, потому что именно они отказались работать с написанным мною софтом.

Да, правильно.

писал(а):
тюнер не выставляет значения кодов клавиш на линию GPIO?

Тюнер здесь совершенно не при чём. Данные предоставляет микросхема ИК-декодера.

писал(а):
А тогда откуда их брать? (ну кроме библиотеки:)

Скажите, а чем вас не устраивает библиотека?

Автор:  gonzales [ 20 окт 2006, 12:32 ]
Заголовок сообщения: 

Цитата:
Скажите, а чем вас не устраивает библиотека?

в принципе всем устраивает, просто думал обойтись универсальным модулем считывания кодов клавиш для всех тюнеров на чипе SAA713x без привлечения библиотек и соответствующих дополнительных сложностей.

Получается на разных моделях тюнеров разные микросхемы ик-декодеров не зависимо от чипа?

Но все таки, ИК-декодер выдает данные не всегда по одним и тем же адресам?

Кстати библиотека обновилась, а АПИ на Вашем сайте остался прежним

Автор:  Admin [ 20 окт 2006, 14:28 ]
Заголовок сообщения: 

писал(а):
Получается на разных моделях тюнеров разные микросхемы ик-декодеров не зависимо от чипа?

Да.

писал(а):
Но все таки, ИК-декодер выдает данные не всегда по одним и тем же адресам?

Нет. Декодер не выдаёт ничего ни по каким адресам. Есть разные способы связи периферийных микросхем с чипсетом. Адреса регистров в своём PCI-пространстве формирует чипсет. Для разных интерфейсов, естественно, разные адреса.

писал(а):
Кстати библиотека обновилась, а АПИ на Вашем сайте остался прежним

Мы же обещали полную совместимость имеющегося АПИ с любыми будущими моделями :D. АПИ как раз и разрабатывался с той целью, чтобы гарантировать работу сторонних приложений независимо от тонкостей реализации тюнера. Обновление АПИ появится в ближайшее время и затронет только поддержку других пультов.

Автор:  gonzales [ 20 окт 2006, 14:54 ]
Заголовок сообщения: 

спасибо за терпение и внятные ответы

Автор:  gonzales [ 25 окт 2006, 15:03 ]
Заголовок сообщения: 

Цитата:
Адреса регистров в своём PCI-пространстве формирует чипсет

я просканировал все адреса PCI-пространства (h000-hFFE) но не обнаружил адресов, содержащих код нажатой клавиши. Как и в предыдущих сериях тюнеров при нажатии кнопок пульта в регистры h1B5 и h1B6 заносится значение (h4000), но оно одинаковое при нажатиях на любую кнопку, а больше ни по каким адресам никакой информации о нажатой клавише нет.

Как так может быть?
Информация о нажатой клавиши не поступает в регистры PCI-пространства чипсета? А если поступает то как?

PS. Если то, о чем я спрашиваю - закрытая информация, то Вы прямо так и скажите, чтоб я Вас не мучил наводящими вопросами:)

PSS. Прошу прощение за наглость

Заранее спасибо за ответ
С уважением,
Миронов Алексей

Автор:  Admin [ 26 окт 2006, 11:30 ]
Заголовок сообщения: 

Сейчас используется более сложный протокол двустороннего обмена данными с декодером пульта ДУ. Просто код нажатой клавиши из регистров чипсета вы не считаете.
Совершенно универсального способа работы с пультом ДУ для всех тюнеров быть не может. Конечно, во многих тюнерах код пульта получается через шину GPIO, но это не есть универсальное решение (даже не касаясь наших тюнеров). Кроме того, даже в случае с шиной GPIO возможен более сложный вариант обмена данными типа запрос/подтверждение и прочие тонкости.
Вам стоит смириться с необходимостью использовать разные алгоритмы работы с разными тюнерами. Что же касается наших тюнеров, то используемый в настоящее время протокол низкого уровня также является всего лишь частным решением и будет меняться и дальше. Поверьте, то решение, которое предлагаем мы – самое простое и надёжное, по принципу "сделал и забыл", и все дальнейшие изменения протоколов вас никак не затронут, не увеличат вашего кода, не уменьшат общности работы. Этот АПИ был специально разработан с целью избавить сторонних программистов от любой головной боли, связанной с изменениями протоколов. Мы и сейчас гарантируем, что тот АПИ, который существует, без каких бы то ни было доработок с вашей стороны будет работать на любых наших тюнерах, как имеющихся, так и будущих.

Автор:  gonzales [ 26 окт 2006, 12:00 ]
Заголовок сообщения: 

спасибо,
последую Вашему совету

Страница 1 из 2 Часовой пояс: UTC + 3 часа