Техника микропроцессорных систем в электросвязи. Исследования микроконтроллеров

Классификация, структура, архитектура и модульная организация микроконтроллеров. Средства разработки программного обеспечения AVR-контроллеров. Директивы транслятора ассемблера, рабочая частота и циклы. Исследование арифметических и логических команд.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид методичка
Язык русский
Дата добавления 19.09.2019
Размер файла 3,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

3.2.9 Команды возврата из подпрограмм

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

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

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

3.2.10 Программы исследования ветвящихся участков программ

;**** Исследование ветвящихся участков программ

.include "2313def.inc"

rjmp RESET;

RESET:

ldi r31, low(ramend) ; формирование стека

out SPL, r31; в верхней части ОЗУ

;**** Организация циклов при помощи команд условного перехода

;**** и относительного безусловного перехода

ldi r16, 0x05; занесение кода $05 в регистр r16

loop1:

dec r16;уменьшение содержимого r16 на1

breq equal;если равно нулю, то переход на "equal"

rjmp loop1;иначе - на начало цикла "loop1"

equal:

nop ;пустая операция

loop2:

inc r16;увеличение содержимого r16 на1

cpi r16,$05 ;сравнение r16 с числом $05

brne loop2 ;если не равно нулю, то переход на "loop2"

rjmp ok;иначе - выход из цикла "ok"

ok:

nop ;пустая операция

;**** Организация ветвления при помощи команды косвенного

;**** безусловного перехода ijmp через регистр z

.EQU loop3h = 0x01

.EQU loop3l = 0xff

ldi zl, loop3l; занесение кода перехода в регистр zl (младш. часть кода)

ldi zh, loop3h; занесение кода перехода в регистр zl (ст. ч часть кода)

nop

nop

.ORG 0x1ff

nop

ijmp loop3

.EXIT

3.3 Исследование портов ввода-вывода

3.3.1 Общие сведения

Как и любые другие микроконтроллеры, микроконтроллеры AVR семейства Classic имеют порты ввода/вывода. Каждый порт состоит из определенного числа выводов, через которые микроконтроллер может принимать или передавать цифровые сигналы.

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

- AT90S1200 имеет два порта ввода/вывода: В (8-разрядный) и D (7-разрядный). Общее количество контактов ввода/вывода равно 15;

- AT90S2313 также имеет два порта ввода/вывода: В (8-разрядныЙ) и D (7-разряд-ный). Общее количество контактов ввода/вывода равно 15;

- AT90S/LS2323 имеет один 3-разрядный порт ввода/вывода В;

- AT90S/LS2343 имеет один 5-разрядный порт ввода/вывода В;

- AT90S/LS2333, AT90S/LS4433 имеют по три порта ввода/вывода: В (6-разряд-ный), С (6-разрядный) и D (8-разрядный). Общее количество контактов ввода/вывода равно 20;

- AT90S/LS4434, AT90S/LS8535 имеют по четыре 8-разрядных порт ввода/вывода А, В, С и D. Общее количество контактов ввода/вывод равно 32;

- AT90S4414, AT90S8515 также имеют по четыре 8-разрядных портов ввода/вывода А, В, С и D. Общее количество контактов ввода/выводе в этих моделях равно 32;

- АТ90С8534 имеет один 7-разрядный порт А и два входа внешних прерываний. В данном микроконтроллере присутствует также и 6-разрядный аналоговый входной порт. Таким образом, общее количество контактов ввода/вывода в этой модели равно 15;

Во всех микроконтроллерах семейства, за исключением АТ90С8534, большинство контактов ввода/вывода имеет дополнительные функции, поскольку эти выводы также используются периферийными устройствами микроконтроллера.

Конфигурирование каждой лини порта (задание направления передачи данных) может быть произведено программно в любой момент времени. Входные буферы портов построены по схеме триггера Шмитта. Для линий, сконфигурированных как входные, имеется возможность подключения внутреннего подтягивающего резистора сопротивлением 35...120 кОм между входом и проводом питания Uсс. Кроме того, если вывод (вход) с подключенным внутренним подтягивающим резистором подключить к общему проводу, он может служить источником тока.

Максимальная нагрузочная способность выходных буферов портов ввода/вывода при логическом "0" на выходе составляет 20 мА. Благодаря этому микроконтроллер может непосредственно управлять светодиодными индикаторами, биполярными и полевыми транзисторами, а также непосредственно быть подключенным ко многим типам датчиков.

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

3.3.2 Обращение к портам ввода/вывода

Упрощенная структурная схема элемента ввода/вывода приведена на рисунке 3.3. Здесь DDRx - бит контроля направления передачи данных и привязки вывода к шине питания (VCC), PORTx - бит привязки вывода к VCC и бит выходных данных, PINx - бит для отображения логического уровня сигнала на физическом выводе микросхемы. На рисунке 3.4, в качестве примера приведена структурная схема первого разряда порта D (PD1) микроконтроллера AT90S4434.

Обращение к портам производится через регистры ввода/вывода, причем под каждый порт в адресном пространстве ввода/вывода зарезервировано по 3 адреса (таблица 3.2). По этим адресам размещаются три регистра - регистр данных порта PORTx, регистр направления данных DDRx и регистр выводов порта PINx. Разряды этих регистров имеют названия Рх7...РхО - для регистров PORTx, DDx7...DDxO - для регистром DDRx и PINx7...PINxO - для регистров PINx. Действительные названия регистров (и их разрядов) получаются подстановкой названия порта вместо символа «х», соответственно для порта А регистры называют PORTA, DDRA, PINA, для порта В - PORTB, DDRB, PINB и т.д. Положение этих регистров в адресном пространстве ввода/вывода приведено в таблице 3.2. При сбросе микроконтроллера регистры DDRx и PORТх очищаются, а все выводы портов после сброса устанавливаются в третье состояние.

Рисунок 3.3 - Структура разряда порта ввода/вывода

DDRx - бит контроля направления передачи данных и привязки вывода к шине питания (VCC); PORTx - бит привязки вывода к VCC и бит выходных данных; PINx - бит отображения логического уровня сигнала на физическом выводе микросхемы

Следует заметить, что регистры PINx на самом деле регистрами не являются, по этим адресам осуществляется доступ к физическим значениям сигналов на выводах порта. Соответственно, они доступны только для чтения, тогда как регистры PORTx и DDRx доступны и для чтения, и для записи. А в микроконтроллере АТ90С8534 регистр выводов порта вообще отсутствует, т.к. единственный порт этой модели является только портом вывода.

Рисунок 3.4 - Структурная схема канала PD1 микроконтроллера AT90S4434

WP - Запись в PORTD; WD -Запись в DDRD; RL -Чтение регистра-защелки порта; RP -Чтение состояния вывода порта; RD -Чтение регистра DDRD; TXD - UАRТ.передаваемые данные; TXEN- UART разрешение передачи

Таблица 3.2

Адреса регистров портов ввода/вывода

Порт

Название регистра

Адрес

AT9BS1200

AT90S2313

AT90S/LS2323

AT90S/LS2343

AT90S/LS2333 AT90S/LS4433

AT90S/LS4434

AT90S/LS8535

AT90S4414

AT90S8515

АТ90С8534

А

PORTA

$1B ($3B)

0

0

0

