Самодельный компьютер на микроконтроллере. Передача данных из компьютера в микроконтроллер через монитор

Микроконтроллер фирмы Parallax под названием Propeller , в сравнении с «классикой» жанра типа PIC или AVR занимает несколько странную нишу. Про первые два можно сказать, что это архитектуры общего назначения. Создатели же Пропеллера подошли к вопросу «с фланга».

Основные отличительные особенности Пропеллера:

  • 8 независимых ядер, работающих параллельно. Какое-либо разделение времени, необходимое для общих ресурсов типа памяти или портов ввода-вывода не контролируется программистом и «вшито» в кристалл. Это дает предсказуемость во времени выполнения кода. Каждое ядро (cog) имеет 4КБ собственной изолированной оперативной памяти. Также каждое ядро имеет встроенный аппаратный модуль для генерации (внимание!) ТВ или VGA видео-сигнала.
  • Нет понятия прерываний. Вместо это предлагается запускать конкурирующие задачи разных ядрах (cog"ах).
  • Программировать можно либо на ассемблере, либо на особом высокоуровневом языке Spin, который сильно упрощает многоядерное и параллельное программирование. Интерпретатор Spin зашит в кристалл.
  • Почти нет понятия программации или прошивки кристалла. Верхняя половина адресного (ROM) пространства размером в 32КБ прошита интерпретатором Spin и разными системными таблицами. В этом случае при каждом включении требуется загрузка программы извне (например, из среды разработки) в нижнюю область 32КБ (RAM). Но обычно в реальном использовании подключается внешняя I2C микросхема памяти EEPROM, содержимое которой автоматически копируется в RAM при включении кристалла.
  • Процессор заявлен как 32-х битный, так как оперирует со данными этого размера, но адресное пространство 16-и битное (64КБ).
Язык Spin разработан для удобного многопроцессорного программирования, и выглядит как нечто среднее между процедурным и объектно-ориентированным языком.

Вот пример кода на Spin, запускающего функцию крутиться на нескольких ядрах. Код реально простой и понятный.

CON _clkmode = xtal1 + pll16x "Establish speed _xinfreq = 5_000_000 "80Mhz OBJ led: "E555_LEDEngine.spin" "Include LED methods object VAR byte Counter "Establish Counter Variable long stack "Establish working space PUB Main cognew(Twinkle(16,clkfreq/50), @stack) "start Twinkle cog 1 cognew(Twinkle(19,clkfreq/150), @stack) "start Twinkle cog 2 cognew(Twinkle(22,clkfreq/100), @stack) "start Twinkle cog 3 PUB Twinkle(PIN,RATE) "Method declaration repeat "Initiate a master loop repeat Counter from 0 to 100 "Repeat loop Counter led.LEDBrightness(Counter, PIN) "Adjust LED brightness waitcnt(RATE + cnt) "Wait a moment repeat Counter from 100 to 0 "Repeat loop Counter led.LEDBrightness(Counter,PIN) "Adjust LED brightness waitcnt(RATE + cnt) "Wait a moment
Функция cognew запускает задачу на трех ядрах, параметризируя каждую своей частотой и стеком.

Упрощенно Пропеллер устроен следующим образом:

Название «Пропеллер» произошло от его модели передачи приоритета на доступ к разделяемым ресурсам. Модуль Hub, контролирующий разделение времени, делает это по кругу, типа крутящегося пропеллера.

Я не хочу в этой статье углубляется в сам Пропеллер, ибо это большая тема. Для интересующихся в конце есть ссылки на книги, в которых можно получить исчерпывающую информацию об этом микроконтроллере.

Но хочу рассказать об одном интересном проекте, который называется "Pocket Mini Computer ". Это мини-компьютер на базе Пропеллера (P8X32A), использующий evaluation board «P8X32A QuickStart» как основу.

Выглядит это добро следующим образом (фотография с официального сайта):

Фактически, автор продает evaluation board плюс плату расширения, на которой есть VGA, microSD, PS/2, звук и Wii Gameport. Опционально можно поставить микросхему оперативки SRAM на 32КБ.

Фишка проекта в том, что автор разработал интерпретатор Бейсика, который превращает все это в микро-компьютер а-ля 80-е. Бейсик написан на Spin"e (исходники открыты). Диалект весьма ограничен, например, нет массивов, строковых и вещественных переменных, имена переменных только однобуквенные и т.д. Но тем не менее, дается доступ ко всей периферии, включая SD-карту, и также позволяет запускать чисто двоичные файлы, которые могут быть написаны хоть на том же Spin"e, хоть на С (Parallax имеет версию GCC для Пропеллера), хоть на ассемблере.

Почти все запаяно.

Бутерброд в сборе.

Вот небольшая демка, чтобы оценить графические возможности.

Общие впечатления

Пропеллер

Не получается назвать его процессором общего назначения. По моему субъективному мнению, для эффективного использования Пропеллера надо очень хорошо понимать свою прикладную задачу. Например, у Пропеллера нет ШИМ, ЦАП/АПЦ, встроенной флеш-памяти, триггеров, понятия прерываний, и создатели предлагают либо реализовывать необходимое программно, используя силу нескольких ядер, либо использовать специализированные внешние микросхемы. В книгах, приведенных в конце, описано множество примеров работы с дополнительными микросхемами.

Интересно другое. Создатели Пропеллера не забоялись отойти от традиционного подхода и попытались вложить в кристалл конкретные прикладные возможности, почти готовые задачи. Может для каких-то проектов это придется очень кстати. Как я понял, Пропеллер очень удобен для создания разного рода игровых автоматов и приставок, например, из-за встроенной возможности генерировать качественный телевизионный и VGA сигнал.

Вывод : интересная архитектура, определенно заслуживающая внимания.

Конструктор PMC

Опять-таки, двоякое ощущение. Вроде работает, но ресурсов Бейсику явно не хватает, особенно памяти. Например, тот же Maximite на базе PIC32 его на голову превосходит. На нем можно запустить хоть RetroBSD , хоть Радио-86РК . Да и встроенный MMBasic несравнимо мощнее.

Хотя, за 39 долларов США - это отличная игрушка для тех, кто хочет пощупать Пропеллер, имея уже собранное устройство.

На закуску

Книги по Пропеллеру, которые я прочитал, что касаемо архитектуры, и проглядел (что касаемо проектов). Все рекомендую.

Небольшая и очень понятная книга для начинающих. Описаны (с картинками) интересные проекты. Один из соавторов является конструктором PMC.

Getting Started With the Propeller

Крайне грамотная книга в плане архитектуры и понимания сути Пропеллера. В ней рассматривается только программирование на Spin, но с полным объяснением подходов и особенностей микроконтроллера. Прочитав первую главу, вы получите почти полное понимание архитектуры. Далее описаны несколько проектов (это можно пропустить).

В наши дни микроконтроллеры можно встретить практически в каждом экземпляре бытовой техники и электроники. Например, если в микроволновой печи есть светодиодный или ЖК-экран и клавиатура, то она обязательно оборудована специальной управляющей микросхемой.

Многообразие применений

Все современные автомобили содержат по крайней мере один микроконтроллер и могут быть оборудованными несколькими для двигателя, антиблокировочной системы, круиз-контроля и т. д. Любое устройство с ПДУ почти наверняка имеет управление микроконтроллером. В эту категорию попадают телевизоры, плееры и высококачественные стереосистемы. Цифровые компактные и зеркальные камеры, сотовые телефоны, видеокамеры, автоответчики, лазерные принтеры, стационарные телефоны с возможностью идентификации вызывающего абонента и памятью на 20 номеров, многофункциональные холодильники, посудомоечные и стиральные В принципе, любая бытовая техника или устройство, которое взаимодействует с пользователем, имеет встроенный микроконтроллер.

Что это такое?

Микроконтроллер - это компьютер. Все компьютеры, независимо от того, являются ли они персональными или большими мэйнфреймами, обладают некоторыми общими чертами. У них есть который выполняет программы, загружая команды из какого-либо хранилища данных. На ПК, например, это жесткий диск. Компьютер также оборудован оперативным запоминающим устройством (ОЗУ). Для коммуникации с внешним миром должны предусматриваться специальные средства. На ПК клавиатура и мышь являются устройствами ввода информации, а монитор и принтер используются для ее вывода. Жесткий диск объединяет в себе обе эти функциональные возможности, поскольку работает как с входными, так и выходными данными.

ЦПУ

Тип используемого в микроконтроллере процессора зависит от конкретного приложения. Доступны варианты от простых 4-, 8- или 16-разрядных до более сложных 32- или 64-битных. Что касается памяти, то могут использоваться ОЗУ, флэш-память, EPROM или EEPROM. Как правило, микроконтроллеры рассчитаны на использование без дополнительных вычислительных компонентов, поскольку они спроектированы с достаточным объемом встроенной памяти, а также имеют контакты для общих операций ввода-вывода, чтобы напрямую взаимодействовать с датчиками и другими компонентами.

Архитектура ЦПУ может быть как гарвардской, так и фон-неймановской, предлагая различные методы обмена информацией между процессором и памятью. В первом случае шины данных и команд разделены, что позволяет осуществлять одновременную их передачу. В для этого используется общая.

Программирование

Процессоры микроконтроллеров могут базироваться на расширенном (CISC) или сокращенном наборе команд (RISC). CISC обычно включает около 80 инструкций (RISC - около 30), а также большее число режимов адресации - 12-24 по сравнению с 3-5 у RISC. Хотя расширенный набор команд проще реализовать и он эффективнее использует память, его производительность ниже из-за большего количества тактовых циклов, необходимых для их выполнения. RISC-процессоры уделяют больше внимания программному обеспечению и более производительны.

Первоначально языком микроконтроллеров был ассемблер. Сегодня популярным вариантом является язык C.

При наличии соответствующего кабеля, программного обеспечения и ПК запрограммировать микроконтроллер своими руками несложно. Необходимо подключить контроллер кабелем к компьютера, запустить приложение и загрузить набор команд.

Определяющие характеристики

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

  • Микроконтроллеры являются элементами какого-либо другого устройства (часто бытовой техники) для управления его функциями или работой. Еще их называют встроенными контроллерами.
  • Устройство предназначено для выполнения одной задачи и запуска одной конкретной программы, хранящейся в ПЗУ, которая обычно не изменяется.

  • Микроконтроллеры - это маломощные чипы. Их мощность при питании от батареи составляет около 50 мВт. Настольный компьютер почти всегда подключен к розетке и потребляет 50 Вт и больше.
  • Микроконтроллер отличается наличием специального блока ввода и часто (но не всегда) небольшого светодиода или ЖК-дисплея для вывода. Принимает входные данные от устройства, которым он управляет, посылая сигналы различным его компонентам. Например, микроконтроллер телевизора получает сигналы с ПДУ и отображает вывод на экране телевизора. Он управляет селектором каналов, динамиками и некоторыми настройками изображения, такими как контраст и яркость. Контроллер автомобильного двигателя принимает входные сигналы от датчиков кислорода и детонации, регулирует создание топливной смеси и синхронизирует работу свечей зажигания. В микроволновой печи он принимает ввод с клавиатуры, отображает вывод на ЖК-дисплее и управляет реле включения и отключения СВЧ-генератора.
  • Микроконтроллеры - это зачастую небольшие и недорогие устройства. Компоненты выбираются таким образом, чтобы минимизировать размеры и максимально удешевить производство.
  • Часто, но не всегда, работа микроконтроллера осуществляется в неблагоприятных условиях. Например, устройство управления двигателем автомобиля должно работать в экстремальных температурах, при которых обычный компьютер вообще не может функционировать. На севере микроконтроллер автомобиля должен функционировать при температуре -34 °C, а на юге - при 49 °C. В моторном отсеке температура может достигать 65-80 °C. С другой стороны, микроконтроллер, встроенный в проигрыватель Blu-ray, вообще не должен быть особо прочным.

Требования к ЦПУ

Процессоры, используемые в микроконтроллерах, могут сильно различаться. Например, в сотовых телефонах применялся 8-разрядный микропроцессор Z-80, разработанный в 1970-х годах и первоначально использовавшийся в домашних компьютерах. GPS-навигатор Garmin оборудовался маломощной версией Intel 80386, которую также первоначально устанавливали в настольных ПК.

Большая часть бытовой техники, такой как микроволновые печи, нетребовательна к процессорам, но их цена является важным фактором. В этих случаях производители обращаются к специализированным микроконтроллерам, разработанным из недорогих, небольших и маломощных ЦПУ. Motorola 6811 и Intel 8051 являются хорошими примерами таких чипов. Также выпускается серия популярных компании Microchip. По сегодняшним меркам эти процессоры невероятно минималистичны, но они чрезвычайно дешевы и часто могут полностью удовлетворить потребности конструктора.

Экономичность

Типичный микроконтроллер - это чип с 1000 байтов ПЗУ, 20-ю байтами ОЗУ и 8-ю контактами ввода-вывода. При выпуске большими партиями их стоимость невысока. Конечно, запустить Microsoft Word на таком чипе невозможно - для этого потребуется не менее 30 МБ ОЗУ и процессор, выполняющий миллионы операций в секунду. Но для управления микроволновой печью этого и не нужно. Микроконтроллер выполняет одну конкретную задачу, а низкая стоимость и энергопотребление являются его главными преимуществами.

Как работает?

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

  • При отключенном питании устройство никак себя не проявляет.
  • Подключение микроконтроллера к источнику энергии запускает блок логики системы управления, который отключает все другие схемы, кроме кварцевого кристалла.
  • Когда напряжение достигает своего максимума, частота генератора стабилизируется. Регистры заполняются битами, отражающими состояние всех схем микроконтроллера. Все контакты конфигурируются как входы. Электроника начинает работать согласно ритмической последовательности тактовых импульсов.
  • Счетчик команд обнуляется. Инструкция по этому адресу отправляется в декодер команд, который ее распознает, после чего она немедленно выполняется.
  • Значение счетчика команд увеличивается на 1, и весь процесс повторяется со скоростью миллион операций в секунду.

Многие профессионалы-разработчики электроники часто "воротят нос" от семейства микроконтроллеров производства Atmel - фи, мол, эта ваша Атмега - только лампочками поморгать. Однако, это спорное утверждение.

Дешевизна, легкость программирования (как физической "заливки" прошивки, так и создания самих программ) превращают микроконтроллеры семейства AVR в универсальный инструмент, доступный начинающему радиолюбителю, а богатейшая линейка устройств - от самых простых ATTiny до устройств Mega256 с огромным количеством периферии "на борту" позволят реализовать самый смелый и амбициозный проект.

В этот раз мы рассмотрим конкретные примеры реализации одноплатных (и не очень) конструкторов на базе микроконтроллеров семейства ATMega. Все они вполне реализуемы в домашних условиях, а некоторые можно приобрести на сайте авторов. Для начала - небольшое отступление про "одноплатники" вообще.

Название говорит само за себя - все компоненты компьютера, необходимые для его базового функционирования размещены на одной плате. Совсем юные читатели сразу подумают о новинках вроде Raspberry Pi, а те, кто уже имеют понятие о мироустройстве - вспомнят РК-86, ZX-Spectrum и БК-0010, например.

Именно так - те самые "компьютеры в клавиатуре" были одноплатными. Да, допускались различные расширения, но кто о них помнит сейчас, тем более приобрести их в магазине было довольно проблематично. Да и нужды не было по большому счету.

И вот 21 век сдвинул "окно ностальгии" в нужную позицию и радиолюбители по всему миру не сговариваясь выпустили несколько проектов, которые по характеристиками ну очень напоминают те самые "эр-кашки" и "спектрумы" конца восьмидесятых годов прошлого века. А некоторые - в точности повторяют, но обо всём по порядку.

AVR Chip Basic

Первый персонаж нашего обзора - компьютер AVR Chip Basic, точнее это целое семейство компьютеров, различающееся по степени "навороченности" и наличию той или иной периферии.

  • AVR-ChipBasic8 на базе ATMega8 или ATMega88 (та же микросхема используется в )
  • 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

Автор Julian Skidmore создал "одноплатник", работающий под управлением ФОРТ-машины. Устройство способно управляться с экраном размером 25x24 символов, 16 пользовательскими символами, ну или графикой размером 160x160 точек.

Стоит отметить, что устройство может работать как с PAL-телевизорами, так и с NTSC - зависит от загруженной прошивки микроконтроллера ATMega168.

Особый интерес вызывает способ ввода данных. Обычно с AVR-устройствами часто интегрируют поддержку PS/2 клавиатуры, коих в избытке (пока что). Автор подготовился к вселенской катастрофе и организовал ввод с помощью восьми кнопок... Перебор значений на них организован по образу и подобию набора SMS в кнопочных мобильных телефонах.

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

Если до этого шла речь о самобытных устройствах, то следующая часть статьи будет почти полностью посвящена эмуляторам и репликам существующих (за некоторым очень интересным исключением).

PMD-85

Первый в списке - компьютер PMD-85. Это довольно интересное устройство, которое выпускалось с 1985 по 1989 в социалистической Чехословакии. По характеристикам он очень похож на семейство "РК-86", выпускавшийся в СССР в середине и конце восьмидесятых годов прошлого века - процессор i8080 и небольшой объем памяти.

Проект был бы весьма интересен отечественным фанатам РК-86, тем более что уже есть реализация на микроконтроллере PIC в проекте Maximite.

AVR-CP/M

Это стоит сделать хотя бы ради великого и ужасного ZORK! И ведь запускают.

В качестве устройства отображения используется serial port.

Для него в плату установлен конвертер Serial->USB, но вполне можно обойтись и без него, точнее - обойтись внешним конвертером.

Сама схема представляет собой контроллер ATMega328 и несколько чипов памяти (из старых видеокарт или материнских плат).

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

UzeBox

Постепенно переходим к жемчужинам этого собрания. Первая в списке - самодельная, полностью открытая приставка UzeBOX.

Мало того, что приставка полностью "повторяема" в домашних условиях - её программное обеспечение имеет вполне достойный уровень, и более того - игры для неё разрабатываются энтузиастами прямо-таки в промышленных количествах.

Что "под капотом":

  • Низкая стоимость. Всего 2 чипа (микроконтроллер и кодер NTSC), более того - второй не обязателен, если есть телевизор с полноценным разъемом SCART.
  • Ядро управляется прерываниями. Нет "тормозов", никто не отсчитывает такты процессора, генерация аудио и видео происходит в фоне.
  • 256 цветов 4 звуковых канала - 3 wavetable +1 шумовой
  • MIDI-интерфейс
  • Стандартные джойстики от SNES (на можно приобрести несколько штук).
  • Есть возможность использовать NES (Dendy), но потребуется перекомпиляция игр, хотя это вообще не проблема
  • Поддержка манипулятора "мышь" от SNES
  • Поддержка SD-карточек UART и SPI интерфейсы доступны, также есть некоторое количество свободных "ножек" ATMega
  • Есть эмулятор для разработки игр Загрузчик игр/программ с SD Развитое API для разработки Полностью открытая схемотехника и код

Приставка оказалась настолько удачной, что комплектами для сборки подторговывал магазин - признанный лидер в DIY движении.

Сама приставка базируется на микросхеме ATMega644 в DIP-исполнении (об этом чуть подробнее ниже). Этого контроллера вполне хватает для вышеописанных задач, а на выходе можно наблюдать игры примерно такого качества:

Без сомнения - классика не стареет.

Неплохо для микроконтроллера, правда?

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 прошло - мы-то знаем на что она способна.

Удачных самоделок!

Время идёт, и раритетных компьютеров становится всё меньше и меньше. Какие-то ломаются, какие-то разбираются на запчасти, а какие-то просто выкидываются. К сожалению, этот процесс не остановить – ничего вечного нет.
Но если взять и придумать такой компьютер, который по всем параметрам походил бы на ретро-компьютеры, но был сделан на современной элементарной базе? И такой компьютер есть – это AVR ChipBasic.
1. Предисловие
AVR ChipBasic – серия радиолюбительских компьютеров, разработанных немецким инженером Йоргом Вольфрамом (Joerg Wolfram). Все они представляют собой компьютеры, собранные всего на одной микросхеме – микроконтроллере фирмы Atmel AVR. В этих компьютерах микроконтроллер выполняет функции видеоконтроллера, контроллера клавиатуры, звукового генератора, бейсик-интерпретатора и других устройств, которые в обычных компьютерах состоят из множества микросхем. Серия AVR-ChipBasic состоит из четырёх моделей.
1. Младшая . Основана на микроконтроллере AtMega8, содержит 1 КБ ОЗУ, 8 КБ ПЗУ. Имеет встроенный интерпретатор языка TinyBasic, генерирует чёрно-белое изображение с разрешением 180*230, подключается к композитному входу телевизора (тюльпану).

2. Первая средняя . Основана на микроконтроллере AtMega16, содержит 2 КБ ОЗУ, 16 КБ ПЗУ. Имеет расширенный интерпретатор бейсика. Выводит цветное изображение (8 цветов) с разрешением 180*230. Имеет знакогенератор без строчных букв.

3. Вторая средняя . То же, что и первая средняя, только на микроконтроллере AtMega32 и с полным знакогенератором.
4. Старшая . Самая мощная модель.
Основана на микроконтроллёре AtMega644, содержит 8 КБ ОЗУ, 64 КБ ПЗУ. Имеет мощный встроенный интерпретатор бейсика. Генерирует цветное изображение (16 цветов) разрешением 180*230 Единственная из моделей, которая поддерживает тригонометрические функции и графический режим. Все эти компьютеры распространяются свободно по лицензии GNU GPL, на официальном сайте представлены схемы, прошивки и исходники.

Сейчас мы более подробно рассмотрим младшую модель компьютера AVR ChipBasic.
2.Общее описание
Младшая модель компьютера AVRChipBasic, как уже говорилось ранее, состоит из всего одной микросхемы – микроконтроллера AtMega8 фирмы Atmel, и поэтому возможности этого компьютера будут определяться возможностями микроконтроллера. Компьютер имеет 1 КБ ОЗУ, 8 КБ FLASH?памяти, в которой хранится интерпретатор бейсика и 512 байт EEPROM, в котором хранится запускаемая программа. Единственный видеорежим компьютера – текстовой 30*23 символа, где каждый символ размером 6*10 точек, и поэтому общее разрешение экрана 180*230 пикселей. Изображение выводится на обычный бытовой телевизор, который подключается к компьютеру по композитному входу.
Также, в компьютере AVR?ChipBasic предусмотрено подключение внешнего дискового модуля на микросхеме 24с16, в которую помещается четыре программы. Ещё компьютер умеет воспроизводить звук через бипер, соединятся с ПК через последовательный порт для обмена программам и управлять внешними устройствами через 4 линии ввода-вывода.
По характеристикам этот компьютер очень похож на компьютеры 70-80-ых годов. Вот в таблице приведены сравнительные характеристики компьютера AVR-ChipBasic и других ретро-компьютеров.

Как видно из таблицы, этот микрокомпьютер больше всего похож на компьютер ZX80, у него, как и у AVR ChipBasic’a, 1 КБ ОЗУ, 8 КБ ПЗУ, чёрно-белый экран и самое главное, видео тоже формируется центральным процессором, а не отдельной схемой видеогенератора. Причём вычисления проводятся в свободное от генерации видео время, а не наоборот, как у ZX80.
Также компьютер умеет воспроизводить звук. Есть два типа звука: первый похож на звук «бим», а второй – на звук «пшш», причём первый звук может делать разной высоты.
3.Особенности конструкции
Схема компьютера проста, как молоток: она состоит из микроконтроллера и небольшой обвязки резисторов и конденсаторов.
Для соединения компьютера с ПК используется аналог микросхемы MAX232 на двух транзисторах.
Схема компьютера

Единственное, что можно добавить к схеме, это что резистор 330 Ом, который стоит перед видеовыходом, следует заменить на 800 Ом, тогда изображение станет более чётким.

Отдельное слово хочется сказать о прошивке микроконтроллера. В архиве находится несколько прошивок, нам надо выбрать cb8_050_mega8_kbd?en_pal.hex, которая находится в папке mega8
Компьютер собирается на печатной или макетной плате. Для него нужен источник питания 5 вольт, для этого можно взять БП от ПК форм фактора ATX, но лучше для этих целей подойдёт зарядка от телефона и стабилизатор 7805.
4.Особенности работы
После сборки и включения компьютера на экране на несколько секунд появляется логотип компьютера. Пока он находится на экране, надо нажать какую-нибудь кнопку, тогда запускается редактор программ, иначе – происходит автозапуск программы из EEPROM.


После открытия редактора можно сразу приступать к написанию программ. В любой момент времени на экране находится вся программа, прокрутки экрана нет. Также нет функции переноса строк, то есть при нажатии клавиши Enter строки смещаются на одну вниз, а курсор просто перемещается к началу следующей строки.
При редактировании есть несколько горячих клавиш:
F1 – Загрузить программу из EEPROM
F2 – Изменить название программы
F3 – Открыть диалог для работы с дисковым модулем
F4 – Запуск программы – Остановить выполнение программы
CLRL+P – Отправляет скриншот по последовательному порту
А теперь мы рассмотрим одну интересную особенность этого компьютера: посмотрите сами, экранная область занимает 690 байт памяти (30*23) и программа 500 байт (20 строк по 25 символов). Это вместе получается 1190 байт, но как это может быть, ведь памяти у микроконтроллёра всего 1024 байта. К тому же нужно ещё несколько байт для системных переменных. А сделано всё вот так хитро: во время редактирования программа находится в видеопамяти и не занимает дополнительного места. После нажатия кнопки F4 программа копируется из видеопамяти в EEPROM, а видеопамять очищается. Далее, программа интерпретируется уже не из ОЗУ, а из EEPROM.
После завершения программы она снова копируется в видеопамять, и можно продолжать редактировать.
Такое положение дел позволяет сэкономить память, но ведёт к другим неудобствам.
Дело в том, что EEPROM поддерживает всего 100000 циклов перезаписи. Это значит, что если каждый день делать по 100 запусков, то через три года микросхема сгорит. К счастью, у компьютера есть небольшая защита: перед тем, как переписывать программу в ППЗУ, она сравнивается с той, что уже там находится, и если они равны, то программа не переписывается.
После завершения работы программы в правом нижнем углу появляется надпись PRESS ESC!. Если программа запускалась клавишей F4, то откроется редактор, а если же программа запускалась автозапуском, то она перезапустится.
5.Бейсик
Компьютер AVR?ChipBasic имеет встроенный интерпретатор языка бейсик. Для экономии памяти используется его диалект Tiny Basic, который не очень сильно отличается от обычного бейсика. Сейчас мы рассмотрим главные особенности этого языка.
Первое, что сразу бросается в глаза, – это сокращённые команды. Вместо GOTO используется GO, вместо GOSUB – SUB, вместо NEXT – NXT. Некоторые команды вообще заменены символами. Например, команда?@2,2;%17 означает вывести в координатах 2, 2 символ номер 17 (кружок). Это делает программы на этом бейсике немного нечитаемыми, но если вникнуть, то всё понятно.
Tiny Basic поддерживает 26 переменных типа byte, каждая обозначается одной буквой (A-Z). Массивы и строки не поддерживаются.
Также стоит отметить ряд интересных возможностей этого языка. Например, несколько способов доступа к клавиатуре. С помощью одного из способов можно сделать, что при на? жатии на кнопку «вправо» будет выдаваться значение 1, а при нажатии на «влево» – 255 (-1). С помощью других методов можно отлавливать нажатия Ctrl, Shift и других кнопок, и они будут принимать значения 1 и 255. Это сделано для облегчения написания игр, так как в них часто используются стрелки и другие кнопки, которыми надо управлять движением различных объектов.
Ещё одна интересная команда – LIM. Она задаёт границы для значения переменной.
Например, команда LIM D, 10, 20. После её выполнения значение переменной D будет находиться в диапазоне 10..20. Если до выполнения команды значение переменной было меньше десяти, то оно станет 10, а если же больше 20 – станет 20.
К тому же этот бейсик поддерживает псевдографику разрешением 60*46. Можно рисовать точки, линии и квадраты.
Напишем какую?нибудь простую программу на этом языке. Пусть это будет простенькая игра «угадай число». Вот её полный код:
1 a=rv(100)+1:?”Vvedi chis”
2 inp b
3 if b>a:go 6
4 if b5 ?”Molodec!”:no 255:go 0
6 ?”Vvedi menshe”:no 5:go 2

7 ?”Vvedi bolshe”:no 8:go 2

Разберём эту программу поподробнее.
В первой строчке этой программы загадывается случайное число от 1 до 100 и выводится надпись.
Во второй – вводится число с клавиатуры.
В третьей и в четвёртой введённое число сверяется с загаданным, и программа отправляется куда нужно.

6.Заключение
Вот такой вот это компьютер, AVRChipBasic.
Несмотря на свою простоту, он обладает достаточно большими возможностями.
Конечно, есть некоторые недочёты/недоработки, но надо помнить, что в крохотные 8 килобайт памяти, куда и бейсик с трудом влезет, удалось впихнуть бейсик, видеогенератор, контроллер клавиатуры, и чтобы это всё вместе ещё и работало, причём, достаточно быстро.
Поэтому компьютер ARV-ChipBasic можно смело назвать произведением искусства. Работать с ним – одно удовольствие. :?)
Ссылки:
Официальная страница компьютера:
http://jcwolfram.de/projekte/avr/chipbasic8/main.php
В пятой-седьмой строчках выводится нужное сообщение, играет звук, и программа отправляется или к вводу, или выходит.

