Научная статья на тему 'Новое Расширенное ядро PIC18 микроконтроллеров компании Microchip'

Новое Расширенное ядро PIC18 микроконтроллеров компании Microchip Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
281
91
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Афанасьев Илья

Компания Microchip модернизировала ядро PIC18 в соответствии с современными требованиями, создав усовершенствованное ядро EGG (Extended Gold Gate) с новыми инструкциями, расширяющими функциональность ядра.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Новое Расширенное ядро PIC18 микроконтроллеров компании Microchip»

Компоненты и технологии, № 6'2004

Новое расширенное ядро PIC18

микроконтроллеров компании Microchip

Компания Microchip модернизировала ядро PIC18 в соответствии с современными требованиями, создав усовершенствованное ядро EGG (Extended Gold Gate) с новыми инструкциями, расширяющими функциональность ядра.

Илья Афанасьев

[email protected]

КС Я м

омпания Microchip Technology Inc. на протяжении нескольких лет с успехом производит мощные Flash-микроконтроллеры семейства PIC18 с тактовой частотой до 40 МГц, аппаратным умножителем 8x8 за один такт и широким набором периферийных модулей: многоканальный 10-разрядный АЦП, ШИМ, интерфейсы I2C, SPI, USART, LIN, CAN2.0B. Система команд микроконтроллеров PIC18 изначально разрабатывалась для эффективного использования языка высокого уровня С. Однако, проанализировав современные требования и оптимальное взаимодействие с компиляторами, компания Microchip модернизировала ядро PIC18, и теперь новые микроконтроллеры имеют усовершенствованное ядро EGG (Extended Gold Gate).

Новые контроллеры поддерживают все 75 стандартных команд ядра PIC18, а также 8 новых дополнительных команд и расширение адресации в стандартных командах для оптимизации реализации рекурсивных функций и работы с программным стеком.

Стандартное ядро PIC18 добавляет много расширенных возможностей по сравнению с младшим семейством микроконтроллеров PICmicro (PIC12, PIC16), в то же время обеспечивая легкость перехода снизу вверх. Большинство команд занимает одно программное слово (16 бит) за исключением четырех команд, которые требуют два слова программной памяти.

Каждая однословная команда делится на код операции (opcode), который определяется типом инструкции, и один или несколько операндов, которые определяют действие команды.

Система команд сгруппирована в четыре основные категории:

• байт-ориентированные команды;

• бит-ориентированные команды;

• команды, работающие с константами;

• управляющие команды.

Расширение системы команд

Дополнительно к стандартным 75 инструкциям ядра PIC18 новые микроконтроллеры поддерживают команды, расширяющие функциональность ядра. Дополнительные восемь инструкций пополняют операции с косвенной и индексной адресацией,

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

Расширенные команды можно классифицировать как команды с константами, которые работают с регистрами общего назначения или используются для индексной адресации. Список новых инструкций приведен в таблице 1. Две из инструкций ADDFSR и SUBFSR имеют специальное расширение для работы с регистром косвенной адресации FSR2. Эти команды (ADDULNK и SUBLNK) позволяют производить автоматический выход из подпрограммы (return) после выполнения. Расширенные инструкции предназначены для улучшения оптимизации и возможности создания реентерабельного кода (то есть построения рекурсивных алгоритмов или использования программного стека) на языках высокого уровня, например на С. Наряду с прочим, расширение системы команд позволяет пользователю работать с языками высокого уровня для эффективного выполнения таких операций над данными, как, например:

• автоматическое размещение и освобождение области программного стека при входе и выходе из подпрограмм;

• вызов функции по указателю;

Компоненты и технологии, № 6'2004

Таблица 1. Список новых инструкций ядра RIG18

Команда Описание действия

ADDFSR f, k Добавить константу к регистру указателя адреса

ADDULNKk Добавить константу к регистру указателя адреса РБк2 и выйти

GALLW Вызов функции по значению WREG

MOVSF zs, fd Копирование содержимого (FSR2 + і5) в регистр ^

MOVSS zs, zd Копирование (FSR2 + і5) в (FSR2 + ^)

RUSHLk Сохранение значения к в РSR2/ декремент FSR2

SUBFSR f, k Вычитание константы из FSR(f)

SUBULNKk Вычитание константы из FSR2 и выход

манипулирование с указателями на программный стек;

работа с переменными, расположенными в программном стеке.

Пример 1:

Команда : CALLW.

Действие: (PC + 2) ^ TOS, (W) ^ PCL, (PCLATH) ^ PCH, (PCLATU) ^ PCU.

Адрес возврата (PC + 2) помещается в стек возврата. Содержимое рабочего регистра W записывается в программный счетчик PCL, а содержимое PCLATH и PCLATU переписываются в PCH и PCU. Пример использования (вызов функции по указателю):

movff HIGH ptr, PCLATH ; загрузка адреса указателя movf LOW ptr, w

callw ; вызов подпрограммы по указателю

Синтаксис расширенных команд

