Программы
Книги
Статьи

МИКРОКОНТРОЛЛЕРЫ AVR: ОТ ПРОСТОГО К СЛОЖНОМУ
Скачать книгу  

ОГЛАВЛЕНИЕ

Серия «Библиотека инженера» М. С. Голубцов
МИКРОКОНТРОЛЛЕРЫ AVR: ОТ ПРОСТОГО К СЛОЖНОМУ
Москва
СОЛОН-Пресс
2003

М. С. Голубцов
Микроконтроллеры AVR: от простого к сложному / М. С. Голуб¬цов — М.: СОЛОН-Пресс, 2003. 288 с. — (Серия «Библиотека инженера»)
ISBN 5-98003-034-4
Прочитав эту книгу, читатели познакомятся с микроконтроллерами се¬мейства AVR, программным обеспечением, необходимым для конструирова¬ния и программирования схем на основе этих микроконтроллеров, а при же¬лании познакомятся с их применением на практике, собрав какую-либо из описанных в книге практических конструкций. Большая часть программ, опи¬санных в книге, имеется на прилагаемом к книге компакт-диске.
Книга может быть полезна радиолюбителям, студентам, а также всем, кто интересуется применением микроконтроллеров семейства AVR.
К книге прилагается компакт-диск.
Эту книгу можно заказать по почте (наложенным платежом — стоимость 227 руб.) двумя способами:
1) выслать почтовую открытку или письмо по адресу: 123242, Москва, а/я 20;
2) передать заказ по электронной почте (e-mail) по адресу: magazin@solon-r.ru. Необходимо написать полный адрес, по которому выслать книги. Обязательно указывать индекс и Ф. И. О. получателя!
При наличии — указать телефон, по которому с вами можно связаться, и адрес электронной почты (E-mail).
Цена действительна до 15 апреля 2003 г.
Вы можете в любое время получить свежий каталог издательства «СОЛОН-Прссс» по Интернету, послав пустое письмо на робот-автоответчик по адресу
katalog@solon-r.ru,
а также подписаться на рассылку новостей о новых книгах издательства, послав пись¬мо по адресу
ncws@solon-r.ru
с текстом «SUBSCRIBE» (без кавычек) в теле письма.
ISBN 5-98003-034-4 © Макет и обложка «СОЛОН-Пресс», 2003
© М. С. Голубцов, 2003

Введение
Эта книга о микроконтроллерах семейства AVR, производимых известной фирмой Atmel Corporation (www.atmel.com).
Следует отметить, что перед вами не учебник и не инструкция по изготовлению полноценных систем на основе микроконтроллеров, хотя довольно подробно описываются основные их концепции. Не¬льзя рассматривать книгу также как справочник — в ней достаточно много материала, но тем не менее некоторые вопросы могут быть не освещены или освещены недостаточно подробно. Если необходима документальная информация, имеет смысл попутно с чтением книги обращаться к фирменным описаниям микросхем для уточнения. На¬пример, в книге не рассматривается описание процесса программи¬рования микроконтроллера, предполагается, что читатели воспользу¬ются описанием несложного самодельного программатора и готовой программой к нему. Автор книги предоставляет все материалы, про¬граммы и схемы «как есть», без каких-либо гарантий правильности и I соответствия фирменным описаниям и не несет никакой ответствен-• ности по материальному, или другим видам ущерба, причиненным в ^результате использования информации, приведенной в настоящей книге.
Прежде чем говорить о микроконтроллерах, давайте выясним, почему они играют такую большую роль в современном мире. Науч¬но-технический прогресс неутомимо идет вперед, в результате не только в промышленной, но и в бытовой технике все шире использу¬ются встроенные компьютерные системы на основе микроконтрол¬леров. Они широко применяются в персональных компьютерах и их периферийных устройствах, стиральных машинах, музыкальных центрах и т. д. Средний импортный автомобиль имеет порядка 15 микроконтроллеров, управляющих различными системами автомо¬биля.
Основная цель книги — помочь разобраться в том, что такое од¬нокристальный микроконтроллер, как он работает и как на его осно¬ве можно создавать разнообразные устройства, применяющиеся в технике, в быту, в повседневной практической деятельности.

4

Введение

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

Глава 1. Микроконтроллер
1.1. Знакомство с микроконтроллером
В этой главе мы кратко познакомимся с микроконтроллерами. Микроконтроллеры являются сердцем многих современных уст¬ройств и приборов, в том числе и бытовых. Самой главной особенно¬стью микроконтроллеров, с точки зрения конструктора-проектиров¬щика, является то, что с их помощью легче и зачастую гораздо де¬шевле реализовать различные схемы.
На рис. 1.1 изображена структурная схема типичного современ¬ного микроконтроллера.
7-сегментный Матричный _
Эпектродвигатель Светодиод индикатор индикатор 5x7 "ереключатель


Сторожевой таймер
Тактовый генератор

CPU

Таймер реального времени

Таймер

Цепь сброса

Аналоговый порт ввода-вывода

Память программ



¦&
Датчик

5

Рис. 1.1. Структурная схема микроконтроллера

6

Глава 1. Микроконтроллер

