Файл: Микропроцессорные устройства систем управления (Ю.И. Иванов, 2005).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 1578

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

0CR2. Для предотвращения возможных сбоев в работе могут использо­ ваться биты TCN2UB, OCR2UB, TCR2UB. Рекомендации по предотвраще­ нию сбоев с помощью этих битов приведены в руководствах фирмы ATMEL.

Работа таймера 2 в режиме ШИМ аналогична работе таймера 1 в этом же режиме при 8-битовом коде управления, частота сигнала ШИМ на выходе 0С2 (PD7) определяется делением частоты входного сигнала счетчика на 510, код управления должен поступать в регистр OCR2. Все операции управления работой таймера 2 аналогичны рассмотренным ранее.

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

Аналоговый компаратор производит сравнение сигналов, поступающих на неинвертирующий вход AIN0 (альтернативная функция линии вво­

да-вывода РВ2) и инвертирующий вход AIN1 (альтернативная функ­ ция линии РВЗ). Выходной сигнал компаратора может использоваться в режиме "захват" таймера 1 или выполнять вызов отдельного вектора пре­

рывания компаратора ANA_COMP с адресом $010.

Управление функциями компаратора производится регистром управле­ ния компаратора ACSR, в котором 6 бит программно доступны для чтения и записи, а бит выходного сигнала АСО компаратора доступен только для чтения.

Символические имена битов

в регистре

ACSR

ACD

ACQ | ACI J ACIE

| ACIC \

ACIS1 | ACISo"

ACD - бит выключения компаратора, при 1 компаратор отключен. Реко­ мендуется при изменении этого бита запретить прерывание компара­ тора битом ACIE.

АСО - бит выходного сигнала компаратора.

ACI - флаг прерывания компаратора устанавливается в 1, когда параметры выходного сигнала компаратора соответствуют битам ACIS1, ACIS0. Этот флаг работает вместе с битом разрешения ACIE так же, как и остальные флаги прерываний.

ACIE - бит разрешения прерывания компаратора.

ACIC - бит управления компаратором для режима "захват" таймера 1. При 1 сигнал компаратора поступает на вход захвата таймера 1 и дейст­ вует в соответствии с параметрами и режимами таймера 1.

ACIS1, ACIS0 - определяют параметры сигнала компаратора для форми­ рования флага прерывания:

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

01 - не используется,

10 - прерывание по падающему фронту сигнала компаратора,

63


11 - прерывание по нарастающему фронту сигнала компаратора. Изменение младших двух битов регистра ACSR может установить флаг прерывания, рекомендуется перед этой операцией запретить прерывание по этому флагу. Необходимо также учитывать, что использование команд SBI

и CBI для регистра ACSR приведет к очистке флага прерывания ACI.

3.6. Аналого-цифровой преобразователь (АЦП)

АЦП микроконтроллера разрядностью 10 бит работает по алгоритму по­ следовательных приближений, погрешность преобразования - не более 2 единиц младшего значащего разряда, время преобразования 65 мкс - 260 мкс. АЦП совместно со встроенным аналоговым мультиплексором обеспе­ чивает преобразование в 10-ти разрядный двоичный код сигналов по 8

аналоговым входам (альтернативная функция линий ввода-вывода порта А) в диапазоне напряжений от 0 (AGND) до опорного (AREF).

Для снижения уровня помех цепи питания (AGND, AVCC) схем преоб­ разования аналоговых сигналов подключаются отдельно (рис. 4), напряже­ ние питания AVCC не должно отличаться от напряжения питания VCC бо­ лее чем на ±0,3 В. Опорное напряжение должно лежать в диапазоне от 2 В до напряжения питания AVCC. Код АЦП $000 соответствует нулевому входному сигналу, максимальный код S3FF соответствует сигналу, равно­ му опорному, минус вес единицы младшего значащего разряда.

Номер входа мультиплексора, с которого поступает сигнал для преобра­ зования в АЦП, определяется тремя младшими битами MUX2, MUX1, MUX0 управляющего регистра ADMUX. Любой из восьми входов может быть выбран через ADMUX записью в него соответствующего кода в лю­ бой момент времени, однако переключение входов фактически произво­ дится только после завершения очередного цикла преобразования АЦП. В линиях ввода-вывода порта А, используемых для приема аналоговых сиг­ налов, необходимо задавать режим ввода.

