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

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 14 из 14

Тема: Безвейтовый контроллер PS/2 клавиатуры на AVR без CPLD для ZX Spectrum и клонов

  1. #11

    Регистрация
    26.03.2019
    Адрес
    г. Москва
    Сообщений
    52
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    oistalker, классная идея!

    Я вот подумал, если есть зашифрованный адрес, то можно использовать SRAM типа 74hc670 с возможностью одновременной записи и чтения, только большего размера. Конечно, 595 самые дешёвые и распространенные, но может быть есть что-то подходящее.
    Можно и обычную маленькую SRAM взять, только нужно как-то урегулировать запись и чтение чтобы не было слишком короткого строба записи. Можно писать в память сразу после строба чтения.
    Последний раз редактировалось Helbr; 22.10.2021 в 22:33.

  2. #12

    Регистрация
    29.11.2006
    Адрес
    Москва
    Сообщений
    100
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Helbr Посмотреть сообщение
    oistalker, классная идея!

    Я вот подумал, если есть зашифрованный адрес, то можно использовать SRAM типа 74hc670 с возможностью одновременной записи и чтения, только большего размера. Конечно, 595 самые дешёвые и распространенные, но может быть есть что-то подходящее.
    Можно и обычную маленькую SRAM взять, только нужно как-то урегулировать запись и чтение чтобы не было слишком короткого строба записи. Можно писать в память сразу после строба чтения.
    Тут основная идея в том, что SPI в микроконтроллере аппаратный и работает на достаточно большой частоте, так что можно обеспечить минимальный инпут лаг. Если же взять что-нибудь типа IDT7130, учитывая количество свободных пинов на контролере, нужно будет использовать защёлки для фиксации адресов и параллельных данных и отдельно формировать импульсы записи. Тогда уж проще сразу CPLD использовать, но HC595 проще купить и нет проблемы с залоченными пинами jtag, как у MAX7000 из Китая
    ZX-Spectrum +2
    ZX-UNO 4.1
    Sizif512
    ZX-Evolution
    Harlequin 128

  3. #13

    Регистрация
    26.03.2019
    Адрес
    г. Москва
    Сообщений
    52
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию


    Думаю такая схема должна работать.
    1. После сброса МК заполняет 256 байт памяти единицами.
    2. Шины адреса и данных МК переводятся в режим входа с резисторами подтяжки. Внешние резисторы подтяжки могут не понадобиться.
    3. Когда МК получает данные с клавиатуры сразу же пишет измененный байт в память. Обновляются только 8 байт по адресам сканирования: 0b1111_1110, 0b1111_1101, 0b1111_1011 и т.д. Возможно что даже не будет никаких проблем с мусором на шине данных так как алгоритм опроса клавиатуры спека подавит данный "дребезг контактов". Но более вероятно что придется запрещать запись в память во время чтения клавиатуры. Для этого МК должен проверить наличие строба чтения клавиатуры перед записью в память. Цикл чтения порта z80 при частоте 3,5 МГц составляет 700 нс. Этого достаточно для того чтобы завершить предыдущий цикл записи, (при условии что память достаточно быстродействующая, скажем 100 нс) и считать данные. Конечно, критически важный код записи в память нужно максимально оптимизировать.
    4. Ещё остаётся вариант: отслеживать строб чтения и писать в память сразу после него. Времени для записи остаётся более чем достаточно, даже если z80 подряд выполняет операции IN будет примерно 10 тактов z80 между стробами чтения.
    Последний раз редактировалось Helbr; 25.10.2021 в 13:41.

  4. #14

    Регистрация
    07.05.2015
    Адрес
    г. Ульяновск
    Сообщений
    352
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    63
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    26 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Отличный проект, спасибо!
    Единственный быстрый контроллер, построенный на выпускаемой сегодня элементной базе.
    Захотелось в качестве микроконтроллера использовать atmega8, переписал прошивку над неё на на ассемблере (точнее, на своём недо-языке the Rat), что позволило ощутимо сократить размер кода (и, теоретически, уменьшить инпут лаг).
    Исходники и прошивка тут: https://github.com/trol73/avr-zx-spectrum-keyboard-595

    Reset, NMI и сложные клавиатурные макросы пока не добавлял (мне они сейчас не к чему), работу с геймпадом тоже (пока не на чем отлаживать).
    В будущем есть желание переделать схему на работу с геймпадами Sega / NES с автоопределением. Свободные пины у атмеги остались, можно будет второй разъём геймпада добавить.

Страница 2 из 2 ПерваяПервая 12

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

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

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

Похожие темы

  1. Ответов: 41
    Последнее: 21.11.2025, 20:51
  2. Ответов: 281
    Последнее: 12.03.2024, 20:01
  3. Схемы WAIT для различных клонов ZX Spectrum
    от ARTi в разделе Несортированное железо
    Ответов: 0
    Последнее: 28.04.2008, 16:57
  4. безвейтовый контроллер AT-клавы на МК
    от boo_boo в разделе Устройства ввода
    Ответов: 23
    Последнее: 07.03.2007, 13:17

Ваши права

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