Из рисунка видно, что микроконтроллер может управлять раз¬личными устройствами и принимать от них данные при минимуме дополнительных узлов, так как большое число периферийных схем уже имеется непосредственно на кристалле микроконтроллера. Это позволяет уменьшить размеры конструкции и снизить потребление энергии от источника питания.
Для сравнения: при использовании традиционных микропроцес¬соров приходится все необходимые схемы сопряжения с другими устройствами реализовывать на дополнительных компонентах, что увеличивает массу, размеры и потребление электроэнергии.
Давайте рассмотрим типичные схемы, присутствующие в микро¬контроллерах.
1. Центральное процессорное устройство (ЦПУ) — сердце мик¬роконтроллера. Оно принимает из памяти программ коды команд, декодирует их и выполняет. ЦПУ состоит из регистров, арифмети¬ко-логического устройства (АЛУ) и цепей управления.
2. Память программ. Здесь хранятся коды команд, последователь¬ность которых формирует программу для микроконтроллера.
3. Оперативная память данных. Здесь хранятся переменные про¬грамм. У большинства микроконтроллеров здесь расположен также стек.
4. Тактовый генератор. Этот генератор определяет скорость рабо¬ты микроконтроллера.
5. Цепь сброса. Эта цепь служит для правильного запуска микро¬контроллера.
6. Последовательный порт — очень полезный элемент микрокон¬троллера. Он позволяет обмениваться данными с внешними устрой¬ствами при малом количестве проводов.
7. Цифровые линии ввода/вывода. По сравнению с последовате¬льным портом с помощью этих линий возможно управлять одновре¬менно несколькими линиями (или проверять несколько линий).
8. Таймер. Используется для отсчета временных интервалов.
9. Сторожевой таймер. Это специальный таймер, предназначен¬ный для предотвращения сбоев программы. Он работает следующим образом: после запуска он начинает отсчет заданного временного ин¬тервала. Если программа не перезапустит его до истечения этого ин¬тервала времени, сторожевой таймер перезапустит микроконтрол-

Разработка конструкций на микроконтроллерах 7
лер. Таким образом, программа должна давать сторожевому таймеру сигнал — все в порядке. Если она этого не сделала, значит, по ка¬кой-либо причине произошел сбой.
}
1.2. Разработка конструкций
на микроконтроллерах
Итак, теперь, когда мы имеем первоначальное представление о .микроконтроллерах и о том, что можно сделать с их помощью, ', пришло время поговорить о создании конструкций на микроконт¬роллерах.
Один из вариантов последовательности действий при разработке конструкций на микроконтроллерах приведен ниже.
1. Во-первых, очень важно точно определить технические требо¬
вания к конструкции, причем делать это следует письменно — обыч-
| но в процессе записи выявляется много нюансов, не сразу заметных I при обдумывании конструкций.
2. Составить подробное описание конструкции так называемого
I верхнего уровня — на этом этапе еще неизвестно ни типа микрокон-
I троллера, ни типа использованных микросхем и схемных решений,
поэтому структурная схема представляет собой набор прямоугольни¬ков, подписанных наименованием узла, например АЦП. Составляет-1 ся обобщенная блок-схема, описывающая работу программы. Если нужно — временные диаграммы.
3. Определиться с выбором аппаратных узлов (микросхем и т. д.) для схемы.
4. Выбрать тип микроконтроллера.
5. Убедиться в том, что микроконтроллер подходит для реализа¬ции схемы. Следует учитывать быстродействие микроконтроллера, наличие нужной периферии, число линий ввода/вывода, потребляе¬мую мощность и другие, существенные для конкретной конструкции параметры. Не следует «бить из пушки по воробьям» — использо¬вать более мощный микроконтроллер для простейшей задачи, с кото¬рой может справиться и более простой (и более дешевый). С другой стороны, не следует увлекаться слабыми микроконтроллерами, усложняя схему, добавляя схему увеличения числа выводов, так как

8

Глава 1. Микроконтроллер



достаточно часто (но не всегда) экономия, полученная за счет приме¬нения более дешевого микроконтроллера, полностью теряется из-за увеличившейся стоимости печатной платы (ведь ее размеры увели¬чились), стоимости дополнительных элементов и т. д.
6. Теперь следует определиться, какие инструменты (программы) будут использоваться для разработки программы для микроконтролле¬ра. Это может быть транслятор языка ассемблер или компилятор языка высокого уровня, чаще всего С.
7. После того как стали известны используемые узлы микроконт¬роллера и внешние схемы, подключаемые к нему, можно приступать к написанию и отладке программы. Целесообразно разделить конст¬рукцию на функциональные узлы и отлаживать их следующим обра- j зом: изготовить часть схемы, реализующей собой один из узлов, на¬писать фрагмент программы, управляющей этим узлом, и отладить его. После этого аналогично работать со следующим узлом, и так до ' тех пор, пока все части схемы не будут отлажены отдельно друг от друга. При этом можно пользоваться уже отлаженными узлами для облегчения проверки правильности работы следующих, только отла¬живаемых узлов. Например, для простого калькулятора можно выде¬лить следующие узлы: индикатор, клавиатура. Отлаживая индика¬тор, можно написать программу, выводящую на индикатор какое-ли¬бо число. Затем, отлаживая клавиатуру, можно использовать индикатор для вывода, например, номера нажатой клавиши. И толь¬ко убедившись, что оба узла работают верно, следует переходить к реализации программы собственно калькулятора.
8. Теперь следует объединить все части схемы воедино и отла¬дить их работу совместно. Если в процессе объединения обнаружит¬ся, что какой-либо из узлов реализован не совсем удачно, следует вернуться в предыдущий пункт.
9. Очень важно в процессе составления схемы конструкции и на-; писания программы для нее как можно более подробно документи¬ровать все изменения в схеме или программе. Это очень важно не только для записи проделанной работы (а в хорошо документиро¬ванной схеме и программе можно быстро разобраться при необходи¬мости ее повторного использования), но и для облегчения дальней¬шего усовершенствования или обслуживания собранной системы.

