User Tag List

Показано с 1 по 10 из 111

Тема: Super Joystick Port

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Для любителей периферии от Сега добавлю некоторую инфу, которая позволит оптимизировать процедуру опроса. Типичный код опроса 6ти кнопочного джойстика:
    ...
    Т.е., пульс длинной в чтение 5ти слов (2 NOPа и 1 move.b с длинным EA). На 7,6МГц это будет примерно 6мкс.
    ...
    TH = 1 : ?1CBRLDU
    TH = 0 : ?0SAIIII
    TH = 1 : ?1CBRLDU Кнопки 3х кнопочного пада
    TH = 0 : ?0SAIIII Кнопки 3х кнопочного пада
    TH = 1 : ?1CBRLDU Кнопки 3х кнопочного пада
    TH = 0 : ?0SA0000 D3-D0 сброшены в '0'
    TH = 1 : ?1CBMXYZ Дополнительные кнопки могут быть считаны через D3-D0
    TH = 0 : ?0SA1111 D3-D0 установлены в '1'
    Спасибо, интересно было узнать, в какие моменты читается джойстик в SEGЕ.
    Интервал 6 мкс * 7 интервалов - это около 464 такта AVR на частоте 11.0592 МГц. Жалко это время тратить впустую. Лучше прерывания сделать через 50 мкс.

    Моя диаграмма в принципе соответствует этому, но лучше скорректировать, как в оригинале.

    Тогда получается следующая картина.

    1. 0 50 мкс
    2. 1 50 мкс
    3. 0 50 мкс
    4. 1 50 мкс
    5. 0 50 мкс
    6. 1 50 мкс
    7. 0 50 мкс
    8. 1 2000 мкс

    1 прерывание: читаем B, C, UP, DOWN, LEFT, RIGHT. Затем делаем SYN=0.
    2 прерывание: читаем A, START. Затем делаем SYN=1.
    3-6 прерывания: меняем SYN на противоположный без чтения из джойстика.
    7 прерывание: читаем X, Y, Z, SELECT. Затем делаем SYN=0.
    8 прерывание: делаем SYN=1.
    9-47 прерывание: просто увеличиваем счетчик прерываний.
    48 прерывание: обнуляем счетчик прерываний.

    Как только считаются все 12 кнопок (в 8 прерывании) нужно будет записать во флаг SEGA_state значение READY. В основном цикле программа будет опрашивать состояния трех источников данных. Как только появится данное состояние SEGA джойстика - запустится подпрограмма обработки кнопок джойстика. После этого флаг SEGA_state установить в значение PROCESS и записать 11 во все биты входного буфера данных с джойстика. Затем цикл повторяется.
    Последний раз редактировалось zx-kit; 13.02.2015 в 19:01.
    "L-256"

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

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

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

Похожие темы

  1. Не сбрасываемый порт 254 (Non reset port #FE)
    от Black_Cat в разделе Разный софт
    Ответов: 31
    Последнее: 01.03.2012, 10:42
  2. Profi3.2-Incorrect Port #BFFD
    от solegstar в разделе Profi
    Ответов: 4
    Последнее: 18.01.2012, 18:35
  3. artyllery c64 demo music port to TSFM?
    от Renegade в разделе Музыка
    Ответов: 5
    Последнее: 25.05.2011, 22:29
  4. Модем на serial port
    от rw6hrm в разделе Несортированное железо
    Ответов: 20
    Последнее: 16.09.2005, 14:30

Ваши права

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