Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_AVR1_ред.doc
Скачиваний:
22
Добавлен:
21.11.2019
Размер:
1.08 Mб
Скачать

1.1.3. Классификация мп по функциональному признаку

По функциональному признаку выделяют два класса МП – микропроцессоры общего назначения и специализированные.

МП общего назначения предназначены для решения широкого круга задач обработки разнообразной информации. Примерами могут служить МП Pentium фирмы INTEL, их аналоги фирмы AMD, МП PowerPC фирмы IBM, Motorola и другие. Для решения конкретной задачи к МП подключаются блоки памяти, периферийные устройства для ввода-вывода информации, блок питания и образуется микропроцессорная система, где МП является центральным блоком (Central Processor Unit – CPU). Универсальность этих МП позволяет использовать их и в специализированных системах, но избыточность их возможностей, необходимость адаптации к промышленным условиям эксплуатации сильно удорожает конструкцию.

Специализированные МП делят на две группы – микроконтроллеры и цифровые процессоры сигналов (DSP – Digital Signal Processor).

Микроконтроллеры – (или однокристальные микроЭВМ) это специализированные ИС, ориентированные на реализацию устройств управления. Для упрощения разработки систем управления все необходимые модули микропроцессорной системы интегрированы на кристалл рядом с микропроцессором – это память программ и данных (ОЗУ и ПЗУ), несколько параллельных и последовательных портов ввода-вывода данных, таймеры-счетчики, блоки ЦАП и АЦП, блоки формирования сигналов с широтно-импульсной модуляцией (ШИМ) и другое. В результате для построения системы управления требуется минимальное количество дополнительных компонентов. Годовой объем выпуска микроконтроллеров превышает 10 млрд. шт. (2009 год), что на порядок больше объема выпуска МП общего назначения. Очень велика и номенклатура выпускаемых микроконтроллеров, различающихся по составу блоков, разрядности (4, 8, 16, 32, 64 бит) и объему памяти. Массовость производства обеспечивает низкую стоимость (от 0,2 до 20$ за шт.). Примеры микроконтроллеров: семейство x51 фирмы Intel, PIC фирмы Microchip, HC08 Motorola, семейство ARM различных производителей, AVR фирмы Atmel и др.

Цифровые сигнальные процессоры – это специализированные микропроцессоры, предназначенные для цифровой обработки аналоговых сигналов. Они имеют АЦП на входе, ЦАП на выходе и цифровой процессор внутри. Особенностью системы команд является ориентация на спектральный (гармонический) анализ, выполнение прямого и обратного дискретного преобразования Фурье, реализацию цифровых фильтров. Классическим примером ЦСП является семейство DSP56000 фирмы Motorola.

1.2. Основные элементы архитектуры микроконтроллера avr

В рамках базовой архитектуры AVR выпускаются три семейства: Classic AVR, Mega AVR и Tiny AVR. Все они имеют общую архитектуру и систему команд, отличаются по объему программной памяти и памяти данных, набору периферийных устройств и портов. В качестве типичного примера семейства МК AVR рассмотрим архитектуру МК фирмы ATMEL - ATmega16. С точки зрения изучения принципов работы и программирования можно выделить следующие основные элементы МК ATmega16:

  • 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением.

  • Прогрессивная RISC архитектура:

- 131 высокопроизводительная команда, большинство команд выполняется за один такт;

- 32 8-разрядных рабочих регистров общего назначения;

- полностью статическая работа (тактовую частоту можно понижать до 0);

- производительность приближается к 16 MIPS (при тактовой частоте 16 МГц);

- встроенный 2-цикловый перемножитель.

  • Энергонезависимая память программ и данных:

- 16 Кбайт внутренней программируемой Flash памяти (внутрисистемное

программирование встроенной программой загрузки, не менее 10 000 циклов

запись/стирание)

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

- 512 байт EEPROM (обеспечивает 100 000 циклов стирания/записи);

