WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     || 2 | 3 | 4 |
-- [ Страница 1 ] --

А. В. Евстифеев С Е Р И Я Микроконтроллеры AVR семейства Classic фирмы ATMEL 3 е издание, стереотипное Москва Издательский дом «Додэка XXI» 2006 — 1 — МИРОВАЯ ЭЛЕКТРОНИКА УДК 004.312 (035.5) ББК

32.844.1я2 Е263 Евстифеев А.В.

Е263 Микроконтроллеры AVR семейства Classic фирмы ATMEL — 3 е изд., стер. — М.: Издательский дом «Додэка XXI», 2006. — 288 с.: ил. (Серия «Мировая электроника») ISBN 5 94120 127 3 Книга представляет собой справочное издание по применению микрокон троллеров AVR семейства Classic фирмы ATMEL. Рассмотрены особенности ар хитектуры, приведены основные электрические параметры. Подробно описаны система команд, периферия, а также способы программирования.

Предназначена для разработчиков радиоэлектронной аппаратуры, инжене ров, студентов технических вузов.

УДК 004.312 (035.5) ББК 32.844.1я2 Ответственный редактор В. Я. Симонов Научный редактор В. Б. Стешенко Художественный редактор М. С. Коршунова Выпускающий редактор Е. Е. Граблевская Корректоры С. И. Шишкина, Л. Р. Попова Графики А. Ю. Анненков, А. Н. Клочков Верстка Е. М. Илюшина Издательский дом «Додэка XXI» ОКП 95 105318 Москва, а/я Тел./факс: (095) 366 24 29, 366 81 E mail: books@dodeca.ru;

red@dodeca.ru ISBN 5 94120 127 3 © Издательский дом «Додэка XXI», ® Серия «Мировая электроника» ОГЛАВЛЕНИЕ ПРЕДИСЛОВИЕ...................................................... ГЛАВА 1. ЗНАКОМСТВО С СЕМЕЙСТВОМ CLASSIC..................... 1.1. ОБЩИЕ СВЕДЕНИЯ............................................. 1.2. ОТЛИЧИТЕЛЬНЫЕ ОСОБЕННОСТИ............................. 1.3. ХАРАКТЕРИСТИКИ ЯДРА МИКРОКОНТРОЛЛЕРА.............. 1.4. ХАРАКТЕРИСТИКИ ПОДСИСТЕМЫ ВВОДА/ВЫВОДА........... 1.5. ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА............................... 1.6. АРХИТЕКТУРА ЯДРА........................................... 1.7. ЦОКОЛЕВКА И ОПИСАНИЕ ВЫВОДОВ......................... ГЛАВА 2. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА CLASSIC...................................... 2.1. ОБЩИЕ СВЕДЕНИЯ............................................ 2.2. ОРГАНИЗАЦИЯ ПАМЯТИ...................................... 2.2.1. Память программ............................................ 2.2.2. Память данных.............................................. 2.2.2.1. Статическое ОЗУ........................................ 2.2.2.2. Регистры общего назначения.............................. 2.2.2.3. Регистры ввода/вывода................................... 2.2.2.4. Способы адресации памяти данных........................ 2.2.3. Энергонезависимая память данных............................ 2.2.3.1. Организация доступа..................................... 2.2.3.2. Меры предосторожности при работе....................... 2.3. СЧЕТЧИК КОМАНД И ВЫПОЛНЕНИЕ ПРОГРАММЫ............ 2.3.1. Функционирование конвейера................................ — 3 — СОДЕРЖАНИЕ 2.3.2. Задержки в конвейере........................................ 2.3.3. Счетчик команд............................................. 2.3.4. Kоманды типа «проверка/пропуск»............................ 2.3.5. Kоманды условного перехода.................................. 2.3.6. Kоманды безусловного перехода............................... 2.3.7. Kоманды вызова подпрограмм................................ 2.3.8. Kоманды возврата из подпрограмм............................. 2.4. СТЕК.......................................................... 2.4.1. Стек в микроконтроллере AT90S1200........................... 2.4.2. Стек в старших моделях микроконтроллеров.................... ГЛАВА 3. СИСТЕМА КОМАНД......................................... 3.1. ОБЩИЕ СВЕДЕНИЯ............................................ 3.2. ОПЕРАНДЫ.................................................... 3.3. ТИПЫ КОМАНД............................................... 3.3.1. Kоманды логических операций................................ 3.3.2. Kоманды арифметических операций и команды сдвига........... 3.3.3. Kоманды операций с битами.................................. 3.3.4. Kоманды пересылки данных.................................. 3.3.5. Kоманды передачи управления................................ 3.3.6. Kоманды управления системой................................ 3.4. СВОДНЫЕ ТАБЛИЦЫ КОМАНД................................ 3.5. ОПИСАНИЕ КОМАНД.......................................... ГЛАВА 4. УСТРОЙСТВО УПРАВЛЕНИЯ............................... 4.1. ОБЩИЕ СВЕДЕНИЯ........................................... 4.2. ТАКТОВЫЙ ГЕНЕРАТОР....................................... 4.3. РЕЖИМЫ ПОНИЖЕННОГО ЭНЕРГОПОТРЕБЛЕНИЯ........... 4.3.1. Режим Idle................................................. 4.3.2 Режим Power Down.......................................... 4.3.3 Режим Power Save............................................ 4.4. СБРОС........................................................ 4.4.1. Сброс по включении питания................................ 4.4.2. Аппаратный сброс.......................................... 4.4.3. Сброс от сторожевого таймера................................ 4.4.4. Сброс при снижении напряжения питания (Brown Out)......... 4.4.5. Управление схемой сброса................................... 4.5. ПРЕРЫВАНИЯ................................................ 4.5.1. Таблица векторов прерываний................................ 4.5.2. Обработка прерываний...................................... 4.5.3. Внешние прерывания;

регистры GIMSK и GIFR............... 4.5.4. Прерывания от таймеров;

регистры TIMSK и TIFR............. — 4 — СОДЕРЖАНИЕ ГЛАВА 5. ПОРТЫ ВВОДА/ВЫВОДА................................... 5.1. ОБЩИЕ СВЕДЕНИЯ........................................... 5.2. ОБРАЩЕНИЕ К ПОРТАМ ВВОДА/ВЫВОДА..................... 5.3. KОНФИГУРИРОВАНИЕ ПОРТОВ ВВОДА/ВЫВОДА............. ГЛАВА 6. ТАЙМЕРЫ................................................. 6.1. ОБЩИЕ СВЕДЕНИЯ........................................... 6.2. НАЗНАЧЕНИЕ ВЫВОДОВ ТАЙМЕРОВ/СЧЕТЧИКОВ............ 6.3. ТАЙМЕР/СЧЕТЧИК T0........................................ 6.4. ТАЙМЕР/СЧЕТЧИК T1........................................ 6.4.1. Выбор источника тактового сигнала........................... 6.4.2. Режим таймера............................................. 6.4.2.1. Функция захвата (Capture)............................... 6.4.2.2. Функция сравнения (Compare)........................... 6.4.3. Режим ШИМ............................................... 6.5. ТАЙМЕР/СЧЕТЧИК T2........................................ 6.5.1. Управление тактовым сигналом............................... 6.5.2. Режим таймера............................................. 6.5.3. Режим ШИМ............................................... 6.5.4. Асинхронный режим работы................................. 6.6. СТОРОЖЕВОЙ ТАЙМЕР....................................... ГЛАВА 7. АНАЛОГОВЫЙ КОМПАРАТОР.............................. 7.1. ОБЩИЕ СВЕДЕНИЯ........................................... 7.2. ФУНКЦИОНИРОВАНИЕ КОМПАРАТОРА...................... ГЛАВА 8. АНАЛОГО ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛЬ................ 8.1. ОБЩИЕ СВЕДЕНИЯ........................................... 8.2. ФУНКЦИОНИРОВАНИЕ МОДУЛЯ АЦП........................ 8.3. ПОВЫШЕНИЕ ТОЧНОСТИ ПРЕОБРАЗОВАНИЯ................ 8.4. ПАРАМЕТРЫ АЦП............................................ ГЛАВА 9. УНИВЕРСАЛЬНЫЙ АСИНХРОННЫЙ ПРИЕМОПЕРЕДАТЧИК.................................... 9.1. ОБЩИЕ СВЕДЕНИЯ........................................... 9.2. УПРАВЛЕНИЕ РАБОТОЙ UART................................ 9.3. ПЕРЕДАЧА ДАННЫХ.......................................... 9.4. ПРИЕМ ДАННЫХ............................................. 9.5. МУЛЬТИПРОЦЕССОРНЫЙ РЕЖИМ РАБОТЫ UART............ 9.6. СКОРОСТЬ ПРИЕМА/ПЕРЕДАЧИ.............................. — 5 — СОДЕРЖАНИЕ ГЛАВА 10. ПОСЛЕДОВАТЕЛЬНЫЙ ПЕРИФЕРИЙНЫЙ ИНТЕРФЕЙС SPI........................................ 10.1. ОБЩИЕ СВЕДЕНИЯ.......................................... 10.2. ФУНКЦИОНИРОВАНИЕ МОДУЛЯ SPI........................ 10.3. РЕЖИМЫ ПЕРЕДАЧИ ДАННЫХ.............................. 10.4. ИСПОЛЬЗОВАНИЕ ВЫВОДА F65.............................. ГЛАВА 11. ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ.......... 11.1. ОБЩИЕ СВЕДЕНИЯ.......................................... 11.2. ЗАЩИТА КОДА И ДАННЫХ................................... 11.3. KОНФИГУРАЦИОННЫЕ ЯЧЕЙКИ............................ 11.4. ИДЕНТИФИКАТОР........................................... 11.5. РЕЖИМ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ........... 11.5.1. Переключение в режим параллельного программирования...... 11.5.2. Стирание кристалла....................................... 11.5.3. Программирование FLASH памяти.......................... 11.5.4. Программирование EEPROM памяти........................ 11.5.5. Kонфигурирование микроконтроллера....................... 11.6. РЕЖИМЫ ПОСЛЕДОВАТЕЛЬНОГО ПРОГРАММИРОВАНИЯ... 11.6.1. Режим последовательного программирования при высоком напряжении (модели AT90S/LS2323 и AT90S/LS2343)................ 11.6.2. Программирование по последовательному каналу............. ПРИЛОЖЕНИЯ..................................................... Приложение I. Сводная таблица микроконтроллеров AVR семейства Classic................................................... Приложение II. Чертежи корпусов микроконтроллеров AVR семейства Classic................................................... Приложение III. Электрические параметры микроконтроллеров AVR семейства Classic................................................... ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ......................................... — 6 — ПРЕДИСЛОВИЕ Российские специалисты, занимающиеся разработкой электронной ап паратуры, несомненно, знакомы с продукцией фирмы «Atmel». Основан ная в 1984 г., фирма «Atmel Corp.» (США) на данный момент является од ним из признанных лидеров в области производства широкого спектра ми кроэлектронных компонентов: микросхем энергонезависимой памяти, микроконтроллеров общего назначения и микросхем программируемой логики.

Начиная с середины 90 х годов, фирма «Atmel» начала активно разви вать новое направление в своей деятельности — производство высокопро изводительных 8 разрядных RISC микроконтроллеров для встраиваемых приложений, объединенных общим названием AVR. Kнига, которую вы держите сейчас в руках, является первой из серии, посвященной этим ми кроконтроллерам.

За последние годы микроконтроллеры AVR приобрели большую попу лярность, привлекая разработчиков достаточно выгодным соотношением показателей «цена/быстродействие/энергопотребление», удобными ре жимами программирования, доступностью программно аппаратных средств поддержки и широкой номенклатурой выпускаемых кристаллов.

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

В рамках единой базовой архитектуры AVR микроконтроллеры под разделяются на три семейства:

— 7 — ПРЕДИСЛОВИЕ • Classic AVR — базовая линия микроконтроллеров;

• Mega AVR — микроконтроллеры для сложных приложений, требую щих большого объема памяти программ и данных;

• Tiny AVR — низкостоимостные микроконтроллеры в 8 выводном ис полнении.

Данная книга посвящена первому из них — семейству Classic. В соста ве этого семейства имеются микроконтроллеры с различным сочетанием периферийных узлов, различными объемами встроенной памяти и раз личным количеством выводов. Это дает разработчику возможность вы брать именно то, что ему нужно, и не переплачивать за неиспользуемые узлы. При этом все микроконтроллеры семейства поддерживают несколь ко режимов пониженного энергопотребления, имеют блок прерываний, сторожевой таймер и допускают программирование непосредственно в го товом устройстве через последовательный интерфейс SPI (к модели AT90C8534 последнее не относится).

В предлагаемой вашему вниманию книге представлена вся информа ция, необходимая для изучения микроконтроллеров AVR семейства Classic. Однако следует заметить, что справочником данная книга не явля ется, хотя и написана на основе документации, предоставленной фирмой «Atmel». Поэтому, прежде чем приступить к практическому использова нию рассматриваемых микроконтроллеров, настоятельно рекомендуется обратиться к официальной информации, расположенной на Web сайтах фирмы (www.atmel.com, www.atmel.ru).

— 8 — Глава 1. Знакомство с семейством CLASSIC 1.1. Общие сведения Микроконтроллеры этого семейства (впрочем, как и все микроконт роллеры AVR фирмы «Atmel») являются 8 разрядными микроконтроллера ми, предназначенными для встраиваемых приложений. Микроконтролле ры изготавливаются по малопотребляющей KМОП технологии, которая в сочетании с усовершенствованной RISC архитектурой позволяет достичь наилучшего соотношения показателей быстродействие/энергопотребле ние. Благодаря тому, что подавляющее большинство команд выполняется за один такт, быстродействие этих микроконтроллеров может достигать значения 1 MIPS (миллионов операций в секунду) на 1 МГц тактовой час тоты. В семейство Classic входят микроконтроллеры с различным сочета нием периферийных устройств, различными объемами встроенной памяти и различным количеством выводов. Такое разнообразие дает разработчику возможность сделать оптимальный выбор и использовать именно тот мик роконтроллер, который наилучшим образом подходит для его нужд.

1.2. Отличительные особенности Основные особенности микроконтроллеров данного семейства:

• возможность вычислений со скоростью до 1 MIPS/МГц;

• FLASH память программ объемом от 1 до 8 Kбайт (число циклов стирания/записи не менее 1000);

• память данных на основе статического ОЗУ (SRAM) объемом до байт;

• память данных на основе ЭСППЗУ (EEPROM) объемом от 64 до байт (число циклов стирания/записи не менее 100000);

— 9 — 1. Знакомство с семейством Classic • возможность защиты от чтения и модификации памяти программ и данных (в EEPROM);

• программирование в параллельном (с использованием программато ра) либо в последовательном (непосредственно в системе через по следовательный SPI интерфейс) режимах1;

• различные способы синхронизации: встроенный RC генератор, внешний сигнал синхронизации или внешний резонатор (пьезокера мический или кварцевый)2;

• наличие нескольких режимов пониженного энергопотребления.

1.3. Характеристики ядра контроллера Основными характеристиками центрального процессора микроконт роллеров рассматриваемого семейства являются:

• полностью статическая архитектура;

минимальная тактовая частота равна нулю;

• АЛУ подключено непосредственно к регистрам общего назначения;

• большинство команд выполняется за один машинный цикл;

• многоуровневая система прерываний;

поддержка очереди прерыва ний;

• от 3 до 16 источников прерываний3 (из них до 2 внешних);

• наличие программного стека4.

1.4. Характеристики подсистемы ввода/вывода Основными характеристиками подсистемы ввода/вывода являются:

• программное конфигурирование и выбор портов ввода/вывода;

• каждый вывод может быть запрограммирован как входной или как выходной независимо от других;

• входные буферы с триггером Шмитта на всех выводах;

• возможность подключения ко всем входам внутренних подтягивающих резисторов (сопротивление резисторов составляет 35…120 кОм);

• нагрузочная способность всех выходов составляет до 20 мА, что поз воляет непосредственно управлять светодиодными индикаторами.

Kроме AT90C8534;

эта модель допускает программирование только в параллельном режиме.

Зависит от конкретной модели микроконтроллера.

Зависит от конкретной модели микроконтроллера.

Kроме AT90S1200, в этой модели имеется 3 уровневый аппаратный стек.

— 10 — 1. Знакомство с семейством Classic 1.5. Периферийные устройства Микроконтроллеры семейства Classic обладают достаточно развитой периферией. Набор периферийных устройств, имеющихся в составе того или иного микроконтроллера, зависит от конкретной модели и может быть определен по сводной таблице Приложения 1. Перечислим все пери ферийные устройства, так или иначе встречающиеся в микроконтролле рах семейства:

• 8 разрядный таймер/счетчик с предделителем (таймер T0)1;

• 16 разрядный таймер/счетчик с предделителем (таймер T1);

• 8 разрядный таймер/счетчик с возможностью работы в асинхронном режиме (таймер T2);

• сторожевой таймер (WDT)1;

• одно или двухканальный 8…10 разрядный генератор сигнала с ши ротно импульсной модуляцией (ШИМ)2;

• одноканальный 8 разрядный генератор сигнала с ШИМ3;

• аналоговый компаратор;

• 10 разрядный АЦП (6 или 8 каналов);

• полнодуплексный универсальный асинхронный приемопередатчик (UART);

• последовательный синхронный интерфейс SPI.

1.6. Архитектура ядра Ядро микроконтроллеров AVR выполнено по усовершенствованной RISC (enhanced RISC) архитектуре (Рис. 1.1), в которой используется ряд ре шений, направленных на повышение быстродействия микроконтроллеров.

