Xreferat.com » Рефераты по радиоэлектронике » AVR микроконтроллер AT90S2333 фирмы Atmel

AVR микроконтроллер AT90S2333 фирмы Atmel

внешнем сбросе Бит об­нуляется при сбросе по включению питания или записью нуля.


Бит 0 - PORF - этот бит устанавливается при сбросе по включению пи­тания, бит очищается записью нуля.


Чтобы определить источник сброса пользователь должен в самом на­чале программы прочитать регистр MCUSR и обнулить все биты. Источник сброса определяется проверкой соответствующих флагов сброса.

ОБРАБОТКА ПРЕРЫВАНИЙ

AT90S2333/4433 имеют два регистра маскирования прерываний GIMSK - общий регистр маски прерываний и TIMSK - регистр маски прерываний от таймеров/счетчиков.

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

Когда программный счетчик устанавливается на текущий вектор пре­рывания для его обработки, соответствующий флаг, сгенерированный пре­рыванием, аппаратно сбрасывается. Некоторые флаги прерывания могут быть сброшены записью логической единицы в бит соответствующий флагу.



ОБЩИЙ РЕГИСТР МАСКИ ПРЕРЫВАНИЙ GIMSK


3Bh(5Bh)

7 6 5 4 3 2 1 0

INT1

INT0

-

-

-

-

-

-

RW

RW

R

R

R

R

R

R

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

0

0

0

0

0

0

0

0


Бит 7 - INT1: Запрос внешнего прерывания 1 разрешен. Когда этот бит установлен, а также установлен бит I регистра состояния, разрешается прерывание от внешнего вывода. Биты управления запуском прерывания (ISC11 и ISC10) в регистре управления микроконтроллером (MCUCR) опре­деляют по какому событию отрабатывается прерывание - по спадающему или нарастающему фронту или же по уровню. Активность на выводе приводит к возникновению прерываний даже если вывод сконфигурирован как выход. При возникновении прерывания выполняется программа, начинающаяся с адреса 002h в памяти программ. (см. также "Внешние прерывания").


Бит 6 - INT0: Запрос внешнего прерывания 0 разрешен. Когда этот бит установлен, а также установлен бит I регистра состояния, разрешается прерывание от внешнего вывода. Биты управления запуском прерывания (ISC01 и ISC00) в регистре управления микроконтроллером (MCUCR) опре­деляют по какому событию отрабатывается прерывание - по спадающему или нарастающему фронту или же по уровню. Активность на выводе приводит к возникновению прерываний даже если вывод сконфигурирован как выход. При возникновении прерывания выполняется программа, начинающаяся с адреса $001 в памяти программ. (см. также "Внешние прерывания").


Биты 5..0 - зарезервированы. В AT90S2333/4433 эти биты зарезервиро­ваны и всегда читаются как 0.

ОБЩИЙ РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ

GIFR


3Bh(5Bh)

7 6 5 4 3 2 1 0

INTF1

INTF0

-

-

-

-

-

-

RW

RW

R

R

R

R

R

R

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

0

0

0

0

0

0

0

0


Бит 7 - INTF1: Флаг внешнего прерывания 1: При возникновении на вы­воде INT1 события вызывающего прерывание, INTF1 устанавливается в "1". Если установлены бит I регистра SREG и бит INT1 в GIMSK, происходит переход на вектор прерывания по адресу 002h. Флаг очищается после вы­полнения обработчика прерывания. Кроме того, флаг можно очистить, за­писав в него логическую единицу.


Бит 6 - INTF0: Флаг внешнего прерывания 0: При возникновении на вы­воде INT0 события вызывающего прерывание, INTF0 устанавливается в "1". Если установлены бит I регистра SREG и бит INT0 в GIMSK, происходит переход на вектор прерывания по адресу 001h. Флаг очищается после вы­полнения обработчика прерывания. Кроме того, флаг можно очистить, за­писав в него логическую единицу.


Биты 5..0 - зарезервированы. В AT90S2333/4433 эти биты зарезервиро­ваны и всегда читаются как 0.


РЕГИСТР МАСКИ ПРЕРЫВАНИЯ ОТ ТАЙМЕРА/СЧЕТЧИКА – TIMSK

TIMSK


39h(59h)

7 6 5 4 3 2 1 0

TOIE1

OCIE1A

-

-

TICIE1

-

TOIE0

-

RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