Микроконтроллеры семейства AVR

9

10. Заключительный этап относится к случаям, когда спроектиро¬ванная конструкция будет производиться, — подготовка чертежей принципиальной электрической схемы, печатной платы, специфика¬ций в соответствии со стандартами, принятыми в месте, где будет осу¬ществляться производство конструкции. -
1.3. Микроконтроллеры семейства AVR
AVR — это новое семейство 8-разрядных RISC-микроконтроллеров
i фирмы Atmel. Эти микроконтроллеры позволяют решать множество за¬дач встроенных систем. Они отличаются от других распространенных в
| настоящее время микроконтроллеров большей скоростью работы, боль¬шей универсальностью. Быстродействие данных микроконтроллеров
' позволяет в ряде случаев применять их в устройствах, для реализации
' которых ранее можно было применять только 16-разрядные микроконт¬роллеры, что позволяет ощутимо удешевить готовую систему. Кроме
I того, микроконтроллеры AVR очень легко программируются — про-
I стейший программатор можно изготовить самостоятельно буквально в
[течение 30 минут!
По заявлению фирмы-производителя микроконтроллеров
I (www.atmel.com) микроконтроллеры семейства AVR можно пере¬программировать до 1000 раз, причем непосредственно в собранной
[схеме.
Все это делает эти микроконтроллеры очень привлекательными
[для создания новых разработок.
Почему именно AVR?
Микроконтроллеры AVR разработаны фирмой Atmel и обладают следующими основными характеристиками:
• очень быстрая гарвардская RISC-архитектура загрузки и вы¬полнения большинства инструкций в течение ОДНОГО цикла тактового генератора. При этом достигается скорость работы примерно 1 MIPS на МГц. Частота тактового генератора мно¬гих типов микроконтроллеров AVR может достигать 10... 16 МГц (10... 16 MIPS!) (MIPS — Millions Instructions per Se¬cond — миллионов операций в секунду). Отсутствует внутрен-

10

Глава 1. Микроконтроллер

нее деление частоты, как, например, в микроконтроллерах PIC, Таким образом, если использован кварцевый резонатор с частое той 16 МГц, микроконтроллер будет работать с быстродействи-1 ем почти 16 MIPS;
• программы содержатся в электрически перепрограммируемой постоянной памяти программ FLASH ROM. Эта память может быть перепрограммирована до 1000 раз. Это облегчает настрой¬ку и отладку систем. Кроме того, возможность внутрисхемного программирования позволяет не вынимать микроконтроллер из целевой схемы в процессе программирования, что значительно ускоряет процесс разработки систем на основе этих микроконт¬роллеров;
• система команд микроконтроллеров AVR изначально проекти¬ровалась с учетом особенностей языка программирования вы¬сокого уровня С, что в результате позволяет получать после компиляции программ на С гораздо более эффективный код, чем для других микроконтроллеров. А это уже выигрыш и в размере полученного кода (в объеме памяти на кристалле), и в скорости работы микроконтроллера;
• микроконтроллеры AVR имеют 32 регистра, все из которых на¬прямую работают с АЛУ. Это значительно уменьшает размер программ. В других микроконтроллерах, как правило, для осу¬ществления, например, сложения один из операндов обязатель¬но должен находиться в специальном регистре — аккумулято¬ре. Таким образом, необходимо сначала его туда занести, затем после выполнения операции результат из аккумулятора нужно переписать в регистр для хранения результата. Итого получает¬ся уже три команды. В микроконтроллерах AVR то же самое займет всего одну команду;
• очень небольшое потребление энергии и наличие нескольких режимов работы с пониженным потреблением энергии делает эти микроконтроллеры идеальными для применения в конст¬рукциях, питающихся от батареек;
• наличие дешевых и простых в использовании программных средств. Многие полноценные программы доступны в свободно распространяемом варианте, как, например, отладчик AVR Stu-. dio, ассемблер Wavrasm, множество версий программаторов и

Микроконтроллеры семейства AVR ц
даже компилятор языка С — avr gcc. Некоторые из этих про-^грамм имеются на компакт-диске, прилагаемом к книге;
• узлы PWM (широтно-импульсная модуляция), таймеры/счетчи¬ки, аналоговый компаратор и последовательный порт UART встроены в микроконтроллеры и могут управляться с помощью прерываний, что значительно упрощает работу с ними;
• имеются относительные команды переходов и ветвлений, что позволяет получать перемещаемый код;
• отсутствует необходимость переключать страницы памяти (в отличие, например, от микроконтроллеров PIC);
• все микроконтроллеры AVR имеют электрически перепрограм¬мируемую постоянную память данных EEPROM, которая мо¬жет быть перепрограммирована более 100 000 раз!
Имеется три подсемейства микроконтроллеров AVR:
1. tiny AVR — недорогие миниатюрные микроконтроллеры в 8-выводном исполнении;
2. Classic AVR — основная линия микроконтроллеров с произво¬дительностью отдельных модификаций до 16 MIPS, FLASH-памятью программ 2...8 Кб, памятью данных EEPROM 64...512 байт, опера¬тивной памятью данных SRAM 128...512 байт;
3. mega AVR с производительностью 4... 16 MIPS для сложных приложений, требующих большого объема памяти, FLASH-памятью программ до 128 Кб, памятью данных EEPROM 64...512 байт, опера¬тивной памятью данных SRAM 2...4 Кб, встроенным 10-разрядным
' 8-канальным АЦП, аппаратным умножителем 8x8.
Интересной особенностью семейства микроконтроллеров AVR является то, что система команд всего семейства совместима при пе¬реносе программы со слабого на более мощный микроконтроллер.
На рис. 1.2 и 1.3 приведены таблицы с характеристиками имею¬щихся в настоящее время и анонсированных к выпуску микроконт¬роллеров семейства AVR.
• По мнению автора, AT90S2313 — наиболее удобный микроконт¬роллер для первоначального знакомства. Он имеет почти все базовые периферийные устройства, присутствующие в микроконтроллерах \ серии AVR и отличается от более мощных только меньшим числом линий ввода/вывода, размером памяти программ, данных, числом таймеров (тем не менее он имеет два таймера: 8- и 16-разрядный).

14

Глава 1. Микроконтроллер

В результате вполне справедливо будет сказать, что, изучив в доста¬точной степени микросхему AT90S2313, читатели легко смогут ис¬пользовать более мощные микроконтроллеры. Микроконтроллер AT90S1200 не подходит для этой цели по причине отсутствия у него оперативной памяти данных — SRAM, что значительно отличает его возможности от остальных микроконтроллеров семейства.
По этой причине во второй главе приводится достаточно подроб¬ное описание микроконтроллера AT90S2313. Совсем нет необходи¬мости изучать эту главу страница за страницей, хотя прочесть хотя бы обзорно ее стоит. Те, кто хочет поскорее перейти к практическо¬му изготовлению каких-либо схем, могут просмотреть главу 4, где описаны программы для работы с микроконтроллерами семейства AVR, и переходить к главам 5 и 6, содержащим описания фрагмен¬тов схем и завершенных схем. В дальнейшем можно обращаться к главе 2 как к справочному пособию при возникновении вопросов и разборе работы той или иной схемы.

Глава 2.
Описание микроконтроллера AT90S2313 фирмы Atmel
AT90S2313 — современный 8-битовый КМОП-микроконтрол-лер. ATJ90S2313 имеет производительность около 1 MIPS на мега¬герц за счет того, что почти все команды он выполняет за один пери¬од тактового генератора.
Микроконтроллеры семейства AVR построены на основе расши¬ренной RISC-архитектуры, объединяющей развитый набор команд и 32 регистра общего назначения. Все 32 регистра непосредственно подключены к арифметико-логическому устройству (АЛУ), что дает доступ к любым двум регистрам в течение одного машинного цикла. Подобная архитектура обеспечивает почти десятикратный выигрыш в производительности по сравнению с традиционными микроконт¬роллерами, например, серии 8051.
Микроконтроллер AT90S2313 имеет следующие характеристики: 2 Кб загружаемой флэш-памяти; 128 байтов EEPROM; 15 линий вво¬да/вывода общего назначения; 32 рабочих регистра; два тайме¬ра/счетчика, один 8-разрядный, другой 16-разрядный; внешние и внутренние прерывания; встроенный последовательный порт; про¬граммируемый сторожевой таймер со встроенным генератором; по¬следовательный порт SPI для загрузки программ; два выбираемых программно режима низкого энергопотребления.
Флэш-память на кристалле может быть перепрограммирована прямо в системе через последовательный интерфейс SPI.
2.1. Описание выводов
VCC — вывод источника питания.
GND -^ общий провод («земля»).
PORT В (РВ7...РВ0) — порт В является 8-битовым двунаправлен¬ным параллельным портом ввода/вывода с встроенными подтягива¬ющими резисторами. У выводов порта предусмотрены внутренние

16 Глава 2. Описание микроконтроллера AT90S2313

подтягивающие резисторы (их можно включать или выключать для каждого бита отдельно). Выводы РВО и РВ1 также являются положи¬тельным (AIN0) и отрицательным (AIN1) входами встроенного ана¬логового компаратора. Выходные буферы порта В могут поглощать ток до 20 мА и непосредственно управлять светодиодными индика¬торами. Это означает, что микроконтроллер способен управлять на¬грузкой до 20 мА при состоянии логического 0 на выходе порта. Та¬ким образом, для управления светодиодом его следует подсоединить одним выводом к выводу порта микроконтроллера, а другим — к на¬пряжению питания +Vcc. Соответственно светиться светодиод (а значит, и потреблять ток) будет при значении 0 на соответствую¬щей линии порта. Если выводы РВ0...РВ7 используются как входы и извне устанавливаются в низкое состояние, они являются источника¬ми тока, если включены внутренние подтягивающие резисторы. Кро¬ме того, порт В обслуживает некоторые специальные функции, кото¬рые будут описаны ниже.
PORT D (PD6...PD0) — порт D является 7-битовым двунаправ¬ленным параллельным портом ввода/вывода с встроенными подтяги¬вающими резисторами. Выходные буферы порта D также могут по¬глощать ток до 20 мА. Как входы, установленные в низкое состоя¬ние, выводы порта D являются источниками тока, если
задействованы подтягивающие
резисторы. Кроме того, порт D
PDIP/SOIC обслуживает некоторые специа-
RESET[7
(RXD) PD0 |Т
(TXD) PD1 [Т
XTAL2JT
XTAL1 [Т
(INTO) PD2 \б_
(INT1) PD3 \Т
(ТО) PD4 \в_
(Т1) PD5 [Т
GND[IO
20|VCC l|] РВ7 (SCK) l|] РВ6 (MISO) Ti\ РВ5 (MOSI) 1б]РВ4
1б]рвз(ОС1)
1f]PB2 13] РВ1 (AIN1) l| РВО (AIN0) 1l] PD6 (ICP)
льные функции, которые будут описаны ниже.
RESET — вход сброса. Удер¬жание на входе низкого уровня в течение двух машинных циклов (если работает тактовый генера¬тор), перезапускает микроконт¬роллер.
XTAL1 — вход инвертирую¬щего усилителя генератора и вход внешнего тактового сигнала.
Рис. 2.1. Выводы микроконтроллера AT90S2313
XTAL2 — выход инвертиру¬ющего усилителя генератора.

Обзор архитектуры AT90S2313 17
Кварцевый генератор
Выводы ХТАЫ и XTAL2 являются входом и выходом инверти¬рующего усилителя, на котором можно собрать генератор тактовых импульсов. Можно использовать как кварцевые, так и керамические резонаторы. Если нужно использовать внешний тактовый сигнал, он подается на вывод XTAL1, а вывод XTAL2 при этом остается непод¬ключенным.



С2
С1

Т
X



Рис. 2.2. Подключение
кварцевого резонатора к
микроконтроллеру

Рис. 2.3. Подключение внешнего источника тактовых импульсов

2.2. Обзор архитектуры AT90S2313
Файл регистров общего назначения
Регистровый файл микроконтроллера содержит 32 8-разрядных регистра общего назначения, доступ к которым осуществляется за один машинный цикл. Благодаря этому микроконтроллер может вы¬полнить большинство команд за один цикл тактовой частоты.
АЛУ поддерживает арифметические и логические операции с ре¬гистрами, с константами и регистрами.
Кроме регистровых операций, для работы с регистровым файлом могут использоваться доступные режимы адресации, так как регист¬ровый файл занимаег адреса $00-$IF в области данных, обращаться к ним можно и как к ячейкам памяти.

18 Глава 2. Описание микроконтроллера AT90S2313
Пространство ввода/вывода состоит из 64 адресов для перифе¬рийных функций процессора, таких, как управляющие регистры,. таймеры/счетчики и др. Доступ к пространству ввода/вывода может осуществляться непосредственно как к ячейкам памяти, расположен¬ным после регистрового файла ($20—$5F).
Большинство команд, использующих регистры, могут использо¬вать любые регистры общего назначения. Исключение составляют пять команд, оперирующих с константами: SBCI, SUBI, CPI, ANDI, ORI и команда LDI, загружающая регистр константой. Эти команды работают только со второй половиной регистрового файла — R16...R31.
Каждому регистру присвоен адрес в пространстве данных, они отображаются на первые 32 ячейки ОЗУ. Хотя регистровый файл фи¬зически размещен вне ОЗУ, подобная организация памяти дает гиб¬кий доступ к регистрам.
Шесть из 32 регистров — R26...R31 —¦ можно использовать как три 16-разрядных адресных указателя в адресном пространстве дан¬ных. Один из трех адресных указателей (регистр Z) можно использо¬вать для адресации таблиц в памяти программ. Эти регистры обозна¬чаются как X, Y, Z и определены следующим образом:

X - регистр
Y-регистр

15 0
h 0|7 °l
15 R27 ($18) R26 ($1A) 0
h 0|7 °l
15 R29 ($1D) R28 ($1C) 0
h 0|7 °l
Z - регистр
R31($1F) R30($1E)
Рис. 2.4. Регистры X, Y, Z
При различных режимах адресации эти регистры могут использо¬ваться как фиксированный адрес, для адресации с автоинкрементом или с автодекрементом.

Обзор архитектуры AT90S2313 ig
При разработке микроконтроллеров семейства AVR была испо¬льзована так называемая гарвардская архитектура. Смысл ее состоит в том, что память программ и данных программы располагается в разных областях памяти. На рис. 2.5 изображена структура памяти микроконтроллеров AVR.
Доступ к памяти программ осуществляется следующим образом: во время выполнения одной команды следующая команда выбирает¬ся из памяти программ. Это дает возможность выполнять по одной команде за каждый машинный цикл.
При помощи команд относительных переходов и вызова под¬программ осуществляется доступ ко всему адресному пространству. Большая часть команд микроконтроллеров AVR имеет размер 16-разрядов одно слово. Каждый адрес в памяти программ содержит одну 16- или 32-разрядную команду.
При обработке прерываний и вызове подпрограмм адрес возврата запоминается в стеке. Стек размещается в оперативной памяти дан¬ных общего назначения (SRAM), его размер ограничен только разме¬ром доступной памяти SRAM и ее использованием в программе. Все программы пользователя должны инициализировать указатель стека (SP) сразу после запуска микроконтроллера, до того как вызываются подпрограммы и разрешаются прерывания. Исключение составляют

Рис. 2.5. Структура памяти микроконтроллеров AVR
Память программ Память данных

20 Глава 2. Описание микроконтроллера AT90S2313
микроконтроллеры, не имеющие оперативной памяти данных (SRAM), например, AT90S1200. У этих микроконтроллеров реализо¬ван аппаратный стек глубиной 3. Это обязательно следует учитывать при написании для них программ.
Все пространство памяти AVR является линейным и непрерыв¬ным.
Модуль прерываний имеет собственный управляющий регистр в пространстве ввода/вывода, и флаг глобального разрешения пре¬рываний в регистре состояния. Каждому прерыванию назначен свой вектор в начальной области памяти программ. Различные пре¬рывания имеют приоритет в соответствии с расположением их век¬торов. По младшим адресам расположены векторы с большим при¬оритетом.
Режимы адресации
Прямая регистровая адресация с одним регистром Rd
Данные, над которыми осуществляется операция (или использу¬ются при выполнении операции), находятся в регистре d (Rd).
Прямая регистровая адресация с двумя регистрами — Rd и Rr
Данные, над которыми осуществляется операция, находятся в ре¬гистрах г (Rr) и d (Rd). Результат операции сохраняется в регистре d (Rd).


Регистровый файл
15 4 0
| КОП | d |









31


Регистровый файл
15 9 54 0
| КОП | г | d |

















Рис. 2.6. Прямая регистровая адресация с одним регистром

Рис. 2.7. Прямая регисгровая адресация с двумя регистрами

Обзор архитектуры AT90S2313 25
Арифметико-логическое устройство
Арифметико-логическое устройство (АЛУ) микроконтроллера непосредственно подключено к 32 регистрам общего назначения. За
I один машинный цикл АЛУ производит операции между регистрами регистрового файла. АЛУ может выполнять арифметические, логи-
•ческие и битовые операции.
Память программ
AT90S2313 содержит 2 Кб флэш-памяти для хранения программ. Флэш-память организована как IK х 16. В фирменном описании микроконтроллера утверждается, что флэш-память можно перепрог¬раммировать до 1000 раз.
Программный счетчик имеет ширину 10 битов и позволяет адре¬совать 1024 слов памяти программ.
Способы занесения информации (т. е. программ) во флэш-память микроконтроллера будут рассмотрены дальше.
EEPROM память данных
AT90S2313 содержит 128 байтов электрически стираемой энерго¬независимой памяти (EEPROM). EEPROM организована как отдель¬ная область данных, каждый байт которой может быть прочитан и при необходимости перезаписан. EEPROM выдерживает не менее 100 000 циклов записи/стирания. К этой памяти может обращаться программа, считывая или записывая какие-либо данные. Кроме того, данные в эту память можно занести с помощью специального устройства — программатора, на этапе изготовления и программиро¬вания конструкции. Ее удобно использовать для хранения каких-ли-i бо констант.
Оперативная память данных
На рис. 2.17 показана организация памяти данных в AT90S2313. 224 ячейки памяти включают в себя регистровый файл, память ввода/вывода и оперативную память данных.

Обзор архитектуры AT90S2313 29
При использовании специальных команд IN, OUT, SBIS и SBIC должны использоваться адреса $00...$3F. При доступе к регистру ввода/вывода как к ячейке ОЗУ к его адресу необходимо добавить $20. В приведенной выше таблице адреса регистров в памяти данных приведены в скобках.
Регистр состояния — SREG
Бит 7 6543210
$3F <S5F) |||T|H|S|V|N|Z|C| SREG
ЧтЛап. R/W R/W R/W R/W R/W R/W R/W R/W
Нач. знач. 00000000
Рис. 2.18. Регистр состояния
Регистр состояния расположен по адресу $3F ($5F) пространства ввода/вывода и определен следующим образом:
Бит 7 — I: общее разрешение прерываний. Для разрешения пре¬рываний этот бит должен быть установлен в единицу. Управление отдельными прерываниями производится регистрами маски преры¬ваний — GIMCK и TIMCK. Если бит 1 = 0, независимо от состояния GIMCK/TIMCK прерывания запрещены. Бит I обнуляется аппаратно после входа в прерывание и восстанавливается в состояние 1 коман¬дой возврата из подпрограммы обработки прерываний RETI, для раз¬решения обработки последующих прерываний.
Бит 6 — Т: хранение копируемого бита. Бит из регистра регист¬рового файла может быть скопирован в Т командой BST, бит Т мо¬жет быть скопирован в бит регистрового файла командой BLD.
Бит 5 — Н: флаг половинного переноса. Этот флаг индицирует перенос из младшей половины байта при некоторых арифметических операциях. Подробнее об этом можно прочитать в описании системы команд.
Бит 4 — S: бит знака, S = N XOR V. Бит S равен исключающему ИЛИ между флагами N (отрицательный результат) и V (переполне¬ние дополнения до двух). Если после операций сложения или вычи¬тания чисел со знаком флаг переполнения V будет установлен в 1, то результатом будет 9-разрядное число, причем старшим (т. е. знако¬вым) разрядом числа будет флаг S, а 8 остальных битов результата