Арифметико логическое устройство (АЛУ), выполняющее все вычис ления, непосредственно подключено к 32 рабочим регистрам, объединен ным в регистровый файл. Благодаря этому АЛУ выполняет одну операцию (чтение содержимого регистров, выполнение операции и запись результа та обратно в регистровый файл) за один машинный цикл.

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

Присутствует во всех моделях.

Один из режимов работы таймера T1.

Один из режимов работы таймера T2.

— 11 — 1. Знакомство с семейством Classic Последовательный ПЗУ синхронный ПЗУ (FLASH) интерфейс SPI (EEPROM) Счетчик Регистры команд управления Регистр команд Таймеры Дешифратор 32 регистра команд общего АЦП назначения Аналоговый компаратор ОЗУ АЛУ UART Сторожевой Порты Модуль таймер (WDT) ввода/вывода прерываний Рис. 1.1. Архитектура ядра микроконтроллеров AVR Микроконтроллеры AVR построены по Гарвардской архитектуре, ко торая характеризуется раздельной памятью программ и данных, каждая из которых имеет собственные шины доступа к ним. Такая организация поз воляет одновременно работать как с памятью программ, так и с памятью данных. Разделение шин доступа (см. Рис. 1.1) позволяет использовать для каждого типа памяти шины данных различной разрядности, а также реа лизовать конвейеризацию. Kонвейеризация заключается в том, что во время исполнения текущей команды производится выборка из памяти и дешифрация кода следующей команды.

В отличие от RISC микроконтроллеров других фирм, в микроконт роллерах AVR используется 2 уровневый конвейер, а длительность ма шинного цикла составляет всего один период колебаний кварцевого ре зонатора. В результате они могут обеспечивать ту же производитель ность, что и RISC микроконтроллеры других фирм, при более низкой тактовой частоте.

— 12 — 1. Знакомство с семейством Classic 1.7. Цоколевка и описание выводов В семейство Classic входит в общей сложности 17 моделей микроконт роллеров. Все они выпускаются в корпусах различных типов, что позволя ет выбрать модель, наилучшим образом отвечающую требованиям по ком поновке. Все модели микроконтроллеров можно условно разделить на групп (модели, входящие в одну группу, имеют одинаковый набор пери ферийных устройств, но разные объемы памяти программ и данных):

• AT90S1200 (Рис. 1.2) имеет FLASH память программ объемом 1 Kбайт и EEPROM память данных объемом 64 байта. Kоличество контактов ввода/вывода равно 15;

• AT90S2313 (Рис. 1.3) имеет FLASH память программ объемом 2 Kбайт, EEPROM память данных объемом 128 байт и ОЗУ объемом 128 байт. Kоличество контактов ввода/вывода равно 15;

• AT90S2323/AT90LS2323, AT90S2343/AT90LS2343 (Рис. 1.4) имеют FLASH память программ объемом 2 Kбайт, EEPROM память данных объемом 128 байт и ОЗУ объемом 128 байт. Kоличество контактов вво да/вывода равно 3 (AT90xx2323) или 5 (AT90xx2343);

• AT90S2333/AT90LS2333, AT90S4433/AT90LS4433 (Рис. 1.5) имеют FLASH память программ объемом 2 или 4 Kбайт, EEPROM память данных объемом 128 или 256 байт и ОЗУ объемом 128 байт. Kоличе ство контактов ввода/вывода равно 20;

• AT90S4434/AT90LS4434, AT90S8535/AT90LS8535 (Рис. 1.6) имеют FLASH память программ объемом 4 или 8 Kбайт, EEPROM память данных объемом 256 или 512 байт и ОЗУ объемом 256 или 512 байт.

Kоличество контактов ввода/вывода равно 32;

• AT90S4414, AT90S8515 (Рис. 1.7) имеют FLASH память программ объемом 4 или 8 Kбайт, EEPROM память данных объемом 256 или 512 байт и ОЗУ объемом 256 или 512 байт. Kоличество контактов вво да/вывода равно 32;

• AT90C8534 (Рис. 1.8) имеют FLASH память программ объемом 8 Kбайт, EEPROM память данных объемом 512 байт и ОЗУ объемом 256 байт. Kоличество контактов ввода/вывода равно 15.

Для сравнения различных моделей вашему вниманию предлагается Табл. 1.1, в которой приводятся такие основные параметры микроконтрол леров, как объем памяти (программ и данных), количество контактов вво да/вывода, тип корпуса, диапазон рабочих частот и напряжение питания.

— 13 — 1. Знакомство с семейством Classic Полная информация по каждой модели приведена в Приложении I. Дополни тельно следует отметить, что все микроконтроллеры семейства Classic выпус каются как в коммерческом (диапазон рабочих температур 0...+70°C), так и в промышленном (диапазон рабочих температур –40...+85°C) исполнениях.

Таблица 1.1. Основные параметры микроконтроллеров AVR семейства Classic Память Память дан Kоличество Объем Напряжение Тактовая программ ных (EEP контактов Тип Обозначение ОЗУ питания частота (FLASH) ROM) ввода/ корпуса вывода [Kбайт] [байт] [байт] [В] [МГц] DIP 20, SOIC 20, AT90S1200 1 64 — 15 2.7…6.0 0… SSOP AT90S2313 2 128 128 15 2.7… 6.0 0…10 DIP 20, SOIC AT90S2323 2 128 128 3 4.0…6.0 0…10 DIP 8, SOIC AT90LS2323 2 128 128 3 2.7…6.0 0…4 DIP 8, SOIC AT90S2343 2 128 128 5 4.0…6.0 0…10 DIP 8, SOIC AT90LS2343 2 128 128 5 2.7…6.0 0…4 DIP 8, SOIC AT90S2333 2 128 128 20 4.0…6.0 0…8 DIP 28, TQFP AT90LS2333 2 128 128 20 2.7…6.0 0…4 DIP 28, TQFP AT90S4433 4 256 128 20 4.0…6.0 0…8 DIP 28, TQFP AT90LS4433 4 256 128 20 2.7…6.0 0…4 DIP 28, TQFP DIP 40, PLCC 44, AT90S4434 4 256 256 32 4.0…6.0 0… TQFP DIP 40, PLCC 44, AT90LS4434 4 256 256 32 2.7…6.0 0… TQFP DIP 40, PLCC 44, AT90S8535 8 512 512 32 4.0…6.0 0… TQFP DIP 40, PLCC 44, AT90LS8535 8 512 512 32 2.7…6.0 0… TQFP DIP 40, PLCC 44, AT90S4414 4 256 256 32 2.7…6.0 0… TQFP DIP 40, PLCC 44, AT90S8515 8 512 512 32 2.7…6.0 0… TQFP AT90C8534 8 512 256 15 3.3…6.0 0…1.5 VQFP В Табл. 1.2…1.8 для каждой группы микроконтроллеров приведены на звания выводов и указаны их функции (как основные, так и дополнитель ные). Kроме того, для каждого вывода в таблицах указан его тип (вход, вы ход, вход/выход, вывод питания).

В таблицах использованы следующие обозначения:

I — вход;

O — выход;

I/O — вход/выход;

P — выводы питания.

— 14 — 1. Знакомство с семейством Classic AT90S ————— RESET 1 20 VCC PD0 2 19 PB7 (SCK) PD1 3 18 PB6 (MISO) XTAL2 4 17 PB5 (MOSI) XTAL1 5 16 PB (INT0) PD2 6 15 PB PD3 7 14 PB (TO) PD4 8 13 PB1 (AIN1) PD5 9 12 PB0 (AIN0) GND 10 11 PD PDIP/SOIC/SSOP Рис. 1.2. Расположение выводов модели AT90S Таблица 1.2. Описание выводов модели AT90S Номер Тип Обозначение Описание вывода вывода XTAL1 5 I Вход инвертора генератора и вход внешнего тактового сигнала XTAL2 4 O Выход инвертора генератора ——— Вход сброса. При удержании на входе НИЗКОГО уровня —— RESET 1 I в течение 50 нс выполняется сброс устройства Порт B. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PB0 (AIN0) 12 I/O B0 (Положительный вход компаратора) PB1 (AIN1) 13 I/O B1 (Отрицательный вход компаратора) PB2 14 I/O B PB3 15 I/O B PB4 16 I/O B PB5 (MOSI) 17 I/O B5 (Вход данных при последовательном программировании (SPI)) PB6 (MISO) 18 I/O B6 (Выход данных при последовательном программировании (SPI)) B7 (Вход тактового сигнала при последовательном программировании PB7 (SCK) 19 I/O (SPI)) Порт D. 7 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PD0 2 I/O D PD1 3 I/O D PD2 (INT0) 6 I/O D2 (Вход внешнего прерывания) PD3 7 I/O D PD4 (T0) 8 I/O D4 (Вход внешнего тактового сигнала таймера/счетчика T0) PD5 9 I/O D PD6 11 I/O D GND 10 P Общий вывод VCC 20 P Вывод источника питания — 15 — 1. Знакомство с семейством Classic AT90S ————— RESET 1 20 VCC (RXD) PD0 2 19 PB7 (SCK) (TXD) PD1 3 18 PB6 (MISO) XTAL2 4 17 PB5 (MOSI) XTAL1 5 16 PB (INT0) PD2 6 15 PB3 (OC1) (INT1) PD3 7 14 PB (TO) PD4 8 13 PB1 (AIN1) (T1) PD5 9 12 PB0 (AIN0) GND 10 11 PD6 (ICP) PDIP/SOIC Рис. 1.3. Расположение выводов модели AT90S Таблица 1.3. Описание выводов модели AT90S Номер Тип Обозначение Описание вывода вывода XTAL1 5 I Вход инвертора генератора и вход внешнего тактового сигнала XTAL2 4 O Выход инвертора генератора ——— Вход сброса. При удержании на входе НИЗКОГО уровня в течение —— RESET 1 I 50 нс выполняется сброс устройства Порт B. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PB0 (AIN0) 12 I/O B0 (Положительный вход компаратора) PB1 (AIN1) 13 I/O B1 (Отрицательный вход компаратора) PB2 14 I/O B PB3 (OC1) 15 I/O B3 (Выход таймера/счетчика T1 (режимы сравнения, ШИМ)) PB4 16 I/O B PB5 (MOSI) 17 I/O B5 (Вход данных при последовательном программировании (SPI)) PB6 (MISO) 18 I/O B6 (Выход данных при последовательном программировании (SPI)) B7 (Вход тактового сигнала при последовательном программировании PB7 (SCK) 19 I/O (SPI)) Порт D. 7 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PD0 (RXD) 2 I/O D0 (Вход UART) PD1 (TXD) 3 I/O D1 (Выход UART) PD2 (INT0) 6 I/O D2 Вход внешнего прерывания PD3 (INT1) 7 I/O D3 (Вход внешнего прерывания) PD4 (T0) 8 I/O D4 (Вход внешнего тактового сигнала таймера/счетчика T0) PD5 (T1) 9 I/O D5 (Вход внешнего тактового сигнала таймера/счетчика T1) PD6 (ICP) 11 I/O D6 (Вход захвата таймера/счетчика T1 (режим захвата)) GND 10 P Общий вывод VCC 20 P Вывод источника питания — 16 — 1. Знакомство с семейством Classic AT90S2323 AT90S AT90LS2323 AT90LS RESET 1 8 VCC RESET 1 8 VCC XTAL1 2 7 PB2 (SCK/T0) (CLOCK) PB3 2 7 PB2 (SCK/T0) XTAL2 3 6 PB1 (MISO/INT0) PB4 3 6 PB1 (MISO/INT0) GND 4 5 PB0 (MOSI) GND 4 5 PB0 (MOSI) PDIP/SOIC PDIP/SOIC Рис. 1.4. Расположение выводов моделей AT90S/LS2323 и AT90S/LS Таблица 1.4. Описание выводов моделей AT90S/LS Номер Тип Обозначение Описание вывода вывода XTAL1 2 I Вход инвертора генератора и вход внешнего тактового сигнала XTAL2 3 O Выход инвертора генератора ——— Вход сброса. При удержании на входе НИЗКОГО уровня в течение 50 нс —— RESET 1 I выполняется сброс устройства Порт B. 3 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PB0 (MOSI) 5 I/O B0 (Вход данных при последовательном программировании (SPI)) PB1 B1 (Выход данных при последовательном программировании (SPI);

6 I/O (MISO/INT0) вход внешнего прерывания) PB2 B2 (Вход тактового сигнала при последовательном программировании 7 I/O (SCK/T0) (SPI);

вход внешнего тактового сигнала таймера/счетчика T0) GND 4 P Общий вывод VCC 8 P Вывод источника питания Таблица 1.5. Описание выводов моделей AT90S/LS Номер Тип Обозначение Описание вывода вывода ——— Вход сброса. При удержании на входе НИЗКОГО уровня в течение 50 нс —— RESET 1 I выполняется сброс устройства Порт B. 5 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PB0 (MOSI) 5 I/O B0 (Вход данных при последовательном программировании (SPI)) PB1 B1 (Выход данных при последовательном программировании (SPI);

6 I/O (MISO/INT0) вход внешнего прерывания) PB2 B2 (Вход тактового сигнала при последовательном программировании 7 I/O (SCK/T0) (SPI);

вход внешнего тактового сигнала таймера/счетчика T0) PB3 (CLOCK) 2 I/O B3 (Вход внешнего тактового сигнала) B4 (Вход тактового сигнала при последовательном программировании PB4 3 I/O (SPI);

вход внешнего тактового сигнала таймера/счетчика T0) GND 4 P Общий вывод VCC 8 P Вывод источника питания — 17 — 1. Знакомство с семейством Classic AT90S2333/AT90LS AT90S4433/AT90LS ————— RESET 1 28 PC5 (ADC5) Ключ (RXD) PD0 2 27 PC4 (ADC4) (TXD) PD1 3 26 PC3 (ADC3) (INT1) PD3 1 24 PC1 (ADC1) (INT0) PD2 4 25 PC2 (ADC2) (T0) PD4 2 23 PC0 (ADC0) (INT1) PD3 5 24 PC1 (ADC1) NC 3 22 NC (T0) PD4 6 23 PC0 (ADC0) VCC 4 21 AGND VCC 7 22 AGND GND 5 20 AREF GND 8 21 AREF NC 6 19 NC XTAL1 9 20 AVCC XTAL1 7 18 AVCC XTAL2 10 19 PB5 (SCK) XTAL2 8 17 PB5 (SCK) (T1) PD5 11 18 PB4 (MISO) (AIN0) PD6 12 17 PB3 (MOSI) (AIN1) PD7 13 16 PB2 (—— SS) (ICP) PB0 14 15 PB1 (OC1) DIP TQFP Вид сверху Рис. 1.5. Расположение выводов моделей AT90S/LS2333 и AT90S/LS Таблица 1.6. Описание выводов моделей AT90S/LS2333 и AT90S/LS Номер вывода Тип Обозначение Описание вывода DIP TQFP XTAL1 9 7 I Вход инвертора генератора и вход внешнего тактового сигнала XTAL2 10 8 O Выход инвертора генератора ——— Вход сброса. При удержании на входе НИЗКОГО уровня в течение —— RESET 1 29 I 50 нс выполняется сброс устройства Порт B. 6 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PB0 (ICP) 14 12 I/O B0 (Вход захвата таймера/счетчика T1 (режим захвата)) PB1 (OC1) 15 13 I/O B1 (Выход таймера/счетчика T1 (режимы сравнения, ШИМ)) — — PB2 (SS) 16 14 I/O B2 (Выбор Slave устройства на шине SPI) PB3 (MOSI) 17 15 I/O B3 (Выход (Master) или вход (Slave) данных модуля SPI) PB4 (MISO) 18 16 I/O B4 (Вход (Master) или выход (Slave) данных модуля SPI) PB5 (SCK) 19 17 I/O B5 (Выход (Master) или вход (Slave) тактового сигнала модуля SPI) — 18 — PD2 (INT0) PD1 (TXD) PD RESET PC5 (ADC5) PC4 (ADC4) PC3 (ADC3) PC2 (ADC2) (T1) PD (SS) PB (ICP) PB (OC1) PB (AIN0) PD (AIN1) PD (MOS1) PB (MOS0) PB 1. Знакомство с семейством Classic Таблица 1.6 (окончание) Номер вывода Тип Обозначение Описание вывода DIP TQFP Порт C. 6 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PC0 (ADC0) 23 23 I/O C0 (Вход 0 АЦП;

отключаемый входной буфер) PC1 (ADC1) 24 24 I/O C1 (Вход 1 АЦП;

отключаемый входной буфер) PC2 (ADC2) 25 25 I/O C2 (Вход 2 АЦП;

отключаемый входной буфер) PC3 (ADC3) 26 26 I/O C3 (Вход 3 АЦП;

отключаемый входной буфер) PC4 (ADC4) 27 27 I/O C4 (Вход 4 АЦП;

отключаемый входной буфер) PC5 (ADC5) 28 28 I/O C5 (Вход 5 АЦП;

отключаемый входной буфер) Порт D. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PD0 (RXD) 2 30 I/O D0 (Вход UART) PD1 (TXD) 3 31 I/O D1 (Выход UART) PD2 (INT0) 4 32 I/O D2 (Вход 0 внешнего прерывания) PD3 (INT1) 5 1 I/O D3 (Вход 1 внешнего прерывания) PD4 (T0) 6 2 I/O D4 (Вход внешнего тактового сигнала таймера/счетчика T0) PD5 (T1) 11 9 I/O D5 (Вход внешнего тактового сигнала таймера/счетчика T1) PD6 (AIN0) 12 10 I/O D6 (Положительный вход компаратора;

отключаемый входной буфер) PD7 (AIN1) 13 11 I/O D7 (Отрицательный вход компаратора;

отключаемый входной буфер) AREF 21 20 P Вход опорного напряжения для АЦП AGND 22 21 P Общий вывод (аналоговый) AVCC 20 18 P Вывод источника питания АЦП GND 8 5 P Общий вывод VCC 7 4 P Вывод источника питания — 19 — 1. Знакомство с семейством Classic AT90S44334/AT90LS AT90S8535/AT90LS (T0) PB0 1 40 PA0 (ADC0) (T1) PB1 2 39 PA1 (ADC1) Ключ (AIN0) PB2 3 38 PA2 (ADC2) (AIN1) PB3 4 37 PA3 (ADC3) (—— 5 36 PA4 (ADC4) SS) PB (MOSI) PB5 7 39 PA4 (ADC4) (MOSI) PB5 6 35 PA5 (ADC5) (MISO) PB6 8 38 PA5 (ADC5) (MISO) PB6 7 34 PA6 (ADC6) (SCK) PB7 9 37 PA6 (ADC6) (SCK) PB7 8 33 PA7 (ADC7) ————— ————— RESET 10 36 PA7 (ADC7) RESET 9 32 AREF VCC 11 35 AREF VCC 10 31 AGND GND 12 34 AGND GND 11 30 AVCC XTAL2 13 33 AVCC XTAL2 12 29 PC7 (TOSC2) XTAL1 14 32 PC7 (TOSC2) XTAL1 13 28 PC6 (TOSC1) (RXD) PD0 15 31 PC6 (TOSC1) (RXD) PD0 14 27 PC (TXD) PD1 16 30 PC (TXD) PD1 15 26 PC (INT0) PD2 17 29 PC (INT0) PD2 16 25 PC (INT1) PD3 17 24 PC (OC1B) PD4 18 23 PC (OC1A) PD5 19 22 PC (ICP) PD6 20 21 PD PDIP PLCC Ключ (MOSI) PB5 1 33 PA4 (ADC4) (MISO) PB6 2 32 PA5 (ADC5) (SCK) PB7 3 31 PA6 (ADC6) ————— RESET 4 30 PA7 (ADC7) VCC 5 29 AREF GND 6 28 AGND XTAL2 7 27 AVCC XTAL1 8 26 PC7 (TOSC2) (RXD) PD0 9 25 PC6 (TOSC1) (TXD) PD1 10 24 PC (INT0) PD2 11 23 PC TQFP Рис. 1.6. Расположение выводов моделей AT90S/LS4434 и AT90S/LS — 20 — —— CC PB4 (SS) PB3 (AIN1) PB2 (AIN0) PB1 (T1) PB0 (T0) GND V PA0 (ADC0) PA1 (ADC1) PA2 (ADC2) PA3 (ADC3) CC V PC PC PC PC GND (ICP) PD (OC2) PD (INT1) PD (OC1A) PD (OC1B) PD —— CC PB4 (SS) PB3 (AIN1) PB2 (AIN0) PB1 (T1) PB0 (T0) GND V PA0 (ADC0) PA1 (ADC1) PA2 (ADC2) PA3 (ADC3) CC V PC PC PC PC GND (ICP) PD (OC2) PD (INT1) PD (OC1A) PD (OC1B) PD 1. Знакомство с семейством Classic Таблица 1.7. Описание выводов моделей AT90S/LS4434 и AT90S/LS Номер вывода Тип Обозначение Описание вывода DIP PLCC TQFP Вход инвертора генератора и вход внешнего XTAL1 13 14 8 I тактового сигнала XTAL2 12 13 7 O Выход инвертора генератора ——— Вход сброса. При удержании на входе НИЗКОГО уровня —— RESET 1 10 4 I в течение 50 нс выполняется сброс устройства Порт A. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PA0 (ADC0) 40 43 37 I/O A0 (Вход 0 АЦП;

отключаемый входной буфер) PA1 (ADC1) 39 42 36 I/O A1 (Вход 1 АЦП;

отключаемый входной буфер) PA2 (ADC2) 38 41 35 I/O A2 (Вход 2 АЦП;

отключаемый входной буфер) PA3 (ADC3) 37 40 34 I/O A3 (Вход 3 АЦП;

отключаемый входной буфер) PA4 (ADC4) 36 39 33 I/O A4 (Вход 4 АЦП;

отключаемый входной буфер) PA5 (ADC5) 35 38 32 I/O A5 (Вход 5 АЦП;

отключаемый входной буфер) PA6 (ADC6) 34 37 31 I/O A6 (Вход 6 АЦП;

отключаемый входной буфер) PA7 (ADC7) 33 36 30 I/O A7 (Вход 7 АЦП;

отключаемый входной буфер) Порт B. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PB0 (T0) 1 2 40 I/O B0 (Вход внешнего тактового сигнала таймера/счетчика T0) PB1 (T1) 2 3 41 I/O B1 (Вход внешнего тактового сигнала таймера/счетчика T1) B2 (Положительный вход компаратора;

отключаемый входной PB2 (AIN0) 3 4 42 I/O буфер) B3 (Отрицательный вход компаратора;

отключаемый PB3 (AIN1) 4 5 43 I/O входной буфер) — — PB4 (SS) 5 6 44 I/O B4 (Выбор Slave устройства на шине SPI) PB5 (MOSI) 6 7 1 I/O B5 (Выход (Master) или вход (Slave) данных модуля SPI) PB6 (MISO) 7 8 2 I/O B6 (Вход (Master) или выход (Slave) данных модуля SPI) B7 (Выход (Master) или вход (Slave) тактового сигнала модуля PB7 (SCK) 8 9 3 I/O SPI) Порт C. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PC0 22 25 19 I/O С PC1 23 26 20 I/O С PC2 24 27 21 I/O С PC3 25 28 22 I/O С PC4 26 29 23 I/O С PC5 27 30 24 I/O С PC6 (TOSC1) 28 31 25 I/O С6 (Вход для подключения резонатора к таймеру/счетчику T2) PC7 (TOSC2) 29 32 26 I/O С7 (Выход для подключения резонатора к таймеру/счетчику T2) — 21 — 1. Знакомство с семейством Classic Таблица 1.7 (окончание) Номер вывода Тип Обозначение Описание вывода DIP PLCC TQFP Порт D. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PD0 (RXD) 14 15 9 I/O D0 (Вход UART) PD1 (TXD) 15 16 10 I/O D1 (Выход UART) PD2 (INT0) 16 17 11 I/O D2 (Вход внешнего прерывания) PD3 (INT1) 17 18 12 I/O D3 (Вход внешнего прерывания) D4 (Выход B таймера/счетчика T1 (режимы сравнения, PD4 (OC1B) 18 19 13 I/O ШИМ)) D5 (Выход A таймера/счетчика T1 (режимы сравнения, PD5 (OC1A) 19 20 14 I/O ШИМ)) PD6 (ICP) 20 21 15 I/O D6 (Вход захвата таймера/счетчика T1 (режим захвата)) D7 (Выход таймера/счетчика T2 (режимы сравнения, PD7 (OC2) 21 22 16 I/O ШИМ)) AREF 32 35 29 P Вход опорного напряжения для АЦП AGND 31 34 28 P Общий вывод (аналоговый) AVCC 30 33 27 P Вывод источника питания АЦП GND 11 1, 12, 24 6, 18, 39 P Общий вывод VCC 10 11, 23, 44 5, 17, 38 P Вывод источника питания Таблица 1.8. Описание выводов моделей AT90S4414 и AT90S Номер вывода Тип Обозначение Описание вывода DIP PLCC TQFP Вход инвертора генератора и вход внешнего тактового XTAL1 19 21 15 I сигнала XTAL2 18 20 14 O Выход инвертора генератора ——— Вход сброса. При удержании на входе НИЗКОГО уровня —— RESET 9 10 4 I в течение 50 нс выполняется сброс устройства Порт A. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PA0 (AD0) 39 43 37 I/O A0 (Мультиплексная ША/ШД для внешнего ОЗУ) PA1 (AD1) 38 42 36 I/O A1 (Мультиплексная ША/ШД для внешнего ОЗУ) PA2 (AD2) 37 41 35 I/O A2 (Мультиплексная ША/ШД для внешнего ОЗУ) PA3 (AD3) 36 40 34 I/O A3 (Мультиплексная ША/ШД для внешнего ОЗУ) PA4 (AD4) 35 39 33 I/O A4 (Мультиплексная ША/ШД для внешнего ОЗУ) PA5 (AD5) 34 38 32 I/O A5 (Мультиплексная ША/ШД для внешнего ОЗУ) PA6 (AD6) 33 37 31 I/O A6 (Мультиплексная ША/ШД для внешнего ОЗУ) PA7 (AD7) 32 36 30 I/O A7 (Мультиплексная ША/ШД для внешнего ОЗУ) — 22 — 1. Знакомство с семейством Classic AT90S4414/AT90S (T0) PB0 1 40 VCC (T1) PB1 2 39 PA0 (AD0) Ключ (AIN0) PB2 3 38 PA1 (AD1) (AIN1) PB3 4 37 PA2 (AD2) (—— 5 36 PA3 (AD3) SS) PB (MOSI) PB5 7 39 PA4 (AD4) (MOSI) PB5 6 35 PA4 (AD4) (MISO) PB6 8 38 PA5 (AD5) (MISO) PB6 7 34 PA5 (AD5) (SCK) PB7 9 37 PA6 (AD6) (SCK) PB7 8 33 PA6 (AD6) ————— ————— RESET 10 36 PA7 (AD7) RESET 9 32 PA7 (AD7) (RXD) PD0 11 35 ICP (RXD) PD0 10 31 ICP NC 12 34 NC (TXD) PD1 11 30 ALE (TXD) PD1 13 33 ALE (INT0) PD2 12 29 OC1B (INT0) PD2 14 32 OC1B (INT1) PD3 13 28 PC7 (A15) (INT1) PD3 15 31 PC7 (A15) PD4 14 27 PC6 (A14) PD4 16 30 PC6 (A14) (OC1A) PD5 15 26 PC5 (A13) (OC1A) PD5 17 29 PC5 (A13) (—— 16 25 PC4 (A12) WR) PD (—— 17 24 PC3 (A11) RD) PD XTAL2 18 23 PC2 (A10) XTAL1 19 22 PC1 (A9) GND 20 21 PC0 (A8) PDIP PLCC Ключ (MOSI) PB5 1 33 PA4 (AD4) (MISO) PB6 2 32 PA5 (AD5) (SCK) PB7 3 31 PA6 (AD6) ————— RESET 4 30 PA7 (AD7) (RXD) PD0 5 29 ICP NC 6 28 NC (TXD) PD1 7 27 ALE (INT0) PD2 8 26 OC1B (INT1) PD3 9 25 PC7 (A15) PD4 10 24 PC6 (A14) (OC1A) PD5 11 23 PC5 (A13) TQFP Рис. 1.7. Расположение выводов моделей AT90S4414 и AT90S — 23 — —— CC PB4 (SS) PB3 (AIN1) PB2 (AIN0) PB1 (T1) PB0 (T0) NC V PA0 (AD0) PA1 (AD1) PA2 (AD2) PA3 (AD3) NC GND XTAL XTAL (A8) PC (A9) PC — — (RD) PD (WR) PD (A10) PC (A11) PC (A12) PC —— CC PB4 (SS) PB3 (AIN1) PB2 (AIN0) PB1 (T1) PB0 (T0) NC V PA0 (AD0) PA1 (AD1) PA2 (AD2) PA3 (AD3) NC GND XTAL XTAL (A8) PC (A9) PC — — (RD) PD (WR) PD (A10) PC (A11) PC (A12) PC 1. Знакомство с семейством Classic Таблица 1.8 (окончание) Номер вывода Тип Обозначение Описание вывода DIP PLCC TQFP Порт B. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PB0 (T0) 1 2 40 I/O B0 (Вход внешнего тактового сигнала таймера/счетчика T0) PB1 (T1) 2 3 41 I/O B1 (Вход внешнего тактового сигнала таймера/счетчика T1) PB2 (AIN0) 3 4 42 I/O B2 (Положительный вход компаратора) PB3 (AIN1) 4 5 43 I/O B3 (Отрицательный вывод компаратора) — — PB4 (SS) 5 6 44 I/O B4 (Выбор Slave устройства на шине SPI) PB5 (MOSI) 6 7 1 I/O B5 (Выход (Master) или вход (Slave) данных модуля SPI) PB6 (MISO) 7 8 2 I/O B6 (Вход (Master) или выход (Slave) данных модуля SPI) B7 (Выход (Master) или вход (Slave) тактового сигнала PB7 (SCK) 8 9 3 I/O модуля SPI) Порт C. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PC0 (A8) 21 24 18 I/O C0 (ША для внешнего ОЗУ) PC1 (A9) 22 25 19 I/O C1 (ША для внешнего ОЗУ) PC2 (A10) 23 26 20 I/O C2 (ША для внешнего ОЗУ) PC3 (A11) 24 27 21 I/O C3 (ША для внешнего ОЗУ) PC4 (A12) 25 28 22 I/O C4 (ША для внешнего ОЗУ) PC5 (A13) 26 29 23 I/O C5 (ША для внешнего ОЗУ) PC6 (A14) 27 30 24 I/O C6 (ША для внешнего ОЗУ) PC7 (A15) 28 31 25 I/O C7 (ША для внешнего ОЗУ) Порт D. 8 разрядный двунаправленный порт ввода/вывода с внутренними подтягивающими резисторами PD0 (RXD) 10 11 5 I/O D0 (Вход UART) PD1 (TXD) 11 13 7 I/O D1 (Выход UART) PD2 (INT0) 12 14 8 I/O D2 (Вход 0 внешнего прерывания) PD3 (INT1) 13 15 9 I/O D3 (Вход 1 внешнего прерывания) PD4 14 16 10 I/O D D5 (Выход A таймера/счетчика T1 (режимы сравнения, PD5 (OC1A) 15 17 11 I/O ШИМ)) —— PD6 (WR) 16 18 12 I/O D6 (Строб записи во внешнее ОЗУ) —— PD7 (RD) 17 19 13 I/O D7 (Строб чтения во внешнее ОЗУ) OC1B 32 32 26 O Выход B таймера/счетчика T1 (режимы сравнения, ШИМ) ICP 31 35 29 I Вход захвата таймера/счетчика T1 (режим захвата) ALE 30 33 27 O Строб адреса внешнего ОЗУ GND 20 22 16 P Общий вывод VCC 40 44 38 P Вывод источника питания 1, 12, 6, 17, NC — — Не используются 23, 34 28, — 24 — 1. Знакомство с семейством Classic AT90C Ключ ADIN0 1 36 NC NC 2 35 INT NC 3 34 INT NC 4 33 PA NC 5 32 NC NC 6 31 GND NC 7 30 NC NC 8 29 NC NC 9 28 NC NC 10 27 NC AGND 11 26 NC NC 12 25 NC VQFP Рис. 1.8. Расположение выводов модели AT90C Таблица 1.9. Описание выводов модели AT90C Номер Тип Обозначение Описание вывода вывода XTAL1 24 I Вход инвертора генератора и вход внешнего тактового сигнала XTAL2 23 O Выход инвертора генератора ——— Вход сброса. При удержании на входе НИЗКОГО уровня в течение —— RESET 20 I 50 нс выполняется сброс устройства Порт A. 7 разрядный однонаправленный порт вывода PA0 47 O A PA1 46 O A PA2 45 O A PA3 44 O A PA4 39 O A PA5 38 O A PA6 33 O A ADIN0 1 I Вход 0 АЦП ADIN1 13 I Вход 1 АЦП ADIN2 14 I Вход 2 АЦП ADIN3 15 I Вход 3 АЦП ADIN4 16 I Вход 4 АЦП ADIN5 17 I Вход 5 АЦП — 25 — NC PA PA PA PA NC NC NC NC PA PA NC CC CC NC V PEN ——— AV XTAL XTAL ADIN ADIN ADIN ADIN ADIN RESET ————— 1. Знакомство с семейством Classic Таблица 1.9 (окончание) Номер Тип Обозначение Описание вывода вывода INT0 35 I Вход 0 внешнего прерывания INT1 34 I Вход 1 внешнего прерывания ——— PEN 21 I Вход разрешения программирования AGND 11 P Общий вывод (аналоговый) AVCC 18 P Вывод источника питания АЦП GND 31 P Общий вывод VCC 22 P Вывод источника питания 2…10, 12, 19, 25…30, NC — Не используются 31, 36, 37, 40…43, Глава 2. Архитектура микроконтроллеров семейства CLASSIC 2.1. Общие сведения Микроконтроллеры AVR семейства Classic являются 8 разрядными микроконтроллерами с RISC архитектурой. Они имеют электрически стираемую память программ (FLASH) и данных (EEPROM), а также раз нообразные периферийные устройства. Состав этих устройств меняется от модели к модели, более того, одно и то же устройство в разных моделях ис пользует различные ресурсы микроконтроллера (в частности, различные выводы). Разумеется, существует ряд периферийных устройств, присутст вующих во всех микроконтроллерах семейства: сторожевой таймер, 8 раз рядный таймер/счетчик реального времени (таймер T0) и, естественно, порты ввода/вывода.

Структурная схема микроконтроллера AT90S1200 приведена на Рис. 2.1.

Его отличительные особенности:

• 2 порта ввода/вывода: B (8 разрядный) и D (7 разрядный);

• 3 уровневый аппаратный стек;

• встроенный тактовый RC генератор;

• аналоговый компаратор;

• возможность подключения внешнего кварцевого резонатора.

