Для многих типичных прикладных задач оптимальным будет использование микроконтроллеров семейства AVR фирмы Atmel. Они представляют собой эффективный инструмент для создания современных, высокопроизводительных и экономичных, многоцелевых устройств управления, соотношение "цена - производительность - энергопотребление" для AVR является одним из лучших на мировом рынке 8-разрядных микроконтроллеров.
Микроконтроллер содержит 32 линии ввода-вывода, объединенные в 4 двунаправленных порта (A, B, C, D). Управление каждым портом производится тремя регистрами порта из файла регистров ввода-вывода, символические имена этих регистров содержат наименование порта. Функции регистров приведены ниже для обобщенного порта с именем X, где X - символическое имя порта: A, B, C или D.
Регистр управления с символическим именем DDRX программно доступен и для чтения, и для записи, DDRX определяет направление передачи данных: 0 - ввод, 1 - вывод. Каждый бит DDRX (DDX0 - DDX7) управляет соответствующей линией ввода-вывода и программируется независимо, т.е. значение каждого бита и направление передачи сигналов может задаваться произвольно, начальное значение всех битов DDRX - нулевое (ввод данных). В процессе работы, чтением содержимого регистра DDRX можно определить направление передачи данных по соответствующим линиям ввода-вывода в данный момент времени.
Регистр ввода данных PINX программно доступен только для чтения и обеспечивает считывание сигналов, поступающих в данный момент времени на соответствующие линии ввода-вывода (например, линия PA2 в режиме ввода формирует бит PINA2 регистра ввода данных). Хранения данных регистр PINX не выполняет, передавая при чтении текущие состояния сигналов.
Регистр вывода данных PORTX программно доступен и для чтения, и для записи, обеспечивает хранение данных и выдачу их в режиме вывода на соответствующие линии ввода-вывода (например, PORTA4 - PA4). При чтении PORTX передает данные, ранее записанные в этот регистр для вывода.
Функциональная гибкость портов обеспечивается независимым управлением каждой из 32 линий ввода-вывода микроконтроллера, допускается в процессе работы изменять направление передачи сигналов изменением соответствующих данных в регистрах портов. При выборе режимов ввода-вывода сигналов необходимо учитывать альтернативные функции портов микроконтроллера. Определенные линии ввода-вывода аппаратно связаны с интерфейсами устройств микроконтроллера: АЦП, таймеров, последовательных приемопередатчиков и т.д. При использовании этих устройств соответствующие линии ввода-вывода жестко закреплены за их интерфейсами и не могут выполнять какие-либо другие функции обмена данными.
АЦП микроконтроллера разрядностью 10 бит работает по алгоритму последовательных приближений, погрешность преобразования - не более 2 единиц младшего значащего разряда, время преобразования 65 мкс - 260 мкс. АЦП совместно со встроенным аналоговым мультиплексором обеспечивает преобразование в 10-ти разрядный двоичный код сигналов по одному из 8 аналоговых входов (порт A) в диапазоне напряжений от 0 (AGND) до опорного (AREF).
Опорное напряжение должно лежать в диапазоне от 2 В до напряжения питания AVCC (5 В). Код АЦП NАЦП=0x000 соответствует нулевому входному сигналу UАЦП, максимальный код 0x3FF соответствует сигналу, равному опорному AREF минус вес единицы младшего значащего разряда:
UАЦП= (NАЦП*AREF)/210.
Выходной код NАЦП хранится в двухбайтовый регистр ADC (ADCL - младшие 8 бит результата, ADCH - старшие 2 бита результата). Чтение данных из регистра результата ADC, как и других двухбайтовых регистров, должно начинаться обязательно с младшего байта.
Номер входа мультиплексора, с которого поступает сигнал для преобразования в АЦП, определяется тремя младшими битами MUX2, MUX1, MUX0 управляющего регистра ADMUX. Любой из восьми входов может быть выбран через ADMUX записью в него соответствующего кода в любой момент времени, однако переключение входов фактически производится только после завершения очередного цикла преобразования АЦП.
АЦП может работать в режиме однократного преобразования или циклически с автоматическим повторным запуском после каждого преобразования. Управление работой АЦП производится через управляющий регистр ADCSR, биты которого определяют параметры и режимы работы. Время преобразования (тактовая частота АЦП) зависит от битов ADPS2, ADPS1, ADPS0 (биты 2, 1, 0), рекомендуемое значение - 110. Так же, как и при использовании других аппаратных средств микроконтроллера, наиболее эффективно управление работой АЦП через вектор завершения преобразования - ADC. Этот вектор прерывания должен предусматривать чтение из регистров ввода-вывода ADCL, ADCH результатов преобразования, переключение мультиплексора на другой вход порта А изменением младших битов регистра ADMUX (при необходимости), запуск следующего цикла преобразования АЦП, обработку полученных результатов преобразования. В этом случае целесообразно устанавливать режим однократного преобразования ADFR=0 (бит 5 регистра ADCSR), а запуск преобразования производить установкой бита ADSC (бит 6 регистра ADCSR). Первый запуск АЦП должен производиться из программы инициализации, рекомендуемое значение байта управления АЦП - ADCSR≡0b11011110.
Самое читаемое:
Логический синтез цифровых устройств
.1. Объект представляет собой техническое устройство, в которое поступают
различные детали. Имеются 5 датчиков, которые определяют соответствие деталей
("да"-"нет") некоторым параметрам (размер, форма, цвет,
конфигурация и т.п.). В зависимости от комбинации сигналов датчиков
f(X5,X4,X3,X2,X1) детали сортируются и ...