Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_MK_1_3.doc
Скачиваний:
1
Добавлен:
23.09.2019
Размер:
326.66 Кб
Скачать

17

Государственный комитет связи и информатизации Украины

____________________________________________________________

Украинская государственная академия связи им. А.С. Попова

Кафедра вычислительной техники и микропроцессоров

ИЗУЧЕНИЕ ВСТРОЕННЫХ АППАРАТНЫХ СРЕДСТВ

МИКРОКОНТРОЛЛЕРА 68НС05J ФИРМЫ MOTOROLA

Методическое руководство к лабораторной работе

по дисциплине

“Вычислительная техника и микропроцессоры”

для специальностей: 8. 092402, 7. 092402, 7. 092407, 09. 01

УТВЕРЖДЕНО

советом факультета

многоканальной

электросвязи

Протокол № 5

от 23.02.2001 г.

Одесса 2001

УДК 681.335.5(075)

План НМИ 2000/2001 уч. г.

Составитель – Байдан И.Е.

Рецензенты – Б.С. Владишевский

И.А. Киреев

Рассмотрены для изучения студентами в лаборатории особенности встроенных аппаратных средств (интерфейса, портов ввода/вывода, таймера и системы прерываний) микроконтроллера М68НС05J фирмы MOTOROLA.

Приведены структурные схемы встроенных аппаратных средств микроконтроллера. Представлено домашнее задание и форма отчетности о лабораторной работе.

ОДОБРЕНО

на заседании кафедры

вычислительной техники

и микропроцессоров

и рекомендовано к печати.

Протокол № 5

от 22.01.2001 г.

1 Цель работы

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

2 Основные положения.

2.1 Вводные замечания

Обмен данными между микроконтроллером и внешними устройствами производится с помощью четырех параллельных и двух последовательных портов.

Параллельные порты ввода/вывода А, В, С содержат 8-разрядные регистры данных PxDR и направления пересылки PxDDR (символ х=А, В или С указывает имя порта). Регистры PxDR имеют адреса $00-$02, регистры PxDDR – адреса $03-$05 в младших позициях адресного пространства. В регистры PxDDR вводится управляющий код, программирующий направление передачи для каждого вывода соответствующего порта: если i-й бит в регистре имеет значение 1, то соответствующий вывод порта Pxi является выходом, если 0, – то входом. Обращение к портам производится с помощью команд LDA, LDX и STA, STX. При выполнении команд STA, STX содержимое регистра А или соответственно Х записывается в регистр PxDR соответствующего порта. Если все или часть выводов порта запрограммированы в качестве выходов, то соответствующие разряды содержимого PxDR поступают на эти выходы порта. При выполнении команд LDA, LDX производится считывание в регистр А или Х данных, поступающих на выводы порта, запрограммированные в качестве входов. Если же все или часть выводов данного порта запрограммированы как выходы, то считывается содержимое соответствующих разрядов регистра PxDR. Таким образом, регистры портов, не используемых для ввода, могут служить регистрами хранения промежуточных данных.

Порт ввода D имеет семь выводов PD7, PD5-0, состояние которых может быть считано микроконтроллером с помощью команд LDA или LDX, адресующих регистр PDIR (адрес $03). При использовании последовательных портов АПП, СПП соответствующие выводы порта D служат для их обслуживания и не могут служить для ввода/вывода данных.

Для последовательного обмена данными служат асинхронный и синхронный последовательные порты АПП и СПП.

2.2

Асинхронный последовательный порт (serial communication Interface-SCI) содержит буферный регистр данных SCDR (адрес $11), регистр состояния SCSR (адрес $10), два регистра управления SCCR1, SCCR2 (адреса $ОЕ, $OF). Для формирования синхросигналов служит генератор ГСС, рабочая частота которого Fs определяется содержимым регистра BRR (адрес $0D). Формат содержимого регистров показан на рис. 2.1.

Рисунок 2.1 – Форматы содержимого регистров

