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

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 24

Тема: безвейтовый контроллер AT-клавы на МК

  1. #1
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question безвейтовый контроллер AT-клавы на МК

    плз, обьясните, почему если контроллер AT-клавы с программной эмуляцией матрицы в МК, то обязательно надо вейтить Z80?
    неужто, если опрашивать клаву в бесконечном цикле, уходить в INT по /RD+/IORQ+A0=0 и тут же отдавать Z80 готовые данные, МК не успеет?
    Последний раз редактировалось boo_boo; 05.03.2007 в 14:43.

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

  3. #2
    Guru Аватар для CHRV
    Регистрация
    18.01.2005
    Адрес
    Москва
    Сообщений
    3,695
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от boo_boo Посмотреть сообщение
    плз, обьясните, почему если контроллер AT-клавы с программной эмуляцией матрицы в МК, то обязательно надо вейтить Z80?
    неужто, если опрашивать клаву в бесконечном цикле, уходить в INT по /RD+/IORQ+A0=0 и тут же отдавать Z80 готовые данные, МК не успеет?
    Нужно чтобы подготовить данные, ибо в зависимости от значений линий адреса во время опроса, нужно контроллеру сложить соответствующие регистры (это делается контроллером программно).
    В случае безвайтовавого контроллера надо дополнительную схему которая складывает аппаратно значение регистров в зависимости от опрашиваемых линий.

    Пожалуйста пишите в email (chunin{гаф}mail{тчк}ru), личка отключена!!!

    NedoPC group. ZX-Evolution, ATM Turbo 2+, Pentagon1024SL.
    [Предлагаю: ZXEvo, PAL coder, NeoGS, TS-FM, YM2149, Z80 и прочее]
    Все здесь: http://www.nedopc.com.
    Новости/поддержка/Faq: http://forum.nedopc.com.
    Раздача халявы: http://forum.nedopc.com/viewtopic.php?f=32&t=977

  4. #3
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а если держать в памяти МК (заполняя по мере нажатия клавиш) 256-байтную таблицу с текущим состоянием клавы для всех возможных сочетаний линий a8-a15 (т.е обьединять полуряды по ИЛИ заранее) и в прерывании просто брать оттуда готовое значение?

  5. #4
    Guru Аватар для CHRV
    Регистрация
    18.01.2005
    Адрес
    Москва
    Сообщений
    3,695
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от boo_boo Посмотреть сообщение
    а если держать в памяти МК (заполняя по мере нажатия клавиш) 256-байтную таблицу с текущим состоянием клавы для всех возможных сочетаний линий a8-a15 (т.е обьединять полуряды по ИЛИ заранее) и в прерывании просто брать оттуда готовое значение?
    Всеравно нужно время на обработку прерывания контроллеру и выборку нужного значения.

    Пожалуйста пишите в email (chunin{гаф}mail{тчк}ru), личка отключена!!!

    NedoPC group. ZX-Evolution, ATM Turbo 2+, Pentagon1024SL.
    [Предлагаю: ZXEvo, PAL coder, NeoGS, TS-FM, YM2149, Z80 и прочее]
    Все здесь: http://www.nedopc.com.
    Новости/поддержка/Faq: http://forum.nedopc.com.
    Раздача халявы: http://forum.nedopc.com/viewtopic.php?f=32&t=977

  6. #5
    Member
    Регистрация
    02.03.2005
    Адрес
    Екатеринбург
    Сообщений
    133
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно сделать безвайтовый контроллер без особых ухищрений, если между МК и спеком поставить маааленьку м/с памяти на 256 байт - мк будет обновлять данные в ней, спек - читать (с большим приоритетом).
    Однако изза незначительной длительности Wait-а в схеме "без-вайта" вся канитель с доп памятью смысла не имеет.
    (По моим приблизительным подсчетам, если делать с табличкой в памяти МК то можно добиться значения wait-а в 2-3 спековских такта при частоте МК 8 мгц (AVR)).

  7. #6
    Master Аватар для KingOfEvil
    Регистрация
    16.06.2005
    Адрес
    Москва, Ногинск
    Сообщений
    708
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexCrush Посмотреть сообщение
    Можно сделать безвайтовый контроллер без особых ухищрений, если между МК и спеком поставить маааленьку м/с памяти на 256 байт - мк будет обновлять данные в ней, спек - читать (с большим приоритетом).
    А зачем 256 байт? Мне хватило 5 байтов (40 битов, 40 кнопок Спектрума). А еще я не стал ставить микросхему памяти, а поставил ПЛИС, куда была запихнута и вся мелкая логика. Данные в ПЛИС периодически закачивает контроллер КР1878ВЕ1, на котором реализован ps2 интерфейс и сопутствующая перекодировка скан-кодов.


    Цитата Сообщение от CHRV Посмотреть сообщение
    Всеравно нужно время на обработку прерывания контроллеру и выборку нужного значения.
    Допустим, контроллер работает на частоте 10 МГц. Период тактовой частоты составляет 100 нс. Современные контроллеры, как правило, с гарвардской архитектурой и выполняют лобую команду за 2 периода тактовой частоты, т.е. в нашем случае за 200 нс. А сколько команд нужно выполнить, просто чтобы зафиксировать факт обращения процессора к порту FEh? Десяток точно наберется. Отсюда и необходимость тормозить процессор на время, необходимое контроллеру, чтобы прочитать состояние шины адреса, вычислить необходимое значение в соответствии с принятыми скан-кодами и выдать его на шину данных. Поэтому безвайтный контроллер просто так не сделать, надо извращаться.
    Последний раз редактировалось KingOfEvil; 05.03.2007 в 23:12. Причина: Добавлено сообщение

  8. #7
    Member
    Регистрация
    02.03.2005
    Адрес
    Екатеринбург
    Сообщений
    133
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KingOfEvil Посмотреть сообщение
    А зачем 256 байт? Мне хватило 5 байтов (40 битов, 40 кнопок Спектрума). А еще я не стал ставить микросхему памяти, а поставил ПЛИС, куда была запихнута и вся мелкая логика. Данные в ПЛИС периодически закачивает контроллер КР1878ВЕ1, на котором реализован ps2 интерфейс и сопутствующая перекодировка скан-кодов.
    256 байт - как раз чтобы не заниматься каждый раз высчитыванием ответа спектруму - чтобы убыстрить отклик МК на чтение порта FE.
    Хотя с ПЛИС такой проблемы явно нету ;-) - она сама всё что нужно насчитает.
    Цитата Сообщение от KingOfEvil Посмотреть сообщение
    Допустим, контроллер работает на частоте 10 МГц. Период тактовой частоты составляет 100 нс....
    ...
    Поэтому безвайтный контроллер просто так не сделать, надо извращаться.
    В целом вывод ни в коей мере не оспариваю - от вайта в схеме без ПЛИС/внешней памяти сложно избавиться Лишь несколько корректировок.
    AVR (ATmega) выполняет команду за такт. Вход в прерывание - 4 такта. 1 такт - чтение старшего байта адреса с порта МК. еще 2 такта - чтение байта клавиатуры из памяти (это в лучшем случае - если таблица в 256 байт готова). 1 такт - на вывод байта наружу. Итого - 8 тактов. т.е. 800 нс.
    На нетурбированном спеке за это время истечет 3 такта (286 нс) - т.е. может быть можно успеть за время I/O операции Z80 (как раз 3 такта) (если я нигде не обсчитался. На турбированном - точно не успеть.
    Последний раз редактировалось AlexCrush; 06.03.2007 в 18:48.

  9. #8
    Master Аватар для KingOfEvil
    Регистрация
    16.06.2005
    Адрес
    Москва, Ногинск
    Сообщений
    708
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexCrush Посмотреть сообщение
    256 байт - как раз чтобы не заниматься каждый раз высчитыванием ответа спектруму - чтобы убыстрить отклик МК на чтение порта FE.
    А, вот зачем.

    Цитата Сообщение от AlexCrush
    Хотя с ПЛИС такой проблемы явно нету ;-) - она сама всё что нужно насчитает.
    ПЛИС у меня ничего не считает, там жесткая логика (мультиплексор + 5 штук 8-разрядных регистров, в которые микроконтроллер периодически закачивает уже сформированную матрицу клавиатуры: 5x8=40 бит, по 1 биту на каждую кнопку).

    Цитата Сообщение от AlexCrush
    AVR (ATmega)
    Не люблю avr
    Последний раз редактировалось KingOfEvil; 06.03.2007 в 20:30.

  10. #9
    Veteran Аватар для jtn
    Регистрация
    15.01.2005
    Адрес
    Kievska Rus
    Сообщений
    1,149
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ангстрем маздай.
    у атмела есть mcu+fpga в одном чипе (не знаю, может уже и cpld осилили)

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

    По умолчанию

    Цитата Сообщение от AlexCrush Посмотреть сообщение
    256 байт - как раз чтобы не заниматься каждый раз высчитыванием ответа спектруму - чтобы убыстрить отклик МК на чтение порта FE.
    Если внимательно посмотрите, значение каждого байта этого ОЗУ надо предварительно рассчитать
    в зависимости от нажатых клавиш, так что никакого выигрыша в быстродействии такой подход не дает.
    Как раз жесткая логика, реализованная на CPLD дает выигрыш, поскольку операция ИЛИ в матрице
    клавиатуры реализуется аппаратно.
    Что касается применяемого микроконтроллера, то на вкус и цвет товарищей нет.
    Лично я делаю на том, что наиболее приемлемо в разрабатываемой кострукции, по разным критериям -
    цена, быстродействие, подходящий тип корпуса, наличие хороших средств разработки и отладки и т.д.
    Последний раз редактировалось caro; 06.03.2007 в 21:28.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. [Поиск 1] Контроллер IDE
    от CHRV в разделе Поиск
    Ответов: 25
    Последнее: 02.10.2020, 16:07
  2. ZX-MMC контроллер
    от Orionsoft в разделе Внешние накопители
    Ответов: 17
    Последнее: 12.05.2019, 17:11
  3. Контроллер многозадачной ОС
    от Conan в разделе Оси
    Ответов: 50
    Последнее: 20.09.2009, 10:56
  4. глюки клавы
    от boo_boo в разделе Устройства ввода
    Ответов: 5
    Последнее: 11.02.2007, 15:55
  5. Есть плата PC клавы и мыши для ZS256
    от Sergei Frolov в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 15.01.2006, 14:56

Ваши права

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