АЦП может работать в режиме однократного преобразования или цик­ лически с автоматическим повторным запуском после каждого преобразо­ вания. По окончании преобразования формируется флаг прерывания ADIF со стандартной процедурой вызова вектора прерывания ADC с ад­ ресом $00е и записью 10-разрядного кода в двухбайтовый регистр ADCL

(младшие 8 бит результата), ADCH (старшие 2 бита результата). Чтение данных из регистра результата ADC должно начинаться обязательно с младшего байта (см. примечание на с. 57). Точность АЦП зависит от такто­ вой частоты преобразования, рекомендуется диапазон тактовых частот 50 - 200 кГц, при более высоких частотах точность преобразования снижается. Стандартный цикл преобразования требует 13 тактов работы и при реко­ мендуемом значении тактовой частоты 100 кГц определяет время преобра­ зования 130 мкс.

64


Кроме регистров ADMUX, ADCH, ADCL, работа АЦП определяется ре­ гистром ADCSR, который также содержится в файле регистров вводавывода.

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

ADENl ADSC| ADFR I ADIF [ ADIE | ADPS2 | APPSlj APPS20J

ADEN - бит разрешения, 0 - АЦП выключен, 1 - АЦП включен.

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

ADFR - бит режима преобразования, 1 - циклический режим, 0 - одно­ кратный.

ADIF - флаг прерывания, устанавливается после завершения преобразова­ ния и записи кода в выходной регистр АЦП. Очищается автомати­ чески при вызове вектора прерывания либо записью 1 в этот бит.

ADIE - бит разрешения прерывания АЦП, 1 разрешает прерывание. ADPS2, ADPS1, ADPS20 - биты управления тактовой «частотой АЦП, оп­

ределяют коэффициент деления тактовой частоты микроконтрол­ лера следующим образом:

000 - коэффициент деления 2,

001 - коэффициент деления 2,

010 - коэффициент деления 4,

011 — коэффициент деления 8,

100 - коэффициент деления 16,

101 - коэффициент деления 32,

110 - коэффициент деления 64,

111 - коэффициент деления 128.

Дополнительное снижение уровня помех для повышения точности пре­ образования можно получить, если на время преобразования АЦП приос­ тановить работу процессора в микроконтроллере переходом в режим "idle". Возврат в рабочее состояние должна обеспечивать подпрограмма обработ­ ки прерывания АЦП. Более подробную информацию о работе АЦП можно найти в руководствах фирмы ATMEL.

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

65

3.7. Чтение и запись данных EEPROM

Доступ к данным в EEPROM производится с помощью 4 регистров фай­ ла регистров ввода-вывода: регистра управления EECR, регистра дан­

ных EEDR, регистра старшего байта адреса EEARH, регистра младше­ го байта адреса EEARL. Время доступа не превышает 4 мс и зависит от напряжения питания. Завершение процедуры доступа формирует флаг пре­ рывания готовности EEPROM со стандартной процедурой вызова вектора

прерывания EERDY с адресом SOOf.

Обмен данными с EEPROM производится через регистр данных EEDR по двухбайтовому адресу, указанному в регистрах EEARH, EEARL. Про­ цедурами доступа управляют биты регистра EECR.

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

l - l - l - l - l EERIE | EEMWE 1 EEWE j EERE [

EERIE - бит разрешения прерывания EEPROM, это прерывание формиру­ ется при нулевом значении бита разрешения записи EEWE.

EEMWE - бит записи данных в EEPROM, при единичном значении EEWE записывает в EEPROM данные из регистра EEDR по адресу, ука­ занному в регистрах адреса.

EEWE - бит разрешения записи.

EERE - бит управления чтением данных, при единичном значении произ­

водится чтение данных из EEPROM в регистр EEDR.

Процедура записи данных усложнена для защиты от несанкционирован­ ного изменения данных. Более подробную информацию можно найти в ру­ ководствах фирмы ATMEL.

3.8. Система прерываний и регистры общего управления

Аппаратные прерывания в микроконтроллере обрабатываются 17 векто­ рами прерываний с жестко закрепленными адресами во флэш-памяти в диапазоне от $000 до $010. Уровни приоритетов векторов прерываний оп­ ределяются их адресами, наименьшему адресу $000 соответствует самый высокий приоритет. Стандартный текст программы со ссылками на метки подпрограмм обработки прерываний должен быть следующим:

$000

rjmp

RESET

;

Reset

Handler

$001

rjmp

EXT__INT0

;

IRQ0

Handler

$002

rjmp

EXT_INT1

;

IRQ1

Handler

$003

rjmp

TIM2_COMP

;

Timer2

Compare Handler

66


$004

rjmp

TIM2__OVF

;

Timer2

Overflow

Handler

$005

rjmp

TIM1_CAPT

;

Timerl Capture Handler

$006

rjmp

TIM1_C0MPA

;

Timerl

CompareA

Handler

$007

rjmp

TIM1_C0MPB

;

Timerl

CompareB

Handler

$008

rjmp

TIM1_0VF

;

Timerl

Overflow

Handler

$009

rjmp

TIM0_OVF

;

TimerO

Overflow

Handler

$00a

rjmp

SPI_STC

;

SPI T r a n s f e r

Complete

;

Handler

$00b

rjmp

UART_RXC

;

UART RX Complete

Handler

$00c

rjmp

UART_DRE

;

UDR Empty

Handler

$00d

rjmp

UART_TXC

;

UART TX Complete

Handler

$00e

rjmp

ADC

;

ADC Complete

I n t e r r u p t

;

Handler

$00f

rjmp

EE_RDY

;

EEPROM Ready

Handler

$010

rjmp

ANA_COMP

;

Analog

Comparator Handler

Использовать эту область памяти для хранения кодов других команд не­ целесообразно, так как ошибочное формирование флага прерывания может привести к вызову соответствующего вектора с некорректным выполнени­ ем процедуры обработки. Вектора прерываний с адресами $003 - $010 опи­ саны в предыдущих разделах и служат для вызова подпрограмм, необхо­ димых для реализации соответствующих функций встроенных аппаратных средств микроконтроллера.

Вектор RESET с адресом $000 выполняет инициализацию микрокон­ троллера при начальном сбросе. Обработка этого вектора не требует ника­ ких условий, т.е. вектор может быть вызван в произвольный момент време­ ни независимо от состояния и режима работы микроконтроллера. RESET загружает в программный счетчик начальный адрес $000 и вызывается в следующих случаях: при включении питания микроконтроллера или вре­ менном снижении напряжения питания в процессе работы ниже критиче­ ской величины, при поступлении на вход микроконтроллера RESET сиг­ нала низкого уровня длительностью более 50 не, при формировании сиг­ нала RESET сторожевым таймером.

Врегистре микроконтроллера MCUSR биты EXTRF (бит 1), PORF (бит

0)позволяют определить причину начального сброса. EXTRF устанавлива­ ется при начальном сбросе внешним сигналом, PORF устанавливается при

67


сбросе по включению питания. Если эти биты обнулить программной запи­ сью содержимого этого регистра, после следующего начального сброса можно определить источник формирования этого сигнала. Сброс стороже­ вым таймером при чтении определится кодом 00, сброс внешним сигналом - кодом 10, сброс включением питания - кодами 01, 11.

Процедура вызова всех остальных векторов прерывания отличается от RESET. Во-первых, должен быть установлен флаг общего разрешения пре­ рываний I в регистре SREG и бит разрешения данного прерывания в соот­ ветствующем регистре. Во-вторых, установка определенного флага преры­ вания вызывает соответствующий вектор прерывания (только при выпол­ нении первого условия). При одновременном формировании нескольких флагов прерываний очередность обработки определяется уровнями при­ оритетов (чем меньше адрес вектора, тем выше уровень приоритета). В- третьих, при загрузке адреса прерывания в программный счетчик автома­ тически очищаются флаг I, запрещая другие прерывания, и флаг данного прерывания, а текущее состояние программного счетчика загружается в стек. Подпрограмма обработки прерывания должна завершаться командой "reti", которая восстанавливает разрешение прерываний (флаг I) и состоя­ ние программного счетчика (загружается из стека). Возможен програм­ мный сброс флага прерывания (без вызова вектора прерывания) записью единицы в соответствующий бит регистра флагов прерываний, а также программное разрешение прерываний (флаг I) в любой подпрограмме об­ работки прерываний.

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

Символические имена флагов в регистре состояния SREG

| I | T ! H | S | V | N | Z | C |

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

Т- бит копирования, используется для временного хранения отдельных битов командами BLD, BST.

68