User Tag List

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

Тема: ZX Remote GamePad

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

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

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

    По умолчанию

    Цитата Сообщение от dosikus Посмотреть сообщение
    Гы ... На F4 без оптимизации , тупой вывод из массива в соответствии с захваченными адресами - 330nS . 168МГц тактовая от HSE.
    Отлично ! 150 ns от начала импульса прерывания до результата команды EXTI_STB_ON;

    Теперь давайте займемся оптимизацией:

    1. Импульс прерывания нужно сделать другой полярности. То есть при чтении из порта клавиатуры IN_FE (IN_K&K) сигнал равен 0, а не 1.

    2. Немного сократим функцию прерывания:
    Код:
    ...
              EXTI_STB_ON;
              
              GPIOB->ODR = key_buff2 [(GPIOB->IDR)&0x00ff];
    
              EXTI_STB_OFF;
    ...
    3. Массив key_buff2 заполним заранее, сразу после получения пакета по UART:
    Код:
    ...
    for (key_address = 0; key_address <= 255; key_address++) // цикл адреса с клавиатуры от 0 до 255 для заполнения массива данных с клавиатуры
        {
          key_data = 255;           // начальный результат - все единицы - кнопки не нажаты
          tmp_byte = key_address;   // копируем для разбора по битам
          for (b = 7; b >= 0; b--)  // цикл по битам адреса с клавиатуры
             {
                tmp_byte &= 0x00ff; // обнуляем все биты, кроме 8 младших
                if (tmp_byte < 128) // если старший бит в байте 0, то
                  {
                    key_data &= key_buff[b];   // добавляем к результату состояние соответствующего ряда клавиатуры из пакета
                  }
                tmp_byte = tmp_byte << 1;      // сдвигаем байт адреса влево
              }          
          key_buff2[key_address] =  key_data;  // рассчитанный байт клавиатуры для данного адреса клавиатуры записываем в массив
        }
    Последний раз редактировалось zx-kit; 24.01.2014 в 20:38.
    "L-256"

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

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

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

Ваши права

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