Аналого-цифровое преобразование

Initial value 0 0 0 0 0 0 0 0

7 6 5 4 3 2 1 0

F0C2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20

Read/Write W R/W R/W R/W R/W R/W R/W R/W

Initial value 0 0 0 0 0 0 0 0

Рисунок 1.2 – Формат регистров TCCR0 и TCCR2

Управление тактовым сигналом.Формирование тактового сигнала таймера/счетчика clkТ0 (clkТ2) осуществляется блоком предделителя.

В качестве тактового сигнала clkТ0 (clkТ2) таймера/счетчика ТО исполнений 1, 2 и таймера/счетчика Т2 исполнения 2 может использоваться:

системный тактовый сигнал clkТ0(Т2) = clkI/O; масштабированный системный тактовый сигнал clkТ0(Т2) = clkI/O / n; внешний сигнал, поступающий на вход Т0 (Т2) микроконтроллера clkТ0(Т2) = clkFXT .

Тактовый сигнал таймеров/счетчиков Т0 и Т2 исполнения 3 может формироваться либо из системного тактового сигнала clkI/O (clkТ0(Т2) = clkI/O / n), либо в асинхронном режиме из сигнала от дополнительного кварцевого резонатора (clkТ0(Т2) = clkTOSK1 / n). Переключение между синхронным и асин­хронным режимами работы осуществляется с помощью разряда AS0 (AS2) регистра ASSR.

Выбор источника тактового сигнала, а также запуск и остановка таймеров/счетчиков осуществляются с помощью разрядов CS02...CS00 (CS22...CS20) регистра управления таймером TCCR0 (TCCR2).

Таблица 3. Выбор источника тактового сигнала таймеров/счетчиков T0 и T2

CSn2 CSn1 CSn0 Источник тактового сигнала
Исполнения 1,2 Исполнение 3
ASn = «0» ASn = «1»
Таймер/счетчик остановлен Таймер/счетчик остановлен
clkI/O clkI/O clkTOSC1
clkI/O/8 clkI/O/8 clkTOSC1/8
clkI/O/64 clkI/O/32 clkTOSC1/32
clkI/O/256 clkI/O/64 clkTOSC1/64
clkI/O/1024 clkI/O/128 clkTOSC1/128
Вывод Tn, счет осуществляется по спадающему фронту импульсов clkI/O/256 clkTOSC1/256
Вывод Tn, счет осуществляется по нарастающему фронту импульсов clkI/O/1024 clkTOSC1/1024
             

Примечание: n = 0 или 2.

Режимы работы.Режимы работы таймеров/счетчиков Т0 (Т2) определяются состоянием раз­рядов WGMn1:WGMn0 регистра TCCR0 (TCCR2). Зависимость режима работы таймеров/счетчиков от состояния этих разрядов показана в таблице ниже:

Таблица 4. Режимы работы таймера/счетчика Т0 (Т2)

Номер режима WGMn1 (CTCn) WGMn0 (PWMn) Описание
Normal
Phase correct PWM
CTC (сброс при совпадении)
Fast PWM

Примечание: n = 0 или 2.

Режим Normal.Это наиболее простой режим работы таймеров/счетчиков, а в таймере/счетчике Т0 моделей ATmega8x и ATmega163x это вообще единственный режим. В этом режиме счетный регистр функционирует как обычный суммирующий счетчик. По каждому импульсу тактового сигнала clkT0 (clkT2) осуществляется инкремент счетного регистра. При переходе через значение $FF возникает переполнение, и счет продолжается со значения $00. В том же такте сигнала clkT0 (clkT2), в котором обнуляется регистр TCNT0 (TCNT2), устанавливается в «1» флаг переполнения TOV0 (TOV2).

В таймерах/счетчиках исполнений 2 и 3 при равенстве счетного регистра и регистра сравнения устанавливается флаг прерывания OCF0 (OCF2) и, если разряд ОС1Е0(ОС1Е2) регистра TIMSK установлен в «1», генерируется прерывание. Наряду с установкой флага при равенстве счетного регистра и регистра сравнения может изменяться состояние выход ОС0 (ОС2) микроконтроллера. Каким образом оно будет изменяться, определяется разрядами СОМ01:СОМ00 (СОМ21:СОМ20) регистра TCCR0 (TCCR2) в соответствии с таблицей 5.