- программируемая блокировка, обеспечивающая защиту программных средств

пользователя.

  • 1 Кбайт встроенной статической ОЗУ (SRAM);

  • Интерфейс JTAG (совместимый с IEEE 1149.1):

- возможность сканирования периферии, соответствующая стандарту JTAG;

- расширенная поддержка встроенной отладки;

- программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов

блокировки.

  • Встроенная периферия:

- два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения;

- один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения;

- счетчик реального времени с отдельным генератором;

- четыре канала широтно-импульсного модулятора PWM;

- 8-канальный 10-разрядный аналого-цифровой преобразователь;

- байт-ориентированный двухпроводной последовательный интерфейс TWI;

- программируемый последовательный интерфейс USART;

- последовательный интерфейс SPI (ведущий/ведомый);

- программируемый сторожевой таймер с отдельным встроенным генератором;

- встроенный аналоговый компаратор.

  • Специальные микроконтроллерные функции:

- сброс при подаче питания и программируемый детектор кратковременного снижения напряжения питания;

- встроенный калиброванный RC-генератор;

- внутренние и внешние источники прерываний;

- шесть режимов пониженного потребления: Idle (ждущий режим), Power-save (экономичный режим), Power-down (режим микропотребления), Standby (режим ожидания), Extended Standby (расширенный режим ожидания) и ADC Noise Reduction (режим снижения шумов для АЦП).

  • Выводы I/O и корпуса:

- 32 программируемые линии ввода/вывода, сгруппированные в четыре 8-разрядных порта (PA0- PA7, PB0- PB7, PC0- PC7 и PD0- PD7).

В зависимости от режима работы выводы могут выполнять альтернативные функции (Таблица 1);

- 40-выводной корпус PDIP и

44-выводной корпус TQFP.

  • Рабочие напряжения

4,5 - 5,5 В (ATmega16)

  • Рабочая частота

0 - 16 МГц (ATmega16)

Рис. 1. Цоколевка ATmega16

(в скобках - альтернативные функции)

Таблица 1

Вывод

Альтернативная функция

PB0

XCK/T0 (вход/выход внешней синхронизации УСАПП или вход синхронизации таймера-счетчика 0 )

PB1

T1 (вход синхронизации таймера-счетчика 1)

PB2

INT2/AIN0 (вход внешнего прерывания 1 или неинвертирующий вход аналогового компаратора)

PB3

OC0/ AIN1 (Выход компаратора и ШИМ таймера-счетчика 0 или инвертирующий вход аналогового компаратора)

PB4

SS (вход выбора подчиненного режима интерфейса SPI)

PB5

MOSI (Вывод для ведущей/ввод для подчиненной шины SPI)

PB6

MISO (Ввод для ведущей/вывод для подчиненной шины SPI)

PB7

SCK (Синхронизация последовательной связи шины SPI)

PD0

RXD (вход внешнего прерывания или вход приема УАПП)

PD1

TXD (вход внешнего прерывания или выход передачи УАПП)

PD2

INT0 (вход внешнего прерывания 0 )

PD3

INT1(вход внешнего прерывания 1 )

PD4

OC1B (выход В компаратора и ШИМ таймера-счетчика 1)

PD5

OC1А (выход А компаратора и ШИМ таймера-счетчика 1)

PD6

ICP1 (вход захвата таймера/счетчика 1)

PD7

OC2 (выход компаратора и выход ШИМ таймера-счетчика 2)

PA0

AD0 (Разряд 0 шины адреса и шины данных внешнего интерфейса памяти)

PA1

AD1 (Разряд 1 шины адреса и шины данных внешнего интерфейса памяти)

PA2

AD2 (Разряд 2 шины адреса и шины данных внешнего интерфейса памяти)

PA3

AD3 (Разряд 3 шины адреса и шины данных внешнего интерфейса памяти)

PA4