DDRA

$1A ($3A)

0

0

0

P1NA

$19 ($39)

0

0

В

PORTB

$I8 ($38)

0

0

0

0

0

0

DDRB

$17 ($37)

0

0

0

0

0

0

PINB

$16 ($36)

0

0

0

0

0

0

С

PORTC

$15 ($35)

0

0

0

DDRC

$14 ($34)

0

0

0

PINC

$13 ($33)

0

0

0

D

PORTD1

$12 ($32)

0

0

0

0

0

DDRD

$11 ($31)

0

0

0

0

0

PIND

$10 ($30)

0

0

0

0

0

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

Таким образом, запись в порт означает запись требуемого состояния для каждого вывода порта в соответствующий регистр данных порта РORTx. А чтение состоянии порта выполняется чтением либо регистра данных порта PORTx, либо регистра выводов порта PINx. При чтении регистра выводов порта PINx происходит считывание логических уровней сигналов, присутствующих на выводах порта. А при чтении регистра данных порта PORTx происходит считывание данных, находящихся в регистре защелке порта. Причем сказанное справедливо как для входных, так и для выходных контактов.

Контрольное чтение состояния выводов порта PINx после записи в порт (запись в регистр PORTx) необходимо выполнить с задержкой, учитывающей емкостную нагрузку на выводах порта. Это можно выполнить с помощью одной или двух команд пустых команд NOP.

3.3.3 Конфигурирование портов ввода/вывода

Как уже было отмечено, порты имеют всего две возможности по конфигурированию:

- задание направления передачи данных (вход или выход);

- подключение/отключение внутреннего подтягивающего резистора.

Направление передачи данных определяется содержимым регистра передачи данных DDRx. Если разряд DDRхn - этого регистра установлен в "1", соответствующий n-й вывод порта является выходом. Если же разряд DDRxn этого регистра сброшен в "0", соответствующий вывод порта является входом.

А вот управление подтягивающим резистором осуществляется с помощью регистра данных порта PORTx. Если разряд Рхn регистра PORTx установлен в "1" и соответствующий вывод порта является входом, между этим выводом и проводом питания подключается подтягивающий резистор. Чтобы отключить подтягивающий резистор, необходимо либо сбросить соответствующий разряд регистра PORTx, либо сделать вывод порта выходом.

Таблица 3.3

Влияние регистров DDRx и PORTx на конфигурацию выводов портов

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

функции вывода

Резистор

Примечание

DDRxn

PORTxn

0

0

вход

отключен

Третье состояние

0

1

вход

подключен

При подключении вывода к общему проводу является источником тока

1

0

выход

отключен

Выход установлен в "0"

1

1

выход

отключен

Выход установлен в "1"

Примечание:

n= 7. . . 0 номер вывела (разряд порта).

3.3.4 Примеры конфигурирования

Предположим, что все выводы 8-разрядного порта А определены как выходы и требуется установить младшие 4 разряда в "1", а старшие 4 разряда - в "0". Это можно осуществить путем записи в этот порт соответствующего значения, как показано ниже.

; Программа вывода числа 0Fh из порта А

include "8515def.inc"

rjmpRESET ;Reset Handle

;-

RESET:

;задание направления передачи

ldi r0,$FF ;запись числа FFh в регистр r0

out DDRA,r0;запись числа FFh в регистр DDRA

;запись числа 0Fh в порт А

ldi r0,$0F;запись числа 0Fh в регистр r0

out PORTA,r0;запись числа 0Fh в порт А (0..3=«1», 4. .7=«0»)

Теперь предположим, что все выводы порта А определены как входы и требуется узнать их состояние. Это осуществляется следующим образом:

;Программа чтения состояния выводов порта А

include "8515def.inc"

rjmpRESET ;Reset Handle

;-

RESET:

;задание направления передачи

ldi r0,$FF

out DDRA,r0

;запись числа 0Fh в порт А

ldi r0,$0F ;запись числа 0Fh в регистр r0

out PORTA,r0;запись числа 0Fh в порт А (0..3=«1», 4. .7=«0»)

;формирование задержки

nop;пустая операция

inr0,PINA;в регистре r0 - сигналы на выводах порта А

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

3.4 Исследование таймера

Большинство задач управления, которые реализуются с помощью МК, требуют исполнения их в реальном времени. Под этим понимается способность системы получить информацию о состоянии управляемого объекта, выполнить необходимые расчетные процедуры и выдать управляющие воздействия в течение интервала времени, достаточного для желаемого изменения состояния объекта.

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

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

Рассмотрим принципы построения и режимы работы таймеров на примере восьмиразрядных универсальных микроконтроллеров AVR семейства Classic.

3.4.1 Таймеры микроконтроллеров AVR семейства Classic

Микроконтроллеры семейства Classic, в зависимости от модели, имеют в своем составе от одного до трех таймеров общего назначения - T0, T1, T2 и один сторожевой таймер WDT, обеспечивающий перезапуск микроконтроллера при зацикливании программ. В таблице 3.4 приведен состав таймеров микроконтроллеров семейства Classic, а в таблице 3.5 - выводы, используемые таймерами.

8-разрядный таймер Т0 имеется во всех моделях. Он может использоваться только для отсчета и измерения временных интервалов или как счетчик внешних событий. При переполнении счетного регистра таймера генерируется запрос на прерывание. 16-разрядный таймер Т1 и 8-разрядный таймер Т2 за счет введения дополнительных аппаратных средств входного захвата (input capture - IС) и выходного сравнения (output compare - ОС) обладают более широкими возможностями реализации алгоритмов реального времени. Эти таймеры также могут использоваться в качестве широтно-импульсных модуляторов. Таймер Т2, кроме того, может работать в асинхронном (относительно тактового сигнала микроконтроллера) режиме.

В микроконтроллере АТ90С8534 8-разрядный таймера/счетчика Т0 и 16-разрядный Т1 функционально идентичны и могут использоваться только для формирования временных интервалов.

Каждый таймер/счетчик (кроме таймеров/счетчиков в АТ90С8534) использует один или более выводов портов ввода/вывода микроконтроллера. При совместном использовании линий портов ввода/вывода с таймерами/счетчиками необходимо самостоятельно сконфигурировать выводы в соответствии с их функциональным назначением (вход/выход).

Таблица 3.4

Таймеры/счетчики реального времени

Таймер/счетчик

AT90S1200

AT90S2313

AT90S/ LS2323 AT90S/ LS2343

AT90S/ LS2333 AT90S/ LS4433

AT90S/ LS4434 AT90S/ LS8535

AT90S4414 AT90S8515

АТ90С8534

Таймер/счетчик ТО

+

+

+

+

+

+

+

Таймер/счетчик Т1

+

+

+

+

+

Таймер/счетчик Т2

+

Таблица 3.5

Выводы, используемые таймерами/счетчиками

Название

AT90S1200

AT90S2313

AT90S/LS2323 AT90S/LS2343

AT90S/LS2333 AT90S/LS4433

AT90S/LS4434 AT90S/LS8535

AT90S4414 AT90S8515

Описание

ТО

PD4

PD4

РВ2

PD4

РВО

РВО

Вход внешнего сигнала таймера ТО

Т1

--

PD5

--

PD5

PBI

РВ1

Вход внешнего сигнала таймера Т 1

