Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОМТ Рекомендуется к прочтению К 5 задаче.docx
Скачиваний:
3
Добавлен:
06.03.2016
Размер:
54.21 Кб
Скачать

МОТОРОЛЛА

ПОРТЫ

В регистры DDRx вводится управляющий код, программирующий направление передачи для каждого вывода порта: если i-ый бит DDRxi имеет значение 0, то соответствующий вывод порта PTxi является входом, если DDRxi = 1 - то выходом. В процессе начального запуска микроконтроллера в регистрах DDRx устанавливается нулевое значение всех битов, т.е. в исходном состоянии порты запрограммированы на выполнение ввода данных. Обращение к портам производится с помощью команд LDA, LDX и STA, STX. При выполнении команд STA, STX содержимое регистра A или X записывается в регистр PTx адресуемого порта. Если все или часть выводов порта запрограммированы в качестве выходов, то соответствующие разряды содержимого PTx поступают на эти выводы порта. При выполнении команд LDA, LDX производится считывание в регистр A или X данных, поступающих на выводы порта, которые запрограммированы на работу в качестве входов. Если же все или часть выводов данного порта запрограммированы как входы, то считывается содержимое соответствующих разрядов регистра данных PTx. Таким образом, регистры PTx могут использоваться для временного хранения данных.

АЦП

Модуль аналого-цифрового преобразователя ADC08. В состав микроконтроллеров MC68HC908GP32 входит модуль 8-разрядного аналого-цифрового преобразователя ADC08, который содержит входной мультиплексер, выбирающий один из 8 входов аналоговых сигналов, АЦП, работающий по принципу последовательного приближения, регистр управления-состояния ADSCR, регистр управления тактированием ADCLK и регистр результата ADR.

Функционирование АЦП определяется содержимым регистр ADSCR, который содержит следующие биты (рис. 10,а):

COCO – признак окончания преобразования 1 (доступен только для чтения), принимает значение COCO = 1 после выполнения очередного цикла преобразования, если установлено значение бита AIEN=0;

AIEN – разрешает при значении AIEN = 1 формирование запроса прерывания после каждого цикла преобразования;

ADCO – определяет режим работы АЦП: однократное преобразование при значении ADCO = 0, непрерывная работа преобразователя при ADCO = 1;

ADCH4-0 - осуществляют выбор аналогового входа в соответствии с табл. 24 или выключение модуля ADC08 при установке значения ADCH4-0 = 11111.

7

6

5

4

3

2

1

0

COCO

AIEN

ADCO

ADCH4

ADCH3

ADCH2

ADCH1

ADCH0

а). ADSR (адрес $003C)

7

6

5

4

3

2

1

0

ADIV2

ADIV1

ADIV0

ADICLK

0

0

0

0

б). ADCLK (адрес $003E)

Рис. 10. Формат содержимого регистров ADSCR (а) и ADCLK (б) модуля ADC08

Запуск АЦП производится при выборе необходимого аналогового входа путем записи соответствующего значения битов ADCH4-0 в регистр ADSСR. В процессе работы АЦП принимает потенциал, установленный на выбранном входе ADi, и формирует 8-разрядное число, соответствующее величине этого потенциала, которое записывается в регистр результата ADR (адрес $003D). Считывание результата в регистр A или X для последующей обработки производится командой LDA или LDX.

Поступающий на аналоговый вход потенциал Vвх должен находиться в диапазоне Vr>Vвх>0, где Vrf – величина опорного потенциала, который в микроконтроллерах MC68HC908GP32 равен Vап - напряжению питания АЦП, для подключения которого используются отдельные выводы аналогового питания и “земли”. Между этими выводами обязательно следует включить высокочастотный керамический конденсатор для фильтрации помех. При значении Vrf = Vап = 5 В разрешающая способность АЦП составляет около 20 мВ, а погрешность преобразования 10 мВ.

При установке соответствующих значений битов ADCH4-0 производится измерение потенциала Vrf или потенциала на входе аналоговой «земли» (табл. 9). Такое измерение выполняется для контроля значений этих потенциалов.

Таблица 9. Выбор аналоговых входов модуля ADC08

ADCH4-0

Аналоговый вход

ADCH4-0

Аналоговый вход

00000

AD0 (PTB0)

00101

AD10 (PTD2/PTD1**)

00001

AD1 (PTB1)

00110

AD11 (PTD3/PTD0**)

00010

AD2 (PTB2)

00111

AD12 (PTD4)

00011

AD3 (PDTB)

01000

AD13 (PTD5)

00100

AD4 (PTB4)

01001

AD14 (PTD6)

00101

AD5 (PTB5)

01010-11100

Не используются

00110

AD6 (PTB6)

11101

Потенциал Vrf

00111

AD7 (PTB7)

11110

Аналоговая «земля»

01000

AD8 (PTD0/PTD3*)

11111

Отключение АЦП

01001