Содержание
ВВЕДЕНИЕ 3
ГЛАВА 1. МИКРОКОНТРОЛЛЕР 5
1.1. Знакомство с микроконтроллером 5
1.2. Разработка конструкций на микроконтроллерах 7
1.3. Микроконтроллеры семейства AVR 9
Почему именно AVR? 9
ГЛАВА 2. ОПИСАНИЕ МИКРОКОНТРОЛЛЕРА
AT90S2313 ФИРМЫ ATMEL 15
2.1. Описание выводов 15
Кварцевый генератор 17
2.2. Обзор архитектуры AT90S2313 17
Файл регистров общего назначения 17
Режимы адресации 20
Арифметико-логическое устройство 25
Память программ 25
EEPROM память данных 25
Оперативная память данных 25
Время выполнения команд 27
Регистр состояния — SREG 29
Указатель стека SP 30
2.3. Перезапуск микроконтроллера (сброс) и обработка прерываний ... 31
Источники сброса 32
Сброс по включении питания 33
Внешний сброс 33
Сброс по сторожевому таймеру 33
2.4. Обработка прерываний . 33
Внешние прерывания 37
Время реакции на прерывание 38
2.5. Режимы пониженного энергопотребления 40
Режим холостого хода 40
Экономичный режим 41
2.6. Таймеры/счетчики 41
8-разрядный таймер/счетчик 0 41
16-разрядный таймер/счетчик 1 44
Таймер/счетчик в режиме ШИМ 49
Сторожевой таймер 51
2.7. Чтение и запись в энергонезависимую память 53
2.8. Универсальный асинхронный приемопередатчик 55
Передача данных 56
Прием данных 57
Управление UART 59
Генератор скорости передачи 62

