User Tag List

Страница 15 из 26 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя
Показано с 141 по 150 из 258

Тема: ZX Remote GamePad

  1. #141

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

    По умолчанию

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

    Программа прерывания будет примерно такой:

    void ISR_IN_FE (void)
    {
    PORT_KEY_DATA = KEY_BUFFER [PORT_KEY_ADDR];
    }

    Как ARM данные по 8 и 5 битов обрабатывают ?
    Какую среду разработки качать: IAR или KEIL ?
    Последний раз редактировалось zx-kit; 21.01.2014 в 20:59.
    "L-256"

  2. #142

    Регистрация
    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

  3. #143

    Регистрация
    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. #144

    Регистрация
    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. #145

    Регистрация
    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. #146

    Регистрация
    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. #147

    Регистрация
    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. #148

    Регистрация
    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. #149
    ZEK
    Гость

    По умолчанию

    dosikus,
    оно если без таблични должно быть так

    Код:
    byte addr; // тут старший байт шины адреса
    byte[8] rows; // тут значение нажатых кнопок для каждой строки
    
    byte scan = 0x01;
    byte res = 0xFF;
    int cnt = 0;
    
    while (cnt++<8)
    {
      if (addr & scan) == 0)
         res &= rows[cnt];
    
      scan <<=1;
    }

  10. #150

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

    По умолчанию

    Цитата Сообщение от ZEK Посмотреть сообщение
    dosikus,
    оно если без таблични должно быть так

    Код:
    byte addr; // тут старший байт шины адреса
    byte[8] rows; // тут значение нажатых кнопок для каждой строки
    
    byte scan = 0x01;
    byte res = 0xFF;
    int cnt = 0;
    
    while (cnt++<8)
    {
      if (addr & scan) == 0)
         res &= rows[cnt];
    
      scan <<=1;
    }
    Угу , все варианты рассмотрим .
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

Страница 15 из 26 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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