AD4 (Разряд 4 шины адреса и шины данных внешнего интерфейса памяти)

PA5

AD5 (Разряд 5 шины адреса и шины данных внешнего интерфейса памяти)

PA6

AD6 (Разряд 6 шины адреса и шины данных внешнего интерфейса памяти)

PA7

AD7 (Разряд 7 шины адреса и шины данных внешнего интерфейса памяти)

PС0

SCL (синхронизация последовательной связи TWI)

PС1

SDA (ввод/вывод последовательных данных TWI)

PС2

TCK (синхронизация JTAG-тестирования)

PС3

TMS (выбор режима JTAG тестирования)

PС4

TDO (вывод данных при JTAG тестировании)

PС5

TDI (ввод данных при JTAG тестировании)

PС6

TOSC1 (1-ый вывод генератора таймера)

PС7

TOSK2 (2-oй вывод генератора таймера)

Рассмотрим назначение и организацию работы этих элементов.

Рис. 2. Обобщенная функциональная схема AVR-микроконтроллера

МК семейства AVR – устройства синхронного типа, т.е. операции, выполняемые МК, привязаны по времени к импульсам тактового сигнала. Тактовый генератор вырабатывает импульсы для синхронизации работы всех узлов микроконтроллера. Внутренний тактовый генератор AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый резонатор, внутренняя или внешняя RC-цепочка). Минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима). Рабочая частота для ATmega 16 от 0 до 16 МГц.

Процессор микроконтроллера выполняет три основные операции, обеспечивающие выполнение программы:

  1. формирует адрес очередной команды;

  2. выбирает команду из памяти;

  3. организует выполнение команды.

Основные узлы процессора:

  • счетчик команд или программный счетчик (PC);

  • арифметико-логическое устройство (ALU);

  • блок регистров общего назначения РОН (GPR);

  • регистр команд МК (IR);

  • ОЗУ.

При работе МП под управлением программы реализуется алгоритмический принцип следования (не рассматриваются многопроцессорные системы). Программный счетчик является указателем на подлежащую выполнению команду и содержит адрес этой команды в памяти программ. Он работает в 3-х режимах:

  1. сброс (при пуске и перезапуске МК очищается PC и выполнение программы начинается с команды, расположенной в памяти по нулевому адресу);

  2. инкремент адресов (значение PC увеличивается, указывая на команду программы, следующую за выполняемой);

  3. установка PC в соответствии с кодом команды условного или безусловного перехода.

Арифметико-логическое устройство (Arithmetic Logic Unit) служит исключительно для выполнения арифметических и логических операций (сложение, вычитание, логические И и ИЛИ, сравнение, сдвиг разрядов, установка регистра состояния в соответствии с результатом операции). АЛУ подключено к регистрам общего назначения РОН (General Purpose Registers - GPR). Все регистры равноправны, операнды могут находиться в любой паре регистров и там же будет находиться результат операции.

Блок регистров общего назначения (Рис. 3) содержит 32 восьмиразрядных регистра с шестнадцатиричными адресами $00 - $1F в пространстве памяти данных. К ним можно обращаться и по именам R0 – R31.

Рис.3. Рабочие регистры общего назначения ЦПУ AVR

РОН находятся в начале адресного пространства оперативной памяти, но физически не являются ее частью. Поэтому к ним можно обращаться двумя способами (как к регистрам и как к памяти). Такое решение является особенностью AVR и повышает эффективность работы и производительность микроконтроллера. Отличие между регистрами и оперативной памятью состоит в том, что с регистрами можно производить любые операции (арифметические, логические, битовые), а в оперативную память можно лишь записывать данные из регистров. Результат операции (кроме операций сравнения) помещается в РОН и, дополнительно, в регистре состояния МК SREG устанавливаются признаки результата (флаги нуля, переноса, переполнения и др.).