Структурная схема микроконтроллера AT90S2313 приведена на Рис. 2.2.

Его отличительные особенности:

• 2 порта ввода/вывода: B (8 разрядный) и D (7 разрядный);

• встроенный тактовый кварцевый генератор;

• 16 разрядный таймер/счетчик (таймер T1);

• аналоговый компаратор;

• универсальный асинхронный приемопередатчик — UART.

— 27 — 2. Архитектура микроконтроллеров семейства Classic VCC ————— RESET XTAL1 XTAL 8–разрядная шина данных Счетчик Указатель команд стека Встроенный Генератор генератор FLASH–память Аппаратный программ стек Сторожевой Синхронизатор таймер Регистры Регистр общего команд назначения Регистр управления Z Дешифратор команд Таймер/ счетчик АЛУ Шина управления Модуль прерываний Регистр состояния Узел SPI программирования EEPROM Регистр данных Регистр направления Регистр данных Регистр направления PORTB PORTB PORTD PORTD Драйверы PORTB Драйверы PORTD PB0…PB7 PD0…PD Рис. 2.1. Структурная схема микроконтроллера AT90S — 28 — компаратор Аналоговый 2. Архитектура микроконтроллеров семейства Classic VCC ————— XTAL1 XTAL2 RESET 8–разрядная шина данных Счетчик Указатель команд стека Встроенный Генератор генератор FLASH–память ОЗУ программ Сторожевой Синхронизатор Регистры таймер общего Регистр назначения команд Регистр X управления Y Таймеры/ Дешифратор Z счетчики команд Модуль Шина АЛУ прерываний управления EEPROM Регистр состояния Узел SPI UART программирования Регистр данных Регистр направления Регистр данных Регистр направления PORTB PORTB PORTD PORTD Драйверы PORTB Драйверы PORTD PB0…PB7 PD0…PD Рис. 2.2. Структурная схема микроконтроллера AT90S — 29 — компаратор Аналоговый 2. Архитектура микроконтроллеров семейства Classic Структурная схема микроконтроллеров AT90S2323/AT90LS2323, AT90S2343/AT90LS2343 приведена на Рис. 2.3. Их отличительные особен ности:

• 1 порт ввода/вывода: 3 разрядный для AT90S/LS2323 и 5 разрядный для AT90S/LS2343;

• встроенный тактовый кварцевый генератор (AT90S/LS2323);

• встроенный тактовый RC генератор (AT90S/LS2343).

Структурная схема микроконтроллеров AT90S2333/AT90LS2333, AT90S4433/AT90LS4433 приведена на Рис. 2.4. Их отличительные особен ности:

• 3 порта ввода/вывода: порт B (6 разрядный), порт C (6 разрядный) и порт D (8 разрядный);

• встроенный тактовый кварцевый генератор;

• 16 разрядный таймер/счетчик (таймер T1);

• аналоговый компаратор;

• 6 канальный АЦП;

• SPI интерфейс;

• UART.

Структурная схема микроконтроллеров AT90S4434/AT90LS4434, AT90S8535/AT90LS8535 приведена на Рис. 2.5. Их отличительные особен ности:

• 4 порта ввода/вывода: порт A (8 разрядный), порт B (8 разрядный), порт C (8 разрядный) и порт D (8 разрядный);

• встроенный тактовый кварцевый генератор;

• 16 разрядный таймер/счетчик (таймер T1);

• 8 разрядный таймер/счетчик реального времени (таймер T2) • аналоговый компаратор;

• 8 канальный АЦП;

• SPI интерфейс;

• UART.

Структурная схема микроконтроллеров AT90S4414 и AT90S8515 приве дена на Рис. 2.6. Их отличительные особенности:

• 4 порта ввода/вывода: порт A (8 разрядный), порт B (8 разрядный), порт C (8 разрядный) и порт D (8 разрядный);

• встроенный тактовый кварцевый генератор;

• 16 разрядный таймер/счетчик (таймер T1);

• аналоговый компаратор;

• SPI интерфейс;

• UART.

— 30 — 2. Архитектура микроконтроллеров семейства Classic 8–разрядная шина данных VCC Счетчик Указатель команд стека Встроенный генератор FLASH–память ОЗУ программ Сторожевой Синхрони– ————— RESET Регистры таймер затор общего Регистр назначения команд Регистр X управления Y Таймер/ Дешифратор Z счетчик команд Модуль Шина АЛУ прерываний управления Узел Регистр программирования EEPROM состояния SPI Регистр данных Регистр направления Генератор PORTB PORTB Драйверы PORTB AT90S/LS PB0…PB Рис. 2.3. Структурная схема микроконтроллеров AT90S2323/AT90LS2323, AT90S2343/AT90LS — 31 — 2. Архитектура микроконтроллеров семейства Classic PC0…PC VCC Драйверы PORTC Регистр данных Регистр направления PORTC PORTC 8–разрядная шина данных AVCC Аналоговый АЦП AGND мультиплексор AREF XTAL Счетчик Указатель Встроенный Генератор команд стека генератор XTAL ОЗУ Сторожевой Синхрони– ————— FLASH–память RESET таймер затор программ Регистры общего Регистр Регистр назначения управления команд X Таймеры/ Y счетчики Z Дешифратор команд Модуль АЛУ Шина прерываний управления Узел Регистр EEPROM программирования состояния Аналоговый SPI UART компаратор Регистр данных Регистр направления Регистр данных Регистр направления PORTB PORTB PORTD PORTD Драйверы PORTB Драйверы PORTD PB0…PB5 PD0…PD Рис. 2.4. Структурная схема микроконтроллеров AT90S2333/AT90LS2333, AT90S4433/AT90LS — 32 — 2. Архитектура микроконтроллеров семейства Classic PA0…PA7 PC0…PC VCC Драйверы PORTA Драйверы PORTC Регистр данных Регистр направ– Регистр данных Регистр направ– PORTA ления PORTA PORTC ления PORTC 8–разрядная AVCC шина данных Аналоговый АЦП AGND мультиплексор AREF Встроенный Генератор Счетчик Указатель генератор XTAL команд стека Генератор Сторожевой таймер FLASH–память ОЗУ XTAL программ Синхрони– ————— Регистр RESET Регистры затор управления общего Регистр назначения команд X Таймеры/ счетчики Y Z Дешифратор Модуль команд прерываний АЛУ Шина управления EEPROM Узел Регистр программирования состояния Аналоговый компаратор SPI UART Регистр данных Регистр направления Регистр данных Регистр направления PORTB PORTB PORTD PORTD Драйверы PORTB Драйверы PORTD PB0…PB7 PD0…PD Рис. 2.5. Структурная схема микроконтроллеров AT90S4434/AT90LS4434, AT90S8535/AT90LS — 33 — 2. Архитектура микроконтроллеров семейства Classic PA0…PA7 PC0…PC VCC Драйверы PORTA Драйверы PORTC Регистр данных Регистр направ– Регистр данных Регистр направ– PORTA ления PORTA PORTC ления PORTC 8–разрядная шина данных Счетчик Указатель XTAL команд стека Встроенный Генератор генератор FLASH–память ОЗУ XTAL программ Сторожевой Синхрони– ————— RESET Регистры таймер затор общего Регистр назначения ALE команд Регистр X управления Y Таймеры/ Дешифратор Z счетчики команд Модуль Шина ICP АЛУ прерываний управления Узел Регистр EEPROM программирования состояния Аналоговый SPI UART компаратор Регистр данных Регистр направления Регистр данных Регистр направления PORTB PORTB PORTD PORTD Драйверы PORTB Драйверы PORTD PB0…PB7 PD0…PD Рис. 2.6. Структурная схема микроконтроллеров AT90S4414 и AT90S — 34 — 2. Архитектура микроконтроллеров семейства Classic Структурная схема микроконтроллера AT90C8534 приведена на Рис. 2.7.

В отличие от других микроконтроллеров семейства в AT90C8534 имеются один цифровой выходной порт и один аналоговый входной порт. Благодаря такой структуре данный микроконтроллер удобно использовать в интеллек туальных зарядных устройствах. Его отличительные особенности:

PA0…PA INT0 INT Драйверы PORTA Регистр данных Регистр направления Внешние PORTA PORTA прерывания 8–разрядная шина данных AVCC ADIN Аналоговый АЦП мультиплексор ADIN XTAL AGND Генератор Счетчик Указатель команд стека XTAL Синхрони– ————— FLASH–память ОЗУ RESET затор программ VCC Регистры общего Регистр назначения команд Регистр X управления Y Таймеры/ Дешифратор Z счетчики команд Модуль Шина АЛУ прерываний управления Узел Регистр EEPROM программирования состояния Рис. 2.7. Структурная схема микроконтроллера AT90C — 35 — … 2. Архитектура микроконтроллеров семейства Classic • 1 порт вывода: порт A (7 разрядный);

• 2 входа для внешних прерываний;

• встроенный тактовый кварцевый генератор;

• 16 разрядный таймер/счетчик (таймер T1);

• 6 канальный АЦП.

2.2. Организация памяти Организация памяти микроконтроллеров AVR семейства Classic вы полнена по Гарвардской архитектуре, в которой разделены не только ад ресные пространства памяти программ и памяти данных, но также и ши ны доступа к ним. Причем память данных состоит из трех областей: реги стровая память, статическое ОЗУ и память на основе EEPROM. В связи с тем, что регистровая память находится в адресном пространстве ОЗУ, об этих двух областях памяти обычно говорят как об одной. Kаждая из обла стей (ОЗУ и EEPROM) расположена в своем адресном пространстве.

Заметим, что модель AT90S1200 не имеет внутреннего ОЗУ (хотя реги стровая память, естественно, присутствует). Также несколько особняком стоят микроконтроллеры AT90S4414 и AT90S8515, которые имеют воз можность подключения внешнего ОЗУ.

Обобщенная карта памяти микроконтроллеров AVR семейства Classic приведена на Рис. 2.8.

Следует заметить, что:

1) поскольку микроконтроллеры AVR имеют 16 разрядную систе му команд, объем памяти программ на рисунке указан не в байтах, а в 16 разрядных словах;

2) символ «$» перед числом означает, что это число записано в шест надцатеричной системе счисления.

2.2.1. Память программ Память программ предназначена для хранения команд, управляющих функционированием микроконтроллера. В памяти программ хранятся также различные константы, не меняющиеся во время работы программы. Память программ в микроконтроллерах семейства Classic представляет собой элект рически стираемое ППЗУ (FLASH ПЗУ). Поскольку все команды занимают в памяти 16 бит (некоторые — 32 бита), память программ имеет 16 разрядную организацию. Соответственно, объем памяти составляет от 512 16 разрядных слов для модели AT90S1200 до 4096 слов для старших моделей.

— 36 — 2. Архитектура микроконтроллеров семейства Classic Память Память Память программ данных данных $000 $0000 $ 32 регистра общего FLASH назначения $001F EEPROM $ 64 регистра E_END ввода/вывода F_END $005F $ Внутреннее статическое ОЗУ S_END S_END+ Внешнее статическое ОЗУ * * только для моделей AT90S4414 и AT90S $FFFF Рис. 2.8. Kарта памяти микроконтроллеров AVR семейства Classic Для адресации памяти программ используется счетчик команд (PC — Program Counter). Размер счетчика команд составляет от 9 до 12 разрядов в зависимости от объема адресуемой памяти.

По адресу $000 памяти программ находится вектор сброса. После инициализации (сброса) микроконтроллера выполнение программы начинается с этого адреса (фирма «Atmel» рекомендует размещать по этому адресу команду относительного перехода к инициализационной части программы). Начиная с адреса $001 располагается таблица векто ров прерываний. Ее размер зависит от модели микроконтроллера и со ставляет от 2 (адреса $001, $002) до 16 (адреса $001…$010) векторов. При возникновении прерывания после сохранения в стеке текущего значе ния счетчика команд происходит выполнение команды, расположенной по адресу соответствующего вектора. Поэтому по этим адресам распола гаются команды относительного перехода к подпрограммам обработки прерываний. Ниже приведен типичный листинг начала программы для модели AT90S2323:

— 37 — 2. Архитектура микроконтроллеров семейства Classic Address Labels Code Comments $000 rjmp RESET ;

Обработчик сброса $001 rjmp EXT_INT0 ;

Обработчик вн.

;

прерывания $002 rjmp TIM_OVF0 ;

Обработчик прерывания от ;

Таймера $003 MAIN: ldi r16, low(RAMEND) ;

Начало основной программы out SPL, r <инструкция> xxx Если в программе прерывания не используются (запрещены), то ос новная программа может начинаться непосредственно с адреса $001.

В заключение следует отметить, что FLASH ПЗУ, используемое в мик роконтроллерах AVR, рассчитано как минимум на 1000 циклов стира ния/записи.

2.2.2. Память данных Память данных микроконтроллеров семейства Classic разделена на три части: регистровая память, оперативная память (статическое ОЗУ) и энер гонезависимое ЭСППЗУ (EEPROM).

Регистровая память включает в себя 32 регистра общего назначения (РОН), объединенных в регистровый файл и служебные регистры вво да/вывода (РВВ). Размер регистровой памяти фиксирован и для всех мо делей составляет 96 байт, соответственно под РОН отводится 32 байта, а под РВВ — 64 байта.

В области регистров ввода/вывода расположены различные служебные регистры (регистр указателя стека, регистр состояния и т.п.), а также реги стры управления периферийными устройствами, входящими в состав ми кроконтроллера. Общее количество РВВ зависит от конкретной модели микроконтроллера.

Для хранения переменных программ вместе с регистрами также может использоваться статическое ОЗУ объемом от 128 до 512 байт. Kроме того, микроконтроллеры AT90S4414 и AT90S8515 имеют возможность подклю чения внешнего статического ОЗУ объемом до 64 Kбайт.

Для хранения данных, которые могут изменяться в процессе настрой ки и функционирования готовой системы (калибровочные константы, се — 38 — 2. Архитектура микроконтроллеров семейства Classic рийные номера, ключи и т.п.), может быть использована EEPROM па мять. Ее объем составляет для различных моделей от 64 до 512 байт. Эта память расположена в отдельном адресном пространстве, а доступ к ней осуществляется с помощью определенных РВВ.

2.2.2.1. Статическое ОЗУ Прежде всего следует отметить, что в отличие от микроконтроллеров других производителей, в которых адресное пространство памяти разбива ется на несколько банков, в микроконтроллерах AVR семейства Classic ис пользуется линейная организация памяти. Объем статического ОЗУ для различных моделей семейства составляет от 128 до 512 байт (см. Табл. 1.1).

В адресном пространстве ОЗУ также расположены все регистры мик роконтроллеров, под них отведены младшие 96 адресов (см. Рис. 2.9). Ос тальные адреса отведены под 128/256/512…64K ячеек статического ОЗУ.

Использование внешнего ОЗУ Микроконтроллеры AT90S4414 и AT90S8515 имеют возможность под ключения внешнего статического ОЗУ объемом до 64 Kбайт. Для разреше ния работы с внешним ОЗУ необходимо установить в «1» разряд SRE ре гистра MCUCR (см. п. 2.2.2.3). При этом микроконтроллер начинает сам управлять режимом работы порта А (вход/выход), т.е. содержимое регист ра DDRA (регистр направления передачи данных порта А) игнорируется.

Для подключения внешнего ОЗУ используются следующие выводы микроконтроллера:

• порт A (RA0…RA7) — мультиплексированная шина адреса (младшие 8 разрядов)/шина данных;

• порт C (RC0…RC7) — шина адреса (старшие 8 разрядов);

• ALE — сигнал строба адреса;

• RD(RC7) — сигнал строба чтения;

• WR (RC6) — сигнал строба записи.

При обращении по адресу, который находится вне границы внутренне го ОЗУ, автоматически происходит обращение к внешнему ОЗУ (разумеет ся, если работа с внешним ОЗУ разрешена). После формирования на выво дах порта A требуемого адреса вывод ALE меняет свое состояние с лог. «1» на лог. «0» и остается в этом состоянии в течение всего цикла чтения /запи си. При обращении к внутреннему ОЗУ выводы сигналов стробов чтения ( RD ) и записи ( WR) находятся в неактивном состоянии. При этом на вы воде ALE возможны короткие импульсы, не влияющие на работу схемы.

— 39 — 2. Архитектура микроконтроллеров семейства Classic Регистровый Адресное пространство файл памяти данных R0 $ R1 $ R2 $.........

R29 $001D R30 $001E R31 $001F Регистры ввода/вывода $00 $ $01 $ $02 $.........

$3D $005D $3E $005E $3F $005F Внутреннее ОЗУ $ $...

$00DE/$015E/$025E $00DF/$015F/$025F Внешнее ОЗУ $0160/$ $0161/$...

$FFFE $FFFF Рис. 2.9. Организация статического ОЗУ — 40 — 2. Архитектура микроконтроллеров семейства Classic Данные D [7:0] Адрес RG Порт А DI DO A [7:0] Адрес/ Регистр Данные защелка Внешнее ALE C AVR ОЗУ Адрес Порт C A [15:8] RD RD WR WR Рис. 2.10. Подключение внешнего ОЗУ к микроконтроллеру Kак показано на Рис. 2.10, для подключения внешнего ОЗУ к микро контроллеру дополнительно потребуется регистр защелка. В качестве за щелки можно использовать микросхему 74…373 (отечественные аналоги 1533ИР22, 1564ИР22, 1594ИР22 и др.) с потенциальным управлением или 74…374 (…ИР23) с динамическим управлением.

По умолчанию длительность каждого обращения к внешней памяти составляет 3 машинных цикла, как показано на Рис. 2.11а. При необходи мости время обращения можно увеличить на 1 машинный цикл установ кой в «1» бита SRW регистра MCUCR. Временная диаграмма для этого случая показана на Рис. 2.11б.

