WWW.DISSERS.RU

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

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


Pages:     || 2 | 3 | 4 | 5 |   ...   | 8 |
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования «ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» Утверждаю Зав. каф. Промышленной и медицинской электроники, профессор д.т.н.

Г.С. Евтушенко «_»_2009г.

Г.С. Воробьева М.В. Журавлев Д.П. Упадышев А.М. Штейн Микроконтроллеры семейства AVR Лабораторный практикум Методические рекомендации к выполнению цикла лабораторных работ по дисциплине «Основы микропроцессорной техники» для студентов направлений 210100 «электроника и микроэлектроника» и 200300 «биомедицинская инженерия» Издательство Томского политехнического университета 2009 УДК 681.325.5 – 181.48(076.5) ББК 32.973.26-04 М597 Г.С. Воробьева Микроконтроллеры семейства AVR Лабораторный практикум Методические рекомендации к выполнению цикла лабораторных работ по дисциплине «Основы микропроцессорной техники» для студентов направлений 210100 «электроника и микроэлектроника» и 200300 «биомедицинская инженерия». – Томск, 2009 – 90 с.

УДК 681.325.5 – 181.48(076.5) Составители: доцент, к.т.н. Г.С. Воробьева магистрант М.В. Журавлев магистрант Д.П. Упадышев магистрант А.М. Штейн Методические рекомендации рассмотрены и рекомендованы к изданию методическим семинаром кафедры «Промышленной и медицинской электроники» « 27 » ноября 2008 г.

Рецензент доцент, к.т.н. А.И. Солдатов Зав. кафедрой ПМЭ профессор д.т.н. Г.С.Евтушенко © Г.С. Воробьева, М.В. Журавлев, Д.П. Упадышев, А.М. Штейн. 2009 © Томский политехнический университет, 2009 © Оформление. Издательство Томского политехнического университета, 2009 2 1. Микроконтроллер ATmega16 1.1 Введение Микроконтроллеры AVR фирмы Atmel это 8-битные RISCмикроконтроллеры для встраиваемых приложений являющиеся, пожалуй, наиболее интересным направлением, развиваемым фирмой.

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

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

1.2 Краткие сведения о микроконтроллере ATmega1.2.1 Технические характеристики • FLASH-память программ объемом 16 Кбайт (число циклов стирания/записи не менее 10 000);

• оперативная память (статическое ОЗУ) объемом 1 Кбайт;

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

• возможность защиты от чтения и модификации памяти программ и данных;

• возможность программирования непосредственно в системе через последовательные интерфейсы SPI и JTAG;

• возможность самопрограммирования;

• разнообразные способы синхронизации: встроенный RCгенератор с внутренней или внешней времязадающей RС-цепочкой, встроенный генератор с внешним кварцевым или пьезокерамическим резонатором, внешний сигнал синхронизации;

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

• наличие детектора пониженного напряжения питания (Brown-Out Detector—BOD);

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

• арифметико-логическое устройство (АЛУ) подключено непосредственно к регистрам общего назначения (32 регистра);

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

• векторная система прерываний, поддержка очереди прерываний;

• наличие аппаратного умножителя.

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

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

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

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

1.2.2 Периферийные устройства • два 8-битных таймера/счетчика. Один из них может работать в качестве часов реального времени (в асинхронном режиме);

• один 16-битный таймер/счетчик;

• сторожевой таймер;

• четыре канала ШИМ - сигнала. Разрешение формируемого сигнала может составлять от 1 до 16 бит;

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

• 8 - канальный 10-битный АЦП последовательного приближения, имеющий как несимметричные, так и дифференциальные входы;

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

• последовательный двухпроводный интерфейс TWI (полный аналог интерфейса I2С);

• полнодуплексный универсальный синхронный/асинхронный приемо-передатчик (USART).

1.2.3 Архитектура микроконтроллера ATmegaНа Рис.1 приведена упрощенная схема архитектуры микроконтроллера ATmega16. Включающая, все основные модули, а также меж модульные связи.

Рис. 1 Архитектура 1.2.4 Память программ и стек Память программ представляет собой электрически стираемое ППЗУ (FLASH-ПЗУ). В связи с тем, что длина всех команд кратна одному слову (16 бит), память программ имеет 16-битную организацию.

Объем памяти микроконтроллера ATmega16 составляет 16К (16x1024) 16-битных слов. Память программ логически разделена на две неравные части: область прикладной программы и область загрузчика. В последней может располагаться специальная программа (загрузчик), позволяющая микроконтроллеру самостоятельно управлять загрузкой и выгрузкой прикладных программ. Если же возможность самопрограммирования у микроконтроллера не используется, прикладная программа может располагаться и в области загрузчика.



Для адресации памяти программ используется счетчик команд (Program Counter — PC). Размер счетчика команд составляет 12 бит, в зависимости от объема адресуемой памяти.

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

Стек реализован программно. Он размещается в памяти данных, и его глубина определяется только размером свободной области памяти данных. В качестве указателя стека во всех моделях используется пара регистров ввода/вывода SPH:SPL, расположенных по адресам $ЗЕ ($5Е) и $3D ($5D) соответственно. Так как после подачи напряжения питания (или после сброса) в регистрах содержится нулевое значение, в самом начале программы указатель стека необходимо проинициализировать, записав в него значение верхнего адреса памяти данных. Обычно это делается следующим образом:

ldi rl6,low(RAMEND) ;Загрузим Б рабочий регистр младший байт ;значения out SPL,rl6 ;Инициализируем указатель стека ldi rl6,high(RMEND) ;Загрузим в рабочий регистр старший байт ;значения out SPH,rl6 ;Инициализируем указатель стека При вызове подпрограмм адрес команды, расположенной за командой вызова, сохраняется в стеке. Значение указателя стека при этом уменьшается на 2 или 3, в зависимости от размера счетчика команд. При возврате из подпрограммы этот адрес извлекается из стека и загружается в счетчик команд. Значение указателя стека соответственно увеличивается на 2 (3). То же происходит и во время прерывания. При генерации прерывания адрес следующей команды сохраняется в стеке, а при возврате из подпрограммы обработки прерывания он восстанавливается из стека. Стек доступен и программно. Для работы со стеком имеются две команды: команда занесения в стек (PUSH) и команда извлечения из стека (POP).

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

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

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

Для хранения переменных помимо регистров общего назначения также используется статическое ОЗУ объемом от 512 байт до 8 Кбайт.

Микроконтроллер, кроме того, имеет возможность подключения внешнего статического ОЗУ объемом до 64 Кбайт.

Для долговременного хранения различной информации, которая может изменяться в процессе функционирования готовой системы (калибровочные константы, серийные номера, ключи и т. п.), в микроконтроллерах семейства может использоваться встроенная EEPROM-память. Ее объем составляет для различных моделей 512Кбайт.

Эта память разложена в отдельном адресном пространстве, а доступ к ней осуществляется с помощью определенных РВВ.

В адресном пространстве ОЗУ также расположены все регистры микроконтроллера, под них отведены младшие 96 (256) адресов Остальные адреса отведены под 512/1К/2К/4К...64К ячеек статического ОЗУ.

1.2.6 Регистры управления Регистр состояния программ SREG содержит флаги результатов выполнения операций АЛУ.

SREG 0x3F($5F) Регистр состояния программ № бита 7 6 5 4 3 2 1 Имя бита I T H S V N Z S Доступность R/W R/W R/W R/W R/W R/W R/W R/W Назначение битов регистра:

Бит 7: I – Общее разрешение прерываний. Для разрешения прерываний этот флаг должен быть установлен в 1. Разрешение/запрещение от дельных прерываний производится установкой или сбросом соответствующих битов регистров масок прерываний (регистров управления прерываниями). Если флаг сброшен, то прерывания запрещены независимо от состояния битов этих регистров. Флаг сбрасывается аппаратно после входа в прерывание и восстанавливается командой RETI для разрешения обработки следующих прерываний.

Бит 6: T – Хранение копируемого бита. Этот бит регистра используется в качестве источника или приемника командами копирования битов BLD (Bit LoaD) и BST (Bit STore). Заданный бит любого РОН может быть скопирован в этот бит командой BST или установлен в соответствии с содержимым данного бита командой BLD Бит 5: H – Флаг половинного переноса. Этот флаг устанавливается в 1, если произошел перенос из младшей половины байта (из 3-го бита в 4-й) или заем из старшей половины байта при выполнении некоторых арифметических операций Биты 4: S – Флаг знака. Этот флаг равен результату операции «Исключающее ИЛИ» (XOR) между флагами N (отрицательный результат) и V (переполнение числа в дополнительном коде). Соответственно, этот флаг устанавливается в 1, если результат выполнения арифметической операции меньше нуля.





Бит 3: V – Флаг переполнения дополнительного кода. Этот флаг устанавливается в 1 при переполнении разрядной сетки знакового результата. Используется при работе со знаковыми числами (представленными в дополнительном коде). Подробнее — см. описание системы команд.

Бит 3: N – Флаг отрицательного значения. Этот флаг устанавливается в 1, если старший бит (7-й) результата операции равен 1. В противном случае флаг равен 0.

Бит 1: Z – Флаг нуля. Этот флаг устанавливается в 1, если результат выполнения операции равен нулю.

Бит 0: C – Флаг переноса. Этот флаг устанавливается в 1, если в результате выполнения операции произошел выход за границы байта.

MCUCR $35($55) Регистр управления микроконтроллером № бита 7 6 5 4 3 2 1 Имя бита SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISCДоступность R/W R/W R/W R/W R/W R/W R/W R/W Бит 6: SE – Разрешение перехода в режим пониженного энергопотребления. Установка этого бита в 1 разрешает перевод микроконтроллера в режим пониженного энергопотребления.

