Материал: Микропроцессорные устройства систем управления (2005)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

r2, temp, где temp - символическое имя регистра). Обращение к файлу ре­ гистров ввода-вывода производится командами in, out (например, out SPL, г16 - передать байт данных из регистра г16 в регистр ввода-вывода SPL) с использованием, как правило, символических имен (символические имена регистров ввода-вывода приведены в приложении).

Необходимо обратить внимание не только на отличия в командах адре­ сации регистров, но и на их совершенно разное функциональное назначе­ ние. Регистры общего назначения, как и в любой микропроцессорной сис­ теме, содержат данные для программного преобразования. Следовательно, команды преобразования данных выполняются только над содержимым ре­ гистров общего назначения. Дополнительная особенность микроконтрол­ лера - каждый регистр общего назначения может быть аккумулятором при выполнении любых команд преобразования данных. Система команд и ор­ ганизация программной обработки данных микроконтроллеров семейства AVR достаточно типична для микропроцессорных средств и будет рас­ смотрена позднее.

С точки зрения программного преобразования регистры ввода-вывода, как правило, доступны только для операций чтения и записи. Байты дан­ ных в регистрах ввода-вывода строго связаны с работой соответствующих аппаратных интерфейсных средств. Поэтому обмен данными с этими реги­ страми производится либо для программного управления функциями и ре­ жимами аппаратных интерфейсных средств, либо для приема от них дан­ ных, сформированных в результате выполнения заданных функций.

Функции, выполняемые комплексом аппаратных интерфейсных средств, являются важнейшими характеристиками микроконтроллера и в значи­ тельной степени определяют эффективность его работы. Особенности при­ менения регистров ввода-вывода для организации взаимодействия с аппа­ ратными интерфейсными средствами рассматриваются в следующей главе.

45

3. АППАРАТНЫЕ ИНТЕРФЕЙСЫ МИКРОКОНТРОЛЛЕРА AT90S8535

Дополнительные аппаратные средства микроконтроллеров, реализую­ щие стандартные интерфейсные функции, позволяют существенно расши­ рить возможности программной обработки данных. Возможность решения нескольких задач параллельно с программным преобразованием данных не только повышает скорость работы, но и заметно упрощает алгоритмы и ра­ бочие программы. Следует помнить, что любые средства аппаратной реа­ лизации обладают весьма ограниченными пределами изменения алгорит­ мов и параметров работы, их функции строго специализированы, поэтому они и должны рассматриваться как вспомогательные средства.

Хотя основные свойства микропроцессорных средств определяются про­ граммной реализацией функций, их эффективность может сильно зависеть от набора вспомогательных средств. Наиболее стандартизованы различные интерфейсные функции, кроме того, интерфейсы в системах автоматизации являются важнейшим элементом обеспечения корректного взаимодействия. Именно по этим причинам вспомогательные аппаратные средства микро­ контроллеров предназначены в первую очередь для выполнения стандарт­ ных интерфейсных функций.

Интерфейсные средства микроконтроллера AT90S8535 достаточно ти­ пичны и поддерживают функции ввода-вывода в параллельном и последо­ вательном форматах, обработки аналоговых сигналов, формирования за­ данных временных интервалов. В данной главе рассматриваются режимы работы этих средств и вопросы применения регистров ввода-вывода для организации взаимодействия с ними. Используемые для пояснений фраг­ менты программ ориентированы на мнемонику и систему команд микро­ контроллера AT90S8535, которая рассматривается детальнее в главе 4.

3.1. Параллельные порты ввода-вывода

Как указывалось ранее, микроконтроллер содержит 32 линии вводавывода (рис. 4), объединенные в 4 двунаправленных порта (А, В, С, D). Управление каждым портом производится тремя регистрами порта из фай­ ла регистров ввода-вывода, символические имена этих регистров содержат наименование порта. Так как процедуры управления для всех портов ана­ логичны, рассмотрим их на примере порта А.