AD9 (PTD1/PTD2*)

В зависимости от значения бита ADCO в регистре ADSCR (рис. 18,а), обеспечиваются следующие режимы работы АЦП:

  • режим однократного преобразования (ADCO = 0), при котором АЦП автоматически выключается (в регистре ADSCR устанавливается значение битов ADCH4-0 = 11111) после выполнения очередного преобразования и записи результата в регистр ADR;

  • режим непрерывного преобразования (ADCO = 1), при котором АЦП продолжает многократно выполнять преобразования и выдавать значения потенциала на выбранном аналоговом входе до записи в регистр ADSCR нового содержимого.

При любом режиме работы после выполнения очередного цикла преобразования модуль ADC08 выдает запрос прерывания, если в регистре ADSCR установлено значение бита AIEN = 1. При этом производится обращение к вектору, который размещается в таблице векторов прерываний по адресу $FFDE-DF.

Если прерывания по запросу АЦП запрещены (бит AIEN=0), то после каждого цикла преобразования в регистре ADSCR устанавливается значение признака COCO = 1. В этом случае процессор должен производить программный опрос признака COCO и выполнять считывание результата из регистра ADR, если COCO = 1. Сброс COCO в состояние 0 производится автоматически после чтения содержимого регистра ADR или после записи нового значения в регистр ADSCR.

В состав модуля ADC08 входит схема тактирования, работающая под управлением регистра ADCLK, который содержит следующие биты (рис. 10,б):

ADICLK – определяет выбор сигналов для тактирования АЦП: тактовые импульсы с частотой Ft при установке значения ADICLK = 1 или импульсы с частотой кварцевого резонатора Fq при ADICLK = 0;

ADV2-0 – задает коэффициент деления частоты Ka при формировании тактовых сигналов АЦП (табл. 10).

Таблица 10. Коэффициент деления частоты Ka для модуля ADC08

ADIV2-0

Ka

000

1

001

2

010

4

011

8

1xx

16

Для получения необходимой точности АЦП должен тактироваться импульсами с частотой Fa = (0,5…1) МГц, причем оптимальным является значение Fa, близкое к 1МГц. Эта частота обеспечивается путем деления тактовой частоты Ft (при значении бита ADICLK = 1) или частоты кварцевого резонатора Fq (при значении бита ADICLK = 0). Необходимое значение коэффициента деления Ka=Ft/Fa или Fq/Fa задается установкой битов ADV2-0 в регистре ADCLK (табл. 10). Нормальная работа АЦП обеспечивается при значениях частоты Ft или Fq не менее 1 МГц.

Для выполнения одного цикла преобразования требуется 17 тактов, поэтому время преобразования составляет около 17 мкс при значении Fa=1 МГц.

Сторожевой таймер

Все микроконтроллеры семейства 68HC08/908 содержат сторожевой таймер COP08 (Computer Operating Properly – 08), с помощью которого производится контроль выполнения текущей программы. При работе сторожевого таймера COP08 программа должна периодически производить запись произвольного байта в регистр управления COPCTL. Этот регистр имеет адрес $FFFF (совпадает с адресом младшего байта вектора запуска) и доступен только для записи (при чтении будет считан младший байт вектора запуска). Если запись в регистр COPCTL не будет произведена в течение определенного периода времени Tw, то сторожевой таймер вызывает перезапуск микроконтроллера . Таким образом, при работе модуля COP08 текущая программа будет выполняться только в том случае, если она будет производить запись в регистр COPTL не реже одного раза за время Tw. Такую запись удобно производить с помощью команды STA $FFFF, которая должна быть включена в текст программы и периодически выполняться.

Сторожевой таймер реализован в виде 18-разрядного счетчика, который образован путем последовательного соединения 12-разрядного счетчика, входящего в состав модуля SIM08, и 6-разрядного счетчика в модуле COP08. Переключение счетчика производится сигналами с частотой кварцевого резонатора Fq. При записи произвольного байта в регистр COPTL старшие разряды счетчика (с 5-го по 18-ый) сбрасываются в 0. Если такого сброса не происходит, то при переполнении счетчика формируется сигнал, вызывающий начальный запуск микроконтроллера.

Включение сторожевого таймера производится при установке значения бита COPD = 0 в регистре конфигурации CONFIG1 (рис. 19,а). При этом бит COPRS в регистре CONFIG1 задает разрядность используемого счетчика: 18 разрядов (полная разрядность) при значении COPRS = 0; 13 разрядов (сокращенная разрядность) при COPRS = 1. В зависимости от значения этого бита устанавливается период срабатывания сторожевого таймера Tw, которое определяется моментом переполнения 18- или 13-разрядного счетчика:

Tw = (2*18 – 2*4)/Fq = 262128Tq при установке значения COPRS =0,

Tw = (2*13 – 2*4)/Fq = 8176Tq при установке значения COPRS=1.

Таким образом, при использовании кварца с резонансной частотой Fq = 4 МГц период срабатывания сторожевого таймера составит Tw = 65,5 мс или 2,04 мс.

В режиме ожидания модуль COP08 продолжает свою работу и может вызвать переход микроконтроллера в рабочий режим (запуск) по истечении времени Tw или ранее (в зависимости от содержимого счетчика при поступлении команды WAIT). Если перед выполнением команды WAIT произвести сброс сторожевого таймера, то спустя время Tw произойдет выход из режима ожидания путем запуска микроконтроллера.

В режиме останова модуль COP08 прекращает работу, но сохраняет свое состояние. После выхода из этого режима возможно срабатывание сторожевого таймера через промежуток времени существенно меньший, чем заданное значение Tw. Поэтому целесообразно производить сброс сторожевого таймера непоcредственно перед выполнением команды STOP, переводящей микроконтроллер в режим останова.

АВр АВР АВР

Таймер

5 Таймеры/счетчики т0 и т2

Восьмиразрядный таймер/счетчик Т0 присутствует во всех моделях микроконтроллеров семейства Mega, а таймер/счетчик Т2 — во всех, кроме ATmega85l5x. Всего в микроконтроллерах семейства реализовано три ис­полнения восьмиразрядных таймеров/счетчиков, отличающихся набором выполняемых функций. В состав таймеров/счетчиков первого исполнения (Т0 в модели ATmega8x) входят два регистра ввода/вывода: счетный регистр TCNT0 и регистр управления TCCR0. В состав тайме­ров/счетчиков второго исполнения (в используемом в стенде МК отсутствует такое исполнение) входят уже 3 регистра ввода/вывода: счетный регистр TCNT0 (TCNT2), регистр управления TCCR0 (TCCR2) и регистр сравнения OCR0 (OCR2). В третьем исполнении (Т2 в модели ATmega8x) добавляет­ся регистр ASSR, служащий для управления модулем таймера/счетчика в асинхронном режиме. Таким образом, таймер/счетчик Т0 в ATmega8 (1-ое исполнение) выполняет функции восьмиразрядного счетчика и счетчика внешних событий, а таймер/счетчик Т2 (3-е исполнение) – восьмиразрядного счетчика, ШИМ, формирователя сигналов, часов реального времени.

Количество прерываний, которые могут генерировать таймеры/счетчи­ки Т0 и Т2, также зависит от исполнения. Таймер/счетчик Т0 первого ис­полнения может генерировать прерывание только при переполнении счет­ного регистра. В таймерах/счетчиках второго и третьего исполнения прерывание может генерироваться также при равенстве счетного регистра и регистра сравнения. Флаги обоих прерываний находятся в регистре TIFR, а разрешение/запрещение этих прерываний осуществляется установкой/сбросом соответствующих флагов регистра TIMSK.

Счетный регистр таймера/счетчика TCNT0 (TCNT2) входит в состав основного блока модуля — блока реверсивного счетчика. В зависимости от режима работы модуля содержимое счетного регистра сбрасывается, инкрементируется или декрементируется по каждому импульсу тактового сигнала таймера/счетчика clkТ0 (clkТ2). Независимо от того, присутствует тактовый сигнал или нет, регистр доступен в любой момент времени как для чтения, так и для записи. Однако следует помнить, что любая операция записи в счетный регистр блокирует работу блока сравнения на время одного периода тактового сигнала таймера/счетчика. После подачи напряжения питания в регистре TCNT0 (TCNT2) находится нулевое значение. При некоторых изменениях состояния таймера/счетчика, определяемых режимом его работы, устанавливается флаг TOV0 (TOV2) регистра TIFR. Разрешение прерывания осуществляется установкой в «1» разряда TOIE0 (TOIE2) регистра TIMSK (разумеется, флаг I регистра SREG также должен быть установлен в «1»).

Регистр сравнения OCR0 (OCR2) входит в состав блока сравнения модуля. Во время работы таймера/счетчика производится непрерывное (в каж­дом машинном цикле) сравнение этого регистра с регистром TCNT0 (TCNT2). В случае равенства содержимого этих регистров в следующем ма­шинном цикле устанавливается флаг OCF0 (OCF2) регистра TIFR и генери­руется прерывание (если оно разрешено). Кроме того, при наступлении это­го события может изменяться состояние вывода ОС0 (ОС1) микроконтроллера. Чтобы таймер/счетчик мог управлять состоянием выво­да ОС0 (ОС2), он должен быть сконфигурирован как выходной (соответст­вующий разряд регистра DDRх должен быть установлен в «1»).

Регистр TCCR0 (TCCR2) предназначен дли управлении модулем таймера/счетчика. Формат этого регистра приведен на рисунке 1.2, а описание его разрядов в таблице ниже.

7 6 5 4 3 2 1 0

-

-

-

-

-

CS02

CS01

CS00

Read/Write R R R R R R/W R/W R/W

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