А на мелком STM (ног 40) - это возможно? Контроллер USB клавиатуры интересует и мыши.
Да
Нет
Не знаю
А на мелком STM (ног 40) - это возможно? Контроллер USB клавиатуры интересует и мыши.
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
С USB-Host (USB-OTG, если точнее) только от 64 ног идут. В более мелких корпусах - только USB-Device.
А так, можно посчитать "свободные" ноги:
1) USB - 4 вывода на полный OTGж
2) SDIO (если подключать SD/microSD-карты) - 7 ног;
3) программатор - 2 ноги;
4) выбор режима - 10 ног (с запасом, 4 бита на выбор выхода, 7 на выбор типа матрицы преобразований);
5) матрица - 24 ноги;
6) PS/2 - 2 ноги.
Уже получается 49 ног - еле укладывается в свободные GPIO 64-выводного корпуса (50-51, зависит от чипа). А если делать ещё и дополнительные функции, то уже нужен 100-ногий корпус.
- - - Добавлено - - -
Если делать в режиме эмуляции ВВ55, то выводов значительно меньше будет использовано, но это уже узкозаточенный девайс будет. Я же стремлюсь к более унифицированному варианту - по цене на чип разница будет мизерной. А паять могу и сам, отправляя готовые наборы.
Вопрос только в "хотелках" - теоретически тут можно сделать и эмулятор магнитофона и ещё что-либо, сразу в 1 корпусе.
"Байт-48"
Матрицу можно и под уменьшить, ДШ с ОК рулит
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Да понятно прогресс, епть
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Готово преобразование сканкодов в матрицу, готовую для дальнейшего использования. Код на данный момент не самый оптимальный, но почти всё время и так отжирает отрисовка экрана, так что замерить что-либо очень тяжело.
Фото экрана с отображением состояния матрицы - видно прочитанные сканкоды и закрашенные прямоугольники для них. Таблица для получения матрицы пока что "с потолка", завтра думаю вбить для тестов таблицы RK86 и MC7007.
Репа обновлена до актуального состояния.
"Байт-48"
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Что же ты там такое замутил, что на перекодирование массива в пару сотен байт не хвататает ресурсов 32-битного микропроцессора в почти две сотни мегагерц с количеством памяти больше чем не то что в спеке, а даже и в орионе? В этом 500-рублевом чипе (кстати, дороже чем PiZero за 5$ на котором целый EmulationStation пашет) можно сделать целую собственную VGA-видеокарту, цветную сделано же аналогичное в 5-рублевом STM32F030F4 - все же в ней 3 SPI-регистра (в этом и фишка - выводить SPI-регистром по 8 точек экономя ресурс ЦПУ), а не 1 как по ссылке (поэтому по ссылке монохром). Так там по ссылке еще и полный терминал VT100/52 (на графику не хватает ОЗУ, там все же 4кб, а не 192 кб как у STM32F407).
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Пока что отрисовка идёт в попиксельном режиме - завтра буду гуглить протокол контроллера дисплея, может есть копирование всей памяти сразу.
- - - Добавлено - - -
Тут проблема в том, что надо следить за USB-устройством, а так же вовремя реагировать на внешние раздражители - в нашем случае это вовремя успеть выдать данные по запрошенному адресу в матрице. А для этого надо:
1) опросить клавиатуру;
2) преобразовать HID-сканикоды в матрицу;
3) выдать запрошенную строку из матрицы.
Разумеется, все эти события происходят в разных процессах, которые периодически переключаются планировщиком.
- - - Добавлено - - -
По производительности - хочу сперва сделать полноценный вариант, а потом протестировать на скорость. Там и будут видны узкие места.
"Байт-48"
Вот это вот:
Весьма не много ресурсов съест, и делать это надо всего-то 5-10 раз в секунду, постоянно актуализируя массив эмуляции матрицы (например во время кадрового бланка когда есть время простоя)
А вот это ровно 3 команды на ассемблере: считать сканкод (в контроллере на Атмеге измение сканкода на порте вводе генерит прерывание), из готовой таблицы (той самой что постоянно актуализируется на шагах 1-2) используя скан код как индекс прочитать ответ, выдать этот ответ на порт.
Все остальное время обрабатывать дисплей.
Контроллер по моей ссылке тоже обрабатывает клавиатуру (там же не только видеокарта, но полный терминал), при этом на частоте в 25МГц ему хватает времени еще и на VGA с полной эмуляцией VT100/52. Исходники на git есть по ссылке в статье.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Ээээ... Мы про разные вещи говорим, видимо...
У меня одна из целей - одновременная реакция на 6 нажатых кнопок (максимум пакета данных). А это уже требует выставления битовых масок и прочего.
Да, согласен - это очень легко оптимизируется. Но я ещё только-только получил рабочую версию. Завтра займусь в том числе и потимизациями.
И да - как я говорил выше, сейчас почти всё время отжирает отрисовка экрана, про "прожорливость" других пунктов ничего не было сказано. Пока что отрисока одного экрана (полностью, попиксельно, на каждый пиксель по пачке команд - установка координат, цвет пикселя) занимает около 400мс... Код не мой, поставлялся вместе с библиотекой uc/GUI - подделие сумеречной китайско-индусской мысли.
"Байт-48"
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)