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

 
 
> PS/2 клавиатура под ARM
Мусатов Констант...
сообщение Sep 4 2009, 17:44
Сообщение #1


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

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Пытаюсь подобрать контроллер под задачу. Практически точно уже остановился на ARM Cortex, но еще не решил в чьем исполнении: STM, NXP или TI. Но обязательно нужна возможность подключения PS/2 клавиатуры. Напрямую я не заметил такого интерфейсного модуля. Хотя он сильно смахивает на I2C, но ему не соответствует. Предполагаю, что этот вопрос уже решали (я что-то не нашел). Киньте пожалуйста ссылок или комментариев по этой теме. Программа, скорее всего, будет основываться на FreeRTOS.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 17)
rezident
сообщение Sep 4 2009, 17:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А вопрос-то в чем состоит? Документацию для реализации PS/2 найти не можете или готовые программные модули в дар ждете?
Ссылка на обсуждение http://electronix.ru/forum/index.php?showtopic=60743
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 4 2009, 17:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Мусатов Константин @ Sep 4 2009, 20:44) *
Напрямую я не заметил такого интерфейсного модуля....

Бо нинафиг не нужен. Два (лучше три - прием передача отдельно через буфера) проводка, один из которых на прерывание и вперед. АRM, операционые системы и прочие подробности нималейшего значеня не имеют.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Sep 4 2009, 18:04
Сообщение #4


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(Мусатов Константин @ Sep 4 2009, 20:44) *
Предполагаю, что этот вопрос уже решали (я что-то не нашел).

да(правда не для ARM)... и решение называется USB biggrin.gif . Если некуда девать деньги и PS/2 клавы - в продаже полно переходников USB2PS/2(не факт что не на ARM собранных biggrin.gif ). Я понимаю, что вариант zltigo правильнее, но я так понял топиктестер его рассматривает как наименее подходящий biggrin.gif ...


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
faa
сообщение Sep 4 2009, 18:39
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Примеры есть в референсах.
Например, у цирруса на их ep93xx. Они вешают прием на SSP, передачу через EGPIO, на буферах развязка прием-передача и согласование уровней.
Но, ИМХО, лучше USB пользовать.
Go to the top of the page
 
+Quote Post
manul78
сообщение Sep 4 2009, 19:14
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Добавлю свою "копеечку"...

Спецификация на клавиатуру. Полная, т.е. все команды, тайминги, скен коды всех 3-х режимов и пр.

Сам пользуюсь исключительно данным документом.

P.S. Некоторые китайские клавиатуры не поддерживают некоторые описанные команды.
Прикрепленные файлы
Прикрепленный файл  kbd_spec.pdf ( 189.48 килобайт ) Кол-во скачиваний: 83
 


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 4 2009, 19:36
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(faa @ Sep 4 2009, 20:39) *
Но, ИМХО, лучше USB пользовать.

Ну-ну сразу контроллер с Master USB на борту и софта к нему куча, вместо нескольких десятков строчек для обслуживания простейшего медленного интерфейса.

Цитата(manul78 @ Sep 4 2009, 21:14) *
Спецификация на клавиатуру. Полная, т.е. все команды, тайминги, скен коды всех 3-х режимов и пр.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Sep 4 2009, 20:42
Сообщение #8


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(zltigo @ Sep 4 2009, 22:36) *
Ну-ну сразу контроллер с Master USB на борту и софта к нему куча, вместо нескольких десятков строчек для обслуживания простейшего медленного интерфейса.

Так просто непонятно, что будет делать PS/2 "клава" на голом контроллере. Несколько строчек на PS/2, несколько сот строчек на многозадачность, несколько килострочек на контроллер экрана и подобие GUI, ну и куда сегодня без сети smile.gif и т.д. Просто так топикпостер скатится к "типа Linux только свой" smile.gif ... Хотя подождем, что скажет он сам...


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
Мусатов Констант...
сообщение Sep 4 2009, 21:17
Сообщение #9


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

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Цитата
А вопрос-то в чем состоит? Документацию для реализации PS/2 найти не можете или готовые программные модули в дар ждете?

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

