Сброс и обработка прерываний - Программа для управления регулятором скорости вращения двигателя

В AT90S1200 предусмотрены 3 различных источника прерываний. Эти прерывания и сброс имеют различные векторы в области памяти программ. Каждое из прерываний разрешается отдельным битом, разрешающим данное прерывание, и битом I разрешающим обработку всех прерываний.

Младшие адреса памяти программ отведены под векторы прерываний, список векторов прерываний приведен в таблице. Этот список также определяет приоритет различных прерываний. Чем младше адрес, тем выше приоритет прерывания. Наивысший приоритет имеет сброс, за ним INT0 и т. д.

Номер вектора

Адрес

Источник

Описание прерывания

1

$000

RESET

Ножка сброса и сброс от сторожевого таймера

2

$001

INT0

Внешнее прерывание 0

4

$002

TIMER0,OVF0

Переполнение таймера/счетчика 0

5

$003

ANA_COMP

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

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

В AT90S1200 предусмотрен 8-разрядный таймер/счетчик общего назначения. Таймер/счетчик получает импульсы от 10-битового предварительного делителя. Таймер/Счетчик можно использовать как таймер, с внутренним источником импульсов, или как счетчик, управляемый внешними счетными импульсами.

8-разрядный таймер/счетчик может получать импульсы тактовой частоты - CK, импульсы с предварительного делителя (CK/8, CK/64, CK/256 или CK/1024), импульсы с внешнего вывода или быть остановлен соответствующими установками регистра TCCR0. Флаг переполнения таймера находится в регистре TIFR. Биты управления таймером расположены в регистре TCCR0. Разрешение и запрещение прерываний от таймера управляется регистром TIMSK.

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

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

РЕГИСТР УПРАВЛЕНИЯ ТАЙМЕРОМ/СЧЕТЧИКОМ 0 - TCCR0

Бит

$33

Чт./зап. (R/W)

Начальные знач.

7

6

5

4

3

2

1

0

-

-

-

-

-

CS02

CS01

CS00

TCCR0

R

R

R

R

R

R/W

R/W

R/W

0

0

0

0

0

0

0

0

Биты 7..3 - зарезервированы. В AT90S1200 эти биты зарезервированы и всегда читаются как 0.

Биты 2,1,0 - CS02, CS01, CS00 - выбор тактовой частоты. Эти биты задают коэффициент деления предварительного делителя.

CS02

CS01

CS00

Описание

0

0

0

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

0

0

1

CK

0

1

0

CK/8

0

1

1

CK/64

1

0

0

CK/256

1

0

1

CK/1024

1

1

0

Внешний вывод T0, нарастающий фронт

1

1

1

Внешний вывод T0, спадающий фронт

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

Порт Вввода/вывода

Порт B 8-разрядный двунаправленный порт.

Для обслуживания порта отведено три регистра: регистр данных PORTB ($18), регистр направления данных - DDRB ($17) и ножки порта B ($16). Адрес ножек порта B предназначен только для чтения, в то время как регистр данных и регистр направления данных - для чтения/записи.

Все выводы порта имеют отдельно выбираемые нагрузки. Выходы порта B могут отдавать ток до 20 мА и непосредственно управлять светодиодными индикаторами. Если выводы PB0..PB7 используются как входы и замыкаются на землю, то при включенных внутренних подтягивающих резисторах, выводы являются источниками тока (IIL). Дополнительные функции выводов порта B приведены в таблице.

Вывод

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

PB0

AIN0 (Положительный вход аналогового компаратора)

PB1

AIN1 (Отрицательный вход аналогового компаратора)

PB5

MOSI (Вход данных для загрузки памяти)

PB6

MISO (Выход данных для чтения памяти)

PB7

SCK (Вход тактовых импульсов последовательного обмена)

При использовании альтернативных функций выводов, регистры DDRB и PORTB должны быть установлены в соответствии с описанием альтернативных функций.

РЕГИСТР ДАННЫХ ПОРТА B - PORTB

Бит

$18

Чт./зап. (R/W)

Начальн. знач.

7

6

5

4

3

2

1

0

PORTB7

PORTB6

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

PORTB

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B - DDRB

Бит

$17

Чт./зап. (R/W)

Начальн. знач.

7

6

5

4

3

2

1

0

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

DDRB

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

0

0

0

0

0

0

0

0

ВЫВОДЫ ПОРТА B - PINB

Бит

$16

Чт./зап. (R/W)

Начальн. знач.

7

6

5

4

3

2

1

0

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

PINB

R

R

R

R

R

R

R

R

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

Hi-Z

PINB не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта B. При чтении PORTB, читаются данные из регистра-защелки, при чтении PINB читаются логические значения присутствующие на выводах порта.

Порт B, как порт ввода/вывода общего назначения:

Все 8 бит порта B при использовании для ввода/вывода одинаковы.

Бит DDBn регистра DDRB выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTBn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTBn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.

Похожие статьи




Сброс и обработка прерываний - Программа для управления регулятором скорости вращения двигателя

Предыдущая | Следующая