Функционирование АПП определяется значениями управляющих кодов, загружаемых в регистры SCCR1, SCCR2 с помощью команды STA. АПП обеспечивает последовательный прием и передачу восьми или девяти битов данных с одним старт-битом и одним стоп-битом. Бит М в регистре SCCR1 (рис. 2.1, а) определяет разрядность данных: 8 битов при М=0 или 9 битов при М=1. Если М=1, то при передаче в качестве девятого (контрольного) бита передается бит Т8 из регистра SCCR1, а при приеме девятый бит заносится в регистр SCCR1 в качестве бита R8. Перед началом передачи на линии устанавливается уровень 1 (сигнал ожидания) на время не менее длительности одного такта передачи Tt=1/Fs. Если на линии поддерживается уровень 0 в течение более l0Tt (при 8-битных данных, М=0) или 11Tt (при 9-битных данных, М=1), то это является сигналом прекращения обмена.

В режиме приема данные со входа RDI последовательно вводятся во входной сдвиговый регистр, а затем переписываются в буферный регистр SCDR, откуда загружаются в регистр А или Х командами LDA, LDX. В режиме передачи данные, записанные в SCDR, переписываются в выходной сдвиговый регистр и последовательно выдаются на выход TDO. Приемник может переводиться в холостой режим, когда он не записывает поступающие данные в регистр SCDR, но проверяет их содержание, ожидая прихода символа активизации. При этом данные, передаваемые по подключенной к RDI линии, могут приниматься другими устройствами в системе. Последующая активизация приемника производится в соответствии со значением бита WAKE в регистре SCCR. При WAKE=0 активизация происходит при поступлении на вход RDI последовательности из 10 (при 8-битных данных, М=0) или 11 (при 9-битных данных, М=1) единиц. При WAKE=1 приемник активизируется при значении 1 старшего (адресного) разряда поступающих данных. Передатчик может выдавать сигнал прекращения обмена, посылая на выход TDO последовательность из нулей длительностью более 10 (при 8-битных данных) или 11 (при 9-битных данных) тактов Tt.

Управляющий код, записываемый в регистр SCCR2 (рис. 2.1, б), разрешает или запрещает формирование запросов прерывания, производит запуск и отключение приемника и передатчика, устанавливает холостой режим приемника и выдачу сигнала прекращения обмена передатчиком. Отдельные биты содержимого SCCR2 имеют следующее назначение:

TIE – разрешает при TIE=1 формирование запроса прерывания при установке признака освобождения буферного регистра в режиме передачи (в регистре SCSR бит TDRE=1);

TCIE – разрешает при TCIE=1 формирование запроса прерывания при установке признака завершения передачи (в регистре SCSR бит ТС=1);

RIE – разрешает при RIE=1 формирование запроса прерывания при заполнении буфера или переполнении приемника (в регистре SCSR биты RDRF=1 или OR=1);

ILIE – разрешает при ILIE=1 формирование запроса прерывания при поступлении на вход RDI сигнала прекращения обмена (в регистре SCSR бит IDLE=1);

ТЕ – включает (при ТЕ=1) и отключает (при ТЕ=0) передатчик;

RE – включает (при RE=1) и отключает (при RE=0) приемник;

RWU – переводит при RWU=1 приемник в холостой режим, а при RWU=0 разрешает активизацию приемника в соответствии со значением бита WAKE в регистре SCCR1;

SBK – вызывает при SBK=1 выдачу сигнала прекращения обмена (последовательность 0) на выход TDO передатчика. При включении передатчика или приемника выводы PD1, PDO присоединяются, соответственно, к выходу передатчика TDO или входу приемника RDI и не могут служить в качестве входов данных порта D. Если запись значений ТЕ=0 или RE=0 происходит в процессе передачи или приема символа, то отключение передатчика или приемника производится после окончания обмена. При записи бита SBK=0 передатчик посылает 10 или 11 нулей на выход TDO, а затем устанавливает на выходе уровень 1 и начинает передачу символа, если в регистр SCRR загружены данные.

Регистр состояния SCSR (рис. 2.1, в), при обращении к которому производится только считывание, содержит семь признаков, устанавливаемых в процессе приема или передачи данных:

TDRE – признак освобождения буфера передатчика принимает значение TDRE=1 после того, как содержимое регистра SCDR переписывается в выходной сдвиговый регистр для последовательной выдачи на выход TDO;

ТС – признак окончания передачи принимает значение ТС=1 после выдачи последнего бита данных из выходного сдвигового регистра на выход TDO;

RDRF – признак заполнения буфера приемника принимает значение RDRF=1 после того, как данные, поступившие во входной сдвиговый регистр, переписываются в регистр SCDR;