Цитата
Бо нинафиг не нужен. Два (лучше три - прием передача отдельно через буфера) проводка, один из которых на прерывание и вперед
Прочитав весь пртокол, мне показалось что несколькими строками не обойтись, вот и спросил про готовенькое.

Цитата
АRM, операционые системы и прочие подробности нималейшего значеня не имеют.

Не то что бы совсем не имеют. Если модуль уже под FreeRTOS и ARM, то работы меньше.

USB не катит, тем более задача поставлена именно PS/2
Go to the top of the page
 
+Quote Post
manul78
сообщение Sep 4 2009, 23:58
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(zltigo @ Sep 4 2009, 23:36) *
Документ не плохой, только надо учитывать, что это документ конкретного производителя и в прочих случаях те-же тайминги, и вообще численные параметры в разы отличаются.


Согласен. Но я и сказал, что некоторые китайские клавиатуры ведут себя неадекватно... biggrin.gif

Кстати, только благодаря данному "даташиту" удалось настроить клавиатуру как мне надо. Например,
чтобы загнать её в режим только MAKE, сначала надо перевести её в другой MODE... можно конкрет-
ные клавиши программировать в разные режимы MAKE, BREAK или Typematic... Короче простая АТ
клавиатура, которой в обед сто лет - весьма интересное устройство, если разобраться, т.е. если в
начале её грамотно настроить, то можно здорово сократить и размер и сложность обработки.


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 5 2009, 06:27
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Мусатов Константин @ Sep 4 2009, 23:17) *
Если модуль уже под FreeRTOS и ARM, то работы меньше.

Безмерно стало интересто, чем "модуль" под FreeRTOS и ARM, по Вашему отличается от "модуля", ну,напимер, под AVR и Bigloop.
Это я, как человек использовавший клавиатуру конкретно под FreeRTOS и ARM спрашиваю..
Ну а строчек там ~52 (писалось без раздумий и не оптимизировалось) - ~19 строк это передача, остальное обработчик прерывания обслуживающий и прием и передачу. На выходе scancod.
Сканкоды в "буквы" вообще дальше рутина по таблице....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Мусатов Констант...
сообщение Sep 5 2009, 08:08
Сообщение #12


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

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Цитата
Безмерно стало интересто, чем "модуль" под FreeRTOS и ARM, по Вашему отличается от "модуля", ну,напимер, под AVR и Bigloop.

В операционке может отличаться встраивание. А по платформе может изменяться управление. Конечно, коли код использует только порт, то различий почти нет. Ваша реализация клавиатуры PS/2 реализует какие функции интерфейса? Чего достаочно что бы клавиатуры работали по дефолту в реалии?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 5 2009, 10:28
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Мусатов Константин @ Sep 5 2009, 10:08) *
В операционке может отличаться встраивание.

Лично у меня, ровно одна строка, и это максимум взаммодействия с операционкой - посылка сообщения со сканкодом из обработчика прерывания. А вот вот и весь "обработчик", причем, если не передавать, то он вдвое короче smile.gif:
Код
//---------------------------------------------------------------------------
static ulong cmd_transmit = 0L;

#define BIT_START    BIT0
#define BIT_STOP    BIT10
static             int bkey;
static volatile int bcnt;

//---------------------------------------------------------------------------
// ps2_int_handler()
// INT driven service routine that collects 11 bits that make up a scan code
// sent by a PS2 encoder.
//---------------------------------------------------------------------------
__irq __arm void ps2_isr_handler(void)
{
    if( cmd_transmit )
    {   switch( bcnt )
        {    // TX --------------------------

    case 11:
            bcnt = cmd_transmit = 0;          // End transmit;
            break;

    default:              // Transmit Start + Body + parity + Stop
            if( cmd_transmit & (1<<(bcnt-1)) )
                PS2_DATA_HI();
            else
                PS2_DATA_LO();
   case 0:
            bcnt++;
        }
    }
    else
    {    // RX --------------------------
        if( IOxPIN & PxB_DATA_INP )
            bkey |= (1<<bcnt);

        if( bcnt < 10 )
            bcnt++;
        else
        {    // 11bits is received - Decode the key
            if( ( bkey & (BIT_START|BIT_STOP) ) == BIT_STOP )
            {    bkey >>= 1;
                xQueueSendFromISR( ATSCAN_handle, &bkey, 0 );
            }
            else
                status_word |= STW_AT_ERROR_DETECTED;
            bcnt = bkey = 0;
        }
    }
    EXTINT = PS2_EINT2;            // Clear the EXT interrupt flag
    VICVectAddr    = 0;             // Dummy write to signal end of interrupt
}

