Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
231
Добавлен:
04.01.2020
Размер:
5.37 Mб
Скачать

Эти режимы работы определяются установкой соответствующих битов в 16разрядном регистре конфигурации T1CON.

Рисунок 3.24 – Структурная схема модуля Timer1

В16-разрядном режиме таймера, таймер инкрементируется на каждый цикл инструкций до соответствующего значения, предварительно загруженного

врегистр периода PR1 (рисунок 3.24), а затем сбрасывается в «0» и продолжает считать. Если CPU входит в режим простоя IDLE, таймер может остановить приращение если бит TSIDL = 0 (бит регистра T1CON < 13 >). Если TSIDL = 1, модуль таймера может продолжать последовательность инкрементирования с завершением режима простоя CPU.

Врежиме 16-разрядного синхронного счетчика, таймер инкрементируется по нарастающему фронту внешнего тактового сигнала. Таймер считает до соответствующего значения загруженного в регистр PR1, затем сбрасывается в «0» и продолжает считать. В режиме простоя CPU модуль таймера работает в аналогичном режиме 16-разрядного таймера.

Врежиме 16-разрядного асинхронного счетчика в режиме простоя CPU,

таймер остановит инкрементирование, если бит TSIDL = 1.

Врежиме SLEEP CPU таймер Timer1 работает если:

241

-модуль таймера разрешен (бит регистра T1CON < 15 > TON = 1);

-выбран внешний источник тактирования (бит регистра T1CON < 1 > TCS

=1);

-бит TSYNC регистра T1CON < 2 > переведен в логический 0, который определяет внешний источник тактирования как асинхронный.

Когда все три условие выполнены, таймер продолжает считать до состояния регистра PR1 и, после чего, сброшен состоянием 0х0000. При совпадении состояний регистров TMR1 и PR1 (рисунок 3.24) устанавливается бит T1IF в регистре управления прерываниями IFSO. В этом случае генерируется прерывание, если установлено соответствующий бит разрешения прерывания таймера.

16-разрядный таймер может быть установлен в режим вентильного накопителя времени. Этот режим позволяет внешнему сигналу TCY увеличивать соответствующий таймер, если управляющий входной сигнал T1CK = 1 (в этом случае бит TGATE в регистре T1CON < 6 > должен быть установлен для выбора этого режима; таймер должен быть разрешен (TON = 1) и установлен внутренний источник тактирования (TCS = 0)).

Входной сигнал таймера имеет опции предделителя 1:1, 1:8, 1:64 и 1:256, выбираемые с помощью битов управления TCKPS < 1:0 > регистра T1CON < 5:4 >.

3.4.15 Модули захвата входа микроконтроллеров семейства dsPIC33F

Смотри в [1].

3.4.16 Модуль сравнения выхода микроконтроллеров семейства dsPIC33F

Смотри в [1].

3.4.17 Модуль аналого-цифрового преобразования микроконтроллеров се-

мейства dsPIC33F

МК семейства dsPIC33F могут иметь до 32 аналоговых входов и до двух модулей АЦП, каждый из которых имеет свой собственный набор регистров управления. В частности МК dsPIC33fj32mc204 имеет девять аналоговых входов, обозначаемых

AN0…AN8, и один модуль ADC (от англ. Analog-to-Digital Convertor). Модуль ADC

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

242

стров AD1CОN1…AD1CON3, AD1CHS0, AD1CHS123, AD1PCFGL и AD1CSSL.

Модуль ADC может работать в 10либо 12разрядном режиме. В первом случае скорость преобразования составляет 1,1 MSPS (1,1млн. выборок в секунду), а во втором – 500 KSPS (500 тысяч выборок в секунду). В качестве опорного напряжения может использоваться как напряжение питания МК, так и напряжение, подаваемое на специальные входы VBEF+ и VBEF- . Модуль ADC может работать, пока устройство находится в режимах SLEEP и IDLE.

Регистры ADCON1, ADCON2 и ADCON3 управляют работой модуля ADC. Регистры AD1CHS0 и AD1CHS123 выбирают, какие входные каналы будут преобразованы. Регистр AD1PCFGL конфигурирует выводы порта, как аналоговые выводы или как цифровой ввод/вывод. Регистр AD1CSSL выбирает входы для сканирования.

Структурная схема модуля ADC МК dsPIC33fj32mc204 представлена на рисунке 3.27

Входы аналоговых сигналов AN0…AN8 через специальный мультиплексор Input MUX Control (рисунок 3.27) подключаются к четырем устройствам выборки и хранения S/H (от англ. Sample-and-Hold). Входной мультиплексор имеет два набора входов выборки: MUX A и MUX B. Если бит ALTS (AD1CON2 < 0 >) = 0, то только входы MUX A выбраны для осуществления выборки. Если же бит ALTS = 1 и биты SMPI < 3:0 > (AD1CON2 < 5:2 >) = 0000, то на первой последовательности выборка/ преобразование выбраны входы MUX A, а на последующей – MUX В.

Биты CHPS < 1:0 > (AD1CON2 < 9:8 >) определяют сколько каналов производят выборку (1,2 или 4 канала). Если биты CHPS < 1:0 > = 00, то для преобразования выбирается один канал CH0 (от англ. Channel 0). Если биты CHPS < 1:0 > = 01, то выбирается два канала СН0 и СН1. Если биты CHPS < 1:0 > = 10 или 11, то выбирается четыре канала СН0, СН1, СН2 и СН3.

Преобразование аналогового сигнала в цифровой код начинается с момента подключения одного из входов модуля ADC к источнику сигнала. Это подключение осуществляется путем установки бита SAMP регистра управления AD1CON1 < 1 >. Устройство выборки-хранения представляет собой матрицу конденсаторов, которые заряжаются напряжением входного сигнала в течение определенного интервала времени (время выборки). Интервал выборки задается программным способом в регистре управления AD1CON3 (биты SAMC < 4:0 >).

По завершению этапа выборки источник входного аналогового сигнала отключается от устройства выборки-хранения, и начинается процесс преобразо-

243

вания в ADC1 (рисунок 3.27) накопленного на матрице конденсаторов заряда в цифровой код. Для данного этапа предусмотрен ряд режимов, позволяющих

Рисунок 3.27 – Структурная схема модуля аналого-цифрового преобразования МК dsPIC33fj32mc204

244

управлять процессом преобразования вручную или автоматически (бит ASAM

регистра AD1CON1 < 2 >).

На этапе преобразования каждый бит результата выдается по отдельному синхронизирующему импульсу. Для 10-разрядного преобразования требуется 10 импульсов синхронизации плюс два дополнительных импульса, т. е. всего 12 ТAD. Период таких импульсов выбирается программно путем установки битов ADCS < 5:0 > (AD1CON3 < 5:0 >), об окончании преобразования свидетельствует либо установленный бит DONE в регистре управления AD1CON1 < 0 >, либо установленный флаг прерывания ADC.

По завершении преобразования 10-разрядный цифровой код результата помещается в один из 16-разрядных регистров выходного буфера (16-bit ADC Output Buffer), который представляет собой двухпортовое ОЗУ на 16 значений. Результат 10-разрядного преобразования при считывании из буфера может быть преобразован в четыре различных 16-разрядных формата представления данных.

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

Выбор 12-разрядного режима преобразования осуществляется путем установки бита AD12B регистра управления AD1CON1 < 10 >, при этом используется только одно устройство выборки-хранения.

3.4.18 Коммуникационные интерфейсы микроконтроллеров семейства dsPIC33F

Модуль UART. Универсальный асинхронный приемо-передатчик UART

(от англ. Universal Asynchronous Receiver Transmitter) – один из модулей для последовательного ввода/вывода данных. Модуль UART полнодуплексная асинхронная система для связи МК с периферийными устройствами, которые поддерживают протоколы обмена RS-232, RS-485. МК dsPIC33F имеют два модуля UART. Основные особенности модуля UART:

-полнодуплексный 8- и 9-разрядный обмен;

-возможность передачи и приема бита четности при 8-разрядном обмене;

-один или два стоповых бита;

-собственный генератор с 16-разрядным предделителем;

-четырехуровневый буфер FIFO приемника и четырехуровневый буфер FIFO передатчика;

245

-детектирование ошибок четности, переполнения буфера и ошибки формата кадра;

-аппаратная поддержка автоподстройки скорости обмена;

-раздельные векторы прерываний для всех ошибок модуля UART;

-возможность аппаратного управления потоком.

Модуль SPI. Модуль UART МК dsPIC33F не поддерживает режим синхронного обмена. Для реализации этой функции рекомендуется использовать модуль SPI (от англ. Serial Peripheral Interface). МК dsPIC33F имеют два моду-

ля SPI. Основные характеристики модуля SPI:

-8- и 16-разрядные режимы обмена;

-режимы работы «ведущий» и «ведомый»;

-выбор активного уровня на линии тактирования. Выбор уровня на линии тактирования в режиме ожидания;

-генератор линии тактирования с двумя предделителями;

-фреймовый режим обмена, что позволяет подключать к модулю современные АЦП и голосовые кодеки.

В тракте передачи с одним ведущим и одним ведомым модулем используются три линии: две сигнальные и третья для синхросигналов.

Модуль I2C. Модуль I2C (от англ. Inter Integrated Circuits) поддерживает синхронный последовательный обмен с использованием всего двух линий, что обеспечивается передачей адреса устройства в составе посылки, т. е. аппаратное упрощение приобретается за счет снижения скорости обмена. По одной двунаправленной линии передается информация, а по другой – синхросигналы

от ведущего модуля.

Основные характеристики модуля I2C:

-полная поддержка следующих режимов: «ведомый», «ведущий с одним мастером на шине», «ведущий с несколькими мастерами на шине, с возможностью детектирования коллизий и арбитражем»;

-поддержка 7- и 10-разрядной адресации;

-работа в режиме повторителя – прием всех сообщений вне зависимости от значения поля адреса;

-прерывание при совпадении принятого адреса с заданной 10-разрядной маской может использоваться для вывода МК из режима IDLE.

3.4.19Режимы адресации микроконтроллеров семейства dsPIC33F

Инструкции МК dsPIC33F могут быть регистровыми и адресными. Основное различие между этими типами инструкций состоит в том, что регистровые инструкции модифицируют содержимое регистров, в то время как адресные

246

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

Прямая регистровая адресация используется для доступа к содержимому 16 рабочих регистров W0…W15, причем обращение возможно как к целому слову (16 бит), так и к байту.

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

Рассмотрим примеры применения различных методов адресации.

Пример 3.6. Прямая адресация, адрес операнда указывается непосредственно в операционном слове инструкции. Операнд должен быть расположен в области Near Data Space (первые 8 Кбайт ОЗУ):

ADD 0x0900, W0 ; Сложение значения по адресу 0x0900 с W0. ; Результат сохраняется в W0.

Пример 3.7. Расширенный режим инструкции MOV– прямая адресация, но может адресоваться вся память ОЗУ:

MOV 0x2500, W7 ; Сохранение значения по адресу 0x2500 ; в регистр W7.

Пример 3.8. Прямая регистровая адресация. В качестве операндов используются значения рабочих регистров:

IOR W0, W2, W5 ; Поразрядное логическое ИЛИ регистров

; W0 и W2, сохранение результата в W5.

Пример 3.9. Косвенная адресация – может использоваться в большинстве инструкций:

ADD W4, [W5], [W6] ; Сложение W4 со словом по указателю W5, ; сохранение результата по указателю W6.

247

Пример 3.10. Косвенная адресация с пре/пост инкрементом и декрементом, при этом учитываются правила адресной арифметики в зависимости от типа операнда (байт или слово):

MOV [++W0], [W1- -] ; Увеличение указателя W0 на 2,

;перемещение значения по указателю W0

;в ячейку, на которую указывает W1,

;уменьшение указателя W1 на 2.

Пример 3.11. Косвенная адресация со смещением:

MOV [W4 + W5], [W6++] ; Получение указателя на ячейку операнда,

;путем сложения W4 и W5, перемещение

;значения по полученному указателю по

;адресу W6, увеличение значения W6 на 2.

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

3.4.20 Система команд микроконтроллеров семейства dsPIC33F

Семейство dsPIC33F имеет 83 инструкции (включая инструкции D P- ядра). Почти все инструкции выполняются за один командный цикл. В зависимости от типа операндов, инструкции могут быть слово-, байтлибо биториентированными. Большинство слово- и байт-ориентированных инструкций являются трехоперандными (типа A = B + C). Большинство биториентированных инструкций имеют два операнда.

Условные обозначения, принятые в системе команд МК dsPIC33F, приведены в таблице 3.8, а система команд – в таблице 3.9.

248

Таблица 3.8 – Символы используемые в системе команд микроконтроллеров dsPIC33F

Область

Описание

1

2

#text

Означает литерал определѐнный как «текст»

(text)

Означает «содержимое текста»

[text]

Означает «позицию адресованную текстом»

{ }

Необязательное поле или операция

<n:m>

Битовая область регистра

.b

