Клавиатура и NedoPC-90
Moderator: Shaos
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Клавиатура и NedoPC-90
Буду тут писать все касательно клавиатуры, присланной Shaos'ом.
Итак.
Подключил клавиатуру к питанию +5В. Чтобы получить +3.3 вольта из +5 вотккнул 3 диода КД522 последовательно. Между контактами +3.3вольта (Vcc на плате) и землей (GND на плате) воткнуты в параллель конденсатор 0.1мкф и резистор 5.1КОм. Резистор нужен обязательно! Иначе напряжение будет около +4Вольт.
Осциллом посмотрел выход.
Полярность интерфейса клавиатуры - обратная UARTу. То есть, при отсутствии сигнала (ни одна кнопка не нажата) - на выходе 0вольт. При нажатии кнопки - импульсы уровня +3.3Вольта.
Насколько я могу судить - автоповтора при длительном нажатии нет.
Длительность пачки импульсов (очень приблизительно, на глаз) - 1-2миллисекунды. то есть скорость передачи примерно около 5-10Кбит/сек. Скорее всего (если стандартная) - 4800 или 9600 (проверять сегодня вечером буду).
Очень смущает обратная полярность. Хотя мне это на руку - для адаптации к ТТЛ уровням достаточно воткнуть один транзистор КТ315 и резистору в базу и коллектор - и все.
Ну вот пока и все что выяснил. Завтра, надеюсь, еще напишу.
Итак.
Подключил клавиатуру к питанию +5В. Чтобы получить +3.3 вольта из +5 вотккнул 3 диода КД522 последовательно. Между контактами +3.3вольта (Vcc на плате) и землей (GND на плате) воткнуты в параллель конденсатор 0.1мкф и резистор 5.1КОм. Резистор нужен обязательно! Иначе напряжение будет около +4Вольт.
Осциллом посмотрел выход.
Полярность интерфейса клавиатуры - обратная UARTу. То есть, при отсутствии сигнала (ни одна кнопка не нажата) - на выходе 0вольт. При нажатии кнопки - импульсы уровня +3.3Вольта.
Насколько я могу судить - автоповтора при длительном нажатии нет.
Длительность пачки импульсов (очень приблизительно, на глаз) - 1-2миллисекунды. то есть скорость передачи примерно около 5-10Кбит/сек. Скорее всего (если стандартная) - 4800 или 9600 (проверять сегодня вечером буду).
Очень смущает обратная полярность. Хотя мне это на руку - для адаптации к ТТЛ уровням достаточно воткнуть один транзистор КТ315 и резистору в базу и коллектор - и все.
Ну вот пока и все что выяснил. Завтра, надеюсь, еще напишу.
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Это хорошо, так как виртуальная машина RW0 - шестнадцатибитнаяSfS wrote:16бит, как и для всех 8битных процов обычно. а вообще sizeоf() тебе в помощьShaos wrote:Чуйствую пора мне делать легковесный интерпретатор RW0-байткода для того чтобы вкмопилировать его в AVR - напомни каков размер int в этом компиляторе?
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Мда
Видать не дурак был, сдавший клавиатуру в магазин.
Поведение у нее странное. На одну и ту же клавишу выдает то некий код, то два. Как я понял должен быть код нажатия и отпускания. а иногда она впадает в странный ступор и начинает выдавать на все клавиши код 0x09 (на скорости 9600).
В общем явно "нестабильная работа" - это очень верно подмечено. Кондеры у кварца не помогли (22пф). Сегодня попробую другие.
В общем в этой маленькой штуке - столько интересного
Правда пока толку мало.

Поведение у нее странное. На одну и ту же клавишу выдает то некий код, то два. Как я понял должен быть код нажатия и отпускания. а иногда она впадает в странный ступор и начинает выдавать на все клавиши код 0x09 (на скорости 9600).
В общем явно "нестабильная работа" - это очень верно подмечено. Кондеры у кварца не помогли (22пф). Сегодня попробую другие.
В общем в этой маленькой штуке - столько интересного

-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Странно. Может быть надо кол-вом стартовых-стоповых битов и четностью поиграть?SfS wrote:МдаВидать не дурак был, сдавший клавиатуру в магазин.
Поведение у нее странное. На одну и ту же клавишу выдает то некий код, то два. Как я понял должен быть код нажатия и отпускания. а иногда она впадает в странный ступор и начинает выдавать на все клавиши код 0x09 (на скорости 9600).
В общем явно "нестабильная работа" - это очень верно подмечено. Кондеры у кварца не помогли (22пф). Сегодня попробую другие.
В общем в этой маленькой штуке - столько интересногоПравда пока толку мало.
Кстати твой экземпляр - новёхонький, прям из упаковки

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Четностью - смысла не имеет. Если четность отключена - то бит четности просто игнорируется.Shaos wrote: Странно. Может быть надо кол-вом стартовых-стоповых битов и четностью поиграть?
Кстати твой экземпляр - новёхонький, прям из упаковки
Количеством бит - попробую, конечно. Но всетаки странно както она себя ведет. Хотя если новая - то я сам чтото наверное недогоняю.
В любом случае - при нажатии одной и той же клавиши должен быть одинаковый результат. При любой скорости. Только что при неверной скорости результат неверный будет - но все равно одинаковый...
Кстати - UART использую программный - может в нем еще ошибка. Ладно - разберемся. И не такое ломали