Бит 7 - TOIE1: Разрешение прерывания по переполнению таймера/счет­чика 1: Если установлен этот бит и бит разрешения прерываний в регист­ре состояния, разрешены прерывания по переполнению таймера/счетчика 1. Соответствующее прерывание (вектор $005) выполняется при переполнении таймера/счетчика 1. В регистре флагов таймеров/счетчиков (TIFR) уста­навливается флаг переполнения. Если таймер/счетчик 1 работает в режиме ШИМ, флаг переполнения устанавливается при изменении направления сче­та, при значении 0000h.


Бит 6 - OCIE1A: Разрешение прерывания по совпадению таймера/счетчи­ка 1: Если установлены бит OCIE1A и бит разрешения прерывания в регис­тре состояния, разрешены прерывания по совпадению таймера/счетчика 1. Прерывание (вектор 004h) выполняется при равенстве таймера/счетчика 1 и регистра совпадения. Во флаговом регистре TIFR устанавливается ("1") флаг совпадения.


Биты 5,4 - зарезервированы; в AT90S2333/4433 эти биты зарезервиро­ваны и всегда читаются как 0.


Бит 3 - TICIE1: Разрешение прерывания по входу захвата: Если уста­новлены бит TICIE1 и бит разрешения прерывания в регистре состояния, разрешены прерывания по входу захвата. Соответствующее прерывание (вектор 003h) выполняется по сигналу захвата на выводе 11 (PD6/ICP). Во флаговом регистре TIFR устанавливается ("1") флаг захвата.

Бит 2 - зарезервирован; в AT90S2333/4433 этот бит зарезервирован и всегда читается как 0.


Бит 1 - TOIE0: Разрешение прерывания по переполнению таймера/счетчи­ка 0. Если этот бит установлен в 1, и бит I в регистре состояния уста­новлен в 1, разрешены прерывания по переполнению таймера/счетчика 0. При возникновении переполнения выполняется соответствующий вектор пре­рывания (006h). Флаг переполнения (TOV0) во флаговом регистре прерыва­ний (TIFR) таймеров/счетчиков устанавливается в 1.


Бит 0 - зарезервирован; в AT90S2333/4433 этот бит зарезервирован и всегда читается как 0.


РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ ОТ ТАЙМЕРОВ/СЧЕТЧИКОВ – TIFR


TIFR


38h(58h)

7 6 5 4 3 2 1 0

TOV1

OCF1

-

-

ICF1

-

TOV0

-

RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


Бит 7 - TOV1: Флаг переполнения таймера/счетчика 1: Флаг TOV1 уста­навливается ("1") при возникновении переполнения таймера/счетчика 1. Флаг TOV1 сбрасывается аппаратно при выполнении соответствующего век­тора обработки прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу. Если установлены бит I в SREG и бит TOIE1 в TIMSK, при установке бита TOV1 выполняется прерывание по переполнению таймера/счетчика 1. В режиме ШИМ этот бит устанавливается, когда тай­мер/счетчик 1 изменяет направление счета при значении 0000h.


Бит 6 - OCF1A: Флаг выхода совпадения 1А: флаг устанавливается в "1" если происходит совпадение значения таймера/счетчика 1 и данных в регистре OCR1A. Флаг очищается аппаратно при выполнении соответствую­щего вектора прерывания. Кроме того, флаг можно сбросить записав в не­го логическую единицу. Если установлены бит I в SREG и бит OCIE1A в TIMSK, при установке бита OCF1A выполняется прерывание.


Биты 5,4 - зарезервированы; в AT90S2333/4433 эти биты зарезервиро­ваны и всегда читаются как 0.


Бит 3 - ICF1: флаг входа захвата 1: бит устанавливается ("1") при возникновении события захвата по входу, он индицирует, что значение таймера/счетчика 1 скопировано в регистр захвата по входу ICR1. ICF1 очищается при выполнении соответствующего вектора обработки прерыва­ния. Кроме того, флаг можно очистить, записав в него логическую едини­цу.


Бит 2 - зарезервирован; в AT90S2333/4433 этот бит зарезервирован и всегда читается как 0.


Бит 1 - TOV0: Флаг переполнения таймера счетчика 1: Флаг TOV0 уста­навливается ("1") при переполнении таймера/счетчика 0. Флаг сбрасыва­ется аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить записав в него логическую единицу. Ес­ли установлены бит I в SREG и бит TOIE0 в TIMSK, при установке бита TOV0 выполняется прерывание по переполнению таймера/счетчика 0.


Бит 0 - зарезервирован; в AT90S2333/4433 этот бит зарезервирован и всегда читается как 0.


ВНЕШНИЕ ПРЕРЫВАНИЯ

Внешние прерывания управляются выводами INT0 и INT1. Заметим, что прерывания обрабатываются даже когда выводы сконфигурированы как выхо­ды. Это позволяет генерировать программные прерывания. Внешние преры­вания могут возникать по спадающему или нарастающему фронту, а также по низкому уровню. Это устанавливается в регистре управления процессо­ром MCUCR. Если внешние прерывания разрешены и сконфигурированы на от­работку по уровню, прерывание будет вырабатываться до тех пор, пока вывод удерживается в низком состоянии.

Управление работой внешних прерываний рассмотрено при описании регистра управления процессором MCUCR.

ВРЕМЯ РЕАКЦИИ НА ПРЕРЫВАНИЕ

Минимальное время реакции на любое из предусмотренных в процессо­ре прерываний - 4 периода тактовой частоты. После четырех циклов вы­зывается программный вектор обрабатывающий данное прерывание. За эти 4 цикла программный счетчик записывается в стек, указатель стека уменьшается на 2. Программный вектор представляет собой относительный переход на подпрограмму обслуживания прерывания и этот переход занима­ет 2 периода тактовой частоты. Если прерывание происходит во время вы­полнения команды длящейся несколько циклов, перед вызовом прерывания завершается выполнение этой команды. Выход из программы обслуживания прерывания занимает 4 периода так­товой частоты. За эти 4 периода из стека восстанавливается программный счетчик. После выхода из прерывания процессор всегда выполняет еще од­ну команду прежде чем обслужить любое отложенное прерывание. Заметим, что регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании преры­ваний. Если программа требует сохранения SREG, оно должно произво­диться программой пользователя. Для прерываний включаемых статическими событиями (напр. совпадение значения счетчика/таймера 1 с регистром совпадения) флаг прерывания взводится при возникновении события. Если флаг прерывания очищен и присутствует условие возникновения прерывания, флаг не будет установлен, пока не произойдет следующее событие.


РЕГИСТР УПРАВЛЕНИЯ МИКРОКОНТРОЛЛЕРОМ – MCUCR


Этот регистр содержит биты общего управления микроконтроллером.


MCUCR


35h(55h)

7 6 5 4 3 2 1 0

-

-

SE

SM

ISC11

ISC10

ISC01

ISC00

R

R

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


Биты 7,6 - зарезервированы. В AT90S2333/4433 эти биты зарезервирова­ны и всегда читаются как 0.


Бит 5 - SE: Разрешение режима Sleep: Этот бит должен быть установлен в 1, чтобы при выполнении команды SLEEP процессор переходил в режим пониженного энергопотребления. Для устранения нежелательного перехода в режим пониженного энергопотребления рекомендуется устанавливать этот бит непосредственно перед выполнением команды SLEEP.


Бит 4 - SM: Режим Sleep: Этот бит выбирает один из двух режимов по­ниженного энергопотребления. Если бит сброшен (0), в качестве режима Sleep выбирается холостой режим (Idle mode). Если бит установлен, - выбирается экономичный режим (Power down). Особенности каждого из ре­жимов будут рассмотрены ниже.


Биты 3,2 - ISC11, ISC10: биты управления срабатыванием прерывания 1: Внешнее прерывание активируется выводом INT1 если установлен флаг I регистра состояния SREG и установлена соответствующая маска в регистре GIMSK. Срабатывание по уровню и фронтам задается следующим образом:


Биты 1,0 - ISC01, ISC00: биты управления срабатыванием прерывания 0: Внешнее прерывание активируется выводом INT0 если установлен флаг I регистра состояния SREG и установлена соответствующая маска в регистре

GIMSK. В таблице 6 приведена установка битов для задания срабатывания по уровню и фронтам.


Таблица 5. Управление срабатыванием прерывания 1.


ISC11

ISC10

Описание

0

0

Запрос на прерывание генерируется по низкому уровню напряжения на входе INT1

0

1

Запрос по изменению уровня на входе INT1

1

0

Запрос на прерывание по спадающему фронту на входе INT1

1

1

Запрос на прерывание по нарастающ. фронту на входе INT1

ПРИМЕЧАНИЕ: При изменении битов ISC11/ISC10 прерывание INT1 должно быть запрещено очисткой соответствующего бита в регистре GIMSK. Иначе прерывание может возникнуть во время изменения битов.


Таблица 6. Управление срабатыванием прерывания 0.


ISC01

ISC0

Описание

0

0

