Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контроллеры PIC фирмы Microchip.doc
Скачиваний:
11
Добавлен:
07.09.2019
Размер:
204.29 Кб
Скачать

1.Организация контроллеров pic фирмы Microchip. Основные данные по микроконтроллерам серии pic18cxx2

  • Набор команд оптимизирован под компилятор языка Си.

  • Исходный код совместим с сериями PIC16CXX и PIC17CXX.

  • Линейная адресация программной памяти до 2 Мбайт.

  • Линейная адресация памяти данных до 4 Кбайт.

  • Производительность до 10 MIPS:

    • входная тактовая частота до 40 МГц (от 4 до 10 МГц; при включенном блоке PLL).

  • 8-разрядные данные и 16-разрядные команды.

  • Приоритетная векторная система прерываний.

  • Аппаратный умножитель 8x8.

Периферийные устройства:

  • Нагрузочная способность вх/вых 25мА;

  • 3 входа внешних прерываний;

  • Таймер 0 (8/16 бит с 8-разрядным предделителем);

  • Таймер 1 (16 разрядов );

  • Таймер 2 (8 разрядов + регистр периода ШИМ);

  • Таймер 3 (16 разрядов) с возможностью использования в качестве источника тактовых импульсов для микроконтроллера.

  • Два модуля ССР конфигурируются следующим образом:

    • вход захвата с разрешением 6,25 не (16 бит);

    • вход сравнения 16 бит с разрешением 100 не;

    • выход ШИМ с разрешением 1...10 бит (156 кГц при 8-разрядном разрешении).

  • Последовательный интерфейс (MSSP) имеет два режима работы:

    • 3-проводный SPI (поддерживает все 4 режима);

    • I2C™ «master» и «slave» режимы.

  • Универсальный синхронно-асинхронный интерфейс USART:

    • поддерживает прерывание по 9-му биту адреса.

  • Параллельный интерфейс «Parallel Slave Port».

  • 10-ти разрядный АЦП.

  • PLVD — программируемый датчик уменьшения напряжения питания.

  • BOR — программируемый сброс по падению напряжения питания.

  • Дополнительные периферийные возможности:

    • Watchdog Timer (WDT), режим SLEEP.

  • Модуль генератора тактовых импульсов имеет умножитель частоты с фазовой автоподстройкой (х4 при использовании кварцевого резо­натора) и возможность переключения на второй источник (32 кГц) тактовых импульсов.

  • Микропотребление и широкий диапазон напряжения питания от 2.5 до 5.5 вольт.

  • Индустриальный и расширенный диапазон рабочих температур.

  • Совместимы по выводам с семейством PIC16CXX и PIC17CXX.

PICmicro

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

Кбайт

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

байт

Количество выводов

PIC18C242

16

512

28

PIC18C252

32

1536

28

PIC18C442

16

512

40

PIC18C452

32

1536

40

1.1.Однокристальные микроЭвм

P IC16C5X производимый Microchip Technology относится к семейству КМОП микроконтроллеров с внутренним ПЗУ, которые отличаются низкой стоимостью, высокой производительностью, 8-битовыми операциями с данными. Они основаны на RISC архитектуре и используют всего 33 команды, шириной в одно слово ПЗУ. Все команды выполняются за один цикл (200нс).

Рис. 9.1. Структура контроллеров PIC16C5x

Разработка на базе контроллеров PIC16C5X поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором и программатором. Существуют все эти средства для IBM PC и совместимых компьютеров.

Серия PIC16C5X подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.). Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает серию PIC16C5X привлекательной даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры.

8 - битовая шина данных соединяет два основных функциональных элемента вместе: набор регистров, который может быть длиной до 80 адресуемых 8-битовых регистров (включая порты) и 8-битное арифметико-логическое устройство. Первые 32 байта ОЗУ адресуются прямо и называются "Банк 0". Если кристалл PICа имеет увеличенную память, то она наращивается банками по 16 байт в каждом. Данные могут адресоваться прямо или косвенно через регистр выбора регистра данных (f4).

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

Все регистры могут быть разделены на две функциональные группы: регистры специальных функций и регистры общего назначения. К регистрам специальных функций относятся: счетчик реального времени или внешних событий (RTCC), программный счетчик (PC), регистр статуса, регистры ввода/вывода, регистр выбора регистра данных(f4), регистр конфигурации и управления предварительным_делителем частоты.

Рис. 9.2. Таймер/счетчик

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

(f0). Переключатель контекста косвенной адресации В кристаллах серии PIC16C5x переключение контекстов не предусмотрено и поэтому (f0) указывает ВСЕГДА только на один регистр -указатель косвенной адресации (f4). Например, при команде ADDWF f0,W, содержимое регистра, адрес которого хранится в (f4) будет добавляться к содержимому регистра W. Так как в серии PIC16C5x (f0) не является регистром физически, то при чтении из него получите 00H, при записи- ничего не произойдет. ПРИМЕЧАНИЕ. У последующих моделей PIC регистр (f0) позволяет переключать контексты косвенной адресации, например при прерываниях. (f1).