IСР

--

PD6

--

РВО

PD6

ICP*

Вход захвата таймера Т1

ОС1

--

РВЗ

--

РВ1

--

--

Выход схемы сравнения таймера Т1

ОС1А

--

--

--

--

PD5

PD5

Тоже

ОС1В

--

--

--

--

PD4

ОС 1В*

Тоже

ОС2

--

--

--

--

PD7

--

Выход схемы сравнения таймера Т2

TOSC1

--

--

--

--

РС6

--

Вход для подключения резонатора

TOSC2

--

--

--

--

РС7

--

Выход для подключения резонатора

*Выделенный вывод микроконтроллера (не линия порта ввода/вывода)

3.4.2 Таймер Т0

8-разрядный таймер/счетчик Т0 может использоваться для формирования временных интервалов или для подсчета числа внешних событий. Структурная схема таймера Т0 приведена на рисунке 3.5.

В состав таймера входят: регистр управления (TCCR0); счетный регистр (TCNT0); блок управления таймером. Флаг переполнения счетного регистра таймера T0V0 находится в регистре флагов прерываний таймеров TIFR. Разрешение и запрещение прерываний от таймера Т0 осуществляются установкой/сбросом флага T0IE0 регистра TIMSK.

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

Рисунок 3.5 - Структурная схема таймера/счетчика Т0

Разряд

7

6

5

4

3

2

1

0

Наименование

-

-

-

-

-

CS02

CS01

CS00

Чтение(R)/Запись(W)

R

R

R

R

R

R/W

R/W

R/W

Начальное значение

0

0

0

0

0

0

0

0

Рисунок 3.6 - Формат регистра TCCRO

При переходе таймера из состояния "$FF" в состояние "$00" устанавливается флаг T0V0 регистра TIFR и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в "1" разряда T0IE0 регистра TIMSK при установленном флаге общего разрешения прерываний I регистра SREG.

Таймер Т0 может работать в двух режимах:

1. Режим таймера. В этом режиме на вход таймера поступают импульсы тактового сигнала микроконтроллера (непосредственно или через предделитель).

2. Режим счетчика событий. В этом режиме инкремент содержимого счетного регистра производится по активному фронту сигнала на входе ТО микроконтроллера.

Выбор режима работы (источника тактового сигнала), а также запуск и остановка таймера осуществляются с помощью разрядов CS02...CS00 регистра управления таймером TCCR0 (рисунок 3.6), расположенного по адресу $33 ($53). Соответствие между состоянием этих разрядов и режимом работы таймера/счетчика приведено в таблице 3.6. Остальные разряды регистра доступны только для чтения и содержат "0".

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

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

Таблица 3.6

Выбор источника тактового сигнала для таймера ТО

CS02

CS01

CS00

Источник тактового сигнала

0

0

0

Таймер/счетчик остановлен

0

0

1

СК (тактовый сигнал микроконтроллера)

0

1

0

СК/8

0

1

1

СК/64

1

0

0

СК/256

1

0

1

СК/1024

I

1

0

Спадающий фронт импульса на выводе Т0*

1

1

1

Нарастающий фронт импульса на выводе Т0*

В модели АТ90С8534 значения «110» и «111» разрядов CS02...CS00 зарезервированы (режим счет внешних событий отсутствует).

3.4.3 Таймер Т1

16-разрядный таймер/счетчик Т1 реализует следующие функции:

- формирование временных интервалов (аналогично функции таймера Т0);

- подсчет числа внешних событий (аналогично функции таймера Т0);

- входной захвата (input capture - IС) - сохранение текущего состояния таймера в отдельном РВВ по внешнему сигналу;

- выходного сравнения (output compare - ОС) - формирование прерывания при равенстве содержимого счетного регистра заданному значению;

- генерация ШИМ-сигнала.

Существует три варианта рассматриваемого таймера/счетчика в зависимости от модели микроконтроллера. Рассмотрим структуру таймера Т1 микроконтроллера AT90S8515 (рисунок 3.7).

В состав таймера входят четыре 16-разрядных регистра (счетный регистр TCNT1, регистр захвата ICR1, регистры сравнения OCR1А и OCR1В), 16-разрядный компаратор, два 8-разрядных управляющих регистра TCCR1А и TCCR1B, а также блок управления таймером.

Два других варианта имеют сокращенный набор устройств.

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

Счетный регистр таймера Т1 реализован как суммирующий (в режиме ШИМ -- как суммирующий/вычитающий) счетчик и доступен в любой момент времени как для чтения, так и для записи. При записи в регистр TCNT1 во время работы таймера счет будет продолжен по следующему за операцией записи импульсу тактового сигнала таймера/счетчика. После подачи напряжения питания в регистре TCNT1 находится нулевое значение.

Рисунок 3.7 - Структурная схема таймера Т1. Примечание: Позиции разрядов регистров TIMSK и TIFR показаны условно

Физически регистр TCNT1 размещен в двух регистрам TCNT1H:TCNT1L, расположенных по адресам $2D:$2C (адреса в адресном пространстве ОЗУ, соответственно, $4D:$4C). Чтобы при обращении ЦПУ микроконтроллера к этим регистрам запись или чтение обоих байтов содержимого счетного регистра происходило одновременно, обращение производится с использованием специального 8-разрядного регистре TEMP (этот регистр используется только процессором и программно недоступен). Этот же регистр используется и при обращении к остальным 16-разрядным регистрам таймера/счетчика Tl: OCR1 (OCR1A и OCR1B) и ICR1. Прерывания на время обращения к любому из этих регистров должны быть запрещены.

Запись в регистр TCNT1.При записи старшего байта значения в регистр TCNT1H он помещается в регистр TEMP. Далее, при записи младшего байта в регистр TCNT1L он объединяется с содержимым регистра TEMP и оба байта записываются в регистр TCNT1 одновременно. Из сказанного видно, что для выполнения полного цикла записи в 16-разрядный регистр первым должен быть загружен старший байт (регистр TCNT1H).

Чтение регистра TCNT1. При чтении регистра TCNT1L (младший байт) содержимое регистра TCNT1H пересылается в регистр TEMP. А при последующем чтении регистра TCNT1H возвращается значение, сохраненное в регистре TEMP. Следовательно, для выполнения полной операции чтения 16-разрядного регистра первым должен быть прочитан младший байт (регистр TCNT1L).

Управление таймером/счетчиком Т1 осуществляется с помощью двух регистров управления TCCR1A и TCCR1B (в модели АТ90С8534 -- с помощью одного регистра TCCR1). Эти регистры расположены по адресам $2F ($4F) (регистр TCCR1A) и $2Е ($4Е) (регистры TCCR1B, TCCR1).

Формат регистра TCCR1A приведен на рисунке 3.8, а регистров TCCR1B и TCCR1 -- на рисунке 3.9. Неиспользуемые разряды регистров доступны только для чтения.

Разряд

7

6

5

4

3

2

1

0

AT90S/LS4434 AT90S/LS8535 AT90S4414 AT90S8515

Наименов.

СОМ1А1

СОМ1АО

СОМ1А1

СОМ1АО

-

-

PWM11

PWM10

Чтен.(R)/Зап.(W). Нач. значение

R/W

0

R/W

0

R/W

0

R/W

0

R

0

R

0

R/W

0

R/W

0

Рисунок 3.8 - Формат регистра TCCR1A

Разряд

7

6

5

4

3

2

1

0

Наименование

ICNCI

ICES1

-

-

CTC1

CS12

CS11

CS10

Чтение(R)/Запись(W) Начальное значение

R/W

0

R/W

0

R

0

R

0

R/W

0

R/W

0

R/W

0

R/W

0

а)

Разряд

7

6

5

4

3

2

1

0

Наименование

-

-

-

-

CTC1

CS12

CS11

CS10

Чтение(R)/Запись(W)

Начальное значение

R

0

R

0

R

0

R

0

R/W

0

R/W

0

R/W

0

R/W

0

б)

Рисунок 3.9 -Формат регистров: а -- TCCR1В; б -- TCCR1

По отношению к тактовому сигналу таймер/счетчик Т1 может работать в двух режимах:

1. Режим таймера. В этом режиме на вход таймера/счетчика поступают импульсы тактового сигнала микроконтроллера (непосредственно или через предделитель).

2. Режим счетчика событий. В этом режиме инкремент содержимого I счетного регистра производится по активному фронту сигнала на входе Т1 микроконтроллера. Выбор источника тактового сигнала, а также запуск и остановка таймера/счетчика осуществляются с помощью разрядов CS12...CS10 регистр управления таймером TCCR IB (таблица 3.7).

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

Таблица 3.7

Выбор источника тактового сигнала для таймера Т1

Регистр TCCR1В (TCCR1)

Источник тактового сигнала

CS12

CS11

CS10

0

0

0

Таймер/счетчик остановлен

0

0

1

СК (тактовый сигнал микроконтроллера)

0

1

0

СК/8

0

1

1

СК/64

1

0

0

СК/256

1

0

1

СК/1024

1

1

0

Вывод Т1, инкремент счетчика - по спадающему фронту импульсе*

1

1

1

Вывод Т1, инкремент счетчика - по нарастающему фронту импульсе*

*В модели АТ90С8534 значения «110» и «111» разрядов CS12...CS10 зарезервированы (режим счета внешних событий отсутствует).

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

Режим таймера

Принцип работы таймера Т1 в этом режиме такой же, как и таймера/ счетчика Т0. По каждому импульсу, поступающему на тактовый вход таймера/счетчика, производится инкремент содержимого счетного регистра TCNT1. При переходе таймера/счетчика из состояния "SFFFF" в состояние "$0000" устанавливается флаг T0V1 регистра TIFR и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в "1" разряда TOIE1 регистра TIMSK (разумеется, флаг общего разрешения прерываний I регистра SREG также должен быть установлен в "1").

Функция захвата (Capture)

Данная функция заключается в сохранении в определенный момент времени состояния таймера/счетчика в регистре захвата ICR1. Это действие может производиться либо по активному фронту сигнала на выводе IСР микроконтроллера, либо по сигналу от аналогового компаратора. При этом устанавливается флаг ICF1 регистра TIFR генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в "1" разряда TICIE1 регистра TIMSK.

Упрощенная структурная схема узла, выполняющего данную функцию, приведена на рисунке 3.10.

Рисунок 3.10 - Структурная схема узла захвата

ACIC - разрешение захвата по АСО; АСО - выход компаратора

Для управления схемой захвата используются два разряда регистра TCCR1B: ICNC1 и ICES1. Разряд ICNC1 управляет схемой подавления помех. Если этот разряд сброшен в "0", схема подавления помех выключена и захват производится по первому же активному фронту на выводе ICP микроконтроллера. Если же этот разряд установлен в "1", то при появление активного фронта на выводе ICP производится 4 выборки с частотой, равной тактовой частоте микроконтроллера. Захват будет выполнен только в том случае, если все выборки имеют уровень, соответствующий активному фронту сигнала (лог. "1" для нарастающего и лог. "0" для спадающего).

Активный фронт сигнала, т.е. фронт, по которому будет выполнено сохранение содержимого счетного регистра в регистре захвата, определяется состоянием разряда ICES 1. Если этот разряд сброшен в "0", то активным является спадающий фронт. Если же этот разряд установлен в "1", то активным является нарастающий фронт. Разумеется, вывод ICP должен быть сконфигурирован как входной, т.е. разряд регистра управления портом DDRx, соответствующий данному выводу, должен быть сброшен в "0".

Физически регистр захвата ICR1 размещен в двух регистрах ICR1H:ICR1L, расположенных по адресам $27:$26 (адреса в адресной пространстве ОЗУ соответственно $47:$46) и доступных только для чтения. Поскольку регистр захвата является 16-разрядным, при его чтении используется временный регистр TEMP. При чтении регистра ICR1L (младший байт) содержимое этого регистра пересылается в ЦПУ, а содержимое регистра ICRH (старший байт) сохраняется в регистре TEMP. При чтении регистра ICR1H возвращает значение, сохраненное в регистре TEMP. Следовательно, при чтении регистра ICR1 первым должен быть прочитан регистр ICR1L. Прерывания на время обращения к регистру ICR1 должны быть запрещены.

Функция сравнения (Compare)

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

Количество регистров сравнения, а также их названия отличаются в различных моделях микроконтроллеров (см. таблицу 3.8). Причем в моделях, имеющих по два регистра сравнения, операция сравнения производится независимо для каждого регистра.

Если состояние таймера становится равным числу, находящемуся в регистре сравнения, то в следующем машинном цикле устанавливается соответствующий этому регистру флаг прерывания в регистре TIFR для регистра OCR1 - флаг OCF1, для регистра OCR1A - флаг OCF1A, для регистра OCRIB - флаг OCF1B) и генерируется запрос на прерывание. Разрешение прерываний осуществляется установкой в "1" соответствующих флагов регистра TIMSK (OCIE1, OCIE1A и ОСТЕ1В для регистров OCR1, OCR1A и OCR1B соответственно).

Таблица 3.8

Регистры сравнения таймера/счетчика Т1

Модель

Регистр сравнения

первый

второй

T90S2313

OCR1A

T90S/LS2333 -T90S/LS4433

OCR1

-T90S/LS4434 -T90S/LS8535

OCRIA

OCR1B

T90S4414/8515

OCR1A

OCR IB

Наряду с установкой флага в регистре TIFR при равенстве счетного регистра и регистра сравнения могут выполняться и другие действия:

- сброс таймера/счетчика (только для регистров OCR1 и OCR1A);

- изменение состояния определенного вывода микроконтроллера (для всех регистров).

Поведение микроконтроллера, т.е. выполнение или невыполнение указанных действий, определяется несколькими разрядами регистров управления TCCR1A и TCCR1B. Названия этих разрядов и их описание приведены в таблице 3.9. Каждый регистр сравнения размещается в двух регистрах ввода-вывода РВВ:

- OCR1 - OCR1H:OCR1L, адреса $2В:$2А ($4В:$4А);

- OCR1А - OCR1AH:OCR1AL, адреса $2В:$2А ($4В:$4А);

- OCR1B - OCR1BH:OCR1BL, адреса $29:$28 ($49:$48).

Поскольку регистры сравнения являются 16-разрядными, при их чтении и записи используется временный регистр TEMP. При записи регистра сравнения первым должен записываться регистр OCRlxH (старший 5айт), а при чтении первым должен считываться регистр OCRlxL (младший байт). Прерывания на время обращения к регистру сравнения должны быть запрещены.

Режим ШИМ

В этом-режиме таймер Т1 представляет собой одинарный или сдвоенный, в зависимости от модели, широтно-импульсный модулятор. Широтно-импульсная модуляция является одним из видов непрерывной импульсной модуляции, при котором ширина импульса пропорциональна значению модулирующего сигнала. Соответственно в данном случае широтно-импульсная модуляция заключается в генерировании сигнала с программируемыми частотой и скважностью.

Для перевода таймера Т1 в режим ШИМ и задания частоты ШИМ-сигнала используются разряды PWM11:PWM10 регистра управления таймером TCCR1A. Соответствие между состоянием этих разрядов и режимом работы таймера/счетчика Т1 приведено в таблице 3.10.

Таблица 3.9

Управление работой схемы сравнения таймера Т1

Регистр

Название

Модель AT90

Описание

TCCR1A

7,6

СОМ1А1, СОМ1АО

S2313

S4434 LS4434 S8535 LS8535 0S4414 S8515

Управление выводом ОС1А (ОС1)* микроконтроллера

Состояние этих разрядов определяет поведение вывода ОС1А (ОС1) при совпадении содержимого счетного регистра и регистра сравнения OCR1A (OCR1). При изменении состояния этих разрядов соответствующее прерывание от компаратора таймера рекомендуется запретить (во избежание ложной генерации прерывания). Чтобы таймер мог управлять этим выводом, он должен быть сконфигурирован как выходной. Поведение вывода задается следующим образом:

СОМ11, СОМ10

S2333 LS2333 S4433

СОМ1А1 (СОМ11)

СОМ1А0 (СОМ10)

Описание

0

0

Таймер/счетчик Т1 отключен от вывода ОС1А (ОС1)

0

1

Состояние вывода меняется на противоположное

1

0

Вывод сбрасывается в «0»

1

1

Вывод устанавливается в «1»

5,4

СОМ1В1. СОМ1ВО

S4434 LS4434 S8535 LS8535 S4414

S8515

Управление выводом ОС1В микроконтроллера

Состояние этих разрядов определяет поведение вывода ОС1В при совпадении содержимого счетного регистра и регистра сравнения OCRIB. При изменении состояния этих разрядов соответствующее прерывание от компаратора таймера рекомендуется запретить (во избежание ложной генерации прерывания). Чтобы таймер мог управлять этим выводом, он должен быть сконфигурирован как выходной. Поведение вывода задается следующим образом:

СОМ1В1

СОМ1ВО

Описание

0

0

Таймер/счетчик Т1 отключен от вывода ОС1В

0

1

Состояние вывода меняется на противоположное

1

0

Вывод сбрасывается в «0»

1

1

Вывод устанавливается в «1»

ТССR1B

3

СТС1

Вcе

Сброс таймера/счетчика

Если этот разряд установлен в «1», то при совпадении содержимого счетного регистра и регистра сравнения OCR A (OCR1) производив сброс таймера в состояние «$0000»**

* Для AT90S2313, AT90S/LS2333 и AT90S/LS2343 -- ОС1,

для AT90S/LS4434, AT90S/LS8535 и AT90S4414/8515 -- ОС1 А.

** Поскольку сброс выполняется в машинном цикле, следующем за тем, во время которого произошло совпадение, поведение таймера зависит от установленного коэффициента деления предделителя таймера (см. табл. 3.7). При коэффициенте деления, равном 1, состояние таймера меняется следующим образом:

... С-2 С-1 С 0 1 ...

а при коэффициенте деления, не равном 1:

...- (С-2, ...,С-2) (С-1,...,С-1) (С, 0, ...,0) ...,

где С -- число, находящееся в регистре сравнения.

Таблица 3.10

Управление режимом ШИМ таймера Т1

Регистр TCCR1A

Описание

PWM11

PWM10

0

0

Режим ШИМ таймера/счетчика Т1 выключен

0

1

8-разрядный широтно-импульсный модулятор

1

0

9-разрядный широтно-импульсный модулятор

1

1

1 0-разрядный широтно-импульсный модулятор

Для генерации сигнала с ШИМ используется схема сравнения таймера, поэтому в моделях AT90S2313, AT90S/LS2333 и АT90S/LS4433 модулятор является одинарным (один регистр сравнения), а в моделях AT90S/LS4434, AT90S/LS8535 и AT90S4414/8515 - сдвоенным (два регистра сравнения).

Сигнал ШИМ снимается с выхода схемы сравнения таймера. В рассматриваемом режиме счетный регистр таймера функционирует как реверсивный счетчик, модуль счета которого (ТОР) зависит от режима работы модулятора. Значение модуля счета и соответствующая частота ШИМ-сигнала для каждого режима работы модулятора приведены в таблице 3.11.

Таблица 3.11

Модуль счета счетного регистра и частота ШИМ-сигнала

Разрешение модулятора

Модуль счета (ТОР)

Частота ШИМ-сигнала

8 разрядов

$00FF (255)

fТСК1/510

9 разрядов

$01FF(511)

fТСК1/1022

10 разрядов

$03FF (1023)

fТСК1/2046

Примечание: fТСК1 - частота тактового сигнала таймера/счетчика Т1.

При работе таймера Т1 в режиме ШИМ состояние счетного регистра изменяется от $000 до значения ТОР, а затем снова до $000 после чего цикл повторяется. При равенстве состояния счетчика и содержимого регистра сравнения состояние соответствующего этому регистру вывода микроконтроллера изменяется согласно таблице 3.12 (рисунок 3.11). Таким образом, длительность импульса равна удвоенному значению содержимого регистра сравнения.

Таблица 3.12

Поведение выходов схемы сравнения в режиме ШИМ

Регистр TCCR1A

Поведение вывода OClx (OC1)

СОМ1х1 (СОМ11)

COMlx0 (СОМ10)

0

0

Таймер/счетчик Т1 отключен от вывода

0

1

Таймер/счетчик Т1 отключен от вывода

1

0

Сбрасывается в «0» при прямом счете и устанавливается в « 1» при обратном счете (неинвертированный ШИМ-сигнал)

1

1

Устанавливается в «1» при прямом счете и сбрасывается в «0» при обратят счете (инвертированный ШИМ-сигнал)

Примечание: х - А или В.

Соответственно если в счетный регистр записать значение $000 или ТОР, то при следующем совпадении состояния счетчика и содержимого регистра сравнения выход схемы сравнения переключится в устойчивое состояние согласно таблице 3.13.

Таблица 3.13

Устойчивые состояния выхода схемы сравнения

Регистр TCCR1A

Регистр OCRlx (OCR1)

Состояние вывода OClx (ОС1)

COMU1 (СОМИ)

COMUO (СОМ10)

1

0

$000

0

1

0

ТОР

1

1

1

$000

1

1

1

ТОР

0

Примечание: х -- А или В

Особенностью работы таймера/счетчика Т1 в режиме ШИМ является то, что при записи в регистр сравнения младшие 10 разрядов записываемого числа на самом деле сохраняются в специальном временном регистре (не путать с регистром TEMP). А изменение содержимого регистра сравнения происходит только в момент достижения счетчиком максимального значения (ТОР). Благодаря такому решению исключается появление несимметричных выбросов сигнала на выходе модулятора (помех), которые были бы неизбежны при непосредственной записи в регистр сравнения.

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

