ООО ЭФО
Поиск по складу
Программа поставок 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
о нас склад библиотека статьи
 
   
Восьмиразрядные микроконтроллеры с Flash-памятью фирмы Infineon (семейство XC800)

В.В.Гребнев

Микроконтроллеры семейства ХС800 имеют базовую структуру и систему команд, совпадающие с базовой структурой и системой команд микроконтроллеров семейств MCS-51 фирмы Intel, AT89 фирмы Atmel, C500 и C800 фирмы Infineon и отечественных микроконтроллеров серий 1816/51 и 1830/51.

Использование Flash-памяти в качестве памяти программ позволяет вводить и отлаживать рабочую программу после установки микроконтроллера в аппаратуре (In-System Programming). В процессе выполнения рабочей программы в память программ могут вводиться новые программы и получаемые данные (In-Application Programming), что позволяет

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

Первым представителем семейства XC800 является микроконтроллер типа XC866, который выпускается с начала 2005 г. Микроконтроллеры типа XC866 изготавливаются в двух вариантах. В одном варианте вся память программ выполнена в виде Flash-памяти. В другом варианте часть памяти программ представлена памятью типа mask-ROM, что существенно снижает стоимость микросхемы.

Одновременно с выпуском микроконтроллера типа XC866 66фирма Infineon выпустила аппаратно-программный комплект Starter Kit XC866, позволяющий ознакомиться с работой микроконтроллера и приобрести навыки работы со средствами разработки программ для него.

1. Структура микроконтроллера типа ХС866

В микроконтроллере имеется центральная часть - ядро (XC800 Core). В состав ядра входят:

  • центральный процессорный блок (CPU),
  • контроллер прерываний (IС),
  • два таймера (T0 и T1),
  • универсальный асинхронный приемо-передатчик (UART).

К ядру подключены:

  • блок генератора тактовых сигналов, (в составе System Control Unit)
  • блоки памяти программ и памяти данных,
  • четыре параллельных порта ввода-вывода ( GPIO - Р0, Р1, Р2, Р3),
  • таймер Т2,
  • сторожевой таймер (WDT),
  • блок захвата-сравнения (CCU6),
  • блок синхронного последовательного канала (SSC),
  • блок аналого-цифрового преобразователя (ADC),
  • блок питания, (в составе System Control Unit)
  • блок поддержки отладки программы (ОCDS).

Блок генератора тактовых сигналов содержит генератор исходного сигнала (OSC), схему PLL (Phase-Locked Loop), детектор потери исходного сигнала (OSC fail detector), делитель частоты (1:3) и схему распределения тактовых сигналов.

Генератор исходного сигнала может работать без подключения внешних элементов (On-Chip OSC) с частотой fosc= 10 МГц или с подключением внешнего кварцевого или керамического резонатора (External OSC) с частотой fosc= 3-12 МГц. Исходный сигнал может выдаваться на внешний вывод микроконтроллера (Р0.0).

Блок может работать в нескольких режимах. Основным является режим умножения частоты (PLL Mode). В этом режиме формируется базовый сигнал с частотой fsys= fosc · N/2.

Значение N выбирается таким, чтобы при выбранном значении fosc получить fsys= 80 МГц.

Сигнал с частотой fsys поступает в блоки Flash-памяти. После делителя частоты (1:3) сигнал с частотой fclk= fsys/3 поступает во все блоки микроконтроллера в качестве тактового сигнала. При fosc= 10 МГц выбирается N = 16. При этом fsys= 80 МГц и fclk= 26,66 МГц.

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

Для уменьшения энергопотребления микроконтроллер может быть переведен в режим работы с пониженной тактовой частотой (SlowDown mode). В этом режиме частота базового сигнала уменьшается путем деления на коэффициент CLKREL, который может иметь значения 21, 22, :, 211.

При пропадании исходного сигнала детектор формирует запрос немаскируемого прерывания (PLL Loss of Lock). Прерывающая программа переводит схему PLL из режима умножения частоты в режим генерации сигнала, который используется в качестве исходного сигнала, и выполняет операции для вывода микроконтроллера из аварийного состояния.

Центральный процессорный блок содержит

  • 16-разрядный счетчик команд,
  • два 16-разрядных регистра-указателя адреса (DPTR0 и DPTR1),
  • 8-разрядный регистр-указатель стека,
  • арифметико-логическое устройство (ALU),
  • регистры управления EO, SYSCON0,