Регистр управления порта А с символическим именем DDRA, адресом в файле регистров ввода-вывода $1А, адресом RAM $03А программно дос­ тупен и для чтения, и для записи и определяет направление передачи дан-

46

ных: 0 - ввод, 1 - вывод. Каждый бит DDRA* (DDA0 - DDA7) управляет соответствующей линией ввода-вывода и программируется независимо, начальное значение всех битов DDRA - нулевое. То есть в процессе работы значение каждого бита не зависит от значений других битов, чтением со­ держимого регистра DDRA можно определить направление передачи дан­ ных по соответствующим линиям ввода-вывода в данный момент времени.

Пример 1:

 

ml: ldirl6, ObOOOllllO

; запись в г16 константы, указанной

; в двоичном формате,

т2: out DDRA, г16

; пересылка из г16в регистр управления DDRA.

В соответствии с байтом управления в регистре DDRA линии РА7, РА6, РА5, РАО будут работать в режиме ввода, а РА4, РАЗ, РА2, РА1 - в ре­ жиме вывода сигналов.

Регистр ввода данных PINA (адрес в файле регистров ввода-вывода - $19, адрес RAM - $039) программно доступен только для чтения (in rl6, PINA - пример команды чтения данных из PORTA) и обеспечивает считы­ вание сигналов, поступающих в данный момент времени на соответствую­ щие линии ввода-вывода (например, линия РА5 в режиме ввода формирует бит PINA5 регистра ввода данных). Никакого хранения данных регистр PINA не выполняет.

Регистр вывода данных PORTA (адрес в файле регистров ввода-вывода - $1В, адрес ОЗУ - $03В) программно доступен и для чтения, и для записи, обеспечивает хранение данных и выдачу их в режиме вывода на соответст­

вующие

линии ввода-вывода (например, PORTA4 - РА4). При

чтении

PORTA передает данные, ранее записанные в этот регистр для вывода.

Пример 2:

 

 

тЗ: ldirl6, ObOWlOWl ; запись в г16 константы, указанной

 

т4: out

PORTA, r!6

; в двоичном формате,

 

; пересылка из г!6 в выходной регистр PORTA,

т5: in г15, PINA

; пересылка из входного регистра PINA в г16.

 

Если полагать, что режим порта А задан в примере 1, то РА4-1,

РАЗ-0,

РА2-1, РА1~0 и определяются соответствующими битами константы,

В дальнейшем будут использоваться только символические имена регистров, в программах на ассемблере эти стандартные имена определяются специальным файлом с расширением .inc. Такие файлы существуют для каждой модели микроконтроллера (например, "8535def inc") и включаются в тексты программ. Таблица соответствия символических имен и физических ад­ ресов приведена в приложении.

47

записанной командами тЗ, т4 в выходной регистр порта. Чтение байта из входного регистра (команда т5) в этих битах, настроенных в режим вывода, даст такие же значения сигналов; в остальных битах, настроен­ ных в реоким ввода, будет определяться поступающими на них внешними сигналами.

Буферы портов в режиме вывода позволяют формировать логические сигналы с током нагрузки до 20 мА. В режиме ввода, кроме приема внеш­ них сигналов, буферы позволяют подключать к входам портов внутренние резисторы (pull-up), задавая на входах при отсутствии внешних сигналов уровень логической единицы. Например, DDA7=0 (ввод данных) при PORTA7=:l внутренний резистор буфера подключен и при отсутствии внешнего сигнала будет задавать на РА7 высокий уровень. Это позволяет устранить возможные неопределенности входных сигналов, в частности, при отключении внешних источников сигналов. При появлении сигнала внешнего источника уровень РА7 будет задаваться этим внешним сигна­ лом. При PORTA7==0 внутренний резистор отключен и никакого влияния не оказывает.

Для остальных портов ввода-вывода используются такие же регистры с аналогичными именами и заменой буквы, обозначающей наименование порта. Логическая организация параллельных портов достаточно проста и очевидна: пересылка данных в регистры ввода-вывода любого порта ото­ бражается на его работе в течение одного такта микроконтроллера. К их существенным свойствам можно отнести как полную взаимную независи­ мость портов, так и полную независимость отдельных линий ввода-вывода: функции каждой линии ввода-вывода можно программировать и использо­ вать абсолютно независимо. Следует учитывать, что другие интерфейсные средства формируют сигналы через эти же линии ввода-вывода. Передачу этих сигналов в дальнейшем будем называть альтернативными функциями портов.

При использовании альтернативных функций портов ввода-вывода в ре­ гистрах управления должны задаваться соответствующие этим функциям направления передачи сигналов. Очевидно, что одновременное программи­ рование нескольких функций для одной и той же линии ввода-вывода не­ возможно. Более детальное описание альтернативных функций приведено далее при описании соответствующих аппаратных средств микроконтрол­ лера.

3.2. Последовательный интерфейс SPI

Последовательный интерфейс SPI обеспечивает синхронный ввод-вывод данных в последовательном формате через линии ввода-вывода порта В сигналами SCK (альтернативная функция линии ввода-вывода РВ7), MOSI (альтернативная функция линии РВ5), MISO (альтернативная функция 48

РВ6), SS (альтернативная функция РВ4). Контроллер при обмене данными может работать в режиме ведущий (master) или ведомый (slave). Структур­ ная схема, поясняющая алгоритмы работы интерфейса, приведена на рис. 6. Этот же интерфейс используется для внутрисистемного программирования микроконтроллера с записью данных в FLASH и EEPROM.

SPI-master управляет обменом данных. Он формирует информационную 8-битовую последовательность на выходе MOSI, стробирующую выдачу данных, последовательность тактовых импульсов на выходе SCK и одно­ временно может принимать на входе MISO 8-битовую последовательность, стробируемую импульсами SCK. Если РВ4 конфигурируется как выход (DDB4=1), сигнал SS не используется, и РВ4 может работать в стандартном режиме вывода. Если РВ4 конфигурируют как вход (DDB4=0), при SS=1 продолжается работа в режиме SPI-master. Сигнал SS=0, поступающий от другого устройства, должен рассматриваться как запрос на переход в ре­ жим SPI-slave для приема данных.

 

 

master |

 

 

| slave

 

 

|

8-битовый

]

MISO I

PB6

PB6

1 MISO

 

 

 

1

регистр сдвига

Iе

Г

 

 

1

|РММНКЯ

 

 

i i

MOSI |

РВ5

PB5

I MOSI

 

к

 

 

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

|PB7

PB7|

 

I

Схема

!

 

 

 

SCK

1

 

 

1 sc*(

|

управления

|

 

 

 

 

 

 

 

 

 

i_

 

i

 

 

 

ss

|PB4

P B 4 |

ss

 

J

 

 

 

 

 

I

 

 

I

 

 

 

 

Рис. 6. Интерфейс SPI

SPI-slave управляется последовательностью импульсов на входе SCK и принимает информационную 8-битовую последовательность, подаваемую на его вход MOSI. Параллельно с приемом данных по этим же стробирующим импульсам SCK может формироваться выходная информационная по­ следовательность на выходе MISO. Для этого режима РВ4 должен конфи­ гурироваться входом. При SS=0 реализуется режим SPI-slave, если SS=l, интерфейс переходит в пассивное состояние и перестает работать.

Для режима SPI-master конфигурирование порта В следующее: MISO - вход, MOSI - выход, SCK - выход, SS - вход (как вход используется только при необходимости), для режима SPI-slave: MISO - выход, MOSI - вход, SCK - вход, SS - вход (задается сигнал логического нуля для работы ин-

49

Источник: https://studfile.net/preview/16521245/