Таблица 5. Управление выводом ОС0 (ОС2) в режиме Normal

СОМn1 СОМn0 Описание
Таймер/счетчик отключен от вывода ОСn
Состояние вывода меняется на противоположное
Вывод сбрасывается в «0»
Вывод устанавливается в «1»

Примечание: n = 0 или 2.

При необходимости состояние вывода ОС0 (ОС2) может быть изменено принудительно, записью лог. 1 в разряд FOC0 (FOC2) регистра TCCR0 (TCCR2). Прерывание при этом не генерируется.

Режим СТС (сброс при совпадении).В этом режиме счетный регистр тоже функционирует как обычный суммирующий счетчик, инкремент которого осуществляется по каждому импульсу тактового сигнала clkT0 (clkT2). Однако максимально возможное значение счетного регистра и, следовательно, разрешающая способность счетчика определяется регистром сравнения OCR0 (OCR2). После достижения значения, записанного в регистре сравнения, счет продолжается со значения «$00». В том же такте сигнала clkT0 (clkT2), в котором обнуляется счетный регистр, устанавливается флаг прерывания TOV0 (TOV2) регистра ТIFR.

При достижении счетчиком максимального значения устанавливается флаг OCF0 (OCF2) регистра TIFR. Одновременно с установкой флага мо­жет изменяться состояние вывода ОС0 (ОС2) микроконтроллера. Поведе­ние вывода определяется разрядами СОМ01:СОМ00 (COM21:COM20 регистрa TCCR0 (TCCR2), как указано в таблице 6.

Таблица 6. Управление выводом ОС0 (ОС2) в режиме СТС

СОМn1 СОМn0 Описание
Таймер/счетчик отключен от вывода ОСn
Состояние вывода меняется на противоположное
Вывод сбрасывается в «0»
Вывод устанавливается в «1»

Примечание: n = 0 или 2.

Для генерации сигнала заданной частоты необходимо записать в разряды СОМ01:СОМ00 (СОМ21:СОМ20) значение «01» (переключение состояния вывода). Частота генерируемого сигнала будет определиться выражением fOCn = fclk I/O/2N/(1+OCRn), где N — коэффициент деления предделителя.

При необходимости состояние вывода ОС0 (0С2) может быть изменено принудительно, записью лог. 1 в разряд FOC0 (F0C2) регистра TCCR0 (TCCR2). Прерывание при этом не генерируется и сброса счетного регистра не производится.

Режим Fast PWM.Режим Fast PWM (Быстродействующий ШИМ) позволяет генерировать высокочастотный сигнал с широтно-импульсной модуляцией. В связи с высокой частотой генерируемого сигнала данный режим с успехом может использоваться в таких приложениях, как регулирование мощности, выпрямление, цифроаналоговое преобразование и др.

Счетный регистр в этом режиме функционирует как суммирующий счетчик, инкремент которого осуществляется по каждому импульсу тактового сигнала clkT0 (clk T2). Состояние счетчика изменяется от $00 до $FF, после чего счетный регистр сбрасывается и цикл повторяется. При достижении счетчиком максимального значения устанавливается флаг прерывания TOV0 (TOV2) регистра TIFR. При равенстве содержимого счетного регистра и регистра сравнения OCR0 (OCR2) устанавливается флаг OCF0 (OCF2) регистра TIFR.

Особенностью работы схемы сравнения в этом режиме является двойная буферизация записи в регистр OCR0 (OCR2), заключающаяся в том, что за­даваемое число на самом деле сохраняется в специальном буферном регистре. А изменение содержимого регистра сравнения происходит только в момент достижения счетчиком максимального значения $FF. Благодаря такому решению исключается появление несимметричных импульсов сигнала на выходе модулятора (помех), которые были бы неизбежны при непосредственной записи в регистр сравнения.

Поведение вывода ОС0 (ОС2) микроконтроллера в этом режиме также определяется содержимым разрядов СОМ01:СОМ00 (СОМ21:СОМ20) регистра TCCR0 (TCCR1).

Таблица 7. Поведение вывода ОС0 (ОС2) в режиме Fast PWM

СОМn1 СОМn0 Описание
Таймер/счетчик отключен от вывода ОСn
Зарезервировано
Сбрасывается в «0» при равенстве регистров TCNTn и OCRn. Устанавливается в «1» при TCNTn = $00 (неинвертированный ШИМ-сигнал)
Устанавливается в «1» при равенстве регистров TCNTn и OCRn. Сбрасывается в «0» при TCNTn = $00 (инвертированный ШИМ-сигнал)

Примечание: n = 0 или 2.

Частота генерируемого сигнала fOCn = fclk I/O/256N, где N — коэффици­ент деления предделителя.

Отдельно следует рассмотреть случаи, когда в регистре сравнения нахо­дятся предельно возможные значения ($00 и $FF). В первом случае, сети со­держимое регистра сравнения OCR0 (OCR2) равно $00, на выходе ОС0 (ОС2) при каждом 256-м такте сигнала clkT0 (clkT2) будут наблюдаться корот­кое выбросы.

Режим Phase Correct PWM.Режим Phase Correct PWM (ШИМ с точной фазой), как и режим Fast PWM, предназначен для генерации сигналов с широтно-импульсной моду­ляцией. Однако в этом режиме счетный регистр функционирует как ревер­сивный счетчик, изменение состояния которого осуществляется по каждому импульсу тактового сигнала clkT0 (clkT2). Состояние счетчика сначала изме­нялся от $00 до $FF, а затем обратно до $00. Соответственно максимальная частота сигнала в этом режиме в два раза меньше максимальной частоты сигнала в режиме Fast PWM. Тем не менее, благодаря «симметричности» изменения состояния счетчика, режим Phase Correct PWM предпочтительнее использовать для решения задач управления двигателями.

При достижении счетчиком максимального ($FF) значения происходи смена направления счета, но счетчик остается в этом состоянии в течение одного периода сигнала clkT0 (clkT2). При достижении счетчиком минимального значения ($00) также происходит смена направления счета и одновременно устанавливается флаг прерывания TOV0 (TOV2) регистра TIFR. При равенстве содержимого счетного регистра и регистра сравнения OCR0 (ОСR2) устанавливается флаг OCF0 (OCF2) регистра TIFR и изменяется состояние вывода ОС0 (ОС2). Каким образом изменяется состояние вывода ОС0 (ОС2) определяется, как обычно, содержимым разрядов СОМ01:СОМ00 (СОМ21:СОМ20) регистра TCCR0 (TCCR2).

Таблица 8. Поведение вывода ОС0 (ОС2) в режиме Phase Correct PWM

СОМn1 СОМn0 Описание
Таймер/счетчик отключен от вывода ОСn
Зарезервировано
Сбрасывается в «0» при прямом счете и устанавливается в «1» при обратном счете (неинвертированный ШИМ-сигнал)
Устанавливается в «1» при прямом счете и сбрасывается в «0» при обратном счете (инвертированный ШИМ-сигнал)

Примечание: n = 0 или 2.

Для избегания несимметричных выбросов в этом режиме тоже реализована двойная буферизация записи в регистр OCR0 (OCR2). Благодаря этому действительное изменение содержимого регистра сравнения происходит только в момент достижения счетчиком максимального значения $FF.

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

Частота генерируемого в рассматриваемом режиме сигнала определяется выражением fOCn = fclk I/O/512N, где N— коэффициент деления предделителя.

АЦП

Аналого-цифровое преобразование.

В МК имеется встроенный 6-канальный 10-битный АЦП. Для управления АЦП используются 2 регистра: регистр мультиплексирования ADMUXи регистр управленияADCSRA.

ADC Multiplexer Selection Register – ADMUX

Bit 7 6 5 4 3 2 1 0

REFS1 REFS0 ADLAR - MUX3 MUX2 MUX1 MUX0

ADMUX

Read/Write R/W R/W R/W R R/W R/W R/W R/W

Initial value 0 0 0 0 0 0 0 0

Рисунок 1.8 – Регистр ADMUX

Биты 7:6 – REFS1:0 Reference Selection Bits. Эти биты отвечают за опорное напряжение для ADC. Если эти биты изменяются во время перехода, то они не будут в силе до завершения процесса перехода. Внутреннее опорное напряжение может не использоваться, если внешнее опорное напряжение соединено с AREF.

Таблица 10. Выбор опорного напряжения АЦП

REFS1 REFS0 Voltage Reference Selection
AREF, внутреннее Vref отключено
AVCC с внутренним конденсатором на AREF
Резервировано
Внутреннее опорное напряжение 2.56В с внешним конденсатором на AREF

Бит 5 – ADLAR: ADC Left Adjust Result. Бит ALDAR влияет на представление данных в ADC Data Register после конверсии. Если значение ALDAR будет 1, то результат сместится влево. В противном случае – вправо. Смена значения ALDAR отразится на ADC Data Register незамедлительно, несмотря на любые происходящие в текущий момент времени операции.

Биты 3:0 – MUX3:0 Analog Channel Selection Bits. Значения этих битов определяют, какой аналоговый вход будет подключен к ADC. Если биты будут изменены в процессе работы, то изменения не вступят в силу, пока не завершатся текущие операции (ADIF и ADCSRA установлены).

Таблица 11. Выбор аналогового входа АЦП

MUX3..0 Аналоговый вход
ADC0
ADC1
ADC2
ADC3
ADC4
ADC5
ADC6
ADC7
 
 
 
 
 
 
1.30V(VBG)
0V (GND)

ASC Control and Status Register A – ADCSRA

Bit 7 6 5 4 3 2 1 0

ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0

ADCSRA

Read/Write R/W R/W R/W R/W R/W R/W R/W R/W

Initial value 0 0 0 0 0 0 0 0

Рисунок 1.9 - Управляющий регистр ADCSRA

Бит 7 – ADEN: ADC Enable. Запись в этот бит единицы включит ADC. Если в бите ADEN ноль, то ADC будет отключен. Если во время каких-то операций поменять значение бита, то операция будет немедленно прекращена.

Бит 6 – ADSC: ADC Start Conversion. В режиме одиночного преобразования запись в этот бит единицы будет начинать каждое отдельное преобразование. В свободном режиме (множественных преобразований) запись единицы начинает лишь первое преобразование. Если ADSC был записан после того, как был включен ADC или если ADSC записан в то же время, что и включен ADC, то первое преобразование займет 25 циклов машинного времени вместо обычных 13. Это первое преобразование выполнит инициализацию ADC. После окончания преобразования в бит ADSC устанавливается ноль. Пока преобразование продолжается, бит установлен в единицу. Запись вручную нуля не дает результата.

Бит 5 – ADFR: ADC Free Running Select. Когда в бит записана единица, ADC оперирует в свободном режиме. В этом режиме ADC просматривает и обновляет регистры данных постоянно. Установка значения бита в ноль немедленно отменит свободный режим.

Бит 4 – ADIF: ADC Interrupt Flag. Этот бит устанавливается тогда, когда завершает работу ADC и регистры данных обновлены. ADC Conversion Complete Interrupt (прерывание по завершению преобразования АЦП) выполняется в том случае, если бит ADIE и I-бит в SREG установлены. ADIF сбрасывается аппаратно, когда выполняется соответствующее прерывание. Иначе ADIF можно сбросить, установив логическую единицу во флаг.

Бит 3 – ADIE: ADC Interrupt Enable. Когда этот бит равен единице и I-бит в SREG установлен в «1», то активируется ADC conversion Complete Interrupt (прерывание по завершению преобразования).

Биты 2:0 – ADPS2:0: ADC Prescaler Select Bits. Эти биты определяют коэффициент деления между частотой XTAL и входной тактовой частотой ADC.

Таблица 12. Установка частоты работы АЦП (выбор предделителя)

ADPS2 ADPS1 ADPS0 Коффициент деления

ADC Data Register – ADCL и ADCH (регистры данных)

В данные регистры помещается результат преобразования.

Bit 15 14 13 12 11 10 9 8

- - - - - - ADC9 ADC8
ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0

ADCH

ADCL

7 6 5 4 3 2 1 0

Read/Write R R R R R R R R

R R R R R R R R

Initial value 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

Рисунок 1.10 – Формат регистров данных при ADLAR = 0 и ADLAR = 1

Биты ADLAR и MUXn в ADMUX влияют на то, как выходной результат представлен в регистрах ADCL и ADCH. Если ADLAR установлен, то результат смещается влево. Если ADLAR очищен (по умолчанию), то результат смещается вправо.

ПОРТЫ

ПОРТЫ

SBI PORTB, 1; устанавливается единица первый пин порта Б

CBI PORTB, 2;устанавливается ноль второй пин порта Б

на вход

LDI Temp1,0b11111111

OUT PORTB,Temp1;

на выход

LDI Temp1,0b00000000

OUT PORTB,Temp1;

Наши рекомендации