nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 05:55



Reply to topic  [ 105 posts ]  Go to page 1, 2, 3, 4, 5 ... 7  Next
Клавиатура и NedoPC-90 
Author Message
Doomed

Joined: 16 Apr 2005 22:35
Posts: 492
Location: Томск
Reply with quote
Буду тут писать все касательно клавиатуры, присланной 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 и резистору в базу и коллектор - и все.

Ну вот пока и все что выяснил. Завтра, надеюсь, еще напишу.


07 Dec 2005 19:59
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Чуйствую пора мне делать легковесный интерпретатор RW0-байткода для того чтобы вкмопилировать его в AVR - напомни каков размер int в этом компиляторе?

_________________
:dj: https://mastodon.social/@Shaos


08 Dec 2005 21:31
Profile WWW
Doomed

Joined: 16 Apr 2005 22:35
Posts: 492
Location: Томск
Reply with quote
Post 
Shaos wrote:
Чуйствую пора мне делать легковесный интерпретатор RW0-байткода для того чтобы вкмопилировать его в AVR - напомни каков размер int в этом компиляторе?


16бит, как и для всех 8битных процов обычно. а вообще sizeоf() тебе в помощь :)


10 Dec 2005 22:50
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
SfS wrote:
Shaos wrote:
Чуйствую пора мне делать легковесный интерпретатор RW0-байткода для того чтобы вкмопилировать его в AVR - напомни каков размер int в этом компиляторе?


16бит, как и для всех 8битных процов обычно. а вообще sizeоf() тебе в помощь :)


Это хорошо, так как виртуальная машина RW0 - шестнадцатибитная

_________________
:dj: https://mastodon.social/@Shaos


11 Dec 2005 00:20
Profile WWW
Doomed

Joined: 16 Apr 2005 22:35
Posts: 492
Location: Томск
Reply with quote
Post 
Попытался погонять на стандартных скоростях. Нету толку - шнягу какуюто выдает. Попробую на нестандартных. В общем скорее всего я чегото пока не догоняю. Завтра напишу что получилось.


11 Dec 2005 22:16
Profile
Doomed

Joined: 16 Apr 2005 22:35
Posts: 492
Location: Томск
Reply with quote
Post 
Мда :) Видать не дурак был, сдавший клавиатуру в магазин.

Поведение у нее странное. На одну и ту же клавишу выдает то некий код, то два. Как я понял должен быть код нажатия и отпускания. а иногда она впадает в странный ступор и начинает выдавать на все клавиши код 0x09 (на скорости 9600).

В общем явно "нестабильная работа" - это очень верно подмечено. Кондеры у кварца не помогли (22пф). Сегодня попробую другие.

В общем в этой маленькой штуке - столько интересного :) Правда пока толку мало.


15 Dec 2005 22:45
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
SfS wrote:
Мда :) Видать не дурак был, сдавший клавиатуру в магазин.

Поведение у нее странное. На одну и ту же клавишу выдает то некий код, то два. Как я понял должен быть код нажатия и отпускания. а иногда она впадает в странный ступор и начинает выдавать на все клавиши код 0x09 (на скорости 9600).

В общем явно "нестабильная работа" - это очень верно подмечено. Кондеры у кварца не помогли (22пф). Сегодня попробую другие.

В общем в этой маленькой штуке - столько интересного :) Правда пока толку мало.


Странно. Может быть надо кол-вом стартовых-стоповых битов и четностью поиграть?

Кстати твой экземпляр - новёхонький, прям из упаковки ;)

_________________
:dj: https://mastodon.social/@Shaos


15 Dec 2005 23:18
Profile WWW
Doomed

Joined: 16 Apr 2005 22:35
Posts: 492
Location: Томск
Reply with quote
Post 
Shaos wrote:
Странно. Может быть надо кол-вом стартовых-стоповых битов и четностью поиграть?

Кстати твой экземпляр - новёхонький, прям из упаковки ;)


Четностью - смысла не имеет. Если четность отключена - то бит четности просто игнорируется.

Количеством бит - попробую, конечно. Но всетаки странно както она себя ведет. Хотя если новая - то я сам чтото наверное недогоняю.
В любом случае - при нажатии одной и той же клавиши должен быть одинаковый результат. При любой скорости. Только что при неверной скорости результат неверный будет - но все равно одинаковый...

Кстати - UART использую программный - может в нем еще ошибка. Ладно - разберемся. И не такое ломали :)

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


16 Dec 2005 03:10
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Я в свое время при изучении всяких таких девайсов (в том числе и пультов) просто записывал сигнал. Причем простым SoundForge'м и с помощью простой звуковой карты. А потом анализировал эпюру. Думаю, согласовать сможешь сам, скоростя низкие, поэтому 44кГц тебе хватит. Попробуй - реально помогает. Причем, ты можешь записать сигналы всех кнопок и совместить их по началу стартового бита. Сразу все видно. =)


16 Dec 2005 10:29
Profile
Doomed

Joined: 16 Apr 2005 22:35
Posts: 492
Location: Томск
Reply with quote
Post 
Поздно советовать :) Усе уже кончено :) Сидение с кофием до 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 (оба)
------------------------------------------------------------------------------


17 Dec 2005 02:51
Profile
Doomed

Joined: 16 Apr 2005 22:35
Posts: 492
Location: Томск
Reply with quote
Post 
Вот тут лежит версия 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.

В общем "на посмотреть" все работает - но кое что еще буду править. Всетаки за несколько часов все не отладить :)


17 Dec 2005 03:08
Profile
Doomed

Joined: 16 Apr 2005 22:35
Posts: 492
Location: Томск
Reply with quote
Post 
Да! Еще забыл!

Одновременно допускается только нажатие клавиши Fn и любой другой. Две любые другие клавиши нажаты одновременно быть не могут.

Коды в таблице - те, что шлет клавиатура.

Модуль автоматом преобразует их в ASCII. Для несимвольных клавиш используются коды из области 0x01..0x1F.

Ну теперь вроде все. Скачивайте, смотрите. И не пинайте за кривоватый код - он еще сырой. Главное - работает.

Кстати - может статью в следующий номер NedoPC тиснуть о написании программного UARTа и драйвера клавиатуры ? Никто не против ?


17 Dec 2005 03:13
Profile
Senior

Joined: 28 Feb 2005 02:31
Posts: 159
Location: Krasnodar, Russia
Reply with quote
Вот интересно, у меня есть клавиатура Луч-803 инфракрасная, как угадать с какой частотой идет обмен? В данный момент использую ее с моим pocketpc, но планирую также использовать со своим программно-вычеслительным комплексиком ;)))
Да и вообще, есть идея сделать переходник ps/2->ирда. Но планов много, пока налаживаю ir приемник на ATmega8515


17 Dec 2005 04:22
Profile
Doomed

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


Почитать стандарты на IRDA прежде всего. Я думаю нет ничего невозможного :)


17 Dec 2005 06:00
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
SfS wrote:
Да! Еще забыл!

Одновременно допускается только нажатие клавиши Fn и любой другой. Две любые другие клавиши нажаты одновременно быть не могут.

Коды в таблице - те, что шлет клавиатура.

Модуль автоматом преобразует их в ASCII. Для несимвольных клавиш используются коды из области 0x01..0x1F.

Ну теперь вроде все. Скачивайте, смотрите. И не пинайте за кривоватый код - он еще сырой. Главное - работает.

Кстати - может статью в следующий номер NedoPC тиснуть о написании программного UARTа и драйвера клавиатуры ? Никто не против ?


Браво, SfS! Теперь у нас все есть, чтобы воплотить проект NedoPC-PROTO2 в жизнь! Статью конечно пиши - опубликуем.

_________________
:dj: https://mastodon.social/@Shaos


17 Dec 2005 10:15
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 105 posts ]  Go to page 1, 2, 3, 4, 5 ... 7  Next

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.