Шесть регистров с именами от R26 до R31 могут образовывать пары для хранения шестнадцатиразрядных слов, причем регистр с четным номером хранит младший байт, а регистр с нечетным номером – старший байт. Этим спаренным регистрам присвоены имена X, Y, Z. Они могут использоваться как индексные регистры в командах обращения к памяти данных. Регистр Z может также использоваться для чтения из памяти программ отдельных байтов, что позволяет хранить в ней таблицы данных.

Память . В соответствии с гарвардской архитектурой память AVR-микроконтроллера разделена на две области: память программ (Рис.4) и память данных (рис.5). Кроме того, ATmega16 содержит память на EEPROM(ЭСППЗУ) для энергонезависимого хранения данных. Все три области памяти являются линейными и равномерными.

Внутрисистемно программируемая флэш-память программ ATmega16 содержит 16 кбайт для хранения программы. Поскольку все AVR-инструкции являются 16 или 32-разр., то флэш-память организована как 8К  16, поэтому программный счетчик РС у ATmega16 является 13-разрядным. Для программной защиты флэш-память программ разделена на два сектора: сектор программы начальной загрузки и сектор прикладной программы. Таблицы констант могут располагаться в пределах всего пространства памяти программ.

Флэш-память характеризуется износостойкостью не менее 10.000 циклов запись/стирание.

Рис. 4 Память программ Рис. 5. Распределение памяти данных в ATMega 16

Память данных содержит 1 кбайт статического ОЗУ и 512 байт EEPROM.

В общем адресном пространстве с ОЗУ находятся и занимают первые 96 адресов файл регистров РОН (32 регистра) и 64 регистра ввода/вывода микроконтроллера, поэтому первой ячейке SRAM соответствует адрес $60.

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

Адреса некоторых регистров, общих для всех моделей AVR, в пространстве регистров ввода-вывода приведены в таблице 2.

Таблица 2

Регистры ввода-вывода

Область данных

Имя регистра

Назначение

$3F

$5F

SREG

регистр состояния

$3E

$5E

SPH

указатель стека (старший байт)

$3D

$5D

SPL

указатель стека (младший байт)

$3B

$5B

GIMSK

регистр маски прерываний

$3A

$5A

GIFR

регистр запросов прерываний

$35

$55

MCUCR

регистр управления микроконтроллера

Существует два способа обращения к регистрам ввода-вывода и РОН:

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

  2. объединение всех трех областей регистров и памяти в общее адресное пространство данных.

В адресное пространство МК, помимо адресов, по которым выполняется обращение к ячейкам ОЗУ данных, включены 32 адреса для обращения к РОН (адреса от $00 до $1F) и 64 адреса для обращения к регистрам ввода-вывода (адреса от $20 до $5F). Адрес для обращения к РОН по команде обращения к SRAM совпадает с номером регистра, а адрес для обращения к регистру ввода-вывода зависит от вида команды. В командах LOAD и STORE используются общие адреса всего пространства памяти данных, включая РОН и регистры ввода/вывода; а в командах IN и OUT, применяемых для обмена данными между РОН и этими регистрами, и в командах очистки CBI или установки бит SBI указывается номер регистра – адрес в области ввода/вывода (номера с $00 по $3F). Как видно, если применяются команды LOAD или STORE, то к адресу регистра ввода/вывода следует прибавить начальное смещение $20.

Режимы адресации

Реализовано пять различных способов адресации для охвата всей памяти данных:

- регистровая адресация, слово команды (16 бит) содержит поле адреса одного, двух регистров РОН или регистров ввода-вывода;

- прямая адресация, когда второе слово команды содержит 16-битный адрес, что позволяет адресоваться ко всей памяти данных (при 1К SRAM ATmega16 используются 10 бит);

- косвенная адресация, когда адрес операнда содержится в регистре X, Y или Z (регистры R26 – R31 из файла регистров используются как регистры-указатели);

- косвенная адресация со смещением, когда в слове команды содержится 6 бит смещения, что позволяет адресовать 63 ячейки, начиная с адреса указанного в регистрах Y или Z;

- косвенная с предварительным декрементом (преддекрементом -1) или косвенная с последующим инкрементом (постинкрементом +1), когда значения адресных регистров X, Y и Z, соответственно декрементируются до выполнения инструкции или инкрементируются после выполнения инструкции.

32 рабочих регистров общего назначения, 64 регистра ввода-вывода и 1024 байт внутреннего статического ОЗУ данных в ATmega16 доступны с помощью всех этих режимов адресации.

Для адресации в программной памяти используются следующие варианты:

- Адресация константы кода памяти с использованием команды LPM (Load Program Memory). Адрес байта константы определяется содержимым регистра Z. Старшие 15 битов определяют слово адреса (от 0 до 32К). Состояние младшего бита определяет выбор младшего байта (LSB = 0) или старшего байта (LSB = 1).

- Непосредственная адресация памяти программ с помощью команд безусловного перехода JMP и вызова подпрограмм CALL. Выполнение программы продолжается с адреса, записанного непосредственно в втором слове команды. При программировании адрес в команде представляется в виде метки (JMP Label, а в программе где-то должна быть эта метка Label:), при трансляции ссылка на метку заменяется конкретным адресом метки.

- Косвенная адресация памяти программ с помощью команд косвенного (Indirect) перехода IJMP и вызова подпрограмм ICALL. Выполнение программы продолжается с адреса, содержащегося в регистре Z (т.е. счетчик команд загружается содержимым регистра Z)

- Относительная адресация памяти программ с помощью команд относительного (Relative) перехода RJMP и вызова подпрограмм RCALL. Выполнение программы продолжается с адреса PC+k+1. Значение относительного смещения k может быть от -2048 до +2047. При программировании смещение в команде представляется в виде метки (RJMP Label, а в программе где-то должна быть эта метка Label:), при трансляции ссылка на метку заменяется конкретным значением смещения адреса метки относительно содержимого программного счетчика к началу программы (отрицательное k) или далее (положительное k).

На Рис. 6 приведена функциональная схема микроконтроллера ATmega 16 с регистрами, доступными для программирования.

Рис. 6. Функциональная схема ATmega 16

Аналоговый компаратор (Analog Comparator) сравнивает напряжения на двух выводах (пинах) микроконтроллера. Результатом сравнения будет логическое значение, которое может быть прочитано из программы.

Аналого-цифровой преобразователь (АЦП) служит для получения числового значения напряжения, поданного на его вход. Этот результат сохраняется в регистре данных АЦП. Имеется 8 аналоговых входов ADC0-ADC7, которые подключаются к единственному АЦП через мультиплексор.

Универсальный синхронно/асинхронный приемопередатчик (Universal Synchronous Asynchronous Receiver and Transmitter - USART) - удобный и простой последовательный интерфейс для организации информационного канала обмена микроконтроллера с внешним миром. Способен работать в дуплексном режиме (одновременная передача и прием данных).

Последовательный периферийный трехпроводный интерфейс SPI (Serial Peripheral Interface) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройствами, такими, как цифровые потенциометры, ЦАП/АЦП, FLASH-ПЗУ и др. С помощью этого интерфейса удобно производить обмен данными между несколькими микроконтроллерами AVR.

Кроме того, через интерфейс SPI может осуществляться программирование микроконтроллера.

Двухпроводной последовательный интерфейс TWI (Two-wire Serial Interface) позволяет объединить вместе до 128 различных устройств с помощью двунаправленной шины, состоящей из линии тактового сигнала (SCL) и линии данных (SDA).

Интерфейс JTAG был разработан группой ведущих специалистов по проблемам тестирования электронных компонентов (Joint Test Action Group), и используется для тестирования печатных плат, внутрисхемной отладки, программирования микроконтроллеров.