IDLE – признак прекращения обмена принимает значение IDLE=1, если состояние 1 на входе RDI поддерживается более 10 (при М=0) или 11 (при М=1) тактов Tt;

OR – признак переполнения приемника принимает значение OR=1 в случае, когда очередной символ поступает во входной сдвиговый регистр до считывания из буфера SCDR предыдущего символа; содержимое SCDR при этом сохраняется, а вновь поступивший символ пропадает;

NF – признак наличия шумов на линии приема устанавливается в состояние NF=1, если в процессе приема какого-либо бита состояние входа изменяется;

FE – признак нарушения кадра принимает значение FE=1, если длительность стоп-бита оказывается меньше, чем Tt.

Признаки TDRE, ТС, RDRF, IDLE, OR вызывают формирование запроса прерывания АПП, если это разрешено соответствующими битами в регистре SCCR2. При этом подпрограмма обслуживания прерывания должна считать и проанализировать содержимое регистра SCSR, чтобы выяснить причину прерывания и выполнить необходимую процедуру. Запросы, вызванные признаками TDRE, ТС, RDRF, OR, обычно вызывают процедуры пересылки в АПП новых данных для передачи или считывания из АПП принятых данных. Если соответствующие запросы запрещены установкой значения 0 в битах TIE, TCTE, RIE, то прием и передача данных через АПП осуществляется программно с помощью периодического считывания и анализа содержимого SCSR (программный опрос). Обнаружение шумов на линии приема производится путем троекратной проверки значения сигнала на входе RDI в течение времени приема одного бита Tt. Если проверка дает разные значения уровня, то принимается то значение (0 или 1), которое поступило дважды (мажоритарный принцип), а однократное поступление другого значения воспринимается как помеха. В этом случае устанавливается признак наличия шумов NF=1. Признаки NF, FE не вызывают запросов прерывания и должны считываться и анализироваться программным опросом.

Значения признаков TDRE, ТС устанавливаются равными 0, если в режиме передачи выполняется чтение содержимого SCSR после записи данных в регистр SCDR. Значения признаков RDRF, IDLE, OR, NF, FE устанавливаются равными 0, если в режиме приема выполняется чтение содержимого SCSR после чтения данных из регистра SCDR.

Длительность такта передачи Tt=1/Fs определяется частотой импульсов, генерируемых ГСС, которая задается содержимым регистра BRR (рис. 2.1, г). Значение этой частоты определяется выражением Fs=Tt/(Kd x Ks), где Kd, Ks – коэффициенты деления, которые устанавливаются в зависимости от содержимого полей SCP1-0 и SCR2-0 в регистре BRR (табл. 2.1 и 2.2). Благодаря возможности выбора различных значений коэффициентов Kd и Ks реализуется широкий диапазон скоростей обмена данными – от 100 Кбит/с до десятков бит/с.

Таблица 2.1 – Значения коэффи–

циента Kd для АПП

SCR

Значение Kd

1

0

0

0

1

0

1

3

1

0

4

1

1

13

Таблица 2.2 – Значения коэффи–

циента Ks для АПП

SCR

Значения Ks

2

1

0

0

0

0

1

0

0

1

2

0

1

0

4

0

1

1

8

1

0

0

16

1

0

1

32

1

1

0

64

1

1

1

128

2.3

С инхронный последовательный порт (serial peripheral port-SPI) содержит регистр данных SPDR (адрес $ОС), регистр управления SPCR (адрес $ОА) и регистр состояния SPSR (адрес $ОВ). Формат содержимого регистров SPCR, SPSR показан на рис. 2.2.

Рисунок 2.2 – Формат содержимого регистров СПП

Функционирование СПП определяется управляющим кодом, который записывается в регистр SPCR (рис. 2.2, а). При этом СПП микроконтроллера программируется для работы в качестве ведущего, если в регистре SPCR устанавливается значение бита MSTR=1, или ведомого, если значение бита MSTR=0. Ведущий СПП задает частоту синхросигналов обмена, которая равна Fs=Ft/Kd, где коэффициент деления Kd определяется значениями поля SPRI–0 в регистре SPCR (табл. 2.3).

В

Таблица 2.3 – Значения коэффициента

деления Kd для СПП

SPR

Значение Kd

1

0

0

0

2

0

1

4

1

0

16

1

1

32

ключение СПП происходит при установке в регистре SPCR значения бита SPE=1. При этом выводы PD2-5 служат входами-выходами сигналов MISO, MOSI, SCK, SS#, обеспечивающих последовательный обмен, и не могут использоваться в качестве входов данных порта D.

Выводы имеют следующее назначение:

MISO – вход данных для ведущего СПП и выход данных для ведомого СПП;

MOSI – выход данных для ведущего СПП и вход данных для ведомого СПП;

SCK – выход синхросигнала для ведущего СПП и вход синхросигнала для ведомого СПП;

SS# – вход сигнала выбора ведущего-ведомого: на вход ведущего следует подать сигнал SS#=1, на вход ведомого – SS#=0.

Включение выводов ведущего и ведомого СПП показано на рис. 2.3.

Рисунок 2.3 – Включение ведущего и ведомого СПП

В каждом такте обмена производится ввод бита в младший разряд сдвигового регистра ведущего и ведомого СПП и вывод бита из старшего разряда этого регистра. Обмен производится 8-разрядными символами, которые поступают в сдвиговый регистр при записи в регистр SPDR данного порта и считываются при чтении этого регистра. После окончания передачи символа устанавливается признак завершения обмена SPIF=1 в регистре, состояния SPSR (рис. 2.2, б). При этом формируется запрос прерывания СПП, если в регистре SPCR бит разрешения прерывания SPIE имеет значение 1.

В исходном состоянии на выходе SCK ведущего СПП поддерживается постоянный уровень 0, если в регистре SPCR установлено значение бита полярности синхросигналов CPOL=0, или уровень 1, если установлено CPOL=1. Обмен начинается после записи данных в регистр SPDR ведущего СПП. При этом на выход СК ведущего порта начинают поступать синхросигналы, положительный или отрицательный фронт которых определяет начало передачи очередного бита и момент его ввода в принимающий регистр. Выбор активного фронта синхросигнала определяется значением бита фазы синхронизации СРНА, который задает формат передачи данных.

Формат 0. При значении СРНА=0 ведомый СПП выдает на линию MISO старший бит данных из сдвигового регистра после поступления сигнала SS#=0. Если бит CPOL=0, то после начала обмена (записи данных в регистр SPDR ведущего СПП) выдача данных из ведущего и ведомого СПП производится при установке на выходе SCK уровня 0, а ввод поступающих данных в сдвиговые регистры – при установке на выходе SCK уровня 1 (положительный фронт синхросигнала). Если бит CPOL=1, то выдача данных производится при установке уровня 1 на выходе SCK, а ввод – при установке уровня 0 (отрицательный фронт синхросигнала). После передачи символа на вход SS# ведомого СПП необходимо подать уровень 1, а перед началом передачи следующего символа снова установить уровень 0.

Формат 1. При значении СРНА=1 ведущий и ведомый СПП начинают и продолжают выдачу битов одновременно: при поступлении положительного фронта синхросигнала, если бит CPOL=0, или отрицательного фронта, если CPOL=1. Ввод поступающих данных производится при поступлении отрицательного фронта синхросигнала, если бит CPOL=0, или положительного фронта, если CPOL=1. При этом сигнал SS# на входе ведомого СПП может сохранять постоянный уровень 0 между передачами различных символов.

Регистр состояния SPSR (см. рис. 2.2, б), кроме признака окончания обмена SPIF, содержит значения еще двух признаков. Признак ошибки записи WCOL принимает значение 1, если производится попытка записи в регистр SPDR до окончания процесса передачи предыдущего символа. Признак ошибки режима MODF принимает значение 1 при подаче сигнала SS#=0 на вход СПП, запрограммированного как ведущий. В этом случае в регистре SPCR устанавливаются значения битов MSTR=SPE=0, т.е. СПП переводится в режим ведомого и отключается. Если бит SPIE=1, то формируется запрос прерывания СПП, который может быть обслужен микроконтроллером. Содержимое регистра SPSR может быть только считано. Признаки SPIF, WCOL, MODF устанавливаются в 0, когда производится считывание регистра SPSR после загрузки данных в регистр SPDR.

2.4

Таймер. В микроконтроллерах таймер является одним из важнейших периферийных устройств, поскольку при выполнении задач управления очень часто возникает необходимость приема и выдачи управляющих сигналов в заданные моменты времени. Микроконтроллеры семейства МС68НС05 содержат 16-разрядный таймер, который может эффективно использоваться для выполнения указанных функций.

В состав таймера входят 8-разрядные регистры управления TCR (адрес $12) и состояния TSR (адрес $13), 16-разрядные регистр, счетчик TCNTR (адрес $18-19), дополнительный счетчик ACNTR (адрес $1А-1В), регистр захвата ICR (адрес $14-15) и регистр сравнения OCR (адрес $16-17). В 16-разрядных регистрах старший байт имеет младший адрес, младший байт – старший адрес. Форматы регистров TCR, TSR показаны на рис. 2.4.

Рисунок 2.4 – Форматы регистров TCR, TSR

Запуск счетчика TCNTR производится при начальной установке микроконтроллера, после чего его состояние может быть только считано. Частота переключения счетчика равна Ft/4, и длительность его рабочего цикла составляет 262144Тc. Когда счетчик переключается из состояния $FFFF в $0000, признак переполнения в регистре TSR принимает значение TOF=1. При этом формируется запрос прерывания, если в регистре TCR бит разрешения данного запроса имеет значение TDIE=1. Текущее состояние TCNTR дублируется в дополнительном счетчике ACNTR, который также может быть только считан. Отличие в работе TCNTR и ACNTR состоит в том, что при чтении содержимого TCNTR устанавливается значение признака TOF=0, а при чтении содержимого ACNTR признак TOF не изменяет своего значения. Таким образом, можно считать состояние счетчика с сохранением ранее обновленного значения признака переполнения. Если при считывании TCNTR, ACNTR выбирается сначала младший байт, то в регистр А (при выполнении команды LDA) или Х (при выполнении команды LDX) поступает текущее значение этого байта на момент обращения. Если при считывании выбирается сначала старший байт, то младший байт переписывается из счетчика в буферный регистр. При последующем обращении к младшему байту его значение будет выбираться из этого буфера, чтобы получить содержимое счетчика на момент считывания старшего байта.

Таймер может работать в режимах захвата и сравнения. В режиме захвата поступление сигнала на вход ТСАР таймера вызывает запись текущего содержимого счетчика в регистр ICR. При этом в регистре TSR устанавливается значение признака захвата ICF=1, которое вызывает формирование запроса прерывания таймера, если в регистре TCR значение бита разрешения прерывания ICIE=1. Последующее считывание содержимого регистра ICR позволяет определить время поступления сигнала ТСАР. В режиме сравнения производится запись определенного числа в регистр OCR. Когда содержимое счетчика становится равным этому числу, формируется сигнал на выходе ТСМР таймера и устанавливается значение признака совпадения OCF=1 в регистре TSR. Этот признак вызывает формирование запроса прерывания таймера, если в регистре TCR установлено значение бита разрешения этого прерывания OCIE=1.

Регистр управления TCR (см. рис. 2.4, а) содержит биты разрешения прерывания ICIE, OCIE, TDIE, которые разрешают формирование запроса прерывания таймера при установке соответствующих признаков в регистре TSR. Бит IEDG в этом регистре определяет вид сигнала ТСАР, вызывающего захват содержимого счетчика в регистр ICR: если значение IEDG=0, то захват происходит при положительном фронте сигнала, если IEDG=1 – при отрицательном фронте. Бит OLVL задает значение сигнала, устанавливаемого на выходе ТСМР при совпадении содержимого счетчика и регистра OCR: при OLVL=0 устанавливается значение ТСМР=0, при OLVL=1 – значение ТСМР=1.

Регистр состояния TSR (см. рис. 2.4, б) содержит признаки захвата ICF, совпадения OCF, переполнения счетчика TOF, которые принимают нулевые значения при сбросе микроконтроллера в начальное состояние, а при работе таймера могут устанавливаться в 1. Установка нулевых значений этих признаков в процессе работы микроконтроллера происходит только после чтения содержимого регистра TSR. Значение ICF=0 устанавливается при чтении младшего байта регистра ICR, значение OCF=0 – при записи младшего байта в регистр OCR, значение TOF=0 – при чтении младшего байта регистра TCNTR. С помощью команд LDA, LDX можно читать содержимое регистра TSR, но запись в этот регистр запрещена.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]