Содержание

285

2.9. Аналоговый компаратор 63
2.10. Порты ввода/вывода 65
Порт D 68
Порт D как порт ввода/вывода общего назначения 69
Альтернативные функции порта D 70
2.11. Программирование памяти 70
Программирование битов блокировки памяти 70
Биты конфигурации (Fuse bits) 71
Код устройства 71
2.12. Параметры микроконтроллера AT90S2313 71
Максимально допустимые параметры .ч 72
Характеристики по постоянному току 72
Параметры внешнего тактового сигнала 73
Варианты исполнения микроконтроллера 74
2.13. Набор команд AT90S2313 74
Арифметические и логические команды 74
' Команды ветвления 75
Команды пересылки 77
Команды работы с битами 78
ГЛАВА 3. ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ
МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА AVR 80
3.1. Источник питания 80
Батарейное питание 81
Питание от сети 81
Питание от линий портов 81
3.2. Внешние элементы тактового генератора , 82
Использование кварцевого резонатора 82
Использование встроенного RC-генератора 83
3.3. Цепь сброса 83
ГЛАВА 4. ПРОГРАММЫ И ИНСТРУМЕНТЫ 84
4.1. Ассемблер 84
Начало работы 85
Ассемблирование первой программы 85
Поиск и исправление ошибок 86
Формат программы на ассемблере 88
Команды микроконтроллера 89
Директивы транслятора ассемблера 89
Выражения 100
Описание программы WAVRASM 104
Версия ассемблера для командной строки 107
Формат файлов, генерируемых транслятором ассемблера .... 107
4.2. Компилятор языка С Code Vision AVR 110
Изготовление кабеля для внутрисхемного
программирования «STK200/300» ..... Г 112
Простая демонстрационная схема
на микроконтроллере AT90S8535 113