Выбор байтного режима

.d

Выбор режима двойного слова

.S

Выбор теневого регистра

.w

Выбор словного режима (по умолчанию)

Acc

Один из двух аккумуляторов {A, B}

AWB

Аккумулятор обратной записи назначения адреса регистра

 

{W13, [W13] + = 2}

bit4

4-разрядное поле выбора бита (используется в инструкциях ад-

 

ресации слова) {0...15}

C, DC, N, OV,

Биты состояния MCU: (C) перенос, (DC) частичный перенос,

Z

(N) отрицательный результат, (OV) переполнение, (Z) нуль

Expr

Абсолютный адрес, метка или выражение (решенный компо-

 

новщиком)

f

Адрес файлового регистра {0x0000...0x1FFF}

lit1

1-битный беззнаковый литерал {0,1}

lit4

4- битный беззнаковый литерал {0...15}

lit5

5- битный беззнаковый литерал {0...31}

lit8

8- битный беззнаковый литерал {0...255}

lit10

10битный беззнаковый литерал {0...255} для байтного ре-

 

жима, {0:1023} для словного режима

lit14

14битный беззнаковый литерал {0...16384}

lit16

16битный беззнаковый литерал {0...65535}

lit23

23битный беззнаковый литерал {0...8388608};

 

LSB must be 0

 

 

None

Поле не требует ввода, может быть пустым

OA, OB, SA,

Биты состояния D P: ACCA переполнение, ACCB переполне-

SB

ние, ACCA насыщение, ACCB насыщение

PC

Программный счетчик

 

 

Slit10

10-битный знаковый литерал {-512…511}

Slit16

16-битный знаковый литерал {-32768…32767}

 

 

Slit6

6-битный знаковый литерал {-16…16}

Wb

Основной W регистр {W0..W15}

 

 

249

Окончание таблицы 3.8

1

2

 

Wd

Регистр W места назначения {Wd, [Wd], [Wd++], [Wd--],

 

 

[++Wd], [--Wd]}

 

Wdo

Регистр W места назначения {Wnd, [Wnd], [Wnd++], [Wnd--],

 

[++Wnd], [--Wnd], [Wnd+Wb]}

 

Wm,Wn

Рабочая регистровая пара делимого и делителя (прямая адреса-

 

ция)

 

Wm*Wm

Рабочая регистровая пара множимого и множителя для квад-

 

ратных инструкций

 

 

{W4 * W4,W5 * W5,W6 * W6,W7 * W7}

 

Wm*Wn

Рабочая регистровая пара множимого и множителя для D P ин-

 

струкций

 

 

{W4 * W5,W4 * W6,W4 * W7,W5 * W6,W5 * W7,W6 * W7}

Wn

Один из 16 рабочих регистров {W0..W15}

 

Wnd

Один из 16 рабочих регистров места назначения

 

 

{W0..W15}

 

Wns

Один из 16 рабочих регистров источников {W0..W15}

 

WREG

W0 (рабочий регистр используемый в инструкциях файловых

 

регистров)

 

Ws

Регистр источник W {Ws, [Ws], [Ws++], [Ws--], [++Ws],

 

 

[--Ws]}

 

Wso

Регистр источник W {Wns, [Wns], [Wns++], [Wns--], [++Wns],

 

[--Wns], [Wns+Wb]}

 

Wx

Пространство данных Х инструкций упреждающей выборки

 

адреса регистра для DSP {[W8] + = 6, [W8] + = 4, [W8] + = 2,

 

[W8], [W8] - = 6, [W8] - = 4, [W8] - = 2, [W9] + = 6, [W9] + = 4,

 

[W9] + = 2, [W9], [W9] - = 6, [W9] - = 4, [W9] - = 2,

 

 

[W9 + W12], none}

 

Wxd

Пространство данных Х инструкций упреждающей выборки

 

назначения для DSP {W4..W7}

 

Wy

Пространство данных Y инструкций упреждающей выборки

 

адреса регистра для DSP {[W10] + = 6, [W10] + = 4,

 

 

[W10] + = 2, [W10], [W10] - = 6, [W10] - = 4, [W10] - = 2,

 

 

[W11] + = 6, [W11] + = 4, [W11] + = 2, [W11], [W11] - = 6, [W11]

 

- = 4, [W11] - = 2, [W11 + W12], none}

 

Wyd

Пространство данных Y инструкций упреждающей выборки

 

назначения для DSP {W4..W7}

 

250