Большинство расширенных команд работает с индексными параметрами, используя один из регистров (регистр указателя адреса при косвенной адресации) и некоторое смещение, чтобы определить регистр адресата или источник. Когда аргумент для команды служит частью индексной адресации, он помещается в квадратные скобки. Это сделано, чтобы указать, что параметр используется как индекс или сдвиг. Если индекс или значение смещения не заключены в скобки, то ассемблер МРЛ8М™ укажет на ошибку. Когда разрешен расширенный набор команд, скобки также используются, чтобы указать индексные параметры в байт-ориентирован-ных и бит-ориентированных командах.

Пример 2:

Команда: MOVSF [Zs], fd.

Действие: ((FSR2) + Zs) ^ fd.

Содержимое регистра, накоторый указывает (FSR2 + Zs), пересылается в fd.

Пример использования:

MOVSF [offset], REG2

Пример З:

Команда: MOVSS [Zs], [Zd].

Действие: ((FSR2) + Zs) ^ ((FSR2) + Zd).

Содержимое регистра, накоторый указывает (FSR2 + Zs), пересылается в (FSR2 + Zd).

Пример использования:

MOVSS [offset1], [offset2]

Бит-ориентированные и байт-ориентированные команды в режиме индексной адресации со смещением

В дополнение к восьми новым командам в расширенном наборе добавлена индексная адресация со смещением в стандартных

байт- и бит-ориентированных командах. В зависимости от вида написания команды ее интерпретация ассемблером будет различна.

Если расширенный набор запрещен, то адрес f в команде указывает на буквальное местоположение в памяти в зависимости от значения параметра а: при а = 0 — в Access Bank, при а = 1 — в банке GPR (адрес которого определен в BSR).

Если же расширенный набор команд разрешен, то адрес интерпретируется либо как в стандартном режиме работы ядра PIC18, либо как смещение от значения указателя в FSR2. Если нужно указать значение смещения, то это смешение должно быть обрамлено квадратными скобками, при этом значение смещения должно лежать в диапазоне от0 до 95 (5Fh). Практически это означает, что все команды, которые используют бит признака доступа к оперативной памяти Access Bank или BSR как параметр — то есть все байт- и бит-ориентирован-ные команды (что составляет почти половину основных команд PIC18) могут вести себя по-другому в ядре PIC18 с расширенным набором команд. Использование скобок указывает к компилятору, что значение должно интерпретироваться как индекс или смещение. Исключение скобок или использование значения смещения большего, чем 5Fh, в пределах скобок приведет к выдаче сообщения об ошибке в ассемблере MPASM. Пример 4, а и биллюстриру-ет использование одной и той же команды для разных случаев адресации.

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

Если в режиме индексной адресации со смещением индексный параметр заключен в скобки, то параметр доступа к оперативной памяти а никогда не указывается и будет автоматически принят как 0. Это отличие от стандартной операции, когда а указывает на целевой адрес. Объявление бита доступа оперативной памяти в этом режиме также приведет к сообщению об ошибке в ассемблере MPASM. Параметр адресата d функционирует в новом ядре как и прежде.

В последних версиях языка ассемблера MPASM поддержка расширенного набора команд должна быть указана явно. Это делается либо с опцией в командной строке /у, либо с директивой PE в листинге исходного кода. В компиляторе MPLAB-C18 нужно указывать директиву -extended и подключать соответствующий командный файл линкера, например 18f4620_e.lkr.

Пример 4: Иллюстрация работы одной и той же команды для разных режимов адресации. Режим расширенного ядра разрешен.

Команда ADDWF £ {,а}}

а) использование адресации со смещением addwf [к]^

Действие: ^) + (^5Я2) + к) ^ dest.

Содержимое рабочего регистра W добавляется к содержимому регистра, на который указывает со смещением к указатель адреса FSR2. Если d равно 0, результат сохраняется в W, если d равно 1, то результат сохраняется в регистре (FSR2 + к).

б) стандартная команда addwf REG1,d,a

Действие: (W) + (REG1) ^ dest.

Содержимое рабочего регистра W добавляется к содержимому регистра REG1. Если d равно О, результат сохраняется в W. Если d равно 1, результат сохраняется в REG1. Параметр a указывает на в Access Bank (а = О) или на GPR (а = 1).

Оптимизация кода при использовании языка высокого уровня

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

Рассмотрим некоторые примеры оптимизации кода и быстродействия при использовании языка высокого уровня С.

Пример 5: Присвоение значения элементу массива, mass[2] = 5.

При реализации на стандартном ядре PIC18 данная команда занимает 10 байт памяти программ и выполняется за 5 машинных циклов:

MOVLW ОхО5 MOVWF PRODL, О MOVLW ОхО2 MOVFF PRODL, PLUSW2

Расширенное ядро требует всего 4 байт программной памяти и выполняется за 2 машинных цикла:

MOVLW ОхО5 MOVWF [ОхО2], О

Пример 6: Присвоение элементу массива значения другого элемента, mass[2] = mass[5].

