Вместо предисловия
Многие профессионалы-разработчики электроники часто "воротят нос" от семейства микроконтроллеров производства Atmel - фи, мол, эта ваша Атмега — только лампочками поморгать. Однако, это спорное утверждение.
Дешевизна, легкость программирования (как физической "заливки" прошивки, так и создания самих программ) превращают микроконтроллеры семейства AVR в универсальный инструмент, доступный начинающему радиолюбителю, а богатейшая линейка устройств — от самых простых ATTiny до устройств Mega256 с огромным количеством периферии "на борту" позволят реализовать самый смелый и амбициозный проект.
В этот раз мы рассмотрим конкретные примеры реализации одноплатных (и не очень) конструкторов на базе микроконтроллеров семейства ATMega. Все они вполне реализуемы в домашних условиях, а некоторые можно приобрести на сайте авторов. Для начала - небольшое отступление про "одноплатники" вообще.
Название говорит само за себя - все компоненты компьютера, необходимые для его базового функционирования размещены на одной плате. Совсем юные читатели сразу подумают о новинках вроде Raspberry Pi, а те, кто уже имеют понятие о мироустройстве — вспомнят РК-86, ZX-Spectrum и БК-0010, например.
Именно так — те самые "компьютеры в клавиатуре" были одноплатными. Да, допускались различные расширения, но кто о них помнит сейчас, тем более приобрести их в магазине было довольно проблематично. Да и нужды не было по большому счету.
И вот 21 век сдвинул "окно ностальгии" в нужную позицию и радиолюбители по всему миру не сговариваясь выпустили несколько проектов, которые по характеристиками ну очень напоминают те самые "эр-кашки" и "спектрумы" конца восьмидесятых годов прошлого века. А некоторые — в точности повторяют, но обо всём по порядку.
AVR Chip Basic
Первый персонаж нашего обзора - компьютер AVR Chip Basic, точнее это целое семейство компьютеров, различающееся по степени "навороченности" и наличию той или иной периферии.
Из под пера автора ( Jörg Wolfram ) вышла целая плеяда устройств:
- AVR-ChipBasic8 на базе ATMega8 или ATMega88 (та же микросхема используется в ARCAdaptor)
- AVR-ChipBasic на базе ATMega16
- AVR-ChipBasic32 на базе ATMega32
- AVR-ChipBasic2 на базе ATMega644
Все они имеют (как минимум) ТВ-выход и общаются с пользователем с помощью языка BASIC. В качестве устройства ввода используется стандартная PS/2 клавиатура.
Как уже говорилось, каждое из устройств обладает разными характеристиками, так например, AVR-ChipBasic8 имеет чёрно-белый видеовыход, может хранить программы на языке BASIC на подключаемой микросхеме EEPROM, ибо память самой микросхемы оставляет лишь 512 байт для хранения исходного текста.
Тем не менее - имеется и звуковой выход, и даже "свободные ножки", на которые можно повесить дополнительное оборудование.
Диалект бейсика очень сильно урезан, но позволяет вдоволь наиграться с этим языком программирования.
Из "фишек" интересное - прошивку можно собрать самостоятельно как под PAL развертку, так и под NTSC.
Остальные аппараты уже в состоянии выводить цветной видеосигнал через разъем SCART, и даже подключаться к совместимой TFT-матрице. Также к услугам пользователя возможность работы с периферией, последовательный интерфейс RS-232 с возможностью общения с "большим братом" и даже "картриджи памяти"! - съемные блоки памяти с записанными на них программами.
Более того, версии на ATMega16,32 и 644 используют одну и ту же плату, то есть достаточно поставить микросхему в панельку и загрузить нужную прошивку.
Остальные подробности можно почерпнуть на странице автора. К сожалению страничка на немецком языке, но онлайновые переводчики значительно облегчат жизнь.
Кстати, среди его проектов есть и эмулятор компьютера ZX-81 на микроконтроллерах AVR.
FIGnition
Движемся дальше - следующий экспонат - одноплатный компьютер Fignition.
Автор Julian Skidmore создал "одноплатник", работающий под управлением ФОРТ-машины. Устройство способно управляться с экраном размером 25x24 символов, 16 пользовательскими символами, ну или графикой размером 160x160 точек.
Стоит отметить, что устройство может работать как с PAL-телевизорами, так и с NTSC - зависит от загруженной прошивки микроконтроллера ATMega168.
Особый интерес вызывает способ ввода данных. Обычно с AVR-устройствами часто интегрируют поддержку PS/2 клавиатуры, коих в избытке (пока что). Автор подготовился к вселенской катастрофе и организовал ввод с помощью восьми кнопок... Перебор значений на них организован по образу и подобию набора SMS в кнопочных мобильных телефонах.
Безусловно, такое устройство будет интересно в первую очередь поклонникам языка FORTH.
Сам автор предлагает приобрести комплект для сборки, хотя схема открыта, и в принципе желающие могут собрать подобное устройство самостоятельно.
Если до этого шла речь о самобытных устройствах, то следующая часть статьи будет почти полностью посвящена эмуляторам и репликам существующих (за некоторым очень интересным исключением).
PMD-85
Первый в списке - компьютер PMD-85. Это довольно интересное устройство, которое выпускалось с 1985 по 1989 в социалистической Чехословакии. По характеристикам он очень похож на семейство "РК-86", выпускавшийся в СССР в середине и конце восьмидесятых годов прошлого века - процессор i8080 и небольшой объем памяти.
Подробнее можно почитать в Википедии , ну а пока что рассмотрим аппаратную реализацию на ATMega.
Даже по этой иллюстрации видно - на плате всего лишь 2 микросхемы - непосредственно контроллер ATMega128 и микросхема памяти.
Ввод осуществляется с клавиатуры PS/2, вывод - через черно-белый ТВ. Для того, чтобы запустить ту или иную игру - необходимо скомпилировать соответствующую прошивку, которая содержит тот или иной набор программ. Вот несколько скриншотов от "родных" игр.
А вот видео работы, правда записано с настоящего PMD:
Подробности можно почерпнуть по этой ссылке , сайт же поклонников PMD-85 из бывшего соцлагеря тут.
Проект был бы весьма интересен отечественным фанатам РК-86, тем более что уже есть реализация на микроконтроллере PIC в проекте Maximite.
AVR-CP/M
Дальше - больше. Если возможна эмуляция i8080, то почему бы не попытаться запустить на АТМеге операционную систему CP/M ?
Это стоит сделать хотя бы ради великого и ужасного ZORK! И ведь запускают.
В качестве устройства отображения используется serial port.
Для него в плату установлен конвертер Serial->USB, но вполне можно обойтись и без него, точнее - обойтись внешним конвертером.
Сама схема представляет собой контроллер ATMega328 и несколько чипов памяти (из старых видеокарт или материнских плат).
Диск эмулируется через набор образов, размещенных на SD-карте. Схемы, прошивки и прочее можно найти здесь. Сайт на немецком языке, но онлайновые переводчики сделают свое дело.
UzeBox
Постепенно переходим к жемчужинам этого собрания. Первая в списке - самодельная, полностью открытая приставка UzeBOX.
Мало того, что приставка полностью "повторяема" в домашних условиях — её программное обеспечение имеет вполне достойный уровень, и более того — игры для неё разрабатываются энтузиастами прямо-таки в промышленных количествах.
Что "под капотом":
- Низкая стоимость. Всего 2 чипа (микроконтроллер и кодер NTSC), более того - второй не обязателен, если есть телевизор с полноценным разъемом SCART.
- Ядро управляется прерываниями. Нет "тормозов", никто не отсчитывает такты процессора, генерация аудио и видео происходит в фоне.
- 256 цветов 4 звуковых канала - 3 wavetable +1 шумовой
- MIDI-интерфейс
- Стандартные джойстики от SNES (на 15 долларов на Aliexpress можно приобрести несколько штук).
- Есть возможность использовать NES (Dendy), но потребуется перекомпиляция игр, хотя это вообще не проблема
- Поддержка манипулятора "мышь" от SNES
- Поддержка SD-карточек UART и SPI интерфейсы доступны, также есть некоторое количество свободных "ножек" ATMega
- Есть эмулятор для разработки игр Загрузчик игр/программ с SD Развитое API для разработки Полностью открытая схемотехника и код
Приставка оказалась настолько удачной, что комплектами для сборки подторговывал магазин Adafruit Industries — признанный лидер в DIY движении.
Сама приставка базируется на микросхеме ATMega644 в DIP-исполнении (об этом чуть подробнее ниже). Этого контроллера вполне хватает для вышеописанных задач, а на выходе можно наблюдать игры примерно такого качества:
Без сомнения - классика не стареет.
Неплохо для микроконтроллера, правда ?
Автор разработки - канадец Alec (Uze) Bourque. Проекту не один год, но сообщество, сложившееся вокруг консоли всё еще полно идей и энтузиазма для дальнейшего движения вперед.
По этой ссылке можно ознакомиться с минимальной версией UzeBox - полностью модульной системой, которая состоит из базовой платы с микроконтроллером и SCART-выходом, а также дополнений - платы энкодера NTSC, платы адаптера SD-карты и платы MIDI-переходника.
Последний, кстати, никогда не был воплощен "в металле" за отсутствием MIDI-оборудования :) Выглядит "домашняя версия" в сборе примерно так:
Так что с уверенностью заявляем - "дизайн" проверен и работает.
Конечно же, нужно упомянуть о недостатках.
- Для обеспечения нужной скорости ATMega работает в режиме "overclock" - аж на 28.6 Mhz
- Для сборки подходят только DIP-версии микросхемы
- При использовании SMD-версий перестает работать UART, перебои с SD-картой и вообще большой риск "не завестись". Причина тому - указанный выше "разгон"
- Чип AD725 (энкодер NTSC) в наших краях редкость и довольно дорого обходится (хотя он по большому счету и не нужен в начальной конфигурации)
- SNES-джойстики не так распространены и уж тем более "ответные" разъемы для них
- Нормально работают далеко не все SD-карты (точнее, большинство не работает, хотя подобрать в конце концов можно)
Достоинства консоли, кстати, с лихвой перевешивают описанные недостатки, так что её действительно можно рекомендовать к сборке даже новичкам.
Официальный сайт консоли со всей информацией, исчерпывающей документацией и весьма позитивным форумом здесь.
AVR ZX Spectrum 2.0
Ну и в финале — действительно потрясающий проект нашего соотечественника - Василия Лисицына - полностью функциональный "клон" компьютера ZX-Spectrum!
Спецификации впечатляют:
- Разрешение экрана: 256 х 192 точки
- Матрица знакомест экрана: 32 х 24
- Количество цветов на знакоместо: 2
- Число цветов экранной области: 8
- Число цветов бордюра: 8
- Число градаций яркости для каждого цвета: 2
- Эквивалентная частота ЦП: 2,333 МГц
- Порты ввода/вывода: 0xFE, 0x7FFD, 0x7FFD, 0xBFFD
- Клавиатурный интерфейс: PS/2
- Число задействованных клавиш: 82
- Число каналов звукового сопровождения: 4
- Перечень каналов звукового сопровождения: левый AY8910, правый AY8910, средний AY8910, бипер
- Видеовыходы: ЧБ выход, RGB выход, отдельный выход синхронизации
- Поддержка загрузки/выгрузки «на ленту»: имеется
- Дополнительные устройства ввода/вывода: micro-SD карта
- Поддерживаемые модели ZX Spectrum: Pentagon 128 K, ZX Spectrum 128 K, ZX Spectrum 48 K, ZX Spectrum +2, ZX Spectrum +3, ZX Spectrum 48 K ` 2006, OPEN SE BASIC 128 K, OPEN SE BASIC 48 K
- Дополнительная операционная система: SD DOS
- Файловая система: FAT32
- Разъём шины ввода/вывода: имеется
- Конструкция: двухсторонняя печатная плата 140 х 22 мм, установка внутри клавиатуры или в отдельный корпус
- Питание устройства: соединитель mini-USB «F», напряжение +5 В
На фото - плата AVR ZX-Spectrum 2.0 с установленным эмулятором AY8910(12), кстати тоже на ATMega.
Плата в базовой конфигурации имеет на борту 3 микроконтроллера и микросхему динамической памяти аж на 512 кб:
- Центральный процессор (ATMega128)
- Видеопроцессор (опять ATMega128)
- Контроллер клавиатуры (ATTiny2313)
Это позволяет "в теории" реализовать компьютер с таким объемом памяти. Помимо этого на плате есть некоторое количество микросхем мелкой логики.
Уже сейчас помимо "спектрума" плата может функционировать, как Robotron 1715. То есть на этой базе можно реализовывать и другие компьютеры!
Что может быть лучше ретро-платы все в одном! Впрочем, о тайнах и возможностях может поведать сам автор:
К сожалению, на данный момент у автора нет веб-сайта, но есть надежда, что он появится. А пока что со схемой и описанием можно ознакомиться, например, вот здесь.
Заключение
Микроконтроллеры - отличная возможность прикоснуться с миру разработки микроэлектроники. Для "олдскульщиков" - возможность "нырнуть" в то время, когда они были молодыми, а компьютеры простыми. Для поколения Arduino - шаг вперед в образовании. И пусть фанаты навороченных FPGA и ARMов утверждают о том, что время ATMega прошло - мы-то знаем на что она способна.
Удачных самоделок!