286

Содержание

Использование встроенного программатора Code Vision 114
Примеры программ для компилятора Code Vision AVR С . . . . 116
4.3. Компилятор Imagecraft С 135
4.4. Компилятор языка С AVR GCC 137
4.5. Программатор 146
ГЛАВА 5. ОСНОВНЫЕ СХЕМНЫЕ РЕШЕНИЯ
ИНТЕРФЕЙСОВ 164
5.1. Параллельные выходы 164
Управление светодиодами или оптронами 164
Управление реле 166
Управление светодиодными цифровыми индикаторами 167
5.2. Параллельные входы 168
Кнопки и переключатели 169
ГЛАВА 6. ПРАКТИЧЕСКИЕ ПРИМЕРЫ ПРИМЕНЕНИЯ
МИКРОКОНТРОЛЛЕРОВ AVR 171
6.1. 10-разрядный светодиодный индикатор на AT90S1200 171
6.2. Управление синтезатором частоты
радиостанции «Маяк» 172
6.3. Синтезатор частоты для УКВ ЧМ-радиостанции 177
6.4. Телеграфный манипулятор 181
6.5. Частотомер до 7200 кГц 183
6.6. Частотомер (шкала для UW3DI) 184
6.7. Книгочей 187
6.8. Преобразование DTMF-сигнала в импульсный 190
6.9. Многоточечный термометр 192
6.10. Ключ для защиты от копирования 194
6.11. Кодовый замок 200
6.12. Музыкальный звонок 212
6.13. Универсальный расширитель последовательного порта 216
6.14. Таймер 218
6.15. Универсальный параллельный адаптер 225
6.16. Электронные часы с будильником на AT90S2313-10PI 229
6.17. Подключение внешнего статического оперативного запоминающего устройства 234
Интерфейс для подключения внешней памяти 234
Пример подключения внешней оперативной памяти
к микроконтроллеру AT90S8515 236
Отладка программы 243
Программа записи данных в ОЗУ 512 Кбайт 264
ГЛАВА 7. ИДЕИ ДЛЯ ПРОЕКТОВ 275
Приложение 1. Вопросы и ответы 280
Приложение 2. Полезные ссылки в Интернет 283
 