И клавиатрура после вставления в нее диодов и КТ315го новую не напоминает

-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Я в свое время при изучении всяких таких девайсов (в том числе и пультов) просто записывал сигнал. Причем простым SoundForge'м и с помощью простой звуковой карты. А потом анализировал эпюру. Думаю, согласовать сможешь сам, скоростя низкие, поэтому 44кГц тебе хватит. Попробуй - реально помогает. Причем, ты можешь записать сигналы всех кнопок и совместить их по началу стартового бита. Сразу все видно. =)
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Поздно советовать
Усе уже кончено
Сидение с кофием до 03.00 ночи все решило:) Итак:
----------------------------------------------------------------------------------------
40-кнопочная 3хвольтовая клавиятура с последовательным выходом.
------------------------------------------------------------------------------
Контакты:
2 - Vcc=+3.3V
3 - SO - выходной сигнал
10- общий (0V)
------------------------------------------------------------------------------
Замечания:
Выход SO (конт. 3 разъема) - инверсный.
Т.е. на нем постоянно 0, а данные передаются импульсами +3.3вольта.
Схема сопряжения инвертирует сигнал и согласует его с ТТЛ уровнями, что позволяет подключать клавиатуру к любому встроенному UARTу микроконтроллеров.
Скорость обмена - 9600.
------------------------------------------------------------------------------
Таблица кодов клавиш (коды нажатий - однобайтовые):
Для всех клавиш при отпускании вырабатывается код (0x85,0x85),
кроме клавиши Fn, для неё код отпускания (0x9e,0x9e)
------------------------
Символьные Служебные
A = 0x4d B = 0x4b Fn = 0x01 (код отпускания 0x9e,0x9e)
C = 0x65 D = 0x28 BSpc (<-) = 0x17
E = 0x12 F = 0x29 Del = 0x48
G = 0x2a H = 0x2b Enter(<-|)= 0x2c
I = 0x68 J = 0x14 Left = 0x2d
K = 0x15 L = 0x16 Right = 0x2e
M = 0x49 N = 0x4a Up = 0x63
O = 0x4f P = 0x4e Down = 0x1b
Q = 0x10 R = 0x13 Phone = 0x18
S = 0x4c T = 0x6b ToDo = 0x1a
U = 0x69 V = 0x64 Date = 0x2f
W = 0x11 X = 0x66 Memo = 0x62
Y = 0x6a Z = 0x67
Speace = 0x19 (оба)
------------------------------------------------------------------------------


----------------------------------------------------------------------------------------
40-кнопочная 3хвольтовая клавиятура с последовательным выходом.
------------------------------------------------------------------------------
Контакты:
2 - Vcc=+3.3V
3 - SO - выходной сигнал
10- общий (0V)
------------------------------------------------------------------------------
Замечания:
Выход SO (конт. 3 разъема) - инверсный.
Т.е. на нем постоянно 0, а данные передаются импульсами +3.3вольта.
Схема сопряжения инвертирует сигнал и согласует его с ТТЛ уровнями, что позволяет подключать клавиатуру к любому встроенному UARTу микроконтроллеров.
Скорость обмена - 9600.
------------------------------------------------------------------------------
Таблица кодов клавиш (коды нажатий - однобайтовые):
Для всех клавиш при отпускании вырабатывается код (0x85,0x85),
кроме клавиши Fn, для неё код отпускания (0x9e,0x9e)
------------------------
Символьные Служебные
A = 0x4d B = 0x4b Fn = 0x01 (код отпускания 0x9e,0x9e)
C = 0x65 D = 0x28 BSpc (<-) = 0x17
E = 0x12 F = 0x29 Del = 0x48
G = 0x2a H = 0x2b Enter(<-|)= 0x2c
I = 0x68 J = 0x14 Left = 0x2d
K = 0x15 L = 0x16 Right = 0x2e
M = 0x49 N = 0x4a Up = 0x63
O = 0x4f P = 0x4e Down = 0x1b
Q = 0x10 R = 0x13 Phone = 0x18
S = 0x4c T = 0x6b ToDo = 0x1a
U = 0x69 V = 0x64 Date = 0x2f
W = 0x11 X = 0x66 Memo = 0x62
Y = 0x6a Z = 0x67
Speace = 0x19 (оба)
------------------------------------------------------------------------------
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Вот тут лежит версия NedoPC-90.AVROS с поддержкой клавиатурки.
http://www.nedopc.org/nedopc/upload/Ned ... st.tar.bz2
Она полностью сконфигурирована для тестовой программки по AT90S8535. Программка читает символ с клавиатуры и
(с учетом CapsLook и Fn) выводит его в поледовательный порт.
Клавиатура подключается к ноге INT0 процессора.
Коды всех служебных клавиш можно посмотреть в файле ../hl/keypad40.h
Схема сопряжения и коды всех клавиш лежат в ../hl/doc.hl/keypad40.txt
Также добавлен модуль поддержки таймера-1.
Клавиатура пока работает только через программный UART, который настроен только на прием (в общем не UART, а UAR
).
Как появится макет с двумя UARTами добавлю поддержку клавиатуры через аппаратный UART.
В общем "на посмотреть" все работает - но кое что еще буду править. Всетаки за несколько часов все не отладить
http://www.nedopc.org/nedopc/upload/Ned ... st.tar.bz2
Она полностью сконфигурирована для тестовой программки по AT90S8535. Программка читает символ с клавиатуры и
(с учетом CapsLook и Fn) выводит его в поледовательный порт.
Клавиатура подключается к ноге INT0 процессора.
Коды всех служебных клавиш можно посмотреть в файле ../hl/keypad40.h
Схема сопряжения и коды всех клавиш лежат в ../hl/doc.hl/keypad40.txt
Также добавлен модуль поддержки таймера-1.
Клавиатура пока работает только через программный UART, который настроен только на прием (в общем не UART, а UAR

Как появится макет с двумя UARTами добавлю поддержку клавиатуры через аппаратный UART.
В общем "на посмотреть" все работает - но кое что еще буду править. Всетаки за несколько часов все не отладить

-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Да! Еще забыл!
Одновременно допускается только нажатие клавиши Fn и любой другой. Две любые другие клавиши нажаты одновременно быть не могут.
Коды в таблице - те, что шлет клавиатура.
Модуль автоматом преобразует их в ASCII. Для несимвольных клавиш используются коды из области 0x01..0x1F.
Ну теперь вроде все. Скачивайте, смотрите. И не пинайте за кривоватый код - он еще сырой. Главное - работает.
Кстати - может статью в следующий номер NedoPC тиснуть о написании программного UARTа и драйвера клавиатуры ? Никто не против ?
Одновременно допускается только нажатие клавиши Fn и любой другой. Две любые другие клавиши нажаты одновременно быть не могут.
Коды в таблице - те, что шлет клавиатура.
Модуль автоматом преобразует их в ASCII. Для несимвольных клавиш используются коды из области 0x01..0x1F.
Ну теперь вроде все. Скачивайте, смотрите. И не пинайте за кривоватый код - он еще сырой. Главное - работает.
Кстати - может статью в следующий номер NedoPC тиснуть о написании программного UARTа и драйвера клавиатуры ? Никто не против ?
-
- Senior
- Posts: 159
- Joined: 28 Feb 2005 02:31
- Location: Krasnodar, Russia
ir-keyboard
Вот интересно, у меня есть клавиатура Луч-803 инфракрасная, как угадать с какой частотой идет обмен? В данный момент использую ее с моим pocketpc, но планирую также использовать со своим программно-вычеслительным комплексиком
))
Да и вообще, есть идея сделать переходник ps/2->ирда. Но планов много, пока налаживаю ir приемник на ATmega8515

Да и вообще, есть идея сделать переходник ps/2->ирда. Но планов много, пока налаживаю ir приемник на ATmega8515
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Re: ir-keyboard
Почитать стандарты на IRDA прежде всего. Я думаю нет ничего невозможногоacidrain wrote:Вот интересно, у меня есть клавиатура Луч-803 инфракрасная, как угадать с какой частотой идет обмен? В данный момент использую ее с моим pocketpc, но планирую также использовать со своим программно-вычеслительным комплексиком))
Да и вообще, есть идея сделать переходник ps/2->ирда. Но планов много, пока налаживаю ir приемник на ATmega8515

-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Браво, SfS! Теперь у нас все есть, чтобы воплотить проект NedoPC-PROTO2 в жизнь! Статью конечно пиши - опубликуем.SfS wrote:Да! Еще забыл!
Одновременно допускается только нажатие клавиши Fn и любой другой. Две любые другие клавиши нажаты одновременно быть не могут.
Коды в таблице - те, что шлет клавиатура.
Модуль автоматом преобразует их в ASCII. Для несимвольных клавиш используются коды из области 0x01..0x1F.
Ну теперь вроде все. Скачивайте, смотрите. И не пинайте за кривоватый код - он еще сырой. Главное - работает.
Кстати - может статью в следующий номер NedoPC тиснуть о написании программного UARTа и драйвера клавиатуры ? Никто не против ?
Я тут за главного - если что шлите мыло на me собака shaos точка net