Александр Завгородний (Kakos_Nonos)
http://kabardcomp.narod.ru/

В данной статье я опишу создание мною простого бортового компьютера для автомобиля или мотоцикла. Никаких экзотических функций устройство не содержит, но зато в нём есть часы, термометр и вольтметр. Основа, это AVR микроконтроллер ATmega8 с восьми килобайтами флеш память, этого нам как раз достаточно. Часы реализованы на специальной микросхеме (часов реального времени RTC) DS1307, это позволяет идти часам очень точно довольно длительное время, даже тогда когда устройство выключено. Но конечно для работы микросхемы DS1307 требуется дополнительное питание 3 вольта, например батарейка CR2032. Датчик для термометра взял DS1820 работающий по интерфейсу 1-Wire. Все данные выводятся на ЖК индикатор на контроллере . Итак, для сборки устройства понадобятся следующие радиодетали:

1. Микроконтроллер Atmega8 - 1шт.
2. Микросхема DS1307 - 1шт.
3. Датчик DS1820 - 1шт.
4. Панелька DIP-8 - 1шт.
5. Панелька DIP-28 - 1шт.
6. Микросхема LM7805 - 1шт.
7. Микросхема LM7809 - 1шт.
8. Тактовые кнопки - 4шт.
9. Кнопки с фиксацией положения - 2шт.
10. Кварц 14.3 МГц - 1шт.
11. Кварц часовой 32768 Гц - 1шт.
12. Конденсатор керамический 22 пф - 2шт.
13. Конденсатор керамический 100 нф - 4шт.
14. Транзистор КТ315 - 2шт.
15. Конденсатор электролитический 100 мкф - 1шт.
16. Конденсатор электролитический 47 мкф - 2шт.
17. Диод 1N4001 - 1шт.
18. Подстроечный резистор 20 кОм - 2шт.
19. Резистор 1 кОм - 2шт.
20. Резистор 10 кОм - 2шт.
21. Резистор 4,7 кОм - 3шт.
22. Резистор 100 кОм - 1шт.
23. Резистор 20 Ом - 1шт.
24. Резистор 68 Ом - 1шт.
25. Динамик 0.2 Вт - 1шт.
26. ЖК индикатор WH1602 (на контроллере HD44780 или совместимом) - 1шт.
27. Текстолит - 1шт.
28. Корпус пластиковый - 1шт.
29. Отсек для батареек 2xAA - 1шт.
30. Батарея 1.5v AA - 2шт.