Содержание
ВВЕДЕНИЕ 3
ГЛАВА 1. МИКРОКОНТРОЛЛЕР 5
1.1. Знакомство с микроконтроллером 5
1.2. Разработка конструкций на микроконтроллерах 7
1.3. Микроконтроллеры семейства AVR 9
Почему именно AVR? 9
ГЛАВА 2. ОПИСАНИЕ МИКРОКОНТРОЛЛЕРА
AT90S2313 ФИРМЫ ATMEL 15
2.1. Описание выводов 15
Кварцевый генератор 17
2.2. Обзор архитектуры AT90S2313 17
Файл регистров общего назначения 17
Режимы адресации 20
Арифметико-логическое устройство 25
Память программ 25
EEPROM память данных 25
Оперативная память данных 25
Время выполнения команд 27
Регистр состояния — SREG 29
Указатель стека SP 30
2.3. Перезапуск микроконтроллера (сброс) и обработка прерываний ... 31
Источники сброса 32
Сброс по включении питания 33
Внешний сброс 33
Сброс по сторожевому таймеру 33
2.4. Обработка прерываний . 33
Внешние прерывания 37
Время реакции на прерывание 38
2.5. Режимы пониженного энергопотребления 40
Режим холостого хода 40
Экономичный режим 41
2.6. Таймеры/счетчики 41
8-разрядный таймер/счетчик 0 41
16-разрядный таймер/счетчик 1 44
Таймер/счетчик в режиме ШИМ 49
Сторожевой таймер 51
2.7. Чтение и запись в энергонезависимую память 53
2.8. Универсальный асинхронный приемопередатчик 55
Передача данных 56
Прием данных 57
Управление UART 59
Генератор скорости передачи 62

