Разработка и изготовление комплекса усиления и оцифровки сигнала на основе микроконтроллера
1.2.2 Порты ввода/вывода
Микроконтроллеры AVR семейства Classic имеют порты ввода/вывода. Каждый порт состоит из определенного числа выводов, через которые микроконтроллер может принимать или передавать цифровые сигналы. Конфигурирование каждой лини порта (задание направления передачи данных) может быть произведено программно в любой момент времени. Входные буферы портов построены по схеме триггера Шмитта. Для линий, сконфигурированных как входные, также имеется возможность подключения внутреннего подтягивающего резистора сопротивлением 35 кОм между входом и проводом питания VDD. Кроме того, если вывод (вход) с подключенным внутренним подтягивающим резистором подключить к общему проводу, он может служить источником тока.
Разряд |
Название |
Описание |
|
7 |
ADEN |
Разрешение АЦП (1 - включено, 0 - выключено) |
|
6 |
ADSC |
Запуск преобразования (1 - начать преобразование) |
|
5 |
ADFR |
Выбор режима работы АЦП (0 - одиночное преобразование) |
|
4 |
ADIF |
Флаг прерывания от компаратора |
|
3 |
ADIE |
Разрешение прерывания от компаратора |
|
2...0 |
ADPS2:ADPS0 |
Выбор частоты преобразования |
- Режим работы АЦП определяется состоянием разряда ADFR. Если он установлен в «1», АЦП работает в режиме непрерывного преобразования. В этом режиме запуск каждого следующего преобразования осуществляется автоматически после окончания текущего. Если же разряд ADFR сброшен в «0», АЦП работает в режиме одиночного преобразования и запуск каждого преобразования осуществляется по команде пользователя.
- Запуск преобразования осуществляется установкой в «1» разряда ADSC регистра ADCSR, а сам цикл преобразования начинается по первому нарастающему фронту тактового сигнала после установки этого разряда. Длительность цикла составляет 13 тактов; выборка и запоминание входного сигнала осуществляется в течение первых 1.5 такта. Через 13 тактов преобразование завершается, разряд ADSC аппаратно сбрасывается в «0» (в режиме одиночного преобразования), и результат преобразования сохраняется в регистре данных АЦП. Одновременно устанавливается флаг прерывания ADIF регистра ADCSR и генерируется запрос на прерывание. Как и флаги остальных прерываний, флаг ADIF сбрасывается аппаратно при запуске подпрограммы обработки прерывания от АЦП или программно - записью в него логической «1». Разрешение прерывания осуществляется установкой в «1» разряда ADIE регистра ADCSR (разумеется, флаг I регистра SREG также должен быть установлен в «1»).
- Если АЦП работает в режиме непрерывного преобразования, новый цикл начнется сразу же после записи результата. В режиме одиночного преобразования новое преобразование может быть запущено сразу же после сброса разряда ADSC (до сохранения результата текущего преобразования). Однако реально цикл преобразования начнется не ранее чем через один такт после окончания текущего преобразования.
- При написании программ необходимо учитывать одну особенность: для первого после включения АЦП преобразования требуется на 12 тактов больше, чем для всех последующих. Это связано с тем, что при запуске первого преобразования сначала выполняется одно «холостое» преобразование, инициализирующее АЦП. Разряд ADSC в этом случае сбрасывается только после окончания рабочего преобразования. Таким образом, длительность преобразования зависит от режима работы АЦП и от порядкового номера преобразования.
- Тактовым сигналом модуля АЦП является сигнал с предделителя, на вход которого, в свою очередь, поступает тактовый сигнал микроконтроллера. Коэффициент деления предделителя и, соответственно, длительность преобразования определяется состоянием разрядов ADPS2...ADPS0 регистра ADCSR.
- Наибольшая точность преобразования достигается, если тактовая частота модуля АЦП находится в определенном диапазоне: 80... 170 кГц для АТ90С8534 и 50...200 кГц для остальных моделей. Соответственно коэффициент деления предделителя рекомендуется выбирать таким, чтобы тактовая частота модуля АЦП находилась в указанном диапазоне. Параметры АЦП микроконтроллера AT90S8535 приведены в таблице 2.
- Таблица 2 - Параметры АЦП микроконтроллера AT90S8535
- Абсолютная
- Результат преобразования сохраняется в регистре данных АЦП. Поскольку АЦП - 10-разрядный, этот регистр физически размещен в двух регистрах ввода/вывода ADCH: ADCL, доступных только для чтения. Эти регистры расположены по адресам $05: $04 (адреса в адресном пространстве ОЗУ соответственно $25:$24) и при включении питания содержат значение «$0000». Обращение к этим регистрам (для получения результата преобразования) должно выполняться в определенной последовательности: сначала необходимо прочитать регистр ADCL, a затем ADCH. Это требование связано с тем, что после обращения к регистру ADCL процессор блокирует доступ к регистрам данных со стороны АЦП до тех пор, пока не будет прочитан регистр ADCH. Благодаря этому можно быть уверенным, что при чтении регистров в них будут находиться составляющие одного и того же результата. Соответственно, если очередное преобразование завершится до обращения к регистру ADCH, результат преобразования будет потерян.
- Управление входным мультиплексором модуля АЦП осуществляется с помощью регистра ADMUX, расположенного по адресу $07 ($27). Разряды MUX2...MUX0 этого регистра определяют номер активного канала (номер аналогового входа, подключенного к входу АЦП). Состояние этих разрядов можно изменить в любой момент, однако, если это будет сделано во время цикла преобразования, смена канала произойдет только после завершения преобразования. Благодаря этому в режиме непрерывного преобразования можно легко реализовать сканирование каналов. Под этим термином в данном случае понимается последовательное преобразование сигналов нескольких каналов.
- 1.2.4 Универсальный асинхронный приемо-передатчик
- Микроконтроллер AT90S8535 имеет в своем составе модуль полнодуплексного универсального асинхронного приемопередатчика (UART). Через него осуществляется прием и передача информации, представленной последовательным кодом, поэтому модуль UART часто называют также последовательным портом. С помощью этого модуля микроконтроллер может обмениваться данными с различными внешними устройствами. Скорость передачи данных может варьироваться в широких пределах, причем высокие скорости передачи могут быть достигнуты даже при относительно низкой тактовой частоте микроконтроллера.
- Известно, что при передаче данных могут происходить различные сбои. Модуль UART, реализованный в данном микроконтроллере, может обнаруживать и сигнализировать о следующих внештатных ситуациях: переполнение, ошибка кадрирования и неверный старт-бит. Для уменьшения вероятности сбоев в модуле реализована такая полезная функция, как фильтрация помех.
- Для взаимодействия с программой в модуле предусмотрены 3 раздельных прерывания, запрос на которые генерируется при наступлении следующих событий: «передача завершена», «регистр данных передатчика пуст» и «прием завершен». Выводы микроконтроллера, используемые модулем UART, являются линиями порта D. В качестве входа приемника (RXD) используется вывод PD0, а в качестве выхода передатчика (TXD) - вывод PD1.Управление работой приемопередатчика осуществляется с помощью регистра управления UCR, расположенного по адресу $0А ($2А) (таблица 3).
- Таблица 3 - Формат регистра UCR
- Чтение (R)/
- Начальное
- значение
- Текущее состояние приемопередатчика определяется с помощью регистра состояния USR, расположенного по адресу $0А ($2А). Формат регистра UCR приведен в таблице 3, а регистра USR - в таблице 4. Неиспользуемые разряды регистров доступны только для чтения.
- Принимаемые и передаваемые данные (младшие 8 разрядов) хранятся в регистре данных UDR, который расположен по адресу $0С ($2С). Физически регистр UDR состоит из двух отдельных регистров, один из которых используется для передачи данных, другой - для приема.
- Таблица 4 - Формат регистра USR
- Чтение (R)/
- Начальное
- значение
- При чтении регистра UDR выполняется обращение к регистру приемника, при записи - к регистру передатчика. Структурная схема передатчика модуля UART приведена на рисунке 10.
- Рисунок 10 - Структурная схема приемо-передатчика UART
- Работа передатчика разрешается установкой в «1» разряда TXEN регистра UCR (UCSRB). Если этот разряд сброшен (передатчик выключен), вывод PD1 (TXD) может использоваться как контакт ввода/вывода общего назначения. При установке разряда TXEN этот вывод подключается к передатчику UART и начинает функционировать как выход независимо от состояния разряда DDD1 регистра DDRD.
- Передача инициируется записью передаваемых данных в регистр данных UART - UDR. После этого данные пересылаются из регистра UDR в сдвиговый регистр передатчика. При этом возможны два варианта:
- новое значение записывается в регистр UDR после того, как был передан стоп-бит предыдущего слова. В этом случае данные пересылаются в сдвиговый регистр сразу же после записи в регистр UDR;
- новое значение записывается в регистр UDR во время передачи. В этом случае данные пересылаются в сдвиговый регистр после передачи стоп-бита текущего слова.
- После пересылки содержимого регистра UDR в сдвиговый регистр флаг UDRE регистра USR (UCSRA) устанавливается в «1», что означает готовность передатчика к получению нового значения. В этом состоянии флаг остается до новой записи в регистр UDR. Одновременно с пересылкой формируется служебная информация: 0-й разряд сдвигового регистра сбрасывается в «0» (старт-бит), а 9-й (10-й) разряд устанавливается в «1» (стоп-бит). Если включен режим передачи 9-разрядных данных (разряд CHR9 регистра UCR (UCSRB) установлен в «1»), то значение разряда ТХВ8 регистра UCR (UCSRB) копируется в 9-й разряд сдвигового регистра.
- После загрузки сдвигового регистра его содержимое начинает сдвигаться вправо и поступать на вывод TXD в следующем порядке: старт-бит, данные (начиная с младшего разряда), стоп-бит. Сдвиг осуществляется по тактовому сигналу, вырабатываемому контроллером скорости передачи. Если во время передачи в регистр UDR было записано новое значение, то после передачи стоп-бита оно пересылается в сдвиговый регистр. Если же к моменту окончания передачи стоп-бита такой записи выполнено не было, устанавливается флаг завершения передачи ТХС регистра USR (UCSRA).
- 1.3 Последовательный интерфейс - СОМ-порт
- Универсальный внешний последовательный интерфейс - СОМ-порт (Communications Port - коммуникационный порт) присутствует в PC начиная с первых моделей. Этот порт обеспечивает асинхронный обмен по стандарту RS-232C. СОМ-порты реализуются на микросхемах универсальных асинхронных приемопередатчиков (UART), совместимых с семейством 18250/16450/16550. Они занимают в пространстве ввода/вывода по 8 смежных 8-битных регистров и могут располагаться по стандартным базовым адресам 3F8h (COM1), 2F8h (COM2), 3E8h (COM3), 2E8h (COM4). Порты могут вырабатывать аппаратные прерывания IRQ4 (обычно используются для СОМ1 и COM3) и IRQ3 (для COM2 и COM4). С внешней стороны порты имеют линии последовательных данных передачи и приема, а также набор сигналов управления и состояния, соответствующий стандарту RS-232C. СОМ-порты имеют внешние разъемы (male - «папа») DB25P или DB9P, выведенные на заднюю панель компьютера. Характерной особенностью интерфейса является применение «не ТТЛ» сигналов - все внешние сигналы порта двуполярные. Гальваническая развязка отсутствует - схемная земля подключаемого устройства соединяется со схемной землей компьютера. Скорость передачи данных может достигать 115 200 бит/с.
- Компьютер может иметь до четырех последовательных портов СОМ 1-COM4 (для машин класса AT типично наличие двух портов) с поддержкой на уровне BIOS. Сервис BIOS Int 14h обеспечивает инициализацию порта, ввод и вывод символа (не используя прерываний) и опрос состояния. Через Int 14h скорость передачи программируется в диапазоне 110-9600 бит/с (меньше, чем реальные возможности порта). Для повышения производительности широко используется взаимодействие программ с портом на уровне регистров, для чего требуется совместимость аппаратных средств СОМ-порта с программной моделью 18250/16450/16550.
- Название порта указывает на его основное назначение - подключение коммуникационного оборудования (например, модема) для связи с другими компьютерами, сетями и периферийными устройствами. К порту могут непосредственно подключаться и периферийные устройств с последовательным интерфейсом: принтеры, плоттеры, терминалы и другие. СОМ-порт широко используется для подключения мыши, а также организации непосредственной связи двух компьютеров. К СОМ-порту подключают и электронные ключи.
Обозначение |
Параметр |
Условия |
min |
typ |
max |
Единицы измерения |
|
Разрешение |
10 |
бит |
|||||
погрешность |
FREF = 4B /АВС = 200кГц |
1 |
2 |
МЗР |
|||
FREF = 4B /adc = 1 МГц |
4 |
МЗР |
|||||
FREF = 4B /adc = 2 МГц |
16 |
МЗР |
|||||
INL |
Интегральная нелинейность |
FREF>2B |
0.5 |
МЗР |
|||
DNL |
Дифференциальная нелинейность |
FREF>2B |
0.5 |
МЗР |
|||
Ошибка смещения |
1 |
МЗР |
|||||
Время преобразования |
65 |
260 |
мкс |
Номера битов |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Обозначения битов |
RXCIE |
TXCIE |
UDRIE |
RXEN |
TXEN |
CHR9 |
RXB8 |
ТХВ8 |
|
Запись(W) |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R |
R/W |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Номера битов |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Обозначения битов |
RXC |
ТХС |
UDRE |
FE |
OR |
- |
- |
- |
|
Запись(W) |
R |
R/W |
R |
R |
R |
R |
R |
R |
|
|
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |