ATMega-8 - 8-разрядный КМОП микроконтроллер, основанный на архитектуре Atmel AVR. Контроллер выполняет большинство инструкций за 1 такт, поэтому вычислительная мощность контроллера равна 1MIPS на 1 Мгц. Блок-схема процессора показана.
Микроконтроллер имеет RISC-архитектуру, но формат команды двухоперандный, за один такт может быть обращение только к двум регистрам. Контроллер содержит 32 регистра, которые могут равноправно использоваться в арифметических операциях. Основные аппаратные характеристики микроконтроллера:
* 8 Кбт флеш-памяти команд;
* 512 байт электрически программируемой памяти;
* 1 Кбайт статической памяти;
* 23 линии ввода/вывода общего назначения;
* 32 РОНа;
* три многоцелевых таймер-счётчика с режимом сравнения;
* поддержка внутренних и внешних прерываний;
* универсальный асинхронный адаптер;
* байт-ориентированный двухпроводной последовательный интерфейс;
* 6/8 канальный АЦП с точностью 8 и 10 двоичных разрядов;
* сторожевой таймер;
* последовательный порт SPI;
* расширенные режимы управления энергопотреблением.
Ядро микроконтроллера - AVR.
Ядро микроконтроллера занимается исполнением команд программы.
Ядро включает в себя элементы гарвардской архитектуры с независимыми шинами, поэтому выборка инструкций производится независимо от операций в АЛУ.
Старшие 6 8-ми битовых регистров образуют 3 регистровые пары, которые используются для адресации памяти - X,Y,Z.
АЛУ производит арифметико-логические операции между регистрами (без ограничений) и регистром и константой. Каждая арифметико-логическая операция устанавливает флаги во флаговом регистре (см. рис. 3).
* I - флаг разрешения прерывания;
* T - флаг-хранитель бита - устанавливается и анализируется только специнструкциями;
* H - флаг дополнительного переноса из 3-го разряда в 4-й;
* S - флаг знака результата;
* V - флаг переполнения;
* N - флаг отрицательного результата операции;
* Z - флаг нуля;
* C - флаг переноса.
Поддерживается аппаратный стек в внутренней статической памятью.
Как видно, 6 старших регистров образуют регистровые пары - индексные регистры. Ядро процессора с помощью этих регистров допускают автоинкрементную, автодекрементную адресацию и адресацию с малым смещением.
Флеш-память программ.
Команда контроллера занимает 16 или 32 бита, поэтому флеш-память программ организована в виде массива 4К 16-ти битовых слов. Флеш-память разделена на две секции - область приложений и область загрузки (находящаяся в старших адресах). Флеш-память выдерживает до 10.000 циклов перезаписи.
Организация оперативной памяти.
Младшие 1120 адресов адресуют регистры АЛУ, регистры ввода/вывода и собствено оперативную память. Первые 96 адресов относятся к РОНам и регистрам ввода/вывода, остальные 1024 байта - память.
Дополнительно сушествует электрически программируемая память, содержащая 512 байт и выдерживающая 100.000 циклов перезаписи. Доступ к памяти осуществляется через специальные регистры ввода/вывода.
Таймеры.
0-й таймер общего назначения имеет 8-битовый счётчик, с 10-битовым дополнительным делителем частоты. Таймер может генерировать прерывание по переполнению, или по достижению значения.
1-й таймер имеет 16-битовый счётчик. Он может быть использован для генерации сигналов с переменной скважностью (широтно модулированные импульсы, генерации частоты и определения времени поступления внешних событий.
2 регистра сравнения значения таймера могут использоваться для генерации импульсов с переменной скважностью. Входной регистр используется для загрузки значения таймера в момент поступления внешнего события.
Таймера могут тактироваться различными сигналами.
2-й таймер является 8-ми битным, и может генерировать частоту и сигналы с переменной скважностью, генерировать прерывания по переполнению и достижению значения.
Последовательный периферийный интерфейс.
Особенности интерфейса:
* Дуплексная передача, используется трёхпроводная связь;
* Операции в режимах задатчика/исполнителя;
* Программируемые режимы передачи: первым либо старший либо младший бит;
* 7 скоростей передачи;
* генерация прерываний.
Универсальный Синхронно-Асинхронный Приёмо-Передатчик.