и другие элементы.

Выбор одного из двух регистров DPTR производится с использованием разряда DPSEL регистра EO.

В состав ALU входят 8-разрядный регистр-аккумулятор (ACC), 8-разрядный дополнительный регистр (B) и 8-разрядный регистр слова состояния программы (PSW).

Процессор работает с тактовой частотой fclk. Два такта образую машинный цикл. При обращении к Flash-памяти в цикл вводится дополнительный такт. Команды выполняются за один, два или четыре машинных цикла.

Блоки памяти программ и памяти данных образуют внутреннюю память микроконтроллера. К микроконтроллеру типа XC866 внешняя память программ не подключается.

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

  • адресное пространство памяти программ объемом 64К адресов,
  • адресное пространство внешней памяти данных объемом 64К адресов,
  • адресное пространство внутренней памяти данных объемом 256 адресов.

Адресуемый элемент памяти содержит восемь двоичных разрядов.

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

В состав микроконтроллеров всех модификаций входят следующие блоки памяти:

  • блок Flash-памяти емкостью 4К байт, предназначенный для хранения команд и данных, с адресами от А000H до AFFFH в адресном пространстве памяти программ (блок D-Flash),
  • блок постоянной памяти типа mask ROM емкостью 8К байт, предназначенный для хранения программы начальной загрузки памяти и программы Monitor, с адресами от C000H до DFFFH в адресном пространстве памяти программ (блок Boot ROM),
  • блок оперативной памяти объемом 256 байт, предназначенный для хранения данных, с адресами от 00H до FFH в адресном пространстве внутренней памяти данных (блок RAM),
  • блок дополнительной оперативной памяти объемом 512 байт, предназначенный для хранения команд и данных, с адресами от F000H до F1FFH в адресном пространстве памяти программ или внешней памяти данных (блок XRAM).

Кроме перечисленных блоков у микроконтроллеров разных модификаций имеются дополнительные блоки памяти, предназначенные для хранения команд программы и данных, - один или три блока Flash-памяти емкостью 4К байт каждый (блоки P-Flash) или один или два блока памяти типа mask-ROM емкостью 8К байт каждый (блоки mask-ROM).

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

Модификация P-Flash mask-ROM Анач Акон
ХС866-2FR 4K х 8   0000H 0FFFH
ХС866-4FR 12K х 8   0000H 2FFFH
ХС866-2RR   8K х 8 0000H 1FFFH
ХС866-4RR   16K х 8 0000H 3FFFH

Адреса из адресного пространства внутренней памяти данных используются для обращения к ячейкам в блоке RAM и к регистрам специальных функций, расположенным в CPU и других блоках микроконтроллера. По адресам от 00H до 7FH можно обращаться к ячейкам RAM с использованием команд с прямой и косвенной адресацией. По адресам от 80H до FFH к ячейкам RAM производится обращение по командам с косвенной адресацией, а к регистрам специальных функций - по командам с прямой адресацией.

Тридцать две ячейки RAM с адресами от OOH до 1FH могут использоваться как регистры общего назначения с обращением к ним по командам с регистровой адресацией. Регистры объединены в четыре регистровых банка по восемь регистров в банке (R0-R7). Выбор регистрового банка производится с использованием пары разрядов (RS1, RS0) регистра PSW. Первые два регистра (R0, R1) в каждом регистровом банке могут использоваться в качестве регистров адреса при обращении к RAM по командам с косвенной адресацией. К отдельным разрядам ячеек RAM с адресами от 20H до 2FH производится обращение по командам с битовой адресацией. По командам с битовой адресацией можно также обращаться к разрядам регистров специальных функций, адреса которых кратны числу восемь (80H, 88H, 90H, :, F8H).

Блоки Flash-памяти.

У микроконтроллеров всех модификаций имеется один блок памяти D-Flash. У микроконтроллеров модификаций 2FR и 4FR кроме блока D-Flash имеются один и три блока памяти P-Flash соответственно.

Запись данных в блок Flash-памяти производится построчно. Строка (wordline) содержит 32 байта. Чтение данных из блока Flash-памяти производится побайтно. Чтение байта выполняется за 112,5 Нс (3 такта сигнала с частотой fclk=26,66 МГц).