Принципиальная схема устройства:

Подстроечный резистор R4 устанавливает контрастность ЖК индикатора, а R12 подстраивает вольтметр до точного значения. Кварц Z2 на 14.3 МГц, его можно найти на старых материнских платах. Кнопка S1 - "Отмена", S2 - "Вниз", S3 - "Ок", S4 - "Вверх". Резистор R3 подтягивает Reset микроконтроллера к плюсу питания чтобы предотвратить случайный сброс. Резисторы R1, R2 и R7 также подтягивают порты микроконтроллера к плюсу питания. Керамические конденсаторы C1 и C2 нужны для стабильной работы кварца Z2. Я собрал устройство на двух печатных платах, на одной содержатся микросхемы LM7805 и LM7809, на другой, всё остальное. Платы рисовал в программе и изготавливал с помощью . Вот готовая плата покрытая сплавом розе:

Плата с запаянными на ней деталями:

С обратной стороны:

Все потроха собрал в корпус, в итоге получилось красиво и компактно.

Фото готового бортового компьютера (вид спереди):

Фото готового бортового компьютера (вид сзади):

Для удобства, спереди я разместил только ЖК индикатор и кнопки управления S1, S2, S3 и S4. Разъём, кнопки включения устройства и выключения звука, подстроечный резистор R12 я разместил сзади корпуса. Прошивку для микроконтроллера писал в среде (исходник прилагается), микроконтроллер прошивал программатором USBtiny с помощью программы SinaProg. После прошивки микроконтроллера нужно установить следующие фьюз-биты:

Правильно собранное и прошитое устройство запускается сразу, и не требует настройки, разве что, точной подстройки вольтметра и настройки часов. Из дополнительный функций присутствует регулировка яркости ЖКИ и часовой бипер (часы подают сигнал в начале каждого часа). При включении устройства на ЖКИ появляется заставка и плавно загорается подсветка индикатора, потом появляется главный экран, где отображается время, дата, температура и напряжение. Если в это время нажать кнопку S3 то вы войдёте в меню настройки времени, S2 - в информационную вкладку, где написана информация о версии устройства и его авторе, S4 - в меню настройки яркости ЖКИ и управления часовым бипером. Кнопка S1 возвращает обратно, на главный экран. Наглядно посмотреть, как управлять устройством вы можете на видео:

В файлах к статье есть исходники программы, прошивка, проект в программе .

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 Часы реального времени (RTC)

DS1307

1 В блокнот
IC2 МК AVR 8-бит

ATmega8

1 В блокнот
VR1 Линейный регулятор

LM7805CT

1 В блокнот
VR2 Линейный регулятор

LM78L09

1 В блокнот
VT1, VT2 Биполярный транзистор

КТ315Б

2 В блокнот
VD1 Выпрямительный диод

1N4001

1 В блокнот
Z1 Кварц 32768 Гц 1 В блокнот
Z2 Кварц 14.3 МГц 1 В блокнот
C1, C2 Конденсатор 22 пФ 2 Керамические В блокнот
C3-C5, C8 Конденсатор 100 нФ 4 Керамические В блокнот
C6, C7 47мкФ 16В 2 В блокнот
C9 Электролитический конденсатор 100мкФ 35В 1 В блокнот
R1, R2, R7 Резистор

4.7 кОм

3 В блокнот
R3, R10 Резистор

10 кОм

2 В блокнот
R4, R12 Подстроечный резистор 20 кОм 2 В блокнот
R5 Резистор

20 Ом

1 В блокнот
R6, R9 Резистор

1 кОм

2 В блокнот
R8 Резистор


Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: