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