Цитата
Конечно, коли код использует только порт, то различий почти нет.

Да, а ну если использует некую более продвинутую периферию, то буквы ARM тоже ровным счетом ничего не значат. "Чернила для третьего класса" sad.gif
Цитата
Ваша реализация клавиатуры PS/2 реализует какие функции интерфейса?

Вы чего спросили-то? Передает команды, получает ответы и сканкоды нажатых клавиш.... Сканкоды перекодируюся в буквы, цифры и управляющие коды.....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Мусатов Констант...
сообщение Sep 5 2009, 18:37
Сообщение #14


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

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Большое спасибо за код!
Цитата
Да, а ну если использует некую более продвинутую периферию, то буквы ARM тоже ровным счетом ничего не значат. "Чернила для третьего класса"

Не совсем так. Если бы использовался I2C модуль, как наиболее похожий по строению, то реализация в AVR Tiny будет отличаться значительно.
Цитата
Вы чего спросили-то? Передает команды, получает ответы и сканкоды нажатых клавиш.... Сканкоды перекодируюся в буквы, цифры и управляющие коды.....

В описании интерфейса много разных команд и действий. Я, в общем-то, подозревал, что большинство их не особенно нужно для базовой работы.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 5 2009, 18:44
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Мусатов Константин @ Sep 5 2009, 20:37) *
Не совсем так.

Совсем так. Буквы "ARM" и в том числе "ARM Corteх" для которого Вы спрашивали исходники, никоем образом не характеризуют имеющуюся в наличии переферию. И даже простую ногодрыгательную.
Совсем никак.
Цитата
В описании интерфейса много разных команд и действий. Я, в общем-то, подозревал, что большинство их не особенно нужно для базовой работы.

Понятия не имею, что такое для Вас "базовая работа"


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Мусатов Констант...
сообщение Sep 5 2009, 21:20
Сообщение #16


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

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Цитата
Совсем так. Буквы "ARM" и в том числе "ARM Corteх" для которого Вы спрашивали исходники, никоем образом не характеризуют имеющуюся в наличии переферию. И даже простую ногодрыгательную.
Совсем никак.

Безсмысленное обсуждение. Есть основные принципы того, как надо задавать вопросы на форуме, когда надо изложить вопрос в полном объеме. Если отвечающий считает информацю излишней, то игнорирует. В другой раз возможна ситуация, когда будет важно не только ARM, но и в конкретной реализации. Вы указали, что наиболее простая реализация без использования специальной периферии, за что Вам большое спасибо. И еще прошу не передергивать, я указал не просто "ARM Corteх", а и список производителей, а это уже исчерпывающая информация о доступной периферии.
Цитата
Понятия не имею, что такое для Вас "базовая работа"

Наиболее типичное использование: прием данных по клавишам, управление светодиодами. В отличие от работы с программируемой клавиатурой.

Сообщение отредактировал Мусатов Константин - Sep 5 2009, 21:21
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 5 2009, 21:57
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Мусатов Константин @ Sep 5 2009, 23:20) *
Безсмысленное обсуждение.

Тогда закончим.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Sep 6 2009, 00:18
Сообщение #18


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
Есть основные принципы того, как надо задавать вопросы на форуме

К сожалению, правильно может лишь тот задать вопрос, кто знает хотя бы половину ответа. И принципы тут не помогут.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:33
Рейтинг@Mail.ru


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