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

 
 
> 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
 
Start new topic
Ответов
Мусатов Констант...
сообщение Sep 5 2009, 08:08
Сообщение #2


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

Группа: Участник
Сообщений: 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
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- Мусатов Константин   PS/2 клавиатура под ARM   Sep 4 2009, 17:44
- - rezident   А вопрос-то в чем состоит? Документацию для реализ...   Sep 4 2009, 17:48
- - zltigo   Цитата(Мусатов Константин @ Sep 4 2009, 20...   Sep 4 2009, 17:51
- - DRUID3   Цитата(Мусатов Константин @ Sep 4 2009, 20...   Sep 4 2009, 18:04
- - faa   Примеры есть в референсах. Например, у цирруса на ...   Sep 4 2009, 18:39
|- - zltigo   Цитата(faa @ Sep 4 2009, 20:39) Но, ИМХО,...   Sep 4 2009, 19:36
|- - DRUID3   Цитата(zltigo @ Sep 4 2009, 22:36) Ну-ну ...   Sep 4 2009, 20:42
|- - manul78   Цитата(zltigo @ Sep 4 2009, 23:36) Докуме...   Sep 4 2009, 23:58
- - manul78   Добавлю свою "копеечку"... Специфик...   Sep 4 2009, 19:14
- - Мусатов Константин   ЦитатаА вопрос-то в чем состоит? Документацию для ...   Sep 4 2009, 21:17
|- - zltigo   Цитата(Мусатов Константин @ Sep 4 2009, 23...   Sep 5 2009, 06:27
- - Мусатов Константин   Большое спасибо за код! ЦитатаДа, а ну если ис...   Sep 5 2009, 18:37
|- - zltigo   Цитата(Мусатов Константин @ Sep 5 2009, 20...   Sep 5 2009, 18:44
- - Мусатов Константин   ЦитатаСовсем так. Буквы "ARM" и в том чи...   Sep 5 2009, 21:20
|- - zltigo   Цитата(Мусатов Константин @ Sep 5 2009, 23...   Sep 5 2009, 21:57
- - DpInRock   ЦитатаЕсть основные принципы того, как надо задава...   Sep 6 2009, 00:18


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 18:00
Рейтинг@Mail.ru


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