Запрос на прерывание генерируется по низкому уровню напряжения на входе INT0

0

1

Запрос по изменению уровня на входе INT0

1

0

Запрос на прерывание по спадающему фронту на входе INT0

1

1

Запрос на прерывание по нарастающ. фронту на входе INT0

ПРИМЕЧАНИЕ: При изменении битов ISC01 и ISC00, прерывания по входу INT0 должны быть запрещены сбросом бита разрешения прерывания в регис­тре GIMSK. Иначе прерывание может произойти при изменении значения би­тов.


РЕЖИМЫ ПОНИЖЕННОГО ЭНЕРГОПОТРЕБЛЕНИЯ.


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

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

Режим холостого хода.

Когда бит SM сброшен (0), команда SLEEP переводит процессор в ре­жим холостого хода (Idle mode). ЦПУ останавливается, но Таймеры/Счет­чики, сторожевой таймер и система прерываний продолжают работать. Это позволяет процессору возобновлять работу как от внешних прерываний, так и по переполнению таймеров/счетчиков или по сбросу от сторожевого таймера. Если прерывание от аналогового компаратора не требуется, ана­логовый компаратор может быть отключен установкой бита ACD регистра ACSR. Это уменьшает потребляемую мощность в режиме холостого хода. При выходе из режима холостого хода процессор запускается без задержки.

Экономичный режим.

Когда бит SM установлен (1), команда SLEEP переводит процессор в экономичный режим (Power Down Mode). В этом режиме останавливается внешний генератор тактовых импульсов. Пользователь может разрешить ра­боту сторожевого таймера в этом режиме. Если сторожевой таймер разре­шен, процессор выходит из экономичного режима после отработки периода сторожевого таймера. Если сторожевой таймер запрещен, выход из эконо­мичного режима может произойти только по внешнему сбросу, brown-out

сбросу или внешнему прерыванию по уровню.

Если для вывода из экономичного режима используется прерывание по уровню, низкий уровень должен удерживаться на время достаточное для запуска процессора. Это увеличивает устойчивость процессора к помехам. Изменение уровня дважды проверятся с периодом генератора сторожевого таймера, если обе выборки сигнала имеют необходимый уровень, процессор включается. Номинальный период сторожевого таймера 1uS при 5В питания и температуре 25 градусов Цельсия.

При выходе из экономичного режима, от времени появления условия выхода до включения процессора проходит некоторое время необходимое для запуска кварцевого генератора. Задержка включения определяется те­ми же битами CKSEL, что и время сброса. Длительность задержки на вклю­чение приведена в таблице 7.

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


Таблица 7. Установка задержки включения


CKSEL [2:0]

Время запуска

000

6CK

001

6CK

010

16K CK

011

16K CK

100

16K CK

101

1K CK

110

1K CK

111

1K CK


ТАЙМЕРЫ/СЧЕТЧИКИ


В AT90S2333/4433 предусмотрены два таймера/счетчика общего назна­чения. 8-разрядный и 16-разрядный. Каждый из таймеров индивидуально подключается к одному из выходов 10-разрядного предварительного дели­теля частоты. Оба таймера могут использоваться как таймеры с внутрен­ним источником импульсов или счетчики импульсов поступающих извне. В качестве источника импульсов для таймеров можно выбрать сигнал с тактовой частотой процессора (CK), импульсы предварительного делите­ля (CK/8, CK/64, CK/256 или CK/1024) или импульсы с соответствующего внешнего вывода. Кроме того, таймеры могут быть остановлены, запретом прохождения импульсов на них.


8-РАЗРЯДНЫЙ ТАЙМЕР/СЧЕТЧИК 0


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

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

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


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


TCCR0


33h(53h)

7 6 5 4 3 2 1 0

-

-

-

-

-

CS02

CS01

CS00

R

R

R

R

R

RW

RW

RW

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

0

0

0

0

0

0

0

0


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


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

Таблица 8. Выбор коэффициента предварительного деления


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 - включает ножку на ввод).


ТАЙМЕР/СЧЕТЧИК 0 - TCNT0.


TCNT0


32h(52h)

7 6 5 4 3 2 1 0

MSB







LSB

RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


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


16-РАЗРЯДНЫЙ ТАЙМЕР/СЧЕТЧИК 1


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

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

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

Таймер/счетчик 1 поддерживает функцию совпадения используя ре­гистр совпадения OCR1A в качестве источника для сравнения с содержимым счетчика. Функция совпадения поддерживает очистку счетчика и переклю­чение выхода по совпадению.

Таймер/счетчик 1 можно использовать как 8-, 9- или 10-разрядный широтно-импульсный модулятор. В этом режиме счетчик и регистр OCR1 ра­ботают как защищенный от дребезга независимый ШИМ с отцентрованными импульсами. Подробно эта функция будет описана ниже.

Функция захвата по входу предусматривает захват содержимого тай­мера/счетчика 1 в регистр захвата ICR1 и управляется внешним сигналом на входе захвата - ICP. Работа режима захвата определяется управляющим регистром TCCR1.

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


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


2Fh(4Fh)

7 6 5 4 3 2 1 0

COM1A1

COM1A0

-

-

-

-

PWM11

PWM10

RW

RW

R

R

R

R

RW

RW

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

0

0

0

0

0

0

0

0


Биты 7,6 - COM1A1, COM1A0: Режим выхода совпадения, биты 1 и 0: Эти управляющие биты задают отклик вывода OC1 процессора на совпадение ре­гистра сравнения и таймера/счетчика 1. Поскольку это альтернативная функция порта, соответствующий бит направления должен устанавливать вывод на выход. Конфигурация управляющих бит показана в таблице 9.

В режиме ШИМ эти биты имеют другие функции, которые будут указаны при рассмотрении работы ШИМ.

При изменении битов COM1A1 и COM1A0 прерывание по совпадению дол­жно быть запрещено, очисткой соответствующего бита в регистре TIMSK. Иначе, прерывание может произойти во время изменения битов.


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


Биты 1,0 - PWM11, PWM10: Биты установки ШИМ: Эти биты устанавливают режим работы таймера/счетчика 1 в качестве ШИМ (см. табл. 10). Подроб­нее этот режим будет рассмотрен ниже.


Таблица 9. Установка режима совпадения


COM1A1

COM1A0

Описание

0

0

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

0

1

Переключение выхода OC1

1

0

Сброс (0) вывода OC1

1

1

Установка (1) вывода OC1

Таблица 10. Установка режима работы ШИМ


PWM11

PWM10

Описание

0

0

Работа ШИМ запрещена

0

1

8 разрядный ШИМ

1

0

9 разрядный ШИМ

1

1

10 разрядный ШИМ


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


2Eh(4Eh)

7 6 5 4 3 2 1 0

ICNC1

ICES1

-

-

CTC1

CS12

CS11

CS10

RW

RW

R

R

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


Бит7 - ICNC1: Подавитель входного шума входа захвата: Если этот бит сброшен (0), подавление входного шума входа захвата запрещено. При это захват срабатывает по первому заданному (нарастающему или спадающему) фронту сигнала на выводе ICP. При установке бита обрабатываются четы­ре последовательные выборки сигнала на выводе ICP. Для срабатывания захвата все выборки должны соответствовать уровню заданному битом ICES1. Частота выборок равна тактовой частоте процессора.


Бит 6 - ICES1: выбор фронта сигнала захвата: Если бит ICES1 сброшен (0) содержимое таймера/счетчика 1 переписывается в регистр захвата по спадающему фронту сигнала на выводе ICP. Если бит установлен - по на­растающему фронту сигнала.


Биты 5,4 - зарезервированы. В AT90S2333/4433 эти биты зарезервирова­ны и всегда читаются как 0.


Бит 3 - CTC1: Очистка таймера счетчика 1 по совпадению: Если бит ус­тановлен (1), таймер/счетчик 1 устанавливается в 0000h в такте сле­дующем за событием совпадения. Если бит сброшен, таймер/счетчик 1 про­должает считать, совпадение не отражается на состоянии таймера/счетчика. Поскольку совпадение обнаруживается процессором в цикле следующем

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

...С-1,С,С+1,0,1...

при делении тактовой частоты на 8:

...С-1,С-1,С-1,С-1,С-1,С-1,С-1,С-1,С,С,С,С,С,С,С,С, С+1,0,0,0,0,0,0,0,0,1...

В режиме ШИМ этот бит не работает.


Биты 2,1,0 - CS12, CS11, CS10: выбор тактирования: Эти биты определя­ют источник счетных импульсов для таймера/счетчика 1.


Таблица 11. Выбор источника счетных импульсов


CS12

CS11

CS10

Описание

0

0

0

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

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

Спадающий фронт на выводе T1

1

1

1

Нарастающий фронт на выводе T1


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


ТАЙМЕР/СЧЕТЧИК 1 - TCNT1H И TCNT1L


TCNT1H


2Dh(4Dh)