Перед записью новых данных производится стирание ранее сделанной записи. Стирание производится по секторам или для всего блока. Стирание сектора выполняется за 120 мс. В блоке D-Flash имеются 2 сектора емкостью 1 Кбайт, 2 сектора емкостью 0,5 Кбайт, 2 сектора емкостью 0,25 Кбайт и 4 сектора емкостью 0,125 Кбайт. В блоке P-Flash имеется 1 сектор емкостью 3,75 Кбайт и два сектора емкостью 0,125 Кбайт.

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

Запись строки в блоке P-Flash выполняется за один сеанс. Для изменения записи необходимо предварительно выполнить стирание сектора. Запись строки в блоке D-Flash может выполняться за два сеанса. В первом сеансе в часть ячеек записываются нужные байты, а в другую часть - нулевые байты. Во втором сеансе в первую часть ячеек записываются нулевые байты. А во вторую часть - нужные байты. Запись нулевого байта не изменяет ранее записанный байт.

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

Запись каждого байта сопровождается формированием и записью контрольного кода ECC (Error Correct Code). При чтении байта формируется код ECC, который сравнивается с записанным кодом. При обнаружении ошибки в считанном коде формируется запрос немаскируемого прерывания Flash EСС Error.

Запись кодов в блок Flash-памяти может выполняться при нахождении микроконтроллера в режиме программирования под управлением программы, хранящейся в блоке памяти Boot ROM (Boot Strap Load mode), или в рабочем режиме (User Mode) под управление подпрограммы, включенной в рабочую программу микроконтроллера.

Выбор режима определяется комбинацией значений сигналов на входе MBC и TMS микроконтроллера. При MBC=0 и TMS=0 микроконтроллер находится в режиме программирования, при MBC=1 - в рабочем режиме.

В режим программирования коды для записи принимаются из персонального компьютера с использованием блока UART. В рабочем режиме коды для записи считываются из блока XRAM или блока RAM или другого блока Flash-памяти, куда они были записаны ранее.

Для задания временного режима работы микроконтроллера при записи кодов в блоки Flash-памяти используется специальный таймер, при переполнении которого формируется запрос немаскируемого прерывания Flash Timer Overflow.

Регистры специальных функций (SFR) предназначены для управления работой блоков микроконтроллера, отражения их состояния и хранения данных, используемых при работе блоков. Для обращения к SFR в адресном пространстве внутренней памяти данных выделены 128 адресов (от 80H до FFH). У микроконтроллера типа XC866 имеется 209 регистров специальных функций.

По способу использования адресов для обращения к SFR адреса объединены в три группы:

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

При обращении по двойному адресу выбор регистра определяется значением разряда RMAP в регистре SYSCON0.

Регистры, обращение к которым производится с использованием множественного адреса, объединены в группы (страницы) по принадлежности регистров определенному блоку микроконтроллера (SCU_PAGE, PORT_PAGE, ADC_PAGE, CCU6_PAGE). Перед обращением к регистру номер страницы (трехразрядный код) заносится в регистр выбора страницы. При обращении по множественному адресу выбирается регистр, находящийся в заданной странице. При занесении номера страницы номер, ранее записанный в регистр номера страницы, может быть переписан в один из четырех регистров хранения номера страницы. При возвращении к ранее использованной странице ее номер из заданного регистра хранения возвращается в регистр выбора.

Блок питания.

Питание микроконтроллера осуществляется от внешнего источника постоянного тока с напряжением (Vddp) 3,3 В или 5,0 В. Напряжение от внешнего источника поступает для питания параллельных портов ввода-вывода и на встроенный регулятор напряжения EVR (Embedded Voltage Regulator). С выхода EVR напряжение (Vdd) 2, 5 В поступает во все блоки микроконтроллера.

При падении напряжения питания от внешнего источника ниже уровня 4,0 В (при Vddp= 5,0 В) формируется запрос немаскируемого прерывания Vddp Pre-Warning.

При падении напряжения питания от EVR (Vdd) ниже уровня 2,3 В формируется запрос немаскируемого прерывания Vdd Pre-Warning.

При падении напряжения питания от EVR ниже уровня 2,1 В формируется сигнал сброса микроконтроллера Brown Out reset.

Для снижения энергопотребления микроконтроллер может быть переведен в режим работы с пониженной частотой (Slow-Down mode). Тактовая частота может быть уменьшена в 2к раз (к=1,2,3,:,11). Энергопотребление также может быть уменьшено путем останова процессора с сохранением работы других блоков (Idle mode) или путем останова одного или нескольких периферийных устройств (ADC, CCU6, SSC, T2).

Микроконтроллер может быть переведен в режим пониженного энергопотребления (Power-Down mode), в котором остановлена работа всех устройств, но сохраняется возможность перехода в рабочий режим (Wake-up) при появлении нулевого (или единичного) уровня сигнала на входе приемника в блоке UART или при поступлении запроса прерывания из внешнего источника на входе EXINT0. В режиме пониженного энергопотребления работает дополнительный встроенный регулятор напряжения (Low power VR).

Внешние выводы микроконтроллера.

Микроконтроллер выпускается в корпусе PG-TSSOP-38, имеющем 38 выводов. 27 выводов являются выводами параллельных портов. Все выводы портов могут выполнять альтернативные функции. При этом один и тот же вывод в зависимости от использования разных периферийных устройств может выполнять разные альтернативные функции. Внутренние выводы периферийных устройств могут подключаться к разным выводам корпуса микроконтроллера.

Кроме выводов параллельных портов у микроконтроллера имеются

  • два вывода (Vddp и Vdds) для подключения внешнего источника питания с напряжением 3,3 В или 5,0 В,
  • два вывода (XTAL1 и XTAL2) для подключения внешнего кварцевого или керамического резонатора с частотой 3-12 МГц,
  • два вывода (Vddc и Vssc) для контроля напряжения питания ядра,
  • два вывода (Varef и Vagnd) для подключения источника опорного напряжения для ADC,
  • вывод RESET для приема сигнала перезапуска микроконтроллера,
  • выводы MBC и TMS, которые совместно с выводом порта Р0.0 предназначены для установки режима работы микроконтроллера в соответствии с табл. 2.

Режим MBC TMS P0.0
Рабочий (User Mode) 1 X X
Загрузка памяти 0 0 X
Отладка программы 0 1 1

2. Периферийные устройства микроконтроллера типа XC866.

В группу периферийных устройств входят блоки в составе ядра микроконтроллера (Т0, Т1, IC, UART) и блоки, подключенные к ядру с использованием внутренней периферийной шины, (T2, WDT, CCU6, SSC, ADC, P0, P1, P2, P3, OCDS).

Параллельные порты Р0, Р1, Р2. Р3.

Порт Р0 имеет 6 выводов (Р0-Р5), которые могут использоваться для ввода и вывода данных. Выводы порта выполняют альтернативные функции при работе блоков CCU6, UART, SSC и OCDS. Вывод Р0.0 может использоваться для выдачи тактового сигнала с частотой fosc. Вывод Р0.5 может использоваться для приема запроса прерывания из внешнего источника (EXINT0).

Порт P1 имеет 5 выводов (P1.0, P1.1, P1.5-P1.7), которые могут использоваться для ввода и вывода данных. Выводы порта выполняют альтернативные функции при работе блоков CCU6, UART, SSC, T2 и OCDS. Выводы P1.1, P1.5 и P1.6 могут использоваться для приема запросов прерывания из внешних источников (EXINT3, EXINT5 и EXINT6 соответственно).

Порт Р2 имеет 8 выводов (Р2.0-Р2.7). Выводы порта могут использоваться только как входы для ввода данных. Выводы порта выполняют альтернативные функции при работе блоков CCU6, ADC и OCDS. Выводы Р2.0 и Р2.1 могут использоваться для приема запросов прерывания из внешних источников (EXINT1 и EXINT2 соответственно).

Порт Р3 имеет 8 выводов (Р3.0-Р3.7), которые могут использоваться для ввода и вывода данных. Выводы порта выполняют альтернативные функции при работе блока CCU6. Вывод Р3.7 может использоваться для приема запросов прерывания из внешнего источника (EXINT4).

При вводе и выводе данных направление передачи через двунаправленный вывод задается с использованием программных средств. При этом также задается схема подключения вывода (pull-up, pull-down, tristate). При работе вывода в качестве входа используется триггер Шмитта.

Таймер Т0 ведет счет импульсов во внутреннем сигнале с частотой fclk/2 (счет времени).

В состав таймера входят два восьмиразрядных счетчика (TL0 и TH0). Счет может вестись по модулю 213 (режим 0), 216 (режим 1) или 28 с автозагрузкой (режим 2). При переполнении счетчика формируется запрос прерывания Timer0 Overflow.

Таймер Т0 может использоваться как два независимых таймера с модулем счета 28 (режим 3), при переполнении которых формируются запросы прерывания Timer0 Over-flow и Timer1 Overflow.

Таймер может работать в режиме управляемого счета (Gating Control). В этом режиме счет ведется при единичном значении сигнала на входе EXINT0.

Таймер Т1 устроен и работает аналогично таймеру Т0, но не может работать в режиме 3. При переполнении счетчика формируется запрос прерывания Timer1 Overflow.

Таймер Т2 ведет счет импульсов во внутреннем сигнале с частотой fclk/12к (к=1, 2,4,8,16). В состав таймера входит шестнадцатиразрядный счетчик и шестнадцатиразрядный регистр.

Таймер может работать в режиме счета на сложение по модулю 216 с автозагрузкой. Перепись кода из регистра в счетчик происходит при переполнении счетчика и может происходить при заданном изменении уровня внешнего сигнала на входе Т2EX.

Таймер может работать в режиме с изменение направления счета (Up/Down Count). При единичном значении сигнала на входе T2EX ведется счет на сложение, а при нулевом значении - на вычитание. При счете на сложение перепись кода из регистра в счетчик происходи при переполнении счетчика и продолжается счет на сложение. При счете на вычитание код в счетчике сравнивается с кодом в регистре. При совпадении кодов в счетчик заносится код FFFFH и продолжается счет на вычитание.

Таймер может работать в режиме счета на сложение с переписью кода из счетчика в регистр при заданном изменении уровня сигнала на входе Т2EX (режим захвата - capture mode).

В блоке формируются два запроса прерывания - при переполнении счетчика и при изменении уровня сигнала на входе Т2EX. После объединения по схеме ИЛИ запрос прерывания поступает на вход контроллера прерываний.

Сторожевой таймер WDT (Watch Dog Timer) предназначен для обнаружения сбоев в ходе программы. В состав таймера входит шестнадцатиразрядный счетчик, который ведет счет времени с частотой fclk/2 или fclk/128. При переполнении счетчика формируется запрос немаскируемого прерывания WDT Overflow и через определенный интервал времени происходит сброс и перезапуск микроконтроллера.

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

Длительность интервала счета WDT от запуска/перезапуска до переполнения задается программными средствами и может находиться в пределах от 25,6 мкс до 699 мс (при fclk=26,66 МГц).

Сброс и перезапуск счетчика могут быть запрещены на начальном этапе счета, длительность которого задается программными средствами.

Блок захвата-сравнения CCU6 (Capture/Compare Unit6) предназначен для определения временных характеристик входных импульсных сигналов и формирования выходных импульсных сигналов с заданными временными характеристиками. Сигналы, формируемые в блоке, могут использоваться для запуска преобразования в аналого-цифровом преобразователе.

В состав блока входит шестнадцатиразрядный таймер Т12, содержащий три канала захвата-сравнения (каналы 0,1,2), и шестнадцатиразрядный таймер Т13, содержащий один канал сравнения (канал 3).

Каждый канал таймера Т12 имеет три вывода - вход/выход CC6x, выход COUTx и вход CCPOSx (х=0,1,2).

Канал таймера Т13 имеет один выход - COUT3.

Кроме названных выводов блок CCU6 имеет три входа - T12HR, T13HR и CTRAP.

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

В состав таймера Т12 входит счетчик, два регистра для задания периода работы счетчика (T12PR и T12PS) и три пары регистров, образующих три канала захвата-сравнения, (CC6xR и CC6xSR, x=0,1,2). На вход счетчика подается тактовый сигнал с частотой fclk/k, k=2,4,8,:,128. Счет начинается по команде в программе или при заданном изменении уровня сигнала на входе T12HR.

Счетчик может работать в двух режимах. В первом режиме (Edge-aligned mode) счетчик ведет счет на сложение до числа, код которого задан в регистре T12PR, сбрасывается в нулевое состояние и далее может продолжать счет на сложение. Во втором режиме (Center-aligned mode) счетчик ведет счет на сложение до числа, код которого задан в регистре T12PR, переходит в режим счета на вычитание до числа 1 и далее может продолжать счет на сложение. Описанные процедуры могут выполняться однократно (Single shot mode) или повторяться многократно.

При совпадении кодов в счетчике и в регистре T12PR формируется запрос прерывания T12 Period match. Во втором режиме при появлении в счетчике кода числа 1 формируется запрос прерывания T12 One match.

Регистр T12PS используется для занесения в регистр T12PR нового кода.

Каналы захвата-сравнения могут работать независимо друг от друга.

В режиме захвата вывод CC6x используется в качестве входа. Код, сформированный в счетчике, переписывается в регистр CC6xR и/или в регистр CC6хSR при определенном изменении уровня сигнала на входе CC6x. При этом может происходить перепись ранее захваченного кода из регистра CC6xSR в регистр CC6xR (Double-register capture mode). При захвате кода формируется запрос прерывания CC6x.

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

Операция захвата в канале 0 может выполняться с использованием сигнала от внешнего датчика, поступающего на вход CCPOS0 (Hall sensor mode). В этом режиме проверяется качество сигнала от датчика и формируются запросы прерывания Correct Hall Event или Wrong Hall Event.

Захват кода из счетчика может выполняться при заданном изменении сигналов на входах CC6x и CCPOSx с занесением кодов в регистры CC6xR и CC6xSRсоответственно (Multi-Input Capture mode).

В режиме сравнения вывод CC6x используется в качестве выхода. Код в регистре CC6xR сравнивается с кодом в счетчике. При совпадении кодов изменяется уровень сигнала на выходе CC6x или на выходе COUTx или на обоих выходах. При использовании двух выходов уровни сигналов на них изменяются в противоположном направлении.

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

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

В режиме сравнения может использоваться внешний сигнал, поступающий на вход CCPOSx. При нулевом значении этого сигнала сигналы на выходах CC6x и COUTx принимают пассивное значение (Hysteresis-like mode).

В состав таймера T13 входит счетчик, два регистра для задания периода работы таймера и два регистра, образующих канал сравнения, (CC63R и CC63SR).

На вход счетчика подается тактовый сигнал с частотой fclk/k, k=2,4,8,:,128. Счет начинается по команде в программе или при заданном изменении уровня сигнала на входе T13HR. Счетчик работает в одном режиме (Edge-aligned mode). При появлении в счетчике кода числа, совпадающего с кодом числа в регистре T13PR, формируется запрос прерывания T13 Period match.

При совпадении кодов в счетчике и в регистре CC63R изменяется уровень сигнала на выходе COUT3 и формируется запрос прерывания T13 Compare match.

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

Блок CCU6 может работать в многоканальном режиме (Multi channel mode). В этом режиме уровни сигналов на шести выходах блока (CC6x и COUTx, x= 0,1,2) определяются значением битов в шести разрядах кода в регистре MCMP. Предварительно код записывается в регистр MCMPS. Перепись кода из регистра хранения MCMPS в регистр управления MCMP может происходить с использованием сигналов из таймера T12 или таймера T13 или внешнего датчика. При переписи кода формируется запрос прерывания Multi-channel Shadow Transfer.

Блок CCU6 может работать в специальном режиме для управления двигателем постоянного тока с использованием сигналов от датчиков Холла, поступающих на входы CCPOSx (Brushless-DC control).

Работа всех каналов блока CCU6 может быть остановлена путем подачи нулевого уровня сигнала на вход CTRAP или по команде в программе. При появлении нулевого уровня сигнала на входе CTRAP формируется запрос прерывания CTRAP.

В блоке CCU6 могу быть сформированы 11 запросов прерывания. В контроллере прерываний (IC) для приема запросов прерывания из блока CCU6 имеются 4 входа. Программными средствами из 11 запросов для использования могут быть выбраны любые четыре. Каждый из выбранных запросов может быть подан на любой из четырех входов контроллера прерываний.

Блок UART (Universal Asynchronous Receiver-Transmitter).

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

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

Байт данных передается в составе кадра. В кадр входят стартовый бит, восемь битов данных и стоповый бит. Между старшим битом данных и стоповым битом может пoмещаться дополнительный бит. Дополнительный бит может использоваться для обнаружения ошибки при приеме кадра путем контроля на четность/нечетность числа единиц в байте данных. При обмене данными в микроконтроллерной сети дополнительный бит используется для различения кадров с адресом принимающей станции и кадров с байтами данных.

Скорость передачи/приема может задаваться путем выбора из двух фиксированных значений (fclk/32 или fclk/64) или путем задания программными средствами двух чисел (PRE и BG). Во втором случае скорость (BR)определяется по формуле:

BR= fclk/16PRE(BG+1).

Блок может работать в трех режимах.

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

В блоке формируются два запроса прерывания - запрос от приемника (RI) и запрос от передатчика (TI). После объединения по схеме ИЛИ запрос поступает на вход контроллера прерываний.

Выпускается модифицированный микроконтроллер (XC866L), в котором блок UART может использоваться для работы в сети по LIN-протоколу (Local Interconnect Network). Данные в сети передаются в составе кадра, который содержит стартовую паузу (Break), байт синхронизации (55H), байт идентификации, группу байтов данных и байт контрольной суммы. Передача каждого байта данных начинается со стартового бита и заканчивается стоповым битом.

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

Блок SSC (Synchronous Serial Channel) предназначен для обмена данными в последовательном коде между микроконтроллерами с использованием трех шин. Блок имеет три вывода - SCLK, MTSR и MRST. Шины соединяют одноименные выводы блоков SSC микроконтроллеров, участвующих в обмене.

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

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

Скорость обмена задается путем занесения кода числа BR в регистр синхрогенератора ведущего блока и определяется выражением fclk/2 (BR+1).

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

В блоке SSC формируются запросы прерывания при начале передачи кода (TIR), при завершении передачи кода (RIR) и при ошибке в работе приемника (EIR).

Запросы прерывания объединены по схеме ИЛИ и поступают на вход контроллера прерываний.

Блок ADC (Analog to Digital Converter) предназначен для формирования двоичного кода числа, пропорционального величине напряжения на одном из его входов. Блок имеет 8 входов (каналов). В качестве входов блока используются выводы параллельного порта Р2. Формируемый код может иметь десять или восемь разрядов. Для хранения получаемых кодов в блоке имеются четыре регистра результата.

Аналого-цифровое преобразование выполняется по методу последовательного приближения с частотой fclki (fclki = fclk/k, k=2,3,4,32). Значение тактовой частоты fclki должно быть не более 10 МГц. Число тактов, затрачиваемых на выполнение преобразования, зависит от числа разрядов в формируемом коде и заданного числа тактов, отводимых на опрос значения напряжения на входе (sample time).

В блоке имеются две схемы (Slot0 и Slot1) для приема заявок на выполнение преобразования. Заявка представляет собой группу кодов, которые заносятся в определенные регистры блока. Одна схема (Slot0) предназначена для приема заявок на выполнение преобразования с использованием одного входа, в качестве которого может быть любой из восьми входов блока. Последовательность выполнения преобразований с использованием разных входов определяется последовательностью поступления заявок. Преобразование с использованием указанного в заявке входа может выполняться неоднократно.

Другая схема (Slot1) предназначена для приема заявок, в которых параллельно задаются от одного до четырех входов, в качестве которых могут использоваться входы с номерами от 4 до 7. Последовательность выполнения преобразований с использованием заданных входов указывается в заявке. Входы могут использоваться в режиме автосканирования.

Состояние схем приема и хранения заявок опрашивается схемой арбитража. Опрос может выполняться в непрерывном режиме или при поступлении заявки. Каждой из схем присваивается приоритет - высокий или низкий. При наличии заявок в обеих схемах выполняется заявка из схемы с высоким приоритетом.

В заявке указываются способ и режим запуска преобразования и особенности формирования запроса прерывания при выполнении заявки.

Запуск преобразования может происходить по команде в программе или при наступлении определенного события (ETR0 - ETR7) в работе блока CCU6 (внешний запуск). Если в момент запуска в преобразователе выполняется ранее запущенное преобразование, возможны два режима выполнения запуска. В одном режиме (Wait- for start) запуск нового преобразования происходит после завершения текущего преобразования. В другом режиме (Cancel-inject-repeat) выполнение ранее запущенного преобразования прекращается и начинает выполняться преобразование по новой заявке. Заявка на выполнение остановленного преобразования сохраняется.

Запрос прерывания текущей программы может поступать в контроллер прерываний с одного из двух выходов блока ADC (SR0 и SR1), которые объединены по схеме ИЛИ. Запрос прерывания может формироваться при завершении преобразования и записи результата в регистр результата или при получении результата, попадающего в одну из заданных областей возможных значений результата. Для выделения областей задаются две границы (Boundary1 и Boundary2).

Имеется возможность выполнять процедуру редактирования результата преобразования (Data reduction filter) с использованием результатов нескольких преобразований в данном канале. Для сохранения ранее полученных результатов используется специальный режим (Wait- for read).

Блок OCDS (On-Chip Debbug Support) используется в режиме отладки программы после установки микроконтроллера в аппаратуре и загрузки программы и исходных данных в память микроконтроллера.

Переход из режима загрузки (Boot Strap load mode) в режим отладки происходит при замене нулевого значения сигнала на входе TMS единичным значением при сохранении нулевого значения сигнала на входе MBC и единичном значении сигнала на входе Р0.0.

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

В блоке находятся 14 источников запросов прерывания. Запросы объединены по схеме ИЛИ и поступают на вход немаскируемого прерывания (OCDS interrupt) в контроллер прерываний.

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

Контроллер прерываний имеет 15 входов, из которых один вход предназначен для приема запросов немаскируемого прерывания (NMI). Запрос прерывания на этом входе имеет высший приоритет.

На вход NMI поступают запросы прерывания из семи источников, один из которых находится в блоке генератора тактовых сигналов (PLL Loss of Lock), один в блоке WDT (WDT Overflow), два в блоках Flash-памяти (Flash Timer overflow и Flash ECC Error), два в блоке питания (Vddp Pre-Warning и Vdd Pre-Warning) и один в блоке OCDS (OCDS interrupt). Запросы объединены по схеме ИЛИ. Поступление каждого запроса в отдельности может быть заблокировано в соответствующем блоке с использованием программных средств.

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

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

Наиболее высокий приоритет имеет запрос из внешнего источника на входе микроконтроллера EXINT0, далее следуют в порядке убывания приоритета запрос из таймера T0, запрос из внешнего источника на входе EXINT1, запрос из таймера T1, запрос из блока UART, запрос из таймера T2, запрос из блока ADC, запрос из блока SSC, запрос из внешнего источника на входе EXINT2, запрос, получаемый в результате объединения по схеме ИЛИ запросов из внешних источников на входах EXINT3-EXINT6 и четыре запроса CCU60, CCU61, CCU62 и CCU63 из блока CCU6. В качестве источников запросов прерывания на входах CCU6x (x=0,1,2,3) могут использоваться любые четыре источника из 11 источников, расположенных в блоке CCU6.

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

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

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

3. Система команд микроконтроллеров семейства ХС800.

В систему команд входят все 111 команд системы команд MCS-51. Машинные коды команд имеют формат один байт, два байта или три байта. В качестве машинного кода однобайтовой команды и первого байта многобайтовой команды используются 255 байтов из 256 возможных. Неиспользуемый байт (A5H) в системе команд микроконтроллеров семейства ХС800 является машинным кодом двух дополнительных команд - команды с мнемокодом MOVC @(DPTR++),А и команды с мнемокодом TRAP.

Операция, выполняемая в микроконтроллере при поступлении в регистр команд кода A5H, определяется значением разряда TRAP_EN в регистре EO. При единичном значении выполняется команда TRAP, при нулевом значении - команда MOVC @(DPTR++),A.

По команде с мнемокодом TRAP выполняется программное прерывание с передачей управления программе Monitor. По команде с мнемокодом MOVC @(DPTR++), A выполняется перепись байта из регистра-аккумулятора в ячейку памяти в блоке XRAM по адресу в адресном пространстве памяти программ, который указан в выбранном регистре DPTR. После пересылки байта адрес в регистре DPTR увеличивается на 1. Команда выполняется за 2 машинных цикла.

Стандартный ассемблер MCS-51 не воспринимает мнемокоды TRAP и MOVC @(DPTR++),A. При записи программы на языке ассемблера вместо мнемокода этих команд записывается код ".byte#A5H".

Литература.

  • XC800 Microcontroller Family.
    Architecture and Instruction Set.
    User's Manual, V0.1, Jan 2005
  • XC866 8-Bit Single Chip Microcontroller. User's Manual, V0.2, Jan.2005.
  • XC866 8-Bit Single Chip Microcontroller. Data Sheet, V0.1, Feb.2005.
© 1999-2016 All Right Reserved. EFO Ltd. При использовании материалов ссылка на источник обязательна.
Контактная информация