Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Гарвардская RISC-архитектура в микроконтроллерах AVR. Средства ввода-вывода, хранения и обработки цифровой и аналоговой информации в микроконтроллерах

.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
406 Кб
Скачать

clr r2

adc r1, r2 r1=high(ax+b) push r16

push r17 ret

Характеристики микроконтроллера ATmega8535

Рассмотрим архитектуру AVR на примере микроконтроллера

ATmega8535.

Характеристики ATmega8535 таковы:

тактовая частота до 16 МГц (до 8 МГц у ATmega8535L);

разрядность 8 бит;

RISC-архитектура:

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

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

производительность до 16 MIPS на частоте 16 MHz;

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

память:

Flash-память команд 8 Кбайт с возможностью перепрограммирования до

10000 циклов стирания-записи;

— EEPROM 512 байт с возможностью перепрограммирования до 100000

циклов стирания-записи;

SRAM 512 байт;

ввод-вывод:

32 линии ввода-вывода;

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

программируемый универсальный синхронно-асинхронный приемо-

передатчик (USART);

интерфейс SPI;

два 8-разрядных таймера-счетчика;

один 16-разрядный таймер-счетчик;

11

— программируемый сторожевой таймер (Programmable Watchdog Timer,

PWT);

счетчик реального времени (Real Time Counter, RTC);

4 канала ШИМ (широтно-импульсная модуляция, Pulse Width Modulation,

PWM);

— 8-канальный 10-битный АЦП (аналого-цифровой преобразователь, Analog

to Digital Converter, ADC);

аналоговый компаратор (Analog Comparator);

6 режимов пониженного энергопотребления: Idle, ADC Noise Reduction, Power-save, Power-down, Standby, Extended Standby.

Назначение выводов микроконтроллера ATmega8535

ATmega8535 выпускается в различных корпусах. Один из них — PDIP-40

(рис. 1).

Рис. 1. Расположение выводов ATmega8535 в корпусе PDIP-40

Назначение выводов микроконтроллера ATmega8535:

PA0-PA7 — порт A;

PB0-PB7 — порт B;

PC0-PC7 — порт C;

PD0-PD7 — порт D;

12

RESET# — сброс;

VCC — напряжение питания 4.5-5.5 В (2.7-5.5 В для ATmega8535L);

GND — земля;

XTAL1, XTAL2 — подключение кварцевого резонатора;

AVCC — напряжение питания для порта A и АЦП;

AREF — внешний источник опорного напряжения для АЦП;

XCK (USART External Clock Input/Output) — внешние тактовые импульсы интерфейса USART;

T0, T1 (Timer/Counter External Counter Input) — входы таймеров T0, T1;

INT0, INT1, INT2 — входы внешних прерываний;

AIN0, AIN1 (Analog Comparator Input) — входы аналогового компаратора;

OC0, OC1A, OC1B, OC2 (Timer/Counter Output Compare Match Output) —

выходы таймеров T0, T1, T2;

SS# (SPI Slave Select Input) — активизация ведомого SPI;

MOSI (SPI Bus Master Output/ Slave Input), MISO (SPI Bus Master Input/ Slave Output) — входы-выходы данных интерфейса SPI;

SCK (SPI Bus Serial Clock) — вход тактовых импульсов интерфейса SPI в

режиме Slave, выход — в режиме Master;

RXD (Receive Data), TXD (Transmit Data) — вход и выход данных интер-

фейса USART ;

ICP1 (Timer/Counter1 Input Capture Pin) — вход захвата таймера T1;

SDA (Two-wire Serial Interface Data) и SCL (Two-wire Serial Interface Clock)

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

I2C;

TOSC1, TOSC2 — выводы подключения часового резонатора 32768 Гц;

ADC0-ADC7 — каналы АЦП.

Таким образом, тридцать две линии ввода-вывода распределены по четы-

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

13

микроконтроллера. Все линии ввода-вывода могут находиться в трех состояни-

ях: нуля, единицы и высокоомном.

Управление микроконтроллером

Функции общего управления микроконтроллером сосредоточены в двух регистрах:

MCUCSR (MCU Control and Status Register);

MCUCR (MCU Control Register).

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

ствить переход в один из шести режимов пониженного энергопотребления по команде SLEEP, задать форму сигналов внешних прерываний INT0, INT1, INT2.

CPU микроконтроллера ATmega8535

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

гистр состояния (флагов), указатель стека и счетчик программы.

Множество регистров общего назначения в документации Atmel называ-

ется регистровым файлом. Число регистров общего назначения — 32. Разряд-

