Файл: Микропроцессорные устройства систем управления (Ю.И. Иванов, 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