При работе таймера Т1 в режиме ШИМ может генерироваться прерывание по переполнению счетного регистра таймера, а также прерывания от схемы сравнения.

Рисунок 3.11 - Формирование ШИМ-сигнала

Рисунок 3.12 - Структурная схема сторожевого таймера

Флаги прерываний устанавливаются в «1» при изменении счетчиком направления счета: флаг TOV1 - в точке $000, а флаги OCF1 (для регистра OCR1), OCF1A (для регистра OCR1A) и OCF1B (для регистра OCRIB) - в точке TOР. Разрешение и обработка соответствующих прерываний выполняются как обычно.

3.4.4 Сторожевой таймер (WATCHDOG)

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

Структурная схема сторожевого таймера приведена на рисунке 3.12.

Сторожевой таймер имеет независимый генератор, поэтому он работает даже во время нахождения микроконтроллера в режиме Power Down. Частота этого генератора зависит от напряжения питания устройства, температуры, технологического разброса. Типовое значение частоты равно 1 МГц при fcc = 5.0 В и 350 кГц при Vcc = 3.0 В.

Если сторожевой таймер включен, то через определенные промежутки времени (при наступлении тайм-аута) выполняется сброс микроконтроллера. Чтобы избежать сброса микроконтроллера при нормальном выполнении программы, сторожевой таймер необходимо регулярно сбрасывать через промежутки времени, меньше его периода. Сброс сторожевого таймера осуществляется командой WDR.

Для управления сторожевым таймером предназначен регистр WDTCR, расположенный по адресу $21 ($41). Формат этого регистра приведен на рисунке 3.13.

Разряд

7

6

5

4

3

2

1

0

Наименование

-

-

-

WDTOE

WDE

WDP2

WDP1

WDP0

Чтение(R)/Запись(W)

R

R

R

R/W

R/W

R/W

R/W

R/W

Начальное значение

0

0

0

0

0

0

0

0

Рисунок 3.13 - Формат регистра WDTCR

Для включения/выключения сторожевого таймера используются два разряда регистра WDTCR - WDE и WDTOE. Если разряд WDE установлен в "1", сторожевой таймер включен, если сброшен в "0" - выключен. Непосредственно перед включением таймера рекомендуется также выполнять его сброс командой WDR.

Чтобы избежать непреднамеренного выключения таймера счетчика, предназначен разряд WDTOE. Дело в том, что выключение сторожевого таймера (сброс разряда WDE) можно осуществить только при установленном разряде WDTOE. Причем через 4 машинных цикла после установки в "1" этот разряд аппаратно сбрасывается, благодаря чему практически исчезает возможность случайного выключения сторожевого таймера.

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

- одной командой записать лог. "1" в разряды WDE и WDTOE;

- в течение следующих четырех машинных циклов записать лог. "0" в разряд WDE.

Период наступления тайм-аута сторожевого таймера задается с помощью разрядов WDP2...WDP0 регистра WDTCR согласно таблицы 3.14.

Чтобы избежать непреднамеренного сброса микроконтроллера при изменении периода сторожевого таймера, необходимо перед записью разрядов WDP2:WDP0 либо запретить работу сторожевого таймера, либо сбросить его.

Таблица 3.14

Задание периода сторожевого таймера

WDP2

WDP1

WDPO

Число тактов генератора

Период наступления тайм-аута (типовое значение)

Vcc =3.0 В

Vcc = 5.0 В

0

0

0

16-1024

47 мс

15 мс

0

0

1

32-1024

91 мс

30 мс

0

1

0

64-1024

0.19с

60 мс

0

1

1

128-1024

0.38с

0.12с

1

0

0

256-1024

0.75с

0.24с

1

0

1

512-1024

1.5с

0.49с

1

1

0

1024-1024

3.0с

0.97с

1

1

1

2048-1024

6.0с

1.9с

3.4.5 Формирование временных интервалов

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

,

где n - разрядность счетчика соответствующего таймера; АInit - начальная установка таймера; k - коэффициент деления предделителя; F - частота генератора микроконтроллера.

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

.

При этом точность формирования временного интервала определяется отношением .

Рассмотрим пример программы формирования временного интервала с использованием восьмиразрядного таймера Т0 микроконтроллера AT90S8515 (n = 8).

Пусть требуется получить интервал Т = 1.5 мкс. Тогда начальная установка таймера АInit будет равна

или в шестнадцатеричной системе счисления - FA.

3.4.6 Программа формирования временного интервала

;Программа формирования временного интервала

;-

.include "8515def.inc"

rjmp RESET ;Reset Handle

;-

.ORG $7;вектор прерывания по переполнению таймера Т0

rjmp TIME0

RESET:

.def temp = r16

ldi temp, low(RAMEND);инициализируем указатель стека

out SPL, temp

ldi temp, high(RAMEND)

out SPH,temp

sei ;установка глобального флага прерываний

ldi r17,256-6;запись числа Аinit в регистр r17

out TCNT0,r17

ldi r17,2;разрешение прерывания от таймера Т0

out TIMSK,r17

sbi DDRA,0;установка вывода PORTA.0 на вывод

ldi r17,1;пуск счетчика путем записи кода (001)2 в разряды

out TCCR0,r17;CS02...CS00 регистра управления таймером TCCR0

sbi PORTA,0;установка вывода PORTA.0 в состояние"1"

nop;произвольная программа (пустые команды)

nop

nop

nop

nop

rjmp RESET1

;Подпрограмма обработки прерывания по переполнению счетчика таймера Т0

TIME0:

cbi PORTA,0;сброс вывода PORTA.0 в состояние"0"

cli;глобальное запрещение прерываний

ldi r17,0

out TIMSK,r17 ; запрещение прерываний от таймера Т0

out TCCR0,r17;остановка счетчика таймера Т0

reti;выход из подпрограммы

RESET1:

4. Задание на проведение исследований

Исследование команд и отдельных узлов микроконтроллера выполняется по следующему алгоритму:

1. Изучите теоретический материал по соответствующей теме и программ исследования, а также получите задание на проведение исследования.

2. Составьте программу на ассемблере для исследования.

3. Откройте среду разработки AVR Studio.

4. Создайте новый проект для исследования.

5. Наберите текст программы в окне ассемблера или откройте файл с текстом программы в AVR Studio.

6. Откомпилируйте программу.

7. Запустите выполнение программы и пронаблюдайте за изменением содержимого регистров и портов.

8. Выведите на экран окна просмотра содержимого регистров и портов.

9. Остановите выполнение программы и сохраните проект.

10. Оформите отчет, в котором должны быть:

10.1 название; цель работы;

10.2 краткие теоретические сведения об объекте исследования (схемы, таблицы, логика работы);

10.3 листинг программы с комментариями, а также состояние задействованных регистров на каждом шаге выполнения программы;

10.4 выводы по работе.

Литература

1. Микропроцессорные системы: Учебное пособие для вузов / Александров Е.К., Грушвицкий Р.И., Куприянов М.С. и др.; Под общ. ред. Пузанкова Д.В. - СПб.: Политехника, 2002. - 935 с.: ил.