ность — 8. Они обозначаются как R0 — R31. Регистровый файл занимает начальную область адресного пространства, поэтому каждый регистр ассоции-

руется с определенным адресом памяти данных: R0 — 0x00, R1 — 0x01, … R31

— 0x1F. Последние шесть регистров R26 – R31 составляют попарно три 16-

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

венной адресации.

Для адресации регистра общего назначения требуется пять бит в коде ко-

манды. Это довольно много, особенно если учесть, что большинство команд

AVR двухбайтные. В архитектуре x86 требуется всего три бита для адресации регистра, а команды там бывают намного длиннее. Поэтому для экономии ме-

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

14

гут быть использованы только регистры старшей половины — r16-r31. Это,

например, команда непосредственной загрузки регистра: LDI Rd, K , где

16≤d≤31.

Регистр состояния SREG фиксирует признаки выполнения арифметиче-

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

низации потока управления командами условных переходов. Регистр состояния относится к числу регистров ввода-вывода.

Формат SREG:

1.Бит 7 — I: Global Interrupt Enable, флаг разрешения прерываний. Установка

вединицу приводит к общему разрешению прерываний. Конкретные преры-

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

новок конкретных прерываний. Флаг I устанавливается программно коман-

дой SEI и сбрасывается командой CLI. Флаг прерывания сбрасывается аппа-

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

RETI.

2. Бит 6 — T: Bit Copy Storage, бит загрузки-размещения, временный бит. Бит

T используется командами BLD (Bit LoaD) и BST (Bit STore) как источник или назначение обрабатываемого бита заданного регистра общего назначе-

ния.

3. Бит 5 — H: Half Carry Flag, флаг полупереноса (переноса между тетрадами).

Устанавливается при выполнении арифметических операций в случае пере-

носа из младшей тетрады байта в старшую или заема из старшей тетрады в младшую. Полезен в двоично-десятичной арифметике.

4. Бит 4 — S: Sign, флаг знака, позволяет представить результат арифметиче-

ской операции над восьмиразрядными числами в виде девятиразрядного чис-

ла, являясь как раз девятым разрядом. S = N V.

5. Бит 3 — V: Two’s Complement Overflow Flag, флаг переполнения (при опе-

рациях над числами в дополнительном до двух коде), устанавливается, если

15

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

зона знаковых чисел: -128 127.

6. Бит 2 — N: Negative Flag, флаг отрицательного результата, устанавливается,

если старший разряд результата, бит 7, равен единице.

7.Бит 1 — Z: Zero Flag, флаг нуля.

8.Бит 0 — C: Carry Flag, флаг переноса.

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

Стек используется для хранения временных данных, локальных перемен-

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

ний.

Указатель стека (SP, Stack Pointer) указывает на верхушку стека, которая понимается здесь как очередная свободная ячейка стека, в которую будут по-

мещены очередные данные.

SP должен быть установлен в значение, большее 0x60.

SP реализован как два 8-битных регистра в пространстве ввода-вывода: SPH и SPL.

Память микроконтроллера ATmega8535

В состав микроконтроллера ATmega8535 входит три запоминающих устройства:

постоянная память команд (Flash), 8 Кбайт;

оперативная память данных (SRAM), 512 байт;

постоянная память данных (EEPROM), 512 байт.

Они имеют отдельные адресные пространства. При этом SRAM занимает не все адресное пространство памяти данных, а только старшую его часть, по-

сле регистрового файла и регистров ввода-вывода. EEPROM доступна не напрямую, а через специальные регистры ввода-вывода — небольшое "окошеч-

ко" в адресном пространстве памяти данных.

16

Поскольку команды AVR 16или 32-битные, память команд имеет орга-

низацию 4К х 16. Она может быть разделена на загрузочную и прикладную секции. Для доступа к памяти команд используются команды LPM (Load Program Memory) и SPM (Store Program Memory). Они используют косвенную ад-

ресацию. Указателем является регистр Z (r31:r30). Управляет записью памяти команд регистр SPMCR (Store Program Memory Control Register).

Адресное пространство памяти данных (рис. 2) имеет размер 608 байтов и включает:

регистровый файл регистров общего назначения R0-R31, 32 байта;

регистры ввода-вывода (I/O Registers), 64 байта;

SRAM, 512 байт.

Рис. 2. Адресное пространство памяти данных

Имеется пять способов адресации памяти данных:

прямая;

косвенная — по значению регистров-указателей X, Y, Z;

косвенная со смещением 0-63 байта от значения регистров-указателей Y, Z;

косвенная с предекрементом — регистры-указатели декрементируются пе-

ред обращением к памяти;

17

— косвенная с постинкрементом — регистры-указатели инкрементируются после обращения к памяти.

