Разработка и изготовление комплекса усиления и оцифровки сигнала на основе микроконтроллера

курсовая работа

1.2.2 Порты ввода/вывода

Микроконтроллеры AVR семейства Classic имеют порты ввода/вывода. Каждый порт состоит из определенного числа выводов, через которые микроконтроллер может принимать или передавать цифровые сигналы. Конфигурирование каждой лини порта (задание направления передачи данных) может быть произведено программно в любой момент времени. Входные буферы портов построены по схеме триггера Шмитта. Для линий, сконфигурированных как входные, также имеется возможность подключения внутреннего подтягивающего резистора сопротивлением 35 кОм между входом и проводом питания VDD. Кроме того, если вывод (вход) с подключенным внутренним подтягивающим резистором подключить к общему проводу, он может служить источником тока.

  • Максимальная нагрузочная способность выходных буферов портов ввода/вывода при логическом «0» на выходе составляет 20 мА. Благодаря этому микроконтроллер может непосредственно управлять светодиодными индикаторами.
  • Количество доступных портов, или, если точнее, количество контактов ввода/вывода, является одним из основных параметров, влияющих на выбор конкретной модели микроконтроллера.
  • Микроконтроллер AT90S/LS8535 имеет по четыре 8-разрядных порта ввода/вывода А, В, С и D. Общее количество контактов ввода/вывода равно 32. Так же большинство контактов ввода/вывода имеет дополнительные функции, поскольку эти выводы также используются периферийными устройствами микроконтроллера.
  • Обращение к портам производится через регистры ввода/вывода, причем под каждый порт в адресном пространстве ввода/вывода зарезервировано по 3 адреса. По этим адресам размещаются три регистра: регистр данных порта PORTx, регистр направления данных DDRx и регистр выводов порта PINx. Разряды этих регистров имеют названия: Рх7.РхО - для регистров PORTx, DDx7.DDxO - для регистров DDRx и PINx7.PINxO - для регистров PINx. Действительные названия регистров (и их разрядов) получаются подстановкой названия порта вместо символа «х», соответственно для порта А регистры называются PORTA, DDRA, PINA, для порта В - PORTB, DDRB, PINB и т.д. При сбросе микроконтроллера регистры DDRx и PORTx очищаются, а все выводы портов после сброса устанавливаются в третье состояние.
  • Следует заметить, что «регистры» PINx на самом деле регистрами не являются, по этим адресам осуществляется доступ к физическим значениям сигналов на выводах порта. Соответственно, они доступны только для чтения, тогда как регистры PORTx и DDRx доступны и для чтения, и для записи. А в микроконтроллере АТ90С8534 регистр выводов порта вообще отсутствует, т.к. единственный порт этой модели является только портом вывода.
  • Порядковый номер вывода порта соответствует, разумеется, порядковому номеру разряда регистров этого порта. Поэтому если разрядность порта меньше восьми, в регистрах порта используется соответствующее число младших разрядов. Незадействованные старшие разряды регистров доступны только для чтения и всегда содержат «0».
  • Таким образом, запись в порт означает запись требуемого состояния для каждого вывода порта в соответствующий регистр данных порта PORTx. А чтение состояния порта выполняется чтением либо регистра данных порта PORTx, либо регистра выводов порта PINx. При чтении регистра выводов порта PINx происходит считывание логических уровней сигналов, присутствующих на выводах порта. А при чтении регистра данных порта PORTx происходит считывание данных, находящихся в регистре-защелке порта. Причем сказанное справедливо как для входных, так и для выходных контактов.
  • Порты микроконтроллера имеют всего две возможности по конфигурированию:
  • задание направления передачи данных (вход или выход);
  • подключение/отключение внутреннего подтягивающего резистора. Направление передачи данных определяется содержимым регистра передачи данных DDRx. Если разряд DDRx этого регистра установлен в «1», соответствующий х-й вывод порта является выходом. Если же разряд DDRx этого регистра сброшен в «0», соответствующий вывод порта является входом.
  • Управление подтягивающим резистором осуществляется с помощью регистра данных порта PORTx. Если разряд Рхn регистра PORTx установлен в «1» и соответствующий вывод порта является входом, между этим выводом и проводом питания подключается подтягивающий резистор. Чтобы отключить подтягивающий резистор, необходимо либо сбросить соответствующий разряд регистра PORTx, либо сделать вывод порта выходом.
  • 1.2.3 Аналого-цифровой преобразователь
  • AT90S/LS8535 имеет в своем составе многоканальный 10-разрядный АЦП последовательного приближения. Число каналов равно 8. В качестве входов модуля АЦП используются выводы порта выводы порта А.
  • Для питания модуля АЦП в микроконтроллере предусмотрены 2 вывода: AVCC (напряжение питания) и AGND (аналоговая «земля»). Напряжение на выводе AVCC не должно отличаться от напряжения питания микроконтроллера больше чем на ±0.3 В, а аналоговая «земля» соединена с цифровой в одной точке. Микроконтроллер также имеет вывод AREF для подключения к АЦП внешнего источника опорного напряжения. Напряжение, подаваемое на этот вывод, должно находиться в диапазоне 0...VCC.
  • АЦП может работать в двух режимах:
  • режим одиночного преобразования: в этом режиме запуск каждого преобразования инициируется пользователем;
  • режим непрерывного преобразования: в этом режиме запуск преобразований выполняется непрерывно через определенные интервалы времени.
  • Управление модулем АЦП и контроль его состояния осуществляется с помощью регистра ADCSR, расположенного по адресу $06 ($26). Формат регистра ADCSR приведен в таблице 1. Перед началом использования АЦП требуется разрешить его работу. Для этого необходимо записать логическую «1» в разряд ADEN регистра ADCSR, а для запрета, соответственно, - логический «0». Причем если АЦП будет заблокировано во время цикла преобразования, то преобразование завершено не будет (в регистре данных АЦП останется результат предыдущего преобразования).
  • Таблица 1 - Описание бит регистра ADCSR
  • Разряд

    Название

    Описание

    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
    • Обозначение

      Параметр

      Условия

      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

      мкс

      • Результат преобразования сохраняется в регистре данных АЦП. Поскольку АЦП - 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
      • Номера битов

        7

        6

        5

        4

        3

        2

        1

        0

        Обозначения битов

        RXCIE

        TXCIE

        UDRIE

        RXEN

        TXEN

        CHR9

        RXB8

        ТХВ8

        • Чтение (R)/

        Запись(W)

        R/W

        R/W

        R/W

        R/W

        R/W

        R/W

        R

        R/W

        • Начальное
        • значение

        0

        0

        0

        0

        0

        0

        1

        0

        • Текущее состояние приемопередатчика определяется с помощью регистра состояния USR, расположенного по адресу $0А ($2А). Формат регистра UCR приведен в таблице 3, а регистра USR - в таблице 4. Неиспользуемые разряды регистров доступны только для чтения.
        • Принимаемые и передаваемые данные (младшие 8 разрядов) хранятся в регистре данных UDR, который расположен по адресу $0С ($2С). Физически регистр UDR состоит из двух отдельных регистров, один из которых используется для передачи данных, другой - для приема.
        • Таблица 4 - Формат регистра USR
        • Номера битов

          7

          6

          5

          4

          3

          2

          1

          0

          Обозначения битов

          RXC

          ТХС

          UDRE

          FE

          OR

          -

          -

          -

          • Чтение (R)/

          Запись(W)

          R

          R/W

          R

          R

          R

          R

          R

          R

          • Начальное
          • значение

          0

          0

          1

          0

          0

          0

          0

          0

          • При чтении регистра 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.
          • Название порта указывает на его основное назначение - подключение коммуникационного оборудования (например, модема) для связи с другими компьютерами, сетями и периферийными устройствами. К порту могут непосредственно подключаться и периферийные устройств с последовательным интерфейсом: принтеры, плоттеры, терминалы и другие. СОМ-порт широко используется для подключения мыши, а также организации непосредственной связи двух компьютеров. К СОМ-порту подключают и электронные ключи.

    Делись добром ;)