Стандартное ядро PIC18: 12 байт памяти программ:

movlw offset(0х05)

movf PLUSW2,0,0

movwf INDFl^

movlw offset(0х02)

movff INDF1,PLUSW2

Расширенное ядро: 4 байт программной памяти

[ОхО5],[ОхО2]

Пример 7: Вызов функции по указателю:

&[р1г]0.

Стандартное ядро: 18 байт программной

памяти, выполняется за 9 машинных циклов:

bra PC+12

movff ptr + 2,PCLATU

movff ptr + 1,PCLATH

movlb ptr

movf ptrAl

movwf PCL^

rcall PC-ІО

Расширенное ядро: 14 байт программной

памяти, выполняется за 6 машинных циклов:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

movff ptr + 2,PCLATU

movff ptr + 1,PCLATH

movlb ptr

movf ptrAl

callw

Компоненты и технологии, № 6'2004 Особенности микроконтроллеров с расширенным ядром PIC18

Компания Microchip готовит к выпуску целое семейство микроконтроллеров с расширенным ядром PIC18 (табл. 2). Все микроконтроллеры выполнены по технологии NanoWatt, а значит, имеют встроенный тактовый генератор с возможностью программного выбора частоты от 32 кГц до 8 МГц; имеют возможность отключения тактирования ядра для сохранения энергии; имеют возможность переключения «на лету» источника тактовой частоты между основным генератором (до 40 МГц), дополнительным генератором, подключаемым к Timer 1, и внутренним RC-генератором. В NanoWatt-микроконтроллерах имеется возможность контроля работоспособности основного кварцевого генератора ив случае отказа кварца — переключения на внутренний генератор. Эта особенность может пригодиться для повышения надежности важных и необслуживаемых систем.

Все новые микроконтроллеры поддерживают внутрисхемную отладку с помощью отладчика-программатора ICD-2. Для новых контроллеров поддерживаются 3 точки останова, просмотр и модификация содержимого ОЗУ, возможность запуска программы в реальном времени и в пошаговом режиме.

Таблица 2. Микроконтроллеры с расширенным ядром PIC18

Тип Flash-помять программ, байт ОЗУ данных, байт т й а б s' О Р ЕП Порты I/O Каналов 10разрядного АЦП Аналоговый компаратор Таймеры 8/16 Встроенный генератор 10-разрядный ШИМ AUSART/EUSART Дополни- тельно

RIG18F2410/4410 16 K 768 - 25/36 10/13 2 1/3 32 кГц/8 МГц 2/4 1

RIG18F2420/4420 16 K 768 256 25/36 10/13 2 1/3 32 кГц/8 МГц 2/4 1

RIG18F2455/4455 24 K 2048 256 25/36 11/13 2 1/3 32 кГц/8 МГц 2 1 USB 2.0

RIG18F2510/4510 32 K 1536 - 25/36 10/13 2 1/3 32 кГц/8 МГц 2/4 1

RIG18F2520/4520 32 K 1536 256 25/36 10/13 2 1/3 32 кГц/8 МГц 2/4 1

RIG18F2550/4550 32 K 2048 256 25/36 11/13 2 1/3 32 кГц/8 МГц 2 1 USB 2.0

RIG18F2515/4515 48 K 3968 - 25/36 10/13 2 1/3 32 кГц/8 МГц 2/4 1

RIG18F2525/4525 48 K 3968 1024 25/36 10/13 2 1/3 32 кГц/8 МГц 2/4 1

RIG18F2585/4585 48 K 3328 1024 25/36 8/11 2 1/3 32 кГц/8 МГц 1/5 1 GAN 2.0B

RIG18F2610/4610 64 K 3968 - 25/36 10/13 2 1/3 32 кГц/8 МГц 2/4 1

RIG18F2620/4620 64 K 3968 1024 25/36 10/13 2 1/3 32 кГц/8 МГц 2/4 1

RIG18F2680/4680 64 K 3328 1024 25/36 8/11 2 1/3 32 кГц/8 МГц 1/5 1 GAN 2.0B

RIG18F6310/8310 8 K 768 - 54/70 12 2 1/3 32 кГц/8 МГц 3 2

RIG18F6390/8390 8 K 768 - 54/70 12 2 1/3 32 кГц/8 МГц 3 2 LGD-драйвер

RIG18F6410/8410 16 K 768 - 54/70 12 2 1/3 32 кГц/8 МГц 3 2

RIG18F6490/8490 16 K 768 - 54/70 12 2 1/3 32 кГц/8 МГц 3 2 LGD-драйвер

Среди новых микроконтроллеров есть микросхемы со встроенной поддержкой протоколов USB 2.0 (full-speed), CAN 2.0B, кроме того, во всех контроллерах есть поддержка интер-

фейса I2C, SPI и расширенный интерфейс USART (EUSART) с возможностью автоподстройки скорости и выхода из режима SLEEP при наличии активности на шине.

i Надоели баннеры? Вы всегда можете отключить рекламу.