Таблица 2.6 – Комбинации состояний разрядов PWM11 и PWM10 регистра управления TCCR1A
PWM11 | PWM10 | Nmax |
01 1 | 101 | 2555111023 |
Сигнал PWM формируется путем изменения значения сигнала на выходе ОС1 при совпадении кодов в базовом счетчике и регистре OCR1 в процессе счета на сложение и на вычитание. Вид изменения сигнала зависит от состояния разряда СОМ1А0. На рисунке 2.8 изображены графики изменения числа в базовом счетчике (TCNT1) и временные диаграммы сигнала PWM при разных состояниях разряда СОМ1А0.
Рисунок 2.8 – Графики изменения числа в базовом счетчике (TCNT1) и временные диаграммы сигнала PWM
Период сигнала PWM (T) зависит от максимального числа, до которого выполняется счет на сложение. При Nmax = 255 период в 510 раз больше периода следования импульсов на счетном входе базового счетчика. При Nmax = 511 и 1023 это отношение равно 1022 и 2046 соответственно.
Разряд СТС1 регистра TCCR1B в режиме PWM не используется. Запрос прерывания T/C1 OVF формируется при переходе базового счетчика от числа 0 к числу 1. При записи кода в регистр OCR1 код запоминается в регистре временного хранения. Перепись кода в регистр OCR1 выполняется при появлении в базовом счетчике максимального числа, что предотвращает появление в сигнале PWM импульса со случайной длительностью.
В качестве выхода ОС1 у микроконтроллера типа 2313 используется вывод порта РВЗ, а у микроконтроллера типа 4433 – вывод порта PB1 [2].
2.7 Таймер/счетчик типа Е
Таймер/счетчик типа Е входит в состав периферийных устройств микроконтроллеров типа 8515, 8535, m163 и m10З и имеет имя Т/С1. Он содержит шестнадцатиразрядный базовый счетчик и выполняет функцию сравнения/PWM в двух каналах (А и В) и функцию захвата.
В структуру таймера/счетчика типа Е входят все элементы структуры таймера/счетчика типа D. Элементы на схеме рисунке 2.7, используемые при выполнении функции сравнения/PWM, образуют канал А. Дополнительные элементы, образующие канал В, изображены на схеме рисунке 2.9.
Рисунок 2.9 – Структурная схема таймера счетчика типа Е
Дополнительными элементами являются компаратор канала В (KB), регистр сравнения OCR1BH, L, два дополнительных разряда СОМ1В0 и СОМ1В1 в регистре TCCR1A, дополнительный разряд OCF1B в регистре TIFR и дополнительный разряд OCE1B в регистре TIMSK. В канале В формируется запрос прерывания Т/С1 СОМРВ.
Сигнал, изменяемый при выполнении функции сравнения, и сигнал PWM поступают на выход ОС1В.
Выводы микроконтроллера, используемые в качестве входов Т1 и CP и выходов ОС1А и ОС1В у микроконтроллеров разных типов, указаны в таблице 2.7.
Таблица 2.7 – Выводы микроконтроллера, используемые в качестве входов Т1 и CP и выходов ОС1А и ОС1В
Выводы Т/С1 | ТипМК | |||
8515 | 8535 | m163 | m103 | |
Т1 | РВ1 | РВ1 | РВ1 | PD6 |
ICР | О.B. | PD6 | PD6 | PD4 |
ОС1А | PD5 | PD5 | PD5 | РВ5 |
ОС1В | О.B. | PD4 | PD4 | РВ6 |
О.В. – отдельный вывод корпуса. |
В микроконтроллере типа m163 в регистре TCCR1A имеются два дополнительных разряда – FOC1А и FOC1В. При установке разряда в единичное состояние при выполнении функции сравнения сигнал на выходе ОС1А/В принимает требуемое значение немедленно, не дожидаясь совпадения сравниваемых кодов. Запрос прерывания при этом не формируется и базовый счетчик в нулевое состояние не сбрасывается. Разряд сбрасывается в нулевое состояние аппаратно. В режиме PWM эти разряды не используются.
В регистре SFIOR имеется дополнительный разряд PSR10. При установке этого разряда в единичное состояние пересчетная схема сбрасывается в исходное (нулевое) состояние. Разряд PSR10 сбрасывается в нулевое состояние аппаратно [2].
2.8 Сторожевой таймер
В состав сторожевого таймера входят автономный генератор, пересчетная схема, регистр управления WDTCR и схема управления. Структурная схема сторожевого таймера изображена на рисунке 2.10.
Рисунок 2.10 – Структурная схема сторожевого таймера
Генератор GWDT формирует импульсную последовательность. Частота следования импульсов зависит от напряжения питания микроконтроллера (1 МГц при Vcc = 5 В, 350 кГц при Vcc = 3 В). В пересчетной схеме ПС, содержащей многоразрядный счетчик, выполняется деление частоты сигнала генератора. На восьми выходах пересчетной схемы формируются сигналы, частота которых в N раз меньше частоты входного сигнала. Выбор выхода пересчетной схемы с требуемым коэффициентом деления N определяется комбинацией состояния разрядов WDP0, WDP1 и WDP2 регистра WDTCR в соответствии с таблицей 2.8.
Таблица 2.8 – Комбинации состояний разрядов WDP0, WDP1 и WDP2 регистра WDTCR
WDP2 | WDP1 | WDP0 | N | TOUT, Vqc = 5 В | TOUT, Vqc = 3 В |
00001111 | 00110011 | 01010101 | 16К32 К64 К128 К256 К512 К1024 К2048 К | 15 мс30 мс60 мс120 мс240 мс490 мс970 мс1,9 с | 47 мс94 мс190 мс380 мс750 мс1,5 с3,0 с6,0 с |
При единичном состоянии разряда WDE регистра WDTCR на выходе схемы управления СУ с частотой выбранного сигнала формируется запрос прерывания WDT Reset, при появлении которого происходит перезапуск микроконтроллера WDT Reset.
По команде с мнемокодом WDR выполняется сброс пересчетной схемы в исходное (нулевое) состояние.
Для запуска сторожевого таймера необходимо в ходе программы выполнить команду WDR и затем установить в единичное состояние разряд WDE регистра WDTCR.
Для остановки сторожевого таймера необходимо установить в единичное состояние разряд WDTOE регистра WDTCR и одновременно повторно установить в единичное состояние разряд WDE, затем не позднее, чем через четыре такта после этого сбросить в нулевое со стояние разряд WDE. Разряд WDTOE сбрасывает в нулевое состояние аппаратно через четыре такта после установки его в единичное состояние. У микроконтроллера типа 1200 разряд WDTOE отсутствует.
Перезапуск сторожевого таймера происходит при выполнении команды WDR в ходе программы при единичном состоянии разряда WDE.
Программа, в которой предусмотрено использование сторожевого таймера, должна периодически с интервалом меньшим, чем период формирования запроса прерывания WDT Reset, с использованием команды WDR перезапускать сторожевой таймер. Если при появлении сбоя команда WDR своевременно не выполняется, происходит перезапуск микроконтроллера. Интервал времени TOUT, через который следует выполнять команду WDR в ходе программы, при разных значениях коэффициента деления N и напряжения питания Vcc указан в таблице 2.8 [3].
3 Программная модель и принципы работы АЦП микроконтроллеров семейства AVR
3.1 Структура АЦП
Основные характеристики:
- разрешение 10 разрядов;
- точность ±1/2 LSB;
- время преобразования 70...280 мс;
- 8 мультиплексируемых каналов входа;
- режимы циклического и однократного преобразования;
- прерывание по завершению ADC преобразования;
- устройство подавления шумов Sleep режима [4].
Микроконтроллеры типа t15, 4433, 8535, m163 и m103 оснащены 10-разрядным ADC последовательного приближения. ADC подсоединен к 8-канальному аналоговому мультиплексору, позволяющему использовать любой вывод порта F в качестве входа ADC. ADC содержит усилитель выборки/хранения, удерживающий напряжение входа ADC во время преобразования на неизменном уровне. Блок-схема ADC представлена на рисунке 3.1. Для питания ADC используются два отдельных вывода: AVCC и AGND. Вывод AGND должен быть подсоединен к GND и напряжение AVCC не должно отличаться от напряжения VCC более чем на 0,4В.
Рисунок 3.1 – Блок-схема аналого-цифрового преобразователя
Внешнее напряжение сравнения подается на вывод AREF и должно быть в диапазоне от 2,7 В до AVCC.
3.2 Работа аналого-цифрового преобразователя
Аналого-цифровой преобразователь может работать в двух режимах: режиме однократного преобразования и режиме циклического преобразования. В режиме однократного преобразования каждое преобразование инициируется пользователем. В режиме циклического преобразования ADC осуществляет выборку и обновление содержимого регистра данных ADC непрерывно. Выбор режима производится битом ADFR регистра ADCSR.
Работа ADC разрешается установкой в состояние 1 бита ADEN в регистре ADCSR. Первому преобразованию, начинающемуся после разрешения ADC, предшествует пустое инициализирующее преобразование. На пользователе это отражается лишь тем, что первое преобразование будет занимать 27 тактовых циклов, вместо обычных 14.
Преобразование начинается с установки в состояние 1 бита начала преобразования ADSC. Этот бит находится в состоянии 1 в течение всего цикла преобразования и сбрасывается, по завершении преобразования, аппаратно. Если в процессе выполнения преобразования выполняется смена канала данных, то ADC вначале закончит текущее преобразование и лишь потом выполнит переход к другому каналу.
Поскольку ADC формирует 10-разрядный результат, то по завершении преобразования результирующие данные размещаются в двух регистрах данных ADCH и ADCL. Для обеспечения соответствия результирующих данных считываемому уровню используется специальная логика защиты. Этот механизм работает следующим образом: при считывании данных первым должен быть считан регистр ADCL. Как только ADCL считан обращение ADC к регистрам данных блокируется. Таким образом, если после считывания состояния ADCL, но до считывания ADCH, будет завершено следующее преобразование, ни один из регистров не будет обновлен и записанный ранее результат не будет искажен. Обращение ADC к регистрам ADCH и ADCL разрешается по завершении считывания содержимого регистра ADCH.