Таймер/счетчик. В регистр RTCC можно загрузить данные или считать из него, как из любого другого регистра. Содержимое этого регистра может быть инкрементировано фронтом внешнего сигнала, поступающим на вход RTCC кристалла, или внутренним сигналом синхронизации (CLKOUT=Fosc/4). Для того, чтобы 8-битовый предварительный делитель присоединить к таймеру/счетчику, нужно установить определенным образом PSA бит и биты PS в регистре Option. Регистр Option - это специальный регистр, (у него нет адреса в памяти данных) но к нему можно обратиться при помощи спец."Option" команды. Если предварительный_делитель подключен к таймеру/счетчику (RTCC), любые команды записи в сам RTCC (регистр f1, напр. ClrF1, BSF1,5.. . и т.п.) - очищают его. Бит "RTS" (RTCC signal Source) в регистре Option, определяет источник счетных импульсов, это или внутренний источник или внешний. RTS = 1:

Сигналом синхронизации для таймера/счетчика RTCC или для предварительного делителя, если он подключен к RTCC, является сигнал, поступающий на вывод RTCC корпуса. Значение бита 4 (RTE) в регистре Option определяет, происходит ли счет по заднему фронту (RTE=1) или по переднему фронту (RTE=0) сигнала на выводе RTCC. RTS = 0: Регистр RTCC инкрементируется по сигналу внутренней синхронизации (=Fosc/4). В этом случае значение бита "RTE" в регистре Option и сигнал на выводе RTCC не имеют значения.

Однако вывод RTCC следует подключить к Vdd или к Vss, как удобнее, чтобы случайно не попасть в режим теста и обеспечить корректность в режиме низкого потребления. Пока на таймер/счетчик RTCC поступают синхроимпульсы, (не важно внешние или внутренние, подключен предварительный делитель к RTCC или нет), регистр f1RTCC инкрементируется, когда значение RTCC достигнет "0FFH" - регистр обнуляется, а счет продолжается. Счетные импульсы задерживаются на два командных цикла. Например, после записи информации в RTCC, инкрементирование его произойдет через два командных цикла. Такое происходит со всеми командами, которые производят запись или чтение-модификацию-запись f1 (напр. MOVF f1, CLRF f1). Если RTCC нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF_f1,W.

Устройства серии PIC16C5X имеют большой выбор ПЗУ и ОЗУ разных размеров, разное количество линий ввода/вывода, различные виды возбуждения генераторов, разную скорость, климатику и типы корпусов. Из четырех кристаллов PIC16C5x можно выбрать устройство с подходящими ПЗУ/ОЗУ и конфигурацией ввода/вывода. Устройства с ультрафиолетовым стиранием удобно использовать в прототипных и опытных партиях. Конфигурация генератора ("RC", "XT", "HS", "LP") программируется самим пользователем на UV EPROM.

(f3) Регистр статуса. Регистр (f3) содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора страниц для программ с объемом памяти превышающим 512 слов (PIC16C56/PIC16C57). (f3) доступен для любой команды так же, как любой другой регистр. Однако, биты TO и PD устанавливаются аппаратно и не могут быть записаны в статус программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF_f3 обнулит все биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевое значение (из-за битов TO и PD) f3= 000??100. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса.Биты 5-6 регистра статуса определяются как биты адреса страниц PA0-PA1 программной памяти (только для PIC16C56/PIC16C57 !!!). Когда исполняются команды GOTO, CALL и команды, когда программный счетчик изменяется, например MOVWF_2, биты адреса страниц PA0-PA1 загружаются в биты программного счетчика A9-A10. Таким образом, прямой адрес, указанный в слове команды, указывает на место внутри определенной страницы памяти. Команда RETLW не изменяет биты выбора страниц. После сигнала "Сброс" биты регистра статуса PA0-PA1 обнуляются.

Размещение флагов в регистре статуса f3 следующее:

b7

b6

b5

b4

b3

b2

b1

b0

PA2

PA1

PA0

TO

PD

Z

DC

C

C - Флаг переноса/заема: Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате операции из самого старшего разряда происходит перенос. Вычитание осуществляется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига этот бит всегда загружается из младшего или старшего бита сдвигаемого источника.

DC - Флаг десятичного переноса/заема: Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате операции из четвертого разряда происходит перенос. Механизм установки десятичного бита переноса DC тот же самый, отличается тем, что отслеживается перенос из четвертого бита.

Z - Флаг нулевого результата: Устанавливается, если результатом арифметической или логической операции является ноль.

PD - Power_Down (режим хранения данных) : Устанавливается в "1" при включении питания или команде CLRWDT. Сбрасывается в "0" командой SLEEP.

TO - Time Out. Флаг срабатывания сторожевого таймера: Устанавливается в "1" при включению питания и командами CLRWDT, SLEEP. Сбрасывается в "0" по завершению выдержки времени таймера WDT.

PA0, PA1- Для кристаллов PIC16C54/C55 - это биты общего назначения.

Для PIC16C56: PA0 - Бит выбора страницы

0= Страница 0 (000-1FF)

1= Страница 1 (200-3FF)

PA1 - Бит общего назначения.

Для PIC16C57: PA1,PA0 - оба бита выбора страниц:

00= Страница 0 (000-1FF)

01= Страница 1 (200-3FF)

10= Страница 2 (400-5FF)

11= Страница 3 (600-7FF)

PA2 - Бит общего назначения (зарезервировано для будущих разработок)

(f4). Указатель при косвенной адресации Для PIC16C54/C55/C56: Биты 0-4 регистра (f4) выбирают один из 32 регистров в режиме косвенной адресации, т.е. когда в команде есть обращение к регистру косвенной адресации (f0). Биты 5-7 не используются и всегда читаются как единицы. Если косвенная адресация не используется, регистр f4 может быть использован как 5-ти битовый регистр общего назначения. Для PIC16C57. Биты 5 и 6 регистра (f4) определяют номер текущего банка данных.

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

  1. при исполнении команды "GOTO" в программный счетчик загружаются младшие 9 бит (PC <8:0>). В случае использования PIC16C56 или PIC16C57, в старшие два бита программного счетчика (PC <10:9>) загружаются биты выбора страниц PA1 и PA0 (биты 6,5 регистра статуса). При помощи GOTO можно переместиться в любое место любой страницы.

  2. при исполнении команды "CALL" в программный счетчик загружаются младшие 8 бит, в то время как девятый бит обнуляется. Значение PC, увеличенное на единицу, будет сохранено в стеке. В случае PIC16C56/PIC16C57, в старшие два бита PC (PC <10:9>) загружаются биты выбора страниц PA1,PA0 (биты 6,5 регистра статуса).

  3. команда "RETLW" выгружает в программный счетчик содержимое из вершины стека.

если программный счетчик задействован в команде (напр. MOVWF_2, ADDWF_2, BSF_2,5), то 8 бит результата исполнения команды будут загружены в младшие 8 бит программного счетчика. Девятый бит PC будет обнулен. В случае PIC16C56/PIC16C57, в старшие биты PC<10,9> будут загружены биты выбора страниц PA1,PA0 (биты 6,5 в регистре статуса). Так как девятый бит программного счетчика обнуляется при исполнении команды CALL или команд, записывающих свой результат в PC, то вызов подпрограмм или осуществление вычисляемого перехода ограничены первой половиной страницы программной памяти, т.е. первые 256 адресов. В кристаллах PIC16C5X используется двухуровневый аппаратный стек. Это означает, что он может хранить одновременно не более двух адресов возврата. Команда "CALL" инкрементирует текущее значение программного счетчика и записывает его в стек на уровень 1. При записи на уровень 1 стека его предыдущее значение автоматически записывается на уровень 2. Если вызывается более двух вложенных подпрограмм, то только два последних адреса возврата будут сохранены.

В модификациях PIC16C56/PIC16C57, при исполнении команды "CALL" биты выбора страниц из регистра статуса (f3) загружаются в старшие значащие разряды программного счетчика. Девятый бит всегда обнуляется. Это означает, что подпрограмма всегда должна быть расположена в нижней половине страницы памяти (по адресам 000h...0FFh, 200h...2FFh, 400h...4FFh, 600h...6FFh). Однако, так как стек имеет ту же ширину, что и программный счетчик, то подпрограммы могут вызываться из любого места программы и возврат будет происходить корректно.

При исполнении команды "RETLW" в программный счетчик выгружается содержимое стека первого уровня. Одновременно содержимое стека второго уровня копируется в стек первого уровня. Если исполняются более двух команд "RETLW" друг за другом, в стеке обоих уровней будет записано значение второго уровня. Для модификаций PIC16C56/PIC16C57 возврат из подпрограммы всегда будет на ту страницу, из которой подпрограмма была вызвана, несмотря на текущее значение битов выбора страниц в регистре (f3). Обратите внимание, что в W регистр будет загружаться константа, которая предусмотрена в команде "RETLW" (код возврата у процедуры функции). Это в частности используется для организации таблиц данных в программной памяти.

Организация внутреннего ОЗУ 8 - битовая шина данных соединяет два основных функциональных элемента вместе: набор регистров, который может быть длиной до 80 адресуемых 8-битовых регистров (включая порты) и 8-битное арифметико-логическое устройство. Первые 32 байта ОЗУ адресуются прямо и называются "Банк 0". Если кристалл PICа имеет увеличенную память, то она наращивается банками по 16 байт в каждом. Данные могут адресоваться прямо или косвенно через регистр выбора регистра данных (f4). Непосредственная адресация к константам организуется при помощи специальных команд, которые загружают в рабочий регистр W данные из программной памяти.

Все регистры могут быть разделены на две функциональные группы: регистры специальных функций и регистры общего назначения. К регистрам специальных функций относятся: счетчик реального времени или внешних событий (RTCC), программный счетчик (PC), регистр статуса, регистры ввода/вывода, регистр выбора регистра данных(f4), регистр конфигурации и управления предварительным_делителем частоты. Регистры общего назначения используются для хранения переменных пользователя.