Хабрахабр

[Перевод] Breakuot-подобная игра на PIC12F1572

Предлагаемая конструкция является доказательством того, что цветной композитный видеосигнал в системе NTSC может быть сгенерирован при помощи очень простого «железа».

Хотя цветной композитный видеосигнал в системе NTSC генерировать сложнее, чем VGA, для этого требуется меньше выводов микроконтроллера (в данном случае — три, объединённые простейшим «микшером»). Композитным он называется потому что вся информация передаётся по одной линии. Строчные и кадровые синхроимпульсы, сигналы цветности и яркости объединены вместе, в отличие от VGA, где для каждого из этих сигналов выделено по отдельному проводу. Чтобы подать такой сигнал на телевизор, достаточно одного экранированного кабеля с «тюльпанами» с обеих сторон.

В устройстве всего два активных компонента: кварцевый генератор на 28,636 МГц (3,5795345 МГц x 8) и микроконтроллер PIC12F1572 в корпусе PDIP.

Автор решил реализовать аналог классической игры Breakout 1976 года, но на её месте могла оказаться любая аркадная игра, в оригинале реализованная на логических микросхемах, поскольку у таких игр достаточно просты сюжеты.

Если вы думаете, что не сможете подключить устройство к слишком современному телевизору без жёлтого «тюльпана» — к счастью, вы ошибаетесь. Ищите зелёный «тюльпан» среди предназначенных для сигналов YPbPr — туда же можно подавать и композит. Проверено на двух телевизорах, один из которых фирмы RCA, другой — Toshiba.

Смотрите схему: Насколько простым может быть устройство, генерирующее композитный видеосигнал стандарта NTSC?

Она в восемь раз больше требуемой. Внешней генератор нужен для получения стабильной частоты поднесущей NTSC. Устройство позволяет получать шесть цветов за счёт разных сочетаний четырёх видов сигналов (логическая единица, высокоимпедансное состояние, поднесущая без сдвига фазы, она же со сдвигом фазы на 180°) на двух выводах (первый — выход сигнала цветности, второй — вывод сигнала яркости): Микроконтроллер делит её на четыре, а значит, работает на частоте, вдвое превышающей частоту поднесущей.

Чёрный — высокоимпедансное состояние и там и там
Белый — высокоимпедансное состояние и логическая единица
Жёлтый — поднесущая со сдвигом на 180° и логическая единица
Пурпурный — поднесущая без сдвига и логическая единица
Синий — поднесущая без сдвига и высокоимпедансное состояние
Тёмно-зелёный — поднесущая со сдвигом на 180° и высокоимпедансное состояние

Камера автора плохо передаёт цвета, поэтому пурпурный на фото выглядит почти как белый: Тёмно-зелёный цвет на многих телевизорах получается неотличимым от чёрного, в связи с чем не используется.

Файлы лежат здесь под GPL v3.

Видео снято той же камерой, и пурпурный снова сливается с белым: Код написан на ассемблере, из двух килослов ПЗУ (в микроконтроллерах PIC ПЗУ хранит не байты, а слова шириной, отличающейся от 8 бит) задействовано 54%, а из 256 байт ОЗУ — 63%.

Краткая история игры Breakout приведена в Википедии.

Он сильно шуршит, что мешает играть, поэтому лучше применить переменный резистор и ручку к нему обычных размеров. Сверхминиатюрный джойстик автор изготовил, приклеив силовую канцелярскую кнопку к подстроечному резистору.

Вероятно, для этого он программно переключается в нужные моменты из режима входа в режим выхода и обратно. От переводчика: в этой схеме один и тот же вывод микроконтроллера используется и для вывода аудио, и для получения аналогового сигнала от джойстика. Чтобы постоянная составляющая не попала в телевизор, рекомендуется перед «тюльпаном» поставить конденсатор.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»