- Применение
- Схема
- Компоненты
- Микроконтроллеры
- Мониторы
- Редактор/компилятор
- Файлы
- Файл описания
- Разработка
Файл описания
Этот файл описывает, компонентом какого типа является данное устройство, а также его части или модули.
Каждый тип модульного компонента имеет свои собственные характеристики и может использовать определённые типы модулей, но в общих чертах структура следующая:
Корневой элемент:
Основные характеристики определяются в корневом элементе.
Имя тега может быть любым, типичные примеры: «mcu» для микроконтроллеров или «iou» (Input/Output Unit) для модулей ввода-вывода.
<mcu name="mega8" core="AVR" data="1120" prog="4096" eeprom="512"freq="16000000" >
</mcu>
Возможные поля в корневом элементе:
- name: имя компонента, только для справки, не имеет функционального эффекта.
- core: тип ядра. Доступные ядра: AVR, Pic14, Pic14e, 8051, 6502, Z80, scripted.
- data: размер памяти данных (ОЗУ).
- prog: размер памяти программ (ПЗУ) в словах PGM.
- progword: размер слова PGM в байтах.
- eeprom: размер энергонезависимой памяти (EEPROM).
- freq: тактовая частота.
- inst_cycle: количество тактовых циклов на машинный цикл инструкции.
- cpu_cycle: количество тактовых циклов на цикл процессора.
Модули:
Вы можете добавлять различные модули:
Регистры:
Базовая структура:
<regblock name="" start="" end="" offset="">
<register name="" addr="0x0003" reset="" mask="" bits=""/>
<register name="" addr="0x0003" reset="" mask="" bits=""/>
<register name="" addr="0x0003" reset="" mask="" bits=""/>
</regblock>
Поле «regblock»:
Представляет собой блок памяти, содержащий регистры.
Эти регистры должны помещаться в размер ОЗУ, указанный в корневом элементе.
- name: имя блока (не имеет большого значения).
- start: начальный адрес.
- end: конечный адрес (должен быть <= конца ОЗУ).
- offset: смещение адреса (это значение прибавляется к адресу регистра).
Поле «register»:
Представляет собой отдельный регистр.
Адрес регистра должен находиться между начальным и конечным адресами его блока (regblock).
- name: Имя регистра.
- addr: Адрес регистра (в шестнадцатеричном формате, без учёта смещения).
- reset: значение после сброса, 8 бит, по умолчанию = «00000000».
- mask: маска записи, 8 бит, по умолчанию = «11111111». Влияет только на операции с DataSpace::writeReg(). mask = 0: значение не маскируется, но регистр защищён от записи (write protected). Иначе: биты, помеченные как 0, маскируются (игнорируются) в записываемом значении.
- bits: список имён битов (разделённых запятыми). 0 означает отсутствие имени.
Регистры должны быть определены до периферийных модулей и прерываний, так как они могут ссылаться на имена регистров или битов.
Блок данных:
Блок PGM:
Стек:
Прерывания:
Базовая структура:
<interrupts enable="">
<interrupt name="" enable="" flag="" priority="" vector="" clear="" />
<interrupt name="" enable="" flag="" priority="" vector="" clear="" />
<interrupt name="" enable="" flag="" priority="" vector="" clear="" />
</interrupts>
Поле «interrupts»
Представляет группу прерываний.
- enable: имя бита, разрешающего глобальные прерывания.
Поле «interrupt»
Представляет одиночное прерывание.
- name: Имя прерывания.
- enable: имя бита, разрешающего данное прерывание.
- flag: имя бита флага возникшего прерывания.
- priority: число, обозначающее приоритет прерывания (чем больше число, тем выше приоритет).
- vector: адрес в памяти программ (PM), по которому осуществляется переход при выполнении прерывания.
- clear: способ сброса флага прерывания.
Если значение пустое (clear=""), сбрасывать флаг автоматически после выполнения процедуры прерывания (автосброс).
Если clear="1", сбрасывать флаг путем записи 1 в бит флага прерывания.
Если clear="0", отключить автосброс (флаг не сбрасывается автоматически).
периферия:
ROM:
MCU Port:
IO Port:
Timer:
OCM:
(AVR)
CCP unit:
(PIC)
MSSP unit:
(PIC)
ADC:
DAC:
Comparator:
Vref:
USART:
TWI:
SPI:
Watchdog:
Sleep:
Config words:
Int Osc: