ООО ЭФО
Поиск по складу
Программа поставок 2016
Сегодня
www.powel.ru
источники питания
www.korpusa.ru
конструктивы и корпуса РЭА
www.wless.ru
беспроводные технологии
www.mymcu.ru
микроконтроллеры
altera-plis.ru
микросхемы Altera
www.infiber.ru
волоконно-оптические
компоненты в
промышленности
www.efo-power.ru
силовая электроника
www.efo-electro.ru
электротехническая
продукция
www.efometry.ru
контрольно-измерительные приборы
www.golledge.ru
кварцевые резонаторы и генераторы Golledge
www.sound-power.ru
профессиональные усилители класса D
Поиск по сайту
Подписка на новости

Система менеджмента
качества сертифицирована на соответствие требованиям:
ISO 9001, ГОСТ Р ИСО 9001 и СРПП ВТ - подтверждено сертификатами соответствия в системах сертификации Русского Регистра, ГОСТ Р, международной сети IQNet, "Оборонсертифика" и "Военный Регистр".

ООО "ЭФО" в 2011г. получило Лицензию Федеральной службы по экологическому, технологическому и атомному надзору на изготовление оборудования для ядерных установок.


Rambler s Top100



ChipFind - поисковая система по электронным компонентам
EEN
webmaster
Санкт-Петербург: (812) 327-86-54  zav@efo.ru Москва: (495) 933-07-43  moscow@efo.ru Екатеринбург: (343) 278-71-36  ural@efo.ru Пермь: (342) 220-19-44  perm@efo.ru
Казань: (843) 518-79-20  kazan@efo.ru Ростов-на-Дону: (863) 220-36-79  rostov@efo.ru Н. Новгород: (831) 434-17-84  nnov@efo.ru Новосибирск: (383) 286-84-96  nsib@efo.ru
о нас склад библиотека статьи
 
   
Шестнадцатиразрядные микроконтроллеры семейства С166 фирмы Infineon.

В.В.Гребнев

  1. Структура микроконтроллеров.
  2. Система команд.

Фирма Infineon, выделившаяся из фирмы Siemens, выпускает различные полупроводниковые компоненты, в число которых входят 8-разрядные, 16-разрядные и 32-разрядные микроконтроллеры.

Шестнадцатиразрядные микроконтроллеры выпускаются в составе трех семейств - С166, ХС166 и семейства коммуникационных микроконтроллеров.

В семейство С166 входят микроконтроллеры 18 типов (по состоянию на конец 2004 г.). Обозначение типа содержит букву С и три цифры - 16Х (Х ≠ 6), за которыми могут следовать одна или две буквы. Например, С164 SI.

Микроконтроллеры одного типа могут различаться рабочим диапазоном температуры окружающей среды, предельной частотой тактового сигнала, наличием или отсутствием некоторых устройств и другими характеристиками. Для отражения особенностей микроконтроллера в пределах типа перед обозначением типа и после него располагают группы букв и цифр. Например, SAF - C164 SI - 8R [25] M.

Микроконтроллеры всех типов имеют единую базовую структуру и систему команд.

1. Структура микроконтроллеров.

В базовую структуру микроконтроллера входят:

  • генератор тактового сигнала,
  • процессор,
  • память,
  • группа периферийных устройств.

Генератор тактового сигнала (ГТИ) формирует импульсный сигнал с частотой fcpu и скважностью 50%, который поступает в процессор и все другие устройства микроконтроллера. Два такта этого сигнала образуют машинный цикл.

В качестве исходного сигнала в ГТИ используется сигнал с частотой fosc, который поступает из внутреннего генератора с внешним кварцевым резонатором или подается из внешнего источника на вывод микроконтроллера XTAL1.

Исходный сигнал может подаваться прямо в процессор и другие устройства (fcpu = fosc) или проходить через схему деления частоты (fcpu = fosc/2) или схему умножения частоты (fcpu = foscх F, F=1,5; 2; 2,5; 3; 4; 5). Умножение частоты выполняется в схеме PLL (Phase Locked Loop). Схема PLL содержит собственный генератор сигнала с частотой 2 - 5 МГц.

Выбор способа формирования тактового сигнала и задание коэффициента F выполняются программными средствами.

Максимальное значение тактовой частоты fcpu (в МГц) у микроконтроллеров разных типов указано в табл.1 в столбце fcpu. Типы микроконтроллеров в таблице перечислены в порядке возрастания их функциональной сложности.

Таблица 1
Тип МК fcpu IRAM XRAM IROM EAS CS H/H XBUS Pin
С161K 25 1K     4M 2     80
С161O 25 2K     4M 4     80
С161S 25 2K     4M 4     80
С163 25 1K     16M 5 +   100
С165 25 2K     16M 5 +   100
С161PI 25 1K 2K   8M 5   + 100
С164SV 25 1K   16K 64K       64
С164SM 25 2K   32K 64K       64
С164CM 25 2K   32K 64K     + 64
С164SL 25 2K 2K 64K 4M 4   + 80
С164CL 25 2K 2K 64K 4M 4   + 80
С164SI 25 2K 2K 64K 4M 4   + 80
С164CI 25 2K 2K 64K 4M 4   + 80
c167CR 33 2K 2K 128K 16M 5 + + 144
c167CS 33 3K 8K 32K 16M 5 + + 144
c161CS 33 2K 8K 256K 16M 5 + + 128
c161JC 33 2K 8K 256K 16M 5 + + 128
c161JI 33 2K 8K 256K 16M 5 + + 128

У микроконтроллеров типа с161K, с161О и с165 схема PLL отсутствует.

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

В микроконтроллерах семейства С166 адреса команд и адреса данных входят в единое адресное пространство объемом 16М адресов (М=220). Двоичный код адреса имеет 24 разряда.

Адресное пространство делится на 256 сегментов по 64К адресов в сегменте (K=210). Сегмент содержит четыре страницы по 16K адресов в странице. Адресуемым элементом является восьмиразрядная ячейка памяти или восьмиразрядный регистр. При обращении для записи или чтения слова указывается четный адрес, который является адресом младшего байта слова.

Для представления адреса команды в процессоре имеется 16-разрядный регистр-указатель команды (Instruction Pointer, IP), в котором задаются младшие разряды адреса, и 8-разрядный регистр-указатель сегмента адреса команды (Code Segment Pointer, CSP), в котором указывается номер сегмента.

Для представления адреса данных в процессоре имеются четыре регистра-указателя страницы данных (Data Page Pointer х, DPPх, х=1,2,3,4), в которых представлены старшие 10 разрядов адреса. Младшие 14 разрядов поступают в составе 16-разрядного кода из кода команды (при прямой адресации) или из указанного регистра (при косвенной адресации).

При этом старшие два разряда 16-разрядного кода указывают, какой из регистров DPPх нужно использовать для образования 24-разрядного кода адреса данных.

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

Во внутренней оперативной памяти микроконтроллера выделяется группа из 16 или 32 ячеек, которые образуют регистровый банк (register context) для 16 байтов или 16 слов. Начальный адрес группы записывается в регистр-указатель банка (Context Pointer, CP). Обращение к регистру в банке выполняется с использованием команд с регистровой адресацией, в которых указывается номер регистра (0 - 15). Адрес памяти образуется путем сложения номера регистра с числом в регистре CP.

В памяти могут быть выделены несколько регистровых банков, которые могут перекрываться. Регистровый банк, начальный адрес которого в данное время находится в регистре CP, является активным регистровым банком.

Во внутренней оперативной памяти организуется системный стек типа LIFO. Для организации стека используются расположенные в процессоре регистры:

  • регистр-указатель стека (Stack Pointer, SP),
  • регистр для обнаружения переполнения стека (STKOV),
  • регистр для обнаружения переопустошения стека (STKUN).

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

Большинство команд в процессоре выполняются за 4 этапа, каждый их которых выполняется за один машинный цикл. На этапах выполняются следующие действия:

  1. выборка команды,
  2. выборка операндов,
  3. выполнение операции,
  4. отсылка результата.

В процессоре реализуется принцип конвейерного выполнения последовательности из четырех команд - 4-Stage Instruction Pipeline, в котором разные этапы процессов выполнения четырех команд совмещаются во времени. При этом на выполнение последовательности из N команд, каждая из которых выполняется за 4 машинных цикла, затрачивается N машинных циклов и расчетное время выполнения одной команды для определения быстродействия микроконтроллера оказывается равным длительности машинного цикла (2/fcpu).

Арифметические и логические операции с данными в формате слово и байт выполняются в арифметико-логическом устройстве (ALU).

Операции сдвига кода на любое число разрядов выполняются за один машинный цикл с использованием специального блока сдвига (Barrel Shifter). Операции умножения и деления выполняются за 5 и 10 машинных циклов соответственно с использованием специального блока умножения-деления. Для выполнения операций с битами используется специальный блок (Bit mask generator).

Память микроконтроллера делится на внутреннюю и внешнюю.

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

У микроконтроллеров всех типов, кроме С163, имеется специальное запоминающее устройство Boot ROM, в котором хранится программа загрузки начального участка программы объемом 32 байта в IRAM.

У микроконтроллеров некоторых типов имеется дополнительное внутреннее оперативное ЗУ - Extension RAM, XRAM, в котором могут храниться данные и команды программы.

Микроконтроллеры некоторых типов имеют внутреннее постоянное запоминающее устройство (Internal ROM, IROM) масочного типа или с однократным программированием, предназначенное для хранения команд программы и постоянных данных.

Емкость IRAM, XRAM и IROM (в числе байтов) у микроконтроллеров разных типов указана в табл.1. Микроконтроллеры одного типа могут иметь IROM разной емкости или выпускаться без IROM. В таблице указана максимальная емкость IROM у микроконтроллеров данного типа.

Внешняя память микроконтроллера образуется при подключении к нему внешних запоминающих устройств, в которых могут храниться команды программы и данные. Обращением к внешним ЗУ управляет контроллер внешней шины (External Bus Controller, EBC). Для передачи адреса и данных могут использоваться разные внешние шины или общая шина (мультиплексный режим). Данные могут передаваться байтами или словами.

Начальный адрес для каждого внешнего ЗУ задается с использованием расположенных в процессоре адресных регистров ADDRSELх (x = 1 - 4). Режим обращения и временные характеристики сигналов при обращении к каждому ЗУ задаются с использованием расположенных в процессоре регистров управления BUSCONх (x = 0 - 4).

Для выбора внешнего ЗУ при обращении формируются сигналы выбора CSх, которые выдаются на выводы микроконтроллера.

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

Контроллер внешней шины EBC используется также для обращения к дополнительному внутреннему оперативному запоминающему устройству (XRAM) и к некоторым периферийным устройствам. Обращение выполняется с использованием внутренней шины XBUS.

В табл.1 указаны объем адресного пространства внешней памяти (External Addres Space, EAS), количество выводов для выдачи сигналов выбора внешних ЗУ (CS) и отмечено наличие схемы арбитража внешней шины (H/H) и внутренней шины XBUS у микроконтроллеров разных типов.

В табл.1 также указано количество выводов корпуса (Pin) у микроконтроллеров разных типов.

В группу периферийных устройств входят устройства различного назначения. Некоторые устройства имеются у микроконтроллеров всех типов, другие устройства входят в группу периферийных устройств лишь у микроконтроллеров определенных типов.

Для управления работой периферийных устройств, отражения их состояния и представления данных используются регистры специальных функций (SFR) и дополнительные регистры специальных функций (Extended SFR, ESFR). Адреса для обращения к SFR и ESFR находятся в двух областях нулевого сегмента адресного пространства.

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

Таблица 2
Тип МК P Pin P ASC SSC IIC CAN SDLM ADС Int
С161K 7 63 1 +         14
С161O 7 63 1 +         20
C161S 7 63 1 +         30
С163 7 77 1 +         20
С165 7 77 1 +         28
С161PI 7 76 1 + +     4 27
С164SV 5 50 1 +       8 32
С164SM 5 50 1 +       8 32
С164CM 5 50 1 +   1   8 32
С164SL 6 59 1 +       8 32
С164CL 6 59 1 +   1   8 32
С164SI 6 59 1 +       8 32
С164CI 6 59 1 +   1   8 32
С167CR 9 111 1 +   1   16 56
С167CS 9 111 1 +   2   24 56
С161CS 9 93 2 + + 2   12 59
С161JC 9 93 2 + + 1 + 12 59
С161JI 9 93 2 + +   + 12 59

Таблица 3
Тип МК WDT OWD RTC GPT1 GPT2 CCOM1 CCOM2 CCOM6 PWM
С161K +     +          
С161O +     + +        
С161S + + + + +        
С163 + +   + +        
С165 +     + +        
С161PI + + + + +        
С164SV + + + +     12 +  
С164SM + + + +     12 M  
С164CM + + + +     12 M  
С164SL + + + +     8 +  
С164CL + + + +     8 +  
С164SI + + + +     8 M  
С164CI + + + +     8 M  
С167CR + +   + + + 16   +
С167CS + + + + + + 16   +
С161CS + + + + + + 16    
С161JC + + + + + + 16    
С161JI + + + + + + 16    

Параллельные порты ввода-вывода Px (х = 0,1,2,:) предназначены для приема и выдачи данных в параллельном коде. Отдельные разряды порта могут использоваться независимо от других разрядов для приема и выдачи битов.

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

В табл.2 указано количество параллельных портов (Р) и суммарное количество выводов параллельных портов (Pin P) у микроконтроллеров разных типов.

Асинхронно-синхронный последовательный канал ASCx (x = 0,1) представляет собой универсальный синхнронно-асинхронный приемо-передатчик (USART). Он предназначен для последовательного приема и выдачи байтов данных с использованием вывода RXD для приема и вывода TXD для выдачи.

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

В асинхронном режиме байт передается в составе кадра, в который входят стартовый бит, 8 или 9 битов данных и 1 или 2 стоповых бита.

Передача или прием могут вестись со скоростью до 3,1 Мбит/с в синхронном режиме и до 780 Kбит/с в асинхронном режиме (при fcpu = 25 МГц).

Количество ASC у микроконтроллеров разных типов указано в табл.2

Синхронный последовательный канал SSC предназначен для последовательной передачи и приема данных с использованием трех шин. Он может работать в режиме ведущего (master) или в режиме ведомого (slave). По шине, подключенной к выводу SCLK передаются импульсы синхросигнала из ведущего в ведомый, по шине, подключенной к выводу MTSR, передаются данные из ведущего в ведомый и по шине, подключенной к выводу MRST, принимаются данные в ведущий из ведомого.

Данные могут передаваться начиная с младшего бита или со старшего бита, импульсы синхросигнала могут иметь положительную полярность или отрицательную полярность.

Передача и прием могут вестись со скоростью до 6,25 Мбит/с (при fcpu = 25 МГц).

Синхронный последовательный канал идентичен порту SPI (Serial Peripheral Interface) микроконтроллеров других фирм.

Синхронный последовательный канал имеется у микроконтроллеров всех типов.

Блок IIC (Inter Integrated Circuit Module, I2C) предназначен для последовательной передачи и приема данных с использованием двух шин - шины SCL для передачи синхроимпульсов и шины SDA, по которой передаются коды адреса, байты данных и служебные символы. Код адреса может состоять из 7 или 10 битов.

Блок может работать в режиме ведущего (master) или в режиме ведомого (slave). Синхросигнал поступает в шину SCL из ведущего устройства. К общей двухпроводной шине может быть подключено несколько микроконтроллеров с блоком IIC, каждый из которых может работать в режиме ведущего.

Передача и прием могут вестись со скоростью до 400 Кбит/с.

В табл.2 отмечено наличие блока IIC у микроконтроллеров разных типов.

Блок CAN (Controller Area Network module) предназначен для обмена сообщениями в сети, работающей по CAN-протоколу. Для подключения микроконтроллера к сети используются выводы CAN_TXD и CAN_RXD. Подключение выполняется с помощью внешнего приемопередатчика CAN.

Сообщение содержит идентификатор из 11 или 29 битов, последовательность байтов, в которую могут входить до 8 байтов, и контрольный циклический код (CRC). Обмен сообщениями может выполняться со скоростью до 11 Мбит/с.

В табл.2 указано количество блоков CAN у микроконтроллеров разных типов.

Блок SDLM (Serial Data Link Module) предназначен для обмена данными в сети, работающей по протоколу J1850. Для подключения микроконтроллера к сети используются выводы SDL_TXD и SDL_RXD. Подключение выполняется с помощью внешнего приемопередатчика J1850.

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

Передача и прием могут вестись со скоростью 10,4 Кбит/с или 41,6 Кбит/с.

В табл.2 отмечено наличие блока SDLM у микроконтроллеров разных типов.

Аналого-цифровой преобразователь (ADC) предназначен для формирования кода числа, пропорционального величине напряжения на его входе.

Преобразователь может иметь до 24 входов. Формируемый двоичный код содержит 10 разрядов.

Преобразователь может работать в одиночном режиме (один канал - одно преобразование), в непрерывном режиме (одни канал - последовательность преобразований), в режиме сканирования (последовательность каналов с одним преобразованием в каждом канале) и в режиме непрерывного сканирования (повторяемая последовательность каналов с преобразованием в каждом канале).

Длительность интервала времени, в течение которого выполняется преобразование, задается с использованием программных средств.

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

Система прерываний микроконтроллера содержит два контроллера прерываний - основной и дополнительный.

Основной контроллер прерываний (Interrupt Controller, IC) может обслуживать все запросы прерывания, возникающие в микроконтроллере и поступающие из внешних источников. Каждому запросу соответствует своя прерывающая программа.

Общее число запросов прерывания у микроконтроллеров разных типов указано в табл.2 в колонке Int. В указанное число не входят запрос немаскируемого прерывания NMI и запросы, возникающие при выявлении ошибок в работе процессора и при выполнении некоторых команд программы (Hardware и Software Traps). По этим запросам выполняются 6 прерывающих программ.

Запросы прерывания объединены в несколько групп. В каждой группе запрос может быть отнесен к одному из 16 уровней приоритета.

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

Дополнительный контроллер прерываний (Peripheral Event Controller, PEC) может обслуживать запросы прерывания, по которым требуется выполнить пересылку слова или байта. PEC обслуживает не более восьми запросов прерывания.

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

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

Сторожевой таймер (Watchdog Timer, WDT) предназначен для устранения последствий сбоя в ходе программы путем перезапуска микроконтроллера. WDT содержит шестнадцатиразрядный счетчик, который ведет счет времени. При переполнении счетчика выполняется перезапуск микроконтроллера.

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

Длительность интервала счета в WDT до переполнения счетчика задается программными средствами и может иметь величину от 20 мкс до 600 мс.

Сторожевой таймер имеется у микроконтроллеров всех типов.

Детектор тактового сигнала (Oscillator Watchdog, OWD) предназначен для обнаружения пропажи сигнала из внутреннего генератора с кварцевым резонатором или из внешнего источника на выводе XTAL1 и замены его сигналом из дополнительного генератора, расположенного в схеме PLL, который генерирует сигнал с частотой 2 -5 МГц. При этом формируется запрос прерывания. Наличие детектора тактового сигнала у микроконтроллеров разных типов отмечено в табл.3 в колонке OWD.

Таймер реального времени (Real Time Clock, RTC) предназначен для формирования временных интервалов, длительность которых задается в единицах реального времени (секунды, минуты, часы). Он содержит генератор с кварцевым резонатором с частотой 32768 Гц (215 Гц) и группу счетчиков и пересчетных схем. Таймер может формировать интервалы с длительностью более чем 100 лет.

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

Таймер общего назначения (General Purpose Timer, GPT) представляет собой шестнадцатиразрядный счетчик, который может вести счет времени или счет внешних событий, представленных перепадом уровня сигнала на выводах микроконтроллера. Счет может вестись на сложение или вычитание.

Таймеры общего назначения входят в состав двух блоков - блока GPT1 (3 таймера) и блока GPT2 (2 таймера). Блок GPT1 имеется у микроконтроллеров всех типов. Наличие блока GPT2 у микроконтроллеров разных типов отмечено в табл.3.

В блоке GPT1 таймеры Т2, Т3 и Т4 могут использоваться независимо друг от друга для формирования запросов прерывания при истечении заданного интервала времени или наступлении заданного числа событий. Таймеры Т2 и Т4 могут использоваться в качестве регистров в режиме захвата (Capture) для запоминания кода числа в счетчике Т3 в момент наступления внешнего события на входах микроконтроллера, связанных с таймерами Т2 и Т4, или в качестве регистров в режиме сравнения (compare) с изменениями уровня сигнала на выводе микроконтроллера, связанном с таймером Т3, в момент совпадения кодов в регистре и в таймере Т3.

В блоке GPT2 таймеры Т5 и Т6 могут быть использованы независимо друг от друга для формирования запросов прерывания. Таймер Т5 совместно с дополнительным регистром может использоваться для работы в режиме захвата, а таймер Т6 совместно с дополнительным регистром - для работы в режиме сравнения с изменением уровня сигнала на выводе микроконтроллера, связанном с таймером Т6.

Режим захвата используется для определения параметров внешнего импульсного сигнала, а режим сравнения - для формирования выходных импульсных сигналов с заданными параметрами.

Блок захвата-сравнения (Capture-Compare Module, CCOM) предназначен для определения параметров импульсных сигналов, поступающих из внешних источников, (в режиме захвата) и для формирования импульсных сигналов с заданными параметрами на выводах микроконтроллера (в режиме сравнения).

В группу периферийных устройств могут входить блоки CCOM1, CCOM2 и CCOM6.

Блок CCOM1 содержит два шестнадцатиразрядных таймера и 16 шестнадцатиразрядных регистров. Каждый регистр совместно с одним из таймеров может работать в режиме захвата с запоминанием кода, находящегося в выбранном таймере в момент изменения уровня входного сигнала на выводе микроконтроллера, связанном с заданным регистром, или в режиме сравнения с изменением уровня сигнала на выводе микроконтроллера, связанном с этим регистром, в момент совпадения кода в регистре с кодом в выбранном таймере.

При захвате кода и при совпадении кодов формируются запросы прерывания.

Блок CCOM2 содержит два таймера и 8, 12 или 16 регистров. Работа блока идентична работе блока CCOM1.

Блок CCOM6 содержит один шестнадцатиразрядный таймер и 3 шестнадцатиразрядных регистра, которые могут работать в режиме захвата или в режиме сравнения. При работе в режиме сравнения на двух выводах микроконтроллера, связанных с данным регистром, формируется пара импульсных сигналов, в которой один сигнал является инверсией другого сигнала и моменты изменения уровня сигнала могут быть сдвинуты относительно момента изменения уровня другого сигнала на заданный интервал (offset).

Кроме того, в блоке CCOM6 имеются десятиразрядный таймер и десятиразрядный регистр, которые работают в режиме сравнения с выдачей сигнала на отдельный вывод микроконтроллера.

Блок CCOM6 может иметь дополнительные внешние входы для управления формированием сигналов с использованием внешних источников в многоканальной системе (Multichannel PWM).

В табл.3 отмечено наличие блоков CCOM1 и CCOM6 и указано количество регистров в блоке CCOM2 у микроконтроллеров разных типов. Наличие блока CCOM6 с дополнительными входами для подключения внешних датчиков отмечено знаком М.

Блок PWM (Pulse Width Modulator unit) предназначен для формирования широтно-модулированных импульсных сигналов. Блок имеет четыре канала. Сигнал PWM формируемый в одном канале, может быть использован для модуляции импульсов в сигнале, формируемом в другом канале. В этом случае импульс в сигнале PWM заменяется пачкой импульсов.

Наличие блока PWM у микроконтроллеров разных типов отмечено в табл.3 в колонке PWM.

2. Система команд.

Система команд микроконтроллеров семейства С166 содержит 325 команд. Машинный код команды имеет формат слово или двойное слово. При разработке программы на уровне системы команд используется язык ассемблера. Мнемокод команды содержит мнемокод операции и может содержать адресную часть.

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

Для задания местоположения операндов и результатов используются следующие способы адресации:

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

В табл.4 перечислены арифметические и логические операции, указан формат операндов (в числе битов), приведен мнемокод операции и указано число вариантов мнемокода команды, получаемых при использовании разных способов адресации операндов.

Таблица 4
Операция Формат операндов Мнемокод операции Число вариантов
Сложение 16; 8 ADD; ADDB 7 + 7
Сложение с учетом переноса 16; 8 ADDC; ADDCB 7 + 7
Вычитание 16; 8 SUB; SUBB 7 + 7
Вычитание с учетом займа 16; 8 SUBC; SUBCB 7 + 7
Умножение (числа со знаком) 16 MUL 1
Умножение (числа без знака) 16 MULU 1
Деление (числа со знаком) 16; 32:16 DIV; DIVL 1 + 1
Деление (числа без знака) 16; 32:16 DIVU; DIVLU 1 + 1
Инверсия 16; 8 CPL; CPLB 1 + 1
Изменение знака 16; 8 NEG; NEGB 1 + 1
Определение параметра для нормализации числа 16 PRIOR 1
Логическое умножение (И) 16; 8 AND; ANDB 7 + 7
Логическое сложение (ИЛИ) 16; 8 OR; ORB 7 + 7
Исключающее ИЛИ 16; 8 XOR; XORB 7 + 7
Сравнение 16; 8 CMP; CMPB 6 + 6
Сравнение числа в регистре и уменьшение его на 1 или 2 16 CMPD1; CMPD2 3 + 3
Сравнение числа в регистре и увеличение его на 1 или 2 16 CMPI1; CMPI2 3 + 3
Сдвиг на указанное число разрядов
влево
16 SHL 2
вправо
16 SHR 2
Циклический сдвиг на указанное число разрядов
влево
16 ROL 2
вправо
16 ROR 2
Арифметический сдвиг вправо 16 ASHR 2

В табл.5 перечислены операции пересылки слов и байтов, приведен мнемокод операции и указано число вариантов мнемокода команды, получаемых при использовании разных способов адресации для источника (sourse) и приемникf (destination) пересылаемых кодов. Пересылки слов и байтов по командам с мнемокодом операции MOV и MOVB соответственно могут выполняться с предварительным декрементированием адреса приемника (-2 или -1) или с последующим инкрементированием адреса приемника или источника (+2 или +1).

Таблица 5
Операция Формат кода Мнемокод операции Число вариантов
Пересылка слова 16 MOV 16
Пересылка байта 8 MOVB 16
Пересылка байта с расширением знака 8 → 16 MOVBS 3
Пересылка байта с нулевым расширением 8 → 16 MOVBZ 3
Пересылка из стека 16 POP 1
Пересылка в стек 16 PUSH 1
Пересылка в стек с засылкой кода по адресу источника 16 SCXT 2

В табл.6 перечислены операции с битами и группами битов и приведены мнемокоды операций.

Таблица 6
Операция Мнемокод операции
Сброс в 0 BCLR
Установка в 1 BSET
Пересылка бита BMOV
Пересылка бита с инверсией BMOVN
Логическое умножение (И) BAND
Логическое сложение (ИЛИ) BOR
Исключающее ИЛИ BXOR
Сравнение BCMP
Маскирование старшего байта слова BFLDH
Маскирование младшего байта слова BFLDL

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

Таблица 7
Операция Область адресов Мнемокод операции Число вариантов
Безусловный переход 16 М JMPS 1
Абсолютный переход 64 К JMPA 20
Косвенный переход 64 К JMPI 20
Относительный переход -128, +127 JMPR 20
Условный переход (при bit=1) -128, +127 JB 1
Условный переход (при bit=0) -128, +127 JNB 1
Условный переход (при bit=1, bit:=0) -128, +127 JBC 1
Условный переход (при bit=0, bit:=1) -128, +127 JNBS 1
Безусловный переход с возвратом 16 М CALLS 1
Абсолютный переход с возвратом 64 К CALLA 20
Косвенный переход с возвратом 64 К CALLI 20
Безусловный относительный переход с возвратом -128, +127 CALLR 1
Безусловный переход с возвратом с пересылкой "регистр-стек" 64 К PCALL 1
Программное прерывание 128 &@8594 16 М TRAP 1
Возврат из подпрограммы 64 К RET 1
Возврат из подпрограммы 16 М RETS 1
Возврат из подпрограммы с пересылкой "стек-регистр" 64 К RETP 1
Возврат из прерывающей программы 16 М RETI 1
Переход через 1 команду   NOP 1

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

Таблица 8
Операция Мнемокод команды
Программный перезапуск микроконтроллера SRST
Переход в режим холостого хода IDLE
Переход в режим пониженного энергопотребления PWRDN
Перезапуск сторожевого таймера SRVWDT
Отказ от использования сторожевого таймера DISWDT
Конец инициализации EINIT

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

Таблица 9
Операция Мнемокод операции Число вариантов
Защита от прерывания последовательности из N команд (N=1, 2, 3,4) ATOMIC 1
Защита от прерывания последовательности из N команд (N=1,2,3,4) с переходом
от области SFR к области ESFR
EXTR 1
от текущей страницы памяти к указанной странице
EXTP 2
от текущего сегмента памяти к указанному сегменту
EXTS 2
от текущей страницы памяти к указанной странице и от области SFR к области ESFR
EXTPR 2
от текущего сегмента памяти к указанному сегменту и от области SFR к области ESFR
EXTSR 2

Литература

  1. Instruction Set Manual for the C166 Family of Infineon 16-Bit Single-Chip Microcontrollers. User's Manual, V2.0, Mar.2001.
  2. C161CS-32R/-L, C161JC-32R/-L, C161JI-32R/-L 16 Bit Single-Chip Microcontroller. User's Manual, V3.0, Feb.2001.
  3. C161K, C161O 16 Bit Single-Chip Microcontroller. Data Sheet, V2.0, Jan.2001.
  4. C161S 16Bit Single-Chip Microcontroller. Data Sheet, V1.0, Nov.2003.
  5. Microcontrollers C166 Family. 16-Bit Single-Chip Microcontroller C161PI. V1.0, 1999-08. User's Manual.
  6. Microcontroller Components. 16-Bit CMOS Single-Chip Microcontroller C163-L. Data Sheet. 1998-08. Preliminary.
  7. C164SV. Product Brief.
  8. C164CM/SM 16-Bit Single-Chip Microcontroller. Data Sheet, V1.0, May 2001.
  9. C164CI/SI, C164CL/SL 16-Bit Single-Chip Microcontroller. Data Seet, V2.0, May 2001.
  10. C165 16-Bit Single-Chip Microcontroller. Data Sheet, V2.0, Dec.2000.
  11. C167CR Derivatives 16-Bit Single-Chip Microcontroller. User's Manual, V3.2, May 2003.
  12. C167CS-4R, C167CS-L 16-Bit Single-Chip Microcontroller. Data Sheet, V2.0, June 2000.
© 1999-2016 All Right Reserved. EFO Ltd. При использовании материалов ссылка на источник обязательна.
Контактная информация