подняться в соответствии с правилами, изложенными в примечании на предыдущей странице.
Чтение регистров TCNT1L и TCNT1H позволяет программно контроли ровать текущее состояние таймера, запись в эти регистры программно за дает текущее состояние. При программном обращении к TCNT1 счетчик таймера сохраняет режим работы, заданный соответствующими битами ре гистров управления. Регистры OCR1A и OCRIB (no 2 байта каждый) слу жат для записи и хранения эталонных значений обоих каналов сравнения. Если в момент записи выполняется условие сравнения, прерывание по ка налу сравнения не формируется.
Если выбран режим модулятора ШИМ (биты управления PWM11, PWM10), счетчик таймера 1 из суммирующего становится реверсивным. Его состояние в режиме суммирования возрастает от начального $0000 до максимального, определяемого разрядностью кода управления (при 8- битовом управлении - $00ff, при 9-битовом - $01ff, при 10-битовом - $03ff).Затем счетчик переходит в режим вычитания и уменьшает состояние до начального, возвращаясь далее в режим суммирования, и т.д.
Частота сигнала ШИМ определяется делением тактовой частоты микро контроллера на коэффициент, зависящий от разрядности кода управления (8 бит - 510, 9 бит - 1022, 10 бит - 2046). Корректная работа в режиме ШИМ возможна только при значении битов управления входным сигналом таймера (CS12, CS11,CS10) - 001, т.е. в случае подачи на вход таймера так товых сигналов микроконтроллера. Коды управления ШИМ записываются в регистры эталонных значений обоих каналов сравнения OCR1A и OCR1B, а выходные сигналы ШИМ поступают на выходы каналов сравне ния ОС1А (PD5), ОС IB (PD4) и, следовательно, таймер 1 реализует два канала ШИМ с независимыми кодами управления одинаковой разрядности и раздельныхми выходными сигналами.
Биты управления выходными сигналами СОМ1Х1, СОМ1Х0 (X ~ это или А, или В) регистра TCCR1A задают параметры сигналов ШИМ сле дующим образом:
00, 01 - выходные сигналы ШИМ не формируются, выходы ОС IX не используются.
10 - неинвертированный ШИМ, длительность логической единицы в каждом периоде выходного сигнала пропорциональна коду управления ШИМ.
11 - инвертированный ШИМ, длительность логического нуля в каж дом периоде выходного сигнала пропорциональна коду управ ления ШИМ.
Флаг переполнения TOV1 в режиме ШИМ устанавливается, когда счетчик переключается из состояния $0000. Этот флаг позволяет определить начало каждого периода сигнала ШИМ.
60
Таким образом, таймер 1, построенный на 16-разрядном счетчике, фор мирует 4 флага прерывания, может работать в режиме двухканального мо дулятора ШИМ и обеспечивает аппаратную реализацию разнообразных функций микроконтроллера. Программное управление всеми функциями таймера 1 производится аналогично показанному в примере для таймера 0.
3.4.3. Таймер 2
Таймер 2 построен на основе 8-разрядного счетчика, формирует два фла га прерываний: флаг переполнения TOV2, флаг канала сравнения OCF2, может работать в режиме 8-битового модулятора ШИМ. Флаги прерываний обрабатываются в соответствии со стандартной описанной ранее процеду рой с вызовом векторов прерывания: вектор переполнения TIM2_OVF с адресом $004, вектор сравнения ТШ2_СОМР с адресом $003. Дополни тельно таймер 2 может работать в асинхронном режиме, получая входные сигналы счетчика от дополнительного генератора микроконтроллера.
Параметры и режимы работы таймера 2 определяют 4 регистра файла регистров ввода-вывода: регистр управления TCCR2, регистр текущего
состояния таймера TCNT2, регистр эталонного значения канала срав нения OCR2, регистр асинхронного режима ASSR. Работа таймера 2 аналогична работе таймера 1 в соответствующих режимах.
В регистре управления TCCR2, программно доступном для записи и чтения, используется 7 бит.
Символические имена битов управления в регистре TCCR2 PWM2 СОМ21 СОМ201 СТС2 | CS22 | CS21 1 CS20
Бит PWM2 управляет режимом ШИМ. 0 - запрещает режим ШИМ и оп ределяет стандартную работу таймера, 1 - переводит таймер 2 в режим ШИМ.
Биты СОМ21, СОМ20 определяют процедуры формирования выходно го сигнала канала сравнения ОС2 (альтернативная функция линии вво да-вывода PD7). Работа канала сравнения таймера 2 аналогична работе ка налов сравнения таймера 1. Параметры сигнала ОС2 для таймера 2 в зави симости от битов управления следующие:
00 - выходной сигнал ОС2 не формируется, выход PD7 порта D не используется.
01 - выходной сигнал ОС2 импульсный.
10 - выходной сигнал ОС2 имеет активный нулевой уровень.
11 - выходной сигнал ОС2 имеет активный единичный уровень. Рекомендуется при использовании сигнала ОС2 запретить прерывание очи сткой соответствующего бита разрешения в регистре TIMSK, иначе про изойдет обработка прерывания при формировании этого сигнала. Этот же
61
сигнал является выходным для таймера 2, работающего в режиме модуля тора ШИМ.
Бит СТС2 может разрешить сброс таймера 2 по сигналу сравнения. При нулевом значении бита сброс таймера по каналу сравнения не производит ся, при единичном значении бита и совпадении эталонного значения с те кущим состоянием таймера производится сброс его счетчика в исходное состояние ($00).
Биты CS22, CS21, CS20 задают параметры входного сигнала для счетчи
ка в таймере: |
|
000 |
- входной сигнал блокируется, таймер остановлен. |
001 |
- таймер работает (при всех последующих значениях управ |
|
ляющих битов также работает), частота входного сигнала |
|
счетчика - fBX. |
010 |
- частота входного сигнала fBX/8. |
0 1 1 - частота входного сигнала fBX/32. |
|
100 |
- частота входного сигнала fBX/64. |
101 |
- частота входного сигнала fBX/128. |
110 |
- частота входного сигнала fBX/256. |
111 |
- частота входного сигнала fBX/1024. |
При остановке таймера этими битами (000) все функции блокируются так же, как и в других таймерах.
Регистры TCNT2 и OCR2 выполняют такие же функции, как и анало гичные регистры таймера 1. Выход сигнала сравнения ОС2 (PD7) также применяется для формирования выходного сигнала ШИМ.
Регистр ASSR используется для управления работой таймера 2 в асин хронном режиме, в этом режиме входной сигнал счетчика поступает от вспомогательного генератора микроконтроллера и не синхронизируется тактовыми сигналами микроконтроллера. К входу (альтернативная
функция линии РС6) и выходу (альтернативная функция линии РС7) дополнительного генератора можно подключить отдельную частотнозадающую цепь. Например, для построения часов реального времени мож но использовать кварцевый резонатор часов с частотой 32,768 кГц.
Символические имена битов в регистре ASSR
1 • | • | • 1 - 1 AS2 1 TCN2UB | OCR2UB | TCR2UB [
AS2 - бит асинхронного режима. При 0 входной сигнал счетчика форми руется тактовым генератором микроконтроллера. При 1 входной сигнал счетчика формируется вспомогательным генератором с использованием цепей РС6, РС7. Переключение между асинхронным и синхронным режи мами может привести к изменению состояния регистров TCCR2, TCNT2,
62
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