Необходимо помнить, что обращение к внешнему ОЗУ увеличивает время выполнения команды на 1 или 2 (в зависимости от режима обраще ния к внешнему ОЗУ) машинных цикла для каждого байта данных, обра батываемого командой. Таким образом, время выполнения команд пере дачи данных (LD, ST, LDS, STS, PUSHи POP) увеличивается на 1 (2) цикла. Если стек расположен во внешнем ОЗУ, то время перехода к обра ботке прерываний, вызова и возврата из подпрограмм увеличивается на (4) машинных цикла. Это связано с тем, что во время выполнения указан ных операций происходит сохранение и восстановление 16 разрядного счетчика команд.

Полная временная диаграмма обращения к внешнему ОЗУ с указани ем всех параметров сигналов приведена на Рис. 2.12. Значения этих пара метров приведены в Табл. 2.1.

— 41 — 2. Архитектура микроконтроллеров семейства Classic T1 T2 T Тактовый сигнал ALE Адрес [15...8] пред. адрес Адрес Данные/Адрес [7...0] пред. адрес Адрес Данные Адрес Запись —— WR Данные/Адрес [7...0] пред. адрес Адрес Данные Адрес Чтение —— RD а) T1 T2 T3 T Тактовый сигнал ALE Адрес [15...8] пред. адрес Адрес Данные/Адрес [7...0] пред. адрес Адрес Данные Адрес Запись —— WR Данные/Адрес [7...0] пред. адрес Адрес Данные Адрес Чтение —— RD б) Рис. 2.11. Временная диаграмма обращения к внешнему ОЗУ:

а — без ожидания;

б — с дополнительным циклом ожидания — 42 — 2. Архитектура микроконтроллеров семейства Classic T1 T2 T3 T Тактовый сигнал ALE Адрес [15...8] пред. адрес Адрес 2 13 Данные/Адрес [7...0] пред. адрес Адрес Данные Адрес Запись 3a —— WR 3b Данные/Адрес [7...0] пред. адрес Адрес Данные Адрес Чтение 10 —— RD 8 Примечание: Такт Т3 присутствует только при использовании дополнительного цикла ожидания.

Рис. 2.12. Временная диаграмма обращения к внешнему ОЗУ Таблица 2.1. Параметры сигналов при обращении к внешнему ОЗУ VCC = 4.0…6.0 В VCC = 2.7…4.0 В Ед.

Обозн. Параметр изм.

min max min max 1/tCLCL 0 Тактовая частота 0 8 0 4 МГц tLHLL 0.5tCLCL 1 Длительность сигнала ALE – 30.0 0.5tCLCL – 55.0 нс Задержка сигнала ALE tAVLL 2 относительно сигналов 0.5tCLCL – 40.0 0.5tCLCL – 65.0 нс адреса A[7...0] Задержка сигналов адреса A tLLAX_ST 3a [7…0] относительно сигнала 0.5tCLCL + 5.0 0.5tCLCL + 5.0 нс ALE (команды ST/STD/STS) Задержка сигналов адреса A tLLAX_LD 3b [7…0] относительно сигнала 15.0 15.0 нс ALE (команды LT/LDD/LDS) Задержка сигнала ALE tAVLLC 4 относительно сигналов 0.5tCLCL – 40.0 0.5tCLCL – 65.0 нс адреса A[15..8] 5 tAVRL Задержка сигнала RD 1.0tCLCL – 30.0 1.0tCLCL – 50.0 нс относительно сигналов адреса 6 tAVWL Задержка сигнала WR 1.5tCLCL – 30.0 1.5tCLCL – 50.0 нс относительно сигналов адреса — 43 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.1 (окончание) VCC = 4.0…6.0 В VCC = 2.7…4.0 В Ед.

№ Обозн. Параметр изм.

min max min max 7 tLLWL Задержка сигнала WR 1.0tCLCL – 20.0 1.0tCLCL + 20.0 1.0tCLCL – 20.0 1.0tCLCL + 20.0 нс относительно сигнала ALE 8 tLLRL Задержка сигнала RD 0.5tCLCL – 20.0 0.5tCLCL + 20.0 0.5tCLCL – 20.0 0.5tCLCL + 20.0 нс относительно сигнала ALE Задержка сигнала RD 9 tDVRH относительно момента 60.0 95.0 нс установления сигнала данных Время установления 1.0tCLCL – 55.0 1.0tCLCL – 80. 10 tRLDV сигналов данных нс 2.0tCLCL – 55.0 2.0tCLCL – 80. относительно сигнала RD Время сохранения сигналов 11 tRHDX данных относительно 0.0 0.0 нс сигнала RD 1.0tCLCL – 20.0 1.0tCLCL – 20. 12 tRLRH Длительность сигнала RD нс 2.0tCLCL – 20.0 2.0tCLCL – 20. Задержка сигнала WR 13 tDVWL относительно момента 0.5tCLCL – 35.0 0.5tCLCL – 55.0 нс установления сигнала данных Время сохранения сигналов 14 tWHDX данных относительно 0.0 0.0 нс сигнала WR 1.0tCLCL – 30.0 1.0tCLCL – 40. Задержка сигнала WR 15 tDVWH относительно момента нс 2.0tCLCL – 30.0 2.0tCLCL – 40. установления сигнала данных 0.5tCLCL – 20.0 0.5tCLCL – 20. 16 tWLWH Длительность сигнала WR нс 1.5tCLCL – 20.0 1.5tCLCL – 20. Примечание:

Для параметров, имеющих в таблице две строки, в первой указано значение параметра при обращении к ОЗУ без использования цикла ожидания, во второй — при использовании цикла ожидания.

2.2.2.2. Регистры общего назначения Все регистры общего назначения объединены в файл, структура которо го показана на Рис. 2.13. Kак уже было сказано, в микроконтроллерах AVR все 32 РОН непосредственно доступны АЛУ в отличие от микроконтролле ров других фирм, в которых имеется только один такой регистр — рабочий регистр W (аккумулятор). Благодаря этому любой РОН может использовать ся во всех командах и как операнд источник и как операнд приемник. Ис ключение составляют лишь пять арифметических и логических команд, вы — 44 — 2. Архитектура микроконтроллеров семейства Classic 7 0 7 0 Адрес R0 R0 $ R1 R1 $ R2 R2 $......

R13 R13 $0D R14 R14 $0E R15 R15 $0F R16 R16 $ R17 R17 $......

R26 R26 $1A регистр X, мл.байт R27 R27 $1B регистр X, ст.байт R28 R28 $1C регистр Y, мл.байт R29 R29 $1D регистр Y, ст.байт R30 (регистр Z) R30 $1E регистр Z, мл.байт R31 R31 $1F регистр Z, ст.байт Остальные AT90S модели Рис. 2.13. Структура файла регистров общего назначения полняющих действия между константой и регистром (SBCI, SUBI, CPI, ANDI, ORI), а также команда загрузки константы в регистр (LDI). Эти ко манды могут обращаться только ко второй половине регистров (R16…R31).

Ряд регистров общего назначения используется в качестве указателей при косвенной адресации памяти данных. В модели AT90S1200 таким ре гистром является регистр R30 (регистр Z). Поскольку объем адресуемой памяти данных этой модели составляет всего 96 байт, для хранения адре са достаточно одного 8 разрядного регистра. Во всех других моделях для косвенной адресации используются три 16 разрядных регистра (регист ры X, Y и Z), каждый из которых получается объединением двух РОН (Рис. 2.14). Более подробно использование этих регистров будет описано в п. 3.2.2.4.

— 45 — 2. Архитектура микроконтроллеров семейства Classic 15 Регистр X 7 0 7 R27($1B) R26($1A) 15 Регистр Y 7 0 7 R29($1D) R28($1C) 15 Регистр Z 7 0 7 R31($1F) R30($1E) Рис. 2.14. Регистры указатели X, Y и Z Kак показано на Рис. 2.13, каждый регистр файла имеет свой собствен ный адрес в пространстве памяти данных (кроме AT90S1200). Поэтому к ним можно обращаться как к памяти, несмотря на то, что физически эти регистры не являются ячейками ОЗУ.

2.2.2.3. Регистры ввода/вывода Регистры ввода/вывода располагаются в так называемом пространстве ввода/вывода размером 64 байта. Все РВВ можно разделить на две группы:

служебные регистры микроконтроллера и регистры, относящиеся к пери ферийным устройствам (в т.ч. порты ввода/вывода). Размер каждого реги стра — 8 разрядов.

Распределение адресов пространства ввода/вывода зависит от кон кретной модели микроконтроллера, т.к. разные модели имеют различный состав периферийных устройств и, соответственно, разное количество ре гистров. Размещение РВВ в адресном пространстве ввода/вывода для всех моделей семейства приведено в Табл. 2.2…2.5. В этой главе будут рассмот рены только некоторые служебные регистры, общие для всех микроконт роллеров семейства. Остальные регистры ввода/вывода будут подробно рассмотрены в соответствующих разделах книги.

Общее замечание к таблицам: если адрес в таблице не указан, это озна чает, что для данной модели он зарезервирован, и запись по этому адресу запрещена (крайне не рекомендуется).

K любому регистру ввода/вывода можно обратиться с помощью команд INи OUT, выполняющих пересылку данных между одним из 32 РОН и про странством ввода/вывода. Kроме того, имеются 4 команды поразрядного доступа, использующие в качестве операндов регистры ввода/вывода: ко манды установки/сброса отдельного разряда (SBI и CBI) и команды — 46 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.2. РВВ моделей AT90S1200, AT90S2313, AT90S/LS2323 и AT90S/LS Адрес Название Функция AT90S/LS AT90S1200 AT90S AT90S/LS ACSR Регистр управления и состояния аналогового компаратора $08 $08 ($28) — DDRB Регистр направления данных порта B $17 $17 ($37) $17 ($37) DDRD Регистр направления данных порта D $11 $11 ($31) — EEAR Регистр адреса EEPROM $1E $1E ($3E) $1E ($3E) EECR Регистр управления EEPROM $1C $1C ($3C) $1C ($3C) EEDR Регистр данных EEPROM $1D $1D ($3D) $1D ($3D) GIFR Общий регистр флагов прерываний — $3A ($5A) $3A ($5A) GIMSK Общий регистр маски прерываний $3B $3B ($5B) $3B ($5B) ICR1H Регистр захвата таймера/счетчика 1 (старший байт) — $25 ($45) — ICR1L Регистр захвата таймера/счетчика 1 (младший байт) — $24 ($44) — MCUCR Общий регистр управления микроконтроллером $35 $35 ($55) $35 ($55) MCUSR Регистр состояния микроконтроллера — — $34 ($54) OCR1AH Регистр совпадения выхода 1 (старший байт) — $2B ($4B) — OCR1AL Регистр совпадения выхода 1 (младший байт) — $2A ($4A) — PINB Выводы порта B $16 $16 ($36) $16 ($36) PIND Выводы порта D $10 $10 ($30) — PORTB Регистр данных порта B $18 $18 ($38) $18 ($38) PORTD Регистр данных порта D $12 $12 ($32) — SPL Указатель стека — $3D ($5D) $3D ($5D) SREG Регистр состояния $3F $3F ($5F) $3F ($5F) TCCR0 Регистр управления таймером/счетчиком 0 $33 $33 ($53) $33 ($53) TCCR1A Регистр управления A таймером/счетчиком 1 — $2F ($4F) — TCCR1B Регистр управления B таймером/счетчиком 1 — $2E ($4E) — TCNT0 Счетный регистр таймера/счетчика 0 (8 разрядный) $32 $32 ($52) $32 ($52) TCNT1H Счетный регистр таймера/счетчика 1 — $2D ($4D) — TCNT1L Счетный регистр таймера/счетчика 1 (младший байт) — $2C ($4C) — TIFR Регистр флагов прерываний от таймера/счетчика $38 $38 ($58) $38 ($58) TIMSK Регистр маски прерываний от таймера/счетчика $39 $39 ($59) $39 ($59) UBRR Регистр скорости передачи UART — $09 ($29) — UCR Регистр управления UART — $0A ($2A) — UDR Регистр данных UART — $0C ($2C) — USR Регистр состояния UART — $0B ($2B) — WDTCR Регистр управления сторожевым таймером $21 $21 ($41) — — 47 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.3. РВВ моделей AT90S/LS2333 и AT90S/LS Адрес Название Функция AT90S/LS AT90S/LS ACSR Регистр управления и состояния аналогового компаратора $08 ($28) ADCH Регистр данных АЦП (старший байт) $05 ($25) ADCL Регистр данных АЦП (младший байт) $04 ($24) ADCSR Регистр управления и состояния АЦП $06 ($26) ADMUX Регистр управления мультиплексором АЦП $07 ($27) DDRB Регистр направления данных порта B $17 ($37) DDRC Регистр направления данных порта C $14 ($37) DDRD Регистр направления данных порта D $11 ($31) EEAR Регистр адреса EEPROM $1E ($3E) EECR Регистр управления EEPROM $1C ($3C) EEDR Регистр данных EEPROM $1D ($3D) GIFR Общий регистр флагов прерываний $3A ($5A) GIMSK Общий регистр маски прерываний $3B ($5B) ICR1H Регистр захвата таймера/счетчика 1 (старший байт) $27 ($47) ICR1L Регистр захвата таймера/счетчика 1 (младший байт) $26 ($46) MCUCR Общий регистр управления микроконтроллером $35 ($55) OCR1H Регистр совпадения выхода 1 (старший байт) $2B ($4B) OCR1L Регистр совпадения выхода 1 (младший байт) $2A ($4A) PINB Выводы порта B $16 ($36) PINC Выводы порта C $13 ($36) PIND Выводы порта D $10 ($30) PORTB Регистр данных порта B $18 ($38) PORTC Регистр данных порта C $15 ($38) PORTD Регистр данных порта D $12 ($32) SP Указатель стека $3D ($5D) SPCR Регистр управления SPI $0D ($2D) SPDR Регистр данных SPI $0F ($2F) SPSR Регистр состояния SPI $0E ($2E) SREG Регистр состояния $3F ($5F) TCCR0 Регистр управления таймером/счетчиком 0 $33 ($53) TCCR1A Регистр управления A таймером/счетчиком 1 $2F ($4F) TCCR1B Регистр управления B таймером/счетчиком 1 $2E ($4E) TCNT0 Счетный регистр таймера/счетчика 0 (8 разрядный) $32 ($52) TCNT1H Счетный регистр таймера/счетчика 1 $2D ($4D) TCNT1L Счетный регистр таймера/счетчика 1 (младший байт) $2C ($4C) TIFR Регистр флагов прерываний от таймера/счетчика $38 ($58) TIMSK Регистр маски прерываний от таймера/счетчика $39 ($59) UBRR Регистр скорости передачи UART (младший байт) $09 ($29) UBRRHI Регистр скорости передачи UART (старший байт) $03 ($23) UCR Регистр управления UART $0A ($2A) — 48 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.3 (окончание) Адрес Название Функция AT90S/LS AT90S/LS UDR Регистр данных UART $0C ($2C) USR Регистр состояния UART $0B ($2B) WDTCR Регистр управления сторожевым таймером $21 ($41) Таблица 2.4. РВВ моделей AT90S/LS4434, AT90S/LS8535, AT90S4414 и AT90S Адрес Название Функция AT90S/LS4434 AT90S AT90S/LS8535 AT90S ACSR Регистр управления и состояния аналогового компаратора $08 ($28) $08 ($28) ADCH Регистр данных АЦП (старший байт) $05 ($25) — ADCL Регистр данных АЦП (младший байт) $04 ($24) — ADCSR Регистр управления и состояния АЦП $06 ($26) — ADMUX Регистр управления мультиплексором АЦП $07 ($27) — ASSR Регистр состояния асинхронного режима $22 ($42) — DDRA Регистр направления данных порта A $1A ($3A) $1A ($3A) DDRB Регистр направления данных порта B $17 ($37) $17 ($37) DDRC Регистр направления данных порта C $14 ($37) $14 ($37) DDRD Регистр направления данных порта D $11 ($31) $11 ($31) EEARH Регистр адреса EEPROM (старший байт) $1F ($3F) $1F ($3F) EEARL Регистр адреса EEPROM (младший байт) $1E ($3E) $1E ($3E) EECR Регистр управления EEPROM $1C ($3C) $1C ($3C) EEDR Регистр данных EEPROM $1D ($3D) $1D ($3D) GIFR Общий регистр флагов прерываний $3A ($5A) $3A ($5A) GIMSK Общий регистр маски прерываний $3B ($5B) $3B ($5B) ICR1H Регистр захвата таймера/счетчика 1 (старший байт) $27 ($47) $25 ($45) ICR1L Регистр захвата таймера/счетчика 1 (младший байт) $26 ($46) $24 ($44) MCUCR Общий регистр управления микроконтроллером $35 ($55) $35 ($55) MCUSR Регистр состояния микроконтроллера $34 ($54) — OCR1AH Регистр совпадения выхода A (старший байт) $2B ($4B) $2B ($4B) OCR1AL Регистр совпадения выхода A (младший байт) $2A ($4A) $2A ($4A) OCR1BH Регистр совпадения выхода B (старший байт) $29 ($49) $29 ($49) OCR1BL Регистр совпадения выхода B (младший байт) $28 ($48) $28 ($48) OCR2 Регистр совпадения выхода таймера/счетчика 2 $23 ($43) — PINA Выводы порта A $19 ($39) $19 ($39) PINB Выводы порта B $16 ($36) $16 ($36) PINC Выводы порта C $13 ($36) $13 ($36) PIND Выводы порта D $10 ($30) $10 ($30) PORTA Регистр данных порта A $1B ($3B) $1B ($3B) PORTB Регистр данных порта B $18 ($38) $18 ($38) PORTC Регистр данных порта C $15 ($38) $15 ($38) — 49 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.4 (окончание) Адрес Название Функция AT90S/LS4434 AT90S AT90S/LS8535 AT90S PORTD Регистр данных порта D $12 ($32) $12 ($32) SPCR Регистр управления SPI $0D ($2D) $0D ($2D) SPDR Регистр данных SPI $0F ($2F) $0F ($2F) SPH Указатель стека (старший байт) $3E ($5E) $3E ($5E) SPL Указатель стека (младший байт) $3D ($5D) $3D ($5D) SPSR Регистр состояния SPI $0E ($2E) $0E ($2E) SREG Регистр состояния $3F ($5F) $3F ($5F) TCCR0 Регистр управления таймером/счетчиком 0 $33 ($53) $33 ($53) TCCR1A Регистр управления A таймером/счетчиком 1 $2F ($4F) $2F ($4F) TCCR1B Регистр управления B таймером/счетчиком 1 $2E ($4E) $2E ($4E) TCCR2 Счетный регистр таймера/счетчика 2 $25 ($45) — TCNT0 Счетный регистр таймера/счетчика 0 (8 разрядный) $32 ($52) $32 ($52) TCNT1H Счетный регистр таймера/счетчика 1 $2D ($4D) $2D ($4D) TCNT1L Счетный регистр таймера/счетчика 1 (младший байт) $2C ($4C) $2C ($4C) TCNT2 Счетный регистр таймера/счетчика 2 (8 разрядный) $24 ($44) — TIFR Регистр флагов прерываний от таймера/счетчика $38 ($58) $38 ($58) TIMSK Регистр маски прерываний от таймера/счетчика $39 ($59) $39 ($59) UBRR Регистр скорости передачи UART $09 ($29) $09 ($29) UCR Регистр управления UART $0A ($2A) $0A ($2A) UDR Регистр данных UART $0C ($2C) $0C ($2C) USR Регистр состояния UART $0B ($2B) $0B ($2B) WDTCR Регистр управления сторожевым таймером $21 ($41) $21 ($41) Таблица 2.5. РВВ модели AT90C Адрес Название Функция AT90C ADCH Регистр данных АЦП (старший байт) $05 ($25) ADCL Регистр данных АЦП (младший байт) $04 ($24) ADCSR Регистр управления и состояния АЦП $06 ($26) ADMUX Регистр управления мультиплексором АЦП $07 ($27) DDRA Регистр направления данных порта A $1A ($3A) EEARH Регистр адреса EEPROM (старший байт) $1F ($3F) EEARL Регистр адреса EEPROM (младший байт) $1E ($3E) EECR Регистр управления EEPROM $1C ($3C) EEDR Регистр данных EEPROM $1D ($3D) GIFR Общий регистр флагов прерываний $3A ($5A) GIMSK Общий регистр маски прерываний $3B ($5B) GIPR Регистр входов внешних прерываний $10 ($30) MCUCR Общий регистр управления микроконтроллером $35 ($55) PORTA Регистр данных порта A $1B ($3B) SPH Указатель стека (старший байт) $3E ($5E) — 50 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.5 (окончание) Адрес Название Функция AT90C SPL Указатель стека (младший байт) $3D ($5D) SREG Регистр состояния $3F ($5F) TCCR0 Регистр управления таймером/счетчиком 0 $33 ($53) TCCR1 Регистр управления таймером/счетчиком 1 $2E ($4E) TCNT0 Счетный регистр таймера/счетчика 0 (8 разрядный) $32 ($52) TCNT1H Счетный регистр таймера/счетчика 1 $2D ($4D) TCNT1L Счетный регистр таймера/счетчика 1 (младший байт) $2C ($4C) TIFR Регистр флагов прерываний от таймера/счетчика $38 ($58) TIMSK Регистр маски прерываний от таймера/счетчика $39 ($59) проверки состояния отдельного разряда (SBIS и SBIC). Обратите внима ние, что эти команды могут обращаться только к 1 й половине регистров ввода/вывода (адреса $00…$1F).

Так же, как и к РОН, к регистрам ввода/вывода можно обращаться дву мя способами: как собственно к регистрам (с помощью команд INи OUT) и как к ячейкам ОЗУ (кроме AT90S1200). В первом случае используются адреса РВВ, принадлежащие пространству ввода/вывода ($00…$3F). Во втором случае адрес РВВ необходимо увеличить на $20 (в таблицах и далее в книге при указании адресов РВВ в скобках указываются соответствую щие им адреса ячеек ОЗУ).

А теперь рассмотрим служебные регистры микроконтроллера. Все слу жебные регистры перечислены в Табл. 2.6, знак «» в таблице означает, что тот или иной регистр присутствует в данной модели микроконтроллера.

Обратите внимание, что адреса служебных регистров не меняются от моде ли к модели (т.е. регистр SREG всегда расположен по адресу $3F ($5F), ре гистр GIMSK — по адресу $3B ($5B) и т.д.).

SREG (регистр состояния) Регистр состояния располагается по адресу $3F ($5F). Этот регистр представляет собой набор флагов, показывающих текущее состояние микроконтроллера. Эти флаги автоматически устанавливаются в «1» или в «0» при наступлении определенных событий (в соответствии с резуль татом выполнения команд). Все разряды этого регистра доступны как для чтения, так и для записи в любой момент времени;

после сброса ми кроконтроллера все разряды регистра сбрасываются в «0». Содержимое этого регистра показано ниже на Рис. 2.15, а его описание приведено в Табл. 2.7.

— 51 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.6. Служебные регистры микроконтроллеров семейства Classic Название Адрес регистра SREG $3F ($5F) SPH $3E ($5E) SPL $3D ($5D) GIMSK $3B ($5B) GIFR $3A ($5A) TIMSK $39 ($59) TIFR $38 ($58) MCUCR $35 ($55) MCUSR $34 ($54) 7 6 5 4 3 2 1 I T H S V N Z C Чтение(R)/Запись(W) R/W R/W R/W R/W R/W R/W R/W R/W Начальное значение 0 0 0 0 0 0 0 Рис. 2.15. Регистр состояния SREG Таблица 2.7. Регистр состояния SREG Разряд Название Описание Общее разрешение прерываний. Для разрешения прерываний этот флаг должен быть уста новлен в «1». Разрешение/запрещение отдельных прерываний производится установкой или сбросом соответствующих разрядов регистров масок прерываний (см. Главу 4). Если 7 I флаг сброшен (0), то прерывания запрещены независимо от состояния этих регистров.

Флаг сбрасывается аппаратно после входа в прерывание и восстанавливается командой RETI для разрешения обработки следующих прерываний Хранение копируемого бита. Этот разряд регистра используется в качестве источника или приемника командами копирования битов BLD (Bit LoaD) и BST (Bit STore). Заданный 6 T разряд любого РОН может быть скопирован в этот разряд командой BST или установлен в соответствии с содержимым данного разряда командой BLD Флаг половинного переноса. Этот флаг устанавливается в «1», если имел место перенос из 5 H младшей половины байта (из 3 го разряда в 4 й) или заем из старшей половины байта при выполнении некоторых арифметических операций Флаг знака. Этот флаг равен результату операции «Исключающее ИЛИ» (XOR) между фла гами N (отрицательный результат) и V (переполнение числа в дополнительном коде). Со 4 S ответственно этот флаг устанавливается в «1», если результат выполнения арифметической операции меньше нуля Флаг переполнения дополнительного кода. Этот флаг устанавливается в «1» при перепол нении разрядной сетки знакового результата. Используется при работе со знаковыми чис 3 V лами (представленными в дополнительном коде). Более подробно см. описание системы команд — 52 — AT90S AT90S AT90S/LS AT90S/LS AT90S/LS AT90S/LS AT90S/LS AT90S/LS AT90S AT90S AT90C 2. Архитектура микроконтроллеров семейства Classic Таблица 2.7 (окончание) Разряд Название Описание Флаг отрицательного значения. Этот флаг устанавливается в «1», если старший разряд ( 2 N й) результата операции равен «1». В противном случае флаг равен «0» Флаг нуля. Этот флаг устанавливается в «1», если результат выполнения операции равен 1 Z нулю Флаг переноса. Этот флаг устанавливается в «1», если в результате выполнения операции 0 C произошел выход за границы байта SP (указатель стека) В моделях, имеющих объем ОЗУ до 128 байт (адресное пространство ОЗУ — $000…$0DF), указатель стека реализован на одном регистре SPL, располо женном по адресу $3D ($5D). В остальных моделях указатель стека реализо ван на паре регистров SPH:SPL, расположенных по адресам $3E ($5E) и $3D ($5D) соответственно. Причем для всех моделей, кроме AT90S4414 и AT90S8515, в регистре SPH (старший байт указателя стека) используются только 1 (объем ОЗУ — 256 байт) или 2 (объем ОЗУ — 512 байт) младших раз ряда, остальные разряды доступны только для чтения и содержат «0». В мо делях AT90S4414 и AT90S8515 оба регистра SPH:SPL используются полно стью, т.к. максимальный объем памяти в этих моделях равен 64 Kбайт. Все используемые разряды регистров доступны как для чтения, так и для записи в любой момент времени. После сброса микроконтроллера содержимое ре гистров равно 0, поэтому в самом начале программы указатель стека необхо димо проинициализировать каким либо значением (как правило, это наи больший для конкретного микроконтроллера адрес памяти данных).

GIMSK, TIMSK, GIFR, TIFR (регистры управления прерываниями) Эти четыре регистра предназначены для управления внешними преры ваниями (регистры GIMSK и GIFR) и прерываниями от таймеров (регис тры TIMSK и TIFR). Регистры масок GIMSK (общий регистр маски пре рываний) и TIMSK (регистр маски прерываний от таймеров) используют ся для разрешения/запрещения отдельных прерываний, а регистры фла гов GIFR (общий регистр флагов прерываний) и TIFR (регистр флагов прерываний от таймеров) содержат флаги, показывающие, произошло или нет соответствующее прерывание. Подробно эти регистры будут рас смотрены в разделе 4.5 книги, посвященном прерываниям.

MCUCR (регистр управления микроконтроллером) Регистр управления микроконтроллером расположен по адресу $ ($55). Этот регистр содержит ряд флагов, используемых для общего управ — 53 — 2. Архитектура микроконтроллеров семейства Classic ления микроконтроллером. Состав флагов, размещенных в регистре MCUCR, несколько меняется от модели к модели, соответственно в неко торых моделях некоторые разряды не используются. Неиспользуемые раз ряды регистра доступны только для чтения и содержат «0». Все используе мые разряды регистра доступны как для чтения, так и для записи в любой момент времени. После сброса микроконтроллера во всех разрядах регис тра записано «0».

Содержимое этого регистра показано ниже на Рис. 2.16, а его описание для разных моделей приведено в Табл. 2.8…2.10.

7 6 5 4 3 2 1 AT90S — — SE SM — — ISC01 ISC00 AT90S/LS AT90S/LS Чтение(R)/Запись(W) R R R/W R/W R R R/W R/W Начальное значение 0 0 0 0 0 0 0 7 6 5 4 3 2 1 AT90S — — SE SM ISC11 ISC10 ISC01 ISC00 AT90S/LS AT90S/LS Чтение(R)/Запись(W) R R R/W R/W R/W R/W R/W R/W Начальное значение 0 0 0 0 0 0 0 7 6 5 4 3 2 1 AT90S SRE SRW SE SM ISC11 ISC10 ISC01 ISC AT90S Чтение(R)/Запись(W) R/W R/W R/W R/W R/W R/W R/W R/W Начальное значение 0 0 0 0 0 0 0 7 6 5 4 3 2 1 AT90S/LS — SE SM1 SM0 ISC11 ISC10 ISC01 ISC AT90S/LS Чтение(R)/Запись(W) R R/W R/W R/W R/W R/W R/W R/W Начальное значение 0 0 0 0 0 0 0 7 6 5 4 3 2 1 — SE SM — — ISC1 — ISC0 AT90C Чтение(R)/Запись(W) R R/W R/W R R R/W R R/W Начальное значение 0 0 0 0 0 0 0 Рис. 2.16. Регистр управления микроконтроллером MCUCR — 54 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.8. Регистр MCUCR моделей AT90S1200, AT90S2313, AT90S/LS2323, AT90S/LS2343, AT90S/LS2333, AT90S/LS4433, AT90S и AT90S Разр. Назв. Описание Модель Разрешение внешнего ОЗУ. Если этот разряд установлен в «1», использование внешнего ОЗУ разрешено. В противном случае использование внешнего ОЗУ за AT90S SRE прещено, и выводы, используемые для подключения внешнего ОЗУ, функциони AT90S руют как обычные линии ввода/вывода. За более полной информацией об ис пользовании внешнего ОЗУ обратитесь к п. 2.2.2. — Не используется, читается как «0». Прочие Режим обращения к внешнему ОЗУ. Если этот разряд установлен в «1», обраще ние к внешнему ОЗУ выполняется за 4 машинных цикла (с одним циклом ожида AT90S SRW ния). Если этот разряд сброшен, обращение к внешнему ОЗУ выполняется за AT90S машинных цикла. За более полной информацией об использовании внешнего ОЗУ обратитесь к п. 2.2.2. — Не используется, читается как «0» Прочие Разрешение перехода в режим пониженного энергопотребления. Если этот разряд 5 SE установлен в «1», то по команде «SLEEP» микроконтроллер переходит в «спящий» Все модели режим Выбор режима пониженного энергопотребления. Состояние этого разряда опре деляет, в какой режим перейдет микроконтроллер после выполнения команды 4 SM «SLEEP». Если этот разряд установлен в «1», «спящим» режимом является режим Все модели «Power Down». Если этот разряд сброшен — режим «Idle». За более полной инфор мацией обратитесь к разделу 4. AT90S — Не используются, читаются как «0» AT90S AT90S Определяют условие генерации внешнего прерывания INT1 следующим образом:

ISC11 ISC10 Условие 3, 0 0 по НИЗKОМУ уровню на выводе INT ISC11, Прочие при любом изменении уровня на выводе INT ISC 0 (для AT90S2333/4433);

зарезервировано для остальных 1 0 по спадающему фронту сигнала на выводе INT 1 1 по нарастающему фронту сигнала на выводе INT Определяют условие генерации внешнего прерывания INT0 следующим образом:

ISC01 ISC00 Условие 0 0 по НИЗKОМУ уровню на выводе INT ISC01, 1,0 при любом изменении уровня на выводе INT0 (для Все модели ISC00 0 AT90S2333/4433);

зарезервировано для остальных 1 0 по спадающему фронту сигнала на выводе INT 1 1 по нарастающему фронту сигнала на выводе INT — 55 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.9. Регистр MCUCR моделей AT90S/LS4434 и AT90S/LS Разр. Назв. Описание 7 — Не используется, читается как «0» Разрешение перехода в режим пониженного энергопотребления. Если этот разряд установлен 6 SE в «1», то по команде «SLEEP» микроконтроллер переходит в «спящий» режим.

Выбор режима пониженного энергопотребления. Состояние этих разрядов определяет, в какой режим перейдет микроконтроллер после выполнения команды «SLEEP» (см. раздел 4.3):

SM1 SM0 Режим SM1, 5, 4 0 0 Idle SM 0 1 зарезервировано 1 0 Power Down 1 1 Power Save Определяют условие генерации внешнего прерывания INT1 следующим образом:

ISC11 ISC10 Условие 0 0 по НИЗKОМУ уровню на выводе INT ISC11, 3, ISC 0 1 зарезервировано 1 0 по спадающему фронту сигнала на выводе INT 1 1 по нарастающему фронту сигнала на выводе INT Определяют условие генерации внешнего прерывания INT0 следующим образом:

ISC01 ISC00 Условие 0 0 по НИЗKОМУ уровню на выводе INT ISC01, 1, ISC 0 1 зарезервировано 1 0 по спадающему фронту сигнала на выводе INT 1 1 по нарастающему фронту сигнала на выводе INT Таблица 2.10. Регистр MCUCR модели AT90C Разр. Назв. Описание 7 — Не используется, читается как «0» Разрешение перехода в режим пониженного энергопотребления. Если этот разряд установлен 6 SE в «1», то по команде «SLEEP» микроконтроллер переходит в «спящий» режим Выбор режима пониженного энергопотребления. Состояние этого разряда определяет, в какой режим перейдет микроконтроллер после выполнения команды «SLEEP». Если этот 5 SM разряд установлен в «1», «спящим» режимом является режим «Power Down». Если этот разряд сброшен — режим «Idle». За более полной информацией обратитесь к разделу 4. 4, 3 — Не используются, читаются как «0» Определяет условие генерации внешнего прерывания INT1. Если этот разряд установлен в «1», прерывание генерируется по нарастающему фронту сигнала на выводе INT1. Если этот 2 ISC разряд сброшен, прерывание генерируется по спадающему фронту сигнала на выводе INT1.

Генерация прерывания гарантируется для импульсов длительностью не менее 40 нс 1 — Не используется, читается как «0» — 56 — 2. Архитектура микроконтроллеров семейства Classic Таблица 2.10 (окончание) Разр. Назв. Описание Определяет условие генерации внешнего прерывания INT0. Если этот разряд установлен в «1», прерывание генерируется по нарастающему фронту сигнала на выводе INT0. Если этот разряд 0 ISC сброшен, прерывание генерируется по спадающему фронту сигнала на выводе INT0. Генера ция прерывания гарантируется для импульсов длительностью не менее 40 нс Примечание:

При изменении состояния разрядов ISC1 и ISC0 возможна ложная генерация соответству ющего прерывания. Чтобы этого избежать, рекомендуется следующая последовательность действий:

• запретить прерывание, соответствующее изменяемому разряду;

• изменить состояние разряда;

• сбросить флаг прерывания;

• разрешить прерывание.

MCUSR (регистр состояния микроконтроллера) Регистр управления микроконтроллером расположен по адресу $ ($54). Этот регистр содержит флаги, состояние которых позволяет опреде лить причину, по которой произошел сброс микроконтроллера. Подробно этот регистр будет рассмотрен в разделе 4.4.

2.2.2.4. Способы адресации памяти данных Все микроконтроллеры AVR семейства Classic, за исключением модели AT90S1200, поддерживают 8 способов адресации для доступа к различным областям памяти данных (РОН, РВВ, ОЗУ). Модель AT90S1200 в связи с отсутствием у нее встроенного ОЗУ и из за наличия единственного ин дексного регистра поддерживает только 4 способа адресации из восьми.

В действительности способов адресации всего два: прямая адресация и косвенная. Однако каждый способ адресации имеет несколько разновид ностей в зависимости от того, к какой области памяти производится обра щение (для прямой адресации) или какие дополнительные действия вы полняются над индексным регистром (для косвенной адресации).

На рисунках этого раздела, а также далее в книге, встречается аббреви атура KОП. Эта аббревиатура обозначает часть (или части) слова команды, содержащую значение кода операции.

Прямая адресация При прямой адресации адреса операндов содержатся непосредствен но в слове команды. В соответствии со структурой памяти данных суще ствуют следующие разновидности прямой адресации: прямая адресация одного РОН, прямая адресация двух РОН, прямая адресация РВВ, пря мая адресация ОЗУ.

— 57 — 2. Архитектура микроконтроллеров семейства Classic Прямая адресация одного регистра общего назначения Этот способ адресации используется в командах, оперирующих с од ним из регистров общего назначения. При этом адрес регистра операн да (его номер) содержится в разрядах 8…4 (5 бит) слова команды (см.

Рис. 2.17).

Регистровый файл 15 9 8 4 3 КОП d КОП d Операнд регистр d (Rd) Рис. 2.17. Прямая адресация одного регистра общего назначения Примером команд, использующих этот способ адресации, являются команды работы со стеком (PUSH, POP), команды инкремента (INC), де кремента (DEC), а также некоторые команды арифметических операций.

Прямая адресация двух регистров общего назначения Этот способ адресации используется в командах, оперирующих одно временно с двумя регистрами общего назначения. При этом адрес регист ра источника содержится в разрядах 9, 3…0 (5 бит), а адрес регистра при емника в разрядах 8…4 (5 бит) слова команды (см. Рис. 2.18).

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

Регистровый файл 15 10 9 5 4 КОП r d d r Операнды регистры r (Rd) и d (Rd) Результат — в регистре d (Rd) * Положение разрядов r и d показано условно Рис. 2.18. Прямая адресация двух регистров общего назначения — 58 — 2. Архитектура микроконтроллеров семейства Classic Здесь необходимо сделать одно замечание. Дело в том, что некоторые команды, имеющие только один регистр операнд, тем не менее использу ют рассматриваемый способ адресации. Просто в этом случае источником и приемником является один и тот же регистр. В качестве примера можно привести команду очистки регистра (CLR Rd), которая в действительнос ти выполняет операцию «Исключающее ИЛИ» регистра с самим собой (EOR Rd, Rd).

Прямая адресация регистра ввода/вывода Данный способ адресации используется командами пересылки дан ных между регистром ввода/вывода и регистровым файлом — INи OUT.

В этом случае адрес регистра ввода/вывода содержится в разрядах 10, 9, 3…0 (6 бит), а адрес РОН — в разрядах 8…4 (5 бит) слова команды (см.

Рис. 2.19).

Регистровый Память файл ввода/вывода 15 11 6 5 0 КОП r/d P r P 31 P — адрес регистра ввода/вывода r/d — адрес POH (источник/приёмник) * Положение разрядов r/d и P показано условно Рис. 2.19. Прямая адресация регистра ввода/вывода Прямая адресация ОЗУ Kак следует из названия, данный способ используется при обращении ко всему адресному пространству памяти данных. Естественно, этот спо соб адресации не поддерживается микроконтроллером AT90S1200.

В системе команд микроконтроллеров семейства имеется только две команды, использующие этот способ адресации. Это команды пересылки байта между одним из РОН и ячейкой ОЗУ — LDSи STS. Kаждая из этих команд занимает в памяти программ два слова (32 бита). В первом слове содержится код операции и адрес регистра общего назначения (в разрядах с 8 го по 4 й). Во втором слове находится адрес ячейки памяти, к которой происходит обращение (см. Рис. 2.20).

— 59 — 2. Архитектура микроконтроллеров семейства Classic ОЗУ 31 25 24 20 19 КОП r/d КОП 16 младших разрядов 15 r/d — адрес POH (источник/приёмник) $FFFF Рис. 2.20. Прямая адресация ОЗУ Еще раз обращаем ваше внимание, что по адресам $00…$1F располо жен файл регистров общего назначения, а по адресам $20…$5F располо жены регистры ввода/вывода.

Kосвенная адресация При косвенной адресации адрес ячейки памяти (для AT90S1200 — ре гистра) находится в одном из индексных регистров X, Y и Z. В зависимос ти от дополнительных манипуляций, которые производятся над содержи мым индексного регистра, различают следующие разновидности косвен ной адресации: простая косвенная адресация, относительная косвенная адресация, косвенная адресация с преддекрементом и косвенная адреса ция с постинкрементом.

Простая косвенная адресация Сразу отметим, что AT90S1200 поддерживает только этот вид косвен ной адресации. При использовании команд простой косвенной адресации обращение производится по адресу (регистра — для AT90S1200, ячейки памяти — для остальных моделей), который находится в индексном реги стре (см. Рис. 2.21). Никаких действий с содержимым индексного регист ра при этом не производится.

Микроконтроллеры поддерживают 6 команд (по 2 для каждого индекс ного регистра) простой косвенной адресации: LD Rd, X/Y/Z(пересылка байта из ОЗУ в РОН) и ST X/Y/Z, Rd(пересылка байта из РОН в ОЗУ).

Адрес регистра общего назначения содержится в разрядах 8…4 слова ко манды.

— 60 — 2. Архитектура микроконтроллеров семейства Classic AT90S Регистровый файл Прочие ОЗУ 15 0 Регистр X,Y или Z Регистр Z $FFFF Рис. 2.21. Простая косвенная адресация Относительная косвенная адресация При использовании команд относительной косвенной адресации адрес ячейки памяти, к которой производится обращение, получается суммиро ванием содержимого индексного регистра (Y или Z) и константы, задавае мой в команде. Другими словами, производится обращение по адресу, ука занному в команде, относительно адреса, находящегося в индексном реги стре. Иллюстрация данного способа адресации приведена на Рис. 2.22.

Соответственно микроконтроллеры поддерживают 4 команды относи тельной косвенной адресации (две для регистра Y и две для регистра Z):

