User Tag List

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

Тема: ZX Remote GamePad

Комбинированный просмотр

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

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Это хорошо. Надо купить девборды и индикаторы для макетирования. Я так понял, что шлейф можно паять и он не расплавится. Шаг контактов у него какой ? Символы размером 8х8 точек можно будет разглядеть ? И общий размер какой ?
    Там коннектор , если не ошибаюсь 10 pin .

    Цитата Сообщение от zst Посмотреть сообщение
    Программа прерывания будет примерно такой:

    void ISR_IN_FE (void)
    {
    PORT_KEY_DATA = KEY_BUFFER (PORT_KEY_ADDR);
    }
    Прерываться от чего бум?
    Есть вариант на EXTI - повесить на каждый вход от адресов спекки .
    В прерывании будем иметь сканбит в полученном байте,
    преобразуем вес разряда в порядковый номер бита - получаем индекс массива .

    В итоге что то типа этого (внимание !!! Это только надумки!!)

    Код:
        void EXTI4_15_IRQHandler (void)
    {
    
          ....
         cut    
          ....
    
          index= Conv( PORT_KEY_ADDR);
          PORT_KEY_DATA = KEY_BUFFER [index]; 
    
    }
    Массив KEY_BUFFER [], будет забивать DMA от USART, автоматом , почти ...


    Цитата Сообщение от zst Посмотреть сообщение
    Как ARM данные по 8 и 5 битов обрабатывают ?
    Какую среду разработки качать: IAR или KEIL ?
    1) нормально , так же как и другие . ))
    2) Качайте Keil http://rutracker.org/forum/viewtopic.php?t=2305709
    Ставите сам MDK и паки , в паках можно выбрать только STM .
    В IAR обнаружил пакость, что не даст использовать STM по полной ...
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от dosikus Посмотреть сообщение
    Прерываться от чего бум?
    Есть вариант на EXTI - повесить на каждый вход от адресов спекки .
    В прерывании будем иметь сканбит в полученном байте,
    преобразуем вес разряда в порядковый номер бита - получаем индекс массива .

    В итоге что то типа этого (внимание !!! Это только надумки!!)
    В прерывании надо читать сразу 8 бит адреса. Этот байт будет индексом в массиве.

    Лучше вырубить все остальные дма и прерывания. Оставить только на клавиатуру. Наличие нового байта лучше ожидать в цикле. Если пришел байт - прочитать его и начать анализировать. Предлагаю для дополнительной синхронизации сделать проверку: если в принятом байте 3 старших бита 000 - значит начало пакета, счетчик байтов установить на 0 (если не ожидаем контрольного байта). У следующих байтов 3 старших бита 111. По номеру байта в пакете складывать их в соответствующие переменные (не массив), например, A8_KEY_LINE - A15_KEY_LINE. Тут скорость особая не нужна. Если в последнем байте контрольная совпала - вызываем подпрограмму декодирования - распаковки. Она из 8 байтов должна сделать 256 байтов на все варианты 8 битов адреса. Вот тут скорость нужна, чтобы быстро вычислить 256 байтов.
    Последний раз редактировалось zx-kit; 21.01.2014 в 20:49.
    "L-256"

  4. #3

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    В прерывании надо читать сразу 8 бит адреса. Это будет индекс в массиве.
    Все биты и бум читать ,
    в сей хэндлер попадаем если хоть один вход изменится ( параметры настраиваются)

    Цитата Сообщение от zst Посмотреть сообщение
    Лучше вырубить все остальные дма и прерывания. Оставить только на клавиатуру.
    Зачем ? Это не AVR ни что никому мешать не будет .
    А поллинг только усугубит - отвыкайте от AVR ...
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  5. #4

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

    По умолчанию

    Цитата Сообщение от dosikus Посмотреть сообщение
    Все биты и бум читать ,
    в сей хэндлер попадаем если хоть один вход изменится ( параметры настраиваются)

    Зачем ? Это не AVR ни что никому мешать не будет .
    А поллинг только усугубит - отвыкайте от AVR ...
    Лучше прерывания по сигналу IN_FE (IN_K&K). В этот момент Z80 читает состояние клавиатуры. И байт адреса нужно обрабатывать целиком. Для максимальной скорости лучше эту единственную команду в подпрограмме прерывания написать на ассемблере. Возможно лучше использовать не массив, а адреса в ОЗУ.

    Кроме обработки клавиатуры контроллеру ничего делать не нужно.
    "L-256"

  6. #5

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    . По номеру байта в пакете складывать их в соответствующие переменные (не массив), например, A8_KEY_LINE - A15_KEY_LINE. Тут скорость особая не нужна.
    Тут дело не только в скорости .
    Со стороны keypad'а ничего не упаковывать . Keypad полученные данные с клавиатуры , джойстика и т.д -
    передает по UART пакетом , где например первые ( и не обязательно) 5 (или сколько там строк у клавы) уже вычисленные состояния нажатых клавиш. Последующие байты состояние мыши/джойстика.
    Со стороны модуля в спекки - DMA укладывает принятый пакет от UART побайтно в массив KEY_BUFFER [] ...

    ---------- Post added at 21:00 ---------- Previous post was at 20:55 ----------

    Цитата Сообщение от zst Посмотреть сообщение
    Лучше прерывания по сигналу IN_FE (IN_K&K). В этот момент Z80 читает состояние клавиатуры. И байт адреса нужно обрабатывать целиком.
    Еще проще, но тогда не универсально - сей сигнал есть у всех спекки ?

    Цитата Сообщение от zst
    Для максимальной скорости лучше эту единственную команду в подпрограмме прерывания написать на ассемблере.
    Чувствуется , что Вас кто то направляет. Асм то накуа ?????????

    Цитата Сообщение от zst
    Возможно лучше использовать не массив, а адреса в ОЗУ.
    А вот это вообще не понимаю . Массив и так будет в RAM...
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  7. #6

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

    По умолчанию

    Цитата Сообщение от dosikus Посмотреть сообщение
    Тут дело не только в скорости .
    Со стороны keypad'а ничего не упаковывать . Keypad полученные данные с клавиатуры , джойстика и т.д -
    передает по UART пакетом , где например первые ( и не обязательно) 5 (или сколько там строк у клавы) уже вычисленные состояния нажатых клавиш. Последующие байты состояние мыши/джойстика.
    Со стороны модуля в спекки - DMA укладывает принятый пакет от UART побайтно в массив KEY_BUFFER [] ...
    Для получения кода клавиатуры надо передавать 8 байтов (40 бит состояния). По одному биту на кнопку. Это и есть без упаковки. 256 байтов расчитывать и передавать долго. У нас скорость примерно 19200. Рассчитывать будем, когда примем весь пакет без ошибок.
    А вот это вообще не понимаю . Массив и так будет в RAM...
    Кто его знает, как компилятор начнет рассчитывать адрес байта по индексу. Еще раз повторяю - это очень важно сделать максимально быстро. Или делать схему придется на регистрах. Иначе будет глюкодром.

    Если байты UART-а складывать по ДМА, потом его обрабатывать - это усложнит обработку. Из 8 байтов состояния клавиатуры мы должны для каждого нового пакета рассчитывать 256 вариантов данных клавиатуры.
    Последний раз редактировалось zx-kit; 21.01.2014 в 21:17.
    "L-256"

  8. #7

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Нет, на клавиатуру надо передавать 8 байтов (40 бит состояния). По одному биту на кнопку. Это и есть без упаковки. 256 байтов расчитывать и передавать долго. У нас скорость примерно 19200.
    Я Вас не понимаю , то Вы экономите а здесь начинаете транжирить .
    Я предлагаю передавать уже вычисленную строку состояние механической ZX клавы , а не порядковый номер кнопки. В keypad контроллер зачем жалеете? И в модуле спекки уже вычислять ничего не будем - будем тупо раскидывать принятые данные по портам ...


    Цитата Сообщение от zst Посмотреть сообщение
    Кто его знает, как компилятор начнет рассчитывать адрес байта по индексу. Еще раз повторяю - это очень важно сделать максимально быстро. Или делать схему придется на регистрах. Иначе будет глюкодром.
    Мда , а как же у меня все это работает , вот я дурак то .
    Уважаемый, прекратите свои AVR надумки, очень Вас прошу ...
    Последний раз редактировалось dosikus; 21.01.2014 в 21:24.
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  9. #8

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

    По умолчанию

    Цитата Сообщение от dosikus Посмотреть сообщение
    Я Вас не понимаю , то Вы экономите а здесь начинаете транжирить .
    Я предлагаю передавать уже вычисленную строку состояние механической ZX клавы , а не порядковый номер кнопки. В keypad контроллер зачем жалеете?
    Извните, пока не получается объяснить принцип работы клавиатуры и как должна для этого работать компьютерная часть устройства. Попробую еще раз.
    40 кнопок разбиты на группы по 5 штук. Каждой пятерке соответствует один бит адреса Z80 от A8 до A15. При чтении состояния 5 кнопок Z80 выставляет соответствующий бит адреса в 0, остальные в 1. На шину данный (биты D4-D0) при этом подается состояние этих 5 кнопок.

    Поэтому на стороне кейпада мы готовим 8 байтов состояния клавиатуры по 5 значимых битов. 0 в соответствующем бите - значит кнопка нажата. 1 - не нажата. Эти 8 байтов с 40 значимыми битами мы и передаем на компьютерную часть. Но дело осложняется тем, что большинство программ устанавливает на адресах A8-A15 не по одному биту, а как вздумается в любой комбинации. Поэтому мы должны, для работы этих программ сделать все 256 вариантов. При этом если два бита адреса в 0, то в результат получается из двух байтов из 8, например, A8_KEY_LINE & A12_KEY_LINE.
    Последний раз редактировалось zx-kit; 21.01.2014 в 21:30.
    "L-256"

  10. #9

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Но дело осложняется тем, что большинство программ устанавливает на адресах A8-A15 не по одному биту, а как вздумается в любой комбинации. Поэтому мы должны, для работы этих программ сделать все 256 вариантов. При этом если два бита адреса в 0, то в результат получается из двух байтов из 8, например, A8_KEY_LINE & A12_KEY_LINE.
    Ничем оно не усложняется совершенно и не надо городить 256 комбинаций.
    Если могут быть активными несколько адресов -то
    придется делать так :
    выбирать данные из массива по этим нескольким адресам-индексам ,объединять их по OR и выводить полученное .

    ---------- Post added at 21:38 ---------- Previous post was at 21:36 ----------

    Цитата Сообщение от AHTuXPuCT Посмотреть сообщение
    можно и от сименсов экранов найти. А60/С60 например.
    по оптовой цене экран 1202/1280 даже меньше 40р
    Лучше тогда SPI TFT 1.8' с китайских площадок .
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

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

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

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

Похожие темы

  1. Super GamePAD
    от zx-kit в разделе Устройства ввода
    Ответов: 1
    Последнее: 02.01.2014, 10:39
  2. Unreal+PC Gamepad
    от breeze в разделе Эмуляторы
    Ответов: 5
    Последнее: 20.10.2007, 23:09

Ваши права

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