Файл: Микропроцессорные устройства систем управления (Ю.И. Иванов, 2005).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 1559

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

дополнительно может производиться прерываниями таймера 2, если в этом таймере задан асинхронный режим работы от вспомогательного генерато­ ра.

На структурной схеме (рис. 4) и в дальнейшем при описании микро­ контроллеров будут использованы названия и обозначения, используемые фирмой ATMEL. Внешние выводы (рис.4) микроконтроллера:

VCC и GND (общий) - источник питания цифровых элементов;

AVCC, AGND (общий аналоговый), AREF - питание и опорное на­ пряжение АЦП и его мультиплексора;

RESET - сигнал внешнего сброса (низкий уровень длительностью бо­ лее 50 не), при включении питания сброс микроконтроллера произ­ водится автоматически;

XTAL1 и XTAL2 - соответственно вход и выход тактового генератора (для подключения частотозадающего кварцевого резонатора и общей синхронизации с другими устройствами), аналогичные электроды вспомогательного генератора асинхронного режима таймера 2 - вы­ воды РС6 и РС7;

РА0-РА7, РВ0-РВ7, РС0-РС7, PD0-PD7 - 32 линии ввода-вывода, объ­

единены в 4 восьмиразрядных порта (PORTA, PORTB, PORTC, PORTD).

PORTA, PORTB, PORTC, PORTD могут использоваться как стандартные двунаправленные порты ввода-вывода либо для передачи сигналов других устройств микроконтроллера. Альтернативные функции PORTA: передача аналоговых сигналов через мультиплексор на вход АЦП. Альтернативные функции PORTB: РВО и РВ1 - внешние входы ТО и Т1 таймеров 0 и 1 соот­ ветственно, РВ2 и РВЗ - входы AIN0 и AIN1 аналогового компаратора, ос­ тальные - сигналы синхронного последовательного интерфейса SPI (PB4 - SS, PB5 - MOSI, PB6 - MISO, PB7 - SCK). Альтернативные функции PORTC: PC6 и РС7 - вход и выход вспомогательного генератора таймера 2. Альтернативные функции PORTD: PD0 и PD1 - сигналы RXD и TXD асин­ хронного последовательного интерфейса UART соответственно, PD2 и PD3 - сигналы внешних прерываний INTO и INT1, PD4-PD7 - сигналы ОС 1В, ОС1 A, ICP, OC2 таймеров 1 и 2.

42

2.3. Запоминающие устройства микроконтроллера AT90S8535

Как указывалось ранее, запоминающие устройства микроконтроллера - FLASH, RAM, EEPROM, регистры общего назначения и регистры вводавывода образуют три отдельных адресных пространства (рис. 5).

Память программ

Память данных

Память данных

$000

$000

$000

Регистры! общего

назначения

$01F

EEPROM

$020

(0,5 К ж 8)

FLASH

Регистры

ввода-вывода

(4Kxt6)

$05F

$060

$1FF

RAM

0,5 К х 8)

$25F

$FFF

Рис. 5. Память микроконтроллера AT90S8535

FLASH - постоянное

запоминающее устройство

и предназначено для

хранения кодов программы, адресация в этой области памяти производится программным счетчиком. Изменение адреса FLASH в программном счет­ чике производится в соответствии со стандартной организацией микропро­ цессорной системы. Как и обычно, для изменения адреса в программном счетчике можно применять команды управления микроконтроллера (см. главу 1). FLASH можно использовать и для хранения констант, чтение этих констант производится специальной командой "lpm" с регистровой адреса­ цией через регистр Z.

FLASH объемом 8 Кбайт предназначена для хранения кодов программ и констант, в том числе и при выключенном питающем напряжении, и состо-

43


ит из 4 К двухбайтовых ячеек с адресами $000 - $FFF\ Запись данных про­ изводится специальным программатором в процедуре внутрисистемного программирования, допустимое количество циклов перезаписи не менее 1000. Большинство кодов команд имеют 16-битовый формат, поэтому, как правило, одна ячейка флэш-памяти хранит код 1 команды или две 8- битовых константы.

В памяти данных EEPROM образует отдельное адресное пространство объемом 0,5 К однобайтовых ячеек с адресами $000 - $ IFF и хранением данных при выключении питающего напряжения. Доступ к данным в EEPROM производится специальной процедурой с особым алгоритмом ад­ ресации через соответствующие регистры из файла регистров вводавывода. Эта процедура по организации ближе к процедурам ввода-вывода (глава 1) и будет рассмотрена позднее, программно доступно и чтение, и запись данных. Запись данных также может производиться программато­ ром в процедуре внутрисистемного программирования.

Третье адресное пространство является основной рабочей областью па­ мяти данных и включает 32 регистра общего назначения с адресами $000 - $01F, 64 регистра ввода-вывода с адресами $020 - $05F и, собственно, RAM объемом 0,5 К однобайтовых ячеек с адресами $060 - $25F. Такая ор­ ганизация памяти данных позволяет адресовать все регистры как ячейки RAM с известными адресами либо использовать для их адресации соответ­ ствующие обозначения или адреса в регистровых файлах. Например, ре­ гистр управления АЦП имеет адрес RAM $026, адрес в файле регистров ввода-вывода $06 или символическое имя ADCSR.

Адресация ячеек памяти в третьем адресном пространстве производится стандартными способами. При прямой адресации адрес содержится в ко­ мандах sts k, Rr и Ids Rd, к (см. главу 4), где к - адрес в диапазоне $000- $25F, Rr и Rd любые из регистров общего назначения. Косвенная адресация возможна регистрами X, Y, Z. Каждый из этих адресных регистров образо­ ван парой регистров общего назначения: X - r27-r26, Y - r29-r28, Z - г31гЗО. Также возможна стековая адресация с помощью указателя стека (пара регистров SPH-SPL файла регистров ввода-вывода), обычно в качестве вершины стека используется наибольший адрес ОЗУ с символическим именем RAMEND, для данного микроконтроллера - это физический адрес $25F. Данные в командах с непосредственной адресацией являются эле­ ментами кодов программы и вместе с ними хранятся в FLASH.

Адресация регистров общего назначения стандартная: в команде указы­ вается номер регистра (например, mov r2, г0 - передать байт данных из г0 в г2) или присвоенное ему в программе символическое имя (например, mov

Символ $, как и символ Ох применяется для обозначения шестнадцатиричного формата дан­ ных 4 4


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