7 6 5 4 3 2 1 0

MSB

-

-

-

-

-

-

-

RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


TCNT1L


2Ch(4Ch)

7 6 5 4 3 2 1 0







LSB

RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


Это 16-разрядный регистр, содержащий текущее значение таймера/счет­чика 1. Чтобы чтение и запись двух байт счетчика происходило синхрон­но, для работы с ним используется временный регистр (TEMP). Этот вре-

менный регистр также используется при доступе к регистрам OCR1 и ICR1.

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

- Запись в таймер счетчик 1: При записи старшего байта в TCNT1H, записываемые данные помещаются в регистр TEMP. Затем, при записи млад­шего байта, он вместе с данными из TEMP переписывается в таймер/счет­чик 1. Таким образом, при записи 16-разрядного значения первым должен записываться байт в TCNT1H.

- Чтение таймера/счетчика 1: При чтении младшего байта из TCNT1L, он посылается в процессор, а данные из TCNT1H переписываются в регистр TEMP, то есть одновременно читаются все 16-разрядов. При последующем чтении регистра TCNT1H, данные берутся из регистра TEMP. То есть при чтении 16-разрядного значения счетчика первым должен читаться регистр TCNT1L.

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

периоде тактовой частоты.


РЕГИСТР СОВПАДЕНИЯ ТАЙМЕРА/СЧЕТЧИКА 1 - OCR1H И OCR1L


OCR1H


2Bh(4Bh)

7 6 5 4 3 2 1 0

MSB








RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


OCR1L


3Dh(5Dh)

7 6 5 4 3 2 1 0







LSB

RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


Регистр совпадения 16-разрядный регистр, доступный для чтения и записи. В этом регистре хранятся данные, которые непрерывно сравниваются с текущим значением таймера/счетчика 1. Действие по совпадению задает­ся регистрами управления таймером/счетчиком 1 и регистром состояния. Поскольку регистр OCR1A является 16-разрядным, при записи нового значения в регистр, для того чтобы оба байта регистра записывались од­новременно, используется временный регистр (TEMP). При записи старшего байта, данные помещаются во временный регистр, который переписывается в OCR1AH при записи младшего байта в OCR1AL. Таким образом, для записи в регистр первым должен записываться старший байт. Регистр TEMP используется при доступе к TCNT1 и ICR1, поэтому ес­ли временный регистр используется в основной программе и в прерывани­ях, при доступе к TEMP из основной программы прерывания должны запрещаться.


РЕГИСТР ЗАХВАТА ТАЙМЕРА/СЧЕТЧИКА 1 - ICR1H И ICR1L


ICR1H



25h(45h)

7 6 5 4 3 2 1 0

MSB








RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


ICR1L


24h(44h)

7 6 5 4 3 2 1 0







LSB

RW

RW

RW

RW

RW

RW

RW

RW

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

0

0

0

0

0

0

0

0


Регистр захвата 16-разрядный регистр доступный только для чтения. По нарастающему или спадающему фронту (в соответствии с выбором фронта импульса захвата ICES1) сигнала на выводе ICP текущее значение таймера/счетчика 1 переписывается в регистр захвата ICR1. В это же время устанавливается флаг захвата ICF1. Поскольку регистр захвата является 16-разрядным, для чтения его значения, чтобы оба байта прочитались одновременно, используется вре­менный регистр. При чтении младшего байта ICR1L, он посылается в ЦПУ, а старший байт регистра ICR1H переписывается во временный регистр (TEMP). При чтении старшего байта, он принимается из временного регис­тра. Таким образом для чтения 16-разрядного регистра первым должен чи­таться младший байт. Регистр TEMP используется при доступе к TCNT1 и OCR1, поэтому ес­ли временный регистр используется в основной программе и в прерывани­ях, при доступе к TEMP из основной программы прерывания должны запрещаться.


ТАЙМЕР/СЧЕТЧИК 1 В РЕЖИМЕ ШИМ


При выборе режима широтно-импульсной модуляции (ШИМ), тай­мер/счетчик 1 и регистр совпадения OCR1A формируют 8, 9 или 10-разряд­ный непрерывный свободный от "дрожания" и правильный по фазе сигнал, выводимый на ножку PB3(OC1). Таймер/счетчик 1 работает как реверсивный счетчик считающий от 0 до конечного значения (см. табл.10). При дости­жении конечного значения счетчик начинает считать в обратную сторону до нуля, после чего рабочий цикл повторяется. Когда значение счетчика совпадает с 8, 9

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: