- •Федеральное агентство по образованию
- •Проектирование цифровых измерительных устройств
- •Удк 621.317.7 (075) ббк 34.9я73
- •Удк 621.317.7 (075) ббк 34.9я73
- •Введение
- •1. Основные определения
- •Контрольные вопросы
- •2. Циу с квантованием по уровню
- •2.1. Вольтметр на основе времяимпульсного ацп однотактного интегрирования
- •2.2. Времяимпульсный вольтметр на основе ацп двухтактного интегрирования
- •2.3. Вольтметр на основе ацп - преобразования
- •2.4. Вольтметр частотно-импульсного преобразования с пнч
- •Пнч с заданным тактом (пнч зт)
- •Пнч с заданной амплитудой (пнч за)
- •Пнч с заданным интегралом непрямоугольного компенсирующего импульса (пнч зи)
- •2.5. Вольтметры уравновешивающего преобразования (кодоимпульсные вольтметры)
- •2.5.1. Вольтметр развертывающего уравновешивания с рсо
- •2.5.2. Вольтметр развертывающего уравновешивания с нсо
- •2.5.3. Вольтметры следящего уравновешивания
- •2.5.4. Вольтметр следящего уравновешивания с рсо
- •2.5.5. Вольтметр следящего уравновешивания с нсо
- •2.6. Вольтметр на основе ацп параллельного преобразования
- •2.7. Ацп конвейерного типа
- •2.8. Краткая информация об интегральных ацп
- •Контрольные вопросы
- •3. Циу с квантованием по времени
- •3.1. Цифровые частотомеры
- •3.1.1. Частотомер непрерывного преобразования
- •3.1.2. Цифровой частотомер средних значений
- •3.1.3. Цифровой частотомер номинальных значений
- •3.1.4. Цифровой процентный частотомер
- •3.2.1. Цифровой периодомер мгновенных значений
- •Цифровой периодомер мгновенных значений (цпмз) предназначен для реализации измерения за один период входного сигнала. Один из вариантов реализации структурной схемы цпмз приведен на рис. 3.6.
- •Порядок расчета структуры
- •3.2.2. Цифровой периодомер средних значений
- •3.3. Цифровые измерители длительности импульсов
- •3.3.1. Общие сведения о цифровых измерителях длительности импульсов
- •3.3.2. Расширение длительности импульсов
- •3.3.3. Использование нониусного метода для измерения длительности импульсов
- •3.3.4. Аналого-цифровой измеритель длительности одиночных импульсов
- •3.4. Цифровые фазометры
- •3.4.1. Цифровой фазометр мгновенных значений
- •Значение кванта или абсолютной погрешности квантования
- •Для расширения частотного диапазона цфмз используют два основных способа.
- •1. Применение гоч с управляемой выходной частотой, например, на базе умножителя частоты (уч) с петлей фапч.
- •2. Применение гоч с аналого-цифровым управлением
- •3.4.2. Цифровой фазометр средних значений
- •Контрольные вопросы
- •4. Измерение параметров элементов электрических цепей
- •4.1. Измерение емкости и индуктивности
- •4.2. Измерение добротности
- •5. Автоматическое переключение пределов измерения в циу
- •6. Циу пространственного преобразования
- •6.1. Циу линейных перемещений
- •6.1.1. Циу линейных перемещений контактного типа
- •6.1.2. Циу линейных перемещений с оптическим преобразователем
- •6.1.3. Числоимпульсный метод измерения перемещения
- •6.1.4. Измерители больших перемещений (расстояния)
- •6.1.5. Измерители угловых перемещений
- •Контрольные вопросы
- •7. Преобразователи код – напряжение
- •7.1. Пкн на основе управляемого делителя напряжения последовательного типа
- •7.2. Пкн на основе управляемого делителя напряжения параллельного типа
- •7.3. Пкн с суммированием напряжений на основе сетки резисторов
- •7.4. Пкн с суммированием токов
- •7.4.1. Пкн на основе матрицы резисторов с весовыми коэффициентами
- •7.4.2. Пкн на основе резистивной матрицы r-2r
- •7.5. Краткая информация об интегральных цап
- •Контрольные вопросы
- •8. Устройства индикации цифровых приборов
- •Индикаторные панели
- •9. Интерфейсы связи цифровых приборов с эвм и другими циу
- •9.1. Применение последовательного интерфейса rs232
- •9.2. Применение параллельного интерфейса ieee1284
- •9.3. Применение однопроводной шины dallas
- •9.4. Применение двухпроводной шины i2c
- •Контрольные вопросы
- •10. Элементы микропроцессорной техники в циу
- •10.1. Общие сведения о микроконтроллерах семейства piCmicro
- •Ядро микроконтроллера
- •Порты ввода-вывода
- •Периферийные модули
- •10.2. Примеры применения микроконтроллеров piCmicro
- •10.2.1. Устройство управления четырьмя светодиодами
- •10.2.2. Управление жки с помощью последовательного адаптера
- •10.3. Общие сведения о микроконтроллерах семейства avr
- •10.4. Примеры применения микроконтроллеров avr
- •10.4.1. Ик дальномер
- •Библиографический список
- •Оглавление
10.3. Общие сведения о микроконтроллерах семейства avr
Микроконтроллеры семейства AVR подразделяются на 3 группы:
- Classic AVR;
- Tiny AVR;
- Mega AVR.
Примечание. Микроконтроллеры типа Classic AVR сняты с производства, поэтому корпорация Atmel не рекомендует использовать данные микроконтроллеры в новых разработках
Принадлежность МК к той или иной группе определяется его аппаратными возможностями: объемом внутренней памяти программ и данных, наличием АЦП, объемом EEPROM, количеством и разрядностью таймеров-счетчиков, возможностями модуля UART и т.д.
Обобщенная структурная схема MK AVR приведена на рис. 10.5.
Файл регистров общего назначения. Все оперирующие регистрами команды в наборе команд прямо адресуются к любому из регистров за один машинный цикл. Единственное исключение – пять команд, оперирующих с константами: SBCI, SUBI, CPI, ANDI, ORI – и команда LDI, загружающая регистр константой. Эти команды работают только со второй половиной регистрового файла – R16-R31. Команды SBC, SUB, CP, AND и OR, как и все остальные, работают со всем регистровым файлом.
Регистр R30 также используется как 8-разрядный указатель для непосредственной адресации регистрового файла.
Арифметико-логическое устройство (АЛУ) процессора непосредственно подключено к 32 регистрам общего назначения. За один машинный цикл АЛУ производит операции между регистрами регистрового файла. Команды АЛУ разделены на три основных категории – арифметические, логические и битовые. Некоторые микроконтроллеры семейства AVR имеют аппаратный умножитель в арифметической части АЛУ.
Загружаемая память программ
Память программ содержит (в зависимости от разновидности МК) от 1К до 128К загружаемой флэш-памяти для хранения программ. Поскольку все команды занимают одно 16-разрядное слово, флэш-память организована как 512 16-разрядных слов. Флэш-память выдерживает не менее 1000 циклов перезаписи.
Программный счетчик имеет ширину 9 бит и таким образом адресуется к 512 словам программной флэш-памяти. Подробно загрузка флэш-памяти будет рассмотрена дальше.

Рис. 10.5. Обобщенная структурная схема MK AVR
Режимы адресации программ и данных
Усовершенствованные RISC микроконтроллеры AVR поддерживают эффективную и мощную систему адресации.
– Прямая регистровая. Адресуется отдельный регистр Rd, адрес регистра указывается в битах 0..4 кода команды, операнд содержится в регистре Rd.
– Косвенная регистровая. Регистр адресуется через указатель Z-регистр (R30).
– Прямая регистровая, два регистра Rd и Rr – адреса регистров указываются в битах 0..4 (Rd) и 5..9 (Rr) кода команды. Операнды содержатся в регистрах Rd и Rr. Результат помещается в регистр Rd.
– Прямая ввода/вывода. Адрес операнда содержится в битах 0..5 кода команды, адрес регистра – в битах 6..10.
– Относительная программная адресация командами RJMP и RCALL. Смещение относительно программного счетчика указывается в битах 0..11 кода операции. Выполнение программы передается по адресу PC+k. Относительный адрес k лежит в диапазоне от +2кБайт до – (2кБайт – 1).
Стек подпрограмм и прерываний. Для обработки прерываний и вызовов подпрограмм используется аппаратный стек. Аппаратный стек сохраняет значение программного счетчика – адрес возврата из подпрограмм и программ обслуживания прерываний.
Команда RCALL и прерывания записывают значение программного счетчика на 0 уровень стека. Данные, хранящиеся в стеке на уровнях 1 и 2, сдвигаются на один уровень вглубь. При выполнении команды RET или RETI значение программного счетчика выбирается с 0-го уровня стека, данные с уровней 1 и 2 сдвигаются на один уровень вверх.
EEPROM память данных. МК AVR содержат до 4К электрически стираемой энергонезависимой памяти (EEPROM). EEPROM организована как отдельная область данных, каждый байт которой может быть прочитан и перезаписан. EEPROM выдерживает не менее 100000 циклов записи/стирания. Доступ к энергонезависимой памяти данных рассмотрен дальше и задается регистром адреса, регистром данных и управляющим регистром.
Время выполнения команд. ЦПУ процессора AVR управляется системной частотой, генерируемой внешним резонатором. Внутреннее деление частоты генератора не используется.
В процессоре организован буфер (pipeline) команд, при выборе команды из памяти программ происходит выполнение предыдущей команды. Подобная концепция позволяет достичь быстродействия 1MIPS на МГц, уникальных показателей стоимости, быстродействия и потребления процессора.
Память ввода/вывода. Все устройства ввода/вывода и периферийные устройства МК располагаются в пространстве ввода/вывода. Различные ячейки этого пространства доступны через команды IN и OUT, пересылающие данные между одним из регистров общего назначения (РОН) и пространством ввода/вывода. К регистрам $00..$19 можно осуществлять побитовый доступ командами SBI и CBI. Значение отдельного бита этих регистров можно проверить командами SBIC и SBIS. Дополнительную информацию по этому вопросу можно найти в описании системы команд.
Регистр статуса ЦПУ (SREG) содержит следующие биты, доступные для записи и чтения.
Бит 7 - I: Общее разрешение прерываний. Для разрешения прерываний этот бит должен быть установлен в единицу. Управление отдельными прерываниями производится регистром маски прерываний - GIMSK/TIMSK. Если флаг сброшен (0), независимо от состояния GIMSK/TIMSK прерывания не разрешены. Бит I очищается аппаратно после входа в прерывание и восстанавливается командой RETI для разрешения обработки следующих прерываний.
Бит 6 - T: Хранение копируемого бита. Команды копирования битов BLD (Bit LoaD) и BST (Bit STore) используют этот бит как источник и приемник обрабатываемого бита. Бит из регистра регистрового файла может быть скопирован в T командой BST, бит T может быть скопирован в бит регистрового файла командой BLD.
Бит 5 - H: Флаг половинного переноса. Этот флаг индицирует перенос из младшей половины байта при некоторых арифметических операциях. Более подробно об этом можно прочитать в описании системы команд.
Бит 4 - S: бит знака, S = N XOR V. Бит S всегда равен исключающему ИЛИ между флагами N (отрицательный результат) и V (переполнение дополнения до двух). Более подробно об этом можно прочитать в описании системы команд.
Бит 3 - V: Флаг переполнения дополнения до двух. Этот флаг поддерживает арифметику с дополнением до двух. Более подробно об этом можно прочитать в описании системы команд.
Бит 2 - N: Флаг отрицательного результата. Этот флаг указывает на отрицательный результат выполнения различных арифметических и логических операций. Более подробно об этом можно прочитать в описании системы команд.
Бит 1 - Z: Флаг нулевого результата. Этот флаг индицирует нулевой результат различных арифметических и логических операций. Более подробно об этом можно прочитать в описании системы команд.
Бит 0 - C: Флаг переноса. Этот флаг индицирует перенос в арифметических и логических операциях. Более подробно об этом можно прочитать в описании системы команд.
Регистр управления ЦПУ (MCUCR) содержит биты общего управления МК. Ниже приводится назначение битов данного регистра.
Бит 5 – Sleep Enable – Разрешение режима Sleep. Этот бит должен быть установлен в 1, чтобы при выполнении команды SLEEP процессор переходил в режим пониженного энергопотребления (Sleep). Для использования режима пониженного энергопотребления этот бит рекомендуется устанавливать в 1 до исполнения команды SLEEP.
Бит 4 – Sleep Mode – Режим Sleep. Этот бит выбирает один из доступных режимов пониженного энергопотребления. Если бит сброшен (0), то в качестве режима Sleep выбирается холостой режим (Idle mode). Если бит установлен, выбирается экономичный режим (Power down). Особенности каждого из режимов будут рассмотрены ниже.
Биты 3,2 – зарезервированы и читаются как 0.
Биты 1,0 – ISC01, ISC00 – биты управления срабатыванием прерывания 0. Внешнее прерывание активируется выводом INT0, если установлен флаг I регистра состояния SREG и установлена соответствующая маска в регистре GIMSK. Срабатывание по уровню и фронтам задается следующим образом.
|
ISC01 |
ISC00 |
Описание |
|
0 |
0 |
Запрос прерывания генерируется по низкому уровню на входе |
|
0 |
1 |
Зарезервировано |
|
1 |
0 |
Запрос на прерывание по спадающему фронту на входе |
|
1 |
1 |
Запрос на прерывание по нарастающему фронту на входе |
Примечание. При изменении битов ISC01 и ISC00 прерывания по входу INT0 должны быть запрещены сбросом бита разрешения прерывания в регистре GIMSK. Иначе прерывание может произойти при изменении значения битов.
Аппаратный сброс. В МК AVR предусмотрены три источника сброса:
– сброс по включению питания (процессор сбрасывается при подаче питания на выводы VCC и GND);
– внешний сброс (процессор сбрасывается при подаче низкого уровня на вывод RESET на время более двух периодов тактовой частоты);
– сброс от сторожевого таймера (процессор сбрасывается по окончании времени сторожевого таймера, если разрешена его работа).
Во время сброса все регистры ввода/вывода устанавливаются в начальные значения, программа начинает выполняться с адреса $000, по этому адресу должна быть записана команда RJMP – относительный переход на программу обработки сброса. Если в программе не разрешаются прерывания и векторы прерываний не используются, в первых адресах памяти может быть записана программа.
Контроллер прерываний предназначен для аппаратного обеспечения запуска логики обслуживания прерываний.
Младшие адреса памяти программ отведены под векторы прерываний, список векторов прерываний приведен в табл. 10.3. Этот список также определяет и приоритет различных прерываний. Чем младше адрес, тем выше приоритет прерывания. Наивысший приоритет имеет сброс, за ним INT0 и т.д.
Таблица 10.3
|
Номер вектора |
Адрес |
Источник |
Описание прерывания |
|
1 |
$000 |
RESET |
Вывод сброса и сброс от сторожевого таймера |
|
2 |
$001 |
INT0 |
Внешнее прерывание 0 |
|
4 |
$002 |
TIMER0,OVF0 |
Переполнение таймера/счетчика 0 |
|
5 |
$003 |
ANA_COMP |
Аналоговый компаратор |
Чаще всего используется следующая установка векторов прерываний в программе:
|
Адрес Метка |
Код |
Комментарий |
|
$000 |
rjmp RESET |
; обработка сброса |
|
$001 |
rjmp EXT_INT0 |
; обработка IRQ0 |
|
$002 |
rjmp TIM0_OVF |
; обработка переполнения таймера 0 |
|
$003 |
rjmp ANA_COMP |
; обслуживание аналогового компаратора |
|
; |
|
|
|
$004MAIN: <instr> xxx |
; начало основной программы | |
Таймеры/счетчики. В MK AVR предусмотрены 8-разрядные и 16-разрядные таймеры/счетчики общего назначения. Любой из них можно использовать как таймер с внутренним источником импульсов или как счетчик, управляемый внешними счетными импульсами.
Таймер/счетчик может получать импульсы тактовой частоты CK, импульсы с предварительного делителя (CK/8, CK/64, CK/256 или CK/1024), импульсы с внешнего вывода или быть остановлен соответствующими установками регистра TCCRх. Флаг переполнения таймера находится в регистре TIFR. Биты управления таймером расположены в регистре TCCRх. Разрешение и запрещение прерываний от таймера управляются регистром TIMSK.
При работе таймера/счетчика от внешнего сигнала внешний сигнал синхронизируется с тактовым генератором ЦПУ. Для правильной обработки внешнего сигнала минимальное время между соседними импульсами должно превышать период тактовой частоты процессора. Сигнал внешнего источника обрабатывается по спадающему фронту тактовой частоты процессора.
Сторожевой таймер (WDT) работает от отдельного встроенного генератора, работающего на частоте 1 МГц. Управляя предварительным делителем сторожевого таймера, можно задавать интервал сброса таймера от 16 до 2048 периодов. Частота встроенного RC генератора зависит от напряжения питания процессора.
Команда WDR сбрасывает сторожевой таймер. Для работы сторожевого таймера можно выбрать одно из 8-ми значений частоты, что позволяет в широких пределах изменять время между исполнением команды WDR и сбросом процессора. При отработке периода работы сторожевого таймера, если не поступила команда WDR, МК сбрасывается, выполнение программы продолжается с вектора сброса.
Энергонезависимое ОЗУ (EEPROM) предназначено для хранения данных при отключенном питании МК. Для доступа к EEPROM служат три регистра:
– регистр адреса EEPROM EEAR – в этот регистр перед обращением к EEPROM записывается адрес ячейки памяти, к которой производится обращение;
– регистр данных EEPROM EEDR – в этом регистре перед записью должны быть размещены записываемые данные, а после операции чтения в нем будут расположены считанные из EEPROM данные;
– регистр управления EEPROM – в этом регистре расположены биты разрешения записи или чтения EEPROM, которые должны устанавливаться в 1 при выполнении соответствующей операции.
Порты ввода/вывода – это 8-разрядные двунаправленные порты. Для обслуживания каждого порта отведено три регистра: регистр данных PORTх, регистр направления данных DDRx и регистр адреса выводов порта PINx. Регистры адреса выводов портов предназначены только для чтения, в то время как регистры данных и регистры направления данных – для чтения/записи. То есть PINх не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов соответствующего порта. При чтении PORTх читаются данные из регистра-защелки, при чтении PINх читаются логические значения, присутствующие на выводах порта.
Все выводы портов имеют отдельно выбираемые нагрузки. Выводы порта могут пропускать ток до 20 мА и непосредственно управлять, например, светодиодными индикаторами или маломощными реле. Каждый порт имеет помимо основных еще одну или несколько альтернативных функций, обязательно указываемых в техническом описании на соответствующий МК.
Периферийные модули. К ним относятся, в частности, аналоговый компаратор и АЦП. Спецификация программирования данных модулей приводится в техническом описании на соответствующий МК. Так как она может существенно отличаться у разных МК, здесь она рассматриваться не будет.
Ниже приводится система команд MK AVR.
Более подробную информацию по MK AVR можно узнать в [13, 14] или на сайтах www.atmel.com и www.argussoft.ru.
