ATmega128, ATmega128L
8-разрядный AVR-микроконтроллер с внутрисистемно программируемой флэш-памятью емкостью 128 кбайт
Отличительные особенности:
- Высокопроизводительный, маломощный 8-разрядный AVR-микроконтроллер
- Развитая RISC-архитектура
– 133 мощных инструкций, большинство из которых выполняются за один машинный цикл
– 32 8-разр. регистров общего назначения + регистры управления встроенной периферией
– Полностью статическая работа
– Производительность до 16 млн. операций в секунду при тактовой частоте 16 МГц
– Встроенное умножающее устройство выполняет умножение за 2 машинных цикла
- Энергонезависимая память программ и данных
– Износостойкость 128-ми кбайт внутрисистемно перепрограммируемой флэш-памяти: 1000 циклов запись/стирание
– Опциональный загрузочный сектор с отдельной программируемой защитой
Внутрисистемное программирование встроенной загрузочной программой
Гарантированная двухоперационность: возможность чтения во время записи
– Износостойкость 4 кбайт ЭСППЗУ: 100000 циклов запись/стирание
– Встроенное статическое ОЗУ емкостью 4 кбайт
– Опциональная возможность адресации внешней памяти размером до 64 кбайт
– Программируемая защита кода программы
– Интерфейс SPI для внутрисистемного программирования
- Интерфейс JTAG (совместимость со стандартом IEEE 1149.1)
– Граничное сканирование в соответствии со стандартом JTAG
– Обширная поддержка функций встроенной отладки
– Программирование флэш-памяти, ЭСППЗУ, бит конфигурации и защиты через интерфейс JTAG
- Отличительные особенности периферийных устройств
– Два 8-разр. таймера-счетчика с раздельными предделителями и режимами сравнения
– Два расширенных 16-разр. таймера-счетчика с отдельными предделителями, режимами сравнения и режимами захвата
– Счетчик реального времени с отдельным генератором
– Два 8-разр. каналов ШИМ
– 6 каналов ШИМ с программируемым разрешением от 2 до 16 разрядов
– Модулятор выходов сравнения
– 8 мультиплексированных каналов 10-разрядного аналогово-цифрового преобразования
8 несимметричных каналов
7 дифференциальных каналов
2 дифференциальных канала с выборочным усилением из 1x, 10x и 200x
– Двухпроводной последовательный интерфейс, ориентированный не передачу данных в байтном формате
– Два канала программируемых последовательных УСАПП
– Последовательный интерфейс SPI с поддержкой режимов ведущий/подчиненный
– Программируемый сторожевой таймер со встроенным генератором
– Встроенный аналоговый компаратор
- Специальные возможности микроконтроллера
– Сброс при подаче питания и программируемая схема сброса при снижении напряжения питания
– Встроенный калиброванный RC-генератор
– Внешние и внутренние источники прерываний
– Шесть режимов снижения энергопотребления: холостой ход (Idle), уменьшение шумов АЦП, экономичный (Power-save), выключение (Power-down), дежурный (Standby) и расширенный дежурный (Extended Standby)
– Программный выбор тактовой частоты
– Конфигурационный бит для перевода в режим совместимости с ATmega103
– Общее выключение подтягивающих резисторов на всех линиях портов ввода-вывода
- Ввод-вывод и корпуса
– 53 –программируемые линии ввода-вывода
– 64-выв. корпус TQFP
- Рабочие напряжения
– 2.7 - 5.5В для ATmega128L
– 4.5 - 5.5В для ATmega128
- Градации по быстродействию
– 0 - 8 МГц для ATmega128L
– 0 - 16 МГц для ATmega128
Расположение выводов
Рисунок 1 – Расположение выводов у ATmega128
Краткий обзор
ATmega128 – маломощный 8-разр. КМОП микроконтроллер, основанный на расширенной AVR RISC-архитектуре. За счет выполнения большинства инструкций за один машинный цикл ATmega128 достигает производительности 1 млн. операций в секунду/МГц, что позволяет проектировщикам систем оптимизировать соотношение энергопотребления и быстродействия.
Функциональная схема
Рисунок 2 – Функциональная схема
Ядро AVR сочетает богатый набор инструкций с 32 универсальными рабочими регистрами. Все 32 регистра непосредственно подключены к арифметико-логическому устройству (АЛУ), который позволяет указать два различных регистра в одной инструкции и выполнить ее за один цикл. Данная архитектура обладает большей эффективностью кода за счет достижения производительности в 10 раз выше по сравнению с обычными CISC-микроконтроллерами.
ATmega128 содержит следующие элементы: 128 кбайт внутрисистемно программируемой флэш-памяти с поддержкой чтения во время записи, 4 кбайт ЭСППЗУ, 4 кбайт статического ОЗУ, 53 линии универсального ввода-вывода, 32 универсальных рабочих регистра, счетчик реального времени (RTC), четыре гибких таймера-счетчика с режимами сравнения и ШИМ, 2 УСАПП, двухпроводной последовательный интерфейс ориентированный на передачу байт, 8-канальный 10-разр. АЦП с опциональным дифференциальным входом с программируемым коэффициентом усиления, программируемый сторожевой таймер с внутренним генератором, последовательный порт SPI, испытательный интерфейс JTAG совместимый со стандартом IEEE 1149.1, который также используется для доступа к встроенной системе отладке и для программирования, а также шесть программно выбираемых режимов уменьшения мощности. Режим холостого хода (Idle) останавливает ЦПУ, но при этом поддерживая работу статического ОЗУ, таймеров-счетчиков, SPI-порта и системы прерываний. Режим выключения (Powerdown) позволяет сохранить содержимое регистров, при остановленном генераторе и выключении встроенных функций до следующего прерывания или аппаратного сброса. В экономичном режиме (Power-save) асинхронный таймер продолжает работу, позволяя пользователю сохранить функцию счета времени в то время, когда остальная часть контроллера находится в состоянии сна. Режим снижения шумов АЦП (ADC Noise Reduction) останавливает ЦПУ и все модули ввода-вывода, кроме асинхронного таймера и АЦП для минимизации импульсных шумов в процессе преобразования АЦП. В дежурном режиме (Standby) кварцевый/резонаторный генератор продолжают работу, а остальная часть микроконтроллера находится в режиме сна. Данный режим характеризуется малой потребляемой мощностью, но при этом позволяет достичь самого быстрого возврата в рабочий режим. В расширенном дежурном режиме (Extended Standby) основной генератор и асинхронный таймер продолжают работать.
Микроконтроллер производится по технологии высокоплотной энергонезависимой памяти компании Atmel. Встроенная внутрисистемно программируемая флэш-память позволяет перепрограммировать память программ непосредственно внутри системы через последовательный интерфейс SPI с помощью простого программатора или с помощью автономной программы в загрузочном секторе. Загрузочная программа может использовать любой интерфейс для загрузки прикладной программы во флэш-память. Программа в загрузочном секторе продолжает работу в процессе обновления прикладной секции флэш-памяти, тем самым поддерживая двухоперационность: чтение во время записи. За счет сочетания 8-разр. RISC ЦПУ с внутрисистемно самопрограммируемой флэш-памятью в одной микросхеме ATmega128 является мощным микроконтроллером, позволяющим достичь высокой степени гибкости и эффективной стоимости при проектировании большинства приложений встроенного управления.
ATmega128 поддерживается полным набором программных и аппаратных средств для проектирования, в т.ч.: Си-компиляторы, макроассемблеры, программные отладчики/симуляторы, внутрисистемные эмуляторы и оценочные наборы.
Совместимость ATmega103 и ATmega128
ATmega128 – микроконтроллер высокой сложности, где количество местоположений ввода-вывода составляет 64 местоположения, зарезервированных в наборе инструкций. Для гарантирования обратной совместимости с ATmega103 все местоположения ввода-вывода ATmega103 совпадают с ATmega128. Некоторые позиции ввода-вывода добавлены в расширенное пространство ввода-вывода, начиная с адреса $60 до $F, (т.е. во внутреннем ОЗУ ATmega103). Доступ к данным местоположениям осуществляется только с помощью инструкций LD/LDS/LDD и ST/STS/STD, а не с помощью IN и OUT. Перераспределение внутреннего пространства ОЗУ может стать проблемой для пользователей ATmega103. Кроме того, если в коде программы используются абсолютные адреса прерываний, то это также вызовет проблему, т.к. у ATmega128 увеличено число векторов прерываний. Для решения этих проблем может использоваться режим совместимости с ATmega103, для чего необходимо запрограммировать конфигурационный бит M103C. В данном режиме не доступны функции из расширенного пространства ввода-вывода, т.о. достигнуто расположение внутреннего ОЗУ как у ATmega103. Также удалены расширенные векторы прерываний.
ATmega128 полностью совместим по расположению выводов с ATmega103 и может быть установлен на существующую плату для ATmega103. См. рекомендации по применению “Замена ATmega103 на ATmega128”, где описывается, что необходимо знать при замене ATmega103 на ATmega128.
Режим совместимости с ATmega103
Если запрограммировать конфигурационный бит M103C, то ATmega128 будет функционировать в режиме совместимости с ATmega103, настраивая ОЗУ, линии ввода-вывода и векторы прерываний как описано выше. Однако, некоторые новые функции ATmega128 в этом режиме станут недоступными. Данные функции перечислены ниже:
- Один УСАПП вместо двух, только асинхронный режим. Доступны только 8 младших разрядов в регистре скорости связи.
- Один 16-разр. таймер-счетчик с двумя регистрами сравнения вместо двух 16-разр. таймер-счетчиков с тремя регистрами сравнения.
- Не поддерживается двухпроводной последовательный интерфейс.
- Порт C действует только на вывод.
- Порт G выполняет только альтернативные функции (не универсальный ввод-вывод).
- Порт F действует только как цифровой ввод в дополнение к аналоговому вводу к АЦП.
- Не поддерживаются возможности автономного программирования из загрузочного сектора.
- Не возможно регулировать частоту внутреннего калиброванного RC-генератора.
- Интерфейс внешней памяти не может освободить неиспользуемые адресные сигналы для задач универсального ввода-вывода, не конфигурируются различные паузы для разных диапазонов адресов внешней памяти.
Кроме того, для большей совместимости с ATmega103 выполнены другие незначительные изменения:
- В регистре MCUCSR присутствуют только EXTRF и PORF.
- Временная последовательность не требуется для изменения периода переполнения сторожевого таймера.
- Запросы на внешние прерывания 3 - 0 генерируются только по уровню входного сигнала.
- УСАПП не имеет буфера FIFO, поэтому, переполнение при приеме данных происходит раньше.
Неиспользуемые биты ввода-вывода у ATmega103 должны быть сброшены (запись 0) для гарантирования одинакового функционирования в составе ATmega128.
Описание выводов
VCC |
Напряжение питания цифровых элементов |
GND |
Общий |
Порт A (PA7..PA0) |
Порт A – 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта A имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта А будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта A находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена.
Порт А также выполняет некоторые специальные функции ATmega128, описываемых далее. |
Порт В (PВ7..PВ0) |
Порт B – 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта В имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии по9рта B будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта B находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена.
Порт В также выполняет некоторые специальные функции ATmega128, описываемых далее. |
Порт C (PC7..PC0) |
Порт C – 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта C имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта C будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта C находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена.
Порт C также выполняет некоторые специальные функции ATmega128, описываемых далее. В режиме совместимости с ATmega103 порт C действует только на вывод, а при выполнении условия сброса линии порта C не переходят в третье состояние. |
Порт D (PD7..PD0) |
Порт D – 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта D имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта D будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта D находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена.
Порт D также выполняет некоторые специальные функции ATmega128, описываемых далее. |
Порт E (PE7..PE0) |
Порт E – 8-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта E имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта E будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта E находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена.
Порт E также выполняет некоторые специальные функции ATmega128, описываемых далее. |
Порт F (PF7..PF0) |
Порт F действует как аналоговый ввод аналогово-цифрового преобразователя. Порт F также может использоваться как 8-разр. порт двунаправленного ввода-вывода, если АЦП не используется. К каждой линии порта может быть подключен встроенный подтягивающий к плюсу резистор (выбирается раздельно для каждого бита). Выходные буферы порта F имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта F будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта F находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Если активизирован интерфейс JTAG, то подтягивающие резисторы на линиях PF7(TDI), PF5(TMS) и PF4(TCK) будут подключены, даже если выполняется Сброс.
Вывод TDO находится в третьем состоянии, если не введено состояние TAP, при котором сдвигаются выводимые данные.
Порт F также выполняет функции интерфейса JTAG.
В режиме совместимости с ATmega103 порт F действует только на ввод. |
Порт G (PG4..PG0) |
Порт G – 5-разр. порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта G имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта G будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта G находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена.
Порт G также выполняет некоторые специальные функции ATmega128.
В режиме совместим9ости с ATmega103 данные выводы используются как стробирующие сигналы интерфейса внешней памяти, а также как вход генератора 32 кГц, а при действии сброса они асинхронно принимают следующие состояния: PG0 = 1, PG1 = 1 и PG2 = 0, даже если синхронизация не запущена. PG3 и PG4 – выводы генератора. |
RESET |
вход сброса. Если на этот вход приложить низкий уровень длительностью более минимально необходимой будет генерирован сброс независимо от работы синхронизации. Минимальная длительность внешнего импульса сброса приведена в таблице 19.
Действие импульса меньшей продолжительности не гарантирует генерацию сброса. |
XTAL1 |
вход инвертирующего усилителя генератора и вход внешней синхронизации. |
XTAL2 |
выход инвертирующего усилителя генератора. |
AVCC |
вход питания порта F и аналогово-цифрового преобразователя. Он должен быть внешне связан с VCC, даже если АЦП не используется. При использовании АЦП этот вывод связан с VCC через фильтр низких частот. |
AREF |
вход подключения источника опорного напряжения АЦП. |
PEN |
вход разрешения программирования для режима последовательного программирования через интерфейс SPI. Если во время действия сброса при подаче питания на этот вход подать низкий уровень, то микроконтроллер переходит в режим последовательного программирования через SPI. В рабочем режиме PEN не выполняет никаких функций. |
О примерах программ
В данный документ входят примеры простых программ, которые кратко показывают как использовать различные составные части микроконтроллера. При составлении данных примеров предполагалось, что специфические файлы заголовков прописаны перед компиляцией. Следует понимать, что не все поставщики Си-компиляторов включают определения бит в файлы заголовков, а обработка прерываний в Си зависит от компилятора. Для уточнения этих особенностей см. документацию на используемый Си-компилятор.