[Перевод] 492-байтная демка на ATtiny5

qj3ffmnzhf4emk1bmyqyy-qrxsq.jpeg

Демки обычно отличаются более сложной графикой, чем игры того же объёма. Ведь не приходится тратить ресурсы на взаимодействие с пользователем и дополнительные расчёты. Предлагаемая программа работает на микроконтроллере ATtiny5 с 512 байтами ПЗУ, 32 байтами ОЗУ и 16 регистрами процессора. Rakettitiede — это по-фински «ракетная наука» (в т.ч. в том же значении, что и в английском фразеологизме), а также название компании, разрабатывающей ПО.

Схема платы для работы демки:

eumztz25hztxojw1h4x28vmlbzy.png

Здесь знакомо всё, кроме компонента LTC1799. Это тактовый генератор, конфигурируемый резистором. Он работает на частоте в 12 МГц. Подойдёт и другой достаточно стабильный генератор прямоугольных импульсов на ту же частоту. Чтобы получить необходимые VGA-монитору пять сигналов с трёх выходов микроконтроллера, применены делители на светодиодах и резисторах, в которых задействованы также 75-омные резисторы, встроенные в монитор. Каждый из выходов может быть переключён программой в нуль, единицу и высокоимпедансное состояние.

Поскольку приём заявок на конкурсе Hackaday заканчивался, автор отправил туда промежуточную версию демки, которая делала всё то же самое, кроме вывода текста:

Она занимала 394 байта, или 197 16-битных слов:

avra  -l pentaveega.lst pentaveega.asm
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info

   AVRA is an open source assembler for Atmel AVR microcontroller family
   It can be used as a replacement of 'AVRASM32.EXE' the original assembler
   shipped with AVR Studio. We do not guarantee full compatibility for avra.

   AVRA comes with NO WARRANTY, to the extent permitted by law.
   You may redistribute copies of avra under the terms
   of the GNU General Public License.
   For more information about these matters, see the files named COPYING.

Pass 1...
Pass 2...
done


Assembly complete with no errors.
Segment usage:
   Code      :       197 words (394 bytes)
   Data      :         0 bytes
   EEPROM    :         0 bytes

После оптимизации демку удалось уменьшить до 354, а затем и 352 байт. Но затем автор решил добавить в картинку текст, после чего программа и стала занимать 492 байта:

Код лежит на Bitbucket здесь, а также на Hackaday в виде отдельных файлов: pentaveega.asm, tn5def.inc и pentaveega.hex.

Собрать устройство можно в трёх вариантах: на макетках двух видов с применением переходных плат, а также на печатной плате (под CC-BY-SA 4.0, файлы в отдельной папке проекта на Bitbucket). Обратите внимание на способ подключения разъёма монитора при сборке по первому варианту:

rfemmpaesxdg6hm8irnilejubt0.jpeg

ow3twfw8urjz8vl30lvqkyxnvfg.jpeg

xcwjzbiukofeyllxj6ljj2h_lx0.jpeg

© Habrahabr.ru