Переключение осуществляется по команде SLEEP. При сброшенном бите SE выполнение команды не производит никаких действий.

Биты 7,5,4: SM2-SM0 – Выбор режима пониженного энергопотребления. Состояние этих битов определяет,в какой режим перейдет микроконтроллер после выполнения команды SLEEP SM2 SM1 SM0 Режим 0 0 0 Idle (режим холостого хода) 0 0 1 ADC Noise Reduction (режим снижения шумов АЦП) 0 1 0 Power Down (режим микро отребления) 0 1 1 Power Save (экономичный режим) 1 0 0 Зарезервировано 1 0 1 Зарезервировано 1 1 0 Standby* (режим ожидания) 1 1 1 Extended Standby* (расширенный режим ожидания) *эти режимы можно использовать только при работе с внешним резонатором Биты 3-0: ISC11- ISC00 – определяют условия генерации внешних прерываний ISCn1 ISCn0 Условие 0 0 По НИЗКОМУ уровню на выходе INTn 0 1 зарезервировано 1 0 По спадающему фронту на выходе INTn 1 1 По нарастающему фронту на выходе INTn n=0,1.2.7. Прерывания Микроконтроллеры AVR семейства Mega имеют многоуровневую систему приоритетных прерываний. Младшие адреса памяти программ, начиная с адреса $0002, отведены под таблицу векторов прерывания.

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

Положение вектора в таблице также определяет и приоритет соответствующего прерывания: чем меньше адрес, тем выше приоритет прерывания. Размер вектора прерывания зависит от объема памяти программ микроконтроллера и составляет 2 байта. Соответственно, для перехода к подпрограммам обработки прерываний в моделях используются команда JMP.

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

Для управления размещением таблицы прерываний используется регистр управления прерываниями GICR, расположенный по адресу $ЗВ ($5В). Для управления таблицей прерываний в этом регистре используются два младших бита: IVSEL (1-й бит) и IVCE (0-й бит).

.org $0002 rjmp INTO ;Внешнее прерывание.org $0004 rjmp INT1 ;Внешнее прерывание.org $0006 rjmp TIMER2 COMP ;Совпадение таймера/счетчика Т.org $0008 rjmp TIMER2 0VF ;Переполнение таймера/счетчика Т.org $000A rjmp TIMER1 САРТ ;Захват таймера/счетчика Т.org $000C rjmp TIMER1 СОМРА ;Совпадение А таймера/счетчика Т.org $000E rjmp TIMER1 COMPB ;Совпадение В таймера/счетчика Т.org $0010 rjmp TIMER1 OVF ;Переполнение таймера/счетчика Т.org $0012 rjmp TIMER0 OVF ;Переполнение Таймера/счетчика ТО.org $0014 rjmp SPI, STC ;Передача по SPI завершена.org $0016 rjmp USART, RXC ;USART, прием завершен.org $0018 rjmp USART, UDR ;Регистр данных USART пуст.org $001A rjmp USART, ТХС ;USART, передача завершена.org $001C rjmp ADC ;Преобразование АЦП завершено.org $001E rjmp EE_RDY ;EEPROM готово.org $0020 rjmp ANACOMP ;Аналоговый компаратор.org $0022 rjmp TW1 ;Прерывание от модуля TW.org $0024 rjmp INT2 ;Внешнее прерывание.org $0026 rjmp TIMER0COMP ;Совпадение таймера/счетчика ТО.org $0028 rjmp SPM_RDY ; Готовность SPM !!! примечание: приоритет прерывания убывает с ростом адреса вектора прерывания Обработка прерываний Для глобального разрешения/запрещения прерываний предназначен флаг I регистра SREG. Для разрешения прерываний он должен быть установлен в I, а для запрещения — сброшен в 0. Индивидуальное разрешение или запрещение (маскирование) прерываний производится установкой/сбросом соответствующих битов регистров масок прерываний, рассматриваемых ниже.

При возникновении прерывания флаг I регистра SREG аппаратно сбрасывается, запрещая тем самым обработку следующих прерывании.

Однако в подпрограмме обработки прерывания этот флаг можно снова установить в 1 для разрешения вложенных прерываний. При возврате из подпрограммы обработки прерывания (при выполнении команды RETI) флаг I устанавливается аппаратно.

Все имеющиеся прерывания можно разделить на два типа.

Прерывания первого типа генерируются при наступлении некоторого события, в результате которого устанавливается флаг прерывания. Затем, если прерывание разрешено, в счетчик команд загружается адрес вектора соответствующего прерывания. При этом флаг прерывания аппаратно сбрасывается. Он также может быть сброшен программно, записью лог. 1 в бит регистра, соответствующий флагу.

Pages:     || 2 | 3 | 4 | 5 |   ...   | 8 |










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

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