AVR‐ChipBasic - современный ретро‐компьютер. Мини-компьютер на базе микроконтроллера Parallax Propeller


Время идёт, и раритетных компьютеров становится всё меньше и меньше. Какие-то ломаются, какие-то разбираются на запчасти, а какие-то просто выкидываются. К сожалению, этот процесс не остановить – ничего вечного нет.
Но если взять и придумать такой компьютер, который по всем параметрам походил бы на ретро-компьютеры, но был сделан на современной элементарной базе? И такой компьютер есть – это 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/

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

К наиболее распространенным встроенным устройствам относятся устройства памяти и порты ввода/вывода (I/O), интерфейсы связи, таймеры, системные часы. Устройства памяти включают оперативную память (RAM), постоянные запоминающие устройства (ROM), перепрограммируемую ROM (EPROM), электрически перепрограммируемую ROM (EEPROM). Таймеры включают и часы реального времени, и таймеры прерываний. Средства I/O включают последовательные порты связи, параллельные порты (I/O линии), аналого-цифровые преобразователи (A/D), цифроаналоговые преобразователи (D/A), драйверы жидкокристаллического дисплея (LCD) или драйверы вакуумного флуоресцентного дисплея (VFD). Встроенные устройства обладают повышенной надежностью, поскольку они не требуют никаких внешних электрических цепей.

В отличие от микроконтроллера контроллером обычно называют плату, построенную на основе микроконтроллера, но достаточно часто при использовании понятия "микроконтроллер" применяют сокращенное название этого устройства, отбрасывая приставку "микро" для простоты. Также при упоминании микроконтроллеров можно встретить слова "чип" или "микрочип", "кристалл" (большинство микроконтроллеров изготавливают на едином кристалле кремния), сокращения МК или от английского microcontroller - MC.

Микроконтроллеры можно встретить в огромном количестве современных промышленных и бытовых приборов: станках, автомобилях, телефонах, телевизорах, холодильниках, стиральных машинах... и даже кофеварках. Среди производителей микроконтроллеров можно назвать Intel, Motorola, Hitachi, Microchip, Atmel, Philips, Texas Instruments, Infineon Technologies (бывшая Siemens Semiconductor Group) и многих других.
Для производства современных микросхем требуются сверхчистые помещения.

Основным классификационным признаком микроконтроллеров является разрядность данных, обрабатываемых арифметико-логическим устройством (АЛУ). По этому признаку они делятся на 4-, 8-, 16-, 32- и 64-разрядные. Сегодня наибольшая доля мирового рынка микроконтроллеров принадлежит восьмиразрядным устройствам (около 50 % в стоимостном выражении). За ними следуют 16-разрядные и DSP-микроконтроллеры (DSP - Digital Signal Processor - цифровой сигнальный процессор), ориентированные на использование в системах обработки сигналов (каждая из групп занимает примерно по 20 % рынка). Внутри каждой группы микроконтроллеры делятся на CISC- и RISC-устройства. Наиболее многочисленной группой являются CISC-микроконтроллеры, но в последние годы среди новых чипов наметилась явная тенденция роста доли RISC-архитектуры.

Тактовая частота, или, более точно, скорость шины, определяет, сколько вычислений может быть выполнено за единицу времени. В основном производительность микроконтроллера и потребляемая им мощность увеличиваются с повышением тактовой частоты. Производительность микроконтроллера измеряют в MIPS (Million Instruсtions per Second - миллион инструкций в секунду).

8 апреля 2015 в 12:32

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

  • DIY или Сделай сам

Увидев о том, как один человек использовал клавиатуру в качестве программатора AVR-микроконтроллеров, я воскликнул: «Да он безумец!». А потом подумал, а чем же я хуже?.. И решил написать эту статейку о безумном способе передачи информации из ПК в микроконтроллер.

Вся суть состоит в том, что на экран выводятся квадраты, которые могут быть окрашены в белый, либо чёрный цвет, то есть иметь два состояния. Как биты. И их восемь штук. Как байт.

Чем отличается чёрный цвет от белого? Забавно, но не цветом, а яркостью, интенсивностью света. Интенсивность белого много больше интенсивности чёрного. В качестве регистратора интенсивности я использовал самое простое специально предназначенное для этого устройство - фоторезистор. Фоторезисторами называют полупроводниковые приборы, проводимость которых меняется под действием света. В моём случае проводимость затемнённого фоторезистора много меньше проводимости освещённого. Подключение фоторезистора к микроконтроллеру выбрал самое простое - между пином и землёй, включив встроенную подтяжку к питанию. Проверил напряжение, которое получает АЦП МК ATMega8: слева фоторезистор смотрит на белый фон, справа на чёрный. Напряжение в вольтах.

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

Как видно, при считывании в цифровом режиме, мы получим 0 на белом и 1 на чёрном, что несколько идёт в разрез с моими шаблонами (чёрный ноль и белая единица), зададим чёрную единицу в программе на ПК.

Для вывода информации на монитор в необходимом нам представлении была написана простая программа на Си - Opto_Байт. Написал её по моей просьбе сосед по общежитию - kinetik161, за что ему большое спасибо и литр пива молока. Программа имеет ввод значения в десятичной системе счисления от 0 до 255 ((2^8)-1) через поле ввода и через текстовый файл TEXT.txt. Текстовый файл располагается в том же каталоге, что и исполняемый файл, каждое значение вводится с новой строки, при достижении конца списка вывод значений останавливается. Интервал - 1 секунда. Имеется кнопка инверсии.

Использовал микроконтроллер ATMega8, который в DIP28 корпусе имеет два полноценных (8 битных) порта - порт B и порт D. На порте B висит кварцевый резонатор, на D - UART. В итоге, я использовал безумную солянку портов, из которых потом составлял один байт. Подключение фоторезисторов от старшего разряда к младшему, слева направо: PC3, PC2, PC1, PC0, PB2, PB1, PB0, PD7.

Быстренько собрал всё на макетной плате и окончательно проверив работу с отправкой данных обратно по com-порту, я решил подключить знакосинтезирующий ЖК экран для вывода информации. Прилагаю код для Arduino IDE.

Код прошивки МК

#include // Подключаем библиотеки #include LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE); // Настройка подключения дисплея(есть разные) int led = 2; // Указываем пин светодиода byte data = 0; // Полученный байт byte dataold = 170; // Предыдущий байт byte k=0; // Переменная для красивого форматирования байта на LCD void setup() { lcd.begin (16,2); // Инициализация экрана lcd.setBacklight(1); // Включить подсветку lcd.print("Hello, Geektimes"); // Приветствие lcd.setCursor(2, 1); // Сдвиг курсора lcd.print("from NikitosZs"); // Serial.begin(9600); // Инициализация UART DDRC = DDRC & 0b11110000; // Задаём порты ввода/вывода DDRB = DDRB & 0b11111000; DDRD = DDRD & 0b01111111; PORTC = PORTC | 0b00001111; // Включаем подтяжку фоторезисторов PORTB = PORTB | 0b00000111; PORTD = PORTD | 0b10000000; pinMode(led, OUTPUT); // Индикатор приветствия digitalWrite(led, 1); delay(2000); // Держим приветствие на экране lcd.clear(); // Очищаем экран digitalWrite(led, 0); // Индикатор приветствия выключен } void loop() { data = get(); // Присваиваем переменной data текущий байт if(data!=dataold) // Перерисовываем информацию на экране, если байт изменился { // Serial.println(data); // Отправляем байт в терминал lcd.setCursor(1, 0); lcd.print("DEC:"); lcd.setCursor(6, 0); lcd.print(" "); // Очищаем локальную область lcd.setCursor(6, 0); lcd.print(data); lcd.setCursor(1, 1); lcd.print("BIN:"); lcd.setCursor(6, 1); lcd.print("00000000"); // Создаём правильную подложку if(data>127) k=0; // Определяем старший бит для сдвига else if(data>63) k=1; else if(data>31) k=2; else if(data>15) k=3; else if(data>7) k=4; else if(data>3) k=5; else if(data>1) k=6; else k=7; lcd.setCursor(6+k, 1); lcd.print(data, BIN); dataold=data; // Присваеваем значение байта переменной хранящей предыдущее значение } } byte get(){ byte raw=1, rawold=0; // Локальные переменные raw и rawold while(raw != rawold) // Выполняется, пока не равны (для устойчивости значения) { rawold = raw; // Сохраняем старое значение byte data1 = 0b10000000 & PIND; // Считываем солянку из пинов byte data2 = 0b00000111 & PINB; byte data3 = 0b00001111 & PINC; raw = data3 << 4; // Сдвигаем, создаём целый байт raw = raw + (data2 << 1); raw = raw + (data1 >> 7); } return raw; // Возвращаем готовый байт }


Выполним проверку правильной адресации фоторезисторов с битами, закрывая источник света пальцем. Должно получиться следующее:

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

Теперь немного занудства… По сути монитор это управляемый транспарант (матрица световых вентилей, возбуждаемых некоторыми внешними сигналами: электрическими, акустическими, оптическими, магнитными). Каждый квадратик - бит - занимает площадь 60*60 пикселей (50 - сторона квадрата и 10 - промежуток). Я имею монитор с разрешением 1920*1080 пикс, частота 60Гц. 1920/60=32 квадрата по ширине, 1080/60=18 квадратов по высоте, 32*18=576 бит на кадр. Не вдаваясь в тонкости, в секунду мы сможем рисовать 60 кадров, а это 576*60=34560 бит/с или 4320 Байта/с. Сократив размер квадратов до 30 пикселей по стороне, получим четырёхкратный прирост скорости (17280Б/с). К сожалению, если уменьшать дальше, то наши каналы будут засвечивать друг друга.

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

Поскольку дистанционное управление компьютером весьма удобно, в Интернете опубликовано немало схем подобных устройств. К примеру, в статье «Дистанционное управление компьютером на микроконтроллере AVR Mega 8» описано одно из них, а в этой статье речь пойдёт о подобной схеме, но собранной на широко распространённом микроконтроллере AVR Tiny 2313. Она сделана на основе известного устройства «IgorPlug» предназначенного для работы под Windows XP, но в схему были внесены некоторые изменения по следующей причине: в оригинальном устройстве, как и в множестве подобных, распространённых в Интернете, не согласованы по напряжению выходные уровни сигналов с портов микроконтроллера со стандартом USB.

В авторской схеме микроконтроллер питается напряжением 5 вольт, а размах сигнала USB 3,3 вольта. Для согласования этих уровней после внесения изменений вся схема питается напряжением 3,3 вольта от стабилизатора на стабилитроне. Микроконтроллер с таким питанием работает нормально, а фотоприёмник применён другой – BRM-1022 (BRIGHT LED ELECTRONICS). Он допускает диапазон изменения питающего напряжения в пределах 2,7 – 5,5 вольт. Можно без труда подобрать другой аналогичный фотоприёмник, например TSOP-4838. Описанное устройство можно настроить для работы с почти любым из уже имеющихся пультов ДУ.

Инструкция по установке:
1. Соберите устройство (Рис. 1) . Переделанная схема устройства дистанционного управления компьютером прилагается к этой статье (Рис. 2) . Она отличается от вышеназванного оригинала, как уже упоминалось, типом фотоприёмника и схемой питания. Для изготовления устройства применена печатная плата устройства дистанционного управления компьютером на микроконтроллере (Рис. 3) ;



2. Скачайте папку с драйвером и прошивкой после статьи;

3. Запрограммируйте микроконтроллер, записав в него соответствующую прошивку (для этой цели подойдёт, например, параллельный программатор микроконтроллеров AVR), и установите его в устройство. Микроконтроллер можно программировать уже установленным в схему, предварительно припаяв провода к соответствующим площадкам на плате. О таком методе программирования можно прочесть в литературе, содержащейся в категории «Электроника» книжного интернет-магазина «Bookwell».

4. Установите на компьютер программу Girder;

5. Подключите устройство к компьютеру и, когда система запросит драйвер, укажите путь к нему;

6. Скопируйте в папку Girder/plugins библиотеку IgorPlug.dll. Она предназначена для стыковки драйвера устройства с программой Girder. Скачать её можно после статьи;

7. Запустите Girder, затем на вкладке «Файл - настройки» выберите соответствующий модуль и укажите порт USB. Закройте окно, нажав «Сохранить». После этого программа должна реагировать на команды пульта и отображать их номера.

8. Настройте Girder, сопоставив пронимаемым номерам команд требуемые действия.

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

Скачать архивы:

У вас нет доступа к скачиванию файлов с нашего сервера

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

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

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






2024 © gtavrl.ru.