Важная информация

User Tag List

Страница 10 из 19 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 182

Тема: Схема и прошивка контроллера AT PC-Keyb на AT90S2313 Камиля Каримова

  1. #91
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ILoveSpeccy Посмотреть сообщение
    * если одновременно нажато 2 или более кнопки, каким образом это проще распознать?
    Судя по описаниям контроллеров клавиатур (я имею ввиду встроенных в клавиатуры),
    они допускают обработку не более 6 одновременно нажатых клавиш.
    Поэтому в памяти внешнего контроллера организуется буфер на 6 скан-кодов.
    Каждая нажатая клавиша вызывает выдачу в интерфейс своего скан-кода (некоторые больше одного).
    Даже если нажато одновременно несколько клавиш, их скан-коды будут выданы в линию один за другим,
    в порядке опроса матрицы клавиатуры встроенным контроллером.
    Принятые скан-коды помещаются в буфер внешнего контроллера.
    При отпускании клавиши, в начале выдается служебный байт (0xF0) - признак отпускания, затем сам скан-код этой клавиши.
    При этом из буфера удаляется код отпущенной клавиши.

    Цитата Сообщение от ILoveSpeccy Посмотреть сообщение
    * что делать с автоповтором, который в РС-клавиатуре? Как он работает? Просто передает несколько раз код нажатия клавиши и только при отпускании передает код, что кнопка отпущена?
    При удержании клавиши начинается цикл автоповтора, при котором в линию передается один и тот же код нажатой клавиши.
    Принятый код надо просто сравнить с тем что уже лежит в буфере, и при совпадении просто игнорировать.
    Есть правда еще один вариант и лично я им пользуюсь.
    Надо переключить клавиатуру в режим scan code 3, при котором каждой нажатой клавише соответсвует один уникальный скан-код, а также установить режим работы Make/Break запрещающий автоповтор кода:
    Код:
    	ldi	data,0xf0	;Select Alt_Scan
    	rcall	trans_ack	;передать
    	ldi	data,0x03	;Alt_Scan = 3
    	rcall	trans_ack	;передать
    ;
    	ldi	data,0xf8	;Select All Make/Break
    	rcall	trans_ack	;передать
    Последний раз редактировалось caro; 07.06.2007 в 08:54.

  2. #91
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #92
    Veteran
    Регистрация
    22.02.2005
    Адрес
    Украина, Харьков
    Сообщений
    1,527
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro
    У Mega8(88) не очень удобно распределение ножек по портам - один полноценный 8-ми битный порт,
    но поскольку именно на нем закреплены основные сигналы прерываний использовать
    его как порт связи с шиной Z80 не получается.
    Так что простыми способами перенести прошивку из Mega8515 в Mega8(88) не получается.
    Может конечно и ошибаюсь, но можно и второй порт под порт данных заюзать - PB, а осциллятор использовать внутренний. Ведь контроллеры в самих клавах/мышах не обладают большой стабильностью частоты. В то же время внутренний осциллятор Меги, в принципе обладает приемлимой стабильностью частоты. Кроме того, хоть и не так хорошо как в базе (8515), но и в Меге8 можно реализовать COM-порт; проблемы только будут с пересчетом коэффициентов для таймеров, и отклонением этих частот от стандартных, но это не очень существенно, IMHO.

  4. #93
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от spensor Посмотреть сообщение
    Может конечно и ошибаюсь, но можно и второй порт под порт данных заюзать - PB,
    Длительность WAIT увеличится.
    Цитата Сообщение от spensor Посмотреть сообщение
    а осциллятор использовать внутренний. Ведь контроллеры в самих клавах/мышах не обладают большой стабильностью частоты. В то же время внутренний осциллятор Меги, в принципе обладает приемлимой стабильностью частоты.
    Да, стабильность при работе с клавиатурой и мышкой вполне премлемая.
    Только вот частота 8 Мгц, а для Mega8(88) можно ставить внешний до 20 МГц.
    Цитата Сообщение от spensor Посмотреть сообщение
    Кроме того, хоть и не так хорошо как в базе (8515), но и в Меге8 можно реализовать COM-порт; проблемы только будут с пересчетом коэффициентов для таймеров, и отклонением этих частот от стандартных, но это не очень существенно, IMHO.
    COM-порт при тактовой частоте 8 Мгц с приемлемой точностью может работать со скоростью не выше 9600 бод.

    Реализовать можно все что хочется, только какими усилиями.
    При таких потребностях в периферии проще уж ставить и контроллер соответсвующий.

  5. #94
    Veteran
    Регистрация
    22.02.2005
    Адрес
    Украина, Харьков
    Сообщений
    1,527
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro
    Длительность WAIT увеличится.
    В смысле? Из-за порта что-ли?.. Или из-за осциллятора?

    Цитата Сообщение от caro
    Да, стабильность при работе с клавиатурой и мышкой вполне премлемая.
    Только вот частота 8 Мгц, а для Mega8(88) можно ставить внешний до 20 МГц.
    Ну тут как говорится, выбирается меньшая из зол. С WAIT как нибудь пережить можно.
    Цитата Сообщение от caro
    COM-порт при тактовой частоте 8 Мгц с приемлемой точностью может работать со скоростью не выше 9600 бод.
    Ну хоть как нибудь. Хотя COM в принципе это пока штука невостребованная, в отличии от клавиатур/мышей. Главное конструктив и поддержка производителя
    Цитата Сообщение от caro
    При таких потребностях в периферии проще уж ставить и контроллер соответсвующий.
    Ну для абсолютного счастья в самый раз ARM9 подойдет, с OTG USB2.0 на борту, но как говорится "это фантастика"

  6. #95
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от spensor Посмотреть сообщение
    В смысле? Из-за порта что-ли?..
    Биты придется раскидать по двум портам и выдавать их за два приема.
    Вот и времени больше тратится.
    А /WAIT при работе с клавиатурой многим не нравится
    COM-порт я считаю крайне необходимая штука, и то что пока не востребован, это временное явление.
    Скорость работы порта желательно как можно больше (115200), тогда и толк от него будет максимальный.
    Времени пока нет, а то бы давно написал утилиту для загрузки в Спектрум Z80 и SNA-файлов по COM-порту ZXMC.
    Последний раз редактировалось caro; 07.06.2007 в 13:16.

  7. #96
    Veteran
    Регистрация
    22.02.2005
    Адрес
    Украина, Харьков
    Сообщений
    1,527
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro
    Биты придется раскидать по двум портам и выдавать их за два приема.
    Вот и времени больше тратится.
    Еще раз. Если отказаться от внешнего резонатора, и порт PB использовать как порт данных, то все же сходится??? WAIT остается прежним?
    Разбитие данных на два ниббла это уже и задержки по времени, и внешний регистр для хранения этих данных. В общем не катит.
    Цитата Сообщение от caro
    А /WAIT при работе с клавиатурой многим не нравится
    Ну это уже кому с крыльями, а кому и с перламутровыми пуговоцами Я пока про конструктив-корпус DIP28 говорю.
    Цитата Сообщение от caro
    COM-порт я считаю крайне необходимая штука, и то что пока не востребован, это временное явление.
    Скорость работы порта желательно как можно больше (115200), тогда и толк от него будет максимальный.
    Времени пока нет, а то бы давно написал утилиту для загрузки в Спектрум Z80 и SNA-файлов по COM-порту ZXMC.
    Ну в общем-то да, отрицать не смею. Но абсолютно необходимым элементом все-таки остается клавиатура с мышью. Насколько реально реализовать такую версию прошивки? И какая погрешность скорости передачи будет для COM-порта на максимальной частоте, действительно ли в допуск не вписываемся? И еще, ради благого дела остается вариант с внешним тактовым сигналом для таймера (T0/PD4 или T1/PD5, уж не знаю какой таймер предделителем для COMа идет).

  8. #97
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    886
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    COM-порт должен быть точным.
    В свое время я проводил эксперимент на Профике по подключению внешнего модема Inpro IDC-1914BXL в ZX-режиме. Модем не реагировал на команды, тупо посылая эхом все, что в него вводится. Причиной было несоответствие задающих частот мастер-генератора (того что тактирует CPU, видео и все остальное, в том числе и ВВ51). При переключении видеорежима частота меняется, это хорошо заметно на AY (начинает по-другому играть). А константы для делителя и ВИ53 я из CP/M-овского драйвера содрал.
    Такое же поведение у модема наблюдалось, если я на PC выставлял не шибко стандартную скорость (типа 12000 bps, некоторые терминалки это позволяют). Как известно, модемы распознают скорость порта автоматически, так вот, у этой модели определение правильно срабатывало только на стандартных скоростях.

  9. #98
    Veteran
    Регистрация
    22.02.2005
    Адрес
    Украина, Харьков
    Сообщений
    1,527
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На RS-232 есть допуски по отклонению скорости, не помню, где-то 1-5%. Сама линия связи нестабильна, и как правило возникают фазовые сдвиги. Вот собственно по этой причине и есть допуски на скорость, и потолок в 115,2Кб/с. Если можно вписаться с точностью в половину допуска, то вариант жизнеспособен.

  10. #99
    Activist Аватар для DVS
    Регистрация
    11.03.2005
    Адрес
    Екатеринбург
    Сообщений
    311
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от spensor Посмотреть сообщение
    На RS-232 есть допуски по отклонению скорости, не помню, где-то 1-5%. Сама линия связи нестабильна, и как правило возникают фазовые сдвиги. Вот собственно по этой причине и есть допуски на скорость, и потолок в 115,2Кб/с. Если можно вписаться с точностью в половину допуска, то вариант жизнеспособен.


    Может я что-то не понимаю в схемном решении caro, но времянку USART разворачивает микроконтроллер, а если глянуть PDF-ку, то можно увидеть, что на частоте кварца 11.0592МГц ошибка 0% (ну вобще-то ошибкой кварца определяется). И действительно если 115200 умножить на 96(целое число, в которое входит делитель), то получим частоту кварца. А для загрузки делителя используются свои регистры UBRR.
    Последний раз редактировалось DVS; 07.06.2007 в 20:30.
    Magic 05/128Кб/AY/kempston mouse/FDD 5.25/ext keyboard/minitower
    "ZX FlashTaper" developer : тут

  11. #100
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DVS Посмотреть сообщение
    Может я что-то не понимаю в схемном решении caro, но времянку USART разворачивает микроконтроллер, а если глянуть PDF-ку, то можно увидеть, что на частоте кварца 11.0592МГц ошибка 0% (ну вобще-то ошибкой кварца определяется). И действительно если 115200 умножить на 96(целое число, в которое входит делитель), то получим частоту кварца. А для загрузки делителя используются свои регистры UBRR.
    С ZXMC как раз никаких проблем нет, при тактировании соответствующим кварцем никаких ошибок и не будет.
    Предлагают использовать внутренний генератор Mega8(88) на 8 МГц для того что бы освободить ножки контроллера.
    В этом случае точной частоты тактирования на скоростях выше 9600 не добится.
    А точность тактирования не должна быть ниже 3%.
    Последний раз редактировалось caro; 08.06.2007 в 10:10.

Страница 10 из 19 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •