8-разрядные микроконтроллеры и арканоид

от автора

Python или Ruby? Android или iPhone? Playstation или Xbox?
Сложно выразить словами мою ненависть к такого рода спорам. Однако в этом посте я предлагаю познакомиться с новыми 8-разрядными микроконтроллерами от Silicon Labs. Они, как несложно догадаться, предлагаются как альтернатива 32-разрядным кристаллам. А значит Let the Fight Begin!

В 2015 году Silicon Labs выпустила новое семейство микроконтроллеров на оптимизированной версии ядра 8051 — EFM8. Доступно три серии контроллеров: EFM8SB с пониженным энергопотреблением, EFM8UB с USB-интерфейсом и самые аскетичные EFM8BB. Для каждой серии предлагается отладочная плата, на которой предустановлено демонстрационное приложение — игра арканоид (Space Invaders). Изящное исполнение игры на простом кристалле напоминает разработчику, что счастье не в разрядности.

На отладочной плате SLSTK2021A расположены микроконтроллер EFM8BB22F16G, встроенный отладчик, ЖКИ 128 x 128 пикселей, джойстик, две механические кнопки, светодиод, разъем для установки батарейки, miniUSB, кнопка аппаратного сброса, переключатель источников питания и 20-выводный разъем для подключения плат-расширений.

EFM8BB22F16G представляет собой ядро 8051 с тактовой частотой 50 МГц, 16 КБ Flash-памяти, 2 КБ ОЗУ, интерфейсы I2C, SPI, 2 x UART, два компаратора, 12-разрядный АЦП и 5 таймеров. Всё это в корпусе QFN28 (5×5 мм).

Проект Space Invaders написан на Си. Производительности контроллера хватает на выполнение всех необходимых вычислений в реальном времени перед отрисовкой каждой линии (а на работу с буфером ЖКИ не хватает памяти :D). Вычисления выполняются в рамках решения следующих задач:

  • расчет передвижений и состояний захватчиков;
  • расчет траекторий и состояний снарядов, выпускаемых захватчиками;
  • расчет положения игрока;
  • обнаружение попадания снарядов в игрока и столкновений игрока со снарядами;
  • преобразование результатов вычислений и передача соответствующих команд на ЖКИ (используется интерфейс SPI);
  • генерация ШИМ-сигнала для управления трехцветным светодиодом (он служит индикатором уровня опасности, т.е. близости захватчиков к позиции игрока);
  • определение положения джойстика через АЦП;
  • определение нажатия на механическую кнопку (нажатие кнопки — выстрел по захватчикам) с использованием прерываний по линии ввода/вывода.

Игра запускалась мной лично, работает всё действительно плавно, без лишних задержек.

Отладочный набор SLSTK2021A стоит в РФ порядка 40-50 долларов, а всё программное обеспечение распространяется SiLabs-ом бесплатно. Среда разработки, документация, демо-примеры, утилиты для конфигурирования периферии и измерения энергопотребления «упакованы» в программную платформу Simplicity Studio (дистрибутив (Windows, MAC, Ubuntu) доступен на silabs.com).

Ссылки:

  1. первоисточник этой заметки: community.silabs.com/t5/Projects/EFM8-Space-Invaders-Demo-Not-Your-Standard-8-bit-MCU/m-p/140611#U140611
  2. обзор отладочной платы для EFM8 от прекрасного EEVblog (смотреть с 23-ей минуты): www.youtube.com/watch?v=UYGl0vebWN8

ссылка на оригинал статьи http://habrahabr.ru/post/257849/