LDD Rd, Y+q/Z+q(пересылка байта из ОЗУ в РОН) и ST Y+q/Z+q, Rr (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения со держится в разрядах 8…4 слова команды, а величина смещения — в разря дах 13, 11, 10, 2…0. Поскольку под значение смещения отводится только бит, оно не может превышать 64.

ОЗУ 15 Регистр Y или Z 15 10 6 5 КОП n a $FFFF * Положение разрядов n и a показано условно Рис. 2.22. Относительная косвенная адресация — 61 — 2. Архитектура микроконтроллеров семейства Classic Kосвенная адресация с преддекрементом При использовании команд косвенной адресации с преддекрементом содержимое индексного регистра сначала увеличивается на 1, а затем про изводится обращение по полученному адресу (Рис. 2.23).

Микроконтроллеры семейства поддерживают 6 команд (по 2 для каж дого индексного регистра) косвенной адресации с преддекрементом: LD Rd, –X/–Y/–Z(пересылка байта из ОЗУ в РОН) и ST –X/–Y/–Z, Rd (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения со держится в разрядах 8…4 слова команды.

ОЗУ 15 Регистр X,Y или Z – $FFFF Рис. 2.23. Kосвенная адресация с преддекрементом Kосвенная адресация с постинкрементом При использовании команд косвенной адресации с постинкрементом после обращения по адресу, который находится в индексном регистре, со держимое индексного регистра уменьшается на 1 (Рис. 2.24).

Микроконтроллеры семейства поддерживают 6 команд (по 2 для каждо го индексного регистра) косвенной адресации с постинкрементом:

LD Rd, X+/Y+/Z+(пересылка байта из ОЗУ в РОН) и STX+/Y+/Z+,Rd (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содер жится в разрядах 8…4 слова команды.

ОЗУ 15 Регистр X,Y или Z $FFFF Рис. 2.24. Kосвенная адресация с постинкрементом — 62 — 2. Архитектура микроконтроллеров семейства Classic 2.2.3. Энергонезависимая память данных Kак уже было сказано, микроконтроллеры AVR семейства Classic име ют в своем составе энергонезависимую память (EEPROM). Объем этой памяти колеблется от 64 байт в модели AT90S1200 до 512 байт в старших моделях. EEPROM память расположена в своем адресном пространстве и так же, как и ОЗУ, организована линейно.

2.2.3.1. Организация доступа Для обращения к EEPROM памяти используются три регистра: ре гистр адреса, регистр данных и регистр управления. Все эти регистры, а также их использование подробно рассматриваются в этом пункте.

Регистр адреса В регистр адреса загружается адрес ячейки, к которой будет произво диться обращение. В моделях микроконтроллеров с объемом EEPROM памяти до 256 байт регистр адреса реализован на одном РВВ (регистр ввода/вывода) — EEAR (EEPROM Address Register), расположенном по адресу $1E ($3E). В моделях микроконтроллеров с объемом EEPROM памяти, равным 512 байт, для адресации всего адресного пространства требуется уже девять разрядов, поэтому регистр адреса в них реализован на двух РВВ — EEARH (старший байт адреса) и EEARL (младший байт адреса). Эти регистры расположены по адресам $1F ($3F) и $1E ($3E) соответственно.

Все перечисленные регистры доступны как для записи, так и для чте ния. При этом содержимое разрядов 7…1 регистра EEARH, разумеется, игнорируется.

Регистр данных Регистр ввода/вывода, являющийся регистром данных EEPROM па мяти, называется EEDR (EEPROM Data Register), а расположен он по ад ресу $1D ($3D). При записи в этот регистр загружаются данные, которые должны быть помещены в EEPROM по адресу, находящемуся в регистре EEAR (регистрах EEARH:EEARL). При чтении в этом регистре находятся данные, считанные из EEPROM по адресу, находящемуся в регистре EEAR (регистрах EEARH:EEARL).

Регистр управления Kак следует из названия, данный регистр используется для управления доступом к EEPROM памяти. Этот регистр, который называется EECR — 63 — 2. Архитектура микроконтроллеров семейства Classic (EEPROM Control Register), расположен по адресу $1C ($3C). Разные мо дели предоставляют неодинаковые возможности по управлению процес сами записи/чтения в EEPROM, поэтому состав управляющих разрядов в регистре EECR зависит от конкретной модели микроконтроллера. Содер жимое этого регистра показано ниже на Рис. 2.25, а его описание приведе но в Табл. 2.11.

7 6 5 4 3 2 1 — — — — — — EEWE EERE AT90S Чтение(R)/Запись(W) R R R R R R R/W R/W Начальное значение 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 AT90S AT90S/LS — — — — — EEMWE EEWE EERE AT90S/LS Чтение(R)/Запись(W) R R R R R R/W R/W R/W AT90S Начальное значение 0 0 0 0 0 0 0 0 AT90S 7 6 5 4 3 2 1 0 AT90S/LS AT90S/LS — — — — EERIE EEMWE EEWE EERE AT90S/LS Чтение(R)/Запись(W) R R R R R/W R/W R/W R/W AT90S/LS Начальное значение 0 0 0 0 0 0 0 0 AT90C Рис. 2.25. Регистр EECR Таблица 2.11. Регистр EECR Разр. Назв. Описание Модель 7…4 — Не используются, читаются как «0» Все модели Разрешение прерывания от EEPROM. Данный разряд управляет генерацией AT90S прерывания, возникающего при завершении цикла записи в EEPROM. Если AT90S EERIE этот разряд установлен в «1», прерывания разрешены (если флаг I регистра AT90S SREG также установлен в «1»). При сброшенном разряде EEWE (см. далее в таб AT90S лице) прерывание генерируется постоянно AT90C — Не используется, читается как «0» Прочие — Не используется, читается как «0» AT90S Управление разрешением записи в EEPROM. Состояние этого разряда опреде ляет функционирование флага разрешения записи EEWE. Если данный разряд 2 установлен в «1», то при записи в разряд EEWE «1» происходит запись данных в EEMWE Прочие EEPROM. В противном случае установка EEWE в «1» не производит никакого эффекта. После программной установки этот разряд сбрасывается аппаратно через 4 машинных цикла Разрешение записи в EEPROM. При установке этого разряда в «1» происходит 1 EEWE Все модели запись данных в EEPROM (если EEMWE равен «1») Разрешение чтения из EEPROM. После установки этого разряда в «1» выпол 0 EERE няется чтение данных из EEPROM. По окончании чтения этот разряд сбрасы Все модели вается аппаратно — 64 — 2. Архитектура микроконтроллеров семейства Classic Таким образом, процедура записи одного байта в EEPROM память со стоит из следующих этапов:

1. Дождаться готовности EEPROM к приему новых данных (ждать, по ка не сбросится флаг EEWE регистра EECR).

2. Загрузить байт данных в регистр EEDR, а требуемый адрес — в ре гистр EEAR (EEARH:EEARL).

3. Установить в «1» флаг EEMWE регистра EECR. Причем для выпол нения этой операции необходимо в том же машинном цикле записать «0» в разряд EEWE.

4. В течение 4 машинных циклов после установки флага EEMWE запи сать в разряд EEWE регистра EECR лог. «1».

Для микроконтроллера AT90S1200, в регистре EECR которого отсутст вует флаг EEMWE, пункты 3 и 4 сводятся к простой установке разряда EEWE. Обратите внимание, что после установки этого разряда в «1» про цессор пропускает 2 машинных цикла перед началом выполнения следу ющей инструкции.

Длительность цикла записи составляет 2…4 мс, в зависимости от на пряжения питания микроконтроллера (2 мс при VCC = 5 В;

4 мс при VCC = 2.7 В). По окончании цикла записи разряд EEWE аппаратно сбрасы вается, после чего программа может начать запись следующего байта.

При записи в EEPROM могут возникнуть некоторые проблемы, вы званные прерываниями:

1) При возникновении прерывания между 3 м и 4 м этапами описан ной последовательности запись в EEPROM будет сорвана, т.к. за время об работки прерывания флаг EEMWE сбросится в «0».

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

Для избежания описанных проблем настоятельно рекомендуется за прещать все прерывания (сбрасывать бит I регистра SREG) при выполне нии пунктов 2…4 описанной выше последовательности.

С учетом сказанного фрагмент программы, осуществляющей запись в EEPROM, выглядит следующим образом (на примере модели AT90S1200):

— 65 — 2. Архитектура микроконтроллеров семейства Classic EEWrite:

sbic EECR,EEWE ;

ждать, пока флаг EEWE не rjmp EEWrite ;

будет сброшен sli ;

запретить прерывания out EEAR,AddrReg ;

загрузить адрес (AddrReg – РОН) out EEDR,DataReg ;

загрузить данные (DataReg – РОН) sbi EECR,EEWE ;

выдать строб записи в EEPROM sli ;

разрешить прерывания ;

(если необходимо) Процедура чтения данных из EEPROM гораздо проще, чем процедура записи. После загрузки требуемого адреса в регистр EEAR (EEARH:EEARL) программа должна установить в «1» разряд EERE регис тра EECR. Kогда запрошенные данные будут находиться в регистре дан ных EEDR, произойдет аппаратный сброс этого разряда.

Операция чтения из EEPROM всегда выполняется за один машинный цикл. Kроме того, после установки разряда EERE в «1» процессор пропу скает 4 машинных цикла перед началом выполнения следующей инструк ции. Поэтому следить в программе за состоянием разряда EERE нет ника кой необходимости.

Единственное, на что нужно обратить внимание при чтении из EEP ROM, — это состояние флага EEWE. Перед выполнением чтения необхо димо убедиться, что этот флаг сброшен. В противном случае в результате загрузки в регистры новых значений адреса и данных во время записи в EEPROM, процедура записи будет прервана, а результат этой записи — не определен.

С учетом сказанного фрагмент программы, осуществляющей чтение из EEPROM, выглядит следующим образом (на примере модели AT90S1200):

EERead:

sbic EECR,EEWE ;

ждать окончания текущей записи rjmp EERead ;

(пока флаг EEWE не станет равным «0») out EEDR, AddrReg ;

загрузить адрес (AddrReg – РОН) sbi EECR,EERE ;

выдать строб чтения из EEPROM in DataReg,EEDR ;

прочитанный байт – в РОН DataReg — 66 — 2. Архитектура микроконтроллеров семейства Classic 2.2.3.2. Меры предосторожности при работе с EEPROM K сожалению, у EEPROM памяти есть один недостаток: во время ра боты при пониженном напряжении питания хранящиеся в ней данные могут быть повреждены. Это может произойти по двум причинам:

1. Обычная процедура записи в EEPROM требует некоторого мини мального напряжения питания;

если напряжение питания ниже этой ве личины, запись не может быть выполнена.

2. Микроконтроллер сам может выполнять команды некорректно, ес ли напряжение питания будет ниже некоторой величины.

Чтобы избежать повреждения данных, хранящихся в EEPROM, доста точно воспользоваться одним из трех следующих решений:

1. Удерживать микроконтроллер в состоянии сброса все время, пока напряжение питания находится ниже нормы. Это решение реализуется внешней схемой защитного сброса, называемой также детектором пони женного напряжения питания (Brown out Detector). Заметим, что в моде лях AT90S/LS2333 и AT90S/LS4433 имеется встроенный детектор пони женного напряжения питания. Более подробно об этом будет рассказано в п. 4.4.4.

2. Удерживать микроконтроллер в «спящем» режиме (Power Down), по ка напряжение питания находится ниже нормы. Поскольку в этом режи ме микроконтроллер не может выполнять никаких команд, такое решение эффективно защищает служебные регистры EEPROM от непреднамерен ной записи.

3. Хранить константы во FLASH памяти программ, если они не долж ны меняться во время работы программы. Микроконтроллер не может са мостоятельно производить запись в FLASH память, соответственно, при понижении напряжения питания ее содержимое не будет повреждено.

2.3. Счетчик команд и выполнение программы 2.3.1. Функционирование конвейера Одной из причин, обуславливающих большое быстродействие микрокон троллеров семейства AVR, является использование двухуровневого конвейера при выполнении программы. Работа этого конвейера показана на Рис. 2.26.

Во время первого машинного цикла происходит выборка команды из памяти программ и ее декодирование. Во время второго цикла эта коман да выполняется, а параллельно происходит выборка и декодирование вто — 67 — 2. Архитектура микроконтроллеров семейства Classic T1 T2 T3 T Системный тактовый сигнал Выборка 1–й команды Выполнение 1–й команды Выборка 2–й команды Выполнение 2–й команды Выборка 3–й команды Выполнение 3–й команды Выборка 4–й команды Рис. 2.26. Последовательность выполнения команд в конвейере рой команды, и так далее. В результате фактическое время выполнения каждой команды получается равным одному машинному циклу. Такое ре шение позволяет достигать производительности до 1 MIPS на МГц.

Благодаря подключению АЛУ непосредственно к регистровому файлу оно выполняет одну команду (чтение содержимого двух регистров, выпол нение операции и запись результата в регистр приемник) за один такт (машинный цикл), как показано на Рис. 2.27.

А вот обращение к внутреннему ОЗУ выполняется за два машинных цикла, как показано на Рис. 2.28.

В заключение необходимо отметить, что тактовым сигналом для функ ционирования микроконтроллеров AVR семейства Classic является непо средственно сигнал от тактового генератора либо внешний сигнал синхро низации. Никакого внутреннего деления частоты для получения систем ного тактового сигнала не производится.

T1 T2 T3 T Системный тактовый сигнал Общее время выполнения Выборка регистров–операндов Выполнение операций в АЛУ Запись результата Рис. 2.27. Функционирование АЛУ — 68 — 2. Архитектура микроконтроллеров семейства Classic T1 T2 T3 T Системный тактовый сигнал Адрес Пред. адрес Адрес Данные Запись Строб записи WR Данные Чтение Строб чтения RD Рис. 2.28. Цикл доступа к внутреннему ОЗУ 2.3.2. Задержки в конвейере Выше была описана последовательность выполнения команд програм мы в идеальном случае. Однако в действительности очень часто происхо дит нарушение нормального функционирования конвейера. Наиболее яр ким примером команд, вызывающих подобное нарушение, являются ко манды условного перехода, а также команды типа Test & Skip(провер ка и пропуск следующей команды, если результат проверки положитель ный). В случае истинности условия, проверяемого командой условного перехода, выполнение программы должно быть продолжено с некоторого адреса. А поскольку в конвейере уже произошла выборка команды, распо ложенной за командой перехода, время выполнения команды перехода увеличивается на один машинный цикл, во время которого происходит выборка команды, расположенной по требуемому адресу.

Во втором случае, при выполнении команд типа Test&Skip, следую щая команда не выполняется в случае истинности проверяемого условия.

Однако выборка пропускаемой команды уже произошла. Вследствие того, что команда не выполняется, в конвейере образуется «дырка», которая за ключается в пропуске одного или двух (в зависимости от пропускаемой команды) машинных циклов. Соответственно команды типа Test&Skip выполняются за один машинный цикл, если результат проверки условия отрицателен, и за два или три цикла, если он положителен.

Аналогично, команды безусловного перехода (RJMPи IJMP), команды вызова подпрограммы (RCALL и ICALL) и команды возврата из подпро грамм (RET и RETI) также изменяют содержимое счетчика команд (PC), — 69 — 2. Архитектура микроконтроллеров семейства Classic вызывая тем самым переход в памяти программ. В результате выполнения этих команд происходит «разрыв» в работе конвейера, вследствие чего происходит задержка выполнения программы на несколько машинных циклов. Длительность задержки составляет от двух до четырех машинных циклов в зависимости от команды. Для получения более подробной ин формации обратитесь к описанию команд (глава 3).

По той же причине нарушение нормального функционирования кон вейера происходит и при возникновении прерывания. Минимальная за держка при этом составляет 4 машинных цикла.

2.3.3. Счетчик команд Размер счетчика команд составляет от 9 до 12 разрядов в зависимости от объема адресуемой памяти. При этом счетчик команд недоступен из программы напрямую (как регистр).

При нормальном выполнении программы содержимое счетчика ко манд автоматически увеличивается на 1 (или на 2, в зависимости от вы полняемой команды) в каждом машинном цикле. Этот порядок нарушает ся при выполнении команд перехода, вызова и возврата из подпрограмм, а также при возникновении прерываний.

После включения питания, а также после сброса микроконтроллера в счетчик программ автоматически загружается значение $000. Kак прави ло, по этому адресу располагается команда относительного перехода (RJMP) к инициализационной части программы.

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

2.3.4. Kоманды типа «проверка/пропуск» В командах этого типа производится проверка условия, результат кото рой влияет на выполнение следующей команды. Если условие истинно, следующая команда игнорируется. Например, команда SBRS Rd.bпро веряет разряд b регистра Rd и игнорирует следующую команду, если этот разряд равен «1». В действительности переход к следующей инструкции производится увеличением счетчика команд на 1, а пропуск команды тре бует загрузки нового значения в счетчик команд. Следовательно, когда — 70 — 2. Архитектура микроконтроллеров семейства Classic проверяемое условие истинно, в конвейере возникает задержка. Длитель ность задержки зависит от пропускаемой команды и составляет от одного до двух машинных циклов.

2.3.5. Kоманды условного перехода В этих командах производится проверка условия, результат которой влияет на состояние счетчика команд. Если условие истинно, происходит переход по заданному адресу. Если же условие ложно, выполняется следу ющая команда.

Kоманды условного перехода имеют ограничение по области действия.

В действительности новое значение счетчика команд получается прибав лением к нему или вычитанием из него некоторого смещения. А посколь ку под значение смещения в слове команды отводится всего 7 бит, макси мальная величина перехода составляет от –64 до +64 слов.

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

2.3.6. Kоманды безусловного перехода Для безусловного перехода по требуемому адресу в памяти программ используются команды относительного (RJMP) и косвенного (IJMP) пере ходов, т.к. микроконтроллеры AVR семейства Classic не имеют команды абсолютного перехода (такая команда имеется в микроконтроллерах дру гих семейств, Tiny и Mega). Сразу отметим, что модель AT90S1200 поддер живает только относительную адресацию памяти программ, т.е. в системе команд этой модели отсутствует команда IJMP.

Относительный переход — команда RJMP Деятельность команды заключается в изменении содержимого счетчи ка команд путем прибавления к нему или вычитания из него некоторого значения, являющегося операндом команды, как показано на Рис. 2.29.

Следует помнить, что данная команда имеет ограничение по области действия. Так как операнд представляет собой 12 разрядное число, макси мальная величина перехода составляет от –2047 до +2048 слов (±4 Kбайт).

В программах в качестве операндов этой команды вместо констант ис пользуются метки. Ассемблер сам вычисляет величину перехода и под ставляет это значение в слово команды. Проиллюстрируем сказанное сле дующим примером:

— 71 — 2. Архитектура микроконтроллеров семейства Classic cpi r16,$42 ;

Сравниваем регистр R16 с числом $ brne error ;

Переход, если R16 <> $ rjmp ok ;

Безусловный переход error:

...

ok: nop ;

Место перехода по команде RJMP Поскольку команда относительного перехода изменяет содержимое счетчика команд, она выполняется за 2 машинных цикла.

Память программ 15 PC 15 11 10 КОП k $1FF/3FF/7FF/FFF * Положение разрядов k показано условно Рис. 2.29. Относительная адресация памяти программ Kосвенный переход — команда IJMP В результате выполнения этой команды программа продолжает выпол няться с адреса, находящегося в индексном регистре Z. Таким образом, деятельность команды сводится к загрузке содержимого индексного реги стра в счетчик команд.

В отличие от команды относительного перехода данная команда не имеет ограничений по области действия. Действительно, поскольку ин дексный регистр 16 разрядный, максимально возможная величина пере хода составляет 64 Kслов (128 Kбайт), а наибольший объем памяти про грамм микроконтроллеров семейства — всего 8 Kбайт.

Kак и команда относительного перехода, команда косвенного перехо да выполняется за 2 машинных цикла.

— 72 — 2. Архитектура микроконтроллеров семейства Classic 2.3.7. Kоманды вызова подпрограмм С командами вызова подпрограмм в микроконтроллерах AVR се мейства Classic дело обстоит так же, как и с командами безусловного перехода. Для вызова подпрограмм имеется две команды: команда от носительного вызова (RCALL) и команда косвенного вызова (ICALL). В системе команд модели AT90S1200, разумеется, присутствует только команда RCALL.

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

Kоманда RCALLсохраняет в стеке значение счетчика команд. Затем со держимое счетчика команд увеличивается или уменьшается на некоторое значение, являющееся операндом команды (см. Рис. 2.29). Поскольку операнд представляет собой 12 разрядное число, максимальная величина перехода составляет от –2047 до +2048 слов (±4 Kбайт).

В программах в качестве операндов этой команды, как и в случае ко манды RJMP, используются метки. Ассемблер сам вычисляет величину пе рехода и подставляет это значение в слово команды.

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

Kосвенный вызов подпрограммы — команда ICALL Если не принимать во внимание некоторые отличия, описанные ниже, эта команда работает так же, как и команда косвенного безусловного пе рехода IJMP.

Kоманда ICALLсохраняет в стеке значение счетчика команд. Затем в счетчик команд загружается содержимое индексного регистра. Поскольку индексный регистр 16 разрядный, максимально возможная величина пе рехода составляет 64 Kслов (128 Kбайт). Поэтому данная команда не име ет ограничений по области действия, т.к. наибольший объем памяти про грамм микроконтроллеров семейства — всего 8 Kбайт.

Kак и команда RCALL, команда косвенного вызова подпрограмм вы полняется за 3 машинных цикла.

— 73 — 2. Архитектура микроконтроллеров семейства Classic 2.3.8. Kоманды возврата из подпрограмм В конце каждой подпрограммы обязательно должна находиться коман да возврата из нее. В системе команд микроконтроллеров семейства имеет ся две таких команды. Для возврата из обычной подпрограммы, вызывае мой командами RCALLи ICALL, используется команда RET. Для возврата из подпрограммы обработки прерывания используется команда RETI.

Обе команды восстанавливают из стека содержимое счетчика команд, сохраненное там перед переходом к подпрограмме. Kоманда возврата из подпрограммы RETIдополнительно устанавливает в «1» флаг общего раз решения прерываний I регистра SREG, сбрасываемый аппаратно при воз никновении прерывания.

На выполнение каждой из команд возврата из подпрограммы требует ся 4 машинных цикла.

2.4. Стек Kак известно, существует две разновидности стека — аппаратный стек и программный стек. В микроконтроллерах AVR семейства Classic встре чаются обе разновидности стека (в зависимости от модели). В самом млад шем представителе семейства, микроконтроллере AT90S1200, стек реали зован аппаратно, а во всех остальных моделях — программно.

2.4.1. Стек в микроконтроллере AT90S В микроконтроллере AT90S1200 стек реализован аппаратно. Глубина стека равна трем уровням, а размер равен размеру счетчика команд (9 раз рядов). Стек расположен в собственной области памяти и имеет организа цию LIFO (значение, записанное последним, будет прочитано первым).

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

Непосредственно из программы стек недоступен, т.к. в наборе команд микроконтроллера отсутствуют команды занесения в стек и извлечения из стека. Указатель стека также недоступен из программы, т.е. он не может быть явно прочитан или модифицирован. Поэтому микроконтроллер сам — 74 — 2. Архитектура микроконтроллеров семейства Classic управляет перемещением данных по стеку. Чтобы лучше понять работу стека, обратитесь к Рис. 2.30 и 2.31.

Рассмотрим выполнение команды RCALL(Рис. 2.30): содержимое счет чика команд пересылается на 1 й уровень стека, а предыдущие значения предварительно «сползают» на один уровень (значение, находившееся на первом уровне, перемещается на второй уровень и т.д.). Заметим, что в ре зультате этой операции будет потеряно значение, расположенное на 3 м уровне стека.

При выполнении команды возврата из подпрограммы RET или RETI (Рис. 2.31) значение, хранящееся на 1 м уровне стека, заносится в счетчик команд. Во время этой операции все значения «поднимаются» на один уровень вверх (значение, находившееся на втором уровне, перемещается на первый уровень и т.д.). При этом значение, находящееся на 3 м уровне, остается неизменным.

8 Счетчик команд (PC) Уровень № Стек Уровень № Уровень № Содержимое 3–го уровня теряется Рис. 2.30. Работа стека при выполнении команды CALL 8 Счетчик команд (PC) Уровень № Стек Уровень № Уровень № Содержимое 3–го уровня не меняется Рис. 2.31. Работа стека при выполнении команды RET — 75 — 2. Архитектура микроконтроллеров семейства Classic 2.4.2. Стек в старших моделях микроконтроллеров Во всех моделях микроконтроллеров, за исключением AT90S1200, ис пользуется программный стек. В этом случае стек размещается в памяти данных, и его глубина определяется только размером свободной области памяти программ. В зависимости от объема памяти данных в качестве ука зателя стека используется либо один регистр ввода/вывода SPL, располо женный по адресу $3D ($5D), либо пара регистров SPH:SPL, расположен ных по адресам $3E ($5E) и $3D ($5D) соответственно (см. Табл. 2.2…2.5).

Регистры — указатели стека являются обычными регистрами вво да/вывода и, соответственно, полностью доступны из программы. Kроме того, в наборе команд микроконтроллеров имеются команды занесения в стек (PUSH) и извлечения из стека (POP), что позволяет программе ис пользовать стек для своих нужд. Так как после подачи напряжения пита ния (или после сброса) указатель стека равен нулю, в самом начале про граммы его необходимо проинициализировать, записав в него значение верхнего адреса памяти данных.

При вызове подпрограмм адрес команды, расположенной за командой RCALLили ICALL, сохраняется в стеке. Значение указателя стека при этом уменьшается на 2, т.к. для хранения счетчика команд требуется 2 байта.

При возврате из подпрограммы этот адрес извлекается из стека и загружа ется в счетчик команд. Значение указателя стека соответственно увеличи вается на 2. То же происходит и во время прерывания. При генерации пре рывания адрес следующей команды сохраняется в стеке, а при возврате из подпрограммы обработки прерывания он восстанавливается из стека.

— 76 — Глава 3. Cистема команд 3.1. Общие сведения Микроконтроллеры AVR семейства Classic являются микроконтролле рами с RISC архитектурой. Основным преимуществом этой архитектуры является увеличение быстродействия за счет сокращения количества опе раций обмена с памятью программ. В соответствии с этим принципом в микроконтроллерах AVR практически все команды занимают одну ячейку памяти. Исключение составляют команды, у которых одним из операндов является 16 разрядный адрес программ. Причем такой результат достиг нут не за счет сокращения количества команд процессора, а за счет увели чения разрядности памяти программ до 16.

Большинство команд выполняется за один машинный цикл.

3.2. Операнды Программа для любого микроконтроллера представляет собой после довательность команд, записанных в памяти программ. Большинство ко манд при выполнении изменяют содержимое одного или нескольких ре гистров общего назначения, регистров ввода/вывода или ячеек ОЗУ.

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

Доступ к регистрам ввода/вывода осуществляется по их адресам, явля ющимся операндами команды. Вместе с тем при написании ассемблерных программ гораздо удобнее обращаться к регистрам, используя вместо чис ловых значений адресов их стандартные символические имена, принятые — 77 — 3. Система команд в фирменной документации. Чтобы задать соответствие этих имен реаль ным адресам, необходимо подключить в начале программы (при помощи директивы ассемблера.INCLUDE) файл определения адресов регистров ввода/вывода. Такой подход позволяет облегчить перенос программного обеспечения с одного типа кристалла на другой.

Эти файлы (для каждой модели микроконтроллеров семейства) сво бодно распространяются фирмой «Atmel» вместе с документацией на ми кроконтроллеры (в частности, они находятся на Web сайте фирмы). Для РОН, входящих в состав индексных регистров, в этих файлах определяют ся также дополнительные символические имена (см. Табл. 3.1).

Pages:     || 2 | 3 | 4 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.