Содержание

285

2.9. Аналоговый компаратор 63
2.10. Порты ввода/вывода 65
Порт D 68
Порт D как порт ввода/вывода общего назначения 69
Альтернативные функции порта D 70
2.11. Программирование памяти 70
Программирование битов блокировки памяти 70
Биты конфигурации (Fuse bits) 71
Код устройства 71
2.12. Параметры микроконтроллера AT90S2313 71
Максимально допустимые параметры .ч 72
Характеристики по постоянному току 72
Параметры внешнего тактового сигнала 73
Варианты исполнения микроконтроллера 74
2.13. Набор команд AT90S2313 74
Арифметические и логические команды 74
' Команды ветвления 75
Команды пересылки 77
Команды работы с битами 78
ГЛАВА 3. ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ
МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА AVR 80
3.1. Источник питания 80
Батарейное питание 81
Питание от сети 81
Питание от линий портов 81
3.2. Внешние элементы тактового генератора , 82
Использование кварцевого резонатора 82
Использование встроенного RC-генератора 83
3.3. Цепь сброса 83
ГЛАВА 4. ПРОГРАММЫ И ИНСТРУМЕНТЫ 84
4.1. Ассемблер 84
Начало работы 85
Ассемблирование первой программы 85
Поиск и исправление ошибок 86
Формат программы на ассемблере 88
Команды микроконтроллера 89
Директивы транслятора ассемблера 89
Выражения 100
Описание программы WAVRASM 104
Версия ассемблера для командной строки 107
Формат файлов, генерируемых транслятором ассемблера .... 107
4.2. Компилятор языка С Code Vision AVR 110
Изготовление кабеля для внутрисхемного
программирования «STK200/300» ..... Г 112
Простая демонстрационная схема
на микроконтроллере AT90S8535 113

286

Содержание

Использование встроенного программатора Code Vision 114
Примеры программ для компилятора Code Vision AVR С . . . . 116
4.3. Компилятор Imagecraft С 135
4.4. Компилятор языка С AVR GCC 137
4.5. Программатор 146
ГЛАВА 5. ОСНОВНЫЕ СХЕМНЫЕ РЕШЕНИЯ
ИНТЕРФЕЙСОВ 164
5.1. Параллельные выходы 164
Управление светодиодами или оптронами 164
Управление реле 166
Управление светодиодными цифровыми индикаторами 167
5.2. Параллельные входы 168
Кнопки и переключатели 169
ГЛАВА 6. ПРАКТИЧЕСКИЕ ПРИМЕРЫ ПРИМЕНЕНИЯ
МИКРОКОНТРОЛЛЕРОВ AVR 171
6.1. 10-разрядный светодиодный индикатор на AT90S1200 171
6.2. Управление синтезатором частоты
радиостанции «Маяк» 172
6.3. Синтезатор частоты для УКВ ЧМ-радиостанции 177
6.4. Телеграфный манипулятор 181
6.5. Частотомер до 7200 кГц 183
6.6. Частотомер (шкала для UW3DI) 184
6.7. Книгочей 187
6.8. Преобразование DTMF-сигнала в импульсный 190
6.9. Многоточечный термометр 192
6.10. Ключ для защиты от копирования 194
6.11. Кодовый замок 200
6.12. Музыкальный звонок 212
6.13. Универсальный расширитель последовательного порта 216
6.14. Таймер 218
6.15. Универсальный параллельный адаптер 225
6.16. Электронные часы с будильником на AT90S2313-10PI 229
6.17. Подключение внешнего статического оперативного запоминающего устройства 234
Интерфейс для подключения внешней памяти 234
Пример подключения внешней оперативной памяти
к микроконтроллеру AT90S8515 236
Отладка программы 243
Программа записи данных в ОЗУ 512 Кбайт 264
ГЛАВА 7. ИДЕИ ДЛЯ ПРОЕКТОВ 275
Приложение 1. Вопросы и ответы 280
 

 
Сайт управляется системой uCoz