В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

  • Alliance Semicon
  • Altera
  • Amic
  • Analog Devices
  • Atmel
  • Austriamicrosystems
  • Avago
  • Cypress
  • Cree
  • Exar
  • Fairchild
  • Freescale
  • Fujitsu
  • Hynix
  • Holtek
  • IMP
  • Infineon
  • Inova
  • IR
  • Linear Technology
  • MagnaChip
  • Maxim
  • Megawin
  • Microchip
  • Миландр
  • National Semicon
  • Nuvoton
  • NXP Semicon.
  • Power Integrations
  • Radiocrafts
  • Ramtron
  • Rayson
  • ROHM
  • Semikron
  • Silicon Lab
  • Sirenza
  • STMicro
  • SonyEricsson
  • Telecontrolli
  • Telit
  • TechFaith Wireless
  • Texas Insrt
  • TranSystem Inc.
  • Trimble
  • Xilinx
  • White Eleсtronic
  • WAVECOM
  • Wonde Proud Tech.
  •  
    Пересюхтюмя


    13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





    Выставка Передовые Технологии Автоматизации





    Главная страница > Компоненты > Infineon Technologies AG > C166
    Пересюхтюмя


    13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





    Выставка Передовые Технологии Автоматизации


    Конфигурирование семейства C166

    Введение

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

    В начале процесса разработки у программиста из-за недостатка информации и навыка может возникнуть ряд серьезных проблем, что приводит к потерям времени. Затрачиваются многие часы работы по конфигурированию кристалла прежде, чем будет написана первая строка реального прикладного кода. Целью статьи является помощь на первых шагах конфигурирования микроконтроллеров семейства Infineon C166, используя C- компилятор Keil. Поскольку C-компилятор инициирует специальные регистры конфигурации значениями, действующими по умолчанию, следует изменить эти значений в соответствии с контекстом конкретного проекта.

    Микроконтроллеры C166 легко настраиваются на любое управляющее приложение. На начальном этапе в качестве отладочного средства для тестирования начальных установок могут быть использованы оценочные платы фирм Keil и Phytec. Хотя в статье речь идет о самом мощном микроконтроллере C167CR, все изложенное в равной степени справедливо для других членов семейства C166. Оценочную версию C-компилятора Keil можно получить в Интернете по адресу www.keil.com.

    Возможности конфигурирования

    При конфигурировании микроконтроллеров семейства С166 используется два метода для конфигурации. Первый метод состоит в задании содержимого регистров SYSCON и BUSCON0 путем считывании состояний линий 16-разрядного Порта 0 на момент сброса для задания параметров при считывании первых команд из памяти. Для этой цели на оценочной плате Pull-down резисторы через джамперы подключены к линиям Порта 0. Конфигурация может быть изменена и программным путем после сброса. На конец фазы инициализации указывает выполнение специальной команды EINIT, после чего некоторые параметры уже не могут быть изменены (например, SYSCON и запрет сторожевого таймера). Скажем несколько слов о специальных регистрах конфигурации.

    SYSCON - 16 разрядный побитно-адресуемый регистр, расположенный по адресу FF12, который не может быть модифицирован после выполнения команды EINIT. SYSCON содержит следующие управляющие биты: разрешение доступа к внутренней Х-шине (XBUS), разрешение и мэппинг встроенного ПЗУ, разрешение линии выходного такта (CLKOUT), разрешение сегментации памяти и размер системного стека.

    Шина XBUS является внутренним представлением внешней шины и используется для доступа к расширению встроенного ОЗУ и периферии. Адресация кода происходит путем разбиения адресного пространства на сегменты в 64 Кбайт.

    BUSCON - это пять 16-разрядных регистров, которые управляют временами обращения к памяти, ожидания и задержки, генерацией сигналов выборки кристалла (chip select) при чтении и записи из памяти и задают режим работы системной шины: разрядность шины данных (16 или 8 бит) и мультиплексный/демультиплексный режим. Регистры BUSCON расположены по адресам FF0C-FF1A. Четыре регистра BUSCON1-BUSCON4 задают характеристики четырех областей памяти, которые могут иметь разные режимы работы. Размер и начальный адрес этих окон задается в регистрах ADDRSEL1-ADDRSEL4. Характеристики системной шины для областей памяти, не перекрываемых данными четырьмя адресными диапазонами, задаются в регистре BUSCON0 и устанавливаются аппаратно при считывании линий порта 0 во время сброса. Поскольку содержимое регистров BUSCON1-BUSCON4 может быть изменено и после выполнения команды конца инициализации EINIT, в статье рассматривается только изменение параметров регистра BUSCON0.

    STKOV - 16-разрядный регистр для фиксации переполнения системного стека. Он расположен по адресу FE14, его состояние по умолчанию - FA00, т.е. старшие 5 разрядов установлены в "1", а младшие 11 разрядов могут быть изменены.

    Data Page Pointers (указатели на страницу данных) - это четыре 10 разрядных регистра DPP0-DPP3, используемые для доступа к одной из 1024 страниц памяти размером по 16 Кбайт. Регистры DPP расположены по адресам FE00-FE06 и в них после сброса выставляются номера страниц от 0 до 3 соответственно. С помощью указателя на страницу данных 16-разрядному адресу ставится в соответствии 24-разрядный физический адрес. Полный физический адрес формируется следующим образом: 14 младших разрядов адреса повторяются в 14 младших разрядах физического адреса, а 2 старших разряда выбирают один из четырех регистров DPP, содержащий соответствующий номер страницы, который и образует старшие 10 разрядов физического адреса.

    Context Pointer (CP) - 16 разрядный регистр-указатель (11 разрядов могут быть модифицированы), определяющий расположение активного регистрового банка. Регистровый банк произвольно размещается во встроенном ОЗУ, и для его переключения достаточно изменить содержимое CP. Регистровый банк составляют до 16 регистров общего назначения (general purpose register).

    Микроконтроллеры семейства Infineon C166 отличаются гибкостью и легко адаптируемы ко многим приложениям. Многие характеристики здесь не обсуждаются, но они подробно описаны в соответствующих руководствах пользователя, которые доступны на сайте Infineon www.infineon.com/products/micro/micro.htm. Эти параметры также легко программируются при использовании C-компилятора Keil.

    Инструментальные средства Keil

    Инструментальные средства Keil полностью поддерживают все микроконтроллеры семейства Infineon C166 (С161, С163, С164-CI, С165, 80С166, С167 и 167CR). Пакет инструментальных средств PK166 включает C-компилятор, макроассемблер, компоновщик, интегрированную среду разработки µVision, отладчик/симулятор dScope и отладочный монитор. Отладчик dScope может работать как с виртуальной, так и с реальной отлаживаемой системой (например, оценочными платами фирм Keil и Phytec), используя ядро монитора, которое находится в отладочном ОЗУ или ПЗУ.

    Ниже приведена простая программа генерации меандра выводами порта 7, для запуска которой следует ввести ее текст в интегрированной среде разработки µVision и указать физический адрес. Заметим, что включенный файл заголовка stdio.h в данном случае не нужен. Указания по компиляции содержатся в руководстве по демо-версии, которое можно найти на сайте Keil по указанному выше адресу или запросить у нас.

    /* Copyright 1998 Keil Software, Inc. */
    /* Robert Boys, Dallas, Texas */
    #include <stdio.h>  /* standard I/O .h-file */
    #include <reg167.h> /* special function register 80C167 */
    void main (void)    /* execution starts here */
    { 
    long int delay;
    DP7 = 0xff;         /* set Port 7 as all outputs */
    while (1)           /* run forever */
    {
    P7 = 0;             /* turn Port 7 off then wait */
    for(delay=0; delay <=59000L; delay++);
    P7 = 0xff;          /* turn Port 7 on then wait */
    for(delay=0; delay <=59000L; delay++); 
    }
    }

    После компиляции этого файла и вызова dScope, на экране отображается ассемблерный текст инициирующей программы С_STARTUP. По адресу памяти 0 записана не отображенная на рисунке команда JMPS перехода на адрес 0BC.

    Первая отображенная команда DISWDT запрещает сторожевой таймер. В противном случае следует программно активировать таймер каждые несколько миллисекунд или будет сгенерирован сигнал trap. Затем идут команды установки специальных регистров SYSCON, BUSCON0, STKOV, CP, трех регистров DPP, которые заканчиваются командой EINIT. Для установок регистров использованы значения по умолчанию, содержащиеся в библиотеках. Команды BFLDL и BFLDH используются для модификации младшего или старшего байта 16 разрядного регистра. Синтаксис команд следующий: BFLDx регистр назначения, AND-маска, OR -маска. Бит из регистра, на который указывает "1" в AND- маске заменяется соответствующим битом из OR-маски. В зависимости от выбранной команды модифицируется младший или старший байт регистра. В выделенной строке 0C8H обнуляется старший байт регистра SYSCON, а команда в строке 0CCH обнуляет биты на позициях 7 и 2 в младшем байте.

    Изменение параметров конфигурации

    Начальная конфигурация микроконтроллера описывается в файле start167.a66, расположенном в директории c:\c166eval\lib. Для изменения параметров конфигурации следует отредактировать содержимое этого файла с помощью любого ASCII редактора, например, интегрированного в mVision. Поскольку start167.a66 является шаблоном для создания собственной процедуры инициализации, его следует скопировать в директорию проекта и изменить уже там. Затем новый файл следует включить в файл проекта вместе с исходным С кодом, чтобы во время компиляции и компоновки mVision использовала не библиотечный, а откорректированный файл.

    $MOD167	; Define C167 mode
    ;
    ;------------------------------------------------------------------------------
    ; This file is part of the C166 Compiler package
    ; Copyright KEIL ELEKTRONIK GmbH 1993-1997
    ;------------------------------------------------------------------------------
    ; START167.A66: This code is executed after processor reset and provides
    ;               the startup sequence for the C167/C165/C163 processor.
    ;
    ; Definitions for SYSCON and BUSCON0 Register:
    ; --------------------------------------------
    ;
    ; MCTC0: Memory Cycle Time (BUSCON0.0 .. BUSCON0.3):
    ; Note: if RDYEN0 == 1 a maximum number of 7 waitstates can be selected 
    _MCTC0	EQU	1	; Memory wait states is 1 (MCTC0 field = 0EH).
    ;			; (Reset Value = 15 additional state times)
    ;
    ; BTYP0: External Bus Configuration Control (BUSCON0.6 .. BUSCON0.7):
    _BTYP0	EQU	2	; 0 = 8 Bit Non Multiplexed
    ;			; 1 = 8 Bit Multiplexed
    ;			; 2 = 16 Bit Non Multiplexed
    ;			; 3 = 16 Bit Multiplexed
    ;
    ; ALECTL0: ALE Lengthening Control Bit (BUSCON0.9):
    _ALECTL0 EQU	0	; see data sheet for description
    ;
    ; XRAMEN: XRAM Enable Control Bit (SYSCON.2)
    _XRAMEN	EQU	0	; 0 = access to on-chip XRAM disable, ext. bus access
    ;			; 1 = on-chip XRAM is accessed
    ;
    $SET (WRCFG_ENABLE = 0) ; 0 = WRCFG is set according to the level at
    			; pin P0H.0 during reset.
    			; 1 = the following _WRCFG value is
    			; written to WRCFG in the SYSCON register
    ; WRCFG: Write Configuration Control Bit (SYSCON.7):
    _WRCFG	EQU	0	; 0 = Normal configuration of WR# and BHE#
    ;			; 1 = WR# pin acts as WRL#, BHE# pin acts as WRH#
    ;
    ; CLKEN: System Clock Output Enable bit (SYSCON.8):
    _CLKEN	EQU	0	; 0 = disabled (Reset Value)
    ;			; 1 = enabled
    ;
    ; ROMEN: Internal ROM Access Enable is read only (SYSCON.10):
    _ROMEN	EQU	0	; 0 = Internal ROM disabled
    			; 1 = Internal ROM enabled
    ;
    ; STKSZ: Maximum System Stack Size selection (SYSCON.13 .. SYSCON.15)
    ; Defines the system stack space which is used by CALL/RET and PUSH/POP
    ; instructions. The system stack space must be adjusted according the
    ; actual requirements of the application.
    $SET (STK_SIZE = 0)
    ;	System stack sizes:
    ; 	0 = 256 words (Reset Value)
    ;	1 = 128 words
    ;	2 = 64 words
    ;	3 = 32 words
    ;	4 = 512 words
    ;	5 = not implemented
    ;	6 = not implemented
    ;	7 = no wrapping (entire internal RAM use as STACK, set size with SYSSZ)
    ;
    ; BUSCON1/ADDRSEL1 .. BUSCON4/ADDRSEL4 Initialization
    ; ===================================================
    ;
    ; BUSCON1/ADDRSEL1
    ; --- Set BUSCON1 = 1 to initialize the BUSCON1/ADDRSEL1 registers
    $SET (BUSCON1 = 0)
    ;
    ; Define the start address and the address range of Chip Select 1 (CS1#)
    ; This values are used to set the ADDRSEL1 register
    %DEFINE (ADDRESS1) (100000H)	; Set CS1# Start Address (default 100000H)
    %DEFINE (RANGE1) (1024K)	; Set CS1# Range (default 1024K = 1MB)
    
    ASSEMBLY CODE FOLLOWS HERE . . . . . . .

    Размер системного стека, изменяемый в пределах от 32 до 1024 слов, задают 3 старших бита регистра SYSCON. Размер стека по умолчанию после сброса равен 256 слов - старшие 3 бита регистра SYSCON равны 0. Эти биты могут быть изменены командой BFLDH. Чтобы установить стек размером 128 слов, необходимо следующим образом модифицировать файл start167.a66:

    $SET (STK_SIZE = 1)
    ;	System stack sizes:
    ;	0 = 256 words (Reset Value)
    ;	1 = 128 words

    Единственным изменением является замена "0" - на "1"! Результат рекомпиляции и загрузки в dScope приведен ниже. OR-маска на строке 0C8H теперь равна 20H, что соответствует установке бита 13 регистра SYSCON в "1". Таким образом при использовании инструментальных средств Keil параметры конфигурации легко модифицировать. Это в равной степени относится и к модификации других регистров.

    Следует обратить внимание, что поле AND команды в строке 0CCH изменило значение с 84H на 04H по сравнению с первым экраном. Это вызвано тем, что при генерации кода для бита WRCFG (" write configuration control" - 7-ой бит регистра SYSCON) первоначально было использовано значение по умолчанию "0". Чтобы изменить этот бит на "1" следует лишь внести следующее изменение:

    $SET (WRCFG_ENABLE = 1) ; 0 = WRCFG is set according to the level at
                            ; pin P0H.0 during reset.

    При этом OR-маска в cтроке 0CCH становится нулевой.

    По умолчанию системная шина C166 сконфигурирована, как 16-разрядная, демультиплексная. При работе с мультиплексной шиной, следует внести изменения в регистр SYSCON. Для этого в строке _BTYP0 EQU 2 "2" заменяется на "3", и после рекомпиляции и загрузки в отладчик dScope тип шины станет мультиплексным. Универсальность C166 достигается большим числом таких настроек.

    Заключение

    Программное обеспечение Keil позволяет загружать и выполнять программы, устанавливать контрольные точки, просматривать состояние памяти в режиме симуляции или ведя отладку на реальных аппаратных средствах. В состав пакета входит отладочный монитор, ядро которого может быть сконфигурировано для каждой из плат. Пакет инструментальных средств Keil поддерживает практически все оценочные платы, в том числе фирм Keil и Phytec, информацию о которых можно получить либо на наших страницах, либо по адресам www.phytec.de и www.keil.com. Оценочные платы особенно полезны на начальном этапе разработки для определения требуемого размера памяти и конфигурации шины. При этом тестируются различные варианты конфигурации шины и памяти ипроводится их сравнение для дальнейшего использования в реальных разработках. Инструментальных средство Keil вместе с оценочной платой, подключенной через монитор dScope, представляют мощный и экономичный комплекс разработки, предлагающим простой механизм конфигурирования микроконтроллеров. Семейство Infineon C166 предлагает гибкую настройку и подходит практически для любого приложения. У микроконтроллеров этого семейства есть множество других возможностей, с которыми можно ознакомиться на наших страницах.



    <-- Предыдущая страница Оглавление Следующая страница -->