Для работы с EEPROM используются три регистра:

1. EEAR (EEPROM Address Register), регистр адреса EEPROM. Состоит из двух 8-битных регистров EEARH и EEARL. Биты 8-0 этого регистра адресу-

ют одну из 512 ячеек EEPROM.

2.EEDR (EEPROM Data Register), регистр данных EEPROM. Используется для чтения-записи EEPROM по адресу, содержащемуся в EEAR.

3.EECR (EEPROM Control Register), регистр управления EEPROM.

Формат EECR:

биты 7-4 не используются и равны нулю;

бит 3 — EERIE (EEPROM Ready Interrupt Enable), разрешает соответству-

ющее прерывание, которое происходит при очистке EEWE;

— бит 2 — EEMWE (EEPROM Master Write Enable), если этот бит установлен,

то установка EEWE приведет к записи EEPROM по указанному адресу;

бит 1 — EEWE (EEPROM Write Enable), представляет собой стробирущий сигнал записи EEPROM;

бит 0 — EERE (EEPROM Read Enable), представляет собой стробирущий сигнал чтения EEPROM.

Для записи EEPROM должна быть выполнена следующая последователь-

ность действий:

1.Подождать пока EEWE не станет равным нулю.

2.Если загрузчик (Boot Loader) разрешает CPU программировать Flash-

память, подождать пока SPMEN в SPMCR не станет равным нулю.

3.Записать адрес в EEAR.

4.Записать данные в EEDR.

5.Установить бит EEMWE в EECR.

6.В течение четырех тактов после установки EEMWE установить бит EEWE.

Запись EEPROM не может осуществляться одновременно с Flash-

памятью.

18

Для корректной записи EEPROM прерывания должны быть запрещены в течение указанной последовательности действий.

По истечении отведенного времени записи EEPROM бит EEWE сбрасы-

вается аппаратно.

Пример подпрограммы записи EEPROM:

EEPROM_write:

;ожидание завершения предыдущей записи sbic EECR,EEWE

rjmp EEPROM_write

;запись адреса в регистр EEAR из регистров r18, r17 out EEARH, r18

out EEARL, r17

;запись данных в регистр EEDR

out EEDR,r16

;установка бита EEMWE sbi EECR,EEMWE

;установка бита EEWE, запись данных в EEPROM sbi EECR,EEWE

ret

Пример подпрограммы чтения EEPROM:

EEPROM_read:

;ожидание завершения предыдущей записи sbic EECR,EEWE

rjmp EEPROM_read

;запись адреса в регистр EEAR из регистров r18, r17 out EEARH, r18

out EEARL, r17

;установка бита EERE, чтение EEPROM по адресу EEAR в EEDR sbi EECR,EERE

;чтение данных из EEDR

in r16, EEDR ret

Ввод-вывод

Все устройства ввода-вывода AVR доступны через пространство ввода-

вывода посредством команд IN и OUT, которые передают данные между реги-

страми ввода-вывода и общего назначения.

19

Кроме регистров устройств ввода-вывода: таймеров, портов и т. п. — к

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

стояния CPU и MCU: регистр флагов SREG, регистр MCUCR и др.

Регистры ввода-вывода с адресами 0x00-0x1F доступны напрямую для команд SBI и CBI, SBIS и SBIC. С использованием команд IN и OUT доступны все регистры ввода-вывода, при этом их адреса отсчитываются от нуля: 0x00-

0x3F. При адресации регистров ввода-вывода в памяти данных в командах LD и ST к их адресам надо прибавить 0x20.

Порты ввода-вывода имеют нагрузочную способность, достаточную для прямого подключения LED-дисплея. Многие выводы портов мультиплексиро-

ваны с альтернативными функциями различных периферийных устройств мик-

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

Каждый порт ввода-вывода имеет три регистра:

1.DDRx — определяет направление — ввод или вывод;

2.PORTx — выходной регистр порта;

3.PINx — входной регистр порта.

Направление ввода-вывода задается для каждого порта побитно.

Вне зависимости от значения DDRx информация на выводах порта может быть прочитана через регистр PINx. Кроме того, выведенная информация через

PORTx может быть прочитана через PINx.

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

Архитектура AVR включает двадцать источников прерываний помимо сброса (табл.1). Таблица векторов прерываний находится в начале адресного пространства памяти команд, но может быть перемещена в начало загрузочной секции. Чем меньше адрес, тем больше приоритет прерывания. Нулевому адре-

су соответствует Reset-вектор. Соответственно, он имеет самый высокий прио-

ритет. Прерывания в целом могут быть разрешены или запрещены с помощью

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]