2. Основы микропроцессорной техники / Новиков Ю.В., Скоробогатов П.К. / М.: ИНТУИТ.РУ. "Интернет-Университет Информационных технологий", 2003. - 440 с.: ил.

3. Кривченко И. AVR - микроконтроллеры: очередной этап на пути развития

4. Ефстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы "Atmel". М.: Издательский дом "Додека - XXI", 2002. - 288 с.: ил.

5. Голубцов М.С. Микроконтроллеры AVR: от простого к сложному, М. 2003. - 456 с.

6. Основы микропроцессорной техники / Новиков Ю.В., Скоробогатов П.К. / М.

Приложение

Таблица П.1

РВВ моделей AT90S1200, AT90S2313, AT90S/LS2323 и AT90S/LS2343

Название

Функция

Адрес

AT90S1200

AT90S2313

AT90S/LS2323AT90S/LS2343

ACSR

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

$08

$08 ($28)

DDRB

Регистр направления данных порта В

$17

$17 ($37)

$17 ($37)

DDRD

Регистр направления данных порта D

$11

$11 ($31)

--

EEAR

Регистр адреса EEPROM

$1Е

$1Е($ЗЕ)

$1Е($ЗЕ)

EECR

Регистр управления EEPROM

$1С

$1С ДОС)

$1С ($30

EEDR

Регистр данных EEPROM

$10

$1D ($3D)

$10 ($30)

GIFR

Общий регистр флагов прерываний

--

$ЗА ($5А)

$ЗА ($5А)

GIMSK

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

$3B

$ЗВ ($5В)

$ЗВ ($5В)

ICR1H

Регистр захвата таймера/счетчика 1 (старший байт)

--

$25 ($45)

--

ICR1L

Регистр захвата таймера/счетчика 1 (младший байт)

--

$24 ($44)

--

MCUCR

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

$35

$35 ($55)

$35 ($55)

MCUSR

Регистр состояния микроконтроллера

--

--

$34 ($54)

OCR1AH

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

--

$2В (4В)

--

OCRIAL

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

--

$2А (4А)

--

PINB

Выводы порта В

$15

$16 ($36)

$16 ($36)

PIND

Выводы порта D

$10

$10 ($30)-

PORTB

Регистр данных порта В

$18

$18 ($38)

$18 ($38)

PORTD

Регистр данных порта D

$12

$12 ($32)

--

SPL

Указатель стека

--

$30 ($50)

$30 ($50)

SREG

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

$3F

$3F ($5F)

$3F ($5F)

TCCR0

Регистр управления таймером/счетчиком 0

$33

$33 ($53)

$33 ($53)

TCCR1A

Регистр управления А таймером/счетчиком 1

--

$2F ($4F)

--

TCCR1B

Регистр управления В таймером/счетчиком 1

--

$2Е ($4Е)

--

TCNT0

Счетный регистр таймера/счетчика 0 (8-разрядный)

$32

$32 ($52)

$32 ($52)

TCNT1H

Счетный регистр таймера/счетчика 1

--

$20 ($40)

--

TCNT1L

Счетный регистр таймера/счетчика 1 (млад. байт)

--

$2С ($4С)

--

TIFR

Регистр флагов прерываний от таймера/счетчика

$38

$38 ($58)

$38 ($58)

TIMSK

Регистр маски прерываний от таймера/счетчика

$39

$39 ($59)

$39 ($59)

UBRR

Регистр скорости передачи UART

--

$09 ($29)

--

UCR

Регистр управления UART

--

$ОА ($2А)

--

UDR

Регистр данных UART

--

$ОС ДОС)

--

USR

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

--

$ОВ ($2В)

--

WDTCR

Регистр управления сторожевым таймером

$21

$21 ($41)

Таблица П.2

РВВ моделей AT90S/LS2333 и AT90S/LS4433

Название

Функция

Адрес

AT90S/LS2333 AT90S/LS4433

ACSR

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

$08 ($28)

ADCH

Регистр данных АЦП (старший байт)

$05 ($25)

ADCL

Регистр данных АЦП (младший байт)

$04 ($24)

ADCSR

Регистр управления и состояния АЦП

$06 ($26)

ADMUX

Регистр управления мультиплексором АЦП

$07 ($27)

DDRB

Регистр направления данных порта В

$17 ($37)

DDRC

Регистр направления данных порта С

$14 ($37)

ODRD

Регистр направления данных порта D

$11 ($31)

EEAR

Регистр адреса EEPROM

$1Е($ЗЕ)

EECR

Регистр управления EEPROM

$1С($ЗС)

EEDR

Регистр данных EEPROM

$10 ($30)

GIFR

Общий регистр флагов прерываний

$ЗА (S5A)

GIMSK

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

$ЗВ ($5В)

ICR1H

Регистр захвата таймера/счетчика 1 (старший байт)

$27 ($47)

1CR1L

Регистр гахвата таймера/счетчика 1 (младший байт)

$26 ($46)

MCUCR

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

$35 ($55)

OCR1H

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

$2В ($4В)

OCR1L

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

$2А ($4А)

P1NB

Выводы порта В

$16 ($36)

P1NC

Выводы порта С

$13 ($36)

PIND

Выводы порта D

$10 ($30)

PORTB

Регистр данных порта В

$18 ($38)

PORTC

Регистр данных порта С

$15 ($38)

PORTD

Регистр данных порта D 0

$12 ($32)

SP

Указатель стека

$30 ($50)

SPCR

Регистр управления SPI

$00 ($20)

SPDR

Регистр данных SPI

$OF ($2F)

SPSR

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

$ОЕ ($2Е)

SREG

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

$3F ($5F)

TCCRO

Регистр управления таймером/счетчиком 0

$33 ($53)

TCCR1A

Регистр управления А таймером/счетчиком 1

$2F ($4F)

TCCR1B

Регистр управления В таймером/счетчиком 1

$2E ($4E)

TCNTO

Счетный регистр таймера/счетчика 0 (8-разрядный)

$32 ($52)

TCNT1H

Счетный регистр таймера/счетчика 1

$20 ($40)

TCNT1L

Счетный регистр таймера/счетчика 1 (младший байт)

$2C ($4C)

T1FR

Регистр флагов прерываний от таймера/счетчика

$38 ($58)

TIMSK

Регистр маски прерываний от таймера/счетчика

$39 ($59)

UBRR

Регистр скорости передачи UART (младший байт)

$09 ($29)

UBRRHI

Регистр скорости передачи UART (старший байт)

$03 ($23)

UCR

Регистр управления UART

$OA ($2A)

UDR

Регистр данных UART

$ОС ($20)

USR

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

$ОВ ($2В)

WDTR

Регистр управления сторожевым таймером

$21 ($41)

Таблица П.3

РВВ моделей AT90S/LS4434, AT90S/LS8535, AT90S4414 и AT90S8515

Название

Функция

Адрес

AT90S/LS4434 AT90S/LS8535

AT90S4414 AT90S8515

1

2

3

4

ACSR

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

$08 ($28)

$08 ($28)

ADCH

Регистр данных АЦП (старший байт)

$05 ($25)

--

ADCL

Регистр данных АЦП (младший байт)

$04 ($24)

--

ADCSR

Регистр управления и состояния АЦП

$06 ($26)

--

ADMUX

Регистр управления мультиплексором АЦП

$07 ($27)

--

ASSR

Регистр состояния асинхронного режима

$22 ($42)

--

DDRA

Регистр направления данных порта А

$1А($ЗА)

$1А($ЗА)

DDRB

Регистр направления данных порта В

$17 ($37)

$17 ($37)

DDRC

Регистр направления данных порта С

$14 ($37)

$14 ($37)

ODRD

Регистр направления данных порта D

$11 ($31)

$11 ($31)

EEARH

Регистр адреса EEPROM (старший байт)

$1F($3F)

$1F($3F)

EEARL

Регистр адреса EEPROM (младший байт)

$1Е($ЗЕ)

$1Е($ЗЕ)

EECR

Регистр управления EEPROM

$1С($ЗС)

$1С($ЗС)

EEDR

Регистр данных EEPROM

$1D ($3D)

$1D ($3D)

GIFR

Общий регистр флагов прерываний

$ЗА ($5А)

$ЗА ($5А)

GIMSK

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

$ЗВ ($5В)

$ЗВ ($5В)

ICR1H

Регистр захвата таймера/счетчика 1 (стар. байт)

$27 ($47)

$25 ($45)

1CR1L

Регистр захвата таймера/счетчика 1 (млад. байт)

$26 ($46)

$24 ($44);

MCUCR

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

$35 ($55)

$35 ($55)

MCUSR

Регистр состояния микроконтроллера

$34 ($54)

OCRIAH

Регистр совпадения выхода А (старший байт)

$2В ($4В)

$2В ($4В)

OCR1AL

Регистр совпадения выхода А (младший байт)

$2А ($4А)

$2А ($4А)

OCRIBH

Регистр совпадения выхода В (старший байт)

$29 ($49)

$29 ($49)

OCRIBL

Регистр совпадения выхода В (младший байт)

$28 ($48)

$28 ($48)

OCR2

Регистр совпадения выхода таймера/счетчика 2

$23 ($43)

--

P1NA

Выводы порта А

$19 ($39)

$19 ($39)

PINB

Выводы порта В

$16 ($36)

$16 ($36)

PINC

Выводы порта С

$13 ($36)

$13 ($36)

PIND

Выводы порта D

$10 ($30)

$10 ($30)

PORTA

Регистр данных порта А

$1В ($ЗВ)

$1В ($ЗВ)

PORТВ

Регистр данных порта В

$18 ($38)

$18 ($38)

PORTC

Регистр данных порта С

$15 ($38)

$15 ($38)

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)

TCCRO

Регистр управления таймером/счетчиком 0

$33 ($53)

$33 ($53)

TCCR1A

Регистр управления А таймером/счетчиком 1

$2F ($4F)

$2F ($4F)

TCCR1B

Регистр управления В таймером/счетчиком 1

$2E ($4E)

$2E ($4E)

TCCR2

Счетный регистр таймера/счетчика 2

$25 ($45)

--

TCNTO

Счетный регистр таймера/счетчика 0 (8-разрядный)

$32 ($52)

$32 ($52)

TCNT1H

Счетный регистр таймера/счетчика 1

$2D (S4D)

$2D ($4D)

TCNT1L

Счетный регистр таймера/счетчика 1 (младший байт)

$2C (S4C)

$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)

S0C ($2C)

USR

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

$0B ($2B)

S0B ($2B)

WDTCR

Регистр управления сторожевым таймером

$21 ($41)

$21 ($41)

Таблица П.4

РВВ модели АТ90С8534

Название

Функция

Адрес

АТ90С8534

ADCH

Регистр данных АЦП (старший байт)

$05 ($25)

ADCL

Регистр данных АЦП (младший байт)

$04 ($24)

ADCSR

Регистр управления и состояния АЦП

$06 ($26)

ADMUX

Регистр управления мультиплексором АЦП

$07 ($27)

DORA

Регистр направления данных порта А

$1А ($ЗА)

EEARH

Регистр адреса EEPROM (старший байт)

$1F($3F)


Подобные документы

  • Понятие и виды микроконтроллеров. Особенности программирования микропроцессорных систем, построение систем управления химико-технологическим процессом. Изучение архитектуры микроконтроллера ATmega132 фирмы AVR и построение на его основе платформы Arduino.

    курсовая работа [1,9 M], добавлен 13.01.2011

  • Микроконтроллеры - микросхемы, предназначенные для управления электронными устройствами, их классификация. Структура процессорного ядра микроконтроллеров, основные характеристики, определяющие его производительность. CISC и RISC архитектура процессора.

    курсовая работа [43,2 K], добавлен 03.10.2010

  • Семейство 16-разрядных микроконтроллеров Motorola 68HC12, их структура и функционирование. Модуль формирования ШИМ-сигналов. Средства отладки и программирования микроконтроллеров 68НС12. Особенности микроконтроллеров семейства MCS-196 фирмы INTEL.

    курсовая работа [239,6 K], добавлен 04.01.2015

  • Использование микроконтроллеров AVR фирмы Atmel в проектируемой аппаратуре. Архитектура и общие характеристики прибора, предназначение арифметики логического устройства и понятие флэш-памяти. Формат пакета данных, алгоритм их передачи и система команд.

    контрольная работа [427,3 K], добавлен 12.11.2010

  • Адресное пространство микроконтроллеров MSP430F1xx. Байтовая и словная формы инструкций. Система команд MSP микроконтроллеров. Периферийные устройства микроконтроллеров MSP430F1xx. Аналого-цифровой преобразователь ADC12, его технические характеристики.

    курсовая работа [278,1 K], добавлен 04.05.2014

  • Общая характеристика операций, выполняемых по командам базовой системы. Описание и мнемокоды команд, используемых при разработке программы на языке AVR Ассемблера. Основные принципы работы команд с обращением по адресу SRAM и к регистрам ввода–вывода.

    реферат [148,4 K], добавлен 21.08.2010

  • Микроконтроллер (MCU) — микросхема, предназначенная для управления электронными устройствами. Их можно встретить во многих современных приборах, в том числе и бытовых. Рассмотрение архитектуры различных микроконтроллеров, ядра, памяти, питания, периферии.

    реферат [216,5 K], добавлен 24.12.2010

  • Общая характеристика и применение микроконтроллеров FUJITSU MB-90 и MCS-196 фирмы Intel. Основные особенности микроконтроллеров серии MCS-96 и MB90385. Внутренняя архитектура процессоров. Система команд, работа с внутренними и внешними устройствами.

    курсовая работа [768,0 K], добавлен 01.12.2010

  • Классификация систем управления (СУ) машиностроительным оборудованием. Архитектура СУ на базе микропроцессорных комплектов фирм DEC и Motorola. Программное обеспечение СУ и программируемых контроллеров. Графический язык программирования Ladder Diagram.

    курс лекций [374,5 K], добавлен 22.11.2013

  • Рассмотрение структуры и принципов работы таймеров/счетчиков (общего назначения, сторожевого, типов А, В, С, D, Е) микроконтроллеров и аналого-цифрового преобразователя семейства AVR с целью разработки обучающего компьютерного электронного пособия.

    курсовая работа [1,0 M], добавлен 06.03.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.