diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..7a2259e
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,6 @@
+# Общая кодировка редактируемых файлов проекта.
+root = true
+
+# Русские комментарии сохраняются без BOM в UTF-8.
+[*]
+charset = utf-8
diff --git a/.gitignore b/.gitignore
index 5d7cad2..dfa3c52 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,26 @@
+# Исключает из Git артефакты по шаблону ниже.
/Debug/
+# Исключает из Git артефакты по шаблону ниже.
/UKSSTMS320F28335.CS_/
+# Исключает из Git артефакты по шаблону ниже.
/Bin/UKSSTMS320F28335_*.bin
+# Исключает из Git артефакты по шаблону ниже.
/Bin/LoggerFix/
+# Исключает из Git артефакты по шаблону ниже.
/Bin/LoggerEepromFix/
+# Исключает из Git артефакты по шаблону ниже.
/Bin/Rs232FifoTest/
+# Исключает из Git артефакты по шаблону ниже.
/Bin/Rs232NoFifoTest/
+# Исключает из Git артефакты по шаблону ниже.
/Bin/UartFifoTest/
+# Исключает из Git артефакты по шаблону ниже.
/Bin/*.pending
+# Исключает из Git артефакты по шаблону ниже.
/UKSSTMS320F28335/Generated/
+# Исключает из Git артефакты по шаблону ниже.
/Bin/FirmwareIdentity/
+# Исключает из Git артефакты по шаблону ниже.
/Bin/*.bin.manifest.json
+# Исключает из Git артефакты по шаблону ниже.
/Bin/*.bin.sha256
diff --git a/Bin/.gitignore b/Bin/.gitignore
index 9f2cd4f..6ab4462 100644
--- a/Bin/.gitignore
+++ b/Bin/.gitignore
@@ -1 +1,2 @@
+# Исключает из Git артефакты по шаблону ниже.
/UKSSTMS320F28335.out
diff --git a/Doc/COMMENT_AUDIT.md b/Doc/COMMENT_AUDIT.md
new file mode 100644
index 0000000..a68f3e0
--- /dev/null
+++ b/Doc/COMMENT_AUDIT.md
@@ -0,0 +1,134 @@
+# Проверка комментариев и кодировки
+
+Проверка относится к редактируемым исходникам C/H, ASM, CMD, тестовым INC и Python.
+Каждая непустая строка кода имеет русское пояснение перед ней или на ней. Пустые строки,
+текст существующих комментариев и содержимое многострочных строк данных не считаются кодом.
+Исходные уведомления TI сохранены. JSON-паспорта, индексы IDE, таблицы XLS и двоичные
+результаты сборки не допускают исходных комментариев; их назначение описано в документации.
+
+UTF-8 проверен в 151 текстовых файлах. Строк кода: 18624.
+
+| Файл | Строк кода | С русским пояснением |
+| --- | ---: | ---: |
+| F28335.cmd | 69 | 69 |
+| Source/External/v120/DSP2833x_common/include/DSP2833x_DefaultIsr.h | 89 | 89 |
+| Source/External/v120/DSP2833x_common/include/DSP2833x_Dma_defines.h | 44 | 44 |
+| Source/External/v120/DSP2833x_common/include/DSP2833x_EPwm_defines.h | 89 | 89 |
+| Source/External/v120/DSP2833x_common/include/DSP2833x_Examples.h | 33 | 33 |
+| Source/External/v120/DSP2833x_common/include/DSP2833x_GlobalPrototypes.h | 156 | 156 |
+| Source/External/v120/DSP2833x_common/include/DSP2833x_I2c_defines.h | 58 | 58 |
+| Source/External/v120/DSP2833x_common/include/DSP2833x_SWPrioritizedIsrLevels.h | 5097 | 5097 |
+| Source/External/v120/DSP2833x_common/include/DSP28x_Project.h | 5 | 5 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_ADC_cal.asm | 8 | 8 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c | 14 | 14 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_CpuTimers.c | 45 | 45 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_PieCtrl.c | 37 | 37 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_PieVect.c | 143 | 143 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedDefaultIsr.c | 1012 | 1012 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedPieVect.c | 392 | 392 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c | 188 | 188 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c | 123 | 123 |
+| Source/External/v120/DSP2833x_common/source/DSP2833x_usDelay.asm | 7 | 7 |
+| Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_BIOS.cmd | 107 | 107 |
+| Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_nonBIOS.cmd | 108 | 108 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_Adc.h | 201 | 201 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_CpuTimers.h | 93 | 93 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_DMA.h | 142 | 142 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_DevEmu.h | 57 | 57 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h | 287 | 287 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_ECan.h | 948 | 948 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_ECap.h | 94 | 94 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_EPwm.h | 297 | 297 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_EQep.h | 165 | 165 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_Gpio.h | 320 | 320 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_I2c.h | 126 | 126 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_Mcbsp.h | 584 | 584 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_PieCtrl.h | 107 | 107 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_PieVect.h | 141 | 141 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_Sci.h | 142 | 142 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_Spi.h | 109 | 109 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_SysCtrl.h | 259 | 259 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_XIntrupt.h | 44 | 44 |
+| Source/External/v120/DSP2833x_headers/include/DSP2833x_Xintf.h | 77 | 77 |
+| Source/External/v120/DSP2833x_headers/source/DSP2833x_GlobalVariableDefs.c | 301 | 301 |
+| Source/Internal/ADC.c | 244 | 244 |
+| Source/Internal/DAC.c | 244 | 244 |
+| Source/Internal/Include/ADC.h | 4 | 4 |
+| Source/Internal/Include/DAC.h | 11 | 11 |
+| Source/Internal/Include/GPIO_table.h | 329 | 329 |
+| Source/Internal/Include/RS485.h | 84 | 84 |
+| Source/Internal/Include/bios_dsp.h | 42 | 42 |
+| Source/Internal/Include/caliber.h | 35 | 35 |
+| Source/Internal/Include/cntrl_adr.h | 17 | 17 |
+| Source/Internal/Include/crc16.h | 6 | 6 |
+| Source/Internal/Include/ecan.h | 4 | 4 |
+| Source/Internal/Include/eeprom_config.h | 9 | 9 |
+| Source/Internal/Include/filter_bat2.h | 36 | 36 |
+| Source/Internal/Include/gas167.h | 17 | 17 |
+| Source/Internal/Include/kanal.h | 1 | 1 |
+| Source/Internal/Include/log_to_mem.h | 37 | 37 |
+| Source/Internal/Include/measure.h | 90 | 90 |
+| Source/Internal/Include/message.h | 32 | 32 |
+| Source/Internal/Include/package.h | 127 | 127 |
+| Source/Internal/Include/peripher.h | 128 | 128 |
+| Source/Internal/Include/pulto.h | 1 | 1 |
+| Source/Internal/Include/spise2p.h | 74 | 74 |
+| Source/Internal/Include/tools.h | 5 | 5 |
+| Source/Internal/Include/ump_can_protocol.h | 8 | 8 |
+| Source/Internal/RS485.c | 530 | 530 |
+| Source/Internal/bios.c | 236 | 236 |
+| Source/Internal/cntrl_adr.c | 17 | 17 |
+| Source/Internal/crc16.c | 158 | 158 |
+| Source/Internal/ecan.c | 242 | 242 |
+| Source/Internal/filter_bat2.c | 12 | 12 |
+| Source/Internal/gas167.c | 53 | 53 |
+| Source/Internal/kanal.c | 153 | 153 |
+| Source/Internal/log_to_mem.c | 236 | 236 |
+| Source/Internal/main.c | 167 | 167 |
+| Source/Internal/measure.c | 625 | 625 |
+| Source/Internal/message.c | 289 | 289 |
+| Source/Internal/peripher.c | 227 | 227 |
+| Source/Internal/pulto.c | 88 | 88 |
+| Source/Internal/shared_ump.c | 4 | 4 |
+| Source/Internal/spise2p.c | 326 | 326 |
+| Source/Internal/tools.c | 31 | 31 |
+| UKSSTMS320F28335/28335_RAM_lnk.cmd | 58 | 58 |
+| UKSSTMS320F28335/firmware_version.h | 6 | 6 |
+| UKSSTMS320F28335/prepare_identity.py | 41 | 41 |
+| tests/comments/run_test.py | 127 | 127 |
+| tests/eeprom_profiles/run_test.py | 20 | 20 |
+| tests/eeprom_profiles/spi_test.c | 46 | 46 |
+| tests/eeprom_profiles/stubs/DSP2833x_Device.h | 22 | 22 |
+| tests/firmware_identity/check_build.py | 35 | 35 |
+| tests/firmware_identity/port_test.c | 29 | 29 |
+| tests/gas167/check_image.py | 44 | 44 |
+| tests/gas167/gas167_test.c | 191 | 191 |
+| tests/gas167/run_test.py | 45 | 45 |
+| tests/load_control/load_control_test.c | 93 | 93 |
+| tests/load_control/run_test.py | 15 | 15 |
+| tests/load_control/stubs/DSP2833x_Device.h | 9 | 9 |
+| tests/load_control/stubs/DSP2833x_SWPrioritizedIsrLevels.h | 0 | 0 |
+| tests/load_control/stubs/RS485.h | 0 | 0 |
+| tests/load_control/stubs/filter_bat2.h | 0 | 0 |
+| tests/load_control/stubs/measure.h | 4 | 4 |
+| tests/load_control/stubs/message.h | 1 | 1 |
+| tests/load_control/stubs/package.h | 17 | 17 |
+| tests/load_control/stubs/peripher.h | 14 | 14 |
+| tests/load_control/stubs/tools.h | 0 | 0 |
+| tests/rs232_fifo/model.inc | 113 | 113 |
+| tests/rs232_fifo/run_test.py | 53 | 53 |
+| tests/ump_logger/init_test.c | 52 | 52 |
+| tests/ump_logger/recorder_test.c | 151 | 151 |
+| tests/ump_logger/run_init_test.py | 30 | 30 |
+| tests/ump_logger/run_test.py | 34 | 34 |
+| tests/ump_logger/stubs/ADC.h | 1 | 1 |
+| tests/ump_logger/stubs/DAC.h | 1 | 1 |
+| tests/ump_logger/stubs/DSP2833x_Device.h | 9 | 9 |
+| tests/ump_logger/stubs/RS485.h | 0 | 0 |
+| tests/ump_logger/stubs/filter_bat2.h | 0 | 0 |
+| tests/ump_logger/stubs/measure.h | 2 | 2 |
+| tests/ump_logger/stubs/message.h | 0 | 0 |
+| tests/ump_logger/stubs/package.h | 11 | 11 |
+| tests/ump_logger/stubs/peripher.h | 0 | 0 |
+| tests/ump_logger/test_firmware_image.py | 51 | 51 |
+| tests/ump_logger/ti_syntax.h | 2 | 2 |
diff --git a/Doc/SOURCE_GUIDE.md b/Doc/SOURCE_GUIDE.md
new file mode 100644
index 0000000..3b77994
--- /dev/null
+++ b/Doc/SOURCE_GUIDE.md
@@ -0,0 +1,108 @@
+# Назначение исходников Бальзам-167
+
+Все редактируемые исходники C/H, ASM, CMD и Python используют UTF-8 без BOM.
+Каждая строка кода снабжена русским пояснением. Существующие уведомления TI
+и сведения о поставляемых файлах сохранены. Таблица покрытия и воспроизводимая
+проверка находятся в [COMMENT_AUDIT.md](COMMENT_AUDIT.md) и
+../tests/comments/run_test.py.
+
+## Порядок работы
+
+main.c сначала настраивает системные такты, PIE, внешнюю RAM, адрес платы,
+CAN и оба SCI. Затем запускает EEPROM, очищает RAM журнала, явно инициализирует
+регистратор и автомат LOAD, настраивает Timer1 и разрешает прерывания.
+Параметры читаются из EEPROM; для LOAD Setup_DAC_time применяет длительность
+нарастания тока и проверяет сохранённый тайм-аут CAN. Главный цикл обслуживает
+команды, сохранение параметров, события регистратора и передачу служебного CAN.
+
+Timer1 задаёт основную частоту READY_FREQ=1000 Гц. Для измерительной платы
+обработчик находится в measure.c, для пульта — в pulto.c. Автомат нагрузки
+выполняется в Timer1: он владеет START/STOP/разрешением и обновлением тока ЦАП.
+Главный цикл не включает нагрузку поверх состояния защиты. Timer2 продвигает
+автомат EEPROM; ожидание SPI не выполняется внутри длительной блокировки IRQ.
+
+## Внутренние модули
+
+| Файл | Назначение и важные ограничения |
+| --- | --- |
+| main.c | Порядок запуска, общий цикл, команды загрузчика и Modbus; COM_1 115200 с FIFO. |
+| ADC.c | Настройка каналов АЦП, обработка преобразований и обновление фильтров. |
+| measure.c | Типы датчиков, температурные/токовые/мощностные расчёты, диагностика, периодический такт. |
+| filter_bat2.c | Накопительный фильтр; история и сумма обновляются вместе с новым отсчётом. |
+| DAC.c | Передача слов ЦАП и автомат нагрузки: свежесть CAN, напряжение, STOP и максимум пять пусков. |
+| ecan.c | Штатные CAN-кадры и отдельный служебный обмен УМП/GAS; ISR принимает, главный цикл передаёт ответ. |
+| RS485.c | SCI-A/SCI-B, разбор кадров и упаковка слов; FIFO используется только первым портом. |
+| message.c | FC03/FC06, маршрутизация УМП/GAS, заводские и сохраняемые параметры. |
+| gas167.c | Карта 167/v1; проверка всего диапазона до чтения; ограничение записи такое же, как у обычного Modbus. |
+| log_to_mem.c | Два банка RAM регистратора, события START/STOP/CAN/RS, замороженный архив и чтение через УМП. |
+| shared_ump.c | Подключение общего протокола и паспорта из соседнего репозитория; логика общей библиотеки здесь не дублируется. |
+| spise2p.c | SPI EEPROM: команда, адрес, порции данных, границы страниц и ожидание окончания записи. |
+| bios.c | Последовательный загрузчик, команды памяти и EXTEND; адрес EEPROM проверяется отдельно от RAM. |
+| cntrl_adr.c | Установка собственного/универсального адреса устройства. |
+| peripher.c | Аппаратные перемычки, тип платы, кнопки, выбор канала и служебные GPIO. |
+| kanal.c | Последовательная передача битов индикации выбранного канала. |
+| pulto.c | Периодический обработчик и обмен пульта. |
+| crc16.c | Таблицы и алгоритмы CRC для используемых пакетов. |
+| tools.c | Внешняя шина XINTF Zone7 и задержки в микросекундах. |
+
+## Заголовки проекта
+
+package.h определяет аппаратные адреса и псевдонимы modbus. Стартовый ток
+находится в 0x50, конечный — в 0x51. Сохраняемый LOAD_CAN_TIMEOUT занимает 0x52:
+разрешено 1..60000 мс; заводское значение 600 мс устанавливается Default_params.
+Setup_DAC_time исправляет недопустимое сохранённое значение на 600 мс.
+Load_runner дополнительно использует 600 мс для локальной страховки при
+недопустимом значении. LOAD_STATUS=0x7C и LOAD_ATTEMPTS=0x7D доступны для чтения.
+
+eeprom_config.h выбирает физическую микросхему при сборке. spise2p.h задаёт
+ширину адреса, длину страницы и типы задания SPI. gas167.h описывает границы
+профиля и контракт снимка. log_to_mem.h задаёт формат точек и ёмкость банков.
+RS485.h описывает состояние портов, буферы, FIFO и тайм-ауты.
+measure.h хранит частоты, типы датчиков и битовые состояния диагностики.
+caliber.h содержит заводские калибровочные значения. GPIO_table.h и peripher.h
+задают аппаратные сигналы. Остальные заголовки объявляют интерфейсы одноимённых
+модулей.
+
+## Слово C28x и физические байты
+
+На C28x int и char имеют ширину 16 бит. Адреса технологических регистров и GAS
+считаются словами. Размеры EEPROM, загрузочного SCI8 BIN и октеты RTU считаются
+8-битными байтами. Поэтому преобразование адреса EEPROM в байты выполняется
+явно. Хостовые проверки используют uint16_t и модель аппаратных регистров,
+чтобы обычные 8-битные char/32-битные int ПК не меняли смысл пакетов.
+
+F28335.cmd размещает код в RAM и экспортирует абсолютные символы границ EEPROM.
+EEPROM не является памятью, доступной ядру напрямую: ROM загружает образ по SPI
+в RAM. Увеличение EEPROM не расширяет .text или RAM регистратора. Секция .logg
+остаётся в Zone7A. Подробные пределы: [EEPROM_LAYOUT.md](EEPROM_LAYOUT.md).
+
+## Поставляемые TI файлы
+
+DSP2833x_headers/include содержит структуры аппаратных регистров и их битовые
+поля. GlobalVariableDefs.c размещает структуры в именованных секциях; файлы
+Headers_BIOS.cmd/Headers_nonBIOS.cmd связывают их с аппаратными адресами.
+Рабочая сборка использует nonBIOS.
+
+DSP2833x_common содержит начальную настройку тактов, таймеров, АЦП, PIE и XINTF,
+таблицы векторов и программные приоритеты ISR. В SWPrioritizedIsrLevels.h
+приоритет 0 исключает источник, меньшее ненулевое значение означает более
+высокий приоритет; MINT и MG вычисляют соответствующие маски.
+ADC_cal.asm и usDelay.asm обеспечивают фабричную калибровку/задержку C28x.
+Комментарии описывают исходный порядок инструкций; код поставляемых модулей
+не изменён.
+
+## Настройки и результаты сборки
+
+.project регистрирует связанные исходники и заголовки, .cproject задаёт Debug,
+Release, флаги, пути и pre/post-build. .ccsproject описывает устройство и
+инструментарий, .settings/*.prefs — настройки Eclipse/CCS. Эти XML и properties
+содержат русские комментарии без изменения значений опций.
+
+firmware_identity.json — входные product/target. Паспорт BIN и
+profile-comparison.json — структурированные данные; комментарии JSON
+недопустимы. Их поля описаны в FIRMWARE_IDENTITY.md и GAS_167_M95M02.md.
+.bin/.hex/.out/.map, EXE, LIB и XLS — данные или результаты сторонних инструментов;
+их нельзя снабжать комментариями как исходный C-код. .paf2/.sbl и корневые
+.pjt/.lkf относятся к старым данным IDE/сборки. postBuildStep_Debug.old и fixya.bat
+сохранены как старые служебные сценарии; действующие шаги CCS определены в
+.cproject и соседних шаблонах.
diff --git a/F28335.cmd b/F28335.cmd
index a472cd4..5396127 100644
--- a/F28335.cmd
+++ b/F28335.cmd
@@ -1,3 +1,4 @@
+/* Распределение памяти линкером и абсолютные границы загрузочного образа EEPROM. Русские пояснения сохранены в UTF-8. */
/*
// TI File $Revision: /main/10 $
// Checkin $Date: July 9, 2008 13:43:56 $
@@ -16,24 +17,24 @@
/* ======================================================
// For Code Composer Studio V2.2 and later
// ---------------------------------------
-// In addition to this memory linker command file,
-// add the header linker command file directly to the project.
+// In addition to this memory linker command file,
+// add the header linker command file directly to the project.
// The header linker command file is required to link the
-// peripheral structures to the proper locations within
+// peripheral structures to the proper locations within
// the memory map.
//
// The header linker files are found in \DSP2833x_Headers\cmd
-//
+//
// For BIOS applications add: DSP2833x_Headers_BIOS.cmd
-// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd
+// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd
========================================================= */
/* ======================================================
// For Code Composer Studio prior to V2.2
// --------------------------------------
-// 1) Use one of the following -l statements to include the
+// 1) Use one of the following -l statements to include the
// header linker command file in the project. The header linker
-// file is required to link the peripheral structures to the proper
+// file is required to link the peripheral structures to the proper
// locations within the memory map */
/* Uncomment this line to include file only for non-BIOS applications */
@@ -43,29 +44,29 @@
/* -l DSP2833x_Headers_BIOS.cmd */
/* 2) In your project add the path to \DSP2833x_headers\cmd to the
- library search path under project->build options, linker tab,
+ library search path under project->build options, linker tab,
library search path (-i).
/*========================================================= */
-/* Define the memory block start/length for the F28335
+/* Define the memory block start/length for the F28335
PAGE 0 will be used to organize program sections
PAGE 1 will be used to organize data sections
- Notes:
+ Notes:
Memory blocks on F28335 are uniform (ie same
- physical memory) in both PAGE 0 and PAGE 1.
+ physical memory) in both PAGE 0 and PAGE 1.
That is the same memory region should not be
defined for both PAGE 0 and PAGE 1.
- Doing so will result in corruption of program
- and/or data.
-
+ Doing so will result in corruption of program
+ and/or data.
+
L0/L1/L2 and L3 memory blocks are mirrored - that is
they can be accessed in high memory or low memory.
For simplicity only one instance is used in this
- linker file.
-
- Contiguous SARAM memory blocks can be combined
- if required to create a larger memory block.
+ linker file.
+
+ Contiguous SARAM memory blocks can be combined
+ if required to create a larger memory block.
*/
@@ -73,142 +74,179 @@
* region at address zero: SPI boot copies its table into the RAM areas below.
* Export its physical layout as absolute byte/word symbols for .map/debugging.
* The final SCI8 image size (including boot headers) is checked after hex2000. */
+/* Подключает "Source/Internal/Include/eeprom_config.h": выбор профиля физически установленной EEPROM при сборке. */
#include "Source/Internal/Include/eeprom_config.h"
+/* Подключает "include/balsam167_eeprom_layout.h": настройки и интерфейс balsam167_eeprom_layout. */
#include "include/balsam167_eeprom_layout.h"
+/* Записывает _EEPROM_TOTAL_BYTES значением BALSAM167_EEPROM_BYTES; данные _EEPROM_TOTAL_BYTES. */
_EEPROM_TOTAL_BYTES = BALSAM167_EEPROM_BYTES;
+/* Записывает _EEPROM_FIRMWARE_LIMIT_BYTES значением BALSAM167_EEPROM_FIRMWARE_BYTES; данные _EEPROM_FIRMWARE_LIMIT_BYTES. */
_EEPROM_FIRMWARE_LIMIT_BYTES = BALSAM167_EEPROM_FIRMWARE_BYTES;
+/* Записывает _EEPROM_PARAMS_START_WORD значением BALSAM167_EEPROM_PARAMS_START_WORD; EEPROM PARAMS START слово. */
_EEPROM_PARAMS_START_WORD = BALSAM167_EEPROM_PARAMS_START_WORD;
+/* Записывает _EEPROM_PARAMS_START_BYTE значением BALSAM167_EEPROM_FIRMWARE_BYTES; данные _EEPROM_PARAMS_START_BYTE. */
_EEPROM_PARAMS_START_BYTE = BALSAM167_EEPROM_FIRMWARE_BYTES;
+/* Записывает _EEPROM_PARAMS_END_BYTE значением BALSAM167_EEPROM_PARAMS_END_WORD * 2; данные _EEPROM_PARAMS_END_BYTE. */
_EEPROM_PARAMS_END_BYTE = BALSAM167_EEPROM_PARAMS_END_WORD * 2;
+/* Начинает описание физических блоков памяти для линкера. */
MEMORY
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
-PAGE 0: /* Program Memory */
+PAGE 0: /* Program Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
- ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */
- RAML0 : origin = 0x008000, length = 0x004000 /* on-chip RAM block L0 */
+ ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */ /* Записывает origin значением 0x004000, length = 0x001000; данные origin. */
+ RAML0 : origin = 0x008000, length = 0x004000 /* on-chip RAM block L0 */ /* Записывает origin значением 0x008000, length = 0x004000; данные origin. */
/* RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */
/* RAML2 : origin = 0x00A000, length = 0x001000 /* on-chip RAM block L2 */
// RAML3 : origin = 0x00B000, length = 0x001000 /* on-chip RAM block L3 */
- RAML4 : origin = 0x00C000, length = 0x001000 /* on-chip RAM block L1 */
+ RAML4 : origin = 0x00C000, length = 0x001000 /* on-chip RAM block L1 */ /* Записывает origin значением 0x00C000, length = 0x001000; данные origin. */
- ZONE6 : origin = 0x0100000, length = 0x100000 /* XINTF zone 6 */
- FLASHH : origin = 0x300000, length = 0x008000 /* on-chip FLASH */
- FLASHG : origin = 0x308000, length = 0x008000 /* on-chip FLASH */
- FLASHF : origin = 0x310000, length = 0x008000 /* on-chip FLASH */
- FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */
- FLASHD : origin = 0x320000, length = 0x008000 /* on-chip FLASH */
- FLASHC : origin = 0x328000, length = 0x008000 /* on-chip FLASH */
- FLASHA : origin = 0x338000, length = 0x007F80 /* on-chip FLASH */
- CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
- BEGIN : origin = 0x33FFF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
- CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
- OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */
- ADC_CAL : origin = 0x380080, length = 0x000009 /* ADC_cal function in Reserved memory */
-
- IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */
- IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */
- FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */
- ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
- RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
- VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
+ ZONE6 : origin = 0x0100000, length = 0x100000 /* XINTF zone 6 */ /* Записывает origin значением 0x0100000, length = 0x100000; данные origin. */
+ FLASHH : origin = 0x300000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x300000, length = 0x008000; данные origin. */
+ FLASHG : origin = 0x308000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x308000, length = 0x008000; данные origin. */
+ FLASHF : origin = 0x310000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x310000, length = 0x008000; данные origin. */
+ FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x318000, length = 0x008000; данные origin. */
+ FLASHD : origin = 0x320000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x320000, length = 0x008000; данные origin. */
+ FLASHC : origin = 0x328000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x328000, length = 0x008000; данные origin. */
+ FLASHA : origin = 0x338000, length = 0x007F80 /* on-chip FLASH */ /* Записывает origin значением 0x338000, length = 0x007F80; данные origin. */
+ CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ /* Записывает origin значением 0x33FF80, length = 0x000076; данные origin. */
+ BEGIN : origin = 0x33FFF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */ /* Записывает origin значением 0x33FFF6, length = 0x000002; данные origin. */
+ CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ /* Записывает origin значением 0x33FFF8, length = 0x000008; данные origin. */
+ OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */ /* Записывает origin значением 0x380400, length = 0x000400; данные origin. */
+ ADC_CAL : origin = 0x380080, length = 0x000009 /* ADC_cal function in Reserved memory */ /* Записывает origin значением 0x380080, length = 0x000009; данные origin. */
-PAGE 1 : /* Data Memory */
+ IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */ /* Записывает origin значением 0x3FE000, length = 0x000b50; данные origin. */
+ IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */ /* Записывает origin значением 0x3FEB50, length = 0x00008c; данные origin. */
+ FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */ /* Записывает origin значением 0x3FEBDC, length = 0x0006A0; данные origin. */
+ ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */ /* Записывает origin значением 0x3FF27C, length = 0x000D44; данные origin. */
+ RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */ /* Записывает origin значением 0x3FFFC0, length = 0x000002; данные origin. */
+ VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */ /* Записывает origin значением 0x3FFFC2, length = 0x00003E; данные origin. */
+
+PAGE 1 : /* Data Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
/* Registers remain on PAGE1 */
-
- BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
- RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
- RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
- RAML5 : origin = 0x00D000, length = 0x003000 /* on-chip RAM block L1 */
+
+ BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */ /* Записывает origin значением 0x000000, length = 0x000050; данные origin. */
+ RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */ /* Записывает origin значением 0x000050, length = 0x0003B0; данные origin. */
+ RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ /* Записывает origin значением 0x000400, length = 0x000400; данные origin. */
+ RAML5 : origin = 0x00D000, length = 0x003000 /* on-chip RAM block L1 */ /* Записывает origin значением 0x00D000, length = 0x003000; данные origin. */
/* RAML6 : origin = 0x00E000, length = 0x001000 /* on-chip RAM block L1 */
/* RAML7 : origin = 0x00F000, length = 0x001000 /* on-chip RAM block L1 */
- ZONE7A : origin = 0x0200000, length = 0x00FC00 /* XINTF zone 7 - program space */
- ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */
- FLASHB : origin = 0x330000, length = 0x008000 /* on-chip FLASH */
+ ZONE7A : origin = 0x0200000, length = 0x00FC00 /* XINTF zone 7 - program space */ /* Записывает origin значением 0x0200000, length = 0x00FC00; данные origin. */
+ ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ /* Записывает origin значением 0x20FC00, length = 0x000400; данные origin. */
+ FLASHB : origin = 0x330000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x330000, length = 0x008000; данные origin. */
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/* Allocate sections to memory blocks.
Note:
- codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
+ codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
execution when booting to flash
ramfuncs user defined section to store functions that will be copied from Flash into RAM
-*/
-
+*/
+
+/* Начинает описание размещения секций объектных файлов для линкера. */
SECTIONS
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
-
+
/* Allocate program areas: */
/* Keep initialization tables out of the code RAM block. */
+ /* Записывает PAGE значением 0; данные PAGE. */
.cinit : > RAML4 PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
.pinit : > RAML0 PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
.text : > RAML0 PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
codestart : > BEGIN PAGE = 0
- ramfuncs : LOAD = RAML4,
- RUN = RAML4,
+ /* Записывает LOAD значением RAML4,; данные LOAD. */
+ ramfuncs : LOAD = RAML4,
+ /* Записывает RUN значением RAML4,; данные RUN. */
+ RUN = RAML4,
+ /* Вызывает LOAD_START с аргументами (_RamfuncsLoadStart), в текущей последовательности операций. */
LOAD_START(_RamfuncsLoadStart),
+ /* Вызывает LOAD_END с аргументами (_RamfuncsLoadEnd), в текущей последовательности операций. */
LOAD_END(_RamfuncsLoadEnd),
+ /* Вызывает RUN_START с аргументами (_RamfuncsRunStart), в текущей последовательности операций. */
RUN_START(_RamfuncsRunStart),
+ /* Записывает PAGE значением 0; данные PAGE. */
PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
csmpasswds : > CSM_PWL PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
csm_rsvd : > CSM_RSVD PAGE = 0
-
+
/* Allocate uninitalized data sections: */
+ /* Записывает PAGE значением 1; данные PAGE. */
.stack : > RAMM1 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
.ebss : > RAML5 PAGE = 1
+ /* Записывает PAGE значением 0; данные PAGE. */
.esysmem : > RAML0 PAGE = 0
+ /* Записывает PAGE значением 1; данные PAGE. */
.logg : > ZONE7A PAGE = 1
/* Initalized sections go in Flash */
/* For SDFlash to program these, they must be allocated to page 0 */
+ /* Записывает PAGE значением 0; данные PAGE. */
.econst : > RAML4 PAGE = 0
- .switch : > RAML4 PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
+ .switch : > RAML4 PAGE = 0
/* Allocate IQ math areas: */
- IQmath : > FLASHC PAGE = 0 /* Math Code */
- IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
-
+ IQmath : > FLASHC PAGE = 0 /* Math Code */ /* Записывает PAGE значением 0; данные PAGE. */
+ /* Записывает PAGE значением 0, TYPE = NOLOAD; данные PAGE. */
+ IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
+
/* Uncomment the section below if calling the IQNexp() or IQexp()
- functions from the IQMath.lib library in order to utilize the
- relevant IQ Math table in Boot ROM (This saves space and Boot ROM
+ functions from the IQMath.lib library in order to utilize the
+ relevant IQ Math table in Boot ROM (This saves space and Boot ROM
is 1 wait-state). If this section is not uncommented, IQmathTables2
will be loaded into other memory (SARAM, Flash, etc.) and will take
up space, but 0 wait-state is possible.
*/
/*
- IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
+ IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
{
-
+
IQmath.lib (IQmathTablesRam)
-
+
}
*/
-
- FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
-
+
+ /* Записывает PAGE значением 0, TYPE = NOLOAD; данные PAGE. */
+ FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
+
/* Allocate DMA-accessible RAM sections: * /
DMARAML4 : > RAML4, PAGE = 1
DMARAML5 : > RAML5, PAGE = 1
/* DMARAML6 : > RAML6, PAGE = 1
DMARAML7 : > RAML7, PAGE = 1
-*/
+*/
/* Allocate 0x400 of XINTF Zone 7 to storing data */
+ /* Записывает PAGE значением 1; данные PAGE. */
ZONE7DATA : > ZONE7B, PAGE = 1
- /* .reset is a standard section used by the compiler. It contains the */
+ /* .reset is a standard section used by the compiler. It contains the */
/* the address of the start of _c_int00 for C Code. /*
/* When using the boot ROM this section and the CPU vector */
/* table is not needed. Thus the default type is set here to */
- /* DSECT */
+ /* DSECT */
+ /* Записывает PAGE значением 0, TYPE = DSECT; данные PAGE. */
.reset : > RESET, PAGE = 0, TYPE = DSECT
+ /* Записывает PAGE значением 0, TYPE = DSECT; данные PAGE. */
vectors : > VECTORS PAGE = 0, TYPE = DSECT
-
+
/* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
+ /* Записывает load значением ADC_CAL, PAGE = 0, TYPE = NOLOAD; данные load. */
.adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/*
diff --git a/Source/External/v120/DSP2833x_common/include/DSP2833x_DefaultIsr.h b/Source/External/v120/DSP2833x_common/include/DSP2833x_DefaultIsr.h
index 8919b97..4a38b52 100644
--- a/Source/External/v120/DSP2833x_common/include/DSP2833x_DefaultIsr.h
+++ b/Source/External/v120/DSP2833x_common/include/DSP2833x_DefaultIsr.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание DefaultIsr для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:45:37 $
//###########################################################################
@@ -11,135 +12,223 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_DEFAULT_ISR_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DEFAULT_ISR_H
+/* Определяет защитный символ или переключатель DSP2833x_DEFAULT_ISR_H для последующей компиляции. */
#define DSP2833x_DEFAULT_ISR_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//---------------------------------------------------------------------------
// Default Interrupt Service Routine Declarations:
-//
-// The following function prototypes are for the
+//
+// The following function prototypes are for the
// default ISR routines used with the default PIE vector table.
-// This default vector table is found in the DSP2833x_PieVect.h
-// file.
+// This default vector table is found in the DSP2833x_PieVect.h
+// file.
//
// Non-Peripheral Interrupts:
+/* Объявляет обработчик INT13_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT13_ISR(void); // XINT13 or CPU-Timer 1
+/* Объявляет обработчик INT14_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT14_ISR(void); // CPU-Timer2
+/* Объявляет обработчик DATALOG_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DATALOG_ISR(void); // Datalogging interrupt
+/* Объявляет обработчик RTOSINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RTOSINT_ISR(void); // RTOS interrupt
+/* Объявляет обработчик EMUINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EMUINT_ISR(void); // Emulation interrupt
+/* Объявляет обработчик NMI_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void NMI_ISR(void); // Non-maskable interrupt
+/* Объявляет обработчик ILLEGAL_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ILLEGAL_ISR(void); // Illegal operation TRAP
+/* Объявляет обработчик USER1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER1_ISR(void); // User Defined trap 1
+/* Объявляет обработчик USER2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER2_ISR(void); // User Defined trap 2
+/* Объявляет обработчик USER3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER3_ISR(void); // User Defined trap 3
+/* Объявляет обработчик USER4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER4_ISR(void); // User Defined trap 4
+/* Объявляет обработчик USER5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER5_ISR(void); // User Defined trap 5
+/* Объявляет обработчик USER6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER6_ISR(void); // User Defined trap 6
+/* Объявляет обработчик USER7_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER7_ISR(void); // User Defined trap 7
+/* Объявляет обработчик USER8_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER8_ISR(void); // User Defined trap 8
+/* Объявляет обработчик USER9_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER9_ISR(void); // User Defined trap 9
+/* Объявляет обработчик USER10_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER10_ISR(void); // User Defined trap 10
+/* Объявляет обработчик USER11_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER11_ISR(void); // User Defined trap 11
+/* Объявляет обработчик USER12_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER12_ISR(void); // User Defined trap 12
// Group 1 PIE Interrupt Service Routines:
+/* Объявляет обработчик SEQ1INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SEQ1INT_ISR(void); // ADC Sequencer 1 ISR
+/* Объявляет обработчик SEQ2INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SEQ2INT_ISR(void); // ADC Sequencer 2 ISR
+/* Объявляет обработчик XINT1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT1_ISR(void); // External interrupt 1
+/* Объявляет обработчик XINT2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT2_ISR(void); // External interrupt 2
+/* Объявляет обработчик ADCINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ADCINT_ISR(void); // ADC
+/* Объявляет обработчик TINT0_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void TINT0_ISR(void); // Timer 0
+/* Объявляет обработчик WAKEINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void WAKEINT_ISR(void); // WD
// Group 2 PIE Interrupt Service Routines:
+/* Объявляет обработчик EPWM1_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM1_TZINT_ISR(void); // EPWM-1
+/* Объявляет обработчик EPWM2_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM2_TZINT_ISR(void); // EPWM-2
+/* Объявляет обработчик EPWM3_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM3_TZINT_ISR(void); // EPWM-3
+/* Объявляет обработчик EPWM4_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM4_TZINT_ISR(void); // EPWM-4
+/* Объявляет обработчик EPWM5_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM5_TZINT_ISR(void); // EPWM-5
+/* Объявляет обработчик EPWM6_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM6_TZINT_ISR(void); // EPWM-6
-
+
// Group 3 PIE Interrupt Service Routines:
+/* Объявляет обработчик EPWM1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM1_INT_ISR(void); // EPWM-1
+/* Объявляет обработчик EPWM2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM2_INT_ISR(void); // EPWM-2
+/* Объявляет обработчик EPWM3_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM3_INT_ISR(void); // EPWM-3
+/* Объявляет обработчик EPWM4_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM4_INT_ISR(void); // EPWM-4
+/* Объявляет обработчик EPWM5_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM5_INT_ISR(void); // EPWM-5
+/* Объявляет обработчик EPWM6_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM6_INT_ISR(void); // EPWM-6
-
+
// Group 4 PIE Interrupt Service Routines:
+/* Объявляет обработчик ECAP1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP1_INT_ISR(void); // ECAP-1
+/* Объявляет обработчик ECAP2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP2_INT_ISR(void); // ECAP-2
+/* Объявляет обработчик ECAP3_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP3_INT_ISR(void); // ECAP-3
+/* Объявляет обработчик ECAP4_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP4_INT_ISR(void); // ECAP-4
+/* Объявляет обработчик ECAP5_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP5_INT_ISR(void); // ECAP-5
+/* Объявляет обработчик ECAP6_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP6_INT_ISR(void); // ECAP-6
-
+
// Group 5 PIE Interrupt Service Routines:
+/* Объявляет обработчик EQEP1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EQEP1_INT_ISR(void); // EQEP-1
+/* Объявляет обработчик EQEP2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EQEP2_INT_ISR(void); // EQEP-2
// Group 6 PIE Interrupt Service Routines:
+/* Объявляет обработчик SPIRXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SPIRXINTA_ISR(void); // SPI-A
+/* Объявляет обработчик SPITXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SPITXINTA_ISR(void); // SPI-A
+/* Объявляет обработчик MRINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MRINTA_ISR(void); // McBSP-A
+/* Объявляет обработчик MXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MXINTA_ISR(void); // McBSP-A
+/* Объявляет обработчик MRINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MRINTB_ISR(void); // McBSP-B
+/* Объявляет обработчик MXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MXINTB_ISR(void); // McBSP-B
// Group 7 PIE Interrupt Service Routines:
+/* Объявляет обработчик DINTCH1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH1_ISR(void); // DMA-Channel 1
+/* Объявляет обработчик DINTCH2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH2_ISR(void); // DMA-Channel 2
+/* Объявляет обработчик DINTCH3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH3_ISR(void); // DMA-Channel 3
+/* Объявляет обработчик DINTCH4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH4_ISR(void); // DMA-Channel 4
+/* Объявляет обработчик DINTCH5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH5_ISR(void); // DMA-Channel 5
+/* Объявляет обработчик DINTCH6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH6_ISR(void); // DMA-Channel 6
-// Group 8 PIE Interrupt Service Routines:
+// Group 8 PIE Interrupt Service Routines:
+/* Объявляет обработчик I2CINT1A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void I2CINT1A_ISR(void); // I2C-A
+/* Объявляет обработчик I2CINT2A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void I2CINT2A_ISR(void); // I2C-A
+/* Объявляет обработчик SCIRXINTC_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTC_ISR(void); // SCI-C
+/* Объявляет обработчик SCITXINTC_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTC_ISR(void); // SCI-C
-
+
// Group 9 PIE Interrupt Service Routines:
+/* Объявляет обработчик SCIRXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTA_ISR(void); // SCI-A
+/* Объявляет обработчик SCITXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTA_ISR(void); // SCI-A
+/* Объявляет обработчик SCIRXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTB_ISR(void); // SCI-B
+/* Объявляет обработчик SCITXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTB_ISR(void); // SCI-B
+/* Объявляет обработчик ECAN0INTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN0INTA_ISR(void); // eCAN-A
+/* Объявляет обработчик ECAN1INTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN1INTA_ISR(void); // eCAN-A
+/* Объявляет обработчик ECAN0INTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN0INTB_ISR(void); // eCAN-B
+/* Объявляет обработчик ECAN1INTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN1INTB_ISR(void); // eCAN-B
// Group 10 PIE Interrupt Service Routines:
-
-// Group 11 PIE Interrupt Service Routines:
-// Group 12 PIE Interrupt Service Routines:
+// Group 11 PIE Interrupt Service Routines:
+
+// Group 12 PIE Interrupt Service Routines:
+/* Объявляет обработчик XINT3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT3_ISR(void); // External interrupt 3
+/* Объявляет обработчик XINT4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT4_ISR(void); // External interrupt 4
+/* Объявляет обработчик XINT5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT5_ISR(void); // External interrupt 5
+/* Объявляет обработчик XINT6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT6_ISR(void); // External interrupt 6
+/* Объявляет обработчик XINT7_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT7_ISR(void); // External interrupt 7
+/* Объявляет обработчик LVF_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void LVF_ISR(void); // Latched overflow flag
+/* Объявляет обработчик LUF_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void LUF_ISR(void); // Latched underflow flag
// Catch-all for Reserved Locations For testing purposes:
+/* Объявляет интерфейс функции PIE_RESERVED; реализация вызывается через этот прототип. */
interrupt void PIE_RESERVED(void); // Reserved for test
+/* Объявляет обработчик rsvd_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void rsvd_ISR(void); // for test
+/* Объявляет обработчик INT_NOTUSED_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT_NOTUSED_ISR(void); // for unused interrupts
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_DEFAULT_ISR_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/include/DSP2833x_Dma_defines.h b/Source/External/v120/DSP2833x_common/include/DSP2833x_Dma_defines.h
index 7b8dfaf..00274a3 100644
--- a/Source/External/v120/DSP2833x_common/include/DSP2833x_Dma_defines.h
+++ b/Source/External/v120/DSP2833x_common/include/DSP2833x_Dma_defines.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Dma_defines для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: August 14, 2007 16:32:29 $
//###########################################################################
@@ -11,69 +12,112 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_DMA_DEFINES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DMA_DEFINES_H
+/* Определяет защитный символ или переключатель DSP2833x_DMA_DEFINES_H для последующей компиляции. */
#define DSP2833x_DMA_DEFINES_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// MODE
//==========================
// PERINTSEL bits
+/* Задаёт DMA_SEQ1INT = 1; DMA 1 INT. */
#define DMA_SEQ1INT 1
+/* Задаёт DMA_SEQ2INT = 2; DMA 2 INT. */
#define DMA_SEQ2INT 2
+/* Задаёт DMA_XINT1 = 3; DMA 1. */
#define DMA_XINT1 3
+/* Задаёт DMA_XINT2 = 4; DMA 2. */
#define DMA_XINT2 4
+/* Задаёт DMA_XINT3 = 5; DMA 3. */
#define DMA_XINT3 5
+/* Задаёт DMA_XINT4 = 6; DMA 4. */
#define DMA_XINT4 6
+/* Задаёт DMA_XINT5 = 7; DMA 5. */
#define DMA_XINT5 7
+/* Задаёт DMA_XINT6 = 8; DMA 6. */
#define DMA_XINT6 8
+/* Задаёт DMA_XINT7 = 9; DMA 7. */
#define DMA_XINT7 9
+/* Задаёт DMA_XINT13 = 10; DMA 13. */
#define DMA_XINT13 10
+/* Задаёт DMA_TINT0 = 11; DMA 0. */
#define DMA_TINT0 11
+/* Задаёт DMA_TINT1 = 12; DMA 1. */
#define DMA_TINT1 12
+/* Задаёт DMA_TINT2 = 13; DMA 2. */
#define DMA_TINT2 13
+/* Задаёт DMA_MXEVTA = 14; DMA MXEVTA. */
#define DMA_MXEVTA 14
+/* Задаёт DMA_MREVTA = 15; DMA MREVTA. */
#define DMA_MREVTA 15
+/* Задаёт DMA_MXREVTB = 16; DMA MXREVTB. */
#define DMA_MXREVTB 16
+/* Задаёт DMA_MREVTB = 17; DMA MREVTB. */
#define DMA_MREVTB 17
// OVERINTE bit
+/* Задаёт OVRFLOW_DISABLE = 0x0; OVRFLOW запрет. */
#define OVRFLOW_DISABLE 0x0
+/* Задаёт OVEFLOW_ENABLE = 0x1; OVEFLOW разрешение. */
#define OVEFLOW_ENABLE 0x1
// PERINTE bit
+/* Задаёт PERINT_DISABLE = 0x0; PERINT запрет. */
#define PERINT_DISABLE 0x0
+/* Задаёт PERINT_ENABLE = 0x1; PERINT разрешение. */
#define PERINT_ENABLE 0x1
// CHINTMODE bits
+/* Задаёт CHINT_BEGIN = 0x0; данные CHINT_BEGIN. */
#define CHINT_BEGIN 0x0
+/* Задаёт CHINT_END = 0x1; данные CHINT_END. */
#define CHINT_END 0x1
// ONESHOT bits
+/* Задаёт ONESHOT_DISABLE = 0x0; ONESHOT запрет. */
#define ONESHOT_DISABLE 0x0
+/* Задаёт ONESHOT_ENABLE = 0x1; ONESHOT разрешение. */
#define ONESHOT_ENABLE 0x1
// CONTINOUS bit
+/* Задаёт CONT_DISABLE = 0x0; CONT запрет. */
#define CONT_DISABLE 0x0
+/* Задаёт CONT_ENABLE = 0x1; CONT разрешение. */
#define CONT_ENABLE 0x1
// SYNCE bit
+/* Задаёт SYNC_DISABLE = 0x0; синхронизация запрет. */
#define SYNC_DISABLE 0x0
+/* Задаёт SYNC_ENABLE = 0x1; синхронизация разрешение. */
#define SYNC_ENABLE 0x1
// SYNCSEL bit
+/* Задаёт SYNC_SRC = 0x0; синхронизация SRC. */
#define SYNC_SRC 0x0
+/* Задаёт SYNC_DST = 0x1; синхронизация DST. */
#define SYNC_DST 0x1
// DATASIZE bit
+/* Задаёт SIXTEEN_BIT = 0x0; SIXTEEN бит. */
#define SIXTEEN_BIT 0x0
+/* Задаёт THIRTYTWO_BIT = 0x1; THIRTYTWO бит. */
#define THIRTYTWO_BIT 0x1
// CHINTE bit
+/* Задаёт CHINT_DISABLE = 0x0; CHINT запрет. */
#define CHINT_DISABLE 0x0
+/* Задаёт CHINT_ENABLE = 0x1; CHINT разрешение. */
#define CHINT_ENABLE 0x1
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // - end of DSP2833x_EPWM_DEFINES_H
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/include/DSP2833x_EPwm_defines.h b/Source/External/v120/DSP2833x_common/include/DSP2833x_EPwm_defines.h
index 061842f..08b8487 100644
--- a/Source/External/v120/DSP2833x_common/include/DSP2833x_EPwm_defines.h
+++ b/Source/External/v120/DSP2833x_common/include/DSP2833x_EPwm_defines.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание EPwm_defines для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:45:39 $
//###########################################################################
@@ -5,135 +6,212 @@
// FILE: DSP2833x_EPwm_defines.h
//
// TITLE: #defines used in ePWM examples examples
-//
+//
//###########################################################################
// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_EPWM_DEFINES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_EPWM_DEFINES_H
+/* Определяет защитный символ или переключатель DSP2833x_EPWM_DEFINES_H для последующей компиляции. */
#define DSP2833x_EPWM_DEFINES_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// TBCTL (Time-Base Control)
//==========================
// CTRMODE bits
+/* Задаёт TB_COUNT_UP = 0x0; TB число UP. */
#define TB_COUNT_UP 0x0
+/* Задаёт TB_COUNT_DOWN = 0x1; TB число DOWN. */
#define TB_COUNT_DOWN 0x1
+/* Задаёт TB_COUNT_UPDOWN = 0x2; TB число UPDOWN. */
#define TB_COUNT_UPDOWN 0x2
+/* Задаёт TB_FREEZE = 0x3; данные TB_FREEZE. */
#define TB_FREEZE 0x3
// PHSEN bit
+/* Задаёт TB_DISABLE = 0x0; TB запрет. */
#define TB_DISABLE 0x0
+/* Задаёт TB_ENABLE = 0x1; TB разрешение. */
#define TB_ENABLE 0x1
// PRDLD bit
+/* Задаёт TB_SHADOW = 0x0; данные TB_SHADOW. */
#define TB_SHADOW 0x0
+/* Задаёт TB_IMMEDIATE = 0x1; данные TB_IMMEDIATE. */
#define TB_IMMEDIATE 0x1
// SYNCOSEL bits
+/* Задаёт TB_SYNC_IN = 0x0; TB синхронизация IN. */
#define TB_SYNC_IN 0x0
+/* Задаёт TB_CTR_ZERO = 0x1; данные TB_CTR_ZERO. */
#define TB_CTR_ZERO 0x1
+/* Задаёт TB_CTR_CMPB = 0x2; данные TB_CTR_CMPB. */
#define TB_CTR_CMPB 0x2
+/* Задаёт TB_SYNC_DISABLE = 0x3; TB синхронизация запрет. */
#define TB_SYNC_DISABLE 0x3
// HSPCLKDIV and CLKDIV bits
+/* Задаёт TB_DIV1 = 0x0; данные TB_DIV1. */
#define TB_DIV1 0x0
+/* Задаёт TB_DIV2 = 0x1; данные TB_DIV2. */
#define TB_DIV2 0x1
+/* Задаёт TB_DIV4 = 0x2; данные TB_DIV4. */
#define TB_DIV4 0x2
// PHSDIR bit
+/* Задаёт TB_DOWN = 0x0; данные TB_DOWN. */
#define TB_DOWN 0x0
+/* Задаёт TB_UP = 0x1; данные TB_UP. */
#define TB_UP 0x1
// CMPCTL (Compare Control)
//==========================
// LOADAMODE and LOADBMODE bits
+/* Задаёт CC_CTR_ZERO = 0x0; данные CC_CTR_ZERO. */
#define CC_CTR_ZERO 0x0
+/* Задаёт CC_CTR_PRD = 0x1; данные CC_CTR_PRD. */
#define CC_CTR_PRD 0x1
+/* Задаёт CC_CTR_ZERO_PRD = 0x2; данные CC_CTR_ZERO_PRD. */
#define CC_CTR_ZERO_PRD 0x2
+/* Задаёт CC_LD_DISABLE = 0x3; CC LD запрет. */
#define CC_LD_DISABLE 0x3
// SHDWAMODE and SHDWBMODE bits
+/* Задаёт CC_SHADOW = 0x0; данные CC_SHADOW. */
#define CC_SHADOW 0x0
+/* Задаёт CC_IMMEDIATE = 0x1; данные CC_IMMEDIATE. */
#define CC_IMMEDIATE 0x1
// AQCTLA and AQCTLB (Action Qualifier Control)
//=============================================
// ZRO, PRD, CAU, CAD, CBU, CBD bits
+/* Задаёт AQ_NO_ACTION = 0x0; данные AQ_NO_ACTION. */
#define AQ_NO_ACTION 0x0
+/* Задаёт AQ_CLEAR = 0x1; AQ очистка. */
#define AQ_CLEAR 0x1
+/* Задаёт AQ_SET = 0x2; AQ установка. */
#define AQ_SET 0x2
+/* Задаёт AQ_TOGGLE = 0x3; данные AQ_TOGGLE. */
#define AQ_TOGGLE 0x3
// DBCTL (Dead-Band Control)
//==========================
// OUT MODE bits
+/* Задаёт DB_DISABLE = 0x0; DB запрет. */
#define DB_DISABLE 0x0
+/* Задаёт DBA_ENABLE = 0x1; DBA разрешение. */
#define DBA_ENABLE 0x1
+/* Задаёт DBB_ENABLE = 0x2; DBB разрешение. */
#define DBB_ENABLE 0x2
+/* Задаёт DB_FULL_ENABLE = 0x3; DB FULL разрешение. */
#define DB_FULL_ENABLE 0x3
// POLSEL bits
+/* Задаёт DB_ACTV_HI = 0x0; данные DB_ACTV_HI. */
#define DB_ACTV_HI 0x0
+/* Задаёт DB_ACTV_LOC = 0x1; данные DB_ACTV_LOC. */
#define DB_ACTV_LOC 0x1
+/* Задаёт DB_ACTV_HIC = 0x2; данные DB_ACTV_HIC. */
#define DB_ACTV_HIC 0x2
+/* Задаёт DB_ACTV_LO = 0x3; данные DB_ACTV_LO. */
#define DB_ACTV_LO 0x3
// IN MODE
+/* Задаёт DBA_ALL = 0x0; данные DBA_ALL. */
#define DBA_ALL 0x0
+/* Задаёт DBB_RED_DBA_FED = 0x1; данные DBB_RED_DBA_FED. */
#define DBB_RED_DBA_FED 0x1
+/* Задаёт DBA_RED_DBB_FED = 0x2; данные DBA_RED_DBB_FED. */
#define DBA_RED_DBB_FED 0x2
+/* Задаёт DBB_ALL = 0x3; данные DBB_ALL. */
#define DBB_ALL 0x3
// CHPCTL (chopper control)
//==========================
// CHPEN bit
+/* Задаёт CHP_DISABLE = 0x0; CHP запрет. */
#define CHP_DISABLE 0x0
+/* Задаёт CHP_ENABLE = 0x1; CHP разрешение. */
#define CHP_ENABLE 0x1
// CHPFREQ bits
+/* Задаёт CHP_DIV1 = 0x0; данные CHP_DIV1. */
#define CHP_DIV1 0x0
+/* Задаёт CHP_DIV2 = 0x1; данные CHP_DIV2. */
#define CHP_DIV2 0x1
+/* Задаёт CHP_DIV3 = 0x2; данные CHP_DIV3. */
#define CHP_DIV3 0x2
+/* Задаёт CHP_DIV4 = 0x3; данные CHP_DIV4. */
#define CHP_DIV4 0x3
+/* Задаёт CHP_DIV5 = 0x4; данные CHP_DIV5. */
#define CHP_DIV5 0x4
+/* Задаёт CHP_DIV6 = 0x5; данные CHP_DIV6. */
#define CHP_DIV6 0x5
+/* Задаёт CHP_DIV7 = 0x6; данные CHP_DIV7. */
#define CHP_DIV7 0x6
+/* Задаёт CHP_DIV8 = 0x7; данные CHP_DIV8. */
#define CHP_DIV8 0x7
// CHPDUTY bits
+/* Задаёт CHP1_8TH = 0x0; данные CHP1_8TH. */
#define CHP1_8TH 0x0
+/* Задаёт CHP2_8TH = 0x1; данные CHP2_8TH. */
#define CHP2_8TH 0x1
+/* Задаёт CHP3_8TH = 0x2; данные CHP3_8TH. */
#define CHP3_8TH 0x2
+/* Задаёт CHP4_8TH = 0x3; данные CHP4_8TH. */
#define CHP4_8TH 0x3
+/* Задаёт CHP5_8TH = 0x4; данные CHP5_8TH. */
#define CHP5_8TH 0x4
+/* Задаёт CHP6_8TH = 0x5; данные CHP6_8TH. */
#define CHP6_8TH 0x5
+/* Задаёт CHP7_8TH = 0x6; данные CHP7_8TH. */
#define CHP7_8TH 0x6
// TZSEL (Trip Zone Select)
//==========================
// CBCn and OSHTn bits
+/* Задаёт TZ_DISABLE = 0x0; TZ запрет. */
#define TZ_DISABLE 0x0
+/* Задаёт TZ_ENABLE = 0x1; TZ разрешение. */
#define TZ_ENABLE 0x1
// TZCTL (Trip Zone Control)
//==========================
// TZA and TZB bits
+/* Задаёт TZ_HIZ = 0x0; данные TZ_HIZ. */
#define TZ_HIZ 0x0
+/* Задаёт TZ_FORCE_HI = 0x1; TZ принудительная установка HI. */
#define TZ_FORCE_HI 0x1
+/* Задаёт TZ_FORCE_LO = 0x2; TZ принудительная установка LO. */
#define TZ_FORCE_LO 0x2
+/* Задаёт TZ_NO_CHANGE = 0x3; данные TZ_NO_CHANGE. */
#define TZ_NO_CHANGE 0x3
// ETSEL (Event Trigger Select)
//=============================
+/* Задаёт ET_CTR_ZERO = 0x1; данные ET_CTR_ZERO. */
#define ET_CTR_ZERO 0x1
+/* Задаёт ET_CTR_PRD = 0x2; данные ET_CTR_PRD. */
#define ET_CTR_PRD 0x2
+/* Задаёт ET_CTRU_CMPA = 0x4; данные ET_CTRU_CMPA. */
#define ET_CTRU_CMPA 0x4
+/* Задаёт ET_CTRD_CMPA = 0x5; данные ET_CTRD_CMPA. */
#define ET_CTRD_CMPA 0x5
+/* Задаёт ET_CTRU_CMPB = 0x6; данные ET_CTRU_CMPB. */
#define ET_CTRU_CMPB 0x6
+/* Задаёт ET_CTRD_CMPB = 0x7; данные ET_CTRD_CMPB. */
#define ET_CTRD_CMPB 0x7
// ETPS (Event Trigger Pre-scale)
//===============================
// INTPRD, SOCAPRD, SOCBPRD bits
+/* Задаёт ET_DISABLE = 0x0; ET запрет. */
#define ET_DISABLE 0x0
+/* Задаёт ET_1ST = 0x1; данные ET_1ST. */
#define ET_1ST 0x1
+/* Задаёт ET_2ND = 0x2; данные ET_2ND. */
#define ET_2ND 0x2
+/* Задаёт ET_3RD = 0x3; данные ET_3RD. */
#define ET_3RD 0x3
@@ -141,22 +219,33 @@ extern "C" {
// HRPWM (High Resolution PWM)
//================================
// HRCNFG
+/* Задаёт HR_Disable = 0x0; HR запрет. */
#define HR_Disable 0x0
+/* Задаёт HR_REP = 0x1; данные HR_REP. */
#define HR_REP 0x1
+/* Задаёт HR_FEP = 0x2; данные HR_FEP. */
#define HR_FEP 0x2
+/* Задаёт HR_BEP = 0x3; данные HR_BEP. */
#define HR_BEP 0x3
+/* Задаёт HR_CMP = 0x0; данные HR_CMP. */
#define HR_CMP 0x0
+/* Задаёт HR_PHS = 0x1; данные HR_PHS. */
#define HR_PHS 0x1
+/* Задаёт HR_CTR_ZERO = 0x0; данные HR_CTR_ZERO. */
#define HR_CTR_ZERO 0x0
+/* Задаёт HR_CTR_PRD = 0x1; данные HR_CTR_PRD. */
#define HR_CTR_PRD 0x1
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // - end of DSP2833x_EPWM_DEFINES_H
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/include/DSP2833x_Examples.h b/Source/External/v120/DSP2833x_common/include/DSP2833x_Examples.h
index 7ababcb..44be283 100644
--- a/Source/External/v120/DSP2833x_common/include/DSP2833x_Examples.h
+++ b/Source/External/v120/DSP2833x_common/include/DSP2833x_Examples.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Examples для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/9 $
// Checkin $Date: July 2, 2008 14:31:12 $
//###########################################################################
@@ -11,12 +12,17 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_EXAMPLES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_EXAMPLES_H
+/* Определяет защитный символ или переключатель DSP2833x_EXAMPLES_H для последующей компиляции. */
#define DSP2833x_EXAMPLES_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -25,9 +31,11 @@ extern "C" {
-----------------------------------------------------------------------------*/
//#define DSP28_DIVSEL 0 // Enable /4 for SYSCLKOUT
//#define DSP28_DIVSEL 1 // Enable /4 for SYSCKOUT
+/* Задаёт DSP28_DIVSEL = 2; данные DSP28_DIVSEL. */
#define DSP28_DIVSEL 2 // Enable /2 for SYSCLKOUT
//#define DSP28_DIVSEL 3 // Enable /1 for SYSCLKOUT
+/* Задаёт DSP28_PLLCR = CLKMULT*2; данные DSP28_PLLCR. */
#define DSP28_PLLCR CLKMULT*2
//#define DSP28_PLLCR 10
@@ -74,6 +82,7 @@ extern "C" {
In this case, the CPU_RATE will be 10.000L
Uncomment the line: #define CPU_RATE 10.000L
-----------------------------------------------------------------------------*/
+/* Задаёт CPU_RATE = 6.667L; данные CPU_RATE. */
#define CPU_RATE 6.667L // for a 150MHz CPU clock speed (SYSCLKOUT)
//#define CPU_RATE 7.143L // for a 140MHz CPU clock speed (SYSCLKOUT)
//#define CPU_RATE 8.333L // for a 120MHz CPU clock speed (SYSCLKOUT)
@@ -93,12 +102,19 @@ extern "C" {
(for examples) - either 150 MHz (for 28335 and 28334) or 100 MHz
(for 28332). User does not have to change anything here.
-----------------------------------------------------------------------------*/
+/* Условие компиляции DSP28_28332: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_28332 // DSP28_28332 device only
+ /* Задаёт CPU_FRQ_100MHZ = 1; данные CPU_FRQ_100MHZ. */
#define CPU_FRQ_100MHZ 1 // 100 Mhz CPU Freq (20 MHz input freq)
+ /* Задаёт CPU_FRQ_150MHZ = 0; данные CPU_FRQ_150MHZ. */
#define CPU_FRQ_150MHZ 0
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Задаёт CPU_FRQ_100MHZ = 0; данные CPU_FRQ_100MHZ. */
#define CPU_FRQ_100MHZ 0 // DSP28_28335||DSP28_28334
+ /* Задаёт CPU_FRQ_150MHZ = 1; данные CPU_FRQ_150MHZ. */
#define CPU_FRQ_150MHZ 1 // 150 MHz CPU Freq (30 MHz input freq) by DEFAULT
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -106,35 +122,52 @@ extern "C" {
// Include Example Header Files:
//
+/* Подключает "DSP2833x_GlobalPrototypes.h": поставляемое TI описание GlobalPrototypes для семейства C2833x. */
#include "DSP2833x_GlobalPrototypes.h" // Prototypes for global functions within the
// .c files.
+/* Подключает "DSP2833x_ePwm_defines.h": поставляемое TI описание ePwm_defines для семейства C2833x. */
#include "DSP2833x_ePwm_defines.h" // Macros used for PWM examples.
+/* Подключает "DSP2833x_Dma_defines.h": поставляемое TI описание Dma_defines для семейства C2833x. */
#include "DSP2833x_Dma_defines.h" // Macros used for DMA examples.
+/* Подключает "DSP2833x_I2C_defines.h": поставляемое TI описание I2C_defines для семейства C2833x. */
#include "DSP2833x_I2C_defines.h" // Macros used for I2C examples.
+/* Задаёт PARTNO_28335 = 0xEF; данные PARTNO_28335. */
#define PARTNO_28335 0xEF
+/* Задаёт PARTNO_28334 = 0xEE; данные PARTNO_28334. */
#define PARTNO_28334 0xEE
+/* Задаёт PARTNO_28332 = 0xED; данные PARTNO_28332. */
#define PARTNO_28332 0xED
+/* Задаёт PARTNO_28235 = 0xE8; данные PARTNO_28235. */
#define PARTNO_28235 0xE8
+/* Задаёт PARTNO_28234 = 0xE7; данные PARTNO_28234. */
#define PARTNO_28234 0xE7
+/* Задаёт PARTNO_28232 = 0xE6; данные PARTNO_28232. */
#define PARTNO_28232 0xE6
// Include files not used with DSP/BIOS
+/* Начинает условие: DSP28_BIOS ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP28_BIOS
+/* Подключает "DSP2833x_DefaultISR.h": поставляемое TI описание DefaultISR для семейства C2833x. */
#include "DSP2833x_DefaultISR.h"
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// DO NOT MODIFY THIS LINE.
+/* Задаёт DELAY_US = DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); данные DELAY_US. */
#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_EXAMPLES_H definition
diff --git a/Source/External/v120/DSP2833x_common/include/DSP2833x_GlobalPrototypes.h b/Source/External/v120/DSP2833x_common/include/DSP2833x_GlobalPrototypes.h
index 9c90607..4978a6f 100644
--- a/Source/External/v120/DSP2833x_common/include/DSP2833x_GlobalPrototypes.h
+++ b/Source/External/v120/DSP2833x_common/include/DSP2833x_GlobalPrototypes.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание GlobalPrototypes для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/11 $
// Checkin $Date: May 12, 2008 14:30:08 $
//###########################################################################
@@ -11,174 +12,320 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_GLOBALPROTOTYPES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_GLOBALPROTOTYPES_H
+/* Определяет защитный символ или переключатель DSP2833x_GLOBALPROTOTYPES_H для последующей компиляции. */
#define DSP2833x_GLOBALPROTOTYPES_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/*---- shared global function prototypes -----------------------------------*/
+/* Объявляет интерфейс функции InitAdc; реализация вызывается через этот прототип. */
extern void InitAdc(void);
+/* Объявляет интерфейс функции DMAInitialize; реализация вызывается через этот прототип. */
extern void DMAInitialize(void);
// DMA Channel 1
+/* Объявляет интерфейс функции DMACH1AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH1AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
+/* Объявляет интерфейс функции DMACH1BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
+/* Объявляет интерфейс функции DMACH1TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
+/* Объявляет интерфейс функции DMACH1WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH1WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep);
+/* Объявляет интерфейс функции DMACH1ModeConfig; реализация вызывается через этот прототип. */
extern void DMACH1ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte);
+/* Объявляет интерфейс функции StartDMACH1; реализация вызывается через этот прототип. */
extern void StartDMACH1(void);
// DMA Channel 2
+/* Объявляет интерфейс функции DMACH2AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH2AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
+/* Объявляет интерфейс функции DMACH2BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH2BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
+/* Объявляет интерфейс функции DMACH2TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH2TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
+/* Объявляет интерфейс функции DMACH2WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH2WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep);
+/* Объявляет интерфейс функции DMACH2ModeConfig; реализация вызывается через этот прототип. */
extern void DMACH2ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte);
+/* Объявляет интерфейс функции StartDMACH2; реализация вызывается через этот прототип. */
extern void StartDMACH2(void);
// DMA Channel 3
+/* Объявляет интерфейс функции DMACH3AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH3AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
+/* Объявляет интерфейс функции DMACH3BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH3BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
+/* Объявляет интерфейс функции DMACH3TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH3TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
+/* Объявляет интерфейс функции DMACH3WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH3WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep);
+/* Объявляет интерфейс функции DMACH3ModeConfig; реализация вызывается через этот прототип. */
extern void DMACH3ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte);
+/* Объявляет интерфейс функции StartDMACH3; реализация вызывается через этот прототип. */
extern void StartDMACH3(void);
// DMA Channel 4
+/* Объявляет интерфейс функции DMACH4AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH4AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
+/* Объявляет интерфейс функции DMACH4BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH4BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
+/* Объявляет интерфейс функции DMACH4TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH4TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
+/* Объявляет интерфейс функции DMACH4WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH4WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep);
+/* Объявляет интерфейс функции DMACH4ModeConfig; реализация вызывается через этот прототип. */
extern void DMACH4ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte);
+/* Объявляет интерфейс функции StartDMACH4; реализация вызывается через этот прототип. */
extern void StartDMACH4(void);
// DMA Channel 5
+/* Объявляет интерфейс функции DMACH5AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH5AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
+/* Объявляет интерфейс функции DMACH5BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH5BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
+/* Объявляет интерфейс функции DMACH5TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH5TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
+/* Объявляет интерфейс функции DMACH5WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH5WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep);
+/* Объявляет интерфейс функции DMACH5ModeConfig; реализация вызывается через этот прототип. */
extern void DMACH5ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte);
+/* Объявляет интерфейс функции StartDMACH5; реализация вызывается через этот прототип. */
extern void StartDMACH5(void);
// DMA Channel 6
+/* Объявляет интерфейс функции DMACH6AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH6AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
+/* Объявляет интерфейс функции DMACH6BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH6BurstConfig(Uint16 bsize,Uint16 srcbstep, int16 desbstep);
+/* Объявляет интерфейс функции DMACH6TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH6TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
+/* Объявляет интерфейс функции DMACH6WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH6WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep);
+/* Объявляет интерфейс функции DMACH6ModeConfig; реализация вызывается через этот прототип. */
extern void DMACH6ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte);
+/* Объявляет интерфейс функции StartDMACH6; реализация вызывается через этот прототип. */
extern void StartDMACH6(void);
+/* Объявляет интерфейс функции InitPeripherals; реализация вызывается через этот прототип. */
extern void InitPeripherals(void);
+/* Условие компиляции DSP28_ECANA: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECANA
+/* Объявляет интерфейс функции InitECan; реализация вызывается через этот прототип. */
extern void InitECan(void);
+/* Объявляет интерфейс функции InitECana; реализация вызывается через этот прототип. */
extern void InitECana(void);
+/* Объявляет интерфейс функции InitECanGpio; реализация вызывается через этот прототип. */
extern void InitECanGpio(void);
+/* Объявляет интерфейс функции InitECanaGpio; реализация вызывается через этот прототип. */
extern void InitECanaGpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECANA
+/* Условие компиляции DSP28_ECANB: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECANB
+/* Объявляет интерфейс функции InitECanb; реализация вызывается через этот прототип. */
extern void InitECanb(void);
+/* Объявляет интерфейс функции InitECanbGpio; реализация вызывается через этот прототип. */
extern void InitECanbGpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECANB
+/* Объявляет интерфейс функции InitECap; реализация вызывается через этот прототип. */
extern void InitECap(void);
+/* Объявляет интерфейс функции InitECapGpio; реализация вызывается через этот прототип. */
extern void InitECapGpio(void);
+/* Объявляет интерфейс функции InitECap1Gpio; реализация вызывается через этот прототип. */
extern void InitECap1Gpio(void);
+/* Объявляет интерфейс функции InitECap2Gpio; реализация вызывается через этот прототип. */
extern void InitECap2Gpio(void);
+/* Условие компиляции DSP28_ECAP3: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECAP3
+/* Объявляет интерфейс функции InitECap3Gpio; реализация вызывается через этот прототип. */
extern void InitECap3Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECAP3
+/* Условие компиляции DSP28_ECAP4: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECAP4
+/* Объявляет интерфейс функции InitECap4Gpio; реализация вызывается через этот прототип. */
extern void InitECap4Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECAP4
+/* Условие компиляции DSP28_ECAP5: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECAP5
+/* Объявляет интерфейс функции InitECap5Gpio; реализация вызывается через этот прототип. */
extern void InitECap5Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECAP5
+/* Условие компиляции DSP28_ECAP6: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECAP6
+/* Объявляет интерфейс функции InitECap6Gpio; реализация вызывается через этот прототип. */
extern void InitECap6Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECAP6
+/* Объявляет интерфейс функции InitEPwm; реализация вызывается через этот прототип. */
extern void InitEPwm(void);
+/* Объявляет интерфейс функции InitEPwmGpio; реализация вызывается через этот прототип. */
extern void InitEPwmGpio(void);
+/* Объявляет интерфейс функции InitEPwm1Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm1Gpio(void);
+/* Объявляет интерфейс функции InitEPwm2Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm2Gpio(void);
+/* Объявляет интерфейс функции InitEPwm3Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm3Gpio(void);
+/* Условие компиляции DSP28_EPWM4: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EPWM4
+/* Объявляет интерфейс функции InitEPwm4Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm4Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_EPWM4
+/* Условие компиляции DSP28_EPWM5: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EPWM5
+/* Объявляет интерфейс функции InitEPwm5Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm5Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_EPWM5
+/* Условие компиляции DSP28_EPWM6: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EPWM6
+/* Объявляет интерфейс функции InitEPwm6Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm6Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_EPWM6
+/* Условие компиляции DSP28_EQEP1: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EQEP1
+/* Объявляет интерфейс функции InitEQep; реализация вызывается через этот прототип. */
extern void InitEQep(void);
+/* Объявляет интерфейс функции InitEQepGpio; реализация вызывается через этот прототип. */
extern void InitEQepGpio(void);
+/* Объявляет интерфейс функции InitEQep1Gpio; реализация вызывается через этот прототип. */
extern void InitEQep1Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // if DSP28_EQEP1
+/* Условие компиляции DSP28_EQEP2: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EQEP2
+/* Объявляет интерфейс функции InitEQep2Gpio; реализация вызывается через этот прототип. */
extern void InitEQep2Gpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_EQEP2
+/* Объявляет интерфейс функции InitGpio; реализация вызывается через этот прототип. */
extern void InitGpio(void);
+/* Объявляет интерфейс функции InitI2CGpio; реализация вызывается через этот прототип. */
extern void InitI2CGpio(void);
+/* Объявляет интерфейс функции InitMcbsp; реализация вызывается через этот прототип. */
extern void InitMcbsp(void);
+/* Объявляет интерфейс функции InitMcbspa; реализация вызывается через этот прототип. */
extern void InitMcbspa(void);
+/* Объявляет интерфейс функции delay_loop; реализация вызывается через этот прототип. */
extern void delay_loop(void);
+/* Объявляет интерфейс функции InitMcbspaGpio; реализация вызывается через этот прототип. */
extern void InitMcbspaGpio(void);
+/* Объявляет интерфейс функции InitMcbspa8bit; реализация вызывается через этот прототип. */
extern void InitMcbspa8bit(void);
+/* Объявляет интерфейс функции InitMcbspa12bit; реализация вызывается через этот прототип. */
extern void InitMcbspa12bit(void);
+/* Объявляет интерфейс функции InitMcbspa16bit; реализация вызывается через этот прототип. */
extern void InitMcbspa16bit(void);
+/* Объявляет интерфейс функции InitMcbspa20bit; реализация вызывается через этот прототип. */
extern void InitMcbspa20bit(void);
+/* Объявляет интерфейс функции InitMcbspa24bit; реализация вызывается через этот прототип. */
extern void InitMcbspa24bit(void);
+/* Объявляет интерфейс функции InitMcbspa32bit; реализация вызывается через этот прототип. */
extern void InitMcbspa32bit(void);
+/* Условие компиляции DSP28_MCBSPB: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_MCBSPB
+/* Объявляет интерфейс функции InitMcbspb; реализация вызывается через этот прототип. */
extern void InitMcbspb(void);
+/* Объявляет интерфейс функции InitMcbspbGpio; реализация вызывается через этот прототип. */
extern void InitMcbspbGpio(void);
+/* Объявляет интерфейс функции InitMcbspb8bit; реализация вызывается через этот прототип. */
extern void InitMcbspb8bit(void);
+/* Объявляет интерфейс функции InitMcbspb12bit; реализация вызывается через этот прототип. */
extern void InitMcbspb12bit(void);
+/* Объявляет интерфейс функции InitMcbspb16bit; реализация вызывается через этот прототип. */
extern void InitMcbspb16bit(void);
+/* Объявляет интерфейс функции InitMcbspb20bit; реализация вызывается через этот прототип. */
extern void InitMcbspb20bit(void);
+/* Объявляет интерфейс функции InitMcbspb24bit; реализация вызывается через этот прототип. */
extern void InitMcbspb24bit(void);
+/* Объявляет интерфейс функции InitMcbspb32bit; реализация вызывается через этот прототип. */
extern void InitMcbspb32bit(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_MCBSPB
+/* Объявляет интерфейс функции InitPieCtrl; реализация вызывается через этот прототип. */
extern void InitPieCtrl(void);
+/* Объявляет интерфейс функции InitPieVectTable; реализация вызывается через этот прототип. */
extern void InitPieVectTable(void);
+/* Объявляет интерфейс функции InitSci; реализация вызывается через этот прототип. */
extern void InitSci(void);
+/* Объявляет интерфейс функции InitSciGpio; реализация вызывается через этот прототип. */
extern void InitSciGpio(void);
+/* Объявляет интерфейс функции InitSciaGpio; реализация вызывается через этот прототип. */
extern void InitSciaGpio(void);
+/* Условие компиляции DSP28_SCIB: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_SCIB
+/* Объявляет интерфейс функции InitScibGpio; реализация вызывается через этот прототип. */
extern void InitScibGpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_SCIB
+/* Условие компиляции DSP28_SCIC: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_SCIC
+/* Объявляет интерфейс функции InitScicGpio; реализация вызывается через этот прототип. */
extern void InitScicGpio(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Объявляет интерфейс функции InitSpi; реализация вызывается через этот прототип. */
extern void InitSpi(void);
+/* Объявляет интерфейс функции InitSpiGpio; реализация вызывается через этот прототип. */
extern void InitSpiGpio(void);
+/* Объявляет интерфейс функции InitSpiaGpio; реализация вызывается через этот прототип. */
extern void InitSpiaGpio(void);
+/* Объявляет интерфейс функции InitSysCtrl; реализация вызывается через этот прототип. */
extern void InitSysCtrl(void);
+/* Объявляет интерфейс функции InitTzGpio; реализация вызывается через этот прототип. */
extern void InitTzGpio(void);
+/* Объявляет интерфейс функции InitXIntrupt; реализация вызывается через этот прототип. */
extern void InitXIntrupt(void);
+/* Объявляет интерфейс функции XintfInit; реализация вызывается через этот прототип. */
extern void XintfInit(void);
+/* Объявляет интерфейс функции InitXintf16Gpio; реализация вызывается через этот прототип. */
extern void InitXintf16Gpio();
+/* Объявляет интерфейс функции InitXintf32Gpio; реализация вызывается через этот прототип. */
extern void InitXintf32Gpio();
+/* Объявляет интерфейс функции InitPll; реализация вызывается через этот прототип. */
extern void InitPll(Uint16 pllcr, Uint16 clkindiv);
+/* Объявляет интерфейс функции InitPeripheralClocks; реализация вызывается через этот прототип. */
extern void InitPeripheralClocks(void);
+/* Объявляет интерфейс функции EnableInterrupts; реализация вызывается через этот прототип. */
extern void EnableInterrupts(void);
+/* Объявляет интерфейс функции DSP28x_usDelay; реализация вызывается через этот прототип. */
extern void DSP28x_usDelay(Uint32 Count);
+/* Объявляет интерфейс функции ADC_cal; реализация вызывается через этот прототип. */
extern void ADC_cal (void);
+/* Задаёт KickDog = ServiceDog; данные KickDog. */
#define KickDog ServiceDog // For compatiblity with previous versions
+/* Объявляет интерфейс функции ServiceDog; реализация вызывается через этот прототип. */
extern void ServiceDog(void);
+/* Объявляет интерфейс функции DisableDog; реализация вызывается через этот прототип. */
extern void DisableDog(void);
+/* Объявляет интерфейс функции CsmUnlock; реализация вызывается через этот прототип. */
extern Uint16 CsmUnlock(void);
// DSP28_DBGIER.asm
+/* Объявляет интерфейс функции SetDBGIER; реализация вызывается через этот прототип. */
extern void SetDBGIER(Uint16 dbgier);
// CAUTION
// This function MUST be executed out of RAM. Executing it
// out of OTP/Flash will yield unpredictable results
+/* Объявляет интерфейс функции InitFlash; реализация вызывается через этот прототип. */
extern void InitFlash(void);
+/* Объявляет интерфейс функции MemCopy; реализация вызывается через этот прототип. */
void MemCopy(Uint16 *SourceAddr, Uint16* SourceEndAddr, Uint16* DestAddr);
@@ -187,19 +334,28 @@ void MemCopy(Uint16 *SourceAddr, Uint16* SourceEndAddr, Uint16* DestAddr);
// DSP28 examples will use these to relocate code from one LOAD location
// in either Flash or XINTF to a different RUN location in internal
// RAM
+/* Объявляет RamfuncsLoadStart — данные RamfuncsLoadStart. Память определена в другом модуле. */
extern Uint16 RamfuncsLoadStart;
+/* Объявляет RamfuncsLoadEnd — данные RamfuncsLoadEnd. Память определена в другом модуле. */
extern Uint16 RamfuncsLoadEnd;
+/* Объявляет RamfuncsRunStart — данные RamfuncsRunStart. Память определена в другом модуле. */
extern Uint16 RamfuncsRunStart;
+/* Объявляет XintffuncsLoadStart — данные XintffuncsLoadStart. Память определена в другом модуле. */
extern Uint16 XintffuncsLoadStart;
+/* Объявляет XintffuncsLoadEnd — данные XintffuncsLoadEnd. Память определена в другом модуле. */
extern Uint16 XintffuncsLoadEnd;
+/* Объявляет XintffuncsRunStart — данные XintffuncsRunStart. Память определена в другом модуле. */
extern Uint16 XintffuncsRunStart;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // - end of DSP2833x_GLOBALPROTOTYPES_H
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/include/DSP2833x_I2c_defines.h b/Source/External/v120/DSP2833x_common/include/DSP2833x_I2c_defines.h
index ce3f1f7..9d8aa8a 100644
--- a/Source/External/v120/DSP2833x_common/include/DSP2833x_I2c_defines.h
+++ b/Source/External/v120/DSP2833x_common/include/DSP2833x_I2c_defines.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание I2c_defines для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: April 16, 2008 17:16:47 $
//###########################################################################
@@ -11,7 +12,9 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_I2C_DEFINES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_I2C_DEFINES_H
+/* Определяет защитный символ или переключатель DSP2833x_I2C_DEFINES_H для последующей компиляции. */
#define DSP2833x_I2C_DEFINES_H
//--------------------------------------------
@@ -19,68 +22,115 @@
//--------------------------------------------
// Error Messages
+/* Задаёт I2C_ERROR = 0xFFFF; 2 C ошибка. */
#define I2C_ERROR 0xFFFF
+/* Задаёт I2C_ARB_LOST_ERROR = 0x0001; 2 C ARB LOST ошибка. */
#define I2C_ARB_LOST_ERROR 0x0001
+/* Задаёт I2C_NACK_ERROR = 0x0002; 2 C NACK ошибка. */
#define I2C_NACK_ERROR 0x0002
+/* Задаёт I2C_BUS_BUSY_ERROR = 0x1000; 2 C BUS BUSY ошибка. */
#define I2C_BUS_BUSY_ERROR 0x1000
+/* Задаёт I2C_STP_NOT_READY_ERROR = 0x5555; 2 C STP NOT READY ошибка. */
#define I2C_STP_NOT_READY_ERROR 0x5555
+/* Задаёт I2C_NO_FLAGS = 0xAAAA; 2 C NO флаги. */
#define I2C_NO_FLAGS 0xAAAA
+/* Задаёт I2C_SUCCESS = 0x0000; данные I2C_SUCCESS. */
#define I2C_SUCCESS 0x0000
// Clear Status Flags
+/* Задаёт I2C_CLR_AL_BIT = 0x0001; 2 C CLR AL бит. */
#define I2C_CLR_AL_BIT 0x0001
+/* Задаёт I2C_CLR_NACK_BIT = 0x0002; 2 C CLR NACK бит. */
#define I2C_CLR_NACK_BIT 0x0002
+/* Задаёт I2C_CLR_ARDY_BIT = 0x0004; 2 C CLR ARDY бит. */
#define I2C_CLR_ARDY_BIT 0x0004
+/* Задаёт I2C_CLR_RRDY_BIT = 0x0008; 2 C CLR RRDY бит. */
#define I2C_CLR_RRDY_BIT 0x0008
+/* Задаёт I2C_CLR_SCD_BIT = 0x0020; 2 C CLR SCD бит. */
#define I2C_CLR_SCD_BIT 0x0020
// Interrupt Source Messages
+/* Задаёт I2C_NO_ISRC = 0x0000; данные I2C_NO_ISRC. */
#define I2C_NO_ISRC 0x0000
+/* Задаёт I2C_ARB_ISRC = 0x0001; данные I2C_ARB_ISRC. */
#define I2C_ARB_ISRC 0x0001
+/* Задаёт I2C_NACK_ISRC = 0x0002; данные I2C_NACK_ISRC. */
#define I2C_NACK_ISRC 0x0002
+/* Задаёт I2C_ARDY_ISRC = 0x0003; данные I2C_ARDY_ISRC. */
#define I2C_ARDY_ISRC 0x0003
+/* Задаёт I2C_RX_ISRC = 0x0004; данные I2C_RX_ISRC. */
#define I2C_RX_ISRC 0x0004
+/* Задаёт I2C_TX_ISRC = 0x0005; данные I2C_TX_ISRC. */
#define I2C_TX_ISRC 0x0005
+/* Задаёт I2C_SCD_ISRC = 0x0006; данные I2C_SCD_ISRC. */
#define I2C_SCD_ISRC 0x0006
+/* Задаёт I2C_AAS_ISRC = 0x0007; данные I2C_AAS_ISRC. */
#define I2C_AAS_ISRC 0x0007
// I2CMSG structure defines
+/* Задаёт I2C_NO_STOP = 0; данные I2C_NO_STOP. */
#define I2C_NO_STOP 0
+/* Задаёт I2C_YES_STOP = 1; данные I2C_YES_STOP. */
#define I2C_YES_STOP 1
+/* Задаёт I2C_RECEIVE = 0; 2 C приём. */
#define I2C_RECEIVE 0
+/* Задаёт I2C_TRANSMIT = 1; 2 C передача. */
#define I2C_TRANSMIT 1
+/* Задаёт I2C_MAX_BUFFER_SIZE = 16; 2 C MAX буфер размер. */
#define I2C_MAX_BUFFER_SIZE 16
// I2C Slave State defines
+/* Задаёт I2C_NOTSLAVE = 0; данные I2C_NOTSLAVE. */
#define I2C_NOTSLAVE 0
+/* Задаёт I2C_ADDR_AS_SLAVE = 1; данные I2C_ADDR_AS_SLAVE. */
#define I2C_ADDR_AS_SLAVE 1
+/* Задаёт I2C_ST_MSG_READY = 2; данные I2C_ST_MSG_READY. */
#define I2C_ST_MSG_READY 2
// I2C Slave Receiver messages defines
+/* Задаёт I2C_SND_MSG1 = 1; данные I2C_SND_MSG1. */
#define I2C_SND_MSG1 1
+/* Задаёт I2C_SND_MSG2 = 2; данные I2C_SND_MSG2. */
#define I2C_SND_MSG2 2
// I2C State defines
+/* Задаёт I2C_IDLE = 0; данные I2C_IDLE. */
#define I2C_IDLE 0
+/* Задаёт I2C_SLAVE_RECEIVER = 1; данные I2C_SLAVE_RECEIVER. */
#define I2C_SLAVE_RECEIVER 1
+/* Задаёт I2C_SLAVE_TRANSMITTER = 2; данные I2C_SLAVE_TRANSMITTER. */
#define I2C_SLAVE_TRANSMITTER 2
+/* Задаёт I2C_MASTER_RECEIVER = 3; данные I2C_MASTER_RECEIVER. */
#define I2C_MASTER_RECEIVER 3
+/* Задаёт I2C_MASTER_TRANSMITTER = 4; данные I2C_MASTER_TRANSMITTER. */
#define I2C_MASTER_TRANSMITTER 4
// I2C Message Commands for I2CMSG struct
+/* Задаёт I2C_MSGSTAT_INACTIVE = 0x0000; данные I2C_MSGSTAT_INACTIVE. */
#define I2C_MSGSTAT_INACTIVE 0x0000
+/* Задаёт I2C_MSGSTAT_SEND_WITHSTOP = 0x0010; данные I2C_MSGSTAT_SEND_WITHSTOP. */
#define I2C_MSGSTAT_SEND_WITHSTOP 0x0010
+/* Задаёт I2C_MSGSTAT_WRITE_BUSY = 0x0011; 2 C MSGSTAT запись BUSY. */
#define I2C_MSGSTAT_WRITE_BUSY 0x0011
+/* Задаёт I2C_MSGSTAT_SEND_NOSTOP = 0x0020; данные I2C_MSGSTAT_SEND_NOSTOP. */
#define I2C_MSGSTAT_SEND_NOSTOP 0x0020
+/* Задаёт I2C_MSGSTAT_SEND_NOSTOP_BUSY = 0x0021; данные I2C_MSGSTAT_SEND_NOSTOP_BUSY. */
#define I2C_MSGSTAT_SEND_NOSTOP_BUSY 0x0021
+/* Задаёт I2C_MSGSTAT_RESTART = 0x0022; данные I2C_MSGSTAT_RESTART. */
#define I2C_MSGSTAT_RESTART 0x0022
+/* Задаёт I2C_MSGSTAT_READ_BUSY = 0x0023; 2 C MSGSTAT чтение BUSY. */
#define I2C_MSGSTAT_READ_BUSY 0x0023
// Generic defines
+/* Задаёт I2C_TRUE = 1; данные I2C_TRUE. */
#define I2C_TRUE 1
+/* Задаёт I2C_FALSE = 0; данные I2C_FALSE. */
#define I2C_FALSE 0
+/* Задаёт I2C_YES = 1; данные I2C_YES. */
#define I2C_YES 1
+/* Задаёт I2C_NO = 0; данные I2C_NO. */
#define I2C_NO 0
+/* Задаёт I2C_DUMMY_BYTE = 0; данные I2C_DUMMY_BYTE. */
#define I2C_DUMMY_BYTE 0
@@ -89,7 +139,9 @@
//--------------------------------------------
// I2C Message Structure
+/* Описывает структуру I2CMSG; порядок полей определяет расположение данных. */
struct I2CMSG {
+ /* Объявляет MsgStatus — Msg состояние. */
Uint16 MsgStatus; // Word stating what state msg is in:
// I2C_MSGCMD_INACTIVE = do not send msg
// I2C_MSGCMD_BUSY = msg start has been sent,
@@ -100,16 +152,23 @@ struct I2CMSG {
// master trans msg without the stop bit
// I2C_MSGCMD_RESTART = command to send a restart
// as a master receiver with a stop bit
+ /* Объявляет SlaveAddress — Slave адрес. */
Uint16 SlaveAddress; // I2C address of slave msg is intended for
+ /* Объявляет NumOfBytes — данные NumOfBytes. */
Uint16 NumOfBytes; // Num of valid bytes in (or to be put in MsgBuffer)
+ /* Объявляет MemoryHighAddr — данные MemoryHighAddr. */
Uint16 MemoryHighAddr; // EEPROM address of data associated with msg (high byte)
+ /* Объявляет MemoryLowAddr — данные MemoryLowAddr. */
Uint16 MemoryLowAddr; // EEPROM address of data associated with msg (low byte)
+ /* Объявляет MsgBuffer — Msg буфер. */
Uint16 MsgBuffer[I2C_MAX_BUFFER_SIZE]; // Array holding msg data - max that
// MAX_BUFFER_SIZE can be is 16 due to
// the FIFO's
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_I2C_DEFINES_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/include/DSP2833x_SWPrioritizedIsrLevels.h b/Source/External/v120/DSP2833x_common/include/DSP2833x_SWPrioritizedIsrLevels.h
index c3f3ea1..14878d9 100644
--- a/Source/External/v120/DSP2833x_common/include/DSP2833x_SWPrioritizedIsrLevels.h
+++ b/Source/External/v120/DSP2833x_common/include/DSP2833x_SWPrioritizedIsrLevels.h
@@ -1,10 +1,11 @@
+/* Поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: April 4, 2007 14:25:21 $
//###########################################################################
//
// FILE: DSP2833x_SWPrioritizedIsrLevels.h
//
-// TITLE: DSP28 Devices Software Prioritized Interrupt Service Routine
+// TITLE: DSP28 Devices Software Prioritized Interrupt Service Routine
// Level definitions.
//
//###########################################################################
@@ -12,12 +13,17 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_SW_PRIORITZIED_ISR_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_SW_PRIORITZIED_ISR_H
+/* Определяет защитный символ или переключатель DSP2833x_SW_PRIORITZIED_ISR_H для последующей компиляции. */
#define DSP2833x_SW_PRIORITZIED_ISR_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -25,7 +31,7 @@ extern "C" {
// Interrupt Enable Register Allocation For 2833x Devices:
//-------------------------------------------------------------------------------
// Interrupts can be enabled/disabled using the CPU interrupt enable register
-// (IER) and the PIE interrupt enable registers (PIEIER1 to PIEIER12).
+// (IER) and the PIE interrupt enable registers (PIEIER1 to PIEIER12).
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
// Set "Global" Interrupt Priority Level (IER register):
@@ -40,31 +46,47 @@ extern "C" {
// interrupt masks MINT1 to MINT16.
//
//
-// Note: The priority levels shown here may not make sense in a
+// Note: The priority levels shown here may not make sense in a
// real application. This is for demonstration purposes only!!!
-//
-// The user should change these to values that make sense for
+//
+// The user should change these to values that make sense for
// their application.
//
// 0 = not used
// 1 = highest priority
// ...
// 16 = lowest priority
+/* Задаёт INT1PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT1PL 2 // Group1 Interrupts (PIEIER1)
+/* Задаёт INT2PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT2PL 0 // Group2 Interrupts (PIEIER2)
+/* Задаёт INT3PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT3PL 4 // Group3 Interrupts (PIEIER3)
+/* Задаёт INT4PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT4PL 2 // Group4 Interrupts (PIEIER4)
+/* Задаёт INT5PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT5PL 2 // Group5 Interrupts (PIEIER5)
+/* Задаёт INT6PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT6PL 3 // Group6 Interrupts (PIEIER6)
+/* Задаёт INT7PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT7PL 0 // reserved
+/* Задаёт INT8PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT8PL 0 // reserved
+/* Задаёт INT9PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT9PL 1 // Group9 Interrupts (PIEIER9)
+/* Задаёт INT10PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT10PL 0 // reserved
+/* Задаёт INT11PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT11PL 0 // reserved
+/* Задаёт INT12PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT12PL 0 // reserved
+/* Задаёт INT13PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT13PL 4 // XINT13
+/* Задаёт INT14PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT14PL 4 // INT14 (TINT2)
+/* Задаёт INT15PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT15PL 4 // DATALOG
+/* Задаёт INT16PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define INT16PL 4 // RTOSINT
//-------------------------------------------------------------------------------
@@ -91,10 +113,10 @@ extern "C" {
// MG111 to MG118
// MG121 to MG128
//
-// Note: The priority levels shown here may not make sense in a
+// Note: The priority levels shown here may not make sense in a
// real application. This is for demonstration purposes only!!!
-//
-// The user should change these to values that make sense for
+//
+// The user should change these to values that make sense for
// their application.
//
// 0 = not used
@@ -102,2088 +124,3760 @@ extern "C" {
// ...
// 8 = lowest priority
//
+/* Задаёт G11PL = 7; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G11PL 7 // SEQ1INT (ADC)
+/* Задаёт G12PL = 6; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G12PL 6 // SEQ2INT (ADC)
+/* Задаёт G13PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G13PL 0 // reserved
+/* Задаёт G14PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G14PL 1 // XINT1 (External)
+/* Задаёт G15PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G15PL 3 // XINT2 (External)
+/* Задаёт G16PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G16PL 2 // ADCINT (ADC)
+/* Задаёт G17PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G17PL 1 // TINT0 (CPU Timer 0)
+/* Задаёт G18PL = 5; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G18PL 5 // WAKEINT (WD/LPM)
+/* Задаёт G21PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G21PL 4 // EPWM1_TZINT (ePWM1 Trip)
+/* Задаёт G22PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G22PL 3 // EPWM2_TZINT (ePWM2 Trip)
+/* Задаёт G23PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G23PL 2 // EPWM3_TZINT (ePWM3 Trip)
+/* Задаёт G24PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G24PL 1 // EPWM4_TZINT (ePWM4 Trip)
+/* Задаёт G25PL = 5; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G25PL 5 // EPWM5_TZINT (ePWM5 Trip)
+/* Задаёт G26PL = 6; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G26PL 6 // EPWM6_TZINT (ePWM6 Trip)
+/* Задаёт G27PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G27PL 0 // reserved
+/* Задаёт G28PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G28PL 0 // reserved
+/* Задаёт G31PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G31PL 4 // EPWM1_INT (ePWM1 Int)
+/* Задаёт G32PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G32PL 1 // EPWM2_INT (ePWM2 Int)
+/* Задаёт G33PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G33PL 1 // EPWM3_INT (ePWM3 Int)
+/* Задаёт G34PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G34PL 2 // EPWM4_INT (ePWM4 Int)
+/* Задаёт G35PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G35PL 2 // EPWM5_INT (ePWM5 Int)
+/* Задаёт G36PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G36PL 1 // EPWM6_INT (ePWM6 Int)
+/* Задаёт G37PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G37PL 0 // reserved
+/* Задаёт G38PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G38PL 0 // reserved
+/* Задаёт G41PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G41PL 2 // ECAP1_INT (eCAP1 Int)
+/* Задаёт G42PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G42PL 1 // ECAP2_INT (eCAP2 Int)
+/* Задаёт G43PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G43PL 3 // ECAP3_INT (eCAP3 Int)
+/* Задаёт G44PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G44PL 3 // ECAP4_INT (eCAP4 Int)
+/* Задаёт G45PL = 5; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G45PL 5 // ECAP5_INT (eCAP5 Int)
+/* Задаёт G46PL = 5; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G46PL 5 // ECAP6_INT (eCAP6 Int)
+/* Задаёт G47PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G47PL 0 // reserved
+/* Задаёт G48PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G48PL 0 // reserved
+/* Задаёт G51PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G51PL 2 // EQEP1_INT (eQEP1 Int)
+/* Задаёт G52PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G52PL 1 // EQEP2_INT (eQEP2 Int)
+/* Задаёт G53PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G53PL 0 // reserved
+/* Задаёт G54PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G54PL 0 // reserved
+/* Задаёт G55PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G55PL 0 // reserved
+/* Задаёт G56PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G56PL 0 // reserved
+/* Задаёт G57PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G57PL 0 // reserved
+/* Задаёт G58PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G58PL 0 // reserved
+/* Задаёт G61PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G61PL 3 // SPIRXINTA (SPI-A)
+/* Задаёт G62PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G62PL 1 // SPITXINTA (SPI-A)
+/* Задаёт G63PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G63PL 4 // MRINTB (McBSP-B)
-#define G64PL 6 // MXINTB (McBSP-B)
+/* Задаёт G64PL = 6; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
+#define G64PL 6 // MXINTB (McBSP-B)
+/* Задаёт G65PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G65PL 2 // MRINTA (McBSP-A)
-#define G66PL 1 // MXINTA (McBSP-A)
+/* Задаёт G66PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
+#define G66PL 1 // MXINTA (McBSP-A)
+/* Задаёт G67PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G67PL 0 // reserved
-#define G68PL 0 // reserved
+/* Задаёт G68PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
+#define G68PL 0 // reserved
+/* Задаёт G71PL = 5; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G71PL 5 // DINTCH1 (DMA)
+/* Задаёт G72PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G72PL 4 // DINTCH2 (DMA)
+/* Задаёт G73PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G73PL 4 // DINTCH3 (DMA)
+/* Задаёт G74PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G74PL 2 // DINTCH4 (DMA)
+/* Задаёт G75PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G75PL 3 // DINTCH5 (DMA)
+/* Задаёт G76PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G76PL 1 // DINTCH6 (DMA)
+/* Задаёт G77PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G77PL 0 // reserved
+/* Задаёт G78PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G78PL 0 // reserved
+/* Задаёт G81PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G81PL 1 // I2CINT1A (I2C-A)
+/* Задаёт G82PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G82PL 2 // I2CINT2A (I2C-A)
+/* Задаёт G83PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G83PL 0 // reserved
+/* Задаёт G84PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G84PL 0 // reserved
+/* Задаёт G85PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G85PL 4 // SCIRXINTC (SCI-C)
+/* Задаёт G86PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G86PL 3 // SCITXINTC (SCI-C)
+/* Задаёт G87PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G87PL 0 // reserved
+/* Задаёт G88PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G88PL 0 // reserved
+/* Задаёт G91PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G91PL 1 // SCIRXINTA (SCI-A)
+/* Задаёт G92PL = 5; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G92PL 5 // SCITXINTA (SCI-A)
+/* Задаёт G93PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G93PL 3 // SCIRXINTB (SCI-B)
+/* Задаёт G94PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G94PL 4 // SCITXINTB (SCI-B)
+/* Задаёт G95PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G95PL 1 // ECAN0INTA (ECAN-A)
+/* Задаёт G96PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G96PL 1 // ECAN1INTA (ECAN-A)
+/* Задаёт G97PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G97PL 2 // ECAN0INTB (ECAN-B)
-#define G98PL 4 // ECAN1INTB (ECAN-B)
+/* Задаёт G98PL = 4; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
+#define G98PL 4 // ECAN1INTB (ECAN-B)
+/* Задаёт G101PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G101PL 0 // reserved
+/* Задаёт G102PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G102PL 0 // reserved
+/* Задаёт G103PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G103PL 0 // reserved
+/* Задаёт G104PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G104PL 0 // reserved
+/* Задаёт G105PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G105PL 0 // reserved
+/* Задаёт G106PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G106PL 0 // reserved
+/* Задаёт G107PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G107PL 0 // reserved
+/* Задаёт G108PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G108PL 0 // reserved
+/* Задаёт G111PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G111PL 0 // reserved
+/* Задаёт G112PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G112PL 0 // reserved
+/* Задаёт G113PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G113PL 0 // reserved
+/* Задаёт G114PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G114PL 0 // reserved
+/* Задаёт G115PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G115PL 0 // reserved
+/* Задаёт G116PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G116PL 0 // reserved
+/* Задаёт G117PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G117PL 0 // reserved
+/* Задаёт G118PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G118PL 0 // reserved
+/* Задаёт G121PL = 5; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G121PL 5 // XINT3 (External)
+/* Задаёт G122PL = 3; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G122PL 3 // XINT4 (External)
+/* Задаёт G123PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G123PL 2 // XINT5 (External)
+/* Задаёт G124PL = 2; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G124PL 2 // XINT6 (External)
+/* Задаёт G125PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G125PL 1 // XINT7 (External)
+/* Задаёт G126PL = 0; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G126PL 0 // reserved
+/* Задаёт G127PL = 6; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G127PL 6 // LVF (FPA32)
+/* Задаёт G128PL = 1; уровень приоритета; 0 отключает источник, меньшее ненулевое число означает более высокий приоритет. */
#define G128PL 1 // LUF (FPA32)
-// There should be no need to modify code below this line
+// There should be no need to modify code below this line
//-------------------------------------------------------------------------------
// Automatically generate IER interrupt masks MINT1 to MINT16:
//
// Beginning of MINT1:
+/* Условие компиляции (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL == 0)
+/* Задаёт MINT1_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 1_1PL. */
#define MINT1_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_1PL. */
#define MINT1_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT1PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT1PL) || (INT2PL == 0)
+/* Задаёт MINT1_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 1_2PL. */
#define MINT1_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_2PL. */
#define MINT1_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT1PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT1PL) || (INT3PL == 0)
+/* Задаёт MINT1_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 1_3PL. */
#define MINT1_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_3PL. */
#define MINT1_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT1PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT1PL) || (INT4PL == 0)
+/* Задаёт MINT1_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 1_4PL. */
#define MINT1_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_4PL. */
#define MINT1_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT1PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT1PL) || (INT5PL == 0)
+/* Задаёт MINT1_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 1_5PL. */
#define MINT1_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_5PL. */
#define MINT1_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT1PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT1PL) || (INT6PL == 0)
+/* Задаёт MINT1_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 1_6PL. */
#define MINT1_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_6PL. */
#define MINT1_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT1PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT1PL) || (INT7PL == 0)
+/* Задаёт MINT1_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 1_7PL. */
#define MINT1_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_7PL. */
#define MINT1_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT1PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT1PL) || (INT8PL == 0)
+/* Задаёт MINT1_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 1_8PL. */
#define MINT1_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_8PL. */
#define MINT1_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT1PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT1PL) || (INT9PL == 0)
+/* Задаёт MINT1_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 1_9PL. */
#define MINT1_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_9PL. */
#define MINT1_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT1PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT1PL) || (INT10PL == 0)
+/* Задаёт MINT1_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 1_10PL. */
#define MINT1_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_10PL. */
#define MINT1_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT1PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT1PL) || (INT11PL == 0)
+/* Задаёт MINT1_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 1_11PL. */
#define MINT1_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_11PL. */
#define MINT1_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT1PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT1PL) || (INT12PL == 0)
+/* Задаёт MINT1_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 1_12PL. */
#define MINT1_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_12PL. */
#define MINT1_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT1PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT1PL) || (INT13PL == 0)
+/* Задаёт MINT1_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 1_13PL. */
#define MINT1_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_13PL. */
#define MINT1_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT1PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT1PL) || (INT14PL == 0)
+/* Задаёт MINT1_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 1_14PL. */
#define MINT1_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_14PL. */
#define MINT1_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT1PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT1PL) || (INT15PL == 0)
+/* Задаёт MINT1_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 1_15PL. */
#define MINT1_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_15PL. */
#define MINT1_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT1PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT1PL) || (INT16PL == 0)
+/* Задаёт MINT1_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 1_16PL. */
#define MINT1_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT1_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 1_16PL. */
#define MINT1_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT1 = (MINT1_1PL & MINT1_2PL & MINT1_3PL & MINT1_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 1. */
#define MINT1 (MINT1_1PL & MINT1_2PL & MINT1_3PL & MINT1_4PL & \
- MINT1_5PL & MINT1_6PL & MINT1_7PL & MINT1_8PL & \
- MINT1_9PL & MINT1_10PL & MINT1_11PL & MINT1_12PL & \
- MINT1_13PL & MINT1_14PL & MINT1_15PL & MINT1_16PL)
+ MINT1_5PL & MINT1_6PL & MINT1_7PL & MINT1_8PL & /* Продолжает список аргументов, полей или выражение MINT1_5PL & MINT1_6PL & MINT1_7PL & MINT1_8PL &; порядок элементов сохраняется. */ \
+ MINT1_9PL & MINT1_10PL & MINT1_11PL & MINT1_12PL & /* Продолжает список аргументов, полей или выражение MINT1_9PL & MINT1_10PL & MINT1_11PL & MINT1_12PL &; порядок элементов сохраняется. */ \
+ MINT1_13PL & MINT1_14PL & MINT1_15PL & MINT1_16PL) /* Продолжает список аргументов, полей или выражение MINT1_13PL & MINT1_14PL & MINT1_15PL & MINT1_16PL); порядок элементов сохраняется. */
// End Of MINT1.
// Beginning of MINT2:
+/* Условие компиляции (INT1PL >= INT2PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT2PL) || (INT1PL == 0)
+/* Задаёт MINT2_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 2_1PL. */
#define MINT2_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_1PL. */
#define MINT2_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL == 0)
+/* Задаёт MINT2_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 2_2PL. */
#define MINT2_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_2PL. */
#define MINT2_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT2PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT2PL) || (INT3PL == 0)
+/* Задаёт MINT2_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 2_3PL. */
#define MINT2_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_3PL. */
#define MINT2_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT2PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT2PL) || (INT4PL == 0)
+/* Задаёт MINT2_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 2_4PL. */
#define MINT2_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_4PL. */
#define MINT2_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT2PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT2PL) || (INT5PL == 0)
+/* Задаёт MINT2_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 2_5PL. */
#define MINT2_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_5PL. */
#define MINT2_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT2PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT2PL) || (INT6PL == 0)
+/* Задаёт MINT2_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 2_6PL. */
#define MINT2_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_6PL. */
#define MINT2_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT2PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT2PL) || (INT7PL == 0)
+/* Задаёт MINT2_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 2_7PL. */
#define MINT2_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_7PL. */
#define MINT2_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT2PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT2PL) || (INT8PL == 0)
+/* Задаёт MINT2_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 2_8PL. */
#define MINT2_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_8PL. */
#define MINT2_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT2PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT2PL) || (INT9PL == 0)
+/* Задаёт MINT2_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 2_9PL. */
#define MINT2_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_9PL. */
#define MINT2_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT2PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT2PL) || (INT10PL == 0)
+/* Задаёт MINT2_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 2_10PL. */
#define MINT2_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_10PL. */
#define MINT2_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT2PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT2PL) || (INT11PL == 0)
+/* Задаёт MINT2_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 2_11PL. */
#define MINT2_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_11PL. */
#define MINT2_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT2PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT2PL) || (INT12PL == 0)
+/* Задаёт MINT2_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 2_12PL. */
#define MINT2_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_12PL. */
#define MINT2_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT2PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT2PL) || (INT13PL == 0)
+/* Задаёт MINT2_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 2_13PL. */
#define MINT2_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_13PL. */
#define MINT2_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT2PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT2PL) || (INT14PL == 0)
+/* Задаёт MINT2_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 2_14PL. */
#define MINT2_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_14PL. */
#define MINT2_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT2PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT2PL) || (INT15PL == 0)
+/* Задаёт MINT2_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 2_15PL. */
#define MINT2_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_15PL. */
#define MINT2_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT2PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT2PL) || (INT16PL == 0)
+/* Задаёт MINT2_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 2_16PL. */
#define MINT2_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT2_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 2_16PL. */
#define MINT2_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT2 = (MINT2_1PL & MINT2_2PL & MINT2_3PL & MINT2_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 2. */
#define MINT2 (MINT2_1PL & MINT2_2PL & MINT2_3PL & MINT2_4PL & \
- MINT2_5PL & MINT2_6PL & MINT2_7PL & MINT2_8PL & \
- MINT2_9PL & MINT2_10PL & MINT2_11PL & MINT2_12PL & \
- MINT2_13PL & MINT2_14PL & MINT2_15PL & MINT2_16PL)
+ MINT2_5PL & MINT2_6PL & MINT2_7PL & MINT2_8PL & /* Продолжает список аргументов, полей или выражение MINT2_5PL & MINT2_6PL & MINT2_7PL & MINT2_8PL &; порядок элементов сохраняется. */ \
+ MINT2_9PL & MINT2_10PL & MINT2_11PL & MINT2_12PL & /* Продолжает список аргументов, полей или выражение MINT2_9PL & MINT2_10PL & MINT2_11PL & MINT2_12PL &; порядок элементов сохраняется. */ \
+ MINT2_13PL & MINT2_14PL & MINT2_15PL & MINT2_16PL) /* Продолжает список аргументов, полей или выражение MINT2_13PL & MINT2_14PL & MINT2_15PL & MINT2_16PL); порядок элементов сохраняется. */
// End Of MINT2.
// Beginning of MINT3:
+/* Условие компиляции (INT1PL >= INT3PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT3PL) || (INT1PL == 0)
+/* Задаёт MINT3_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 3_1PL. */
#define MINT3_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_1PL. */
#define MINT3_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT3PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT3PL) || (INT2PL == 0)
+/* Задаёт MINT3_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 3_2PL. */
#define MINT3_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_2PL. */
#define MINT3_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL == 0)
+/* Задаёт MINT3_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 3_3PL. */
#define MINT3_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_3PL. */
#define MINT3_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT3PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT3PL) || (INT4PL == 0)
+/* Задаёт MINT3_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 3_4PL. */
#define MINT3_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_4PL. */
#define MINT3_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT3PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT3PL) || (INT5PL == 0)
+/* Задаёт MINT3_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 3_5PL. */
#define MINT3_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_5PL. */
#define MINT3_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT3PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT3PL) || (INT6PL == 0)
+/* Задаёт MINT3_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 3_6PL. */
#define MINT3_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_6PL. */
#define MINT3_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT3PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT3PL) || (INT7PL == 0)
+/* Задаёт MINT3_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 3_7PL. */
#define MINT3_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_7PL. */
#define MINT3_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT3PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT3PL) || (INT8PL == 0)
+/* Задаёт MINT3_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 3_8PL. */
#define MINT3_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_8PL. */
#define MINT3_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT3PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT3PL) || (INT9PL == 0)
+/* Задаёт MINT3_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 3_9PL. */
#define MINT3_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_9PL. */
#define MINT3_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT3PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT3PL) || (INT10PL == 0)
+/* Задаёт MINT3_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 3_10PL. */
#define MINT3_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_10PL. */
#define MINT3_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT3PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT3PL) || (INT11PL == 0)
+/* Задаёт MINT3_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 3_11PL. */
#define MINT3_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_11PL. */
#define MINT3_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT3PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT3PL) || (INT12PL == 0)
+/* Задаёт MINT3_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 3_12PL. */
#define MINT3_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_12PL. */
#define MINT3_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT3PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT3PL) || (INT13PL == 0)
+/* Задаёт MINT3_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 3_13PL. */
#define MINT3_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_13PL. */
#define MINT3_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT3PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT3PL) || (INT14PL == 0)
+/* Задаёт MINT3_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 3_14PL. */
#define MINT3_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_14PL. */
#define MINT3_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT3PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT3PL) || (INT15PL == 0)
+/* Задаёт MINT3_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 3_15PL. */
#define MINT3_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_15PL. */
#define MINT3_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT3PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT3PL) || (INT16PL == 0)
+/* Задаёт MINT3_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 3_16PL. */
#define MINT3_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT3_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 3_16PL. */
#define MINT3_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT3 = (MINT3_1PL & MINT3_2PL & MINT3_3PL & MINT3_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 3. */
#define MINT3 (MINT3_1PL & MINT3_2PL & MINT3_3PL & MINT3_4PL & \
- MINT3_5PL & MINT3_6PL & MINT3_7PL & MINT3_8PL & \
- MINT3_9PL & MINT3_10PL & MINT3_11PL & MINT3_12PL & \
- MINT3_13PL & MINT3_14PL & MINT3_15PL & MINT3_16PL)
+ MINT3_5PL & MINT3_6PL & MINT3_7PL & MINT3_8PL & /* Продолжает список аргументов, полей или выражение MINT3_5PL & MINT3_6PL & MINT3_7PL & MINT3_8PL &; порядок элементов сохраняется. */ \
+ MINT3_9PL & MINT3_10PL & MINT3_11PL & MINT3_12PL & /* Продолжает список аргументов, полей или выражение MINT3_9PL & MINT3_10PL & MINT3_11PL & MINT3_12PL &; порядок элементов сохраняется. */ \
+ MINT3_13PL & MINT3_14PL & MINT3_15PL & MINT3_16PL) /* Продолжает список аргументов, полей или выражение MINT3_13PL & MINT3_14PL & MINT3_15PL & MINT3_16PL); порядок элементов сохраняется. */
// End Of MINT3.
// Beginning of MINT4:
+/* Условие компиляции (INT1PL >= INT4PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT4PL) || (INT1PL == 0)
+/* Задаёт MINT4_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 4_1PL. */
#define MINT4_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_1PL. */
#define MINT4_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT4PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT4PL) || (INT2PL == 0)
+/* Задаёт MINT4_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 4_2PL. */
#define MINT4_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_2PL. */
#define MINT4_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT4PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT4PL) || (INT3PL == 0)
+/* Задаёт MINT4_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 4_3PL. */
#define MINT4_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_3PL. */
#define MINT4_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL == 0)
+/* Задаёт MINT4_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 4_4PL. */
#define MINT4_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_4PL. */
#define MINT4_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT4PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT4PL) || (INT5PL == 0)
+/* Задаёт MINT4_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 4_5PL. */
#define MINT4_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_5PL. */
#define MINT4_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT4PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT4PL) || (INT6PL == 0)
+/* Задаёт MINT4_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 4_6PL. */
#define MINT4_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_6PL. */
#define MINT4_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT4PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT4PL) || (INT7PL == 0)
+/* Задаёт MINT4_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 4_7PL. */
#define MINT4_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_7PL. */
#define MINT4_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT4PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT4PL) || (INT8PL == 0)
+/* Задаёт MINT4_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 4_8PL. */
#define MINT4_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_8PL. */
#define MINT4_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT4PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT4PL) || (INT9PL == 0)
+/* Задаёт MINT4_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 4_9PL. */
#define MINT4_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_9PL. */
#define MINT4_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT4PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT4PL) || (INT10PL == 0)
+/* Задаёт MINT4_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 4_10PL. */
#define MINT4_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_10PL. */
#define MINT4_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT4PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT4PL) || (INT11PL == 0)
+/* Задаёт MINT4_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 4_11PL. */
#define MINT4_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_11PL. */
#define MINT4_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT4PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT4PL) || (INT12PL == 0)
+/* Задаёт MINT4_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 4_12PL. */
#define MINT4_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_12PL. */
#define MINT4_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT4PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT4PL) || (INT13PL == 0)
+/* Задаёт MINT4_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 4_13PL. */
#define MINT4_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_13PL. */
#define MINT4_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT4PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT4PL) || (INT14PL == 0)
+/* Задаёт MINT4_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 4_14PL. */
#define MINT4_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_14PL. */
#define MINT4_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT4PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT4PL) || (INT15PL == 0)
+/* Задаёт MINT4_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 4_15PL. */
#define MINT4_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_15PL. */
#define MINT4_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT4PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT4PL) || (INT16PL == 0)
+/* Задаёт MINT4_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 4_16PL. */
#define MINT4_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT4_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 4_16PL. */
#define MINT4_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT4 = (MINT4_1PL & MINT4_2PL & MINT4_3PL & MINT4_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 4. */
#define MINT4 (MINT4_1PL & MINT4_2PL & MINT4_3PL & MINT4_4PL & \
- MINT4_5PL & MINT4_6PL & MINT4_7PL & MINT4_8PL & \
- MINT4_9PL & MINT4_10PL & MINT4_11PL & MINT4_12PL & \
- MINT4_13PL & MINT4_14PL & MINT4_15PL & MINT4_16PL)
+ MINT4_5PL & MINT4_6PL & MINT4_7PL & MINT4_8PL & /* Продолжает список аргументов, полей или выражение MINT4_5PL & MINT4_6PL & MINT4_7PL & MINT4_8PL &; порядок элементов сохраняется. */ \
+ MINT4_9PL & MINT4_10PL & MINT4_11PL & MINT4_12PL & /* Продолжает список аргументов, полей или выражение MINT4_9PL & MINT4_10PL & MINT4_11PL & MINT4_12PL &; порядок элементов сохраняется. */ \
+ MINT4_13PL & MINT4_14PL & MINT4_15PL & MINT4_16PL) /* Продолжает список аргументов, полей или выражение MINT4_13PL & MINT4_14PL & MINT4_15PL & MINT4_16PL); порядок элементов сохраняется. */
// End Of MINT4.
// Beginning of MINT5:
+/* Условие компиляции (INT1PL >= INT5PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT5PL) || (INT1PL == 0)
+/* Задаёт MINT5_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 5_1PL. */
#define MINT5_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_1PL. */
#define MINT5_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT5PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT5PL) || (INT2PL == 0)
+/* Задаёт MINT5_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 5_2PL. */
#define MINT5_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_2PL. */
#define MINT5_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT5PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT5PL) || (INT3PL == 0)
+/* Задаёт MINT5_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 5_3PL. */
#define MINT5_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_3PL. */
#define MINT5_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT5PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT5PL) || (INT4PL == 0)
+/* Задаёт MINT5_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 5_4PL. */
#define MINT5_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_4PL. */
#define MINT5_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL == 0)
+/* Задаёт MINT5_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 5_5PL. */
#define MINT5_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_5PL. */
#define MINT5_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT5PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT5PL) || (INT6PL == 0)
+/* Задаёт MINT5_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 5_6PL. */
#define MINT5_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_6PL. */
#define MINT5_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT5PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT5PL) || (INT7PL == 0)
+/* Задаёт MINT5_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 5_7PL. */
#define MINT5_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_7PL. */
#define MINT5_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT5PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT5PL) || (INT8PL == 0)
+/* Задаёт MINT5_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 5_8PL. */
#define MINT5_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_8PL. */
#define MINT5_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT5PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT5PL) || (INT9PL == 0)
+/* Задаёт MINT5_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 5_9PL. */
#define MINT5_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_9PL. */
#define MINT5_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT5PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT5PL) || (INT10PL == 0)
+/* Задаёт MINT5_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 5_10PL. */
#define MINT5_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_10PL. */
#define MINT5_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT5PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT5PL) || (INT11PL == 0)
+/* Задаёт MINT5_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 5_11PL. */
#define MINT5_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_11PL. */
#define MINT5_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT5PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT5PL) || (INT12PL == 0)
+/* Задаёт MINT5_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 5_12PL. */
#define MINT5_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_12PL. */
#define MINT5_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT5PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT5PL) || (INT13PL == 0)
+/* Задаёт MINT5_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 5_13PL. */
#define MINT5_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_13PL. */
#define MINT5_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT5PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT5PL) || (INT14PL == 0)
+/* Задаёт MINT5_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 5_14PL. */
#define MINT5_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_14PL. */
#define MINT5_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT5PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT5PL) || (INT15PL == 0)
+/* Задаёт MINT5_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 5_15PL. */
#define MINT5_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_15PL. */
#define MINT5_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT5PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT5PL) || (INT16PL == 0)
+/* Задаёт MINT5_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 5_16PL. */
#define MINT5_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT5_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 5_16PL. */
#define MINT5_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT5 = (MINT5_1PL & MINT5_2PL & MINT5_3PL & MINT5_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 5. */
#define MINT5 (MINT5_1PL & MINT5_2PL & MINT5_3PL & MINT5_4PL & \
- MINT5_5PL & MINT5_6PL & MINT5_7PL & MINT5_8PL & \
- MINT5_9PL & MINT5_10PL & MINT5_11PL & MINT5_12PL & \
- MINT5_13PL & MINT5_14PL & MINT5_15PL & MINT5_16PL)
+ MINT5_5PL & MINT5_6PL & MINT5_7PL & MINT5_8PL & /* Продолжает список аргументов, полей или выражение MINT5_5PL & MINT5_6PL & MINT5_7PL & MINT5_8PL &; порядок элементов сохраняется. */ \
+ MINT5_9PL & MINT5_10PL & MINT5_11PL & MINT5_12PL & /* Продолжает список аргументов, полей или выражение MINT5_9PL & MINT5_10PL & MINT5_11PL & MINT5_12PL &; порядок элементов сохраняется. */ \
+ MINT5_13PL & MINT5_14PL & MINT5_15PL & MINT5_16PL) /* Продолжает список аргументов, полей или выражение MINT5_13PL & MINT5_14PL & MINT5_15PL & MINT5_16PL); порядок элементов сохраняется. */
// End Of MINT5.
// Beginning of MINT6:
+/* Условие компиляции (INT1PL >= INT6PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT6PL) || (INT1PL == 0)
+/* Задаёт MINT6_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 6_1PL. */
#define MINT6_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_1PL. */
#define MINT6_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT6PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT6PL) || (INT2PL == 0)
+/* Задаёт MINT6_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 6_2PL. */
#define MINT6_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_2PL. */
#define MINT6_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT6PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT6PL) || (INT3PL == 0)
+/* Задаёт MINT6_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 6_3PL. */
#define MINT6_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_3PL. */
#define MINT6_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT6PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT6PL) || (INT4PL == 0)
+/* Задаёт MINT6_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 6_4PL. */
#define MINT6_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_4PL. */
#define MINT6_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT6PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT6PL) || (INT5PL == 0)
+/* Задаёт MINT6_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 6_5PL. */
#define MINT6_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_5PL. */
#define MINT6_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL == 0)
+/* Задаёт MINT6_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 6_6PL. */
#define MINT6_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_6PL. */
#define MINT6_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT6PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT6PL) || (INT7PL == 0)
+/* Задаёт MINT6_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 6_7PL. */
#define MINT6_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_7PL. */
#define MINT6_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT6PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT6PL) || (INT8PL == 0)
+/* Задаёт MINT6_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 6_8PL. */
#define MINT6_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_8PL. */
#define MINT6_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT6PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT6PL) || (INT9PL == 0)
+/* Задаёт MINT6_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 6_9PL. */
#define MINT6_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_9PL. */
#define MINT6_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT6PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT6PL) || (INT10PL == 0)
+/* Задаёт MINT6_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 6_10PL. */
#define MINT6_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_10PL. */
#define MINT6_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT6PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT6PL) || (INT11PL == 0)
+/* Задаёт MINT6_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 6_11PL. */
#define MINT6_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_11PL. */
#define MINT6_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT6PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT6PL) || (INT12PL == 0)
+/* Задаёт MINT6_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 6_12PL. */
#define MINT6_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_12PL. */
#define MINT6_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT6PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT6PL) || (INT13PL == 0)
+/* Задаёт MINT6_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 6_13PL. */
#define MINT6_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_13PL. */
#define MINT6_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT6PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT6PL) || (INT14PL == 0)
+/* Задаёт MINT6_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 6_14PL. */
#define MINT6_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_14PL. */
#define MINT6_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT6PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT6PL) || (INT15PL == 0)
+/* Задаёт MINT6_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 6_15PL. */
#define MINT6_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_15PL. */
#define MINT6_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT6PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT6PL) || (INT16PL == 0)
+/* Задаёт MINT6_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 6_16PL. */
#define MINT6_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT6_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 6_16PL. */
#define MINT6_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT6 = (MINT6_1PL & MINT6_2PL & MINT6_3PL & MINT6_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 6. */
#define MINT6 (MINT6_1PL & MINT6_2PL & MINT6_3PL & MINT6_4PL & \
- MINT6_5PL & MINT6_6PL & MINT6_7PL & MINT6_8PL & \
- MINT6_9PL & MINT6_10PL & MINT6_11PL & MINT6_12PL & \
- MINT6_13PL & MINT6_14PL & MINT6_15PL & MINT6_16PL)
+ MINT6_5PL & MINT6_6PL & MINT6_7PL & MINT6_8PL & /* Продолжает список аргументов, полей или выражение MINT6_5PL & MINT6_6PL & MINT6_7PL & MINT6_8PL &; порядок элементов сохраняется. */ \
+ MINT6_9PL & MINT6_10PL & MINT6_11PL & MINT6_12PL & /* Продолжает список аргументов, полей или выражение MINT6_9PL & MINT6_10PL & MINT6_11PL & MINT6_12PL &; порядок элементов сохраняется. */ \
+ MINT6_13PL & MINT6_14PL & MINT6_15PL & MINT6_16PL) /* Продолжает список аргументов, полей или выражение MINT6_13PL & MINT6_14PL & MINT6_15PL & MINT6_16PL); порядок элементов сохраняется. */
// End Of MINT6.
// Beginning of MINT7:
+/* Условие компиляции (INT1PL >= INT7PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT7PL) || (INT1PL == 0)
+/* Задаёт MINT7_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 7_1PL. */
#define MINT7_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_1PL. */
#define MINT7_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT7PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT7PL) || (INT2PL == 0)
+/* Задаёт MINT7_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 7_2PL. */
#define MINT7_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_2PL. */
#define MINT7_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT7PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT7PL) || (INT3PL == 0)
+/* Задаёт MINT7_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 7_3PL. */
#define MINT7_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_3PL. */
#define MINT7_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT7PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT7PL) || (INT4PL == 0)
+/* Задаёт MINT7_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 7_4PL. */
#define MINT7_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_4PL. */
#define MINT7_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT7PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT7PL) || (INT5PL == 0)
+/* Задаёт MINT7_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 7_5PL. */
#define MINT7_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_5PL. */
#define MINT7_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT7PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT7PL) || (INT6PL == 0)
+/* Задаёт MINT7_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 7_6PL. */
#define MINT7_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_6PL. */
#define MINT7_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL == 0)
+/* Задаёт MINT7_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 7_7PL. */
#define MINT7_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_7PL. */
#define MINT7_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT7PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT7PL) || (INT8PL == 0)
+/* Задаёт MINT7_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 7_8PL. */
#define MINT7_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_8PL. */
#define MINT7_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT7PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT7PL) || (INT9PL == 0)
+/* Задаёт MINT7_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 7_9PL. */
#define MINT7_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_9PL. */
#define MINT7_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT7PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT7PL) || (INT10PL == 0)
+/* Задаёт MINT7_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 7_10PL. */
#define MINT7_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_10PL. */
#define MINT7_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT7PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT7PL) || (INT11PL == 0)
+/* Задаёт MINT7_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 7_11PL. */
#define MINT7_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_11PL. */
#define MINT7_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT7PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT7PL) || (INT12PL == 0)
+/* Задаёт MINT7_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 7_12PL. */
#define MINT7_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_12PL. */
#define MINT7_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT7PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT7PL) || (INT13PL == 0)
+/* Задаёт MINT7_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 7_13PL. */
#define MINT7_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_13PL. */
#define MINT7_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT7PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT7PL) || (INT14PL == 0)
+/* Задаёт MINT7_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 7_14PL. */
#define MINT7_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_14PL. */
#define MINT7_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT7PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT7PL) || (INT15PL == 0)
+/* Задаёт MINT7_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 7_15PL. */
#define MINT7_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_15PL. */
#define MINT7_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT7PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT7PL) || (INT16PL == 0)
+/* Задаёт MINT7_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 7_16PL. */
#define MINT7_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT7_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 7_16PL. */
#define MINT7_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT7 = (MINT7_1PL & MINT7_2PL & MINT7_3PL & MINT7_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 7. */
#define MINT7 (MINT7_1PL & MINT7_2PL & MINT7_3PL & MINT7_4PL & \
- MINT7_5PL & MINT7_6PL & MINT7_7PL & MINT7_8PL & \
- MINT7_9PL & MINT7_10PL & MINT7_11PL & MINT7_12PL & \
- MINT7_13PL & MINT7_14PL & MINT7_15PL & MINT7_16PL)
+ MINT7_5PL & MINT7_6PL & MINT7_7PL & MINT7_8PL & /* Продолжает список аргументов, полей или выражение MINT7_5PL & MINT7_6PL & MINT7_7PL & MINT7_8PL &; порядок элементов сохраняется. */ \
+ MINT7_9PL & MINT7_10PL & MINT7_11PL & MINT7_12PL & /* Продолжает список аргументов, полей или выражение MINT7_9PL & MINT7_10PL & MINT7_11PL & MINT7_12PL &; порядок элементов сохраняется. */ \
+ MINT7_13PL & MINT7_14PL & MINT7_15PL & MINT7_16PL) /* Продолжает список аргументов, полей или выражение MINT7_13PL & MINT7_14PL & MINT7_15PL & MINT7_16PL); порядок элементов сохраняется. */
// End Of MINT7.
// Beginning of MINT8:
+/* Условие компиляции (INT1PL >= INT8PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT8PL) || (INT1PL == 0)
+/* Задаёт MINT8_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 8_1PL. */
#define MINT8_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_1PL. */
#define MINT8_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT8PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT8PL) || (INT2PL == 0)
+/* Задаёт MINT8_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 8_2PL. */
#define MINT8_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_2PL. */
#define MINT8_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT8PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT8PL) || (INT3PL == 0)
+/* Задаёт MINT8_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 8_3PL. */
#define MINT8_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_3PL. */
#define MINT8_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT8PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT8PL) || (INT4PL == 0)
+/* Задаёт MINT8_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 8_4PL. */
#define MINT8_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_4PL. */
#define MINT8_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT8PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT8PL) || (INT5PL == 0)
+/* Задаёт MINT8_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 8_5PL. */
#define MINT8_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_5PL. */
#define MINT8_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT8PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT8PL) || (INT6PL == 0)
+/* Задаёт MINT8_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 8_6PL. */
#define MINT8_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_6PL. */
#define MINT8_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT8PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT8PL) || (INT7PL == 0)
+/* Задаёт MINT8_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 8_7PL. */
#define MINT8_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_7PL. */
#define MINT8_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL == 0)
+/* Задаёт MINT8_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 8_8PL. */
#define MINT8_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_8PL. */
#define MINT8_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT8PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT8PL) || (INT9PL == 0)
+/* Задаёт MINT8_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 8_9PL. */
#define MINT8_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_9PL. */
#define MINT8_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT8PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT8PL) || (INT10PL == 0)
+/* Задаёт MINT8_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 8_10PL. */
#define MINT8_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_10PL. */
#define MINT8_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT8PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT8PL) || (INT11PL == 0)
+/* Задаёт MINT8_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 8_11PL. */
#define MINT8_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_11PL. */
#define MINT8_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT8PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT8PL) || (INT12PL == 0)
+/* Задаёт MINT8_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 8_12PL. */
#define MINT8_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_12PL. */
#define MINT8_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT8PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT8PL) || (INT13PL == 0)
+/* Задаёт MINT8_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 8_13PL. */
#define MINT8_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_13PL. */
#define MINT8_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT8PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT8PL) || (INT14PL == 0)
+/* Задаёт MINT8_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 8_14PL. */
#define MINT8_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_14PL. */
#define MINT8_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT8PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT8PL) || (INT15PL == 0)
+/* Задаёт MINT8_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 8_15PL. */
#define MINT8_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_15PL. */
#define MINT8_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT8PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT8PL) || (INT16PL == 0)
+/* Задаёт MINT8_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 8_16PL. */
#define MINT8_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT8_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 8_16PL. */
#define MINT8_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT8 = (MINT8_1PL & MINT8_2PL & MINT8_3PL & MINT8_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 8. */
#define MINT8 (MINT8_1PL & MINT8_2PL & MINT8_3PL & MINT8_4PL & \
- MINT8_5PL & MINT8_6PL & MINT8_7PL & MINT8_8PL & \
- MINT8_9PL & MINT8_10PL & MINT8_11PL & MINT8_12PL & \
- MINT8_13PL & MINT8_14PL & MINT8_15PL & MINT8_16PL)
+ MINT8_5PL & MINT8_6PL & MINT8_7PL & MINT8_8PL & /* Продолжает список аргументов, полей или выражение MINT8_5PL & MINT8_6PL & MINT8_7PL & MINT8_8PL &; порядок элементов сохраняется. */ \
+ MINT8_9PL & MINT8_10PL & MINT8_11PL & MINT8_12PL & /* Продолжает список аргументов, полей или выражение MINT8_9PL & MINT8_10PL & MINT8_11PL & MINT8_12PL &; порядок элементов сохраняется. */ \
+ MINT8_13PL & MINT8_14PL & MINT8_15PL & MINT8_16PL) /* Продолжает список аргументов, полей или выражение MINT8_13PL & MINT8_14PL & MINT8_15PL & MINT8_16PL); порядок элементов сохраняется. */
// End Of MINT8.
// Beginning of MINT9:
+/* Условие компиляции (INT1PL >= INT9PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT9PL) || (INT1PL == 0)
+/* Задаёт MINT9_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 9_1PL. */
#define MINT9_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_1PL. */
#define MINT9_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT9PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT9PL) || (INT2PL == 0)
+/* Задаёт MINT9_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 9_2PL. */
#define MINT9_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_2PL. */
#define MINT9_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT9PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT9PL) || (INT3PL == 0)
+/* Задаёт MINT9_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 9_3PL. */
#define MINT9_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_3PL. */
#define MINT9_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT9PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT9PL) || (INT4PL == 0)
+/* Задаёт MINT9_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 9_4PL. */
#define MINT9_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_4PL. */
#define MINT9_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT9PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT9PL) || (INT5PL == 0)
+/* Задаёт MINT9_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 9_5PL. */
#define MINT9_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_5PL. */
#define MINT9_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT9PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT9PL) || (INT6PL == 0)
+/* Задаёт MINT9_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 9_6PL. */
#define MINT9_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_6PL. */
#define MINT9_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT9PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT9PL) || (INT7PL == 0)
+/* Задаёт MINT9_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 9_7PL. */
#define MINT9_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_7PL. */
#define MINT9_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT9PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT9PL) || (INT8PL == 0)
+/* Задаёт MINT9_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 9_8PL. */
#define MINT9_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_8PL. */
#define MINT9_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL == 0)
+/* Задаёт MINT9_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 9_9PL. */
#define MINT9_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_9PL. */
#define MINT9_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT9PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT9PL) || (INT10PL == 0)
+/* Задаёт MINT9_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 9_10PL. */
#define MINT9_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_10PL. */
#define MINT9_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT9PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT9PL) || (INT11PL == 0)
+/* Задаёт MINT9_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 9_11PL. */
#define MINT9_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_11PL. */
#define MINT9_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT9PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT9PL) || (INT12PL == 0)
+/* Задаёт MINT9_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 9_12PL. */
#define MINT9_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_12PL. */
#define MINT9_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT9PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT9PL) || (INT13PL == 0)
+/* Задаёт MINT9_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 9_13PL. */
#define MINT9_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_13PL. */
#define MINT9_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT9PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT9PL) || (INT14PL == 0)
+/* Задаёт MINT9_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 9_14PL. */
#define MINT9_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_14PL. */
#define MINT9_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT9PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT9PL) || (INT15PL == 0)
+/* Задаёт MINT9_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 9_15PL. */
#define MINT9_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_15PL. */
#define MINT9_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT9PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT9PL) || (INT16PL == 0)
+/* Задаёт MINT9_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 9_16PL. */
#define MINT9_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT9_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 9_16PL. */
#define MINT9_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT9 = (MINT9_1PL & MINT9_2PL & MINT9_3PL & MINT9_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 9. */
#define MINT9 (MINT9_1PL & MINT9_2PL & MINT9_3PL & MINT9_4PL & \
- MINT9_5PL & MINT9_6PL & MINT9_7PL & MINT9_8PL & \
- MINT9_9PL & MINT9_10PL & MINT9_11PL & MINT9_12PL & \
- MINT9_13PL & MINT9_14PL & MINT9_15PL & MINT9_16PL)
+ MINT9_5PL & MINT9_6PL & MINT9_7PL & MINT9_8PL & /* Продолжает список аргументов, полей или выражение MINT9_5PL & MINT9_6PL & MINT9_7PL & MINT9_8PL &; порядок элементов сохраняется. */ \
+ MINT9_9PL & MINT9_10PL & MINT9_11PL & MINT9_12PL & /* Продолжает список аргументов, полей или выражение MINT9_9PL & MINT9_10PL & MINT9_11PL & MINT9_12PL &; порядок элементов сохраняется. */ \
+ MINT9_13PL & MINT9_14PL & MINT9_15PL & MINT9_16PL) /* Продолжает список аргументов, полей или выражение MINT9_13PL & MINT9_14PL & MINT9_15PL & MINT9_16PL); порядок элементов сохраняется. */
// End Of MINT9.
// Beginning of MINT10:
+/* Условие компиляции (INT1PL >= INT10PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT10PL) || (INT1PL == 0)
+/* Задаёт MINT10_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 10_1PL. */
#define MINT10_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_1PL. */
#define MINT10_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT10PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT10PL) || (INT2PL == 0)
+/* Задаёт MINT10_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 10_2PL. */
#define MINT10_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_2PL. */
#define MINT10_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT10PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT10PL) || (INT3PL == 0)
+/* Задаёт MINT10_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 10_3PL. */
#define MINT10_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_3PL. */
#define MINT10_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT10PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT10PL) || (INT4PL == 0)
+/* Задаёт MINT10_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 10_4PL. */
#define MINT10_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_4PL. */
#define MINT10_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT10PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT10PL) || (INT5PL == 0)
+/* Задаёт MINT10_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 10_5PL. */
#define MINT10_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_5PL. */
#define MINT10_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT10PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT10PL) || (INT6PL == 0)
+/* Задаёт MINT10_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 10_6PL. */
#define MINT10_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_6PL. */
#define MINT10_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT10PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT10PL) || (INT7PL == 0)
+/* Задаёт MINT10_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 10_7PL. */
#define MINT10_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_7PL. */
#define MINT10_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT10PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT10PL) || (INT8PL == 0)
+/* Задаёт MINT10_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 10_8PL. */
#define MINT10_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_8PL. */
#define MINT10_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT10PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT10PL) || (INT9PL == 0)
+/* Задаёт MINT10_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 10_9PL. */
#define MINT10_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_9PL. */
#define MINT10_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL == 0)
+/* Задаёт MINT10_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 10_10PL. */
#define MINT10_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_10PL. */
#define MINT10_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT10PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT10PL) || (INT11PL == 0)
+/* Задаёт MINT10_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 10_11PL. */
#define MINT10_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_11PL. */
#define MINT10_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT10PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT10PL) || (INT12PL == 0)
+/* Задаёт MINT10_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 10_12PL. */
#define MINT10_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_12PL. */
#define MINT10_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT10PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT10PL) || (INT13PL == 0)
+/* Задаёт MINT10_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 10_13PL. */
#define MINT10_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_13PL. */
#define MINT10_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT10PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT10PL) || (INT14PL == 0)
+/* Задаёт MINT10_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 10_14PL. */
#define MINT10_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_14PL. */
#define MINT10_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT10PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT10PL) || (INT15PL == 0)
+/* Задаёт MINT10_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 10_15PL. */
#define MINT10_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_15PL. */
#define MINT10_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT10PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT10PL) || (INT16PL == 0)
+/* Задаёт MINT10_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 10_16PL. */
#define MINT10_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT10_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 10_16PL. */
#define MINT10_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT10 = (MINT10_1PL & MINT10_2PL & MINT10_3PL & MINT10_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 10. */
#define MINT10 (MINT10_1PL & MINT10_2PL & MINT10_3PL & MINT10_4PL & \
- MINT10_5PL & MINT10_6PL & MINT10_7PL & MINT10_8PL & \
- MINT10_9PL & MINT10_10PL & MINT10_11PL & MINT10_12PL & \
- MINT10_13PL & MINT10_14PL & MINT10_15PL & MINT10_16PL)
+ MINT10_5PL & MINT10_6PL & MINT10_7PL & MINT10_8PL & /* Продолжает список аргументов, полей или выражение MINT10_5PL & MINT10_6PL & MINT10_7PL & MINT10_8PL &; порядок элементов сохраняется. */ \
+ MINT10_9PL & MINT10_10PL & MINT10_11PL & MINT10_12PL & /* Продолжает список аргументов, полей или выражение MINT10_9PL & MINT10_10PL & MINT10_11PL & MINT10_12PL &; порядок элементов сохраняется. */ \
+ MINT10_13PL & MINT10_14PL & MINT10_15PL & MINT10_16PL) /* Продолжает список аргументов, полей или выражение MINT10_13PL & MINT10_14PL & MINT10_15PL & MINT10_16PL); порядок элементов сохраняется. */
// End Of MINT10.
// Beginning of MINT11:
+/* Условие компиляции (INT1PL >= INT11PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT11PL) || (INT1PL == 0)
+/* Задаёт MINT11_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 11_1PL. */
#define MINT11_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_1PL. */
#define MINT11_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT11PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT11PL) || (INT2PL == 0)
+/* Задаёт MINT11_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 11_2PL. */
#define MINT11_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_2PL. */
#define MINT11_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT11PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT11PL) || (INT3PL == 0)
+/* Задаёт MINT11_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 11_3PL. */
#define MINT11_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_3PL. */
#define MINT11_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT11PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT11PL) || (INT4PL == 0)
+/* Задаёт MINT11_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 11_4PL. */
#define MINT11_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_4PL. */
#define MINT11_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT11PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT11PL) || (INT5PL == 0)
+/* Задаёт MINT11_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 11_5PL. */
#define MINT11_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_5PL. */
#define MINT11_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT11PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT11PL) || (INT6PL == 0)
+/* Задаёт MINT11_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 11_6PL. */
#define MINT11_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_6PL. */
#define MINT11_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT11PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT11PL) || (INT7PL == 0)
+/* Задаёт MINT11_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 11_7PL. */
#define MINT11_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_7PL. */
#define MINT11_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT11PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT11PL) || (INT8PL == 0)
+/* Задаёт MINT11_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 11_8PL. */
#define MINT11_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_8PL. */
#define MINT11_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT11PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT11PL) || (INT9PL == 0)
+/* Задаёт MINT11_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 11_9PL. */
#define MINT11_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_9PL. */
#define MINT11_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT11PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT11PL) || (INT10PL == 0)
+/* Задаёт MINT11_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 11_10PL. */
#define MINT11_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_10PL. */
#define MINT11_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL == 0)
+/* Задаёт MINT11_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 11_11PL. */
#define MINT11_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_11PL. */
#define MINT11_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT11PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT11PL) || (INT12PL == 0)
+/* Задаёт MINT11_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 11_12PL. */
#define MINT11_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_12PL. */
#define MINT11_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT11PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT11PL) || (INT13PL == 0)
+/* Задаёт MINT11_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 11_13PL. */
#define MINT11_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_13PL. */
#define MINT11_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT11PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT11PL) || (INT14PL == 0)
+/* Задаёт MINT11_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 11_14PL. */
#define MINT11_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_14PL. */
#define MINT11_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT11PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT11PL) || (INT15PL == 0)
+/* Задаёт MINT11_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 11_15PL. */
#define MINT11_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_15PL. */
#define MINT11_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT11PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT11PL) || (INT16PL == 0)
+/* Задаёт MINT11_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 11_16PL. */
#define MINT11_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT11_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 11_16PL. */
#define MINT11_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT11 = (MINT11_1PL & MINT11_2PL & MINT11_3PL & MINT11_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 11. */
#define MINT11 (MINT11_1PL & MINT11_2PL & MINT11_3PL & MINT11_4PL & \
- MINT11_5PL & MINT11_6PL & MINT11_7PL & MINT11_8PL & \
- MINT11_9PL & MINT11_10PL & MINT11_11PL & MINT11_12PL & \
- MINT11_13PL & MINT11_14PL & MINT11_15PL & MINT11_16PL)
+ MINT11_5PL & MINT11_6PL & MINT11_7PL & MINT11_8PL & /* Продолжает список аргументов, полей или выражение MINT11_5PL & MINT11_6PL & MINT11_7PL & MINT11_8PL &; порядок элементов сохраняется. */ \
+ MINT11_9PL & MINT11_10PL & MINT11_11PL & MINT11_12PL & /* Продолжает список аргументов, полей или выражение MINT11_9PL & MINT11_10PL & MINT11_11PL & MINT11_12PL &; порядок элементов сохраняется. */ \
+ MINT11_13PL & MINT11_14PL & MINT11_15PL & MINT11_16PL) /* Продолжает список аргументов, полей или выражение MINT11_13PL & MINT11_14PL & MINT11_15PL & MINT11_16PL); порядок элементов сохраняется. */
// End Of MINT11.
// Beginning of MINT12:
+/* Условие компиляции (INT1PL >= INT12PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT12PL) || (INT1PL == 0)
+/* Задаёт MINT12_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 12_1PL. */
#define MINT12_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_1PL. */
#define MINT12_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT12PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT12PL) || (INT2PL == 0)
+/* Задаёт MINT12_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 12_2PL. */
#define MINT12_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_2PL. */
#define MINT12_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT12PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT12PL) || (INT3PL == 0)
+/* Задаёт MINT12_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 12_3PL. */
#define MINT12_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_3PL. */
#define MINT12_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT12PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT12PL) || (INT4PL == 0)
+/* Задаёт MINT12_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 12_4PL. */
#define MINT12_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_4PL. */
#define MINT12_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT12PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT12PL) || (INT5PL == 0)
+/* Задаёт MINT12_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 12_5PL. */
#define MINT12_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_5PL. */
#define MINT12_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT12PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT12PL) || (INT6PL == 0)
+/* Задаёт MINT12_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 12_6PL. */
#define MINT12_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_6PL. */
#define MINT12_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT12PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT12PL) || (INT7PL == 0)
+/* Задаёт MINT12_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 12_7PL. */
#define MINT12_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_7PL. */
#define MINT12_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT12PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT12PL) || (INT8PL == 0)
+/* Задаёт MINT12_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 12_8PL. */
#define MINT12_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_8PL. */
#define MINT12_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT12PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT12PL) || (INT9PL == 0)
+/* Задаёт MINT12_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 12_9PL. */
#define MINT12_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_9PL. */
#define MINT12_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT12PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT12PL) || (INT10PL == 0)
+/* Задаёт MINT12_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 12_10PL. */
#define MINT12_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_10PL. */
#define MINT12_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT12PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT12PL) || (INT11PL == 0)
+/* Задаёт MINT12_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 12_11PL. */
#define MINT12_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_11PL. */
#define MINT12_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL == 0)
+/* Задаёт MINT12_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 12_12PL. */
#define MINT12_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_12PL. */
#define MINT12_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT12PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT12PL) || (INT13PL == 0)
+/* Задаёт MINT12_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 12_13PL. */
#define MINT12_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_13PL. */
#define MINT12_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT12PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT12PL) || (INT14PL == 0)
+/* Задаёт MINT12_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 12_14PL. */
#define MINT12_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_14PL. */
#define MINT12_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT12PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT12PL) || (INT15PL == 0)
+/* Задаёт MINT12_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 12_15PL. */
#define MINT12_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_15PL. */
#define MINT12_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT12PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT12PL) || (INT16PL == 0)
+/* Задаёт MINT12_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 12_16PL. */
#define MINT12_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT12_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 12_16PL. */
#define MINT12_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT12 = (MINT12_1PL & MINT12_2PL & MINT12_3PL & MINT12_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 12. */
#define MINT12 (MINT12_1PL & MINT12_2PL & MINT12_3PL & MINT12_4PL & \
- MINT12_5PL & MINT12_6PL & MINT12_7PL & MINT12_8PL & \
- MINT12_9PL & MINT12_10PL & MINT12_11PL & MINT12_12PL & \
- MINT12_13PL & MINT12_14PL & MINT12_15PL & MINT12_16PL)
+ MINT12_5PL & MINT12_6PL & MINT12_7PL & MINT12_8PL & /* Продолжает список аргументов, полей или выражение MINT12_5PL & MINT12_6PL & MINT12_7PL & MINT12_8PL &; порядок элементов сохраняется. */ \
+ MINT12_9PL & MINT12_10PL & MINT12_11PL & MINT12_12PL & /* Продолжает список аргументов, полей или выражение MINT12_9PL & MINT12_10PL & MINT12_11PL & MINT12_12PL &; порядок элементов сохраняется. */ \
+ MINT12_13PL & MINT12_14PL & MINT12_15PL & MINT12_16PL) /* Продолжает список аргументов, полей или выражение MINT12_13PL & MINT12_14PL & MINT12_15PL & MINT12_16PL); порядок элементов сохраняется. */
// End Of MINT12.
// Beginning of MINT13:
+/* Условие компиляции (INT1PL >= INT13PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT13PL) || (INT1PL == 0)
+/* Задаёт MINT13_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 13_1PL. */
#define MINT13_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_1PL. */
#define MINT13_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT13PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT13PL) || (INT2PL == 0)
+/* Задаёт MINT13_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 13_2PL. */
#define MINT13_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_2PL. */
#define MINT13_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT13PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT13PL) || (INT3PL == 0)
+/* Задаёт MINT13_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 13_3PL. */
#define MINT13_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_3PL. */
#define MINT13_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT13PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT13PL) || (INT4PL == 0)
+/* Задаёт MINT13_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 13_4PL. */
#define MINT13_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_4PL. */
#define MINT13_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT13PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT13PL) || (INT5PL == 0)
+/* Задаёт MINT13_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 13_5PL. */
#define MINT13_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_5PL. */
#define MINT13_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT13PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT13PL) || (INT6PL == 0)
+/* Задаёт MINT13_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 13_6PL. */
#define MINT13_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_6PL. */
#define MINT13_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT13PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT13PL) || (INT7PL == 0)
+/* Задаёт MINT13_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 13_7PL. */
#define MINT13_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_7PL. */
#define MINT13_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT13PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT13PL) || (INT8PL == 0)
+/* Задаёт MINT13_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 13_8PL. */
#define MINT13_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_8PL. */
#define MINT13_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT13PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT13PL) || (INT9PL == 0)
+/* Задаёт MINT13_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 13_9PL. */
#define MINT13_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_9PL. */
#define MINT13_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT13PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT13PL) || (INT10PL == 0)
+/* Задаёт MINT13_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 13_10PL. */
#define MINT13_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_10PL. */
#define MINT13_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT13PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT13PL) || (INT11PL == 0)
+/* Задаёт MINT13_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 13_11PL. */
#define MINT13_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_11PL. */
#define MINT13_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT13_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 13_12PL. */
#define MINT13_12PL ~(1 << 11)
+/* Условие компиляции (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL == 0)
+/* Задаёт MINT13_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 13_13PL. */
#define MINT13_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_13PL. */
#define MINT13_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT13PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT13PL) || (INT14PL == 0)
+/* Задаёт MINT13_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 13_14PL. */
#define MINT13_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_14PL. */
#define MINT13_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT13PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT13PL) || (INT15PL == 0)
+/* Задаёт MINT13_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 13_15PL. */
#define MINT13_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_15PL. */
#define MINT13_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT13PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT13PL) || (INT16PL == 0)
+/* Задаёт MINT13_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 13_16PL. */
#define MINT13_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT13_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 13_16PL. */
#define MINT13_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT13 = (MINT13_1PL & MINT13_2PL & MINT13_3PL & MINT13_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 13. */
#define MINT13 (MINT13_1PL & MINT13_2PL & MINT13_3PL & MINT13_4PL & \
- MINT13_5PL & MINT13_6PL & MINT13_7PL & MINT13_8PL & \
- MINT13_9PL & MINT13_10PL & MINT13_11PL & MINT13_12PL & \
- MINT13_13PL & MINT13_14PL & MINT13_15PL & MINT13_16PL)
+ MINT13_5PL & MINT13_6PL & MINT13_7PL & MINT13_8PL & /* Продолжает список аргументов, полей или выражение MINT13_5PL & MINT13_6PL & MINT13_7PL & MINT13_8PL &; порядок элементов сохраняется. */ \
+ MINT13_9PL & MINT13_10PL & MINT13_11PL & MINT13_12PL & /* Продолжает список аргументов, полей или выражение MINT13_9PL & MINT13_10PL & MINT13_11PL & MINT13_12PL &; порядок элементов сохраняется. */ \
+ MINT13_13PL & MINT13_14PL & MINT13_15PL & MINT13_16PL) /* Продолжает список аргументов, полей или выражение MINT13_13PL & MINT13_14PL & MINT13_15PL & MINT13_16PL); порядок элементов сохраняется. */
// End Of MINT13.
// Beginning of MINT14:
+/* Условие компиляции (INT1PL >= INT14PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT14PL) || (INT1PL == 0)
+/* Задаёт MINT14_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 14_1PL. */
#define MINT14_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_1PL. */
#define MINT14_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT14PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT14PL) || (INT2PL == 0)
+/* Задаёт MINT14_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 14_2PL. */
#define MINT14_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_2PL. */
#define MINT14_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT14PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT14PL) || (INT3PL == 0)
+/* Задаёт MINT14_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 14_3PL. */
#define MINT14_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_3PL. */
#define MINT14_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT14PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT14PL) || (INT4PL == 0)
+/* Задаёт MINT14_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 14_4PL. */
#define MINT14_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_4PL. */
#define MINT14_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT14PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT14PL) || (INT5PL == 0)
+/* Задаёт MINT14_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 14_5PL. */
#define MINT14_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_5PL. */
#define MINT14_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT14PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT14PL) || (INT6PL == 0)
+/* Задаёт MINT14_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 14_6PL. */
#define MINT14_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_6PL. */
#define MINT14_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT14PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT14PL) || (INT7PL == 0)
+/* Задаёт MINT14_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 14_7PL. */
#define MINT14_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_7PL. */
#define MINT14_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT14PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT14PL) || (INT8PL == 0)
+/* Задаёт MINT14_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 14_8PL. */
#define MINT14_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_8PL. */
#define MINT14_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT14PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT14PL) || (INT9PL == 0)
+/* Задаёт MINT14_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 14_9PL. */
#define MINT14_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_9PL. */
#define MINT14_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT14PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT14PL) || (INT10PL == 0)
+/* Задаёт MINT14_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 14_10PL. */
#define MINT14_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_10PL. */
#define MINT14_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT14PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT14PL) || (INT11PL == 0)
+/* Задаёт MINT14_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 14_11PL. */
#define MINT14_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_11PL. */
#define MINT14_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT14PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT14PL) || (INT12PL == 0)
+/* Задаёт MINT14_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 14_12PL. */
#define MINT14_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_12PL. */
#define MINT14_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT14PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT14PL) || (INT13PL == 0)
+/* Задаёт MINT14_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 14_13PL. */
#define MINT14_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_13PL. */
#define MINT14_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT14_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 14_14PL. */
#define MINT14_14PL ~(1 << 13)
+/* Условие компиляции (INT15PL >= INT14PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT14PL) || (INT15PL == 0)
+/* Задаёт MINT14_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 14_15PL. */
#define MINT14_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_15PL. */
#define MINT14_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT16PL >= INT14PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT14PL) || (INT16PL == 0)
+/* Задаёт MINT14_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 14_16PL. */
#define MINT14_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT14_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 14_16PL. */
#define MINT14_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT14 = (MINT14_1PL & MINT14_2PL & MINT14_3PL & MINT14_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 14. */
#define MINT14 (MINT14_1PL & MINT14_2PL & MINT14_3PL & MINT14_4PL & \
- MINT14_5PL & MINT14_6PL & MINT14_7PL & MINT14_8PL & \
- MINT14_9PL & MINT14_10PL & MINT14_11PL & MINT14_12PL & \
- MINT14_13PL & MINT14_14PL & MINT14_15PL & MINT14_16PL)
+ MINT14_5PL & MINT14_6PL & MINT14_7PL & MINT14_8PL & /* Продолжает список аргументов, полей или выражение MINT14_5PL & MINT14_6PL & MINT14_7PL & MINT14_8PL &; порядок элементов сохраняется. */ \
+ MINT14_9PL & MINT14_10PL & MINT14_11PL & MINT14_12PL & /* Продолжает список аргументов, полей или выражение MINT14_9PL & MINT14_10PL & MINT14_11PL & MINT14_12PL &; порядок элементов сохраняется. */ \
+ MINT14_13PL & MINT14_14PL & MINT14_15PL & MINT14_16PL) /* Продолжает список аргументов, полей или выражение MINT14_13PL & MINT14_14PL & MINT14_15PL & MINT14_16PL); порядок элементов сохраняется. */
// End Of MINT14.
// Beginning of MINT15:
+/* Условие компиляции (INT1PL >= INT15PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT15PL) || (INT1PL == 0)
+/* Задаёт MINT15_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 15_1PL. */
#define MINT15_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_1PL. */
#define MINT15_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT15PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT15PL) || (INT2PL == 0)
+/* Задаёт MINT15_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 15_2PL. */
#define MINT15_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_2PL. */
#define MINT15_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT15PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT15PL) || (INT3PL == 0)
+/* Задаёт MINT15_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 15_3PL. */
#define MINT15_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_3PL. */
#define MINT15_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT15PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT15PL) || (INT4PL == 0)
+/* Задаёт MINT15_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 15_4PL. */
#define MINT15_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_4PL. */
#define MINT15_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT15PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT15PL) || (INT5PL == 0)
+/* Задаёт MINT15_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 15_5PL. */
#define MINT15_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_5PL. */
#define MINT15_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT15PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT15PL) || (INT6PL == 0)
+/* Задаёт MINT15_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 15_6PL. */
#define MINT15_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_6PL. */
#define MINT15_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT15PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT15PL) || (INT7PL == 0)
+/* Задаёт MINT15_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 15_7PL. */
#define MINT15_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_7PL. */
#define MINT15_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT15PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT15PL) || (INT8PL == 0)
+/* Задаёт MINT15_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 15_8PL. */
#define MINT15_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_8PL. */
#define MINT15_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT15PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT15PL) || (INT9PL == 0)
+/* Задаёт MINT15_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 15_9PL. */
#define MINT15_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_9PL. */
#define MINT15_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT15PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT15PL) || (INT10PL == 0)
+/* Задаёт MINT15_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 15_10PL. */
#define MINT15_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_10PL. */
#define MINT15_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT15PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT15PL) || (INT11PL == 0)
+/* Задаёт MINT15_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 15_11PL. */
#define MINT15_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_11PL. */
#define MINT15_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT15PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT15PL) || (INT12PL == 0)
+/* Задаёт MINT15_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 15_12PL. */
#define MINT15_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_12PL. */
#define MINT15_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT15PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT15PL) || (INT13PL == 0)
+/* Задаёт MINT15_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 15_13PL. */
#define MINT15_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_13PL. */
#define MINT15_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT15PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT15PL) || (INT14PL == 0)
+/* Задаёт MINT15_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 15_14PL. */
#define MINT15_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_14PL. */
#define MINT15_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT15_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 15_15PL. */
#define MINT15_15PL ~(1 << 14)
+/* Условие компиляции (INT16PL >= INT15PL) или (INT16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL >= INT15PL) || (INT16PL == 0)
+/* Задаёт MINT15_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 15_16PL. */
#define MINT15_16PL ~(1 << 15)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT15_16PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 15_16PL. */
#define MINT15_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT15 = (MINT15_1PL & MINT15_2PL & MINT15_3PL & MINT15_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 15. */
#define MINT15 (MINT15_1PL & MINT15_2PL & MINT15_3PL & MINT15_4PL & \
- MINT15_5PL & MINT15_6PL & MINT15_7PL & MINT15_8PL & \
- MINT15_9PL & MINT15_10PL & MINT15_11PL & MINT15_12PL & \
- MINT15_13PL & MINT15_14PL & MINT15_15PL & MINT15_16PL)
+ MINT15_5PL & MINT15_6PL & MINT15_7PL & MINT15_8PL & /* Продолжает список аргументов, полей или выражение MINT15_5PL & MINT15_6PL & MINT15_7PL & MINT15_8PL &; порядок элементов сохраняется. */ \
+ MINT15_9PL & MINT15_10PL & MINT15_11PL & MINT15_12PL & /* Продолжает список аргументов, полей или выражение MINT15_9PL & MINT15_10PL & MINT15_11PL & MINT15_12PL &; порядок элементов сохраняется. */ \
+ MINT15_13PL & MINT15_14PL & MINT15_15PL & MINT15_16PL) /* Продолжает список аргументов, полей или выражение MINT15_13PL & MINT15_14PL & MINT15_15PL & MINT15_16PL); порядок элементов сохраняется. */
// End Of MINT15.
// Beginning of MINT16:
+/* Условие компиляции (INT1PL >= INT16PL) или (INT1PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT1PL >= INT16PL) || (INT1PL == 0)
+/* Задаёт MINT16_1PL = ~(1 << 0); маска разрешённых прерываний ядра для приоритетного обработчика 16_1PL. */
#define MINT16_1PL ~(1 << 0)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_1PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_1PL. */
#define MINT16_1PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT2PL >= INT16PL) или (INT2PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT2PL >= INT16PL) || (INT2PL == 0)
+/* Задаёт MINT16_2PL = ~(1 << 1); маска разрешённых прерываний ядра для приоритетного обработчика 16_2PL. */
#define MINT16_2PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_2PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_2PL. */
#define MINT16_2PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT3PL >= INT16PL) или (INT3PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT3PL >= INT16PL) || (INT3PL == 0)
+/* Задаёт MINT16_3PL = ~(1 << 2); маска разрешённых прерываний ядра для приоритетного обработчика 16_3PL. */
#define MINT16_3PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_3PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_3PL. */
#define MINT16_3PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT4PL >= INT16PL) или (INT4PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT4PL >= INT16PL) || (INT4PL == 0)
+/* Задаёт MINT16_4PL = ~(1 << 3); маска разрешённых прерываний ядра для приоритетного обработчика 16_4PL. */
#define MINT16_4PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_4PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_4PL. */
#define MINT16_4PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT5PL >= INT16PL) или (INT5PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT5PL >= INT16PL) || (INT5PL == 0)
+/* Задаёт MINT16_5PL = ~(1 << 4); маска разрешённых прерываний ядра для приоритетного обработчика 16_5PL. */
#define MINT16_5PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_5PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_5PL. */
#define MINT16_5PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT6PL >= INT16PL) или (INT6PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT6PL >= INT16PL) || (INT6PL == 0)
+/* Задаёт MINT16_6PL = ~(1 << 5); маска разрешённых прерываний ядра для приоритетного обработчика 16_6PL. */
#define MINT16_6PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_6PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_6PL. */
#define MINT16_6PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT7PL >= INT16PL) или (INT7PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT7PL >= INT16PL) || (INT7PL == 0)
+/* Задаёт MINT16_7PL = ~(1 << 6); маска разрешённых прерываний ядра для приоритетного обработчика 16_7PL. */
#define MINT16_7PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_7PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_7PL. */
#define MINT16_7PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT8PL >= INT16PL) или (INT8PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT8PL >= INT16PL) || (INT8PL == 0)
+/* Задаёт MINT16_8PL = ~(1 << 7); маска разрешённых прерываний ядра для приоритетного обработчика 16_8PL. */
#define MINT16_8PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_8PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_8PL. */
#define MINT16_8PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT9PL >= INT16PL) или (INT9PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT9PL >= INT16PL) || (INT9PL == 0)
+/* Задаёт MINT16_9PL = ~(1 << 8); маска разрешённых прерываний ядра для приоритетного обработчика 16_9PL. */
#define MINT16_9PL ~(1 << 8)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_9PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_9PL. */
#define MINT16_9PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT10PL >= INT16PL) или (INT10PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT10PL >= INT16PL) || (INT10PL == 0)
+/* Задаёт MINT16_10PL = ~(1 << 9); маска разрешённых прерываний ядра для приоритетного обработчика 16_10PL. */
#define MINT16_10PL ~(1 << 9)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_10PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_10PL. */
#define MINT16_10PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT11PL >= INT16PL) или (INT11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT11PL >= INT16PL) || (INT11PL == 0)
+/* Задаёт MINT16_11PL = ~(1 << 10); маска разрешённых прерываний ядра для приоритетного обработчика 16_11PL. */
#define MINT16_11PL ~(1 << 10)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_11PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_11PL. */
#define MINT16_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT12PL >= INT16PL) или (INT12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT12PL >= INT16PL) || (INT12PL == 0)
+/* Задаёт MINT16_12PL = ~(1 << 11); маска разрешённых прерываний ядра для приоритетного обработчика 16_12PL. */
#define MINT16_12PL ~(1 << 11)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_12PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_12PL. */
#define MINT16_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT13PL >= INT16PL) или (INT13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL >= INT16PL) || (INT13PL == 0)
+/* Задаёт MINT16_13PL = ~(1 << 12); маска разрешённых прерываний ядра для приоритетного обработчика 16_13PL. */
#define MINT16_13PL ~(1 << 12)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_13PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_13PL. */
#define MINT16_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT14PL >= INT16PL) или (INT14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL >= INT16PL) || (INT14PL == 0)
+/* Задаёт MINT16_14PL = ~(1 << 13); маска разрешённых прерываний ядра для приоритетного обработчика 16_14PL. */
#define MINT16_14PL ~(1 << 13)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_14PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_14PL. */
#define MINT16_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (INT15PL >= INT16PL) или (INT15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL >= INT16PL) || (INT15PL == 0)
+/* Задаёт MINT16_15PL = ~(1 << 14); маска разрешённых прерываний ядра для приоритетного обработчика 16_15PL. */
#define MINT16_15PL ~(1 << 14)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MINT16_15PL = 0xFFFF; маска разрешённых прерываний ядра для приоритетного обработчика 16_15PL. */
#define MINT16_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MINT16_16PL = ~(1 << 15); маска разрешённых прерываний ядра для приоритетного обработчика 16_16PL. */
#define MINT16_16PL ~(1 << 15)
+/* Задаёт MINT16 = (MINT16_1PL & MINT16_2PL & MINT16_3PL & MINT16_4PL &; маска разрешённых прерываний ядра для приоритетного обработчика 16. */
#define MINT16 (MINT16_1PL & MINT16_2PL & MINT16_3PL & MINT16_4PL & \
- MINT16_5PL & MINT16_6PL & MINT16_7PL & MINT16_8PL & \
- MINT16_9PL & MINT16_10PL & MINT16_11PL & MINT16_12PL & \
- MINT16_13PL & MINT16_14PL & MINT16_15PL & MINT16_16PL)
+ MINT16_5PL & MINT16_6PL & MINT16_7PL & MINT16_8PL & /* Продолжает список аргументов, полей или выражение MINT16_5PL & MINT16_6PL & MINT16_7PL & MINT16_8PL &; порядок элементов сохраняется. */ \
+ MINT16_9PL & MINT16_10PL & MINT16_11PL & MINT16_12PL & /* Продолжает список аргументов, полей или выражение MINT16_9PL & MINT16_10PL & MINT16_11PL & MINT16_12PL &; порядок элементов сохраняется. */ \
+ MINT16_13PL & MINT16_14PL & MINT16_15PL & MINT16_16PL) /* Продолжает список аргументов, полей или выражение MINT16_13PL & MINT16_14PL & MINT16_15PL & MINT16_16PL); порядок элементов сохраняется. */
// End Of MINT16.
//-------------------------------------------------------------------------------
// Automatically generate PIEIER1 interrupt masks MG11 to MG18:
// Beginning of MG11:
+/* Условие компиляции (G12PL >= G11PL) или (G12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL >= G11PL) || (G12PL == 0)
+/* Задаёт MG11_12PL = ~(1 << 1); данные MG11_12PL. */
#define MG11_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG11_12PL = 0xFFFF; данные MG11_12PL. */
#define MG11_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G13PL >= G11PL) или (G13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G13PL >= G11PL) || (G13PL == 0)
+/* Задаёт MG11_13PL = ~(1 << 2); данные MG11_13PL. */
#define MG11_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG11_13PL = 0xFFFF; данные MG11_13PL. */
#define MG11_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G14PL >= G11PL) или (G14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL >= G11PL) || (G14PL == 0)
+/* Задаёт MG11_14PL = ~(1 << 3); данные MG11_14PL. */
#define MG11_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG11_14PL = 0xFFFF; данные MG11_14PL. */
#define MG11_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G15PL >= G11PL) или (G15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL >= G11PL) || (G15PL == 0)
+/* Задаёт MG11_15PL = ~(1 << 4); данные MG11_15PL. */
#define MG11_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG11_15PL = 0xFFFF; данные MG11_15PL. */
#define MG11_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G16PL >= G11PL) или (G16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL >= G11PL) || (G16PL == 0)
+/* Задаёт MG11_16PL = ~(1 << 5); данные MG11_16PL. */
#define MG11_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG11_16PL = 0xFFFF; данные MG11_16PL. */
#define MG11_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G17PL >= G11PL) или (G17PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL >= G11PL) || (G17PL == 0)
+/* Задаёт MG11_17PL = ~(1 << 6); данные MG11_17PL. */
#define MG11_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG11_17PL = 0xFFFF; данные MG11_17PL. */
#define MG11_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G18PL >= G11PL) или (G18PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL >= G11PL) || (G18PL == 0)
+/* Задаёт MG11_18PL = ~(1 << 7); данные MG11_18PL. */
#define MG11_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG11_18PL = 0xFFFF; данные MG11_18PL. */
#define MG11_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG11_11PL = 0x00FE; данные MG11_11PL. */
#define MG11_11PL 0x00FE
+/* Задаёт MG11 = (MG11_11PL & MG11_12PL & MG11_13PL & MG11_14PL &; маска разрешённых прерываний внутри группы PIE 11. */
#define MG11 (MG11_11PL & MG11_12PL & MG11_13PL & MG11_14PL & \
- MG11_15PL & MG11_16PL & MG11_17PL & MG11_18PL)
+ MG11_15PL & MG11_16PL & MG11_17PL & MG11_18PL) /* Продолжает список аргументов, полей или выражение MG11_15PL & MG11_16PL & MG11_17PL & MG11_18PL); порядок элементов сохраняется. */
// End of MG11:
// Beginning of MG12:
+/* Условие компиляции (G11PL >= G12PL) или (G11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL >= G12PL) || (G11PL == 0)
+/* Задаёт MG12_11PL = ~(1); данные MG12_11PL. */
#define MG12_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG12_11PL = 0xFFFF; данные MG12_11PL. */
#define MG12_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G13PL >= G12PL) или (G13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G13PL >= G12PL) || (G13PL == 0)
+/* Задаёт MG12_13PL = ~(1 << 2); данные MG12_13PL. */
#define MG12_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG12_13PL = 0xFFFF; данные MG12_13PL. */
#define MG12_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G14PL >= G12PL) или (G14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL >= G12PL) || (G14PL == 0)
+/* Задаёт MG12_14PL = ~(1 << 3); данные MG12_14PL. */
#define MG12_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG12_14PL = 0xFFFF; данные MG12_14PL. */
#define MG12_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G15PL >= G12PL) или (G15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL >= G12PL) || (G15PL == 0)
+/* Задаёт MG12_15PL = ~(1 << 4); данные MG12_15PL. */
#define MG12_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG12_15PL = 0xFFFF; данные MG12_15PL. */
#define MG12_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G16PL >= G12PL) или (G16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL >= G12PL) || (G16PL == 0)
+/* Задаёт MG12_16PL = ~(1 << 5); данные MG12_16PL. */
#define MG12_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG12_16PL = 0xFFFF; данные MG12_16PL. */
#define MG12_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G17PL >= G12PL) или (G17PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL >= G12PL) || (G17PL == 0)
+/* Задаёт MG12_17PL = ~(1 << 6); данные MG12_17PL. */
#define MG12_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG12_17PL = 0xFFFF; данные MG12_17PL. */
#define MG12_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G18PL >= G12PL) или (G18PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL >= G12PL) || (G18PL == 0)
+/* Задаёт MG12_18PL = ~(1 << 7); данные MG12_18PL. */
#define MG12_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG12_18PL = 0xFFFF; данные MG12_18PL. */
#define MG12_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG12_12PL = 0x00FD; данные MG12_12PL. */
#define MG12_12PL 0x00FD
+/* Задаёт MG12 = (MG12_11PL & MG12_12PL & MG12_13PL & MG12_14PL &; маска разрешённых прерываний внутри группы PIE 12. */
#define MG12 (MG12_11PL & MG12_12PL & MG12_13PL & MG12_14PL & \
- MG12_15PL & MG12_16PL & MG12_17PL & MG12_18PL)
+ MG12_15PL & MG12_16PL & MG12_17PL & MG12_18PL) /* Продолжает список аргументов, полей или выражение MG12_15PL & MG12_16PL & MG12_17PL & MG12_18PL); порядок элементов сохраняется. */
// End of MG12:
// Beginning of MG13:
+/* Условие компиляции (G11PL >= G13PL) или (G11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL >= G13PL) || (G11PL == 0)
+/* Задаёт MG13_11PL = ~(1); данные MG13_11PL. */
#define MG13_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG13_11PL = 0xFFFF; данные MG13_11PL. */
#define MG13_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G12PL >= G13PL) или (G12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL >= G13PL) || (G12PL == 0)
+/* Задаёт MG13_12PL = ~(1 << 1); данные MG13_12PL. */
#define MG13_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG13_12PL = 0xFFFF; данные MG13_12PL. */
#define MG13_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G14PL >= G13PL) или (G14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL >= G13PL) || (G14PL == 0)
+/* Задаёт MG13_14PL = ~(1 << 3); данные MG13_14PL. */
#define MG13_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG13_14PL = 0xFFFF; данные MG13_14PL. */
#define MG13_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G15PL >= G13PL) или (G15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL >= G13PL) || (G15PL == 0)
+/* Задаёт MG13_15PL = ~(1 << 4); данные MG13_15PL. */
#define MG13_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG13_15PL = 0xFFFF; данные MG13_15PL. */
#define MG13_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G16PL >= G13PL) или (G16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL >= G13PL) || (G16PL == 0)
+/* Задаёт MG13_16PL = ~(1 << 5); данные MG13_16PL. */
#define MG13_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG13_16PL = 0xFFFF; данные MG13_16PL. */
#define MG13_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G17PL >= G13PL) или (G17PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL >= G13PL) || (G17PL == 0)
+/* Задаёт MG13_17PL = ~(1 << 6); данные MG13_17PL. */
#define MG13_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG13_17PL = 0xFFFF; данные MG13_17PL. */
#define MG13_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G18PL >= G13PL) или (G18PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL >= G13PL) || (G18PL == 0)
+/* Задаёт MG13_18PL = ~(1 << 7); данные MG13_18PL. */
#define MG13_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG13_18PL = 0xFFFF; данные MG13_18PL. */
#define MG13_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG13_13PL = 0x00FB; данные MG13_13PL. */
#define MG13_13PL 0x00FB
+/* Задаёт MG13 = (MG13_11PL & MG13_12PL & MG13_13PL & MG13_14PL &; маска разрешённых прерываний внутри группы PIE 13. */
#define MG13 (MG13_11PL & MG13_12PL & MG13_13PL & MG13_14PL & \
- MG13_15PL & MG13_16PL & MG13_17PL & MG13_18PL)
+ MG13_15PL & MG13_16PL & MG13_17PL & MG13_18PL) /* Продолжает список аргументов, полей или выражение MG13_15PL & MG13_16PL & MG13_17PL & MG13_18PL); порядок элементов сохраняется. */
// End of MG13:
// Beginning of MG14:
+/* Условие компиляции (G11PL >= G14PL) или (G11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL >= G14PL) || (G11PL == 0)
+/* Задаёт MG14_11PL = ~(1); данные MG14_11PL. */
#define MG14_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG14_11PL = 0xFFFF; данные MG14_11PL. */
#define MG14_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G12PL >= G14PL) или (G12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL >= G14PL) || (G12PL == 0)
+/* Задаёт MG14_12PL = ~(1 << 1); данные MG14_12PL. */
#define MG14_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG14_12PL = 0xFFFF; данные MG14_12PL. */
#define MG14_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G13PL >= G14PL) или (G13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G13PL >= G14PL) || (G13PL == 0)
+/* Задаёт MG14_13PL = ~(1 << 2); данные MG14_13PL. */
#define MG14_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG14_13PL = 0xFFFF; данные MG14_13PL. */
#define MG14_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G15PL >= G14PL) или (G15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL >= G14PL) || (G15PL == 0)
+/* Задаёт MG14_15PL = ~(1 << 4); данные MG14_15PL. */
#define MG14_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG14_15PL = 0xFFFF; данные MG14_15PL. */
#define MG14_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G16PL >= G14PL) или (G16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL >= G14PL) || (G16PL == 0)
+/* Задаёт MG14_16PL = ~(1 << 5); данные MG14_16PL. */
#define MG14_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG14_16PL = 0xFFFF; данные MG14_16PL. */
#define MG14_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G17PL >= G14PL) или (G17PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL >= G14PL) || (G17PL == 0)
+/* Задаёт MG14_17PL = ~(1 << 6); данные MG14_17PL. */
#define MG14_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG14_17PL = 0xFFFF; данные MG14_17PL. */
#define MG14_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G18PL >= G14PL) или (G18PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL >= G14PL) || (G18PL == 0)
+/* Задаёт MG14_18PL = ~(1 << 7); данные MG14_18PL. */
#define MG14_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG14_18PL = 0xFFFF; данные MG14_18PL. */
#define MG14_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG14_14PL = 0x00F7; данные MG14_14PL. */
#define MG14_14PL 0x00F7
+/* Задаёт MG14 = (MG14_11PL & MG14_12PL & MG14_13PL & MG14_14PL &; маска разрешённых прерываний внутри группы PIE 14. */
#define MG14 (MG14_11PL & MG14_12PL & MG14_13PL & MG14_14PL & \
- MG14_15PL & MG14_16PL & MG14_17PL & MG14_18PL)
+ MG14_15PL & MG14_16PL & MG14_17PL & MG14_18PL) /* Продолжает список аргументов, полей или выражение MG14_15PL & MG14_16PL & MG14_17PL & MG14_18PL); порядок элементов сохраняется. */
// End of MG14:
// Beginning of MG15:
+/* Условие компиляции (G11PL >= G15PL) или (G11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL >= G15PL) || (G11PL == 0)
+/* Задаёт MG15_11PL = ~(1); данные MG15_11PL. */
#define MG15_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG15_11PL = 0xFFFF; данные MG15_11PL. */
#define MG15_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G12PL >= G15PL) или (G12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL >= G15PL) || (G12PL == 0)
+/* Задаёт MG15_12PL = ~(1 << 1); данные MG15_12PL. */
#define MG15_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG15_12PL = 0xFFFF; данные MG15_12PL. */
#define MG15_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G13PL >= G15PL) или (G13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G13PL >= G15PL) || (G13PL == 0)
+/* Задаёт MG15_13PL = ~(1 << 2); данные MG15_13PL. */
#define MG15_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG15_13PL = 0xFFFF; данные MG15_13PL. */
#define MG15_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G14PL >= G15PL) или (G14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL >= G15PL) || (G14PL == 0)
+/* Задаёт MG15_14PL = ~(1 << 3); данные MG15_14PL. */
#define MG15_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG15_14PL = 0xFFFF; данные MG15_14PL. */
#define MG15_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G16PL >= G15PL) или (G16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL >= G15PL) || (G16PL == 0)
+/* Задаёт MG15_16PL = ~(1 << 5); данные MG15_16PL. */
#define MG15_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG15_16PL = 0xFFFF; данные MG15_16PL. */
#define MG15_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G17PL >= G15PL) или (G17PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL >= G15PL) || (G17PL == 0)
+/* Задаёт MG15_17PL = ~(1 << 6); данные MG15_17PL. */
#define MG15_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG15_17PL = 0xFFFF; данные MG15_17PL. */
#define MG15_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G18PL >= G15PL) или (G18PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL >= G15PL) || (G18PL == 0)
+/* Задаёт MG15_18PL = ~(1 << 7); данные MG15_18PL. */
#define MG15_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG15_18PL = 0xFFFF; данные MG15_18PL. */
#define MG15_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG15_15PL = 0x00EF; данные MG15_15PL. */
#define MG15_15PL 0x00EF
+/* Задаёт MG15 = (MG15_11PL & MG15_12PL & MG15_13PL & MG15_14PL &; маска разрешённых прерываний внутри группы PIE 15. */
#define MG15 (MG15_11PL & MG15_12PL & MG15_13PL & MG15_14PL & \
- MG15_15PL & MG15_16PL & MG15_17PL & MG15_18PL)
+ MG15_15PL & MG15_16PL & MG15_17PL & MG15_18PL) /* Продолжает список аргументов, полей или выражение MG15_15PL & MG15_16PL & MG15_17PL & MG15_18PL); порядок элементов сохраняется. */
// End of MG15:
// Beginning of MG16:
+/* Условие компиляции (G11PL >= G16PL) или (G11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL >= G16PL) || (G11PL == 0)
+/* Задаёт MG16_11PL = ~(1); данные MG16_11PL. */
#define MG16_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG16_11PL = 0xFFFF; данные MG16_11PL. */
#define MG16_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G12PL >= G16PL) или (G12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL >= G16PL) || (G12PL == 0)
+/* Задаёт MG16_12PL = ~(1 << 1); данные MG16_12PL. */
#define MG16_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG16_12PL = 0xFFFF; данные MG16_12PL. */
#define MG16_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G13PL >= G16PL) или (G13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G13PL >= G16PL) || (G13PL == 0)
+/* Задаёт MG16_13PL = ~(1 << 2); данные MG16_13PL. */
#define MG16_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG16_13PL = 0xFFFF; данные MG16_13PL. */
#define MG16_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G14PL >= G16PL) или (G14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL >= G16PL) || (G14PL == 0)
+/* Задаёт MG16_14PL = ~(1 << 3); данные MG16_14PL. */
#define MG16_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG16_14PL = 0xFFFF; данные MG16_14PL. */
#define MG16_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G15PL >= G16PL) или (G15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL >= G16PL) || (G15PL == 0)
+/* Задаёт MG16_15PL = ~(1 << 4); данные MG16_15PL. */
#define MG16_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG16_15PL = 0xFFFF; данные MG16_15PL. */
#define MG16_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G17PL >= G16PL) или (G17PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL >= G16PL) || (G17PL == 0)
+/* Задаёт MG16_17PL = ~(1 << 6); данные MG16_17PL. */
#define MG16_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG16_17PL = 0xFFFF; данные MG16_17PL. */
#define MG16_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G18PL >= G16PL) или (G18PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL >= G16PL) || (G18PL == 0)
+/* Задаёт MG16_18PL = ~(1 << 7); данные MG16_18PL. */
#define MG16_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG16_18PL = 0xFFFF; данные MG16_18PL. */
#define MG16_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG16_16PL = 0x00DF; данные MG16_16PL. */
#define MG16_16PL 0x00DF
+/* Задаёт MG16 = (MG16_11PL & MG16_12PL & MG16_13PL & MG16_14PL &; маска разрешённых прерываний внутри группы PIE 16. */
#define MG16 (MG16_11PL & MG16_12PL & MG16_13PL & MG16_14PL & \
- MG16_15PL & MG16_16PL & MG16_17PL & MG16_18PL)
+ MG16_15PL & MG16_16PL & MG16_17PL & MG16_18PL) /* Продолжает список аргументов, полей или выражение MG16_15PL & MG16_16PL & MG16_17PL & MG16_18PL); порядок элементов сохраняется. */
// End of MG16:
// Beginning of MG17:
+/* Условие компиляции (G11PL >= G17PL) или (G11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL >= G17PL) || (G11PL == 0)
+/* Задаёт MG17_11PL = ~(1); данные MG17_11PL. */
#define MG17_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG17_11PL = 0xFFFF; данные MG17_11PL. */
#define MG17_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G12PL >= G17PL) или (G12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL >= G17PL) || (G12PL == 0)
+/* Задаёт MG17_12PL = ~(1 << 1); данные MG17_12PL. */
#define MG17_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG17_12PL = 0xFFFF; данные MG17_12PL. */
#define MG17_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G13PL >= G17PL) или (G13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G13PL >= G17PL) || (G13PL == 0)
+/* Задаёт MG17_13PL = ~(1 << 2); данные MG17_13PL. */
#define MG17_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG17_13PL = 0xFFFF; данные MG17_13PL. */
#define MG17_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G14PL >= G17PL) или (G14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL >= G17PL) || (G14PL == 0)
+/* Задаёт MG17_14PL = ~(1 << 3); данные MG17_14PL. */
#define MG17_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG17_14PL = 0xFFFF; данные MG17_14PL. */
#define MG17_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G15PL >= G17PL) или (G15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL >= G17PL) || (G15PL == 0)
+/* Задаёт MG17_15PL = ~(1 << 4); данные MG17_15PL. */
#define MG17_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG17_15PL = 0xFFFF; данные MG17_15PL. */
#define MG17_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G16PL >= G17PL) или (G16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL >= G17PL) || (G16PL == 0)
+/* Задаёт MG17_16PL = ~(1 << 5); данные MG17_16PL. */
#define MG17_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG17_16PL = 0xFFFF; данные MG17_16PL. */
#define MG17_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G18PL >= G17PL) или (G18PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL >= G17PL) || (G18PL == 0)
+/* Задаёт MG17_18PL = ~(1 << 7); данные MG17_18PL. */
#define MG17_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG17_18PL = 0xFFFF; данные MG17_18PL. */
#define MG17_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG17_17PL = 0x00BF; данные MG17_17PL. */
#define MG17_17PL 0x00BF
+/* Задаёт MG17 = (MG17_11PL & MG17_12PL & MG17_13PL & MG17_14PL &; маска разрешённых прерываний внутри группы PIE 17. */
#define MG17 (MG17_11PL & MG17_12PL & MG17_13PL & MG17_14PL & \
- MG17_15PL & MG17_16PL & MG17_17PL & MG17_18PL)
+ MG17_15PL & MG17_16PL & MG17_17PL & MG17_18PL) /* Продолжает список аргументов, полей или выражение MG17_15PL & MG17_16PL & MG17_17PL & MG17_18PL); порядок элементов сохраняется. */
// End of MG17:
// Beginning of MG18:
+/* Условие компиляции (G11PL >= G18PL) или (G11PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL >= G18PL) || (G11PL == 0)
+/* Задаёт MG18_11PL = ~(1); данные MG18_11PL. */
#define MG18_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG18_11PL = 0xFFFF; данные MG18_11PL. */
#define MG18_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G12PL >= G18PL) или (G12PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL >= G18PL) || (G12PL == 0)
+/* Задаёт MG18_12PL = ~(1 << 1); данные MG18_12PL. */
#define MG18_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG18_12PL = 0xFFFF; данные MG18_12PL. */
#define MG18_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G13PL >= G18PL) или (G13PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G13PL >= G18PL) || (G13PL == 0)
+/* Задаёт MG18_13PL = ~(1 << 2); данные MG18_13PL. */
#define MG18_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG18_13PL = 0xFFFF; данные MG18_13PL. */
#define MG18_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G14PL >= G18PL) или (G14PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL >= G18PL) || (G14PL == 0)
+/* Задаёт MG18_14PL = ~(1 << 3); данные MG18_14PL. */
#define MG18_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG18_14PL = 0xFFFF; данные MG18_14PL. */
#define MG18_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G15PL >= G18PL) или (G15PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL >= G18PL) || (G15PL == 0)
+/* Задаёт MG18_15PL = ~(1 << 4); данные MG18_15PL. */
#define MG18_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG18_15PL = 0xFFFF; данные MG18_15PL. */
#define MG18_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G16PL >= G18PL) или (G16PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL >= G18PL) || (G16PL == 0)
+/* Задаёт MG18_16PL = ~(1 << 5); данные MG18_16PL. */
#define MG18_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG18_16PL = 0xFFFF; данные MG18_16PL. */
#define MG18_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G17PL >= G18PL) или (G17PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL >= G18PL) || (G17PL == 0)
+/* Задаёт MG18_17PL = ~(1 << 6); данные MG18_17PL. */
#define MG18_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG18_17PL = 0xFFFF; данные MG18_17PL. */
#define MG18_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG18_18PL = 0x007F; данные MG18_18PL. */
#define MG18_18PL 0x007F
+/* Задаёт MG18 = (MG18_11PL & MG18_12PL & MG18_13PL & MG18_14PL &; маска разрешённых прерываний внутри группы PIE 18. */
#define MG18 (MG18_11PL & MG18_12PL & MG18_13PL & MG18_14PL & \
- MG18_15PL & MG18_16PL & MG18_17PL & MG18_18PL)
+ MG18_15PL & MG18_16PL & MG18_17PL & MG18_18PL) /* Продолжает список аргументов, полей или выражение MG18_15PL & MG18_16PL & MG18_17PL & MG18_18PL); порядок элементов сохраняется. */
// End of MG18:
//-------------------------------------------------------------------------------
@@ -2191,331 +3885,627 @@ extern "C" {
//
// Beginning of MG21:
+/* Условие компиляции (G22PL >= G21PL) или (G22PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL >= G21PL) || (G22PL == 0)
+/* Задаёт MG21_12PL = ~(1 << 1); данные MG21_12PL. */
#define MG21_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG21_12PL = 0xFFFF; данные MG21_12PL. */
#define MG21_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G23PL >= G21PL) или (G23PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL >= G21PL) || (G23PL == 0)
+/* Задаёт MG21_13PL = ~(1 << 2); данные MG21_13PL. */
#define MG21_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG21_13PL = 0xFFFF; данные MG21_13PL. */
#define MG21_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G24PL >= G21PL) или (G24PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL >= G21PL) || (G24PL == 0)
+/* Задаёт MG21_14PL = ~(1 << 3); данные MG21_14PL. */
#define MG21_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG21_14PL = 0xFFFF; данные MG21_14PL. */
#define MG21_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G25PL >= G21PL) или (G25PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL >= G21PL) || (G25PL == 0)
+/* Задаёт MG21_15PL = ~(1 << 4); данные MG21_15PL. */
#define MG21_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG21_15PL = 0xFFFF; данные MG21_15PL. */
#define MG21_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G26PL >= G21PL) или (G26PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL >= G21PL) || (G26PL == 0)
+/* Задаёт MG21_16PL = ~(1 << 5); данные MG21_16PL. */
#define MG21_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG21_16PL = 0xFFFF; данные MG21_16PL. */
#define MG21_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G27PL >= G21PL) или (G27PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G27PL >= G21PL) || (G27PL == 0)
+/* Задаёт MG21_17PL = ~(1 << 6); данные MG21_17PL. */
#define MG21_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG21_17PL = 0xFFFF; данные MG21_17PL. */
#define MG21_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G28PL >= G21PL) или (G28PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G28PL >= G21PL) || (G28PL == 0)
+/* Задаёт MG21_18PL = ~(1 << 7); данные MG21_18PL. */
#define MG21_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG21_18PL = 0xFFFF; данные MG21_18PL. */
#define MG21_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG21_11PL = 0x00FE; данные MG21_11PL. */
#define MG21_11PL 0x00FE
+/* Задаёт MG21 = (MG21_11PL & MG21_12PL & MG21_13PL & MG21_14PL &; маска разрешённых прерываний внутри группы PIE 21. */
#define MG21 (MG21_11PL & MG21_12PL & MG21_13PL & MG21_14PL & \
- MG21_15PL & MG21_16PL & MG21_17PL & MG21_18PL)
+ MG21_15PL & MG21_16PL & MG21_17PL & MG21_18PL) /* Продолжает список аргументов, полей или выражение MG21_15PL & MG21_16PL & MG21_17PL & MG21_18PL); порядок элементов сохраняется. */
// End of MG21:
// Beginning of MG22:
+/* Условие компиляции (G21PL >= G22PL) или (G21PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL >= G22PL) || (G21PL == 0)
+/* Задаёт MG22_11PL = ~(1); данные MG22_11PL. */
#define MG22_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG22_11PL = 0xFFFF; данные MG22_11PL. */
#define MG22_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G23PL >= G22PL) или (G23PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL >= G22PL) || (G23PL == 0)
+/* Задаёт MG22_13PL = ~(1 << 2); данные MG22_13PL. */
#define MG22_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG22_13PL = 0xFFFF; данные MG22_13PL. */
#define MG22_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G24PL >= G22PL) или (G24PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL >= G22PL) || (G24PL == 0)
+/* Задаёт MG22_14PL = ~(1 << 3); данные MG22_14PL. */
#define MG22_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG22_14PL = 0xFFFF; данные MG22_14PL. */
#define MG22_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G25PL >= G22PL) или (G25PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL >= G22PL) || (G25PL == 0)
+/* Задаёт MG22_15PL = ~(1 << 4); данные MG22_15PL. */
#define MG22_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG22_15PL = 0xFFFF; данные MG22_15PL. */
#define MG22_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G26PL >= G22PL) или (G26PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL >= G22PL) || (G26PL == 0)
+/* Задаёт MG22_16PL = ~(1 << 5); данные MG22_16PL. */
#define MG22_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG22_16PL = 0xFFFF; данные MG22_16PL. */
#define MG22_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G27PL >= G22PL) или (G27PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G27PL >= G22PL) || (G27PL == 0)
+/* Задаёт MG22_17PL = ~(1 << 6); данные MG22_17PL. */
#define MG22_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG22_17PL = 0xFFFF; данные MG22_17PL. */
#define MG22_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G28PL >= G22PL) или (G28PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G28PL >= G22PL) || (G28PL == 0)
+/* Задаёт MG22_18PL = ~(1 << 7); данные MG22_18PL. */
#define MG22_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG22_18PL = 0xFFFF; данные MG22_18PL. */
#define MG22_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG22_12PL = 0x00FD; данные MG22_12PL. */
#define MG22_12PL 0x00FD
+/* Задаёт MG22 = (MG22_11PL & MG22_12PL & MG22_13PL & MG22_14PL &; маска разрешённых прерываний внутри группы PIE 22. */
#define MG22 (MG22_11PL & MG22_12PL & MG22_13PL & MG22_14PL & \
- MG22_15PL & MG22_16PL & MG22_17PL & MG22_18PL)
+ MG22_15PL & MG22_16PL & MG22_17PL & MG22_18PL) /* Продолжает список аргументов, полей или выражение MG22_15PL & MG22_16PL & MG22_17PL & MG22_18PL); порядок элементов сохраняется. */
// End of MG22:
// Beginning of MG23:
+/* Условие компиляции (G21PL >= G23PL) или (G21PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL >= G23PL) || (G21PL == 0)
+/* Задаёт MG23_11PL = ~(1); данные MG23_11PL. */
#define MG23_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG23_11PL = 0xFFFF; данные MG23_11PL. */
#define MG23_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G22PL >= G23PL) или (G22PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL >= G23PL) || (G22PL == 0)
+/* Задаёт MG23_12PL = ~(1 << 1); данные MG23_12PL. */
#define MG23_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG23_12PL = 0xFFFF; данные MG23_12PL. */
#define MG23_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G24PL >= G23PL) или (G24PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL >= G23PL) || (G24PL == 0)
+/* Задаёт MG23_14PL = ~(1 << 3); данные MG23_14PL. */
#define MG23_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG23_14PL = 0xFFFF; данные MG23_14PL. */
#define MG23_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G25PL >= G23PL) или (G25PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL >= G23PL) || (G25PL == 0)
+/* Задаёт MG23_15PL = ~(1 << 4); данные MG23_15PL. */
#define MG23_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG23_15PL = 0xFFFF; данные MG23_15PL. */
#define MG23_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G26PL >= G23PL) или (G26PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL >= G23PL) || (G26PL == 0)
+/* Задаёт MG23_16PL = ~(1 << 5); данные MG23_16PL. */
#define MG23_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG23_16PL = 0xFFFF; данные MG23_16PL. */
#define MG23_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G27PL >= G23PL) или (G27PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G27PL >= G23PL) || (G27PL == 0)
+/* Задаёт MG23_17PL = ~(1 << 6); данные MG23_17PL. */
#define MG23_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG23_17PL = 0xFFFF; данные MG23_17PL. */
#define MG23_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G28PL >= G23PL) или (G28PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G28PL >= G23PL) || (G28PL == 0)
+/* Задаёт MG23_18PL = ~(1 << 7); данные MG23_18PL. */
#define MG23_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG23_18PL = 0xFFFF; данные MG23_18PL. */
#define MG23_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG23_13PL = 0x00FB; данные MG23_13PL. */
#define MG23_13PL 0x00FB
+/* Задаёт MG23 = (MG23_11PL & MG23_12PL & MG23_13PL & MG23_14PL &; маска разрешённых прерываний внутри группы PIE 23. */
#define MG23 (MG23_11PL & MG23_12PL & MG23_13PL & MG23_14PL & \
- MG23_15PL & MG23_16PL & MG23_17PL & MG23_18PL)
+ MG23_15PL & MG23_16PL & MG23_17PL & MG23_18PL) /* Продолжает список аргументов, полей или выражение MG23_15PL & MG23_16PL & MG23_17PL & MG23_18PL); порядок элементов сохраняется. */
// End of MG23:
// Beginning of MG24:
+/* Условие компиляции (G21PL >= G24PL) или (G21PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL >= G24PL) || (G21PL == 0)
+/* Задаёт MG24_11PL = ~(1); данные MG24_11PL. */
#define MG24_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG24_11PL = 0xFFFF; данные MG24_11PL. */
#define MG24_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G22PL >= G24PL) или (G22PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL >= G24PL) || (G22PL == 0)
+/* Задаёт MG24_12PL = ~(1 << 1); данные MG24_12PL. */
#define MG24_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG24_12PL = 0xFFFF; данные MG24_12PL. */
#define MG24_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G23PL >= G24PL) или (G23PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL >= G24PL) || (G23PL == 0)
+/* Задаёт MG24_13PL = ~(1 << 2); данные MG24_13PL. */
#define MG24_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG24_13PL = 0xFFFF; данные MG24_13PL. */
#define MG24_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G25PL >= G24PL) или (G25PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL >= G24PL) || (G25PL == 0)
+/* Задаёт MG24_15PL = ~(1 << 4); данные MG24_15PL. */
#define MG24_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG24_15PL = 0xFFFF; данные MG24_15PL. */
#define MG24_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G26PL >= G24PL) или (G26PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL >= G24PL) || (G26PL == 0)
+/* Задаёт MG24_16PL = ~(1 << 5); данные MG24_16PL. */
#define MG24_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG24_16PL = 0xFFFF; данные MG24_16PL. */
#define MG24_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G27PL >= G24PL) или (G27PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G27PL >= G24PL) || (G27PL == 0)
+/* Задаёт MG24_17PL = ~(1 << 6); данные MG24_17PL. */
#define MG24_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG24_17PL = 0xFFFF; данные MG24_17PL. */
#define MG24_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G28PL >= G24PL) или (G28PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G28PL >= G24PL) || (G28PL == 0)
+/* Задаёт MG24_18PL = ~(1 << 7); данные MG24_18PL. */
#define MG24_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG24_18PL = 0xFFFF; данные MG24_18PL. */
#define MG24_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG24_14PL = 0x00F7; данные MG24_14PL. */
#define MG24_14PL 0x00F7
+/* Задаёт MG24 = (MG24_11PL & MG24_12PL & MG24_13PL & MG24_14PL &; маска разрешённых прерываний внутри группы PIE 24. */
#define MG24 (MG24_11PL & MG24_12PL & MG24_13PL & MG24_14PL & \
- MG24_15PL & MG24_16PL & MG24_17PL & MG24_18PL)
+ MG24_15PL & MG24_16PL & MG24_17PL & MG24_18PL) /* Продолжает список аргументов, полей или выражение MG24_15PL & MG24_16PL & MG24_17PL & MG24_18PL); порядок элементов сохраняется. */
// End of MG24:
// Beginning of MG25:
+/* Условие компиляции (G21PL >= G25PL) или (G21PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL >= G25PL) || (G21PL == 0)
+/* Задаёт MG25_11PL = ~(1); данные MG25_11PL. */
#define MG25_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG25_11PL = 0xFFFF; данные MG25_11PL. */
#define MG25_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G22PL >= G25PL) или (G22PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL >= G25PL) || (G22PL == 0)
+/* Задаёт MG25_12PL = ~(1 << 1); данные MG25_12PL. */
#define MG25_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG25_12PL = 0xFFFF; данные MG25_12PL. */
#define MG25_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G23PL >= G25PL) или (G23PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL >= G25PL) || (G23PL == 0)
+/* Задаёт MG25_13PL = ~(1 << 2); данные MG25_13PL. */
#define MG25_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG25_13PL = 0xFFFF; данные MG25_13PL. */
#define MG25_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G24PL >= G25PL) или (G24PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL >= G25PL) || (G24PL == 0)
+/* Задаёт MG25_14PL = ~(1 << 3); данные MG25_14PL. */
#define MG25_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG25_14PL = 0xFFFF; данные MG25_14PL. */
#define MG25_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G26PL >= G25PL) или (G26PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL >= G25PL) || (G26PL == 0)
+/* Задаёт MG25_16PL = ~(1 << 5); данные MG25_16PL. */
#define MG25_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG25_16PL = 0xFFFF; данные MG25_16PL. */
#define MG25_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G27PL >= G25PL) или (G27PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G27PL >= G25PL) || (G27PL == 0)
+/* Задаёт MG25_17PL = ~(1 << 6); данные MG25_17PL. */
#define MG25_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG25_17PL = 0xFFFF; данные MG25_17PL. */
#define MG25_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G28PL >= G25PL) или (G28PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G28PL >= G25PL) || (G28PL == 0)
+/* Задаёт MG25_18PL = ~(1 << 7); данные MG25_18PL. */
#define MG25_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG25_18PL = 0xFFFF; данные MG25_18PL. */
#define MG25_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG25_15PL = 0x00EF; данные MG25_15PL. */
#define MG25_15PL 0x00EF
+/* Задаёт MG25 = (MG25_11PL & MG25_12PL & MG25_13PL & MG25_14PL &; маска разрешённых прерываний внутри группы PIE 25. */
#define MG25 (MG25_11PL & MG25_12PL & MG25_13PL & MG25_14PL & \
- MG25_15PL & MG25_16PL & MG25_17PL & MG25_18PL)
+ MG25_15PL & MG25_16PL & MG25_17PL & MG25_18PL) /* Продолжает список аргументов, полей или выражение MG25_15PL & MG25_16PL & MG25_17PL & MG25_18PL); порядок элементов сохраняется. */
// End of MG25:
// Beginning of MG26:
+/* Условие компиляции (G21PL >= G26PL) или (G21PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL >= G26PL) || (G21PL == 0)
+/* Задаёт MG26_11PL = ~(1); данные MG26_11PL. */
#define MG26_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG26_11PL = 0xFFFF; данные MG26_11PL. */
#define MG26_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G22PL >= G26PL) или (G22PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL >= G26PL) || (G22PL == 0)
+/* Задаёт MG26_12PL = ~(1 << 1); данные MG26_12PL. */
#define MG26_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG26_12PL = 0xFFFF; данные MG26_12PL. */
#define MG26_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G23PL >= G26PL) или (G23PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL >= G26PL) || (G23PL == 0)
+/* Задаёт MG26_13PL = ~(1 << 2); данные MG26_13PL. */
#define MG26_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG26_13PL = 0xFFFF; данные MG26_13PL. */
#define MG26_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G24PL >= G26PL) или (G24PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL >= G26PL) || (G24PL == 0)
+/* Задаёт MG26_14PL = ~(1 << 3); данные MG26_14PL. */
#define MG26_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG26_14PL = 0xFFFF; данные MG26_14PL. */
#define MG26_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G25PL >= G26PL) или (G25PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL >= G26PL) || (G25PL == 0)
+/* Задаёт MG26_15PL = ~(1 << 4); данные MG26_15PL. */
#define MG26_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG26_15PL = 0xFFFF; данные MG26_15PL. */
#define MG26_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G27PL >= G26PL) или (G27PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G27PL >= G26PL) || (G27PL == 0)
+/* Задаёт MG26_17PL = ~(1 << 6); данные MG26_17PL. */
#define MG26_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG26_17PL = 0xFFFF; данные MG26_17PL. */
#define MG26_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G28PL >= G26PL) или (G28PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G28PL >= G26PL) || (G28PL == 0)
+/* Задаёт MG26_18PL = ~(1 << 7); данные MG26_18PL. */
#define MG26_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG26_18PL = 0xFFFF; данные MG26_18PL. */
#define MG26_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG26_16PL = 0x00DF; данные MG26_16PL. */
#define MG26_16PL 0x00DF
+/* Задаёт MG26 = (MG26_11PL & MG26_12PL & MG26_13PL & MG26_14PL &; маска разрешённых прерываний внутри группы PIE 26. */
#define MG26 (MG26_11PL & MG26_12PL & MG26_13PL & MG26_14PL & \
- MG26_15PL & MG26_16PL & MG26_17PL & MG26_18PL)
+ MG26_15PL & MG26_16PL & MG26_17PL & MG26_18PL) /* Продолжает список аргументов, полей или выражение MG26_15PL & MG26_16PL & MG26_17PL & MG26_18PL); порядок элементов сохраняется. */
// End of MG26:
// Beginning of MG27:
+/* Условие компиляции (G21PL >= G27PL) или (G21PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL >= G27PL) || (G21PL == 0)
+/* Задаёт MG27_11PL = ~(1); данные MG27_11PL. */
#define MG27_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG27_11PL = 0xFFFF; данные MG27_11PL. */
#define MG27_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G22PL >= G27PL) или (G22PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL >= G27PL) || (G22PL == 0)
+/* Задаёт MG27_12PL = ~(1 << 1); данные MG27_12PL. */
#define MG27_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG27_12PL = 0xFFFF; данные MG27_12PL. */
#define MG27_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G23PL >= G27PL) или (G23PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL >= G27PL) || (G23PL == 0)
+/* Задаёт MG27_13PL = ~(1 << 2); данные MG27_13PL. */
#define MG27_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG27_13PL = 0xFFFF; данные MG27_13PL. */
#define MG27_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G24PL >= G27PL) или (G24PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL >= G27PL) || (G24PL == 0)
+/* Задаёт MG27_14PL = ~(1 << 3); данные MG27_14PL. */
#define MG27_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG27_14PL = 0xFFFF; данные MG27_14PL. */
#define MG27_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G25PL >= G27PL) или (G25PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL >= G27PL) || (G25PL == 0)
+/* Задаёт MG27_15PL = ~(1 << 4); данные MG27_15PL. */
#define MG27_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG27_15PL = 0xFFFF; данные MG27_15PL. */
#define MG27_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G26PL >= G27PL) или (G26PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL >= G27PL) || (G26PL == 0)
+/* Задаёт MG27_16PL = ~(1 << 5); данные MG27_16PL. */
#define MG27_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG27_16PL = 0xFFFF; данные MG27_16PL. */
#define MG27_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G28PL >= G27PL) или (G28PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G28PL >= G27PL) || (G28PL == 0)
+/* Задаёт MG27_18PL = ~(1 << 7); данные MG27_18PL. */
#define MG27_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG27_18PL = 0xFFFF; данные MG27_18PL. */
#define MG27_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG27_17PL = 0x00BF; данные MG27_17PL. */
#define MG27_17PL 0x00BF
+/* Задаёт MG27 = (MG27_11PL & MG27_12PL & MG27_13PL & MG27_14PL &; маска разрешённых прерываний внутри группы PIE 27. */
#define MG27 (MG27_11PL & MG27_12PL & MG27_13PL & MG27_14PL & \
- MG27_15PL & MG27_16PL & MG27_17PL & MG27_18PL)
+ MG27_15PL & MG27_16PL & MG27_17PL & MG27_18PL) /* Продолжает список аргументов, полей или выражение MG27_15PL & MG27_16PL & MG27_17PL & MG27_18PL); порядок элементов сохраняется. */
// End of MG27:
// Beginning of MG28:
+/* Условие компиляции (G21PL >= G28PL) или (G21PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL >= G28PL) || (G21PL == 0)
+/* Задаёт MG28_11PL = ~(1); данные MG28_11PL. */
#define MG28_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG28_11PL = 0xFFFF; данные MG28_11PL. */
#define MG28_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G22PL >= G28PL) или (G22PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL >= G28PL) || (G22PL == 0)
+/* Задаёт MG28_12PL = ~(1 << 1); данные MG28_12PL. */
#define MG28_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG28_12PL = 0xFFFF; данные MG28_12PL. */
#define MG28_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G23PL >= G28PL) или (G23PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL >= G28PL) || (G23PL == 0)
+/* Задаёт MG28_13PL = ~(1 << 2); данные MG28_13PL. */
#define MG28_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG28_13PL = 0xFFFF; данные MG28_13PL. */
#define MG28_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G24PL >= G28PL) или (G24PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL >= G28PL) || (G24PL == 0)
+/* Задаёт MG28_14PL = ~(1 << 3); данные MG28_14PL. */
#define MG28_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG28_14PL = 0xFFFF; данные MG28_14PL. */
#define MG28_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G25PL >= G28PL) или (G25PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL >= G28PL) || (G25PL == 0)
+/* Задаёт MG28_15PL = ~(1 << 4); данные MG28_15PL. */
#define MG28_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG28_15PL = 0xFFFF; данные MG28_15PL. */
#define MG28_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G26PL >= G28PL) или (G26PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL >= G28PL) || (G26PL == 0)
+/* Задаёт MG28_16PL = ~(1 << 5); данные MG28_16PL. */
#define MG28_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG28_16PL = 0xFFFF; данные MG28_16PL. */
#define MG28_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G27PL >= G28PL) или (G27PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G27PL >= G28PL) || (G27PL == 0)
+/* Задаёт MG28_17PL = ~(1 << 6); данные MG28_17PL. */
#define MG28_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG28_17PL = 0xFFFF; данные MG28_17PL. */
#define MG28_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG28_18PL = 0x007F; данные MG28_18PL. */
#define MG28_18PL 0x007F
+/* Задаёт MG28 = (MG28_11PL & MG28_12PL & MG28_13PL & MG28_14PL &; маска разрешённых прерываний внутри группы PIE 28. */
#define MG28 (MG28_11PL & MG28_12PL & MG28_13PL & MG28_14PL & \
- MG28_15PL & MG28_16PL & MG28_17PL & MG28_18PL)
+ MG28_15PL & MG28_16PL & MG28_17PL & MG28_18PL) /* Продолжает список аргументов, полей или выражение MG28_15PL & MG28_16PL & MG28_17PL & MG28_18PL); порядок элементов сохраняется. */
// End of MG28:
//-------------------------------------------------------------------------------
@@ -2523,331 +4513,627 @@ extern "C" {
//
// Beginning of MG31:
+/* Условие компиляции (G32PL >= G31PL) или (G32PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL >= G31PL) || (G32PL == 0)
+/* Задаёт MG31_12PL = ~(1 << 1); данные MG31_12PL. */
#define MG31_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG31_12PL = 0xFFFF; данные MG31_12PL. */
#define MG31_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G33PL >= G31PL) или (G33PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL >= G31PL) || (G33PL == 0)
+/* Задаёт MG31_13PL = ~(1 << 2); данные MG31_13PL. */
#define MG31_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG31_13PL = 0xFFFF; данные MG31_13PL. */
#define MG31_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G34PL >= G31PL) или (G34PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL >= G31PL) || (G34PL == 0)
+/* Задаёт MG31_14PL = ~(1 << 3); данные MG31_14PL. */
#define MG31_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG31_14PL = 0xFFFF; данные MG31_14PL. */
#define MG31_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G35PL >= G31PL) или (G35PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL >= G31PL) || (G35PL == 0)
+/* Задаёт MG31_15PL = ~(1 << 4); данные MG31_15PL. */
#define MG31_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG31_15PL = 0xFFFF; данные MG31_15PL. */
#define MG31_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G36PL >= G31PL) или (G36PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL >= G31PL) || (G36PL == 0)
+/* Задаёт MG31_16PL = ~(1 << 5); данные MG31_16PL. */
#define MG31_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG31_16PL = 0xFFFF; данные MG31_16PL. */
#define MG31_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G37PL >= G31PL) или (G37PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G37PL >= G31PL) || (G37PL == 0)
+/* Задаёт MG31_17PL = ~(1 << 6); данные MG31_17PL. */
#define MG31_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG31_17PL = 0xFFFF; данные MG31_17PL. */
#define MG31_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G38PL >= G31PL) или (G38PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G38PL >= G31PL) || (G38PL == 0)
+/* Задаёт MG31_18PL = ~(1 << 7); данные MG31_18PL. */
#define MG31_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG31_18PL = 0xFFFF; данные MG31_18PL. */
#define MG31_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG31_11PL = 0x00FE; данные MG31_11PL. */
#define MG31_11PL 0x00FE
+/* Задаёт MG31 = (MG31_11PL & MG31_12PL & MG31_13PL & MG31_14PL &; маска разрешённых прерываний внутри группы PIE 31. */
#define MG31 (MG31_11PL & MG31_12PL & MG31_13PL & MG31_14PL & \
- MG31_15PL & MG31_16PL & MG31_17PL & MG31_18PL)
+ MG31_15PL & MG31_16PL & MG31_17PL & MG31_18PL) /* Продолжает список аргументов, полей или выражение MG31_15PL & MG31_16PL & MG31_17PL & MG31_18PL); порядок элементов сохраняется. */
// End of MG31:
// Beginning of MG32:
+/* Условие компиляции (G31PL >= G32PL) или (G31PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL >= G32PL) || (G31PL == 0)
+/* Задаёт MG32_11PL = ~(1); данные MG32_11PL. */
#define MG32_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG32_11PL = 0xFFFF; данные MG32_11PL. */
#define MG32_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G33PL >= G32PL) или (G33PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL >= G32PL) || (G33PL == 0)
+/* Задаёт MG32_13PL = ~(1 << 2); данные MG32_13PL. */
#define MG32_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG32_13PL = 0xFFFF; данные MG32_13PL. */
#define MG32_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G34PL >= G32PL) или (G34PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL >= G32PL) || (G34PL == 0)
+/* Задаёт MG32_14PL = ~(1 << 3); данные MG32_14PL. */
#define MG32_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG32_14PL = 0xFFFF; данные MG32_14PL. */
#define MG32_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G35PL >= G32PL) или (G35PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL >= G32PL) || (G35PL == 0)
+/* Задаёт MG32_15PL = ~(1 << 4); данные MG32_15PL. */
#define MG32_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG32_15PL = 0xFFFF; данные MG32_15PL. */
#define MG32_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G36PL >= G32PL) или (G36PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL >= G32PL) || (G36PL == 0)
+/* Задаёт MG32_16PL = ~(1 << 5); данные MG32_16PL. */
#define MG32_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG32_16PL = 0xFFFF; данные MG32_16PL. */
#define MG32_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G37PL >= G32PL) или (G37PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G37PL >= G32PL) || (G37PL == 0)
+/* Задаёт MG32_17PL = ~(1 << 6); данные MG32_17PL. */
#define MG32_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG32_17PL = 0xFFFF; данные MG32_17PL. */
#define MG32_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G38PL >= G32PL) или (G38PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G38PL >= G32PL) || (G38PL == 0)
+/* Задаёт MG32_18PL = ~(1 << 7); данные MG32_18PL. */
#define MG32_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG32_18PL = 0xFFFF; данные MG32_18PL. */
#define MG32_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG32_12PL = 0x00FD; данные MG32_12PL. */
#define MG32_12PL 0x00FD
+/* Задаёт MG32 = (MG32_11PL & MG32_12PL & MG32_13PL & MG32_14PL &; маска разрешённых прерываний внутри группы PIE 32. */
#define MG32 (MG32_11PL & MG32_12PL & MG32_13PL & MG32_14PL & \
- MG32_15PL & MG32_16PL & MG32_17PL & MG32_18PL)
+ MG32_15PL & MG32_16PL & MG32_17PL & MG32_18PL) /* Продолжает список аргументов, полей или выражение MG32_15PL & MG32_16PL & MG32_17PL & MG32_18PL); порядок элементов сохраняется. */
// End of MG32:
// Beginning of MG33:
+/* Условие компиляции (G31PL >= G33PL) или (G31PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL >= G33PL) || (G31PL == 0)
+/* Задаёт MG33_11PL = ~(1); данные MG33_11PL. */
#define MG33_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG33_11PL = 0xFFFF; данные MG33_11PL. */
#define MG33_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G32PL >= G33PL) или (G32PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL >= G33PL) || (G32PL == 0)
+/* Задаёт MG33_12PL = ~(1 << 1); данные MG33_12PL. */
#define MG33_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG33_12PL = 0xFFFF; данные MG33_12PL. */
#define MG33_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G34PL >= G33PL) или (G34PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL >= G33PL) || (G34PL == 0)
+/* Задаёт MG33_14PL = ~(1 << 3); данные MG33_14PL. */
#define MG33_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG33_14PL = 0xFFFF; данные MG33_14PL. */
#define MG33_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G35PL >= G33PL) или (G35PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL >= G33PL) || (G35PL == 0)
+/* Задаёт MG33_15PL = ~(1 << 4); данные MG33_15PL. */
#define MG33_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG33_15PL = 0xFFFF; данные MG33_15PL. */
#define MG33_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G36PL >= G33PL) или (G36PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL >= G33PL) || (G36PL == 0)
+/* Задаёт MG33_16PL = ~(1 << 5); данные MG33_16PL. */
#define MG33_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG33_16PL = 0xFFFF; данные MG33_16PL. */
#define MG33_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G37PL >= G33PL) или (G37PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G37PL >= G33PL) || (G37PL == 0)
+/* Задаёт MG33_17PL = ~(1 << 6); данные MG33_17PL. */
#define MG33_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG33_17PL = 0xFFFF; данные MG33_17PL. */
#define MG33_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G38PL >= G33PL) или (G38PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G38PL >= G33PL) || (G38PL == 0)
+/* Задаёт MG33_18PL = ~(1 << 7); данные MG33_18PL. */
#define MG33_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG33_18PL = 0xFFFF; данные MG33_18PL. */
#define MG33_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG33_13PL = 0x00FB; данные MG33_13PL. */
#define MG33_13PL 0x00FB
+/* Задаёт MG33 = (MG33_11PL & MG33_12PL & MG33_13PL & MG33_14PL &; маска разрешённых прерываний внутри группы PIE 33. */
#define MG33 (MG33_11PL & MG33_12PL & MG33_13PL & MG33_14PL & \
- MG33_15PL & MG33_16PL & MG33_17PL & MG33_18PL)
+ MG33_15PL & MG33_16PL & MG33_17PL & MG33_18PL) /* Продолжает список аргументов, полей или выражение MG33_15PL & MG33_16PL & MG33_17PL & MG33_18PL); порядок элементов сохраняется. */
// End of MG33:
// Beginning of MG34:
+/* Условие компиляции (G31PL >= G34PL) или (G31PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL >= G34PL) || (G31PL == 0)
+/* Задаёт MG34_11PL = ~(1); данные MG34_11PL. */
#define MG34_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG34_11PL = 0xFFFF; данные MG34_11PL. */
#define MG34_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G32PL >= G34PL) или (G32PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL >= G34PL) || (G32PL == 0)
+/* Задаёт MG34_12PL = ~(1 << 1); данные MG34_12PL. */
#define MG34_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG34_12PL = 0xFFFF; данные MG34_12PL. */
#define MG34_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G33PL >= G34PL) или (G33PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL >= G34PL) || (G33PL == 0)
+/* Задаёт MG34_13PL = ~(1 << 2); данные MG34_13PL. */
#define MG34_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG34_13PL = 0xFFFF; данные MG34_13PL. */
#define MG34_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G35PL >= G34PL) или (G35PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL >= G34PL) || (G35PL == 0)
+/* Задаёт MG34_15PL = ~(1 << 4); данные MG34_15PL. */
#define MG34_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG34_15PL = 0xFFFF; данные MG34_15PL. */
#define MG34_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G36PL >= G34PL) или (G36PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL >= G34PL) || (G36PL == 0)
+/* Задаёт MG34_16PL = ~(1 << 5); данные MG34_16PL. */
#define MG34_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG34_16PL = 0xFFFF; данные MG34_16PL. */
#define MG34_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G37PL >= G34PL) или (G37PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G37PL >= G34PL) || (G37PL == 0)
+/* Задаёт MG34_17PL = ~(1 << 6); данные MG34_17PL. */
#define MG34_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG34_17PL = 0xFFFF; данные MG34_17PL. */
#define MG34_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G38PL >= G34PL) или (G38PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G38PL >= G34PL) || (G38PL == 0)
+/* Задаёт MG34_18PL = ~(1 << 7); данные MG34_18PL. */
#define MG34_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG34_18PL = 0xFFFF; данные MG34_18PL. */
#define MG34_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG34_14PL = 0x00F7; данные MG34_14PL. */
#define MG34_14PL 0x00F7
+/* Задаёт MG34 = (MG34_11PL & MG34_12PL & MG34_13PL & MG34_14PL &; маска разрешённых прерываний внутри группы PIE 34. */
#define MG34 (MG34_11PL & MG34_12PL & MG34_13PL & MG34_14PL & \
- MG34_15PL & MG34_16PL & MG34_17PL & MG34_18PL)
+ MG34_15PL & MG34_16PL & MG34_17PL & MG34_18PL) /* Продолжает список аргументов, полей или выражение MG34_15PL & MG34_16PL & MG34_17PL & MG34_18PL); порядок элементов сохраняется. */
// End of MG34:
// Beginning of MG35:
+/* Условие компиляции (G31PL >= G35PL) или (G31PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL >= G35PL) || (G31PL == 0)
+/* Задаёт MG35_11PL = ~(1); данные MG35_11PL. */
#define MG35_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG35_11PL = 0xFFFF; данные MG35_11PL. */
#define MG35_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G32PL >= G35PL) или (G32PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL >= G35PL) || (G32PL == 0)
+/* Задаёт MG35_12PL = ~(1 << 1); данные MG35_12PL. */
#define MG35_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG35_12PL = 0xFFFF; данные MG35_12PL. */
#define MG35_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G33PL >= G35PL) или (G33PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL >= G35PL) || (G33PL == 0)
+/* Задаёт MG35_13PL = ~(1 << 2); данные MG35_13PL. */
#define MG35_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG35_13PL = 0xFFFF; данные MG35_13PL. */
#define MG35_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G34PL >= G35PL) или (G34PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL >= G35PL) || (G34PL == 0)
+/* Задаёт MG35_14PL = ~(1 << 3); данные MG35_14PL. */
#define MG35_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG35_14PL = 0xFFFF; данные MG35_14PL. */
#define MG35_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G36PL >= G35PL) или (G36PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL >= G35PL) || (G36PL == 0)
+/* Задаёт MG35_16PL = ~(1 << 5); данные MG35_16PL. */
#define MG35_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG35_16PL = 0xFFFF; данные MG35_16PL. */
#define MG35_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G37PL >= G35PL) или (G37PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G37PL >= G35PL) || (G37PL == 0)
+/* Задаёт MG35_17PL = ~(1 << 6); данные MG35_17PL. */
#define MG35_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG35_17PL = 0xFFFF; данные MG35_17PL. */
#define MG35_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G38PL >= G35PL) или (G38PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G38PL >= G35PL) || (G38PL == 0)
+/* Задаёт MG35_18PL = ~(1 << 7); данные MG35_18PL. */
#define MG35_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG35_18PL = 0xFFFF; данные MG35_18PL. */
#define MG35_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG35_15PL = 0x00EF; данные MG35_15PL. */
#define MG35_15PL 0x00EF
+/* Задаёт MG35 = (MG35_11PL & MG35_12PL & MG35_13PL & MG35_14PL &; маска разрешённых прерываний внутри группы PIE 35. */
#define MG35 (MG35_11PL & MG35_12PL & MG35_13PL & MG35_14PL & \
- MG35_15PL & MG35_16PL & MG35_17PL & MG35_18PL)
+ MG35_15PL & MG35_16PL & MG35_17PL & MG35_18PL) /* Продолжает список аргументов, полей или выражение MG35_15PL & MG35_16PL & MG35_17PL & MG35_18PL); порядок элементов сохраняется. */
// End of MG35:
// Beginning of MG36:
+/* Условие компиляции (G31PL >= G36PL) или (G31PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL >= G36PL) || (G31PL == 0)
+/* Задаёт MG36_11PL = ~(1); данные MG36_11PL. */
#define MG36_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG36_11PL = 0xFFFF; данные MG36_11PL. */
#define MG36_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G32PL >= G36PL) или (G32PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL >= G36PL) || (G32PL == 0)
+/* Задаёт MG36_12PL = ~(1 << 1); данные MG36_12PL. */
#define MG36_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG36_12PL = 0xFFFF; данные MG36_12PL. */
#define MG36_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G33PL >= G36PL) или (G33PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL >= G36PL) || (G33PL == 0)
+/* Задаёт MG36_13PL = ~(1 << 2); данные MG36_13PL. */
#define MG36_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG36_13PL = 0xFFFF; данные MG36_13PL. */
#define MG36_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G34PL >= G36PL) или (G34PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL >= G36PL) || (G34PL == 0)
+/* Задаёт MG36_14PL = ~(1 << 3); данные MG36_14PL. */
#define MG36_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG36_14PL = 0xFFFF; данные MG36_14PL. */
#define MG36_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G35PL >= G36PL) или (G35PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL >= G36PL) || (G35PL == 0)
+/* Задаёт MG36_15PL = ~(1 << 4); данные MG36_15PL. */
#define MG36_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG36_15PL = 0xFFFF; данные MG36_15PL. */
#define MG36_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G37PL >= G36PL) или (G37PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G37PL >= G36PL) || (G37PL == 0)
+/* Задаёт MG36_17PL = ~(1 << 6); данные MG36_17PL. */
#define MG36_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG36_17PL = 0xFFFF; данные MG36_17PL. */
#define MG36_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G38PL >= G36PL) или (G38PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G38PL >= G36PL) || (G38PL == 0)
+/* Задаёт MG36_18PL = ~(1 << 7); данные MG36_18PL. */
#define MG36_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG36_18PL = 0xFFFF; данные MG36_18PL. */
#define MG36_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG36_16PL = 0x00DF; данные MG36_16PL. */
#define MG36_16PL 0x00DF
+/* Задаёт MG36 = (MG36_11PL & MG36_12PL & MG36_13PL & MG36_14PL &; маска разрешённых прерываний внутри группы PIE 36. */
#define MG36 (MG36_11PL & MG36_12PL & MG36_13PL & MG36_14PL & \
- MG36_15PL & MG36_16PL & MG36_17PL & MG36_18PL)
+ MG36_15PL & MG36_16PL & MG36_17PL & MG36_18PL) /* Продолжает список аргументов, полей или выражение MG36_15PL & MG36_16PL & MG36_17PL & MG36_18PL); порядок элементов сохраняется. */
// End of MG36:
// Beginning of MG37:
+/* Условие компиляции (G31PL >= G37PL) или (G31PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL >= G37PL) || (G31PL == 0)
+/* Задаёт MG37_11PL = ~(1); данные MG37_11PL. */
#define MG37_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG37_11PL = 0xFFFF; данные MG37_11PL. */
#define MG37_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G32PL >= G37PL) или (G32PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL >= G37PL) || (G32PL == 0)
+/* Задаёт MG37_12PL = ~(1 << 1); данные MG37_12PL. */
#define MG37_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG37_12PL = 0xFFFF; данные MG37_12PL. */
#define MG37_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G33PL >= G37PL) или (G33PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL >= G37PL) || (G33PL == 0)
+/* Задаёт MG37_13PL = ~(1 << 2); данные MG37_13PL. */
#define MG37_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG37_13PL = 0xFFFF; данные MG37_13PL. */
#define MG37_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G34PL >= G37PL) или (G34PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL >= G37PL) || (G34PL == 0)
+/* Задаёт MG37_14PL = ~(1 << 3); данные MG37_14PL. */
#define MG37_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG37_14PL = 0xFFFF; данные MG37_14PL. */
#define MG37_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G35PL >= G37PL) или (G35PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL >= G37PL) || (G35PL == 0)
+/* Задаёт MG37_15PL = ~(1 << 4); данные MG37_15PL. */
#define MG37_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG37_15PL = 0xFFFF; данные MG37_15PL. */
#define MG37_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G36PL >= G37PL) или (G36PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL >= G37PL) || (G36PL == 0)
+/* Задаёт MG37_16PL = ~(1 << 5); данные MG37_16PL. */
#define MG37_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG37_16PL = 0xFFFF; данные MG37_16PL. */
#define MG37_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G38PL >= G37PL) или (G38PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G38PL >= G37PL) || (G38PL == 0)
+/* Задаёт MG37_18PL = ~(1 << 7); данные MG37_18PL. */
#define MG37_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG37_18PL = 0xFFFF; данные MG37_18PL. */
#define MG37_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG37_17PL = 0x00BF; данные MG37_17PL. */
#define MG37_17PL 0x00BF
+/* Задаёт MG37 = (MG37_11PL & MG37_12PL & MG37_13PL & MG37_14PL &; маска разрешённых прерываний внутри группы PIE 37. */
#define MG37 (MG37_11PL & MG37_12PL & MG37_13PL & MG37_14PL & \
- MG37_15PL & MG37_16PL & MG37_17PL & MG37_18PL)
+ MG37_15PL & MG37_16PL & MG37_17PL & MG37_18PL) /* Продолжает список аргументов, полей или выражение MG37_15PL & MG37_16PL & MG37_17PL & MG37_18PL); порядок элементов сохраняется. */
// End of MG37:
// Beginning of MG38:
+/* Условие компиляции (G31PL >= G38PL) или (G31PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL >= G38PL) || (G31PL == 0)
+/* Задаёт MG38_11PL = ~(1); данные MG38_11PL. */
#define MG38_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG38_11PL = 0xFFFF; данные MG38_11PL. */
#define MG38_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G32PL >= G38PL) или (G32PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL >= G38PL) || (G32PL == 0)
+/* Задаёт MG38_12PL = ~(1 << 1); данные MG38_12PL. */
#define MG38_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG38_12PL = 0xFFFF; данные MG38_12PL. */
#define MG38_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G33PL >= G38PL) или (G33PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL >= G38PL) || (G33PL == 0)
+/* Задаёт MG38_13PL = ~(1 << 2); данные MG38_13PL. */
#define MG38_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG38_13PL = 0xFFFF; данные MG38_13PL. */
#define MG38_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G34PL >= G38PL) или (G34PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL >= G38PL) || (G34PL == 0)
+/* Задаёт MG38_14PL = ~(1 << 3); данные MG38_14PL. */
#define MG38_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG38_14PL = 0xFFFF; данные MG38_14PL. */
#define MG38_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G35PL >= G38PL) или (G35PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL >= G38PL) || (G35PL == 0)
+/* Задаёт MG38_15PL = ~(1 << 4); данные MG38_15PL. */
#define MG38_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG38_15PL = 0xFFFF; данные MG38_15PL. */
#define MG38_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G36PL >= G38PL) или (G36PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL >= G38PL) || (G36PL == 0)
+/* Задаёт MG38_16PL = ~(1 << 5); данные MG38_16PL. */
#define MG38_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG38_16PL = 0xFFFF; данные MG38_16PL. */
#define MG38_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G37PL >= G38PL) или (G37PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G37PL >= G38PL) || (G37PL == 0)
+/* Задаёт MG38_17PL = ~(1 << 6); данные MG38_17PL. */
#define MG38_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG38_17PL = 0xFFFF; данные MG38_17PL. */
#define MG38_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG38_18PL = 0x007F; данные MG38_18PL. */
#define MG38_18PL 0x007F
+/* Задаёт MG38 = (MG38_11PL & MG38_12PL & MG38_13PL & MG38_14PL &; маска разрешённых прерываний внутри группы PIE 38. */
#define MG38 (MG38_11PL & MG38_12PL & MG38_13PL & MG38_14PL & \
- MG38_15PL & MG38_16PL & MG38_17PL & MG38_18PL)
+ MG38_15PL & MG38_16PL & MG38_17PL & MG38_18PL) /* Продолжает список аргументов, полей или выражение MG38_15PL & MG38_16PL & MG38_17PL & MG38_18PL); порядок элементов сохраняется. */
// End of MG38:
//-------------------------------------------------------------------------------
@@ -2855,331 +5141,627 @@ extern "C" {
//
// Beginning of MG41:
+/* Условие компиляции (G42PL >= G41PL) или (G42PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL >= G41PL) || (G42PL == 0)
+/* Задаёт MG41_12PL = ~(1 << 1); данные MG41_12PL. */
#define MG41_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG41_12PL = 0xFFFF; данные MG41_12PL. */
#define MG41_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G43PL >= G41PL) или (G43PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL >= G41PL) || (G43PL == 0)
+/* Задаёт MG41_13PL = ~(1 << 2); данные MG41_13PL. */
#define MG41_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG41_13PL = 0xFFFF; данные MG41_13PL. */
#define MG41_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G44PL >= G41PL) или (G44PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL >= G41PL) || (G44PL == 0)
+/* Задаёт MG41_14PL = ~(1 << 3); данные MG41_14PL. */
#define MG41_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG41_14PL = 0xFFFF; данные MG41_14PL. */
#define MG41_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G45PL >= G41PL) или (G45PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL >= G41PL) || (G45PL == 0)
+/* Задаёт MG41_15PL = ~(1 << 4); данные MG41_15PL. */
#define MG41_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG41_15PL = 0xFFFF; данные MG41_15PL. */
#define MG41_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G46PL >= G41PL) или (G46PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL >= G41PL) || (G46PL == 0)
+/* Задаёт MG41_16PL = ~(1 << 5); данные MG41_16PL. */
#define MG41_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG41_16PL = 0xFFFF; данные MG41_16PL. */
#define MG41_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G47PL >= G41PL) или (G47PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G47PL >= G41PL) || (G47PL == 0)
+/* Задаёт MG41_17PL = ~(1 << 6); данные MG41_17PL. */
#define MG41_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG41_17PL = 0xFFFF; данные MG41_17PL. */
#define MG41_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G48PL >= G41PL) или (G48PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G48PL >= G41PL) || (G48PL == 0)
+/* Задаёт MG41_18PL = ~(1 << 7); данные MG41_18PL. */
#define MG41_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG41_18PL = 0xFFFF; данные MG41_18PL. */
#define MG41_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG41_11PL = 0x00FE; данные MG41_11PL. */
#define MG41_11PL 0x00FE
+/* Задаёт MG41 = (MG41_11PL & MG41_12PL & MG41_13PL & MG41_14PL &; маска разрешённых прерываний внутри группы PIE 41. */
#define MG41 (MG41_11PL & MG41_12PL & MG41_13PL & MG41_14PL & \
- MG41_15PL & MG41_16PL & MG41_17PL & MG41_18PL)
+ MG41_15PL & MG41_16PL & MG41_17PL & MG41_18PL) /* Продолжает список аргументов, полей или выражение MG41_15PL & MG41_16PL & MG41_17PL & MG41_18PL); порядок элементов сохраняется. */
// End of MG41:
// Beginning of MG42:
+/* Условие компиляции (G41PL >= G42PL) или (G41PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL >= G42PL) || (G41PL == 0)
+/* Задаёт MG42_11PL = ~(1); данные MG42_11PL. */
#define MG42_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG42_11PL = 0xFFFF; данные MG42_11PL. */
#define MG42_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G43PL >= G42PL) или (G43PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL >= G42PL) || (G43PL == 0)
+/* Задаёт MG42_13PL = ~(1 << 2); данные MG42_13PL. */
#define MG42_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG42_13PL = 0xFFFF; данные MG42_13PL. */
#define MG42_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G44PL >= G42PL) или (G44PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL >= G42PL) || (G44PL == 0)
+/* Задаёт MG42_14PL = ~(1 << 3); данные MG42_14PL. */
#define MG42_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG42_14PL = 0xFFFF; данные MG42_14PL. */
#define MG42_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G45PL >= G42PL) или (G45PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL >= G42PL) || (G45PL == 0)
+/* Задаёт MG42_15PL = ~(1 << 4); данные MG42_15PL. */
#define MG42_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG42_15PL = 0xFFFF; данные MG42_15PL. */
#define MG42_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G46PL >= G42PL) или (G46PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL >= G42PL) || (G46PL == 0)
+/* Задаёт MG42_16PL = ~(1 << 5); данные MG42_16PL. */
#define MG42_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG42_16PL = 0xFFFF; данные MG42_16PL. */
#define MG42_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G47PL >= G42PL) или (G47PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G47PL >= G42PL) || (G47PL == 0)
+/* Задаёт MG42_17PL = ~(1 << 6); данные MG42_17PL. */
#define MG42_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG42_17PL = 0xFFFF; данные MG42_17PL. */
#define MG42_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G48PL >= G42PL) или (G48PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G48PL >= G42PL) || (G48PL == 0)
+/* Задаёт MG42_18PL = ~(1 << 7); данные MG42_18PL. */
#define MG42_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG42_18PL = 0xFFFF; данные MG42_18PL. */
#define MG42_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG42_12PL = 0x00FD; данные MG42_12PL. */
#define MG42_12PL 0x00FD
+/* Задаёт MG42 = (MG42_11PL & MG42_12PL & MG42_13PL & MG42_14PL &; маска разрешённых прерываний внутри группы PIE 42. */
#define MG42 (MG42_11PL & MG42_12PL & MG42_13PL & MG42_14PL & \
- MG42_15PL & MG42_16PL & MG42_17PL & MG42_18PL)
+ MG42_15PL & MG42_16PL & MG42_17PL & MG42_18PL) /* Продолжает список аргументов, полей или выражение MG42_15PL & MG42_16PL & MG42_17PL & MG42_18PL); порядок элементов сохраняется. */
// End of MG42:
// Beginning of MG43:
+/* Условие компиляции (G41PL >= G43PL) или (G41PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL >= G43PL) || (G41PL == 0)
+/* Задаёт MG43_11PL = ~(1); данные MG43_11PL. */
#define MG43_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG43_11PL = 0xFFFF; данные MG43_11PL. */
#define MG43_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G42PL >= G43PL) или (G42PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL >= G43PL) || (G42PL == 0)
+/* Задаёт MG43_12PL = ~(1 << 1); данные MG43_12PL. */
#define MG43_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG43_12PL = 0xFFFF; данные MG43_12PL. */
#define MG43_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G44PL >= G43PL) или (G44PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL >= G43PL) || (G44PL == 0)
+/* Задаёт MG43_14PL = ~(1 << 3); данные MG43_14PL. */
#define MG43_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG43_14PL = 0xFFFF; данные MG43_14PL. */
#define MG43_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G45PL >= G43PL) или (G45PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL >= G43PL) || (G45PL == 0)
+/* Задаёт MG43_15PL = ~(1 << 4); данные MG43_15PL. */
#define MG43_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG43_15PL = 0xFFFF; данные MG43_15PL. */
#define MG43_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G46PL >= G43PL) или (G46PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL >= G43PL) || (G46PL == 0)
+/* Задаёт MG43_16PL = ~(1 << 5); данные MG43_16PL. */
#define MG43_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG43_16PL = 0xFFFF; данные MG43_16PL. */
#define MG43_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G47PL >= G43PL) или (G47PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G47PL >= G43PL) || (G47PL == 0)
+/* Задаёт MG43_17PL = ~(1 << 6); данные MG43_17PL. */
#define MG43_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG43_17PL = 0xFFFF; данные MG43_17PL. */
#define MG43_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G48PL >= G43PL) или (G48PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G48PL >= G43PL) || (G48PL == 0)
+/* Задаёт MG43_18PL = ~(1 << 7); данные MG43_18PL. */
#define MG43_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG43_18PL = 0xFFFF; данные MG43_18PL. */
#define MG43_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG43_13PL = 0x00FB; данные MG43_13PL. */
#define MG43_13PL 0x00FB
+/* Задаёт MG43 = (MG43_11PL & MG43_12PL & MG43_13PL & MG43_14PL &; маска разрешённых прерываний внутри группы PIE 43. */
#define MG43 (MG43_11PL & MG43_12PL & MG43_13PL & MG43_14PL & \
- MG43_15PL & MG43_16PL & MG43_17PL & MG43_18PL)
+ MG43_15PL & MG43_16PL & MG43_17PL & MG43_18PL) /* Продолжает список аргументов, полей или выражение MG43_15PL & MG43_16PL & MG43_17PL & MG43_18PL); порядок элементов сохраняется. */
// End of MG43:
// Beginning of MG44:
+/* Условие компиляции (G41PL >= G44PL) или (G41PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL >= G44PL) || (G41PL == 0)
+/* Задаёт MG44_11PL = ~(1); данные MG44_11PL. */
#define MG44_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG44_11PL = 0xFFFF; данные MG44_11PL. */
#define MG44_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G42PL >= G44PL) или (G42PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL >= G44PL) || (G42PL == 0)
+/* Задаёт MG44_12PL = ~(1 << 1); данные MG44_12PL. */
#define MG44_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG44_12PL = 0xFFFF; данные MG44_12PL. */
#define MG44_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G43PL >= G44PL) или (G43PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL >= G44PL) || (G43PL == 0)
+/* Задаёт MG44_13PL = ~(1 << 2); данные MG44_13PL. */
#define MG44_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG44_13PL = 0xFFFF; данные MG44_13PL. */
#define MG44_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G45PL >= G44PL) или (G45PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL >= G44PL) || (G45PL == 0)
+/* Задаёт MG44_15PL = ~(1 << 4); данные MG44_15PL. */
#define MG44_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG44_15PL = 0xFFFF; данные MG44_15PL. */
#define MG44_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G46PL >= G44PL) или (G46PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL >= G44PL) || (G46PL == 0)
+/* Задаёт MG44_16PL = ~(1 << 5); данные MG44_16PL. */
#define MG44_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG44_16PL = 0xFFFF; данные MG44_16PL. */
#define MG44_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G47PL >= G44PL) или (G47PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G47PL >= G44PL) || (G47PL == 0)
+/* Задаёт MG44_17PL = ~(1 << 6); данные MG44_17PL. */
#define MG44_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG44_17PL = 0xFFFF; данные MG44_17PL. */
#define MG44_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G48PL >= G44PL) или (G48PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G48PL >= G44PL) || (G48PL == 0)
+/* Задаёт MG44_18PL = ~(1 << 7); данные MG44_18PL. */
#define MG44_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG44_18PL = 0xFFFF; данные MG44_18PL. */
#define MG44_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG44_14PL = 0x00F7; данные MG44_14PL. */
#define MG44_14PL 0x00F7
+/* Задаёт MG44 = (MG44_11PL & MG44_12PL & MG44_13PL & MG44_14PL &; маска разрешённых прерываний внутри группы PIE 44. */
#define MG44 (MG44_11PL & MG44_12PL & MG44_13PL & MG44_14PL & \
- MG44_15PL & MG44_16PL & MG44_17PL & MG44_18PL)
+ MG44_15PL & MG44_16PL & MG44_17PL & MG44_18PL) /* Продолжает список аргументов, полей или выражение MG44_15PL & MG44_16PL & MG44_17PL & MG44_18PL); порядок элементов сохраняется. */
// End of MG44:
// Beginning of MG45:
+/* Условие компиляции (G41PL >= G45PL) или (G41PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL >= G45PL) || (G41PL == 0)
+/* Задаёт MG45_11PL = ~(1); данные MG45_11PL. */
#define MG45_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG45_11PL = 0xFFFF; данные MG45_11PL. */
#define MG45_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G42PL >= G45PL) или (G42PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL >= G45PL) || (G42PL == 0)
+/* Задаёт MG45_12PL = ~(1 << 1); данные MG45_12PL. */
#define MG45_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG45_12PL = 0xFFFF; данные MG45_12PL. */
#define MG45_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G43PL >= G45PL) или (G43PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL >= G45PL) || (G43PL == 0)
+/* Задаёт MG45_13PL = ~(1 << 2); данные MG45_13PL. */
#define MG45_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG45_13PL = 0xFFFF; данные MG45_13PL. */
#define MG45_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G44PL >= G45PL) или (G44PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL >= G45PL) || (G44PL == 0)
+/* Задаёт MG45_14PL = ~(1 << 3); данные MG45_14PL. */
#define MG45_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG45_14PL = 0xFFFF; данные MG45_14PL. */
#define MG45_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G46PL >= G45PL) или (G46PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL >= G45PL) || (G46PL == 0)
+/* Задаёт MG45_16PL = ~(1 << 5); данные MG45_16PL. */
#define MG45_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG45_16PL = 0xFFFF; данные MG45_16PL. */
#define MG45_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G47PL >= G45PL) или (G47PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G47PL >= G45PL) || (G47PL == 0)
+/* Задаёт MG45_17PL = ~(1 << 6); данные MG45_17PL. */
#define MG45_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG45_17PL = 0xFFFF; данные MG45_17PL. */
#define MG45_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G48PL >= G45PL) или (G48PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G48PL >= G45PL) || (G48PL == 0)
+/* Задаёт MG45_18PL = ~(1 << 7); данные MG45_18PL. */
#define MG45_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG45_18PL = 0xFFFF; данные MG45_18PL. */
#define MG45_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG45_15PL = 0x00EF; данные MG45_15PL. */
#define MG45_15PL 0x00EF
+/* Задаёт MG45 = (MG45_11PL & MG45_12PL & MG45_13PL & MG45_14PL &; маска разрешённых прерываний внутри группы PIE 45. */
#define MG45 (MG45_11PL & MG45_12PL & MG45_13PL & MG45_14PL & \
- MG45_15PL & MG45_16PL & MG45_17PL & MG45_18PL)
+ MG45_15PL & MG45_16PL & MG45_17PL & MG45_18PL) /* Продолжает список аргументов, полей или выражение MG45_15PL & MG45_16PL & MG45_17PL & MG45_18PL); порядок элементов сохраняется. */
// End of MG45:
// Beginning of MG46:
+/* Условие компиляции (G41PL >= G46PL) или (G41PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL >= G46PL) || (G41PL == 0)
+/* Задаёт MG46_11PL = ~(1); данные MG46_11PL. */
#define MG46_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG46_11PL = 0xFFFF; данные MG46_11PL. */
#define MG46_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G42PL >= G46PL) или (G42PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL >= G46PL) || (G42PL == 0)
+/* Задаёт MG46_12PL = ~(1 << 1); данные MG46_12PL. */
#define MG46_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG46_12PL = 0xFFFF; данные MG46_12PL. */
#define MG46_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G43PL >= G46PL) или (G43PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL >= G46PL) || (G43PL == 0)
+/* Задаёт MG46_13PL = ~(1 << 2); данные MG46_13PL. */
#define MG46_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG46_13PL = 0xFFFF; данные MG46_13PL. */
#define MG46_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G44PL >= G46PL) или (G44PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL >= G46PL) || (G44PL == 0)
+/* Задаёт MG46_14PL = ~(1 << 3); данные MG46_14PL. */
#define MG46_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG46_14PL = 0xFFFF; данные MG46_14PL. */
#define MG46_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G45PL >= G46PL) или (G45PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL >= G46PL) || (G45PL == 0)
+/* Задаёт MG46_15PL = ~(1 << 4); данные MG46_15PL. */
#define MG46_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG46_15PL = 0xFFFF; данные MG46_15PL. */
#define MG46_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G47PL >= G46PL) или (G47PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G47PL >= G46PL) || (G47PL == 0)
+/* Задаёт MG46_17PL = ~(1 << 6); данные MG46_17PL. */
#define MG46_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG46_17PL = 0xFFFF; данные MG46_17PL. */
#define MG46_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G48PL >= G46PL) или (G48PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G48PL >= G46PL) || (G48PL == 0)
+/* Задаёт MG46_18PL = ~(1 << 7); данные MG46_18PL. */
#define MG46_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG46_18PL = 0xFFFF; данные MG46_18PL. */
#define MG46_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG46_16PL = 0x00DF; данные MG46_16PL. */
#define MG46_16PL 0x00DF
+/* Задаёт MG46 = (MG46_11PL & MG46_12PL & MG46_13PL & MG46_14PL &; маска разрешённых прерываний внутри группы PIE 46. */
#define MG46 (MG46_11PL & MG46_12PL & MG46_13PL & MG46_14PL & \
- MG46_15PL & MG46_16PL & MG46_17PL & MG46_18PL)
+ MG46_15PL & MG46_16PL & MG46_17PL & MG46_18PL) /* Продолжает список аргументов, полей или выражение MG46_15PL & MG46_16PL & MG46_17PL & MG46_18PL); порядок элементов сохраняется. */
// End of MG46:
// Beginning of MG47:
+/* Условие компиляции (G41PL >= G47PL) или (G41PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL >= G47PL) || (G41PL == 0)
+/* Задаёт MG47_11PL = ~(1); данные MG47_11PL. */
#define MG47_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG47_11PL = 0xFFFF; данные MG47_11PL. */
#define MG47_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G42PL >= G47PL) или (G42PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL >= G47PL) || (G42PL == 0)
+/* Задаёт MG47_12PL = ~(1 << 1); данные MG47_12PL. */
#define MG47_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG47_12PL = 0xFFFF; данные MG47_12PL. */
#define MG47_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G43PL >= G47PL) или (G43PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL >= G47PL) || (G43PL == 0)
+/* Задаёт MG47_13PL = ~(1 << 2); данные MG47_13PL. */
#define MG47_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG47_13PL = 0xFFFF; данные MG47_13PL. */
#define MG47_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G44PL >= G47PL) или (G44PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL >= G47PL) || (G44PL == 0)
+/* Задаёт MG47_14PL = ~(1 << 3); данные MG47_14PL. */
#define MG47_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG47_14PL = 0xFFFF; данные MG47_14PL. */
#define MG47_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G45PL >= G47PL) или (G45PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL >= G47PL) || (G45PL == 0)
+/* Задаёт MG47_15PL = ~(1 << 4); данные MG47_15PL. */
#define MG47_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG47_15PL = 0xFFFF; данные MG47_15PL. */
#define MG47_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G46PL >= G47PL) или (G46PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL >= G47PL) || (G46PL == 0)
+/* Задаёт MG47_16PL = ~(1 << 5); данные MG47_16PL. */
#define MG47_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG47_16PL = 0xFFFF; данные MG47_16PL. */
#define MG47_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G48PL >= G47PL) или (G48PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G48PL >= G47PL) || (G48PL == 0)
+/* Задаёт MG47_18PL = ~(1 << 7); данные MG47_18PL. */
#define MG47_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG47_18PL = 0xFFFF; данные MG47_18PL. */
#define MG47_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG47_17PL = 0x00BF; данные MG47_17PL. */
#define MG47_17PL 0x00BF
+/* Задаёт MG47 = (MG47_11PL & MG47_12PL & MG47_13PL & MG47_14PL &; маска разрешённых прерываний внутри группы PIE 47. */
#define MG47 (MG47_11PL & MG47_12PL & MG47_13PL & MG47_14PL & \
- MG47_15PL & MG47_16PL & MG47_17PL & MG47_18PL)
+ MG47_15PL & MG47_16PL & MG47_17PL & MG47_18PL) /* Продолжает список аргументов, полей или выражение MG47_15PL & MG47_16PL & MG47_17PL & MG47_18PL); порядок элементов сохраняется. */
// End of MG47:
// Beginning of MG48:
+/* Условие компиляции (G41PL >= G48PL) или (G41PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL >= G48PL) || (G41PL == 0)
+/* Задаёт MG48_11PL = ~(1); данные MG48_11PL. */
#define MG48_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG48_11PL = 0xFFFF; данные MG48_11PL. */
#define MG48_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G42PL >= G48PL) или (G42PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL >= G48PL) || (G42PL == 0)
+/* Задаёт MG48_12PL = ~(1 << 1); данные MG48_12PL. */
#define MG48_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG48_12PL = 0xFFFF; данные MG48_12PL. */
#define MG48_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G43PL >= G48PL) или (G43PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL >= G48PL) || (G43PL == 0)
+/* Задаёт MG48_13PL = ~(1 << 2); данные MG48_13PL. */
#define MG48_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG48_13PL = 0xFFFF; данные MG48_13PL. */
#define MG48_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G44PL >= G48PL) или (G44PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL >= G48PL) || (G44PL == 0)
+/* Задаёт MG48_14PL = ~(1 << 3); данные MG48_14PL. */
#define MG48_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG48_14PL = 0xFFFF; данные MG48_14PL. */
#define MG48_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G45PL >= G48PL) или (G45PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL >= G48PL) || (G45PL == 0)
+/* Задаёт MG48_15PL = ~(1 << 4); данные MG48_15PL. */
#define MG48_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG48_15PL = 0xFFFF; данные MG48_15PL. */
#define MG48_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G46PL >= G48PL) или (G46PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL >= G48PL) || (G46PL == 0)
+/* Задаёт MG48_16PL = ~(1 << 5); данные MG48_16PL. */
#define MG48_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG48_16PL = 0xFFFF; данные MG48_16PL. */
#define MG48_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G47PL >= G48PL) или (G47PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G47PL >= G48PL) || (G47PL == 0)
+/* Задаёт MG48_17PL = ~(1 << 6); данные MG48_17PL. */
#define MG48_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG48_17PL = 0xFFFF; данные MG48_17PL. */
#define MG48_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG48_18PL = 0x007F; данные MG48_18PL. */
#define MG48_18PL 0x007F
+/* Задаёт MG48 = (MG48_11PL & MG48_12PL & MG48_13PL & MG48_14PL &; маска разрешённых прерываний внутри группы PIE 48. */
#define MG48 (MG48_11PL & MG48_12PL & MG48_13PL & MG48_14PL & \
- MG48_15PL & MG48_16PL & MG48_17PL & MG48_18PL)
+ MG48_15PL & MG48_16PL & MG48_17PL & MG48_18PL) /* Продолжает список аргументов, полей или выражение MG48_15PL & MG48_16PL & MG48_17PL & MG48_18PL); порядок элементов сохраняется. */
// End of MG48:
//-------------------------------------------------------------------------------
@@ -3187,331 +5769,627 @@ extern "C" {
//
// Beginning of MG51:
+/* Условие компиляции (G52PL >= G51PL) или (G52PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL >= G51PL) || (G52PL == 0)
+/* Задаёт MG51_12PL = ~(1 << 1); данные MG51_12PL. */
#define MG51_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG51_12PL = 0xFFFF; данные MG51_12PL. */
#define MG51_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G53PL >= G51PL) или (G53PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G53PL >= G51PL) || (G53PL == 0)
+/* Задаёт MG51_13PL = ~(1 << 2); данные MG51_13PL. */
#define MG51_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG51_13PL = 0xFFFF; данные MG51_13PL. */
#define MG51_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G54PL >= G51PL) или (G54PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G54PL >= G51PL) || (G54PL == 0)
+/* Задаёт MG51_14PL = ~(1 << 3); данные MG51_14PL. */
#define MG51_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG51_14PL = 0xFFFF; данные MG51_14PL. */
#define MG51_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G55PL >= G51PL) или (G55PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G55PL >= G51PL) || (G55PL == 0)
+/* Задаёт MG51_15PL = ~(1 << 4); данные MG51_15PL. */
#define MG51_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG51_15PL = 0xFFFF; данные MG51_15PL. */
#define MG51_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G56PL >= G51PL) или (G56PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G56PL >= G51PL) || (G56PL == 0)
+/* Задаёт MG51_16PL = ~(1 << 5); данные MG51_16PL. */
#define MG51_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG51_16PL = 0xFFFF; данные MG51_16PL. */
#define MG51_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G57PL >= G51PL) или (G57PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G57PL >= G51PL) || (G57PL == 0)
+/* Задаёт MG51_17PL = ~(1 << 6); данные MG51_17PL. */
#define MG51_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG51_17PL = 0xFFFF; данные MG51_17PL. */
#define MG51_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G58PL >= G51PL) или (G58PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G58PL >= G51PL) || (G58PL == 0)
+/* Задаёт MG51_18PL = ~(1 << 7); данные MG51_18PL. */
#define MG51_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG51_18PL = 0xFFFF; данные MG51_18PL. */
#define MG51_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG51_11PL = 0x00FE; данные MG51_11PL. */
#define MG51_11PL 0x00FE
+/* Задаёт MG51 = (MG51_11PL & MG51_12PL & MG51_13PL & MG51_14PL &; маска разрешённых прерываний внутри группы PIE 51. */
#define MG51 (MG51_11PL & MG51_12PL & MG51_13PL & MG51_14PL & \
- MG51_15PL & MG51_16PL & MG51_17PL & MG51_18PL)
+ MG51_15PL & MG51_16PL & MG51_17PL & MG51_18PL) /* Продолжает список аргументов, полей или выражение MG51_15PL & MG51_16PL & MG51_17PL & MG51_18PL); порядок элементов сохраняется. */
// End of MG51:
// Beginning of MG52:
+/* Условие компиляции (G51PL >= G52PL) или (G51PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL >= G52PL) || (G51PL == 0)
+/* Задаёт MG52_11PL = ~(1); данные MG52_11PL. */
#define MG52_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG52_11PL = 0xFFFF; данные MG52_11PL. */
#define MG52_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G53PL >= G52PL) или (G53PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G53PL >= G52PL) || (G53PL == 0)
+/* Задаёт MG52_13PL = ~(1 << 2); данные MG52_13PL. */
#define MG52_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG52_13PL = 0xFFFF; данные MG52_13PL. */
#define MG52_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G54PL >= G52PL) или (G54PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G54PL >= G52PL) || (G54PL == 0)
+/* Задаёт MG52_14PL = ~(1 << 3); данные MG52_14PL. */
#define MG52_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG52_14PL = 0xFFFF; данные MG52_14PL. */
#define MG52_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G55PL >= G52PL) или (G55PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G55PL >= G52PL) || (G55PL == 0)
+/* Задаёт MG52_15PL = ~(1 << 4); данные MG52_15PL. */
#define MG52_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG52_15PL = 0xFFFF; данные MG52_15PL. */
#define MG52_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G56PL >= G52PL) или (G56PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G56PL >= G52PL) || (G56PL == 0)
+/* Задаёт MG52_16PL = ~(1 << 5); данные MG52_16PL. */
#define MG52_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG52_16PL = 0xFFFF; данные MG52_16PL. */
#define MG52_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G57PL >= G52PL) или (G57PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G57PL >= G52PL) || (G57PL == 0)
+/* Задаёт MG52_17PL = ~(1 << 6); данные MG52_17PL. */
#define MG52_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG52_17PL = 0xFFFF; данные MG52_17PL. */
#define MG52_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G58PL >= G52PL) или (G58PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G58PL >= G52PL) || (G58PL == 0)
+/* Задаёт MG52_18PL = ~(1 << 7); данные MG52_18PL. */
#define MG52_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG52_18PL = 0xFFFF; данные MG52_18PL. */
#define MG52_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG52_12PL = 0x00FD; данные MG52_12PL. */
#define MG52_12PL 0x00FD
+/* Задаёт MG52 = (MG52_11PL & MG52_12PL & MG52_13PL & MG52_14PL &; маска разрешённых прерываний внутри группы PIE 52. */
#define MG52 (MG52_11PL & MG52_12PL & MG52_13PL & MG52_14PL & \
- MG52_15PL & MG52_16PL & MG52_17PL & MG52_18PL)
+ MG52_15PL & MG52_16PL & MG52_17PL & MG52_18PL) /* Продолжает список аргументов, полей или выражение MG52_15PL & MG52_16PL & MG52_17PL & MG52_18PL); порядок элементов сохраняется. */
// End of MG52:
// Beginning of MG53:
+/* Условие компиляции (G51PL >= G53PL) или (G51PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL >= G53PL) || (G51PL == 0)
+/* Задаёт MG53_11PL = ~(1); данные MG53_11PL. */
#define MG53_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG53_11PL = 0xFFFF; данные MG53_11PL. */
#define MG53_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G52PL >= G53PL) или (G52PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL >= G53PL) || (G52PL == 0)
+/* Задаёт MG53_12PL = ~(1 << 1); данные MG53_12PL. */
#define MG53_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG53_12PL = 0xFFFF; данные MG53_12PL. */
#define MG53_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G54PL >= G53PL) или (G54PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G54PL >= G53PL) || (G54PL == 0)
+/* Задаёт MG53_14PL = ~(1 << 3); данные MG53_14PL. */
#define MG53_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG53_14PL = 0xFFFF; данные MG53_14PL. */
#define MG53_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G55PL >= G53PL) или (G55PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G55PL >= G53PL) || (G55PL == 0)
+/* Задаёт MG53_15PL = ~(1 << 4); данные MG53_15PL. */
#define MG53_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG53_15PL = 0xFFFF; данные MG53_15PL. */
#define MG53_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G56PL >= G53PL) или (G56PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G56PL >= G53PL) || (G56PL == 0)
+/* Задаёт MG53_16PL = ~(1 << 5); данные MG53_16PL. */
#define MG53_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG53_16PL = 0xFFFF; данные MG53_16PL. */
#define MG53_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G57PL >= G53PL) или (G57PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G57PL >= G53PL) || (G57PL == 0)
+/* Задаёт MG53_17PL = ~(1 << 6); данные MG53_17PL. */
#define MG53_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG53_17PL = 0xFFFF; данные MG53_17PL. */
#define MG53_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G58PL >= G53PL) или (G58PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G58PL >= G53PL) || (G58PL == 0)
+/* Задаёт MG53_18PL = ~(1 << 7); данные MG53_18PL. */
#define MG53_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG53_18PL = 0xFFFF; данные MG53_18PL. */
#define MG53_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG53_13PL = 0x00FB; данные MG53_13PL. */
#define MG53_13PL 0x00FB
+/* Задаёт MG53 = (MG53_11PL & MG53_12PL & MG53_13PL & MG53_14PL &; маска разрешённых прерываний внутри группы PIE 53. */
#define MG53 (MG53_11PL & MG53_12PL & MG53_13PL & MG53_14PL & \
- MG53_15PL & MG53_16PL & MG53_17PL & MG53_18PL)
+ MG53_15PL & MG53_16PL & MG53_17PL & MG53_18PL) /* Продолжает список аргументов, полей или выражение MG53_15PL & MG53_16PL & MG53_17PL & MG53_18PL); порядок элементов сохраняется. */
// End of MG53:
// Beginning of MG54:
+/* Условие компиляции (G51PL >= G54PL) или (G51PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL >= G54PL) || (G51PL == 0)
+/* Задаёт MG54_11PL = ~(1); данные MG54_11PL. */
#define MG54_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG54_11PL = 0xFFFF; данные MG54_11PL. */
#define MG54_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G52PL >= G54PL) или (G52PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL >= G54PL) || (G52PL == 0)
+/* Задаёт MG54_12PL = ~(1 << 1); данные MG54_12PL. */
#define MG54_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG54_12PL = 0xFFFF; данные MG54_12PL. */
#define MG54_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G53PL >= G54PL) или (G53PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G53PL >= G54PL) || (G53PL == 0)
+/* Задаёт MG54_13PL = ~(1 << 2); данные MG54_13PL. */
#define MG54_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG54_13PL = 0xFFFF; данные MG54_13PL. */
#define MG54_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G55PL >= G54PL) или (G55PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G55PL >= G54PL) || (G55PL == 0)
+/* Задаёт MG54_15PL = ~(1 << 4); данные MG54_15PL. */
#define MG54_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG54_15PL = 0xFFFF; данные MG54_15PL. */
#define MG54_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G56PL >= G54PL) или (G56PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G56PL >= G54PL) || (G56PL == 0)
+/* Задаёт MG54_16PL = ~(1 << 5); данные MG54_16PL. */
#define MG54_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG54_16PL = 0xFFFF; данные MG54_16PL. */
#define MG54_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G57PL >= G54PL) или (G57PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G57PL >= G54PL) || (G57PL == 0)
+/* Задаёт MG54_17PL = ~(1 << 6); данные MG54_17PL. */
#define MG54_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG54_17PL = 0xFFFF; данные MG54_17PL. */
#define MG54_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G58PL >= G54PL) или (G58PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G58PL >= G54PL) || (G58PL == 0)
+/* Задаёт MG54_18PL = ~(1 << 7); данные MG54_18PL. */
#define MG54_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG54_18PL = 0xFFFF; данные MG54_18PL. */
#define MG54_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG54_14PL = 0x00F7; данные MG54_14PL. */
#define MG54_14PL 0x00F7
+/* Задаёт MG54 = (MG54_11PL & MG54_12PL & MG54_13PL & MG54_14PL &; маска разрешённых прерываний внутри группы PIE 54. */
#define MG54 (MG54_11PL & MG54_12PL & MG54_13PL & MG54_14PL & \
- MG54_15PL & MG54_16PL & MG54_17PL & MG54_18PL)
+ MG54_15PL & MG54_16PL & MG54_17PL & MG54_18PL) /* Продолжает список аргументов, полей или выражение MG54_15PL & MG54_16PL & MG54_17PL & MG54_18PL); порядок элементов сохраняется. */
// End of MG54:
// Beginning of MG55:
+/* Условие компиляции (G51PL >= G55PL) или (G51PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL >= G55PL) || (G51PL == 0)
+/* Задаёт MG55_11PL = ~(1); данные MG55_11PL. */
#define MG55_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG55_11PL = 0xFFFF; данные MG55_11PL. */
#define MG55_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G52PL >= G55PL) или (G52PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL >= G55PL) || (G52PL == 0)
+/* Задаёт MG55_12PL = ~(1 << 1); данные MG55_12PL. */
#define MG55_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG55_12PL = 0xFFFF; данные MG55_12PL. */
#define MG55_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G53PL >= G55PL) или (G53PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G53PL >= G55PL) || (G53PL == 0)
+/* Задаёт MG55_13PL = ~(1 << 2); данные MG55_13PL. */
#define MG55_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG55_13PL = 0xFFFF; данные MG55_13PL. */
#define MG55_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G54PL >= G55PL) или (G54PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G54PL >= G55PL) || (G54PL == 0)
+/* Задаёт MG55_14PL = ~(1 << 3); данные MG55_14PL. */
#define MG55_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG55_14PL = 0xFFFF; данные MG55_14PL. */
#define MG55_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G56PL >= G55PL) или (G56PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G56PL >= G55PL) || (G56PL == 0)
+/* Задаёт MG55_16PL = ~(1 << 5); данные MG55_16PL. */
#define MG55_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG55_16PL = 0xFFFF; данные MG55_16PL. */
#define MG55_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G57PL >= G55PL) или (G57PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G57PL >= G55PL) || (G57PL == 0)
+/* Задаёт MG55_17PL = ~(1 << 6); данные MG55_17PL. */
#define MG55_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG55_17PL = 0xFFFF; данные MG55_17PL. */
#define MG55_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G58PL >= G55PL) или (G58PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G58PL >= G55PL) || (G58PL == 0)
+/* Задаёт MG55_18PL = ~(1 << 7); данные MG55_18PL. */
#define MG55_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG55_18PL = 0xFFFF; данные MG55_18PL. */
#define MG55_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG55_15PL = 0x00EF; данные MG55_15PL. */
#define MG55_15PL 0x00EF
+/* Задаёт MG55 = (MG55_11PL & MG55_12PL & MG55_13PL & MG55_14PL &; маска разрешённых прерываний внутри группы PIE 55. */
#define MG55 (MG55_11PL & MG55_12PL & MG55_13PL & MG55_14PL & \
- MG55_15PL & MG55_16PL & MG55_17PL & MG55_18PL)
+ MG55_15PL & MG55_16PL & MG55_17PL & MG55_18PL) /* Продолжает список аргументов, полей или выражение MG55_15PL & MG55_16PL & MG55_17PL & MG55_18PL); порядок элементов сохраняется. */
// End of MG55:
// Beginning of MG56:
+/* Условие компиляции (G51PL >= G56PL) или (G51PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL >= G56PL) || (G51PL == 0)
+/* Задаёт MG56_11PL = ~(1); данные MG56_11PL. */
#define MG56_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG56_11PL = 0xFFFF; данные MG56_11PL. */
#define MG56_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G52PL >= G56PL) или (G52PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL >= G56PL) || (G52PL == 0)
+/* Задаёт MG56_12PL = ~(1 << 1); данные MG56_12PL. */
#define MG56_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG56_12PL = 0xFFFF; данные MG56_12PL. */
#define MG56_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G53PL >= G56PL) или (G53PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G53PL >= G56PL) || (G53PL == 0)
+/* Задаёт MG56_13PL = ~(1 << 2); данные MG56_13PL. */
#define MG56_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG56_13PL = 0xFFFF; данные MG56_13PL. */
#define MG56_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G54PL >= G56PL) или (G54PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G54PL >= G56PL) || (G54PL == 0)
+/* Задаёт MG56_14PL = ~(1 << 3); данные MG56_14PL. */
#define MG56_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG56_14PL = 0xFFFF; данные MG56_14PL. */
#define MG56_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G55PL >= G56PL) или (G55PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G55PL >= G56PL) || (G55PL == 0)
+/* Задаёт MG56_15PL = ~(1 << 4); данные MG56_15PL. */
#define MG56_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG56_15PL = 0xFFFF; данные MG56_15PL. */
#define MG56_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G57PL >= G56PL) или (G57PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G57PL >= G56PL) || (G57PL == 0)
+/* Задаёт MG56_17PL = ~(1 << 6); данные MG56_17PL. */
#define MG56_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG56_17PL = 0xFFFF; данные MG56_17PL. */
#define MG56_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G58PL >= G56PL) или (G58PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G58PL >= G56PL) || (G58PL == 0)
+/* Задаёт MG56_18PL = ~(1 << 7); данные MG56_18PL. */
#define MG56_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG56_18PL = 0xFFFF; данные MG56_18PL. */
#define MG56_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG56_16PL = 0x00DF; данные MG56_16PL. */
#define MG56_16PL 0x00DF
+/* Задаёт MG56 = (MG56_11PL & MG56_12PL & MG56_13PL & MG56_14PL &; маска разрешённых прерываний внутри группы PIE 56. */
#define MG56 (MG56_11PL & MG56_12PL & MG56_13PL & MG56_14PL & \
- MG56_15PL & MG56_16PL & MG56_17PL & MG56_18PL)
+ MG56_15PL & MG56_16PL & MG56_17PL & MG56_18PL) /* Продолжает список аргументов, полей или выражение MG56_15PL & MG56_16PL & MG56_17PL & MG56_18PL); порядок элементов сохраняется. */
// End of MG56:
// Beginning of MG57:
+/* Условие компиляции (G51PL >= G57PL) или (G51PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL >= G57PL) || (G51PL == 0)
+/* Задаёт MG57_11PL = ~(1); данные MG57_11PL. */
#define MG57_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG57_11PL = 0xFFFF; данные MG57_11PL. */
#define MG57_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G52PL >= G57PL) или (G52PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL >= G57PL) || (G52PL == 0)
+/* Задаёт MG57_12PL = ~(1 << 1); данные MG57_12PL. */
#define MG57_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG57_12PL = 0xFFFF; данные MG57_12PL. */
#define MG57_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G53PL >= G57PL) или (G53PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G53PL >= G57PL) || (G53PL == 0)
+/* Задаёт MG57_13PL = ~(1 << 2); данные MG57_13PL. */
#define MG57_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG57_13PL = 0xFFFF; данные MG57_13PL. */
#define MG57_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G54PL >= G57PL) или (G54PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G54PL >= G57PL) || (G54PL == 0)
+/* Задаёт MG57_14PL = ~(1 << 3); данные MG57_14PL. */
#define MG57_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG57_14PL = 0xFFFF; данные MG57_14PL. */
#define MG57_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G55PL >= G57PL) или (G55PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G55PL >= G57PL) || (G55PL == 0)
+/* Задаёт MG57_15PL = ~(1 << 4); данные MG57_15PL. */
#define MG57_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG57_15PL = 0xFFFF; данные MG57_15PL. */
#define MG57_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G56PL >= G57PL) или (G56PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G56PL >= G57PL) || (G56PL == 0)
+/* Задаёт MG57_16PL = ~(1 << 5); данные MG57_16PL. */
#define MG57_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG57_16PL = 0xFFFF; данные MG57_16PL. */
#define MG57_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G58PL >= G57PL) или (G58PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G58PL >= G57PL) || (G58PL == 0)
+/* Задаёт MG57_18PL = ~(1 << 7); данные MG57_18PL. */
#define MG57_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG57_18PL = 0xFFFF; данные MG57_18PL. */
#define MG57_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG57_17PL = 0x00BF; данные MG57_17PL. */
#define MG57_17PL 0x00BF
+/* Задаёт MG57 = (MG57_11PL & MG57_12PL & MG57_13PL & MG57_14PL &; маска разрешённых прерываний внутри группы PIE 57. */
#define MG57 (MG57_11PL & MG57_12PL & MG57_13PL & MG57_14PL & \
- MG57_15PL & MG57_16PL & MG57_17PL & MG57_18PL)
+ MG57_15PL & MG57_16PL & MG57_17PL & MG57_18PL) /* Продолжает список аргументов, полей или выражение MG57_15PL & MG57_16PL & MG57_17PL & MG57_18PL); порядок элементов сохраняется. */
// End of MG57:
// Beginning of MG58:
+/* Условие компиляции (G51PL >= G58PL) или (G51PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL >= G58PL) || (G51PL == 0)
+/* Задаёт MG58_11PL = ~(1); данные MG58_11PL. */
#define MG58_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG58_11PL = 0xFFFF; данные MG58_11PL. */
#define MG58_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G52PL >= G58PL) или (G52PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL >= G58PL) || (G52PL == 0)
+/* Задаёт MG58_12PL = ~(1 << 1); данные MG58_12PL. */
#define MG58_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG58_12PL = 0xFFFF; данные MG58_12PL. */
#define MG58_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G53PL >= G58PL) или (G53PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G53PL >= G58PL) || (G53PL == 0)
+/* Задаёт MG58_13PL = ~(1 << 2); данные MG58_13PL. */
#define MG58_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG58_13PL = 0xFFFF; данные MG58_13PL. */
#define MG58_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G54PL >= G58PL) или (G54PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G54PL >= G58PL) || (G54PL == 0)
+/* Задаёт MG58_14PL = ~(1 << 3); данные MG58_14PL. */
#define MG58_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG58_14PL = 0xFFFF; данные MG58_14PL. */
#define MG58_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G55PL >= G58PL) или (G55PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G55PL >= G58PL) || (G55PL == 0)
+/* Задаёт MG58_15PL = ~(1 << 4); данные MG58_15PL. */
#define MG58_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG58_15PL = 0xFFFF; данные MG58_15PL. */
#define MG58_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G56PL >= G58PL) или (G56PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G56PL >= G58PL) || (G56PL == 0)
+/* Задаёт MG58_16PL = ~(1 << 5); данные MG58_16PL. */
#define MG58_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG58_16PL = 0xFFFF; данные MG58_16PL. */
#define MG58_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G57PL >= G58PL) или (G57PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G57PL >= G58PL) || (G57PL == 0)
+/* Задаёт MG58_17PL = ~(1 << 6); данные MG58_17PL. */
#define MG58_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG58_17PL = 0xFFFF; данные MG58_17PL. */
#define MG58_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG58_18PL = 0x007F; данные MG58_18PL. */
#define MG58_18PL 0x007F
+/* Задаёт MG58 = (MG58_11PL & MG58_12PL & MG58_13PL & MG58_14PL &; маска разрешённых прерываний внутри группы PIE 58. */
#define MG58 (MG58_11PL & MG58_12PL & MG58_13PL & MG58_14PL & \
- MG58_15PL & MG58_16PL & MG58_17PL & MG58_18PL)
+ MG58_15PL & MG58_16PL & MG58_17PL & MG58_18PL) /* Продолжает список аргументов, полей или выражение MG58_15PL & MG58_16PL & MG58_17PL & MG58_18PL); порядок элементов сохраняется. */
// End of MG58:
//-------------------------------------------------------------------------------
@@ -3519,331 +6397,627 @@ extern "C" {
//
// Beginning of MG61:
+/* Условие компиляции (G62PL >= G61PL) или (G62PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL >= G61PL) || (G62PL == 0)
+/* Задаёт MG61_12PL = ~(1 << 1); данные MG61_12PL. */
#define MG61_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG61_12PL = 0xFFFF; данные MG61_12PL. */
#define MG61_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G63PL >= G61PL) или (G63PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL >= G61PL) || (G63PL == 0)
+/* Задаёт MG61_13PL = ~(1 << 2); данные MG61_13PL. */
#define MG61_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG61_13PL = 0xFFFF; данные MG61_13PL. */
#define MG61_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G64PL >= G61PL) или (G64PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL >= G61PL) || (G64PL == 0)
+/* Задаёт MG61_14PL = ~(1 << 3); данные MG61_14PL. */
#define MG61_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG61_14PL = 0xFFFF; данные MG61_14PL. */
#define MG61_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G65PL >= G61PL) или (G65PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL >= G61PL) || (G65PL == 0)
+/* Задаёт MG61_15PL = ~(1 << 4); данные MG61_15PL. */
#define MG61_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG61_15PL = 0xFFFF; данные MG61_15PL. */
#define MG61_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G66PL >= G61PL) или (G66PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL >= G61PL) || (G66PL == 0)
+/* Задаёт MG61_16PL = ~(1 << 5); данные MG61_16PL. */
#define MG61_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG61_16PL = 0xFFFF; данные MG61_16PL. */
#define MG61_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G67PL >= G61PL) или (G67PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G67PL >= G61PL) || (G67PL == 0)
+/* Задаёт MG61_17PL = ~(1 << 6); данные MG61_17PL. */
#define MG61_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG61_17PL = 0xFFFF; данные MG61_17PL. */
#define MG61_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G68PL >= G61PL) или (G68PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G68PL >= G61PL) || (G68PL == 0)
+/* Задаёт MG61_18PL = ~(1 << 7); данные MG61_18PL. */
#define MG61_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG61_18PL = 0xFFFF; данные MG61_18PL. */
#define MG61_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG61_11PL = 0x00FE; данные MG61_11PL. */
#define MG61_11PL 0x00FE
+/* Задаёт MG61 = (MG61_11PL & MG61_12PL & MG61_13PL & MG61_14PL &; маска разрешённых прерываний внутри группы PIE 61. */
#define MG61 (MG61_11PL & MG61_12PL & MG61_13PL & MG61_14PL & \
- MG61_15PL & MG61_16PL & MG61_17PL & MG61_18PL)
+ MG61_15PL & MG61_16PL & MG61_17PL & MG61_18PL) /* Продолжает список аргументов, полей или выражение MG61_15PL & MG61_16PL & MG61_17PL & MG61_18PL); порядок элементов сохраняется. */
// End of MG61:
// Beginning of MG62:
+/* Условие компиляции (G61PL >= G62PL) или (G61PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL >= G62PL) || (G61PL == 0)
+/* Задаёт MG62_11PL = ~(1); данные MG62_11PL. */
#define MG62_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG62_11PL = 0xFFFF; данные MG62_11PL. */
#define MG62_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G63PL >= G62PL) или (G63PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL >= G62PL) || (G63PL == 0)
+/* Задаёт MG62_13PL = ~(1 << 2); данные MG62_13PL. */
#define MG62_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG62_13PL = 0xFFFF; данные MG62_13PL. */
#define MG62_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G64PL >= G62PL) или (G64PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL >= G62PL) || (G64PL == 0)
+/* Задаёт MG62_14PL = ~(1 << 3); данные MG62_14PL. */
#define MG62_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG62_14PL = 0xFFFF; данные MG62_14PL. */
#define MG62_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G65PL >= G62PL) или (G65PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL >= G62PL) || (G65PL == 0)
+/* Задаёт MG62_15PL = ~(1 << 4); данные MG62_15PL. */
#define MG62_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG62_15PL = 0xFFFF; данные MG62_15PL. */
#define MG62_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G66PL >= G62PL) или (G66PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL >= G62PL) || (G66PL == 0)
+/* Задаёт MG62_16PL = ~(1 << 5); данные MG62_16PL. */
#define MG62_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG62_16PL = 0xFFFF; данные MG62_16PL. */
#define MG62_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G67PL >= G62PL) или (G67PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G67PL >= G62PL) || (G67PL == 0)
+/* Задаёт MG62_17PL = ~(1 << 6); данные MG62_17PL. */
#define MG62_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG62_17PL = 0xFFFF; данные MG62_17PL. */
#define MG62_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G68PL >= G62PL) или (G68PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G68PL >= G62PL) || (G68PL == 0)
+/* Задаёт MG62_18PL = ~(1 << 7); данные MG62_18PL. */
#define MG62_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG62_18PL = 0xFFFF; данные MG62_18PL. */
#define MG62_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG62_12PL = 0x00FD; данные MG62_12PL. */
#define MG62_12PL 0x00FD
+/* Задаёт MG62 = (MG62_11PL & MG62_12PL & MG62_13PL & MG62_14PL &; маска разрешённых прерываний внутри группы PIE 62. */
#define MG62 (MG62_11PL & MG62_12PL & MG62_13PL & MG62_14PL & \
- MG62_15PL & MG62_16PL & MG62_17PL & MG62_18PL)
+ MG62_15PL & MG62_16PL & MG62_17PL & MG62_18PL) /* Продолжает список аргументов, полей или выражение MG62_15PL & MG62_16PL & MG62_17PL & MG62_18PL); порядок элементов сохраняется. */
// End of MG62:
// Beginning of MG63:
+/* Условие компиляции (G61PL >= G63PL) или (G61PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL >= G63PL) || (G61PL == 0)
+/* Задаёт MG63_11PL = ~(1); данные MG63_11PL. */
#define MG63_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG63_11PL = 0xFFFF; данные MG63_11PL. */
#define MG63_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G62PL >= G63PL) или (G62PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL >= G63PL) || (G62PL == 0)
+/* Задаёт MG63_12PL = ~(1 << 1); данные MG63_12PL. */
#define MG63_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG63_12PL = 0xFFFF; данные MG63_12PL. */
#define MG63_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G64PL >= G63PL) или (G64PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL >= G63PL) || (G64PL == 0)
+/* Задаёт MG63_14PL = ~(1 << 3); данные MG63_14PL. */
#define MG63_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG63_14PL = 0xFFFF; данные MG63_14PL. */
#define MG63_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G65PL >= G63PL) или (G65PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL >= G63PL) || (G65PL == 0)
+/* Задаёт MG63_15PL = ~(1 << 4); данные MG63_15PL. */
#define MG63_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG63_15PL = 0xFFFF; данные MG63_15PL. */
#define MG63_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G66PL >= G63PL) или (G66PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL >= G63PL) || (G66PL == 0)
+/* Задаёт MG63_16PL = ~(1 << 5); данные MG63_16PL. */
#define MG63_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG63_16PL = 0xFFFF; данные MG63_16PL. */
#define MG63_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G67PL >= G63PL) или (G67PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G67PL >= G63PL) || (G67PL == 0)
+/* Задаёт MG63_17PL = ~(1 << 6); данные MG63_17PL. */
#define MG63_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG63_17PL = 0xFFFF; данные MG63_17PL. */
#define MG63_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G68PL >= G63PL) или (G68PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G68PL >= G63PL) || (G68PL == 0)
+/* Задаёт MG63_18PL = ~(1 << 7); данные MG63_18PL. */
#define MG63_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG63_18PL = 0xFFFF; данные MG63_18PL. */
#define MG63_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG63_13PL = 0x00FB; данные MG63_13PL. */
#define MG63_13PL 0x00FB
+/* Задаёт MG63 = (MG63_11PL & MG63_12PL & MG63_13PL & MG63_14PL &; маска разрешённых прерываний внутри группы PIE 63. */
#define MG63 (MG63_11PL & MG63_12PL & MG63_13PL & MG63_14PL & \
- MG63_15PL & MG63_16PL & MG63_17PL & MG63_18PL)
+ MG63_15PL & MG63_16PL & MG63_17PL & MG63_18PL) /* Продолжает список аргументов, полей или выражение MG63_15PL & MG63_16PL & MG63_17PL & MG63_18PL); порядок элементов сохраняется. */
// End of MG63:
// Beginning of MG64:
+/* Условие компиляции (G61PL >= G64PL) или (G61PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL >= G64PL) || (G61PL == 0)
+/* Задаёт MG64_11PL = ~(1); данные MG64_11PL. */
#define MG64_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG64_11PL = 0xFFFF; данные MG64_11PL. */
#define MG64_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G62PL >= G64PL) или (G62PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL >= G64PL) || (G62PL == 0)
+/* Задаёт MG64_12PL = ~(1 << 1); данные MG64_12PL. */
#define MG64_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG64_12PL = 0xFFFF; данные MG64_12PL. */
#define MG64_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G63PL >= G64PL) или (G63PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL >= G64PL) || (G63PL == 0)
+/* Задаёт MG64_13PL = ~(1 << 2); данные MG64_13PL. */
#define MG64_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG64_13PL = 0xFFFF; данные MG64_13PL. */
#define MG64_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G65PL >= G64PL) или (G65PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL >= G64PL) || (G65PL == 0)
+/* Задаёт MG64_15PL = ~(1 << 4); данные MG64_15PL. */
#define MG64_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG64_15PL = 0xFFFF; данные MG64_15PL. */
#define MG64_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G66PL >= G64PL) или (G66PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL >= G64PL) || (G66PL == 0)
+/* Задаёт MG64_16PL = ~(1 << 5); данные MG64_16PL. */
#define MG64_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG64_16PL = 0xFFFF; данные MG64_16PL. */
#define MG64_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G67PL >= G64PL) или (G67PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G67PL >= G64PL) || (G67PL == 0)
+/* Задаёт MG64_17PL = ~(1 << 6); данные MG64_17PL. */
#define MG64_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG64_17PL = 0xFFFF; данные MG64_17PL. */
#define MG64_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G68PL >= G64PL) или (G68PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G68PL >= G64PL) || (G68PL == 0)
+/* Задаёт MG64_18PL = ~(1 << 7); данные MG64_18PL. */
#define MG64_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG64_18PL = 0xFFFF; данные MG64_18PL. */
#define MG64_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG64_14PL = 0x00F7; данные MG64_14PL. */
#define MG64_14PL 0x00F7
+/* Задаёт MG64 = (MG64_11PL & MG64_12PL & MG64_13PL & MG64_14PL &; маска разрешённых прерываний внутри группы PIE 64. */
#define MG64 (MG64_11PL & MG64_12PL & MG64_13PL & MG64_14PL & \
- MG64_15PL & MG64_16PL & MG64_17PL & MG64_18PL)
+ MG64_15PL & MG64_16PL & MG64_17PL & MG64_18PL) /* Продолжает список аргументов, полей или выражение MG64_15PL & MG64_16PL & MG64_17PL & MG64_18PL); порядок элементов сохраняется. */
// End of MG64:
// Beginning of MG65:
+/* Условие компиляции (G61PL >= G65PL) или (G61PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL >= G65PL) || (G61PL == 0)
+/* Задаёт MG65_11PL = ~(1); данные MG65_11PL. */
#define MG65_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG65_11PL = 0xFFFF; данные MG65_11PL. */
#define MG65_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G62PL >= G65PL) или (G62PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL >= G65PL) || (G62PL == 0)
+/* Задаёт MG65_12PL = ~(1 << 1); данные MG65_12PL. */
#define MG65_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG65_12PL = 0xFFFF; данные MG65_12PL. */
#define MG65_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G63PL >= G65PL) или (G63PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL >= G65PL) || (G63PL == 0)
+/* Задаёт MG65_13PL = ~(1 << 2); данные MG65_13PL. */
#define MG65_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG65_13PL = 0xFFFF; данные MG65_13PL. */
#define MG65_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G64PL >= G65PL) или (G64PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL >= G65PL) || (G64PL == 0)
+/* Задаёт MG65_14PL = ~(1 << 3); данные MG65_14PL. */
#define MG65_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG65_14PL = 0xFFFF; данные MG65_14PL. */
#define MG65_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G66PL >= G65PL) или (G66PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL >= G65PL) || (G66PL == 0)
+/* Задаёт MG65_16PL = ~(1 << 5); данные MG65_16PL. */
#define MG65_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG65_16PL = 0xFFFF; данные MG65_16PL. */
#define MG65_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G67PL >= G65PL) или (G67PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G67PL >= G65PL) || (G67PL == 0)
+/* Задаёт MG65_17PL = ~(1 << 6); данные MG65_17PL. */
#define MG65_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG65_17PL = 0xFFFF; данные MG65_17PL. */
#define MG65_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G68PL >= G65PL) или (G68PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G68PL >= G65PL) || (G68PL == 0)
+/* Задаёт MG65_18PL = ~(1 << 7); данные MG65_18PL. */
#define MG65_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG65_18PL = 0xFFFF; данные MG65_18PL. */
#define MG65_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG65_15PL = 0x00EF; данные MG65_15PL. */
#define MG65_15PL 0x00EF
+/* Задаёт MG65 = (MG65_11PL & MG65_12PL & MG65_13PL & MG65_14PL &; маска разрешённых прерываний внутри группы PIE 65. */
#define MG65 (MG65_11PL & MG65_12PL & MG65_13PL & MG65_14PL & \
- MG65_15PL & MG65_16PL & MG65_17PL & MG65_18PL)
+ MG65_15PL & MG65_16PL & MG65_17PL & MG65_18PL) /* Продолжает список аргументов, полей или выражение MG65_15PL & MG65_16PL & MG65_17PL & MG65_18PL); порядок элементов сохраняется. */
// End of MG65:
// Beginning of MG66:
+/* Условие компиляции (G61PL >= G66PL) или (G61PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL >= G66PL) || (G61PL == 0)
+/* Задаёт MG66_11PL = ~(1); данные MG66_11PL. */
#define MG66_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG66_11PL = 0xFFFF; данные MG66_11PL. */
#define MG66_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G62PL >= G66PL) или (G62PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL >= G66PL) || (G62PL == 0)
+/* Задаёт MG66_12PL = ~(1 << 1); данные MG66_12PL. */
#define MG66_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG66_12PL = 0xFFFF; данные MG66_12PL. */
#define MG66_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G63PL >= G66PL) или (G63PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL >= G66PL) || (G63PL == 0)
+/* Задаёт MG66_13PL = ~(1 << 2); данные MG66_13PL. */
#define MG66_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG66_13PL = 0xFFFF; данные MG66_13PL. */
#define MG66_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G64PL >= G66PL) или (G64PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL >= G66PL) || (G64PL == 0)
+/* Задаёт MG66_14PL = ~(1 << 3); данные MG66_14PL. */
#define MG66_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG66_14PL = 0xFFFF; данные MG66_14PL. */
#define MG66_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G65PL >= G66PL) или (G65PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL >= G66PL) || (G65PL == 0)
+/* Задаёт MG66_15PL = ~(1 << 4); данные MG66_15PL. */
#define MG66_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG66_15PL = 0xFFFF; данные MG66_15PL. */
#define MG66_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G67PL >= G66PL) или (G67PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G67PL >= G66PL) || (G67PL == 0)
+/* Задаёт MG66_17PL = ~(1 << 6); данные MG66_17PL. */
#define MG66_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG66_17PL = 0xFFFF; данные MG66_17PL. */
#define MG66_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G68PL >= G66PL) или (G68PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G68PL >= G66PL) || (G68PL == 0)
+/* Задаёт MG66_18PL = ~(1 << 7); данные MG66_18PL. */
#define MG66_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG66_18PL = 0xFFFF; данные MG66_18PL. */
#define MG66_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG66_16PL = 0x00DF; данные MG66_16PL. */
#define MG66_16PL 0x00DF
+/* Задаёт MG66 = (MG66_11PL & MG66_12PL & MG66_13PL & MG66_14PL &; маска разрешённых прерываний внутри группы PIE 66. */
#define MG66 (MG66_11PL & MG66_12PL & MG66_13PL & MG66_14PL & \
- MG66_15PL & MG66_16PL & MG66_17PL & MG66_18PL)
+ MG66_15PL & MG66_16PL & MG66_17PL & MG66_18PL) /* Продолжает список аргументов, полей или выражение MG66_15PL & MG66_16PL & MG66_17PL & MG66_18PL); порядок элементов сохраняется. */
// End of MG66:
// Beginning of MG67:
+/* Условие компиляции (G61PL >= G67PL) или (G61PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL >= G67PL) || (G61PL == 0)
+/* Задаёт MG67_11PL = ~(1); данные MG67_11PL. */
#define MG67_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG67_11PL = 0xFFFF; данные MG67_11PL. */
#define MG67_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G62PL >= G67PL) или (G62PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL >= G67PL) || (G62PL == 0)
+/* Задаёт MG67_12PL = ~(1 << 1); данные MG67_12PL. */
#define MG67_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG67_12PL = 0xFFFF; данные MG67_12PL. */
#define MG67_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G63PL >= G67PL) или (G63PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL >= G67PL) || (G63PL == 0)
+/* Задаёт MG67_13PL = ~(1 << 2); данные MG67_13PL. */
#define MG67_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG67_13PL = 0xFFFF; данные MG67_13PL. */
#define MG67_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G64PL >= G67PL) или (G64PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL >= G67PL) || (G64PL == 0)
+/* Задаёт MG67_14PL = ~(1 << 3); данные MG67_14PL. */
#define MG67_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG67_14PL = 0xFFFF; данные MG67_14PL. */
#define MG67_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G65PL >= G67PL) или (G65PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL >= G67PL) || (G65PL == 0)
+/* Задаёт MG67_15PL = ~(1 << 4); данные MG67_15PL. */
#define MG67_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG67_15PL = 0xFFFF; данные MG67_15PL. */
#define MG67_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G66PL >= G67PL) или (G66PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL >= G67PL) || (G66PL == 0)
+/* Задаёт MG67_16PL = ~(1 << 5); данные MG67_16PL. */
#define MG67_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG67_16PL = 0xFFFF; данные MG67_16PL. */
#define MG67_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G68PL >= G67PL) или (G68PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G68PL >= G67PL) || (G68PL == 0)
+/* Задаёт MG67_18PL = ~(1 << 7); данные MG67_18PL. */
#define MG67_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG67_18PL = 0xFFFF; данные MG67_18PL. */
#define MG67_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG67_17PL = 0x00BF; данные MG67_17PL. */
#define MG67_17PL 0x00BF
+/* Задаёт MG67 = (MG67_11PL & MG67_12PL & MG67_13PL & MG67_14PL &; маска разрешённых прерываний внутри группы PIE 67. */
#define MG67 (MG67_11PL & MG67_12PL & MG67_13PL & MG67_14PL & \
- MG67_15PL & MG67_16PL & MG67_17PL & MG67_18PL)
+ MG67_15PL & MG67_16PL & MG67_17PL & MG67_18PL) /* Продолжает список аргументов, полей или выражение MG67_15PL & MG67_16PL & MG67_17PL & MG67_18PL); порядок элементов сохраняется. */
// End of MG67:
// Beginning of MG68:
+/* Условие компиляции (G61PL >= G68PL) или (G61PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL >= G68PL) || (G61PL == 0)
+/* Задаёт MG68_11PL = ~(1); данные MG68_11PL. */
#define MG68_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG68_11PL = 0xFFFF; данные MG68_11PL. */
#define MG68_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G62PL >= G68PL) или (G62PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL >= G68PL) || (G62PL == 0)
+/* Задаёт MG68_12PL = ~(1 << 1); данные MG68_12PL. */
#define MG68_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG68_12PL = 0xFFFF; данные MG68_12PL. */
#define MG68_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G63PL >= G68PL) или (G63PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL >= G68PL) || (G63PL == 0)
+/* Задаёт MG68_13PL = ~(1 << 2); данные MG68_13PL. */
#define MG68_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG68_13PL = 0xFFFF; данные MG68_13PL. */
#define MG68_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G64PL >= G68PL) или (G64PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL >= G68PL) || (G64PL == 0)
+/* Задаёт MG68_14PL = ~(1 << 3); данные MG68_14PL. */
#define MG68_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG68_14PL = 0xFFFF; данные MG68_14PL. */
#define MG68_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G65PL >= G68PL) или (G65PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL >= G68PL) || (G65PL == 0)
+/* Задаёт MG68_15PL = ~(1 << 4); данные MG68_15PL. */
#define MG68_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG68_15PL = 0xFFFF; данные MG68_15PL. */
#define MG68_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G66PL >= G68PL) или (G66PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL >= G68PL) || (G66PL == 0)
+/* Задаёт MG68_16PL = ~(1 << 5); данные MG68_16PL. */
#define MG68_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG68_16PL = 0xFFFF; данные MG68_16PL. */
#define MG68_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G67PL >= G68PL) или (G67PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G67PL >= G68PL) || (G67PL == 0)
+/* Задаёт MG68_17PL = ~(1 << 6); данные MG68_17PL. */
#define MG68_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG68_17PL = 0xFFFF; данные MG68_17PL. */
#define MG68_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG68_18PL = 0x007F; данные MG68_18PL. */
#define MG68_18PL 0x007F
+/* Задаёт MG68 = (MG68_11PL & MG68_12PL & MG68_13PL & MG68_14PL &; маска разрешённых прерываний внутри группы PIE 68. */
#define MG68 (MG68_11PL & MG68_12PL & MG68_13PL & MG68_14PL & \
- MG68_15PL & MG68_16PL & MG68_17PL & MG68_18PL)
+ MG68_15PL & MG68_16PL & MG68_17PL & MG68_18PL) /* Продолжает список аргументов, полей или выражение MG68_15PL & MG68_16PL & MG68_17PL & MG68_18PL); порядок элементов сохраняется. */
// End of MG68:
//-------------------------------------------------------------------------------
@@ -3851,331 +7025,627 @@ extern "C" {
//
// Beginning of MG71:
+/* Условие компиляции (G72PL >= G71PL) или (G72PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL >= G71PL) || (G72PL == 0)
+/* Задаёт MG71_12PL = ~(1 << 1); данные MG71_12PL. */
#define MG71_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG71_12PL = 0xFFFF; данные MG71_12PL. */
#define MG71_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G73PL >= G71PL) или (G73PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL >= G71PL) || (G73PL == 0)
+/* Задаёт MG71_13PL = ~(1 << 2); данные MG71_13PL. */
#define MG71_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG71_13PL = 0xFFFF; данные MG71_13PL. */
#define MG71_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G74PL >= G71PL) или (G74PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL >= G71PL) || (G74PL == 0)
+/* Задаёт MG71_14PL = ~(1 << 3); данные MG71_14PL. */
#define MG71_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG71_14PL = 0xFFFF; данные MG71_14PL. */
#define MG71_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G75PL >= G71PL) или (G75PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL >= G71PL) || (G75PL == 0)
+/* Задаёт MG71_15PL = ~(1 << 4); данные MG71_15PL. */
#define MG71_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG71_15PL = 0xFFFF; данные MG71_15PL. */
#define MG71_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G76PL >= G71PL) или (G76PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL >= G71PL) || (G76PL == 0)
+/* Задаёт MG71_16PL = ~(1 << 5); данные MG71_16PL. */
#define MG71_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG71_16PL = 0xFFFF; данные MG71_16PL. */
#define MG71_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G77PL >= G71PL) или (G77PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G77PL >= G71PL) || (G77PL == 0)
+/* Задаёт MG71_17PL = ~(1 << 6); данные MG71_17PL. */
#define MG71_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG71_17PL = 0xFFFF; данные MG71_17PL. */
#define MG71_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G78PL >= G71PL) или (G78PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G78PL >= G71PL) || (G78PL == 0)
+/* Задаёт MG71_18PL = ~(1 << 7); данные MG71_18PL. */
#define MG71_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG71_18PL = 0xFFFF; данные MG71_18PL. */
#define MG71_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG71_11PL = 0x00FE; данные MG71_11PL. */
#define MG71_11PL 0x00FE
+/* Задаёт MG71 = (MG71_11PL & MG71_12PL & MG71_13PL & MG71_14PL &; маска разрешённых прерываний внутри группы PIE 71. */
#define MG71 (MG71_11PL & MG71_12PL & MG71_13PL & MG71_14PL & \
- MG71_15PL & MG71_16PL & MG71_17PL & MG71_18PL)
+ MG71_15PL & MG71_16PL & MG71_17PL & MG71_18PL) /* Продолжает список аргументов, полей или выражение MG71_15PL & MG71_16PL & MG71_17PL & MG71_18PL); порядок элементов сохраняется. */
// End of MG71:
// Beginning of MG72:
+/* Условие компиляции (G71PL >= G72PL) или (G71PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL >= G72PL) || (G71PL == 0)
+/* Задаёт MG72_11PL = ~(1); данные MG72_11PL. */
#define MG72_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG72_11PL = 0xFFFF; данные MG72_11PL. */
#define MG72_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G73PL >= G72PL) или (G73PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL >= G72PL) || (G73PL == 0)
+/* Задаёт MG72_13PL = ~(1 << 2); данные MG72_13PL. */
#define MG72_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG72_13PL = 0xFFFF; данные MG72_13PL. */
#define MG72_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G74PL >= G72PL) или (G74PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL >= G72PL) || (G74PL == 0)
+/* Задаёт MG72_14PL = ~(1 << 3); данные MG72_14PL. */
#define MG72_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG72_14PL = 0xFFFF; данные MG72_14PL. */
#define MG72_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G75PL >= G72PL) или (G75PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL >= G72PL) || (G75PL == 0)
+/* Задаёт MG72_15PL = ~(1 << 4); данные MG72_15PL. */
#define MG72_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG72_15PL = 0xFFFF; данные MG72_15PL. */
#define MG72_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G76PL >= G72PL) или (G76PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL >= G72PL) || (G76PL == 0)
+/* Задаёт MG72_16PL = ~(1 << 5); данные MG72_16PL. */
#define MG72_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG72_16PL = 0xFFFF; данные MG72_16PL. */
#define MG72_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G77PL >= G72PL) или (G77PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G77PL >= G72PL) || (G77PL == 0)
+/* Задаёт MG72_17PL = ~(1 << 6); данные MG72_17PL. */
#define MG72_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG72_17PL = 0xFFFF; данные MG72_17PL. */
#define MG72_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G78PL >= G72PL) или (G78PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G78PL >= G72PL) || (G78PL == 0)
+/* Задаёт MG72_18PL = ~(1 << 7); данные MG72_18PL. */
#define MG72_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG72_18PL = 0xFFFF; данные MG72_18PL. */
#define MG72_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG72_12PL = 0x00FD; данные MG72_12PL. */
#define MG72_12PL 0x00FD
+/* Задаёт MG72 = (MG72_11PL & MG72_12PL & MG72_13PL & MG72_14PL &; маска разрешённых прерываний внутри группы PIE 72. */
#define MG72 (MG72_11PL & MG72_12PL & MG72_13PL & MG72_14PL & \
- MG72_15PL & MG72_16PL & MG72_17PL & MG72_18PL)
+ MG72_15PL & MG72_16PL & MG72_17PL & MG72_18PL) /* Продолжает список аргументов, полей или выражение MG72_15PL & MG72_16PL & MG72_17PL & MG72_18PL); порядок элементов сохраняется. */
// End of MG72:
// Beginning of MG73:
+/* Условие компиляции (G71PL >= G73PL) или (G71PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL >= G73PL) || (G71PL == 0)
+/* Задаёт MG73_11PL = ~(1); данные MG73_11PL. */
#define MG73_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG73_11PL = 0xFFFF; данные MG73_11PL. */
#define MG73_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G72PL >= G73PL) или (G72PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL >= G73PL) || (G72PL == 0)
+/* Задаёт MG73_12PL = ~(1 << 1); данные MG73_12PL. */
#define MG73_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG73_12PL = 0xFFFF; данные MG73_12PL. */
#define MG73_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G74PL >= G73PL) или (G74PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL >= G73PL) || (G74PL == 0)
+/* Задаёт MG73_14PL = ~(1 << 3); данные MG73_14PL. */
#define MG73_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG73_14PL = 0xFFFF; данные MG73_14PL. */
#define MG73_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G75PL >= G73PL) или (G75PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL >= G73PL) || (G75PL == 0)
+/* Задаёт MG73_15PL = ~(1 << 4); данные MG73_15PL. */
#define MG73_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG73_15PL = 0xFFFF; данные MG73_15PL. */
#define MG73_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G76PL >= G73PL) или (G76PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL >= G73PL) || (G76PL == 0)
+/* Задаёт MG73_16PL = ~(1 << 5); данные MG73_16PL. */
#define MG73_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG73_16PL = 0xFFFF; данные MG73_16PL. */
#define MG73_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G77PL >= G73PL) или (G77PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G77PL >= G73PL) || (G77PL == 0)
+/* Задаёт MG73_17PL = ~(1 << 6); данные MG73_17PL. */
#define MG73_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG73_17PL = 0xFFFF; данные MG73_17PL. */
#define MG73_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G78PL >= G73PL) или (G78PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G78PL >= G73PL) || (G78PL == 0)
+/* Задаёт MG73_18PL = ~(1 << 7); данные MG73_18PL. */
#define MG73_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG73_18PL = 0xFFFF; данные MG73_18PL. */
#define MG73_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG73_13PL = 0x00FB; данные MG73_13PL. */
#define MG73_13PL 0x00FB
+/* Задаёт MG73 = (MG73_11PL & MG73_12PL & MG73_13PL & MG73_14PL &; маска разрешённых прерываний внутри группы PIE 73. */
#define MG73 (MG73_11PL & MG73_12PL & MG73_13PL & MG73_14PL & \
- MG73_15PL & MG73_16PL & MG73_17PL & MG73_18PL)
+ MG73_15PL & MG73_16PL & MG73_17PL & MG73_18PL) /* Продолжает список аргументов, полей или выражение MG73_15PL & MG73_16PL & MG73_17PL & MG73_18PL); порядок элементов сохраняется. */
// End of MG73:
// Beginning of MG74:
+/* Условие компиляции (G71PL >= G74PL) или (G71PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL >= G74PL) || (G71PL == 0)
+/* Задаёт MG74_11PL = ~(1); данные MG74_11PL. */
#define MG74_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG74_11PL = 0xFFFF; данные MG74_11PL. */
#define MG74_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G72PL >= G74PL) или (G72PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL >= G74PL) || (G72PL == 0)
+/* Задаёт MG74_12PL = ~(1 << 1); данные MG74_12PL. */
#define MG74_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG74_12PL = 0xFFFF; данные MG74_12PL. */
#define MG74_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G73PL >= G74PL) или (G73PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL >= G74PL) || (G73PL == 0)
+/* Задаёт MG74_13PL = ~(1 << 2); данные MG74_13PL. */
#define MG74_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG74_13PL = 0xFFFF; данные MG74_13PL. */
#define MG74_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G75PL >= G74PL) или (G75PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL >= G74PL) || (G75PL == 0)
+/* Задаёт MG74_15PL = ~(1 << 4); данные MG74_15PL. */
#define MG74_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG74_15PL = 0xFFFF; данные MG74_15PL. */
#define MG74_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G76PL >= G74PL) или (G76PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL >= G74PL) || (G76PL == 0)
+/* Задаёт MG74_16PL = ~(1 << 5); данные MG74_16PL. */
#define MG74_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG74_16PL = 0xFFFF; данные MG74_16PL. */
#define MG74_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G77PL >= G74PL) или (G77PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G77PL >= G74PL) || (G77PL == 0)
+/* Задаёт MG74_17PL = ~(1 << 6); данные MG74_17PL. */
#define MG74_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG74_17PL = 0xFFFF; данные MG74_17PL. */
#define MG74_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G78PL >= G74PL) или (G78PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G78PL >= G74PL) || (G78PL == 0)
+/* Задаёт MG74_18PL = ~(1 << 7); данные MG74_18PL. */
#define MG74_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG74_18PL = 0xFFFF; данные MG74_18PL. */
#define MG74_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG74_14PL = 0x00F7; данные MG74_14PL. */
#define MG74_14PL 0x00F7
+/* Задаёт MG74 = (MG74_11PL & MG74_12PL & MG74_13PL & MG74_14PL &; маска разрешённых прерываний внутри группы PIE 74. */
#define MG74 (MG74_11PL & MG74_12PL & MG74_13PL & MG74_14PL & \
- MG74_15PL & MG74_16PL & MG74_17PL & MG74_18PL)
+ MG74_15PL & MG74_16PL & MG74_17PL & MG74_18PL) /* Продолжает список аргументов, полей или выражение MG74_15PL & MG74_16PL & MG74_17PL & MG74_18PL); порядок элементов сохраняется. */
// End of MG74:
// Beginning of MG75:
+/* Условие компиляции (G71PL >= G75PL) или (G71PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL >= G75PL) || (G71PL == 0)
+/* Задаёт MG75_11PL = ~(1); данные MG75_11PL. */
#define MG75_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG75_11PL = 0xFFFF; данные MG75_11PL. */
#define MG75_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G72PL >= G75PL) или (G72PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL >= G75PL) || (G72PL == 0)
+/* Задаёт MG75_12PL = ~(1 << 1); данные MG75_12PL. */
#define MG75_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG75_12PL = 0xFFFF; данные MG75_12PL. */
#define MG75_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G73PL >= G75PL) или (G73PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL >= G75PL) || (G73PL == 0)
+/* Задаёт MG75_13PL = ~(1 << 2); данные MG75_13PL. */
#define MG75_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG75_13PL = 0xFFFF; данные MG75_13PL. */
#define MG75_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G74PL >= G75PL) или (G74PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL >= G75PL) || (G74PL == 0)
+/* Задаёт MG75_14PL = ~(1 << 3); данные MG75_14PL. */
#define MG75_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG75_14PL = 0xFFFF; данные MG75_14PL. */
#define MG75_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G76PL >= G75PL) или (G76PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL >= G75PL) || (G76PL == 0)
+/* Задаёт MG75_16PL = ~(1 << 5); данные MG75_16PL. */
#define MG75_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG75_16PL = 0xFFFF; данные MG75_16PL. */
#define MG75_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G77PL >= G75PL) или (G77PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G77PL >= G75PL) || (G77PL == 0)
+/* Задаёт MG75_17PL = ~(1 << 6); данные MG75_17PL. */
#define MG75_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG75_17PL = 0xFFFF; данные MG75_17PL. */
#define MG75_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G78PL >= G75PL) или (G78PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G78PL >= G75PL) || (G78PL == 0)
+/* Задаёт MG75_18PL = ~(1 << 7); данные MG75_18PL. */
#define MG75_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG75_18PL = 0xFFFF; данные MG75_18PL. */
#define MG75_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG75_15PL = 0x00EF; данные MG75_15PL. */
#define MG75_15PL 0x00EF
+/* Задаёт MG75 = (MG75_11PL & MG75_12PL & MG75_13PL & MG75_14PL &; маска разрешённых прерываний внутри группы PIE 75. */
#define MG75 (MG75_11PL & MG75_12PL & MG75_13PL & MG75_14PL & \
- MG75_15PL & MG75_16PL & MG75_17PL & MG75_18PL)
+ MG75_15PL & MG75_16PL & MG75_17PL & MG75_18PL) /* Продолжает список аргументов, полей или выражение MG75_15PL & MG75_16PL & MG75_17PL & MG75_18PL); порядок элементов сохраняется. */
// End of MG75:
// Beginning of MG76:
+/* Условие компиляции (G71PL >= G76PL) или (G71PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL >= G76PL) || (G71PL == 0)
+/* Задаёт MG76_11PL = ~(1); данные MG76_11PL. */
#define MG76_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG76_11PL = 0xFFFF; данные MG76_11PL. */
#define MG76_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G72PL >= G76PL) или (G72PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL >= G76PL) || (G72PL == 0)
+/* Задаёт MG76_12PL = ~(1 << 1); данные MG76_12PL. */
#define MG76_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG76_12PL = 0xFFFF; данные MG76_12PL. */
#define MG76_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G73PL >= G76PL) или (G73PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL >= G76PL) || (G73PL == 0)
+/* Задаёт MG76_13PL = ~(1 << 2); данные MG76_13PL. */
#define MG76_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG76_13PL = 0xFFFF; данные MG76_13PL. */
#define MG76_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G74PL >= G76PL) или (G74PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL >= G76PL) || (G74PL == 0)
+/* Задаёт MG76_14PL = ~(1 << 3); данные MG76_14PL. */
#define MG76_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG76_14PL = 0xFFFF; данные MG76_14PL. */
#define MG76_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G75PL >= G76PL) или (G75PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL >= G76PL) || (G75PL == 0)
+/* Задаёт MG76_15PL = ~(1 << 4); данные MG76_15PL. */
#define MG76_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG76_15PL = 0xFFFF; данные MG76_15PL. */
#define MG76_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G77PL >= G76PL) или (G77PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G77PL >= G76PL) || (G77PL == 0)
+/* Задаёт MG76_17PL = ~(1 << 6); данные MG76_17PL. */
#define MG76_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG76_17PL = 0xFFFF; данные MG76_17PL. */
#define MG76_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G78PL >= G76PL) или (G78PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G78PL >= G76PL) || (G78PL == 0)
+/* Задаёт MG76_18PL = ~(1 << 7); данные MG76_18PL. */
#define MG76_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG76_18PL = 0xFFFF; данные MG76_18PL. */
#define MG76_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG76_16PL = 0x00DF; данные MG76_16PL. */
#define MG76_16PL 0x00DF
+/* Задаёт MG76 = (MG76_11PL & MG76_12PL & MG76_13PL & MG76_14PL &; маска разрешённых прерываний внутри группы PIE 76. */
#define MG76 (MG76_11PL & MG76_12PL & MG76_13PL & MG76_14PL & \
- MG76_15PL & MG76_16PL & MG76_17PL & MG76_18PL)
+ MG76_15PL & MG76_16PL & MG76_17PL & MG76_18PL) /* Продолжает список аргументов, полей или выражение MG76_15PL & MG76_16PL & MG76_17PL & MG76_18PL); порядок элементов сохраняется. */
// End of MG76:
// Beginning of MG77:
+/* Условие компиляции (G71PL >= G77PL) или (G71PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL >= G77PL) || (G71PL == 0)
+/* Задаёт MG77_11PL = ~(1); данные MG77_11PL. */
#define MG77_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG77_11PL = 0xFFFF; данные MG77_11PL. */
#define MG77_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G72PL >= G77PL) или (G72PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL >= G77PL) || (G72PL == 0)
+/* Задаёт MG77_12PL = ~(1 << 1); данные MG77_12PL. */
#define MG77_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG77_12PL = 0xFFFF; данные MG77_12PL. */
#define MG77_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G73PL >= G77PL) или (G73PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL >= G77PL) || (G73PL == 0)
+/* Задаёт MG77_13PL = ~(1 << 2); данные MG77_13PL. */
#define MG77_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG77_13PL = 0xFFFF; данные MG77_13PL. */
#define MG77_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G74PL >= G77PL) или (G74PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL >= G77PL) || (G74PL == 0)
+/* Задаёт MG77_14PL = ~(1 << 3); данные MG77_14PL. */
#define MG77_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG77_14PL = 0xFFFF; данные MG77_14PL. */
#define MG77_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G75PL >= G77PL) или (G75PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL >= G77PL) || (G75PL == 0)
+/* Задаёт MG77_15PL = ~(1 << 4); данные MG77_15PL. */
#define MG77_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG77_15PL = 0xFFFF; данные MG77_15PL. */
#define MG77_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G76PL >= G77PL) или (G76PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL >= G77PL) || (G76PL == 0)
+/* Задаёт MG77_16PL = ~(1 << 5); данные MG77_16PL. */
#define MG77_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG77_16PL = 0xFFFF; данные MG77_16PL. */
#define MG77_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G78PL >= G77PL) или (G78PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G78PL >= G77PL) || (G78PL == 0)
+/* Задаёт MG77_18PL = ~(1 << 7); данные MG77_18PL. */
#define MG77_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG77_18PL = 0xFFFF; данные MG77_18PL. */
#define MG77_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG77_17PL = 0x00BF; данные MG77_17PL. */
#define MG77_17PL 0x00BF
+/* Задаёт MG77 = (MG77_11PL & MG77_12PL & MG77_13PL & MG77_14PL &; маска разрешённых прерываний внутри группы PIE 77. */
#define MG77 (MG77_11PL & MG77_12PL & MG77_13PL & MG77_14PL & \
- MG77_15PL & MG77_16PL & MG77_17PL & MG77_18PL)
+ MG77_15PL & MG77_16PL & MG77_17PL & MG77_18PL) /* Продолжает список аргументов, полей или выражение MG77_15PL & MG77_16PL & MG77_17PL & MG77_18PL); порядок элементов сохраняется. */
// End of MG77:
// Beginning of MG78:
+/* Условие компиляции (G71PL >= G78PL) или (G71PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL >= G78PL) || (G71PL == 0)
+/* Задаёт MG78_11PL = ~(1); данные MG78_11PL. */
#define MG78_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG78_11PL = 0xFFFF; данные MG78_11PL. */
#define MG78_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G72PL >= G78PL) или (G72PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL >= G78PL) || (G72PL == 0)
+/* Задаёт MG78_12PL = ~(1 << 1); данные MG78_12PL. */
#define MG78_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG78_12PL = 0xFFFF; данные MG78_12PL. */
#define MG78_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G73PL >= G78PL) или (G73PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL >= G78PL) || (G73PL == 0)
+/* Задаёт MG78_13PL = ~(1 << 2); данные MG78_13PL. */
#define MG78_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG78_13PL = 0xFFFF; данные MG78_13PL. */
#define MG78_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G74PL >= G78PL) или (G74PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL >= G78PL) || (G74PL == 0)
+/* Задаёт MG78_14PL = ~(1 << 3); данные MG78_14PL. */
#define MG78_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG78_14PL = 0xFFFF; данные MG78_14PL. */
#define MG78_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G75PL >= G78PL) или (G75PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL >= G78PL) || (G75PL == 0)
+/* Задаёт MG78_15PL = ~(1 << 4); данные MG78_15PL. */
#define MG78_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG78_15PL = 0xFFFF; данные MG78_15PL. */
#define MG78_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G76PL >= G78PL) или (G76PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL >= G78PL) || (G76PL == 0)
+/* Задаёт MG78_16PL = ~(1 << 5); данные MG78_16PL. */
#define MG78_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG78_16PL = 0xFFFF; данные MG78_16PL. */
#define MG78_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G77PL >= G78PL) или (G77PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G77PL >= G78PL) || (G77PL == 0)
+/* Задаёт MG78_17PL = ~(1 << 6); данные MG78_17PL. */
#define MG78_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG78_17PL = 0xFFFF; данные MG78_17PL. */
#define MG78_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG78_18PL = 0x007F; данные MG78_18PL. */
#define MG78_18PL 0x007F
+/* Задаёт MG78 = (MG78_11PL & MG78_12PL & MG78_13PL & MG78_14PL &; маска разрешённых прерываний внутри группы PIE 78. */
#define MG78 (MG78_11PL & MG78_12PL & MG78_13PL & MG78_14PL & \
- MG78_15PL & MG78_16PL & MG78_17PL & MG78_18PL)
+ MG78_15PL & MG78_16PL & MG78_17PL & MG78_18PL) /* Продолжает список аргументов, полей или выражение MG78_15PL & MG78_16PL & MG78_17PL & MG78_18PL); порядок элементов сохраняется. */
// End of MG78:
//-------------------------------------------------------------------------------
@@ -4183,331 +7653,627 @@ extern "C" {
//
// Beginning of MG81:
+/* Условие компиляции (G82PL >= G81PL) или (G82PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL >= G81PL) || (G82PL == 0)
+/* Задаёт MG81_12PL = ~(1 << 1); данные MG81_12PL. */
#define MG81_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG81_12PL = 0xFFFF; данные MG81_12PL. */
#define MG81_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G83PL >= G81PL) или (G83PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G83PL >= G81PL) || (G83PL == 0)
+/* Задаёт MG81_13PL = ~(1 << 2); данные MG81_13PL. */
#define MG81_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG81_13PL = 0xFFFF; данные MG81_13PL. */
#define MG81_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G84PL >= G81PL) или (G84PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G84PL >= G81PL) || (G84PL == 0)
+/* Задаёт MG81_14PL = ~(1 << 3); данные MG81_14PL. */
#define MG81_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG81_14PL = 0xFFFF; данные MG81_14PL. */
#define MG81_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G85PL >= G81PL) или (G85PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL >= G81PL) || (G85PL == 0)
+/* Задаёт MG81_15PL = ~(1 << 4); данные MG81_15PL. */
#define MG81_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG81_15PL = 0xFFFF; данные MG81_15PL. */
#define MG81_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G86PL >= G81PL) или (G86PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL >= G81PL) || (G86PL == 0)
+/* Задаёт MG81_16PL = ~(1 << 5); данные MG81_16PL. */
#define MG81_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG81_16PL = 0xFFFF; данные MG81_16PL. */
#define MG81_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G87PL >= G81PL) или (G87PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G87PL >= G81PL) || (G87PL == 0)
+/* Задаёт MG81_17PL = ~(1 << 6); данные MG81_17PL. */
#define MG81_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG81_17PL = 0xFFFF; данные MG81_17PL. */
#define MG81_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G88PL >= G81PL) или (G88PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G88PL >= G81PL) || (G88PL == 0)
+/* Задаёт MG81_18PL = ~(1 << 7); данные MG81_18PL. */
#define MG81_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG81_18PL = 0xFFFF; данные MG81_18PL. */
#define MG81_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG81_11PL = 0x00FE; данные MG81_11PL. */
#define MG81_11PL 0x00FE
+/* Задаёт MG81 = (MG81_11PL & MG81_12PL & MG81_13PL & MG81_14PL &; маска разрешённых прерываний внутри группы PIE 81. */
#define MG81 (MG81_11PL & MG81_12PL & MG81_13PL & MG81_14PL & \
- MG81_15PL & MG81_16PL & MG81_17PL & MG81_18PL)
+ MG81_15PL & MG81_16PL & MG81_17PL & MG81_18PL) /* Продолжает список аргументов, полей или выражение MG81_15PL & MG81_16PL & MG81_17PL & MG81_18PL); порядок элементов сохраняется. */
// End of MG81:
// Beginning of MG82:
+/* Условие компиляции (G81PL >= G82PL) или (G81PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL >= G82PL) || (G81PL == 0)
+/* Задаёт MG82_11PL = ~(1); данные MG82_11PL. */
#define MG82_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG82_11PL = 0xFFFF; данные MG82_11PL. */
#define MG82_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G83PL >= G82PL) или (G83PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G83PL >= G82PL) || (G83PL == 0)
+/* Задаёт MG82_13PL = ~(1 << 2); данные MG82_13PL. */
#define MG82_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG82_13PL = 0xFFFF; данные MG82_13PL. */
#define MG82_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G84PL >= G82PL) или (G84PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G84PL >= G82PL) || (G84PL == 0)
+/* Задаёт MG82_14PL = ~(1 << 3); данные MG82_14PL. */
#define MG82_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG82_14PL = 0xFFFF; данные MG82_14PL. */
#define MG82_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G85PL >= G82PL) или (G85PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL >= G82PL) || (G85PL == 0)
+/* Задаёт MG82_15PL = ~(1 << 4); данные MG82_15PL. */
#define MG82_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG82_15PL = 0xFFFF; данные MG82_15PL. */
#define MG82_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G86PL >= G82PL) или (G86PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL >= G82PL) || (G86PL == 0)
+/* Задаёт MG82_16PL = ~(1 << 5); данные MG82_16PL. */
#define MG82_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG82_16PL = 0xFFFF; данные MG82_16PL. */
#define MG82_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G87PL >= G82PL) или (G87PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G87PL >= G82PL) || (G87PL == 0)
+/* Задаёт MG82_17PL = ~(1 << 6); данные MG82_17PL. */
#define MG82_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG82_17PL = 0xFFFF; данные MG82_17PL. */
#define MG82_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G88PL >= G82PL) или (G88PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G88PL >= G82PL) || (G88PL == 0)
+/* Задаёт MG82_18PL = ~(1 << 7); данные MG82_18PL. */
#define MG82_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG82_18PL = 0xFFFF; данные MG82_18PL. */
#define MG82_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG82_12PL = 0x00FD; данные MG82_12PL. */
#define MG82_12PL 0x00FD
+/* Задаёт MG82 = (MG82_11PL & MG82_12PL & MG82_13PL & MG82_14PL &; маска разрешённых прерываний внутри группы PIE 82. */
#define MG82 (MG82_11PL & MG82_12PL & MG82_13PL & MG82_14PL & \
- MG82_15PL & MG82_16PL & MG82_17PL & MG82_18PL)
+ MG82_15PL & MG82_16PL & MG82_17PL & MG82_18PL) /* Продолжает список аргументов, полей или выражение MG82_15PL & MG82_16PL & MG82_17PL & MG82_18PL); порядок элементов сохраняется. */
// End of MG82:
// Beginning of MG83:
+/* Условие компиляции (G81PL >= G83PL) или (G81PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL >= G83PL) || (G81PL == 0)
+/* Задаёт MG83_11PL = ~(1); данные MG83_11PL. */
#define MG83_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG83_11PL = 0xFFFF; данные MG83_11PL. */
#define MG83_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G82PL >= G83PL) или (G82PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL >= G83PL) || (G82PL == 0)
+/* Задаёт MG83_12PL = ~(1 << 1); данные MG83_12PL. */
#define MG83_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG83_12PL = 0xFFFF; данные MG83_12PL. */
#define MG83_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G84PL >= G83PL) или (G84PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G84PL >= G83PL) || (G84PL == 0)
+/* Задаёт MG83_14PL = ~(1 << 3); данные MG83_14PL. */
#define MG83_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG83_14PL = 0xFFFF; данные MG83_14PL. */
#define MG83_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G85PL >= G83PL) или (G85PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL >= G83PL) || (G85PL == 0)
+/* Задаёт MG83_15PL = ~(1 << 4); данные MG83_15PL. */
#define MG83_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG83_15PL = 0xFFFF; данные MG83_15PL. */
#define MG83_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G86PL >= G83PL) или (G86PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL >= G83PL) || (G86PL == 0)
+/* Задаёт MG83_16PL = ~(1 << 5); данные MG83_16PL. */
#define MG83_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG83_16PL = 0xFFFF; данные MG83_16PL. */
#define MG83_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G87PL >= G83PL) или (G87PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G87PL >= G83PL) || (G87PL == 0)
+/* Задаёт MG83_17PL = ~(1 << 6); данные MG83_17PL. */
#define MG83_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG83_17PL = 0xFFFF; данные MG83_17PL. */
#define MG83_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G88PL >= G83PL) или (G88PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G88PL >= G83PL) || (G88PL == 0)
+/* Задаёт MG83_18PL = ~(1 << 7); данные MG83_18PL. */
#define MG83_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG83_18PL = 0xFFFF; данные MG83_18PL. */
#define MG83_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG83_13PL = 0x00FB; данные MG83_13PL. */
#define MG83_13PL 0x00FB
+/* Задаёт MG83 = (MG83_11PL & MG83_12PL & MG83_13PL & MG83_14PL &; маска разрешённых прерываний внутри группы PIE 83. */
#define MG83 (MG83_11PL & MG83_12PL & MG83_13PL & MG83_14PL & \
- MG83_15PL & MG83_16PL & MG83_17PL & MG83_18PL)
+ MG83_15PL & MG83_16PL & MG83_17PL & MG83_18PL) /* Продолжает список аргументов, полей или выражение MG83_15PL & MG83_16PL & MG83_17PL & MG83_18PL); порядок элементов сохраняется. */
// End of MG83:
// Beginning of MG84:
+/* Условие компиляции (G81PL >= G84PL) или (G81PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL >= G84PL) || (G81PL == 0)
+/* Задаёт MG84_11PL = ~(1); данные MG84_11PL. */
#define MG84_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG84_11PL = 0xFFFF; данные MG84_11PL. */
#define MG84_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G82PL >= G84PL) или (G82PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL >= G84PL) || (G82PL == 0)
+/* Задаёт MG84_12PL = ~(1 << 1); данные MG84_12PL. */
#define MG84_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG84_12PL = 0xFFFF; данные MG84_12PL. */
#define MG84_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G83PL >= G84PL) или (G83PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G83PL >= G84PL) || (G83PL == 0)
+/* Задаёт MG84_13PL = ~(1 << 2); данные MG84_13PL. */
#define MG84_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG84_13PL = 0xFFFF; данные MG84_13PL. */
#define MG84_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G85PL >= G84PL) или (G85PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL >= G84PL) || (G85PL == 0)
+/* Задаёт MG84_15PL = ~(1 << 4); данные MG84_15PL. */
#define MG84_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG84_15PL = 0xFFFF; данные MG84_15PL. */
#define MG84_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G86PL >= G84PL) или (G86PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL >= G84PL) || (G86PL == 0)
+/* Задаёт MG84_16PL = ~(1 << 5); данные MG84_16PL. */
#define MG84_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG84_16PL = 0xFFFF; данные MG84_16PL. */
#define MG84_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G87PL >= G84PL) или (G87PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G87PL >= G84PL) || (G87PL == 0)
+/* Задаёт MG84_17PL = ~(1 << 6); данные MG84_17PL. */
#define MG84_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG84_17PL = 0xFFFF; данные MG84_17PL. */
#define MG84_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G88PL >= G84PL) или (G88PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G88PL >= G84PL) || (G88PL == 0)
+/* Задаёт MG84_18PL = ~(1 << 7); данные MG84_18PL. */
#define MG84_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG84_18PL = 0xFFFF; данные MG84_18PL. */
#define MG84_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG84_14PL = 0x00F7; данные MG84_14PL. */
#define MG84_14PL 0x00F7
+/* Задаёт MG84 = (MG84_11PL & MG84_12PL & MG84_13PL & MG84_14PL &; маска разрешённых прерываний внутри группы PIE 84. */
#define MG84 (MG84_11PL & MG84_12PL & MG84_13PL & MG84_14PL & \
- MG84_15PL & MG84_16PL & MG84_17PL & MG84_18PL)
+ MG84_15PL & MG84_16PL & MG84_17PL & MG84_18PL) /* Продолжает список аргументов, полей или выражение MG84_15PL & MG84_16PL & MG84_17PL & MG84_18PL); порядок элементов сохраняется. */
// End of MG84:
// Beginning of MG85:
+/* Условие компиляции (G81PL >= G85PL) или (G81PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL >= G85PL) || (G81PL == 0)
+/* Задаёт MG85_11PL = ~(1); данные MG85_11PL. */
#define MG85_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG85_11PL = 0xFFFF; данные MG85_11PL. */
#define MG85_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G82PL >= G85PL) или (G82PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL >= G85PL) || (G82PL == 0)
+/* Задаёт MG85_12PL = ~(1 << 1); данные MG85_12PL. */
#define MG85_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG85_12PL = 0xFFFF; данные MG85_12PL. */
#define MG85_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G83PL >= G85PL) или (G83PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G83PL >= G85PL) || (G83PL == 0)
+/* Задаёт MG85_13PL = ~(1 << 2); данные MG85_13PL. */
#define MG85_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG85_13PL = 0xFFFF; данные MG85_13PL. */
#define MG85_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G84PL >= G85PL) или (G84PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G84PL >= G85PL) || (G84PL == 0)
+/* Задаёт MG85_14PL = ~(1 << 3); данные MG85_14PL. */
#define MG85_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG85_14PL = 0xFFFF; данные MG85_14PL. */
#define MG85_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G86PL >= G85PL) или (G86PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL >= G85PL) || (G86PL == 0)
+/* Задаёт MG85_16PL = ~(1 << 5); данные MG85_16PL. */
#define MG85_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG85_16PL = 0xFFFF; данные MG85_16PL. */
#define MG85_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G87PL >= G85PL) или (G87PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G87PL >= G85PL) || (G87PL == 0)
+/* Задаёт MG85_17PL = ~(1 << 6); данные MG85_17PL. */
#define MG85_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG85_17PL = 0xFFFF; данные MG85_17PL. */
#define MG85_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G88PL >= G85PL) или (G88PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G88PL >= G85PL) || (G88PL == 0)
+/* Задаёт MG85_18PL = ~(1 << 7); данные MG85_18PL. */
#define MG85_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG85_18PL = 0xFFFF; данные MG85_18PL. */
#define MG85_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG85_15PL = 0x00EF; данные MG85_15PL. */
#define MG85_15PL 0x00EF
+/* Задаёт MG85 = (MG85_11PL & MG85_12PL & MG85_13PL & MG85_14PL &; маска разрешённых прерываний внутри группы PIE 85. */
#define MG85 (MG85_11PL & MG85_12PL & MG85_13PL & MG85_14PL & \
- MG85_15PL & MG85_16PL & MG85_17PL & MG85_18PL)
+ MG85_15PL & MG85_16PL & MG85_17PL & MG85_18PL) /* Продолжает список аргументов, полей или выражение MG85_15PL & MG85_16PL & MG85_17PL & MG85_18PL); порядок элементов сохраняется. */
// End of MG85:
// Beginning of MG86:
+/* Условие компиляции (G81PL >= G86PL) или (G81PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL >= G86PL) || (G81PL == 0)
+/* Задаёт MG86_11PL = ~(1); данные MG86_11PL. */
#define MG86_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG86_11PL = 0xFFFF; данные MG86_11PL. */
#define MG86_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G82PL >= G86PL) или (G82PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL >= G86PL) || (G82PL == 0)
+/* Задаёт MG86_12PL = ~(1 << 1); данные MG86_12PL. */
#define MG86_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG86_12PL = 0xFFFF; данные MG86_12PL. */
#define MG86_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G83PL >= G86PL) или (G83PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G83PL >= G86PL) || (G83PL == 0)
+/* Задаёт MG86_13PL = ~(1 << 2); данные MG86_13PL. */
#define MG86_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG86_13PL = 0xFFFF; данные MG86_13PL. */
#define MG86_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G84PL >= G86PL) или (G84PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G84PL >= G86PL) || (G84PL == 0)
+/* Задаёт MG86_14PL = ~(1 << 3); данные MG86_14PL. */
#define MG86_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG86_14PL = 0xFFFF; данные MG86_14PL. */
#define MG86_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G85PL >= G86PL) или (G85PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL >= G86PL) || (G85PL == 0)
+/* Задаёт MG86_15PL = ~(1 << 4); данные MG86_15PL. */
#define MG86_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG86_15PL = 0xFFFF; данные MG86_15PL. */
#define MG86_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G87PL >= G86PL) или (G87PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G87PL >= G86PL) || (G87PL == 0)
+/* Задаёт MG86_17PL = ~(1 << 6); данные MG86_17PL. */
#define MG86_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG86_17PL = 0xFFFF; данные MG86_17PL. */
#define MG86_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G88PL >= G86PL) или (G88PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G88PL >= G86PL) || (G88PL == 0)
+/* Задаёт MG86_18PL = ~(1 << 7); данные MG86_18PL. */
#define MG86_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG86_18PL = 0xFFFF; данные MG86_18PL. */
#define MG86_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG86_16PL = 0x00DF; данные MG86_16PL. */
#define MG86_16PL 0x00DF
+/* Задаёт MG86 = (MG86_11PL & MG86_12PL & MG86_13PL & MG86_14PL &; маска разрешённых прерываний внутри группы PIE 86. */
#define MG86 (MG86_11PL & MG86_12PL & MG86_13PL & MG86_14PL & \
- MG86_15PL & MG86_16PL & MG86_17PL & MG86_18PL)
+ MG86_15PL & MG86_16PL & MG86_17PL & MG86_18PL) /* Продолжает список аргументов, полей или выражение MG86_15PL & MG86_16PL & MG86_17PL & MG86_18PL); порядок элементов сохраняется. */
// End of MG86:
// Beginning of MG87:
+/* Условие компиляции (G81PL >= G87PL) или (G81PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL >= G87PL) || (G81PL == 0)
+/* Задаёт MG87_11PL = ~(1); данные MG87_11PL. */
#define MG87_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG87_11PL = 0xFFFF; данные MG87_11PL. */
#define MG87_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G82PL >= G87PL) или (G82PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL >= G87PL) || (G82PL == 0)
+/* Задаёт MG87_12PL = ~(1 << 1); данные MG87_12PL. */
#define MG87_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG87_12PL = 0xFFFF; данные MG87_12PL. */
#define MG87_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G83PL >= G87PL) или (G83PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G83PL >= G87PL) || (G83PL == 0)
+/* Задаёт MG87_13PL = ~(1 << 2); данные MG87_13PL. */
#define MG87_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG87_13PL = 0xFFFF; данные MG87_13PL. */
#define MG87_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G84PL >= G87PL) или (G84PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G84PL >= G87PL) || (G84PL == 0)
+/* Задаёт MG87_14PL = ~(1 << 3); данные MG87_14PL. */
#define MG87_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG87_14PL = 0xFFFF; данные MG87_14PL. */
#define MG87_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G85PL >= G87PL) или (G85PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL >= G87PL) || (G85PL == 0)
+/* Задаёт MG87_15PL = ~(1 << 4); данные MG87_15PL. */
#define MG87_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG87_15PL = 0xFFFF; данные MG87_15PL. */
#define MG87_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G86PL >= G87PL) или (G86PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL >= G87PL) || (G86PL == 0)
+/* Задаёт MG87_16PL = ~(1 << 5); данные MG87_16PL. */
#define MG87_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG87_16PL = 0xFFFF; данные MG87_16PL. */
#define MG87_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G88PL >= G87PL) или (G88PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G88PL >= G87PL) || (G88PL == 0)
+/* Задаёт MG87_18PL = ~(1 << 7); данные MG87_18PL. */
#define MG87_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG87_18PL = 0xFFFF; данные MG87_18PL. */
#define MG87_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG87_17PL = 0x00BF; данные MG87_17PL. */
#define MG87_17PL 0x00BF
+/* Задаёт MG87 = (MG87_11PL & MG87_12PL & MG87_13PL & MG87_14PL &; маска разрешённых прерываний внутри группы PIE 87. */
#define MG87 (MG87_11PL & MG87_12PL & MG87_13PL & MG87_14PL & \
- MG87_15PL & MG87_16PL & MG87_17PL & MG87_18PL)
+ MG87_15PL & MG87_16PL & MG87_17PL & MG87_18PL) /* Продолжает список аргументов, полей или выражение MG87_15PL & MG87_16PL & MG87_17PL & MG87_18PL); порядок элементов сохраняется. */
// End of MG87:
// Beginning of MG88:
+/* Условие компиляции (G81PL >= G88PL) или (G81PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL >= G88PL) || (G81PL == 0)
+/* Задаёт MG88_11PL = ~(1); данные MG88_11PL. */
#define MG88_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG88_11PL = 0xFFFF; данные MG88_11PL. */
#define MG88_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G82PL >= G88PL) или (G82PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL >= G88PL) || (G82PL == 0)
+/* Задаёт MG88_12PL = ~(1 << 1); данные MG88_12PL. */
#define MG88_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG88_12PL = 0xFFFF; данные MG88_12PL. */
#define MG88_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G83PL >= G88PL) или (G83PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G83PL >= G88PL) || (G83PL == 0)
+/* Задаёт MG88_13PL = ~(1 << 2); данные MG88_13PL. */
#define MG88_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG88_13PL = 0xFFFF; данные MG88_13PL. */
#define MG88_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G84PL >= G88PL) или (G84PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G84PL >= G88PL) || (G84PL == 0)
+/* Задаёт MG88_14PL = ~(1 << 3); данные MG88_14PL. */
#define MG88_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG88_14PL = 0xFFFF; данные MG88_14PL. */
#define MG88_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G85PL >= G88PL) или (G85PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL >= G88PL) || (G85PL == 0)
+/* Задаёт MG88_15PL = ~(1 << 4); данные MG88_15PL. */
#define MG88_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG88_15PL = 0xFFFF; данные MG88_15PL. */
#define MG88_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G86PL >= G88PL) или (G86PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL >= G88PL) || (G86PL == 0)
+/* Задаёт MG88_16PL = ~(1 << 5); данные MG88_16PL. */
#define MG88_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG88_16PL = 0xFFFF; данные MG88_16PL. */
#define MG88_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G87PL >= G88PL) или (G87PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G87PL >= G88PL) || (G87PL == 0)
+/* Задаёт MG88_17PL = ~(1 << 6); данные MG88_17PL. */
#define MG88_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG88_17PL = 0xFFFF; данные MG88_17PL. */
#define MG88_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG88_18PL = 0x007F; данные MG88_18PL. */
#define MG88_18PL 0x007F
+/* Задаёт MG88 = (MG88_11PL & MG88_12PL & MG88_13PL & MG88_14PL &; маска разрешённых прерываний внутри группы PIE 88. */
#define MG88 (MG88_11PL & MG88_12PL & MG88_13PL & MG88_14PL & \
- MG88_15PL & MG88_16PL & MG88_17PL & MG88_18PL)
+ MG88_15PL & MG88_16PL & MG88_17PL & MG88_18PL) /* Продолжает список аргументов, полей или выражение MG88_15PL & MG88_16PL & MG88_17PL & MG88_18PL); порядок элементов сохраняется. */
// End of MG88:
//-------------------------------------------------------------------------------
@@ -4515,331 +8281,627 @@ extern "C" {
//
// Beginning of MG91:
+/* Условие компиляции (G92PL >= G91PL) или (G92PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL >= G91PL) || (G92PL == 0)
+/* Задаёт MG91_12PL = ~(1 << 1); данные MG91_12PL. */
#define MG91_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG91_12PL = 0xFFFF; данные MG91_12PL. */
#define MG91_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G93PL >= G91PL) или (G93PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL >= G91PL) || (G93PL == 0)
+/* Задаёт MG91_13PL = ~(1 << 2); данные MG91_13PL. */
#define MG91_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG91_13PL = 0xFFFF; данные MG91_13PL. */
#define MG91_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G94PL >= G91PL) или (G94PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL >= G91PL) || (G94PL == 0)
+/* Задаёт MG91_14PL = ~(1 << 3); данные MG91_14PL. */
#define MG91_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG91_14PL = 0xFFFF; данные MG91_14PL. */
#define MG91_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G95PL >= G91PL) или (G95PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL >= G91PL) || (G95PL == 0)
+/* Задаёт MG91_15PL = ~(1 << 4); данные MG91_15PL. */
#define MG91_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG91_15PL = 0xFFFF; данные MG91_15PL. */
#define MG91_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G96PL >= G91PL) или (G96PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL >= G91PL) || (G96PL == 0)
+/* Задаёт MG91_16PL = ~(1 << 5); данные MG91_16PL. */
#define MG91_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG91_16PL = 0xFFFF; данные MG91_16PL. */
#define MG91_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G97PL >= G91PL) или (G97PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL >= G91PL) || (G97PL == 0)
+/* Задаёт MG91_17PL = ~(1 << 6); данные MG91_17PL. */
#define MG91_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG91_17PL = 0xFFFF; данные MG91_17PL. */
#define MG91_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G98PL >= G91PL) или (G98PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL >= G91PL) || (G98PL == 0)
+/* Задаёт MG91_18PL = ~(1 << 7); данные MG91_18PL. */
#define MG91_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG91_18PL = 0xFFFF; данные MG91_18PL. */
#define MG91_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG91_11PL = 0x00FE; данные MG91_11PL. */
#define MG91_11PL 0x00FE
+/* Задаёт MG91 = (MG91_11PL & MG91_12PL & MG91_13PL & MG91_14PL &; маска разрешённых прерываний внутри группы PIE 91. */
#define MG91 (MG91_11PL & MG91_12PL & MG91_13PL & MG91_14PL & \
- MG91_15PL & MG91_16PL & MG91_17PL & MG91_18PL)
+ MG91_15PL & MG91_16PL & MG91_17PL & MG91_18PL) /* Продолжает список аргументов, полей или выражение MG91_15PL & MG91_16PL & MG91_17PL & MG91_18PL); порядок элементов сохраняется. */
// End of MG91:
// Beginning of MG92:
+/* Условие компиляции (G91PL >= G92PL) или (G91PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL >= G92PL) || (G91PL == 0)
+/* Задаёт MG92_11PL = ~(1); данные MG92_11PL. */
#define MG92_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG92_11PL = 0xFFFF; данные MG92_11PL. */
#define MG92_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G93PL >= G92PL) или (G93PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL >= G92PL) || (G93PL == 0)
+/* Задаёт MG92_13PL = ~(1 << 2); данные MG92_13PL. */
#define MG92_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG92_13PL = 0xFFFF; данные MG92_13PL. */
#define MG92_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G94PL >= G92PL) или (G94PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL >= G92PL) || (G94PL == 0)
+/* Задаёт MG92_14PL = ~(1 << 3); данные MG92_14PL. */
#define MG92_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG92_14PL = 0xFFFF; данные MG92_14PL. */
#define MG92_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G95PL >= G92PL) или (G95PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL >= G92PL) || (G95PL == 0)
+/* Задаёт MG92_15PL = ~(1 << 4); данные MG92_15PL. */
#define MG92_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG92_15PL = 0xFFFF; данные MG92_15PL. */
#define MG92_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G96PL >= G92PL) или (G96PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL >= G92PL) || (G96PL == 0)
+/* Задаёт MG92_16PL = ~(1 << 5); данные MG92_16PL. */
#define MG92_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG92_16PL = 0xFFFF; данные MG92_16PL. */
#define MG92_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G97PL >= G92PL) или (G97PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL >= G92PL) || (G97PL == 0)
+/* Задаёт MG92_17PL = ~(1 << 6); данные MG92_17PL. */
#define MG92_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG92_17PL = 0xFFFF; данные MG92_17PL. */
#define MG92_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G98PL >= G92PL) или (G98PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL >= G92PL) || (G98PL == 0)
+/* Задаёт MG92_18PL = ~(1 << 7); данные MG92_18PL. */
#define MG92_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG92_18PL = 0xFFFF; данные MG92_18PL. */
#define MG92_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG92_12PL = 0x00FD; данные MG92_12PL. */
#define MG92_12PL 0x00FD
+/* Задаёт MG92 = (MG92_11PL & MG92_12PL & MG92_13PL & MG92_14PL &; маска разрешённых прерываний внутри группы PIE 92. */
#define MG92 (MG92_11PL & MG92_12PL & MG92_13PL & MG92_14PL & \
- MG92_15PL & MG92_16PL & MG92_17PL & MG92_18PL)
+ MG92_15PL & MG92_16PL & MG92_17PL & MG92_18PL) /* Продолжает список аргументов, полей или выражение MG92_15PL & MG92_16PL & MG92_17PL & MG92_18PL); порядок элементов сохраняется. */
// End of MG92:
// Beginning of MG93:
+/* Условие компиляции (G91PL >= G93PL) или (G91PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL >= G93PL) || (G91PL == 0)
+/* Задаёт MG93_11PL = ~(1); данные MG93_11PL. */
#define MG93_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG93_11PL = 0xFFFF; данные MG93_11PL. */
#define MG93_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G92PL >= G93PL) или (G92PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL >= G93PL) || (G92PL == 0)
+/* Задаёт MG93_12PL = ~(1 << 1); данные MG93_12PL. */
#define MG93_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG93_12PL = 0xFFFF; данные MG93_12PL. */
#define MG93_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G94PL >= G93PL) или (G94PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL >= G93PL) || (G94PL == 0)
+/* Задаёт MG93_14PL = ~(1 << 3); данные MG93_14PL. */
#define MG93_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG93_14PL = 0xFFFF; данные MG93_14PL. */
#define MG93_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G95PL >= G93PL) или (G95PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL >= G93PL) || (G95PL == 0)
+/* Задаёт MG93_15PL = ~(1 << 4); данные MG93_15PL. */
#define MG93_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG93_15PL = 0xFFFF; данные MG93_15PL. */
#define MG93_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G96PL >= G93PL) или (G96PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL >= G93PL) || (G96PL == 0)
+/* Задаёт MG93_16PL = ~(1 << 5); данные MG93_16PL. */
#define MG93_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG93_16PL = 0xFFFF; данные MG93_16PL. */
#define MG93_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G97PL >= G93PL) или (G97PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL >= G93PL) || (G97PL == 0)
+/* Задаёт MG93_17PL = ~(1 << 6); данные MG93_17PL. */
#define MG93_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG93_17PL = 0xFFFF; данные MG93_17PL. */
#define MG93_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G98PL >= G93PL) или (G98PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL >= G93PL) || (G98PL == 0)
+/* Задаёт MG93_18PL = ~(1 << 7); данные MG93_18PL. */
#define MG93_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG93_18PL = 0xFFFF; данные MG93_18PL. */
#define MG93_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG93_13PL = 0x00FB; данные MG93_13PL. */
#define MG93_13PL 0x00FB
+/* Задаёт MG93 = (MG93_11PL & MG93_12PL & MG93_13PL & MG93_14PL &; маска разрешённых прерываний внутри группы PIE 93. */
#define MG93 (MG93_11PL & MG93_12PL & MG93_13PL & MG93_14PL & \
- MG93_15PL & MG93_16PL & MG93_17PL & MG93_18PL)
+ MG93_15PL & MG93_16PL & MG93_17PL & MG93_18PL) /* Продолжает список аргументов, полей или выражение MG93_15PL & MG93_16PL & MG93_17PL & MG93_18PL); порядок элементов сохраняется. */
// End of MG93:
// Beginning of MG94:
+/* Условие компиляции (G91PL >= G94PL) или (G91PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL >= G94PL) || (G91PL == 0)
+/* Задаёт MG94_11PL = ~(1); данные MG94_11PL. */
#define MG94_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG94_11PL = 0xFFFF; данные MG94_11PL. */
#define MG94_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G92PL >= G94PL) или (G92PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL >= G94PL) || (G92PL == 0)
+/* Задаёт MG94_12PL = ~(1 << 1); данные MG94_12PL. */
#define MG94_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG94_12PL = 0xFFFF; данные MG94_12PL. */
#define MG94_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G93PL >= G94PL) или (G93PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL >= G94PL) || (G93PL == 0)
+/* Задаёт MG94_13PL = ~(1 << 2); данные MG94_13PL. */
#define MG94_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG94_13PL = 0xFFFF; данные MG94_13PL. */
#define MG94_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G95PL >= G94PL) или (G95PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL >= G94PL) || (G95PL == 0)
+/* Задаёт MG94_15PL = ~(1 << 4); данные MG94_15PL. */
#define MG94_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG94_15PL = 0xFFFF; данные MG94_15PL. */
#define MG94_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G96PL >= G94PL) или (G96PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL >= G94PL) || (G96PL == 0)
+/* Задаёт MG94_16PL = ~(1 << 5); данные MG94_16PL. */
#define MG94_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG94_16PL = 0xFFFF; данные MG94_16PL. */
#define MG94_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G97PL >= G94PL) или (G97PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL >= G94PL) || (G97PL == 0)
+/* Задаёт MG94_17PL = ~(1 << 6); данные MG94_17PL. */
#define MG94_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG94_17PL = 0xFFFF; данные MG94_17PL. */
#define MG94_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G98PL >= G94PL) или (G98PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL >= G94PL) || (G98PL == 0)
+/* Задаёт MG94_18PL = ~(1 << 7); данные MG94_18PL. */
#define MG94_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG94_18PL = 0xFFFF; данные MG94_18PL. */
#define MG94_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG94_14PL = 0x00F7; данные MG94_14PL. */
#define MG94_14PL 0x00F7
+/* Задаёт MG94 = (MG94_11PL & MG94_12PL & MG94_13PL & MG94_14PL &; маска разрешённых прерываний внутри группы PIE 94. */
#define MG94 (MG94_11PL & MG94_12PL & MG94_13PL & MG94_14PL & \
- MG94_15PL & MG94_16PL & MG94_17PL & MG94_18PL)
+ MG94_15PL & MG94_16PL & MG94_17PL & MG94_18PL) /* Продолжает список аргументов, полей или выражение MG94_15PL & MG94_16PL & MG94_17PL & MG94_18PL); порядок элементов сохраняется. */
// End of MG94:
// Beginning of MG95:
+/* Условие компиляции (G91PL >= G95PL) или (G91PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL >= G95PL) || (G91PL == 0)
+/* Задаёт MG95_11PL = ~(1); данные MG95_11PL. */
#define MG95_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG95_11PL = 0xFFFF; данные MG95_11PL. */
#define MG95_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G92PL >= G95PL) или (G92PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL >= G95PL) || (G92PL == 0)
+/* Задаёт MG95_12PL = ~(1 << 1); данные MG95_12PL. */
#define MG95_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG95_12PL = 0xFFFF; данные MG95_12PL. */
#define MG95_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G93PL >= G95PL) или (G93PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL >= G95PL) || (G93PL == 0)
+/* Задаёт MG95_13PL = ~(1 << 2); данные MG95_13PL. */
#define MG95_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG95_13PL = 0xFFFF; данные MG95_13PL. */
#define MG95_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G94PL >= G95PL) или (G94PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL >= G95PL) || (G94PL == 0)
+/* Задаёт MG95_14PL = ~(1 << 3); данные MG95_14PL. */
#define MG95_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG95_14PL = 0xFFFF; данные MG95_14PL. */
#define MG95_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G96PL >= G95PL) или (G96PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL >= G95PL) || (G96PL == 0)
+/* Задаёт MG95_16PL = ~(1 << 5); данные MG95_16PL. */
#define MG95_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG95_16PL = 0xFFFF; данные MG95_16PL. */
#define MG95_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G97PL >= G95PL) или (G97PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL >= G95PL) || (G97PL == 0)
+/* Задаёт MG95_17PL = ~(1 << 6); данные MG95_17PL. */
#define MG95_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG95_17PL = 0xFFFF; данные MG95_17PL. */
#define MG95_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G98PL >= G95PL) или (G98PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL >= G95PL) || (G98PL == 0)
+/* Задаёт MG95_18PL = ~(1 << 7); данные MG95_18PL. */
#define MG95_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG95_18PL = 0xFFFF; данные MG95_18PL. */
#define MG95_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG95_15PL = 0x00EF; данные MG95_15PL. */
#define MG95_15PL 0x00EF
+/* Задаёт MG95 = (MG95_11PL & MG95_12PL & MG95_13PL & MG95_14PL &; маска разрешённых прерываний внутри группы PIE 95. */
#define MG95 (MG95_11PL & MG95_12PL & MG95_13PL & MG95_14PL & \
- MG95_15PL & MG95_16PL & MG95_17PL & MG95_18PL)
+ MG95_15PL & MG95_16PL & MG95_17PL & MG95_18PL) /* Продолжает список аргументов, полей или выражение MG95_15PL & MG95_16PL & MG95_17PL & MG95_18PL); порядок элементов сохраняется. */
// End of MG95:
// Beginning of MG96:
+/* Условие компиляции (G91PL >= G96PL) или (G91PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL >= G96PL) || (G91PL == 0)
+/* Задаёт MG96_11PL = ~(1); данные MG96_11PL. */
#define MG96_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG96_11PL = 0xFFFF; данные MG96_11PL. */
#define MG96_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G92PL >= G96PL) или (G92PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL >= G96PL) || (G92PL == 0)
+/* Задаёт MG96_12PL = ~(1 << 1); данные MG96_12PL. */
#define MG96_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG96_12PL = 0xFFFF; данные MG96_12PL. */
#define MG96_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G93PL >= G96PL) или (G93PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL >= G96PL) || (G93PL == 0)
+/* Задаёт MG96_13PL = ~(1 << 2); данные MG96_13PL. */
#define MG96_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG96_13PL = 0xFFFF; данные MG96_13PL. */
#define MG96_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G94PL >= G96PL) или (G94PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL >= G96PL) || (G94PL == 0)
+/* Задаёт MG96_14PL = ~(1 << 3); данные MG96_14PL. */
#define MG96_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG96_14PL = 0xFFFF; данные MG96_14PL. */
#define MG96_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G95PL >= G96PL) или (G95PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL >= G96PL) || (G95PL == 0)
+/* Задаёт MG96_15PL = ~(1 << 4); данные MG96_15PL. */
#define MG96_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG96_15PL = 0xFFFF; данные MG96_15PL. */
#define MG96_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G97PL >= G96PL) или (G97PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL >= G96PL) || (G97PL == 0)
+/* Задаёт MG96_17PL = ~(1 << 6); данные MG96_17PL. */
#define MG96_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG96_17PL = 0xFFFF; данные MG96_17PL. */
#define MG96_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G98PL >= G96PL) или (G98PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL >= G96PL) || (G98PL == 0)
+/* Задаёт MG96_18PL = ~(1 << 7); данные MG96_18PL. */
#define MG96_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG96_18PL = 0xFFFF; данные MG96_18PL. */
#define MG96_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG96_16PL = 0x00DF; данные MG96_16PL. */
#define MG96_16PL 0x00DF
+/* Задаёт MG96 = (MG96_11PL & MG96_12PL & MG96_13PL & MG96_14PL &; маска разрешённых прерываний внутри группы PIE 96. */
#define MG96 (MG96_11PL & MG96_12PL & MG96_13PL & MG96_14PL & \
- MG96_15PL & MG96_16PL & MG96_17PL & MG96_18PL)
+ MG96_15PL & MG96_16PL & MG96_17PL & MG96_18PL) /* Продолжает список аргументов, полей или выражение MG96_15PL & MG96_16PL & MG96_17PL & MG96_18PL); порядок элементов сохраняется. */
// End of MG96:
// Beginning of MG97:
+/* Условие компиляции (G91PL >= G97PL) или (G91PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL >= G97PL) || (G91PL == 0)
+/* Задаёт MG97_11PL = ~(1); данные MG97_11PL. */
#define MG97_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG97_11PL = 0xFFFF; данные MG97_11PL. */
#define MG97_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G92PL >= G97PL) или (G92PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL >= G97PL) || (G92PL == 0)
+/* Задаёт MG97_12PL = ~(1 << 1); данные MG97_12PL. */
#define MG97_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG97_12PL = 0xFFFF; данные MG97_12PL. */
#define MG97_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G93PL >= G97PL) или (G93PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL >= G97PL) || (G93PL == 0)
+/* Задаёт MG97_13PL = ~(1 << 2); данные MG97_13PL. */
#define MG97_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG97_13PL = 0xFFFF; данные MG97_13PL. */
#define MG97_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G94PL >= G97PL) или (G94PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL >= G97PL) || (G94PL == 0)
+/* Задаёт MG97_14PL = ~(1 << 3); данные MG97_14PL. */
#define MG97_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG97_14PL = 0xFFFF; данные MG97_14PL. */
#define MG97_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G95PL >= G97PL) или (G95PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL >= G97PL) || (G95PL == 0)
+/* Задаёт MG97_15PL = ~(1 << 4); данные MG97_15PL. */
#define MG97_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG97_15PL = 0xFFFF; данные MG97_15PL. */
#define MG97_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G96PL >= G97PL) или (G96PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL >= G97PL) || (G96PL == 0)
+/* Задаёт MG97_16PL = ~(1 << 5); данные MG97_16PL. */
#define MG97_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG97_16PL = 0xFFFF; данные MG97_16PL. */
#define MG97_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G98PL >= G97PL) или (G98PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL >= G97PL) || (G98PL == 0)
+/* Задаёт MG97_18PL = ~(1 << 7); данные MG97_18PL. */
#define MG97_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG97_18PL = 0xFFFF; данные MG97_18PL. */
#define MG97_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG97_17PL = 0x00BF; данные MG97_17PL. */
#define MG97_17PL 0x00BF
+/* Задаёт MG97 = (MG97_11PL & MG97_12PL & MG97_13PL & MG97_14PL &; маска разрешённых прерываний внутри группы PIE 97. */
#define MG97 (MG97_11PL & MG97_12PL & MG97_13PL & MG97_14PL & \
- MG97_15PL & MG97_16PL & MG97_17PL & MG97_18PL)
+ MG97_15PL & MG97_16PL & MG97_17PL & MG97_18PL) /* Продолжает список аргументов, полей или выражение MG97_15PL & MG97_16PL & MG97_17PL & MG97_18PL); порядок элементов сохраняется. */
// End of MG97:
// Beginning of MG98:
+/* Условие компиляции (G91PL >= G98PL) или (G91PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL >= G98PL) || (G91PL == 0)
+/* Задаёт MG98_11PL = ~(1); данные MG98_11PL. */
#define MG98_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG98_11PL = 0xFFFF; данные MG98_11PL. */
#define MG98_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G92PL >= G98PL) или (G92PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL >= G98PL) || (G92PL == 0)
+/* Задаёт MG98_12PL = ~(1 << 1); данные MG98_12PL. */
#define MG98_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG98_12PL = 0xFFFF; данные MG98_12PL. */
#define MG98_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G93PL >= G98PL) или (G93PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL >= G98PL) || (G93PL == 0)
+/* Задаёт MG98_13PL = ~(1 << 2); данные MG98_13PL. */
#define MG98_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG98_13PL = 0xFFFF; данные MG98_13PL. */
#define MG98_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G94PL >= G98PL) или (G94PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL >= G98PL) || (G94PL == 0)
+/* Задаёт MG98_14PL = ~(1 << 3); данные MG98_14PL. */
#define MG98_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG98_14PL = 0xFFFF; данные MG98_14PL. */
#define MG98_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G95PL >= G98PL) или (G95PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL >= G98PL) || (G95PL == 0)
+/* Задаёт MG98_15PL = ~(1 << 4); данные MG98_15PL. */
#define MG98_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG98_15PL = 0xFFFF; данные MG98_15PL. */
#define MG98_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G96PL >= G98PL) или (G96PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL >= G98PL) || (G96PL == 0)
+/* Задаёт MG98_16PL = ~(1 << 5); данные MG98_16PL. */
#define MG98_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG98_16PL = 0xFFFF; данные MG98_16PL. */
#define MG98_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G97PL >= G98PL) или (G97PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL >= G98PL) || (G97PL == 0)
+/* Задаёт MG98_17PL = ~(1 << 6); данные MG98_17PL. */
#define MG98_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG98_17PL = 0xFFFF; данные MG98_17PL. */
#define MG98_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG98_18PL = 0x007F; данные MG98_18PL. */
#define MG98_18PL 0x007F
+/* Задаёт MG98 = (MG98_11PL & MG98_12PL & MG98_13PL & MG98_14PL &; маска разрешённых прерываний внутри группы PIE 98. */
#define MG98 (MG98_11PL & MG98_12PL & MG98_13PL & MG98_14PL & \
- MG98_15PL & MG98_16PL & MG98_17PL & MG98_18PL)
+ MG98_15PL & MG98_16PL & MG98_17PL & MG98_18PL) /* Продолжает список аргументов, полей или выражение MG98_15PL & MG98_16PL & MG98_17PL & MG98_18PL); порядок элементов сохраняется. */
// End of MG98:
//-------------------------------------------------------------------------------
@@ -4847,331 +8909,627 @@ extern "C" {
//
// Beginning of MG101:
+/* Условие компиляции (G102PL >= G101PL) или (G102PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G102PL >= G101PL) || (G102PL == 0)
+/* Задаёт MG101_12PL = ~(1 << 1); данные MG101_12PL. */
#define MG101_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG101_12PL = 0xFFFF; данные MG101_12PL. */
#define MG101_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G103PL >= G101PL) или (G103PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G103PL >= G101PL) || (G103PL == 0)
+/* Задаёт MG101_13PL = ~(1 << 2); данные MG101_13PL. */
#define MG101_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG101_13PL = 0xFFFF; данные MG101_13PL. */
#define MG101_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G104PL >= G101PL) или (G104PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G104PL >= G101PL) || (G104PL == 0)
+/* Задаёт MG101_14PL = ~(1 << 3); данные MG101_14PL. */
#define MG101_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG101_14PL = 0xFFFF; данные MG101_14PL. */
#define MG101_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G105PL >= G101PL) или (G105PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G105PL >= G101PL) || (G105PL == 0)
+/* Задаёт MG101_15PL = ~(1 << 4); данные MG101_15PL. */
#define MG101_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG101_15PL = 0xFFFF; данные MG101_15PL. */
#define MG101_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G106PL >= G101PL) или (G106PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G106PL >= G101PL) || (G106PL == 0)
+/* Задаёт MG101_16PL = ~(1 << 5); данные MG101_16PL. */
#define MG101_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG101_16PL = 0xFFFF; данные MG101_16PL. */
#define MG101_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G107PL >= G101PL) или (G107PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G107PL >= G101PL) || (G107PL == 0)
+/* Задаёт MG101_17PL = ~(1 << 6); данные MG101_17PL. */
#define MG101_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG101_17PL = 0xFFFF; данные MG101_17PL. */
#define MG101_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G108PL >= G101PL) или (G108PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G108PL >= G101PL) || (G108PL == 0)
+/* Задаёт MG101_18PL = ~(1 << 7); данные MG101_18PL. */
#define MG101_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG101_18PL = 0xFFFF; данные MG101_18PL. */
#define MG101_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG101_11PL = 0x00FE; данные MG101_11PL. */
#define MG101_11PL 0x00FE
+/* Задаёт MG101 = (MG101_11PL & MG101_12PL & MG101_13PL & MG101_14PL &; маска разрешённых прерываний внутри группы PIE 101. */
#define MG101 (MG101_11PL & MG101_12PL & MG101_13PL & MG101_14PL & \
- MG101_15PL & MG101_16PL & MG101_17PL & MG101_18PL)
+ MG101_15PL & MG101_16PL & MG101_17PL & MG101_18PL) /* Продолжает список аргументов, полей или выражение MG101_15PL & MG101_16PL & MG101_17PL & MG101_18PL); порядок элементов сохраняется. */
// End of MG101:
// Beginning of MG102:
+/* Условие компиляции (G101PL >= G102PL) или (G101PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G101PL >= G102PL) || (G101PL == 0)
+/* Задаёт MG102_11PL = ~(1); данные MG102_11PL. */
#define MG102_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG102_11PL = 0xFFFF; данные MG102_11PL. */
#define MG102_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G103PL >= G102PL) или (G103PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G103PL >= G102PL) || (G103PL == 0)
+/* Задаёт MG102_13PL = ~(1 << 2); данные MG102_13PL. */
#define MG102_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG102_13PL = 0xFFFF; данные MG102_13PL. */
#define MG102_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G104PL >= G102PL) или (G104PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G104PL >= G102PL) || (G104PL == 0)
+/* Задаёт MG102_14PL = ~(1 << 3); данные MG102_14PL. */
#define MG102_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG102_14PL = 0xFFFF; данные MG102_14PL. */
#define MG102_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G105PL >= G102PL) или (G105PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G105PL >= G102PL) || (G105PL == 0)
+/* Задаёт MG102_15PL = ~(1 << 4); данные MG102_15PL. */
#define MG102_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG102_15PL = 0xFFFF; данные MG102_15PL. */
#define MG102_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G106PL >= G102PL) или (G106PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G106PL >= G102PL) || (G106PL == 0)
+/* Задаёт MG102_16PL = ~(1 << 5); данные MG102_16PL. */
#define MG102_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG102_16PL = 0xFFFF; данные MG102_16PL. */
#define MG102_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G107PL >= G102PL) или (G107PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G107PL >= G102PL) || (G107PL == 0)
+/* Задаёт MG102_17PL = ~(1 << 6); данные MG102_17PL. */
#define MG102_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG102_17PL = 0xFFFF; данные MG102_17PL. */
#define MG102_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G108PL >= G102PL) или (G108PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G108PL >= G102PL) || (G108PL == 0)
+/* Задаёт MG102_18PL = ~(1 << 7); данные MG102_18PL. */
#define MG102_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG102_18PL = 0xFFFF; данные MG102_18PL. */
#define MG102_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG102_12PL = 0x00FD; данные MG102_12PL. */
#define MG102_12PL 0x00FD
+/* Задаёт MG102 = (MG102_11PL & MG102_12PL & MG102_13PL & MG102_14PL &; маска разрешённых прерываний внутри группы PIE 102. */
#define MG102 (MG102_11PL & MG102_12PL & MG102_13PL & MG102_14PL & \
- MG102_15PL & MG102_16PL & MG102_17PL & MG102_18PL)
+ MG102_15PL & MG102_16PL & MG102_17PL & MG102_18PL) /* Продолжает список аргументов, полей или выражение MG102_15PL & MG102_16PL & MG102_17PL & MG102_18PL); порядок элементов сохраняется. */
// End of MG102:
// Beginning of MG103:
+/* Условие компиляции (G101PL >= G103PL) или (G101PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G101PL >= G103PL) || (G101PL == 0)
+/* Задаёт MG103_11PL = ~(1); данные MG103_11PL. */
#define MG103_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG103_11PL = 0xFFFF; данные MG103_11PL. */
#define MG103_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G102PL >= G103PL) или (G102PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G102PL >= G103PL) || (G102PL == 0)
+/* Задаёт MG103_12PL = ~(1 << 1); данные MG103_12PL. */
#define MG103_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG103_12PL = 0xFFFF; данные MG103_12PL. */
#define MG103_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G104PL >= G103PL) или (G104PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G104PL >= G103PL) || (G104PL == 0)
+/* Задаёт MG103_14PL = ~(1 << 3); данные MG103_14PL. */
#define MG103_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG103_14PL = 0xFFFF; данные MG103_14PL. */
#define MG103_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G105PL >= G103PL) или (G105PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G105PL >= G103PL) || (G105PL == 0)
+/* Задаёт MG103_15PL = ~(1 << 4); данные MG103_15PL. */
#define MG103_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG103_15PL = 0xFFFF; данные MG103_15PL. */
#define MG103_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G106PL >= G103PL) или (G106PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G106PL >= G103PL) || (G106PL == 0)
+/* Задаёт MG103_16PL = ~(1 << 5); данные MG103_16PL. */
#define MG103_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG103_16PL = 0xFFFF; данные MG103_16PL. */
#define MG103_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G107PL >= G103PL) или (G107PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G107PL >= G103PL) || (G107PL == 0)
+/* Задаёт MG103_17PL = ~(1 << 6); данные MG103_17PL. */
#define MG103_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG103_17PL = 0xFFFF; данные MG103_17PL. */
#define MG103_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G108PL >= G103PL) или (G108PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G108PL >= G103PL) || (G108PL == 0)
+/* Задаёт MG103_18PL = ~(1 << 7); данные MG103_18PL. */
#define MG103_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG103_18PL = 0xFFFF; данные MG103_18PL. */
#define MG103_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG103_13PL = 0x00FB; данные MG103_13PL. */
#define MG103_13PL 0x00FB
+/* Задаёт MG103 = (MG103_11PL & MG103_12PL & MG103_13PL & MG103_14PL &; маска разрешённых прерываний внутри группы PIE 103. */
#define MG103 (MG103_11PL & MG103_12PL & MG103_13PL & MG103_14PL & \
- MG103_15PL & MG103_16PL & MG103_17PL & MG103_18PL)
+ MG103_15PL & MG103_16PL & MG103_17PL & MG103_18PL) /* Продолжает список аргументов, полей или выражение MG103_15PL & MG103_16PL & MG103_17PL & MG103_18PL); порядок элементов сохраняется. */
// End of MG103:
// Beginning of MG104:
+/* Условие компиляции (G101PL >= G104PL) или (G101PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G101PL >= G104PL) || (G101PL == 0)
+/* Задаёт MG104_11PL = ~(1); данные MG104_11PL. */
#define MG104_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG104_11PL = 0xFFFF; данные MG104_11PL. */
#define MG104_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G102PL >= G104PL) или (G102PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G102PL >= G104PL) || (G102PL == 0)
+/* Задаёт MG104_12PL = ~(1 << 1); данные MG104_12PL. */
#define MG104_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG104_12PL = 0xFFFF; данные MG104_12PL. */
#define MG104_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G103PL >= G104PL) или (G103PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G103PL >= G104PL) || (G103PL == 0)
+/* Задаёт MG104_13PL = ~(1 << 2); данные MG104_13PL. */
#define MG104_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG104_13PL = 0xFFFF; данные MG104_13PL. */
#define MG104_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G105PL >= G104PL) или (G105PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G105PL >= G104PL) || (G105PL == 0)
+/* Задаёт MG104_15PL = ~(1 << 4); данные MG104_15PL. */
#define MG104_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG104_15PL = 0xFFFF; данные MG104_15PL. */
#define MG104_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G106PL >= G104PL) или (G106PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G106PL >= G104PL) || (G106PL == 0)
+/* Задаёт MG104_16PL = ~(1 << 5); данные MG104_16PL. */
#define MG104_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG104_16PL = 0xFFFF; данные MG104_16PL. */
#define MG104_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G107PL >= G104PL) или (G107PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G107PL >= G104PL) || (G107PL == 0)
+/* Задаёт MG104_17PL = ~(1 << 6); данные MG104_17PL. */
#define MG104_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG104_17PL = 0xFFFF; данные MG104_17PL. */
#define MG104_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G108PL >= G104PL) или (G108PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G108PL >= G104PL) || (G108PL == 0)
+/* Задаёт MG104_18PL = ~(1 << 7); данные MG104_18PL. */
#define MG104_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG104_18PL = 0xFFFF; данные MG104_18PL. */
#define MG104_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG104_14PL = 0x00F7; данные MG104_14PL. */
#define MG104_14PL 0x00F7
+/* Задаёт MG104 = (MG104_11PL & MG104_12PL & MG104_13PL & MG104_14PL &; маска разрешённых прерываний внутри группы PIE 104. */
#define MG104 (MG104_11PL & MG104_12PL & MG104_13PL & MG104_14PL & \
- MG104_15PL & MG104_16PL & MG104_17PL & MG104_18PL)
+ MG104_15PL & MG104_16PL & MG104_17PL & MG104_18PL) /* Продолжает список аргументов, полей или выражение MG104_15PL & MG104_16PL & MG104_17PL & MG104_18PL); порядок элементов сохраняется. */
// End of MG104:
// Beginning of MG105:
+/* Условие компиляции (G101PL >= G105PL) или (G101PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G101PL >= G105PL) || (G101PL == 0)
+/* Задаёт MG105_11PL = ~(1); данные MG105_11PL. */
#define MG105_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG105_11PL = 0xFFFF; данные MG105_11PL. */
#define MG105_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G102PL >= G105PL) или (G102PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G102PL >= G105PL) || (G102PL == 0)
+/* Задаёт MG105_12PL = ~(1 << 1); данные MG105_12PL. */
#define MG105_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG105_12PL = 0xFFFF; данные MG105_12PL. */
#define MG105_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G103PL >= G105PL) или (G103PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G103PL >= G105PL) || (G103PL == 0)
+/* Задаёт MG105_13PL = ~(1 << 2); данные MG105_13PL. */
#define MG105_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG105_13PL = 0xFFFF; данные MG105_13PL. */
#define MG105_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G104PL >= G105PL) или (G104PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G104PL >= G105PL) || (G104PL == 0)
+/* Задаёт MG105_14PL = ~(1 << 3); данные MG105_14PL. */
#define MG105_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG105_14PL = 0xFFFF; данные MG105_14PL. */
#define MG105_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G106PL >= G105PL) или (G106PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G106PL >= G105PL) || (G106PL == 0)
+/* Задаёт MG105_16PL = ~(1 << 5); данные MG105_16PL. */
#define MG105_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG105_16PL = 0xFFFF; данные MG105_16PL. */
#define MG105_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G107PL >= G105PL) или (G107PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G107PL >= G105PL) || (G107PL == 0)
+/* Задаёт MG105_17PL = ~(1 << 6); данные MG105_17PL. */
#define MG105_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG105_17PL = 0xFFFF; данные MG105_17PL. */
#define MG105_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G108PL >= G105PL) или (G108PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G108PL >= G105PL) || (G108PL == 0)
+/* Задаёт MG105_18PL = ~(1 << 7); данные MG105_18PL. */
#define MG105_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG105_18PL = 0xFFFF; данные MG105_18PL. */
#define MG105_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG105_15PL = 0x00EF; данные MG105_15PL. */
#define MG105_15PL 0x00EF
+/* Задаёт MG105 = (MG105_11PL & MG105_12PL & MG105_13PL & MG105_14PL &; маска разрешённых прерываний внутри группы PIE 105. */
#define MG105 (MG105_11PL & MG105_12PL & MG105_13PL & MG105_14PL & \
- MG105_15PL & MG105_16PL & MG105_17PL & MG105_18PL)
+ MG105_15PL & MG105_16PL & MG105_17PL & MG105_18PL) /* Продолжает список аргументов, полей или выражение MG105_15PL & MG105_16PL & MG105_17PL & MG105_18PL); порядок элементов сохраняется. */
// End of MG105:
// Beginning of MG106:
+/* Условие компиляции (G101PL >= G106PL) или (G101PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G101PL >= G106PL) || (G101PL == 0)
+/* Задаёт MG106_11PL = ~(1); данные MG106_11PL. */
#define MG106_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG106_11PL = 0xFFFF; данные MG106_11PL. */
#define MG106_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G102PL >= G106PL) или (G102PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G102PL >= G106PL) || (G102PL == 0)
+/* Задаёт MG106_12PL = ~(1 << 1); данные MG106_12PL. */
#define MG106_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG106_12PL = 0xFFFF; данные MG106_12PL. */
#define MG106_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G103PL >= G106PL) или (G103PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G103PL >= G106PL) || (G103PL == 0)
+/* Задаёт MG106_13PL = ~(1 << 2); данные MG106_13PL. */
#define MG106_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG106_13PL = 0xFFFF; данные MG106_13PL. */
#define MG106_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G104PL >= G106PL) или (G104PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G104PL >= G106PL) || (G104PL == 0)
+/* Задаёт MG106_14PL = ~(1 << 3); данные MG106_14PL. */
#define MG106_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG106_14PL = 0xFFFF; данные MG106_14PL. */
#define MG106_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G105PL >= G106PL) или (G105PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G105PL >= G106PL) || (G105PL == 0)
+/* Задаёт MG106_15PL = ~(1 << 4); данные MG106_15PL. */
#define MG106_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG106_15PL = 0xFFFF; данные MG106_15PL. */
#define MG106_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G107PL >= G106PL) или (G107PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G107PL >= G106PL) || (G107PL == 0)
+/* Задаёт MG106_17PL = ~(1 << 6); данные MG106_17PL. */
#define MG106_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG106_17PL = 0xFFFF; данные MG106_17PL. */
#define MG106_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G108PL >= G106PL) или (G108PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G108PL >= G106PL) || (G108PL == 0)
+/* Задаёт MG106_18PL = ~(1 << 7); данные MG106_18PL. */
#define MG106_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG106_18PL = 0xFFFF; данные MG106_18PL. */
#define MG106_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG106_16PL = 0x00DF; данные MG106_16PL. */
#define MG106_16PL 0x00DF
+/* Задаёт MG106 = (MG106_11PL & MG106_12PL & MG106_13PL & MG106_14PL &; маска разрешённых прерываний внутри группы PIE 106. */
#define MG106 (MG106_11PL & MG106_12PL & MG106_13PL & MG106_14PL & \
- MG106_15PL & MG106_16PL & MG106_17PL & MG106_18PL)
+ MG106_15PL & MG106_16PL & MG106_17PL & MG106_18PL) /* Продолжает список аргументов, полей или выражение MG106_15PL & MG106_16PL & MG106_17PL & MG106_18PL); порядок элементов сохраняется. */
// End of MG106:
// Beginning of MG107:
+/* Условие компиляции (G101PL >= G107PL) или (G101PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G101PL >= G107PL) || (G101PL == 0)
+/* Задаёт MG107_11PL = ~(1); данные MG107_11PL. */
#define MG107_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG107_11PL = 0xFFFF; данные MG107_11PL. */
#define MG107_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G102PL >= G107PL) или (G102PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G102PL >= G107PL) || (G102PL == 0)
+/* Задаёт MG107_12PL = ~(1 << 1); данные MG107_12PL. */
#define MG107_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG107_12PL = 0xFFFF; данные MG107_12PL. */
#define MG107_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G103PL >= G107PL) или (G103PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G103PL >= G107PL) || (G103PL == 0)
+/* Задаёт MG107_13PL = ~(1 << 2); данные MG107_13PL. */
#define MG107_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG107_13PL = 0xFFFF; данные MG107_13PL. */
#define MG107_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G104PL >= G107PL) или (G104PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G104PL >= G107PL) || (G104PL == 0)
+/* Задаёт MG107_14PL = ~(1 << 3); данные MG107_14PL. */
#define MG107_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG107_14PL = 0xFFFF; данные MG107_14PL. */
#define MG107_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G105PL >= G107PL) или (G105PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G105PL >= G107PL) || (G105PL == 0)
+/* Задаёт MG107_15PL = ~(1 << 4); данные MG107_15PL. */
#define MG107_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG107_15PL = 0xFFFF; данные MG107_15PL. */
#define MG107_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G106PL >= G107PL) или (G106PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G106PL >= G107PL) || (G106PL == 0)
+/* Задаёт MG107_16PL = ~(1 << 5); данные MG107_16PL. */
#define MG107_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG107_16PL = 0xFFFF; данные MG107_16PL. */
#define MG107_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G108PL >= G107PL) или (G108PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G108PL >= G107PL) || (G108PL == 0)
+/* Задаёт MG107_18PL = ~(1 << 7); данные MG107_18PL. */
#define MG107_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG107_18PL = 0xFFFF; данные MG107_18PL. */
#define MG107_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG107_17PL = 0x00BF; данные MG107_17PL. */
#define MG107_17PL 0x00BF
+/* Задаёт MG107 = (MG107_11PL & MG107_12PL & MG107_13PL & MG107_14PL &; маска разрешённых прерываний внутри группы PIE 107. */
#define MG107 (MG107_11PL & MG107_12PL & MG107_13PL & MG107_14PL & \
- MG107_15PL & MG107_16PL & MG107_17PL & MG107_18PL)
+ MG107_15PL & MG107_16PL & MG107_17PL & MG107_18PL) /* Продолжает список аргументов, полей или выражение MG107_15PL & MG107_16PL & MG107_17PL & MG107_18PL); порядок элементов сохраняется. */
// End of MG107:
// Beginning of MG108:
+/* Условие компиляции (G101PL >= G108PL) или (G101PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G101PL >= G108PL) || (G101PL == 0)
+/* Задаёт MG108_11PL = ~(1); данные MG108_11PL. */
#define MG108_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG108_11PL = 0xFFFF; данные MG108_11PL. */
#define MG108_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G102PL >= G108PL) или (G102PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G102PL >= G108PL) || (G102PL == 0)
+/* Задаёт MG108_12PL = ~(1 << 1); данные MG108_12PL. */
#define MG108_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG108_12PL = 0xFFFF; данные MG108_12PL. */
#define MG108_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G103PL >= G108PL) или (G103PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G103PL >= G108PL) || (G103PL == 0)
+/* Задаёт MG108_13PL = ~(1 << 2); данные MG108_13PL. */
#define MG108_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG108_13PL = 0xFFFF; данные MG108_13PL. */
#define MG108_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G104PL >= G108PL) или (G104PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G104PL >= G108PL) || (G104PL == 0)
+/* Задаёт MG108_14PL = ~(1 << 3); данные MG108_14PL. */
#define MG108_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG108_14PL = 0xFFFF; данные MG108_14PL. */
#define MG108_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G105PL >= G108PL) или (G105PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G105PL >= G108PL) || (G105PL == 0)
+/* Задаёт MG108_15PL = ~(1 << 4); данные MG108_15PL. */
#define MG108_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG108_15PL = 0xFFFF; данные MG108_15PL. */
#define MG108_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G106PL >= G108PL) или (G106PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G106PL >= G108PL) || (G106PL == 0)
+/* Задаёт MG108_16PL = ~(1 << 5); данные MG108_16PL. */
#define MG108_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG108_16PL = 0xFFFF; данные MG108_16PL. */
#define MG108_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G107PL >= G108PL) или (G107PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G107PL >= G108PL) || (G107PL == 0)
+/* Задаёт MG108_17PL = ~(1 << 6); данные MG108_17PL. */
#define MG108_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG108_17PL = 0xFFFF; данные MG108_17PL. */
#define MG108_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG108_18PL = 0x007F; данные MG108_18PL. */
#define MG108_18PL 0x007F
+/* Задаёт MG108 = (MG108_11PL & MG108_12PL & MG108_13PL & MG108_14PL &; маска разрешённых прерываний внутри группы PIE 108. */
#define MG108 (MG108_11PL & MG108_12PL & MG108_13PL & MG108_14PL & \
- MG108_15PL & MG108_16PL & MG108_17PL & MG108_18PL)
+ MG108_15PL & MG108_16PL & MG108_17PL & MG108_18PL) /* Продолжает список аргументов, полей или выражение MG108_15PL & MG108_16PL & MG108_17PL & MG108_18PL); порядок элементов сохраняется. */
// End of MG108:
//-------------------------------------------------------------------------------
@@ -5179,331 +9537,627 @@ extern "C" {
//
// Beginning of MG111:
+/* Условие компиляции (G112PL >= G111PL) или (G112PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G112PL >= G111PL) || (G112PL == 0)
+/* Задаёт MG111_12PL = ~(1 << 1); данные MG111_12PL. */
#define MG111_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG111_12PL = 0xFFFF; данные MG111_12PL. */
#define MG111_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G113PL >= G111PL) или (G113PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G113PL >= G111PL) || (G113PL == 0)
+/* Задаёт MG111_13PL = ~(1 << 2); данные MG111_13PL. */
#define MG111_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG111_13PL = 0xFFFF; данные MG111_13PL. */
#define MG111_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G114PL >= G111PL) или (G114PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G114PL >= G111PL) || (G114PL == 0)
+/* Задаёт MG111_14PL = ~(1 << 3); данные MG111_14PL. */
#define MG111_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG111_14PL = 0xFFFF; данные MG111_14PL. */
#define MG111_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G115PL >= G111PL) или (G115PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G115PL >= G111PL) || (G115PL == 0)
+/* Задаёт MG111_15PL = ~(1 << 4); данные MG111_15PL. */
#define MG111_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG111_15PL = 0xFFFF; данные MG111_15PL. */
#define MG111_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G116PL >= G111PL) или (G116PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G116PL >= G111PL) || (G116PL == 0)
+/* Задаёт MG111_16PL = ~(1 << 5); данные MG111_16PL. */
#define MG111_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG111_16PL = 0xFFFF; данные MG111_16PL. */
#define MG111_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G117PL >= G111PL) или (G117PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G117PL >= G111PL) || (G117PL == 0)
+/* Задаёт MG111_17PL = ~(1 << 6); данные MG111_17PL. */
#define MG111_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG111_17PL = 0xFFFF; данные MG111_17PL. */
#define MG111_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G118PL >= G111PL) или (G118PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G118PL >= G111PL) || (G118PL == 0)
+/* Задаёт MG111_18PL = ~(1 << 7); данные MG111_18PL. */
#define MG111_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG111_18PL = 0xFFFF; данные MG111_18PL. */
#define MG111_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG111_11PL = 0x00FE; данные MG111_11PL. */
#define MG111_11PL 0x00FE
+/* Задаёт MG111 = (MG111_11PL & MG111_12PL & MG111_13PL & MG111_14PL &; маска разрешённых прерываний внутри группы PIE 111. */
#define MG111 (MG111_11PL & MG111_12PL & MG111_13PL & MG111_14PL & \
- MG111_15PL & MG111_16PL & MG111_17PL & MG111_18PL)
+ MG111_15PL & MG111_16PL & MG111_17PL & MG111_18PL) /* Продолжает список аргументов, полей или выражение MG111_15PL & MG111_16PL & MG111_17PL & MG111_18PL); порядок элементов сохраняется. */
// End of MG111:
// Beginning of MG112:
+/* Условие компиляции (G111PL >= G112PL) или (G111PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G111PL >= G112PL) || (G111PL == 0)
+/* Задаёт MG112_11PL = ~(1); данные MG112_11PL. */
#define MG112_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG112_11PL = 0xFFFF; данные MG112_11PL. */
#define MG112_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G113PL >= G112PL) или (G113PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G113PL >= G112PL) || (G113PL == 0)
+/* Задаёт MG112_13PL = ~(1 << 2); данные MG112_13PL. */
#define MG112_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG112_13PL = 0xFFFF; данные MG112_13PL. */
#define MG112_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G114PL >= G112PL) или (G114PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G114PL >= G112PL) || (G114PL == 0)
+/* Задаёт MG112_14PL = ~(1 << 3); данные MG112_14PL. */
#define MG112_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG112_14PL = 0xFFFF; данные MG112_14PL. */
#define MG112_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G115PL >= G112PL) или (G115PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G115PL >= G112PL) || (G115PL == 0)
+/* Задаёт MG112_15PL = ~(1 << 4); данные MG112_15PL. */
#define MG112_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG112_15PL = 0xFFFF; данные MG112_15PL. */
#define MG112_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G116PL >= G112PL) или (G116PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G116PL >= G112PL) || (G116PL == 0)
+/* Задаёт MG112_16PL = ~(1 << 5); данные MG112_16PL. */
#define MG112_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG112_16PL = 0xFFFF; данные MG112_16PL. */
#define MG112_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G117PL >= G112PL) или (G117PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G117PL >= G112PL) || (G117PL == 0)
+/* Задаёт MG112_17PL = ~(1 << 6); данные MG112_17PL. */
#define MG112_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG112_17PL = 0xFFFF; данные MG112_17PL. */
#define MG112_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G118PL >= G112PL) или (G118PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G118PL >= G112PL) || (G118PL == 0)
+/* Задаёт MG112_18PL = ~(1 << 7); данные MG112_18PL. */
#define MG112_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG112_18PL = 0xFFFF; данные MG112_18PL. */
#define MG112_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG112_12PL = 0x00FD; данные MG112_12PL. */
#define MG112_12PL 0x00FD
+/* Задаёт MG112 = (MG112_11PL & MG112_12PL & MG112_13PL & MG112_14PL &; маска разрешённых прерываний внутри группы PIE 112. */
#define MG112 (MG112_11PL & MG112_12PL & MG112_13PL & MG112_14PL & \
- MG112_15PL & MG112_16PL & MG112_17PL & MG112_18PL)
+ MG112_15PL & MG112_16PL & MG112_17PL & MG112_18PL) /* Продолжает список аргументов, полей или выражение MG112_15PL & MG112_16PL & MG112_17PL & MG112_18PL); порядок элементов сохраняется. */
// End of MG112:
// Beginning of MG113:
+/* Условие компиляции (G111PL >= G113PL) или (G111PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G111PL >= G113PL) || (G111PL == 0)
+/* Задаёт MG113_11PL = ~(1); данные MG113_11PL. */
#define MG113_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG113_11PL = 0xFFFF; данные MG113_11PL. */
#define MG113_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G112PL >= G113PL) или (G112PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G112PL >= G113PL) || (G112PL == 0)
+/* Задаёт MG113_12PL = ~(1 << 1); данные MG113_12PL. */
#define MG113_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG113_12PL = 0xFFFF; данные MG113_12PL. */
#define MG113_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G114PL >= G113PL) или (G114PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G114PL >= G113PL) || (G114PL == 0)
+/* Задаёт MG113_14PL = ~(1 << 3); данные MG113_14PL. */
#define MG113_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG113_14PL = 0xFFFF; данные MG113_14PL. */
#define MG113_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G115PL >= G113PL) или (G115PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G115PL >= G113PL) || (G115PL == 0)
+/* Задаёт MG113_15PL = ~(1 << 4); данные MG113_15PL. */
#define MG113_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG113_15PL = 0xFFFF; данные MG113_15PL. */
#define MG113_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G116PL >= G113PL) или (G116PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G116PL >= G113PL) || (G116PL == 0)
+/* Задаёт MG113_16PL = ~(1 << 5); данные MG113_16PL. */
#define MG113_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG113_16PL = 0xFFFF; данные MG113_16PL. */
#define MG113_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G117PL >= G113PL) или (G117PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G117PL >= G113PL) || (G117PL == 0)
+/* Задаёт MG113_17PL = ~(1 << 6); данные MG113_17PL. */
#define MG113_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG113_17PL = 0xFFFF; данные MG113_17PL. */
#define MG113_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G118PL >= G113PL) или (G118PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G118PL >= G113PL) || (G118PL == 0)
+/* Задаёт MG113_18PL = ~(1 << 7); данные MG113_18PL. */
#define MG113_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG113_18PL = 0xFFFF; данные MG113_18PL. */
#define MG113_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG113_13PL = 0x00FB; данные MG113_13PL. */
#define MG113_13PL 0x00FB
+/* Задаёт MG113 = (MG113_11PL & MG113_12PL & MG113_13PL & MG113_14PL &; маска разрешённых прерываний внутри группы PIE 113. */
#define MG113 (MG113_11PL & MG113_12PL & MG113_13PL & MG113_14PL & \
- MG113_15PL & MG113_16PL & MG113_17PL & MG113_18PL)
+ MG113_15PL & MG113_16PL & MG113_17PL & MG113_18PL) /* Продолжает список аргументов, полей или выражение MG113_15PL & MG113_16PL & MG113_17PL & MG113_18PL); порядок элементов сохраняется. */
// End of MG113:
// Beginning of MG114:
+/* Условие компиляции (G111PL >= G114PL) или (G111PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G111PL >= G114PL) || (G111PL == 0)
+/* Задаёт MG114_11PL = ~(1); данные MG114_11PL. */
#define MG114_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG114_11PL = 0xFFFF; данные MG114_11PL. */
#define MG114_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G112PL >= G114PL) или (G112PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G112PL >= G114PL) || (G112PL == 0)
+/* Задаёт MG114_12PL = ~(1 << 1); данные MG114_12PL. */
#define MG114_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG114_12PL = 0xFFFF; данные MG114_12PL. */
#define MG114_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G113PL >= G114PL) или (G113PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G113PL >= G114PL) || (G113PL == 0)
+/* Задаёт MG114_13PL = ~(1 << 2); данные MG114_13PL. */
#define MG114_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG114_13PL = 0xFFFF; данные MG114_13PL. */
#define MG114_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G115PL >= G114PL) или (G115PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G115PL >= G114PL) || (G115PL == 0)
+/* Задаёт MG114_15PL = ~(1 << 4); данные MG114_15PL. */
#define MG114_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG114_15PL = 0xFFFF; данные MG114_15PL. */
#define MG114_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G116PL >= G114PL) или (G116PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G116PL >= G114PL) || (G116PL == 0)
+/* Задаёт MG114_16PL = ~(1 << 5); данные MG114_16PL. */
#define MG114_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG114_16PL = 0xFFFF; данные MG114_16PL. */
#define MG114_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G117PL >= G114PL) или (G117PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G117PL >= G114PL) || (G117PL == 0)
+/* Задаёт MG114_17PL = ~(1 << 6); данные MG114_17PL. */
#define MG114_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG114_17PL = 0xFFFF; данные MG114_17PL. */
#define MG114_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G118PL >= G114PL) или (G118PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G118PL >= G114PL) || (G118PL == 0)
+/* Задаёт MG114_18PL = ~(1 << 7); данные MG114_18PL. */
#define MG114_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG114_18PL = 0xFFFF; данные MG114_18PL. */
#define MG114_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG114_14PL = 0x00F7; данные MG114_14PL. */
#define MG114_14PL 0x00F7
+/* Задаёт MG114 = (MG114_11PL & MG114_12PL & MG114_13PL & MG114_14PL &; маска разрешённых прерываний внутри группы PIE 114. */
#define MG114 (MG114_11PL & MG114_12PL & MG114_13PL & MG114_14PL & \
- MG114_15PL & MG114_16PL & MG114_17PL & MG114_18PL)
+ MG114_15PL & MG114_16PL & MG114_17PL & MG114_18PL) /* Продолжает список аргументов, полей или выражение MG114_15PL & MG114_16PL & MG114_17PL & MG114_18PL); порядок элементов сохраняется. */
// End of MG114:
// Beginning of MG115:
+/* Условие компиляции (G111PL >= G115PL) или (G111PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G111PL >= G115PL) || (G111PL == 0)
+/* Задаёт MG115_11PL = ~(1); данные MG115_11PL. */
#define MG115_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG115_11PL = 0xFFFF; данные MG115_11PL. */
#define MG115_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G112PL >= G115PL) или (G112PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G112PL >= G115PL) || (G112PL == 0)
+/* Задаёт MG115_12PL = ~(1 << 1); данные MG115_12PL. */
#define MG115_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG115_12PL = 0xFFFF; данные MG115_12PL. */
#define MG115_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G113PL >= G115PL) или (G113PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G113PL >= G115PL) || (G113PL == 0)
+/* Задаёт MG115_13PL = ~(1 << 2); данные MG115_13PL. */
#define MG115_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG115_13PL = 0xFFFF; данные MG115_13PL. */
#define MG115_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G114PL >= G115PL) или (G114PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G114PL >= G115PL) || (G114PL == 0)
+/* Задаёт MG115_14PL = ~(1 << 3); данные MG115_14PL. */
#define MG115_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG115_14PL = 0xFFFF; данные MG115_14PL. */
#define MG115_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G116PL >= G115PL) или (G116PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G116PL >= G115PL) || (G116PL == 0)
+/* Задаёт MG115_16PL = ~(1 << 5); данные MG115_16PL. */
#define MG115_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG115_16PL = 0xFFFF; данные MG115_16PL. */
#define MG115_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G117PL >= G115PL) или (G117PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G117PL >= G115PL) || (G117PL == 0)
+/* Задаёт MG115_17PL = ~(1 << 6); данные MG115_17PL. */
#define MG115_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG115_17PL = 0xFFFF; данные MG115_17PL. */
#define MG115_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G118PL >= G115PL) или (G118PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G118PL >= G115PL) || (G118PL == 0)
+/* Задаёт MG115_18PL = ~(1 << 7); данные MG115_18PL. */
#define MG115_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG115_18PL = 0xFFFF; данные MG115_18PL. */
#define MG115_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG115_15PL = 0x00EF; данные MG115_15PL. */
#define MG115_15PL 0x00EF
+/* Задаёт MG115 = (MG115_11PL & MG115_12PL & MG115_13PL & MG115_14PL &; маска разрешённых прерываний внутри группы PIE 115. */
#define MG115 (MG115_11PL & MG115_12PL & MG115_13PL & MG115_14PL & \
- MG115_15PL & MG115_16PL & MG115_17PL & MG115_18PL)
+ MG115_15PL & MG115_16PL & MG115_17PL & MG115_18PL) /* Продолжает список аргументов, полей или выражение MG115_15PL & MG115_16PL & MG115_17PL & MG115_18PL); порядок элементов сохраняется. */
// End of MG115:
// Beginning of MG116:
+/* Условие компиляции (G111PL >= G116PL) или (G111PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G111PL >= G116PL) || (G111PL == 0)
+/* Задаёт MG116_11PL = ~(1); данные MG116_11PL. */
#define MG116_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG116_11PL = 0xFFFF; данные MG116_11PL. */
#define MG116_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G112PL >= G116PL) или (G112PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G112PL >= G116PL) || (G112PL == 0)
+/* Задаёт MG116_12PL = ~(1 << 1); данные MG116_12PL. */
#define MG116_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG116_12PL = 0xFFFF; данные MG116_12PL. */
#define MG116_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G113PL >= G116PL) или (G113PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G113PL >= G116PL) || (G113PL == 0)
+/* Задаёт MG116_13PL = ~(1 << 2); данные MG116_13PL. */
#define MG116_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG116_13PL = 0xFFFF; данные MG116_13PL. */
#define MG116_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G114PL >= G116PL) или (G114PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G114PL >= G116PL) || (G114PL == 0)
+/* Задаёт MG116_14PL = ~(1 << 3); данные MG116_14PL. */
#define MG116_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG116_14PL = 0xFFFF; данные MG116_14PL. */
#define MG116_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G115PL >= G116PL) или (G115PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G115PL >= G116PL) || (G115PL == 0)
+/* Задаёт MG116_15PL = ~(1 << 4); данные MG116_15PL. */
#define MG116_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG116_15PL = 0xFFFF; данные MG116_15PL. */
#define MG116_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G117PL >= G116PL) или (G117PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G117PL >= G116PL) || (G117PL == 0)
+/* Задаёт MG116_17PL = ~(1 << 6); данные MG116_17PL. */
#define MG116_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG116_17PL = 0xFFFF; данные MG116_17PL. */
#define MG116_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G118PL >= G116PL) или (G118PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G118PL >= G116PL) || (G118PL == 0)
+/* Задаёт MG116_18PL = ~(1 << 7); данные MG116_18PL. */
#define MG116_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG116_18PL = 0xFFFF; данные MG116_18PL. */
#define MG116_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG116_16PL = 0x00DF; данные MG116_16PL. */
#define MG116_16PL 0x00DF
+/* Задаёт MG116 = (MG116_11PL & MG116_12PL & MG116_13PL & MG116_14PL &; маска разрешённых прерываний внутри группы PIE 116. */
#define MG116 (MG116_11PL & MG116_12PL & MG116_13PL & MG116_14PL & \
- MG116_15PL & MG116_16PL & MG116_17PL & MG116_18PL)
+ MG116_15PL & MG116_16PL & MG116_17PL & MG116_18PL) /* Продолжает список аргументов, полей или выражение MG116_15PL & MG116_16PL & MG116_17PL & MG116_18PL); порядок элементов сохраняется. */
// End of MG116:
// Beginning of MG117:
+/* Условие компиляции (G111PL >= G117PL) или (G111PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G111PL >= G117PL) || (G111PL == 0)
+/* Задаёт MG117_11PL = ~(1); данные MG117_11PL. */
#define MG117_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG117_11PL = 0xFFFF; данные MG117_11PL. */
#define MG117_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G112PL >= G117PL) или (G112PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G112PL >= G117PL) || (G112PL == 0)
+/* Задаёт MG117_12PL = ~(1 << 1); данные MG117_12PL. */
#define MG117_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG117_12PL = 0xFFFF; данные MG117_12PL. */
#define MG117_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G113PL >= G117PL) или (G113PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G113PL >= G117PL) || (G113PL == 0)
+/* Задаёт MG117_13PL = ~(1 << 2); данные MG117_13PL. */
#define MG117_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG117_13PL = 0xFFFF; данные MG117_13PL. */
#define MG117_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G114PL >= G117PL) или (G114PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G114PL >= G117PL) || (G114PL == 0)
+/* Задаёт MG117_14PL = ~(1 << 3); данные MG117_14PL. */
#define MG117_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG117_14PL = 0xFFFF; данные MG117_14PL. */
#define MG117_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G115PL >= G117PL) или (G115PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G115PL >= G117PL) || (G115PL == 0)
+/* Задаёт MG117_15PL = ~(1 << 4); данные MG117_15PL. */
#define MG117_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG117_15PL = 0xFFFF; данные MG117_15PL. */
#define MG117_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G116PL >= G117PL) или (G116PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G116PL >= G117PL) || (G116PL == 0)
+/* Задаёт MG117_16PL = ~(1 << 5); данные MG117_16PL. */
#define MG117_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG117_16PL = 0xFFFF; данные MG117_16PL. */
#define MG117_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G118PL >= G117PL) или (G118PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G118PL >= G117PL) || (G118PL == 0)
+/* Задаёт MG117_18PL = ~(1 << 7); данные MG117_18PL. */
#define MG117_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG117_18PL = 0xFFFF; данные MG117_18PL. */
#define MG117_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG117_17PL = 0x00BF; данные MG117_17PL. */
#define MG117_17PL 0x00BF
+/* Задаёт MG117 = (MG117_11PL & MG117_12PL & MG117_13PL & MG117_14PL &; маска разрешённых прерываний внутри группы PIE 117. */
#define MG117 (MG117_11PL & MG117_12PL & MG117_13PL & MG117_14PL & \
- MG117_15PL & MG117_16PL & MG117_17PL & MG117_18PL)
+ MG117_15PL & MG117_16PL & MG117_17PL & MG117_18PL) /* Продолжает список аргументов, полей или выражение MG117_15PL & MG117_16PL & MG117_17PL & MG117_18PL); порядок элементов сохраняется. */
// End of MG117:
// Beginning of MG118:
+/* Условие компиляции (G111PL >= G118PL) или (G111PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G111PL >= G118PL) || (G111PL == 0)
+/* Задаёт MG118_11PL = ~(1); данные MG118_11PL. */
#define MG118_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG118_11PL = 0xFFFF; данные MG118_11PL. */
#define MG118_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G112PL >= G118PL) или (G112PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G112PL >= G118PL) || (G112PL == 0)
+/* Задаёт MG118_12PL = ~(1 << 1); данные MG118_12PL. */
#define MG118_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG118_12PL = 0xFFFF; данные MG118_12PL. */
#define MG118_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G113PL >= G118PL) или (G113PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G113PL >= G118PL) || (G113PL == 0)
+/* Задаёт MG118_13PL = ~(1 << 2); данные MG118_13PL. */
#define MG118_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG118_13PL = 0xFFFF; данные MG118_13PL. */
#define MG118_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G114PL >= G118PL) или (G114PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G114PL >= G118PL) || (G114PL == 0)
+/* Задаёт MG118_14PL = ~(1 << 3); данные MG118_14PL. */
#define MG118_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG118_14PL = 0xFFFF; данные MG118_14PL. */
#define MG118_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G115PL >= G118PL) или (G115PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G115PL >= G118PL) || (G115PL == 0)
+/* Задаёт MG118_15PL = ~(1 << 4); данные MG118_15PL. */
#define MG118_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG118_15PL = 0xFFFF; данные MG118_15PL. */
#define MG118_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G116PL >= G118PL) или (G116PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G116PL >= G118PL) || (G116PL == 0)
+/* Задаёт MG118_16PL = ~(1 << 5); данные MG118_16PL. */
#define MG118_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG118_16PL = 0xFFFF; данные MG118_16PL. */
#define MG118_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G117PL >= G118PL) или (G117PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G117PL >= G118PL) || (G117PL == 0)
+/* Задаёт MG118_17PL = ~(1 << 6); данные MG118_17PL. */
#define MG118_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG118_17PL = 0xFFFF; данные MG118_17PL. */
#define MG118_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG118_18PL = 0x007F; данные MG118_18PL. */
#define MG118_18PL 0x007F
+/* Задаёт MG118 = (MG118_11PL & MG118_12PL & MG118_13PL & MG118_14PL &; маска разрешённых прерываний внутри группы PIE 118. */
#define MG118 (MG118_11PL & MG118_12PL & MG118_13PL & MG118_14PL & \
- MG118_15PL & MG118_16PL & MG118_17PL & MG118_18PL)
+ MG118_15PL & MG118_16PL & MG118_17PL & MG118_18PL) /* Продолжает список аргументов, полей или выражение MG118_15PL & MG118_16PL & MG118_17PL & MG118_18PL); порядок элементов сохраняется. */
// End of MG118:
//-------------------------------------------------------------------------------
@@ -5511,338 +10165,637 @@ extern "C" {
//
// Beginning of MG121:
+/* Условие компиляции (G122PL >= G121PL) или (G122PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL >= G121PL) || (G122PL == 0)
+/* Задаёт MG121_12PL = ~(1 << 1); данные MG121_12PL. */
#define MG121_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG121_12PL = 0xFFFF; данные MG121_12PL. */
#define MG121_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G123PL >= G121PL) или (G123PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL >= G121PL) || (G123PL == 0)
+/* Задаёт MG121_13PL = ~(1 << 2); данные MG121_13PL. */
#define MG121_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG121_13PL = 0xFFFF; данные MG121_13PL. */
#define MG121_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G124PL >= G121PL) или (G124PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL >= G121PL) || (G124PL == 0)
+/* Задаёт MG121_14PL = ~(1 << 3); данные MG121_14PL. */
#define MG121_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG121_14PL = 0xFFFF; данные MG121_14PL. */
#define MG121_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G125PL >= G121PL) или (G125PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL >= G121PL) || (G125PL == 0)
+/* Задаёт MG121_15PL = ~(1 << 4); данные MG121_15PL. */
#define MG121_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG121_15PL = 0xFFFF; данные MG121_15PL. */
#define MG121_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G126PL >= G121PL) или (G126PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G126PL >= G121PL) || (G126PL == 0)
+/* Задаёт MG121_16PL = ~(1 << 5); данные MG121_16PL. */
#define MG121_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG121_16PL = 0xFFFF; данные MG121_16PL. */
#define MG121_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G127PL >= G121PL) или (G127PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL >= G121PL) || (G127PL == 0)
+/* Задаёт MG121_17PL = ~(1 << 6); данные MG121_17PL. */
#define MG121_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG121_17PL = 0xFFFF; данные MG121_17PL. */
#define MG121_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G128PL >= G121PL) или (G128PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL >= G121PL) || (G128PL == 0)
+/* Задаёт MG121_18PL = ~(1 << 7); данные MG121_18PL. */
#define MG121_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG121_18PL = 0xFFFF; данные MG121_18PL. */
#define MG121_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG121_11PL = 0x00FE; данные MG121_11PL. */
#define MG121_11PL 0x00FE
+/* Задаёт MG121 = (MG121_11PL & MG121_12PL & MG121_13PL & MG121_14PL &; маска разрешённых прерываний внутри группы PIE 121. */
#define MG121 (MG121_11PL & MG121_12PL & MG121_13PL & MG121_14PL & \
- MG121_15PL & MG121_16PL & MG121_17PL & MG121_18PL)
+ MG121_15PL & MG121_16PL & MG121_17PL & MG121_18PL) /* Продолжает список аргументов, полей или выражение MG121_15PL & MG121_16PL & MG121_17PL & MG121_18PL); порядок элементов сохраняется. */
// End of MG121:
// Beginning of MG121:
+/* Условие компиляции (G121PL >= G122PL) или (G121PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL >= G122PL) || (G121PL == 0)
+/* Задаёт MG122_11PL = ~(1); данные MG122_11PL. */
#define MG122_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG122_11PL = 0xFFFF; данные MG122_11PL. */
#define MG122_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G123PL >= G122PL) или (G123PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL >= G122PL) || (G123PL == 0)
+/* Задаёт MG122_13PL = ~(1 << 2); данные MG122_13PL. */
#define MG122_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG122_13PL = 0xFFFF; данные MG122_13PL. */
#define MG122_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G124PL >= G122PL) или (G124PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL >= G122PL) || (G124PL == 0)
+/* Задаёт MG122_14PL = ~(1 << 3); данные MG122_14PL. */
#define MG122_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG122_14PL = 0xFFFF; данные MG122_14PL. */
#define MG122_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G125PL >= G122PL) или (G125PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL >= G122PL) || (G125PL == 0)
+/* Задаёт MG122_15PL = ~(1 << 4); данные MG122_15PL. */
#define MG122_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG122_15PL = 0xFFFF; данные MG122_15PL. */
#define MG122_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G126PL >= G122PL) или (G126PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G126PL >= G122PL) || (G126PL == 0)
+/* Задаёт MG122_16PL = ~(1 << 5); данные MG122_16PL. */
#define MG122_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG122_16PL = 0xFFFF; данные MG122_16PL. */
#define MG122_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G127PL >= G122PL) или (G127PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL >= G122PL) || (G127PL == 0)
+/* Задаёт MG122_17PL = ~(1 << 6); данные MG122_17PL. */
#define MG122_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG122_17PL = 0xFFFF; данные MG122_17PL. */
#define MG122_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G128PL >= G122PL) или (G128PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL >= G122PL) || (G128PL == 0)
+/* Задаёт MG122_18PL = ~(1 << 7); данные MG122_18PL. */
#define MG122_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG122_18PL = 0xFFFF; данные MG122_18PL. */
#define MG122_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG122_12PL = 0x00FD; данные MG122_12PL. */
#define MG122_12PL 0x00FD
+/* Задаёт MG122 = (MG122_11PL & MG122_12PL & MG122_13PL & MG122_14PL &; маска разрешённых прерываний внутри группы PIE 122. */
#define MG122 (MG122_11PL & MG122_12PL & MG122_13PL & MG122_14PL & \
- MG122_15PL & MG122_16PL & MG122_17PL & MG122_18PL)
+ MG122_15PL & MG122_16PL & MG122_17PL & MG122_18PL) /* Продолжает список аргументов, полей или выражение MG122_15PL & MG122_16PL & MG122_17PL & MG122_18PL); порядок элементов сохраняется. */
// End of MG122:
// Beginning of MG123:
+/* Условие компиляции (G121PL >= G123PL) или (G121PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL >= G123PL) || (G121PL == 0)
+/* Задаёт MG123_11PL = ~(1); данные MG123_11PL. */
#define MG123_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG123_11PL = 0xFFFF; данные MG123_11PL. */
#define MG123_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G122PL >= G123PL) или (G122PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL >= G123PL) || (G122PL == 0)
+/* Задаёт MG123_12PL = ~(1 << 1); данные MG123_12PL. */
#define MG123_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG123_12PL = 0xFFFF; данные MG123_12PL. */
#define MG123_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G124PL >= G123PL) или (G124PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL >= G123PL) || (G124PL == 0)
+/* Задаёт MG123_14PL = ~(1 << 3); данные MG123_14PL. */
#define MG123_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG123_14PL = 0xFFFF; данные MG123_14PL. */
#define MG123_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G125PL >= G123PL) или (G125PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL >= G123PL) || (G125PL == 0)
+/* Задаёт MG123_15PL = ~(1 << 4); данные MG123_15PL. */
#define MG123_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG123_15PL = 0xFFFF; данные MG123_15PL. */
#define MG123_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G126PL >= G123PL) или (G126PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G126PL >= G123PL) || (G126PL == 0)
+/* Задаёт MG123_16PL = ~(1 << 5); данные MG123_16PL. */
#define MG123_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG123_16PL = 0xFFFF; данные MG123_16PL. */
#define MG123_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G127PL >= G123PL) или (G127PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL >= G123PL) || (G127PL == 0)
+/* Задаёт MG123_17PL = ~(1 << 6); данные MG123_17PL. */
#define MG123_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG123_17PL = 0xFFFF; данные MG123_17PL. */
#define MG123_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G128PL >= G123PL) или (G128PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL >= G123PL) || (G128PL == 0)
+/* Задаёт MG123_18PL = ~(1 << 7); данные MG123_18PL. */
#define MG123_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG123_18PL = 0xFFFF; данные MG123_18PL. */
#define MG123_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG123_13PL = 0x00FB; данные MG123_13PL. */
#define MG123_13PL 0x00FB
+/* Задаёт MG123 = (MG123_11PL & MG123_12PL & MG123_13PL & MG123_14PL &; маска разрешённых прерываний внутри группы PIE 123. */
#define MG123 (MG123_11PL & MG123_12PL & MG123_13PL & MG123_14PL & \
- MG123_15PL & MG123_16PL & MG123_17PL & MG123_18PL)
+ MG123_15PL & MG123_16PL & MG123_17PL & MG123_18PL) /* Продолжает список аргументов, полей или выражение MG123_15PL & MG123_16PL & MG123_17PL & MG123_18PL); порядок элементов сохраняется. */
// End of MG123:
// Beginning of MG124:
+/* Условие компиляции (G121PL >= G124PL) или (G121PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL >= G124PL) || (G121PL == 0)
+/* Задаёт MG124_11PL = ~(1); данные MG124_11PL. */
#define MG124_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG124_11PL = 0xFFFF; данные MG124_11PL. */
#define MG124_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G122PL >= G124PL) или (G122PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL >= G124PL) || (G122PL == 0)
+/* Задаёт MG124_12PL = ~(1 << 1); данные MG124_12PL. */
#define MG124_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG124_12PL = 0xFFFF; данные MG124_12PL. */
#define MG124_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G123PL >= G124PL) или (G123PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL >= G124PL) || (G123PL == 0)
+/* Задаёт MG124_13PL = ~(1 << 2); данные MG124_13PL. */
#define MG124_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG124_13PL = 0xFFFF; данные MG124_13PL. */
#define MG124_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G125PL >= G124PL) или (G125PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL >= G124PL) || (G125PL == 0)
+/* Задаёт MG124_15PL = ~(1 << 4); данные MG124_15PL. */
#define MG124_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG124_15PL = 0xFFFF; данные MG124_15PL. */
#define MG124_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G126PL >= G124PL) или (G126PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G126PL >= G124PL) || (G126PL == 0)
+/* Задаёт MG124_16PL = ~(1 << 5); данные MG124_16PL. */
#define MG124_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG124_16PL = 0xFFFF; данные MG124_16PL. */
#define MG124_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G127PL >= G124PL) или (G127PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL >= G124PL) || (G127PL == 0)
+/* Задаёт MG124_17PL = ~(1 << 6); данные MG124_17PL. */
#define MG124_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG124_17PL = 0xFFFF; данные MG124_17PL. */
#define MG124_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G128PL >= G124PL) или (G128PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL >= G124PL) || (G128PL == 0)
+/* Задаёт MG124_18PL = ~(1 << 7); данные MG124_18PL. */
#define MG124_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG124_18PL = 0xFFFF; данные MG124_18PL. */
#define MG124_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG124_14PL = 0x00F7; данные MG124_14PL. */
#define MG124_14PL 0x00F7
+/* Задаёт MG124 = (MG124_11PL & MG124_12PL & MG124_13PL & MG124_14PL &; маска разрешённых прерываний внутри группы PIE 124. */
#define MG124 (MG124_11PL & MG124_12PL & MG124_13PL & MG124_14PL & \
- MG124_15PL & MG124_16PL & MG124_17PL & MG124_18PL)
+ MG124_15PL & MG124_16PL & MG124_17PL & MG124_18PL) /* Продолжает список аргументов, полей или выражение MG124_15PL & MG124_16PL & MG124_17PL & MG124_18PL); порядок элементов сохраняется. */
// End of MG124:
// Beginning of MG125:
+/* Условие компиляции (G121PL >= G125PL) или (G121PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL >= G125PL) || (G121PL == 0)
+/* Задаёт MG125_11PL = ~(1); данные MG125_11PL. */
#define MG125_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG125_11PL = 0xFFFF; данные MG125_11PL. */
#define MG125_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G122PL >= G125PL) или (G122PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL >= G125PL) || (G122PL == 0)
+/* Задаёт MG125_12PL = ~(1 << 1); данные MG125_12PL. */
#define MG125_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG125_12PL = 0xFFFF; данные MG125_12PL. */
#define MG125_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G123PL >= G125PL) или (G123PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL >= G125PL) || (G123PL == 0)
+/* Задаёт MG125_13PL = ~(1 << 2); данные MG125_13PL. */
#define MG125_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG125_13PL = 0xFFFF; данные MG125_13PL. */
#define MG125_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G124PL >= G125PL) или (G124PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL >= G125PL) || (G124PL == 0)
+/* Задаёт MG125_14PL = ~(1 << 3); данные MG125_14PL. */
#define MG125_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG125_14PL = 0xFFFF; данные MG125_14PL. */
#define MG125_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G126PL >= G125PL) или (G126PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G126PL >= G125PL) || (G126PL == 0)
+/* Задаёт MG125_16PL = ~(1 << 5); данные MG125_16PL. */
#define MG125_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG125_16PL = 0xFFFF; данные MG125_16PL. */
#define MG125_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G127PL >= G125PL) или (G127PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL >= G125PL) || (G127PL == 0)
+/* Задаёт MG125_17PL = ~(1 << 6); данные MG125_17PL. */
#define MG125_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG125_17PL = 0xFFFF; данные MG125_17PL. */
#define MG125_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G128PL >= G125PL) или (G128PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL >= G125PL) || (G128PL == 0)
+/* Задаёт MG125_18PL = ~(1 << 7); данные MG125_18PL. */
#define MG125_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG125_18PL = 0xFFFF; данные MG125_18PL. */
#define MG125_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG125_15PL = 0x00EF; данные MG125_15PL. */
#define MG125_15PL 0x00EF
+/* Задаёт MG125 = (MG125_11PL & MG125_12PL & MG125_13PL & MG125_14PL &; маска разрешённых прерываний внутри группы PIE 125. */
#define MG125 (MG125_11PL & MG125_12PL & MG125_13PL & MG125_14PL & \
- MG125_15PL & MG125_16PL & MG125_17PL & MG125_18PL)
+ MG125_15PL & MG125_16PL & MG125_17PL & MG125_18PL) /* Продолжает список аргументов, полей или выражение MG125_15PL & MG125_16PL & MG125_17PL & MG125_18PL); порядок элементов сохраняется. */
// End of MG125:
// Beginning of MG126:
+/* Условие компиляции (G121PL >= G126PL) или (G121PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL >= G126PL) || (G121PL == 0)
+/* Задаёт MG126_11PL = ~(1); данные MG126_11PL. */
#define MG126_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG126_11PL = 0xFFFF; данные MG126_11PL. */
#define MG126_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G122PL >= G126PL) или (G122PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL >= G126PL) || (G122PL == 0)
+/* Задаёт MG126_12PL = ~(1 << 1); данные MG126_12PL. */
#define MG126_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG126_12PL = 0xFFFF; данные MG126_12PL. */
#define MG126_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G123PL >= G126PL) или (G123PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL >= G126PL) || (G123PL == 0)
+/* Задаёт MG126_13PL = ~(1 << 2); данные MG126_13PL. */
#define MG126_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG126_13PL = 0xFFFF; данные MG126_13PL. */
#define MG126_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G124PL >= G126PL) или (G124PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL >= G126PL) || (G124PL == 0)
+/* Задаёт MG126_14PL = ~(1 << 3); данные MG126_14PL. */
#define MG126_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG126_14PL = 0xFFFF; данные MG126_14PL. */
#define MG126_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G125PL >= G126PL) или (G125PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL >= G126PL) || (G125PL == 0)
+/* Задаёт MG126_15PL = ~(1 << 4); данные MG126_15PL. */
#define MG126_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG126_15PL = 0xFFFF; данные MG126_15PL. */
#define MG126_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G127PL >= G126PL) или (G127PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL >= G126PL) || (G127PL == 0)
+/* Задаёт MG126_17PL = ~(1 << 6); данные MG126_17PL. */
#define MG126_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG126_17PL = 0xFFFF; данные MG126_17PL. */
#define MG126_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G128PL >= G126PL) или (G128PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL >= G126PL) || (G128PL == 0)
+/* Задаёт MG126_18PL = ~(1 << 7); данные MG126_18PL. */
#define MG126_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG126_18PL = 0xFFFF; данные MG126_18PL. */
#define MG126_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG126_16PL = 0x00DF; данные MG126_16PL. */
#define MG126_16PL 0x00DF
+/* Задаёт MG126 = (MG126_11PL & MG126_12PL & MG126_13PL & MG126_14PL &; маска разрешённых прерываний внутри группы PIE 126. */
#define MG126 (MG126_11PL & MG126_12PL & MG126_13PL & MG126_14PL & \
- MG126_15PL & MG126_16PL & MG126_17PL & MG126_18PL)
+ MG126_15PL & MG126_16PL & MG126_17PL & MG126_18PL) /* Продолжает список аргументов, полей или выражение MG126_15PL & MG126_16PL & MG126_17PL & MG126_18PL); порядок элементов сохраняется. */
// End of MG126:
// Beginning of MG127:
+/* Условие компиляции (G121PL >= G127PL) или (G121PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL >= G127PL) || (G121PL == 0)
+/* Задаёт MG127_11PL = ~(1); данные MG127_11PL. */
#define MG127_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG127_11PL = 0xFFFF; данные MG127_11PL. */
#define MG127_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G122PL >= G127PL) или (G122PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL >= G127PL) || (G122PL == 0)
+/* Задаёт MG127_12PL = ~(1 << 1); данные MG127_12PL. */
#define MG127_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG127_12PL = 0xFFFF; данные MG127_12PL. */
#define MG127_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G123PL >= G127PL) или (G123PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL >= G127PL) || (G123PL == 0)
+/* Задаёт MG127_13PL = ~(1 << 2); данные MG127_13PL. */
#define MG127_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG127_13PL = 0xFFFF; данные MG127_13PL. */
#define MG127_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G124PL >= G127PL) или (G124PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL >= G127PL) || (G124PL == 0)
+/* Задаёт MG127_14PL = ~(1 << 3); данные MG127_14PL. */
#define MG127_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG127_14PL = 0xFFFF; данные MG127_14PL. */
#define MG127_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G125PL >= G127PL) или (G125PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL >= G127PL) || (G125PL == 0)
+/* Задаёт MG127_15PL = ~(1 << 4); данные MG127_15PL. */
#define MG127_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG127_15PL = 0xFFFF; данные MG127_15PL. */
#define MG127_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G126PL >= G127PL) или (G126PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G126PL >= G127PL) || (G126PL == 0)
+/* Задаёт MG127_16PL = ~(1 << 5); данные MG127_16PL. */
#define MG127_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG127_16PL = 0xFFFF; данные MG127_16PL. */
#define MG127_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G128PL >= G127PL) или (G128PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL >= G127PL) || (G128PL == 0)
+/* Задаёт MG127_18PL = ~(1 << 7); данные MG127_18PL. */
#define MG127_18PL ~(1 << 7)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG127_18PL = 0xFFFF; данные MG127_18PL. */
#define MG127_18PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG127_17PL = 0x00BF; данные MG127_17PL. */
#define MG127_17PL 0x00BF
+/* Задаёт MG127 = (MG127_11PL & MG127_12PL & MG127_13PL & MG127_14PL &; маска разрешённых прерываний внутри группы PIE 127. */
#define MG127 (MG127_11PL & MG127_12PL & MG127_13PL & MG127_14PL & \
- MG127_15PL & MG127_16PL & MG127_17PL & MG127_18PL)
+ MG127_15PL & MG127_16PL & MG127_17PL & MG127_18PL) /* Продолжает список аргументов, полей или выражение MG127_15PL & MG127_16PL & MG127_17PL & MG127_18PL); порядок элементов сохраняется. */
// End of MG127:
// Beginning of MG128:
+/* Условие компиляции (G121PL >= G128PL) или (G121PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL >= G128PL) || (G121PL == 0)
+/* Задаёт MG128_11PL = ~(1); данные MG128_11PL. */
#define MG128_11PL ~(1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG128_11PL = 0xFFFF; данные MG128_11PL. */
#define MG128_11PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G122PL >= G128PL) или (G122PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL >= G128PL) || (G122PL == 0)
+/* Задаёт MG128_12PL = ~(1 << 1); данные MG128_12PL. */
#define MG128_12PL ~(1 << 1)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG128_12PL = 0xFFFF; данные MG128_12PL. */
#define MG128_12PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G123PL >= G128PL) или (G123PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL >= G128PL) || (G123PL == 0)
+/* Задаёт MG128_13PL = ~(1 << 2); данные MG128_13PL. */
#define MG128_13PL ~(1 << 2)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG128_13PL = 0xFFFF; данные MG128_13PL. */
#define MG128_13PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G124PL >= G128PL) или (G124PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL >= G128PL) || (G124PL == 0)
+/* Задаёт MG128_14PL = ~(1 << 3); данные MG128_14PL. */
#define MG128_14PL ~(1 << 3)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG128_14PL = 0xFFFF; данные MG128_14PL. */
#define MG128_14PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G125PL >= G128PL) или (G125PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL >= G128PL) || (G125PL == 0)
+/* Задаёт MG128_15PL = ~(1 << 4); данные MG128_15PL. */
#define MG128_15PL ~(1 << 4)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG128_15PL = 0xFFFF; данные MG128_15PL. */
#define MG128_15PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G126PL >= G128PL) или (G126PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G126PL >= G128PL) || (G126PL == 0)
+/* Задаёт MG128_16PL = ~(1 << 5); данные MG128_16PL. */
#define MG128_16PL ~(1 << 5)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG128_16PL = 0xFFFF; данные MG128_16PL. */
#define MG128_16PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции (G127PL >= G128PL) или (G127PL == 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL >= G128PL) || (G127PL == 0)
+/* Задаёт MG128_17PL = ~(1 << 6); данные MG128_17PL. */
#define MG128_17PL ~(1 << 6)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт MG128_17PL = 0xFFFF; данные MG128_17PL. */
#define MG128_17PL 0xFFFF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт MG128_18PL = 0x007F; данные MG128_18PL. */
#define MG128_18PL 0x007F
+/* Задаёт MG128 = (MG128_11PL & MG128_12PL & MG128_13PL & MG128_14PL &; маска разрешённых прерываний внутри группы PIE 128. */
#define MG128 (MG128_11PL & MG128_12PL & MG128_13PL & MG128_14PL & \
- MG128_15PL & MG128_16PL & MG128_17PL & MG128_18PL)
+ MG128_15PL & MG128_16PL & MG128_17PL & MG128_18PL) /* Продолжает список аргументов, полей или выражение MG128_15PL & MG128_16PL & MG128_17PL & MG128_18PL); порядок элементов сохраняется. */
// End of MG128:
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // eof
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/include/DSP28x_Project.h b/Source/External/v120/DSP2833x_common/include/DSP28x_Project.h
index 399c1db..6c936cd 100644
--- a/Source/External/v120/DSP2833x_common/include/DSP28x_Project.h
+++ b/Source/External/v120/DSP2833x_common/include/DSP28x_Project.h
@@ -1,3 +1,4 @@
+/* Настройки и интерфейс DSP28x_Project. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: April 22, 2008 14:35:56 $
@@ -12,11 +13,16 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP28x_PROJECT_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP28x_PROJECT_H
+/* Определяет защитный символ или переключатель DSP28x_PROJECT_H для последующей компиляции. */
#define DSP28x_PROJECT_H
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP28x_PROJECT_H definition
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_ADC_cal.asm b/Source/External/v120/DSP2833x_common/source/DSP2833x_ADC_cal.asm
index 7108ffa..fe502df 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_ADC_cal.asm
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_ADC_cal.asm
@@ -1,3 +1,4 @@
+; Поставляемое ti описание adc_cal для семейства c2833x. Пояснения в UTF-8.
;; TI File $Revision: /main/1 $
;; Checkin $Date: July 30, 2007 10:29:23 $
;;###########################################################################
@@ -8,7 +9,7 @@
;;
;; Functions:
;;
-;; _ADC_cal - Copies device specific calibration data into ADCREFSEL and ADCOFFTRIM registers
+;; _ADC_cal - Copies device specific calibration data into ADCREFSEL and ADCOFFTRIM registers
;; Notes:
;;
;;###########################################################################
@@ -16,27 +17,35 @@
;; $Release Date: August 1, 2008 $
;;###########################################################################
+ ; Экспортирует символ для связывания с C-кодом. Операция: .def _ADC_cal.
.def _ADC_cal
+ ; Задаёт текстовый псевдоним константы для ассемблера. Операция: .asg "0x711C", ADCREFSEL_LOC.
.asg "0x711C", ADCREFSEL_LOC
;-----------------------------------------------
; _ADC_cal
;-----------------------------------------------
;-----------------------------------------------
-; This is the ADC cal routine.This routine is programmed into
-; reserved memory by the factory. 0xAAAA and 0xBBBB are place-
-; holders for calibration data.
-;The actual values programmed by TI are device specific.
+; This is the ADC cal routine.This routine is programmed into
+; reserved memory by the factory. 0xAAAA and 0xBBBB are place-
+; holders for calibration data.
+;The actual values programmed by TI are device specific.
;
; This function assumes that the clocks have been
; enabled to the ADC module.
;-----------------------------------------------
+ ; Выбирает секцию объектного файла для следующих инструкций. Операция: .sect ".adc_cal".
.sect ".adc_cal"
+; Объявляет метку _ADC_cal для перехода или вызова. Операция: _ADC_cal.
_ADC_cal
+ ; Загружает регистр страниц данных DP для доступа к указанной области. Операция: MOVW DP, #ADCREFSEL_LOC >> 6.
MOVW DP, #ADCREFSEL_LOC >> 6
+ ; Переносит операнд в регистр или ячейку назначения. Операция: MOV @28, #0xAAAA.
MOV @28, #0xAAAA ; actual value may not be 0xAAAA
+ ; Переносит операнд в регистр или ячейку назначения. Операция: MOV @29, #0xBBBB.
MOV @29, #0xBBBB ; actual value may not be 0xBBBB
+ ; Возвращает управление вызывающему коду через длинный адрес возврата. Операция: LRETR.
LRETR
;eof ----------
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c
index 730415b..d2bc54d 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Adc для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: October 23, 2007 13:34:09 $
//###########################################################################
@@ -11,9 +12,12 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
+/* Задаёт ADC_usDELAY = 5000L; АЦП us DELAY. */
#define ADC_usDELAY 5000L
//---------------------------------------------------------------------------
@@ -21,8 +25,11 @@
//---------------------------------------------------------------------------
// This function initializes ADC to a known state.
//
+/* Начинает функцию InitAdc; назначение модуля — поставляемое TI описание Adc для семейства C2833x. */
void InitAdc(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет интерфейс функции DSP28x_usDelay; реализация вызывается через этот прототип. */
extern void DSP28x_usDelay(Uint32 Count);
@@ -36,9 +43,13 @@ void InitAdc(void)
// See the device data manual and/or the ADC Reference
// Manual for more information.
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.ADCENCLK значением 1; данные ADCENCLK. */
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
+ /* Вызывает ADC_cal с аргументами () в текущей последовательности операций. */
ADC_cal();
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
@@ -53,10 +64,14 @@ void InitAdc(void)
// CPU_RATE define statement in the DSP2833x_Examples.h file must
// contain the correct CPU clock period in nanoseconds.
+ /* Записывает AdcRegs.ADCREFSEL.bit.REF_SEL значением 0x01; данные REF_SEL. */
AdcRegs.ADCREFSEL.bit.REF_SEL = 0x01;
+ /* Записывает AdcRegs.ADCTRL3.all значением 0x00E0; представление регистра целым словом без разбиения на битовые поля. */
AdcRegs.ADCTRL3.all = 0x00E0; // Power up bandgap/reference/ADC circuits
+ /* Вызывает DELAY_US с аргументами (ADC_usDELAY) в текущей последовательности операций. */
DELAY_US(ADC_usDELAY); // Delay before converting ADC channels
//pause_us(50L);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_CpuTimers.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_CpuTimers.c
index b0dfd76..d3c2840 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_CpuTimers.c
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_CpuTimers.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание CpuTimers для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/3 $
// Checkin $Date: March 16, 2007 08:37:30 $
//###########################################################################
@@ -18,13 +19,18 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // Examples Include File
+/* Описывает структуру CPUTIMER_VARS CpuTimer0;; порядок полей определяет расположение данных. */
struct CPUTIMER_VARS CpuTimer0;
// CpuTimer 1 and CpuTimer2 are used by DSP BIOS & other RTOS. Comment out if using DSP BIOS or other RTOS.
+/* Описывает структуру CPUTIMER_VARS CpuTimer1;; порядок полей определяет расположение данных. */
struct CPUTIMER_VARS CpuTimer1;
+/* Описывает структуру CPUTIMER_VARS CpuTimer2;; порядок полей определяет расположение данных. */
struct CPUTIMER_VARS CpuTimer2;
//---------------------------------------------------------------------------
@@ -32,21 +38,30 @@ struct CPUTIMER_VARS CpuTimer2;
//---------------------------------------------------------------------------
// This function initializes all three CPU timers to a known state.
//
+/* Начинает функцию InitCpuTimers; назначение модуля — поставляемое TI описание CpuTimers для семейства C2833x. */
void InitCpuTimers(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// CPU Timer 0
// Initialize address pointers to respective timer registers:
+ /* Записывает CpuTimer0.RegsAddr значением &CpuTimer0Regs; данные RegsAddr. */
CpuTimer0.RegsAddr = &CpuTimer0Regs;
// Initialize timer period to maximum:
+ /* Записывает CpuTimer0Regs.PRD.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer0Regs.PRD.all = 0xFFFFFFFF;
// Initialize pre-scale counter to divide by 1 (SYSCLKOUT):
+ /* Записывает CpuTimer0Regs.TPR.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer0Regs.TPR.all = 0;
+ /* Записывает CpuTimer0Regs.TPRH.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer0Regs.TPRH.all = 0;
// Make sure timer is stopped:
+ /* Записывает CpuTimer0Regs.TCR.bit.TSS значением 1; данные TSS. */
CpuTimer0Regs.TCR.bit.TSS = 1;
// Reload all counter register with period value:
+ /* Записывает CpuTimer0Regs.TCR.bit.TRB значением 1; данные TRB. */
CpuTimer0Regs.TCR.bit.TRB = 1;
// Reset interrupt counters:
+ /* Записывает CpuTimer0.InterruptCount значением 0; прерывание число. */
CpuTimer0.InterruptCount = 0;
@@ -55,26 +70,41 @@ void InitCpuTimers(void)
// DSP-BIOS or another realtime OS.
//
// Initialize address pointers to respective timer registers:
+ /* Записывает CpuTimer1.RegsAddr значением &CpuTimer1Regs; данные RegsAddr. */
CpuTimer1.RegsAddr = &CpuTimer1Regs;
+ /* Записывает CpuTimer2.RegsAddr значением &CpuTimer2Regs; данные RegsAddr. */
CpuTimer2.RegsAddr = &CpuTimer2Regs;
// Initialize timer period to maximum:
+ /* Записывает CpuTimer1Regs.PRD.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer1Regs.PRD.all = 0xFFFFFFFF;
+ /* Записывает CpuTimer2Regs.PRD.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.PRD.all = 0xFFFFFFFF;
// Initialize pre-scale counter to divide by 1 (SYSCLKOUT):
+ /* Записывает CpuTimer1Regs.TPR.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer1Regs.TPR.all = 0;
+ /* Записывает CpuTimer1Regs.TPRH.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer1Regs.TPRH.all = 0;
+ /* Записывает CpuTimer2Regs.TPR.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.TPR.all = 0;
+ /* Записывает CpuTimer2Regs.TPRH.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.TPRH.all = 0;
// Make sure timers are stopped:
+ /* Записывает CpuTimer1Regs.TCR.bit.TSS значением 1; данные TSS. */
CpuTimer1Regs.TCR.bit.TSS = 1;
+ /* Записывает CpuTimer2Regs.TCR.bit.TSS значением 1; данные TSS. */
CpuTimer2Regs.TCR.bit.TSS = 1;
// Reload all counter register with period value:
+ /* Записывает CpuTimer1Regs.TCR.bit.TRB значением 1; данные TRB. */
CpuTimer1Regs.TCR.bit.TRB = 1;
+ /* Записывает CpuTimer2Regs.TCR.bit.TRB значением 1; данные TRB. */
CpuTimer2Regs.TCR.bit.TRB = 1;
// Reset interrupt counters:
+ /* Записывает CpuTimer1.InterruptCount значением 0; прерывание число. */
CpuTimer1.InterruptCount = 0;
+ /* Записывает CpuTimer2.InterruptCount значением 0; прерывание число. */
CpuTimer2.InterruptCount = 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//---------------------------------------------------------------------------
@@ -85,29 +115,45 @@ void InitCpuTimers(void)
// and the period in "uSeconds". The timer is held in the stopped state
// after configuration.
//
+/* Начинает функцию ConfigCpuTimer; назначение модуля — поставляемое TI описание CpuTimers для семейства C2833x. */
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет temp — данные temp. */
Uint32 temp;
// Initialize timer period:
+ /* Записывает Timer->CPUFreqInMHz значением Freq; таймер CPU Freq In M Hz. */
Timer->CPUFreqInMHz = Freq;
+ /* Записывает Timer->PeriodInUSec значением Period; таймер период In U Sec. */
Timer->PeriodInUSec = Period;
+ /* Записывает temp значением (long) (Freq * Period); данные temp. */
temp = (long) (Freq * Period);
+ /* Записывает Timer->RegsAddr->PRD.all значением temp; представление регистра целым словом без разбиения на битовые поля. */
Timer->RegsAddr->PRD.all = temp;
// Set pre-scale counter to divide by 1 (SYSCLKOUT):
+ /* Записывает Timer->RegsAddr->TPR.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
Timer->RegsAddr->TPR.all = 0;
+ /* Записывает Timer->RegsAddr->TPRH.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
Timer->RegsAddr->TPRH.all = 0;
// Initialize timer control register:
+ /* Записывает Timer->RegsAddr->TCR.bit.TSS значением 1; данные TSS. */
Timer->RegsAddr->TCR.bit.TSS = 1; // 1 = Stop timer, 0 = Start/Restart Timer
+ /* Записывает Timer->RegsAddr->TCR.bit.TRB значением 1; данные TRB. */
Timer->RegsAddr->TCR.bit.TRB = 1; // 1 = reload timer
+ /* Записывает Timer->RegsAddr->TCR.bit.SOFT значением 0; данные SOFT. */
Timer->RegsAddr->TCR.bit.SOFT = 0;
+ /* Записывает Timer->RegsAddr->TCR.bit.FREE значением 0; данные FREE. */
Timer->RegsAddr->TCR.bit.FREE = 0; // Timer Free Run Disabled
+ /* Записывает Timer->RegsAddr->TCR.bit.TIE значением 1; данные TIE. */
Timer->RegsAddr->TCR.bit.TIE = 1; // 0 = Disable/ 1 = Enable Timer Interrupt
// Reset interrupt counter:
+ /* Записывает Timer->InterruptCount значением 0; таймер прерывание число. */
Timer->InterruptCount = 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_PieCtrl.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_PieCtrl.c
index f1eafe3..ff559f3 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_PieCtrl.c
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_PieCtrl.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание PieCtrl для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:46:35 $
//###########################################################################
@@ -11,70 +12,107 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
//---------------------------------------------------------------------------
-// InitPieCtrl:
+// InitPieCtrl:
//---------------------------------------------------------------------------
// This function initializes the PIE control registers to a known state.
//
+/* Начинает функцию InitPieCtrl; назначение модуля — поставляемое TI описание PieCtrl для семейства C2833x. */
void InitPieCtrl(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Disable Interrupts at the CPU level:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
// Disable the PIE
+ /* Записывает PieCtrlRegs.PIECTRL.bit.ENPIE значением 0; данные ENPIE. */
PieCtrlRegs.PIECTRL.bit.ENPIE = 0;
// Clear all PIEIER registers:
+ /* Записывает PieCtrlRegs.PIEIER1.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER2.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = 0;
- PieCtrlRegs.PIEIER3.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER3.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEIER3.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER4.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER5.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER6.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER7.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER8.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER10.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER10.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER11.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER11.all = 0;
+ /* Записывает PieCtrlRegs.PIEIER12.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = 0;
// Clear all PIEIFR registers:
+ /* Записывает PieCtrlRegs.PIEIFR1.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR1.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR2.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR2.all = 0;
- PieCtrlRegs.PIEIFR3.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR3.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEIFR3.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR4.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR4.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR5.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR5.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR6.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR6.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR7.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR7.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR8.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR8.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR9.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR9.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR10.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR10.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR11.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR11.all = 0;
+ /* Записывает PieCtrlRegs.PIEIFR12.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR12.all = 0;
-}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
//---------------------------------------------------------------------------
-// EnableInterrupts:
+// EnableInterrupts:
//---------------------------------------------------------------------------
// This function enables the PIE module and CPU interrupts
//
+/* Начинает функцию EnableInterrupts; назначение модуля — поставляемое TI описание PieCtrl для семейства C2833x. */
void EnableInterrupts()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Enable the PIE
+ /* Записывает PieCtrlRegs.PIECTRL.bit.ENPIE значением 1; данные ENPIE. */
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
-
- // Enables PIE to drive a pulse into the CPU
- PieCtrlRegs.PIEACK.all = 0xFFFF;
- // Enable Interrupts at the CPU level
+ // Enables PIE to drive a pulse into the CPU
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEACK.all = 0xFFFF;
+
+ // Enable Interrupts at the CPU level
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_PieVect.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_PieVect.c
index d163c54..371d968 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_PieVect.c
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_PieVect.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание PieVect для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:46:38 $
//###########################################################################
@@ -11,192 +12,335 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
+/* Записывает PieVectTableInit значением {; данные PieVectTableInit. */
const struct PIE_VECT_TABLE PieVectTableInit = {
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // 0 Reserved space
- PIE_RESERVED, // 1 Reserved space
- PIE_RESERVED, // 2 Reserved space
- PIE_RESERVED, // 3 Reserved space
- PIE_RESERVED, // 4 Reserved space
- PIE_RESERVED, // 5 Reserved space
- PIE_RESERVED, // 6 Reserved space
- PIE_RESERVED, // 7 Reserved space
- PIE_RESERVED, // 8 Reserved space
- PIE_RESERVED, // 9 Reserved space
- PIE_RESERVED, // 10 Reserved space
- PIE_RESERVED, // 11 Reserved space
- PIE_RESERVED, // 12 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 1 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 2 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 3 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 4 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 5 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 6 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 7 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 8 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 9 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 10 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 11 Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
+ PIE_RESERVED, // 12 Reserved space
// Non-Peripheral Interrupts
+ /* Продолжает список аргументов, полей или выражение INT13_ISR,; порядок элементов сохраняется. */
INT13_ISR, // XINT13 or CPU-Timer 1
+ /* Продолжает список аргументов, полей или выражение INT14_ISR,; порядок элементов сохраняется. */
INT14_ISR, // CPU-Timer2
+ /* Продолжает список аргументов, полей или выражение DATALOG_ISR,; порядок элементов сохраняется. */
DATALOG_ISR, // Datalogging interrupt
+ /* Продолжает список аргументов, полей или выражение RTOSINT_ISR,; порядок элементов сохраняется. */
RTOSINT_ISR, // RTOS interrupt
+ /* Продолжает список аргументов, полей или выражение EMUINT_ISR,; порядок элементов сохраняется. */
EMUINT_ISR, // Emulation interrupt
+ /* Продолжает список аргументов, полей или выражение NMI_ISR,; порядок элементов сохраняется. */
NMI_ISR, // Non-maskable interrupt
+ /* Продолжает список аргументов, полей или выражение ILLEGAL_ISR,; порядок элементов сохраняется. */
ILLEGAL_ISR, // Illegal operation TRAP
+ /* Продолжает список аргументов, полей или выражение USER1_ISR,; порядок элементов сохраняется. */
USER1_ISR, // User Defined trap 1
+ /* Продолжает список аргументов, полей или выражение USER2_ISR,; порядок элементов сохраняется. */
USER2_ISR, // User Defined trap 2
+ /* Продолжает список аргументов, полей или выражение USER3_ISR,; порядок элементов сохраняется. */
USER3_ISR, // User Defined trap 3
+ /* Продолжает список аргументов, полей или выражение USER4_ISR,; порядок элементов сохраняется. */
USER4_ISR, // User Defined trap 4
+ /* Продолжает список аргументов, полей или выражение USER5_ISR,; порядок элементов сохраняется. */
USER5_ISR, // User Defined trap 5
+ /* Продолжает список аргументов, полей или выражение USER6_ISR,; порядок элементов сохраняется. */
USER6_ISR, // User Defined trap 6
+ /* Продолжает список аргументов, полей или выражение USER7_ISR,; порядок элементов сохраняется. */
USER7_ISR, // User Defined trap 7
+ /* Продолжает список аргументов, полей или выражение USER8_ISR,; порядок элементов сохраняется. */
USER8_ISR, // User Defined trap 8
+ /* Продолжает список аргументов, полей или выражение USER9_ISR,; порядок элементов сохраняется. */
USER9_ISR, // User Defined trap 9
+ /* Продолжает список аргументов, полей или выражение USER10_ISR,; порядок элементов сохраняется. */
USER10_ISR, // User Defined trap 10
+ /* Продолжает список аргументов, полей или выражение USER11_ISR,; порядок элементов сохраняется. */
USER11_ISR, // User Defined trap 11
+ /* Продолжает список аргументов, полей или выражение USER12_ISR,; порядок элементов сохраняется. */
USER12_ISR, // User Defined trap 12
// Group 1 PIE Vectors
- SEQ1INT_ISR, // 1.1 ADC
- SEQ2INT_ISR, // 1.2 ADC
+ /* Продолжает список аргументов, полей или выражение SEQ1INT_ISR,; порядок элементов сохраняется. */
+ SEQ1INT_ISR, // 1.1 ADC
+ /* Продолжает список аргументов, полей или выражение SEQ2INT_ISR,; порядок элементов сохраняется. */
+ SEQ2INT_ISR, // 1.2 ADC
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 1.3
- XINT1_ISR, // 1.4
+ /* Продолжает список аргументов, полей или выражение XINT1_ISR,; порядок элементов сохраняется. */
+ XINT1_ISR, // 1.4
+ /* Продолжает список аргументов, полей или выражение XINT2_ISR,; порядок элементов сохраняется. */
XINT2_ISR, // 1.5
+ /* Продолжает список аргументов, полей или выражение ADCINT_ISR,; порядок элементов сохраняется. */
ADCINT_ISR, // 1.6 ADC
+ /* Продолжает список аргументов, полей или выражение TINT0_ISR,; порядок элементов сохраняется. */
TINT0_ISR, // 1.7 Timer 0
+ /* Продолжает список аргументов, полей или выражение WAKEINT_ISR,; порядок элементов сохраняется. */
WAKEINT_ISR, // 1.8 WD, Low Power
// Group 2 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение EPWM1_TZINT_ISR,; порядок элементов сохраняется. */
EPWM1_TZINT_ISR, // 2.1 EPWM-1 Trip Zone
+ /* Продолжает список аргументов, полей или выражение EPWM2_TZINT_ISR,; порядок элементов сохраняется. */
EPWM2_TZINT_ISR, // 2.2 EPWM-2 Trip Zone
+ /* Продолжает список аргументов, полей или выражение EPWM3_TZINT_ISR,; порядок элементов сохраняется. */
EPWM3_TZINT_ISR, // 2.3 EPWM-3 Trip Zone
+ /* Продолжает список аргументов, полей или выражение EPWM4_TZINT_ISR,; порядок элементов сохраняется. */
EPWM4_TZINT_ISR, // 2.4 EPWM-4 Trip Zone
+ /* Продолжает список аргументов, полей или выражение EPWM5_TZINT_ISR,; порядок элементов сохраняется. */
EPWM5_TZINT_ISR, // 2.5 EPWM-5 Trip Zone
- EPWM6_TZINT_ISR, // 2.6 EPWM-6 Trip Zone
+ /* Продолжает список аргументов, полей или выражение EPWM6_TZINT_ISR,; порядок элементов сохраняется. */
+ EPWM6_TZINT_ISR, // 2.6 EPWM-6 Trip Zone
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 2.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 2.8
-
+
// Group 3 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение EPWM1_INT_ISR,; порядок элементов сохраняется. */
EPWM1_INT_ISR, // 3.1 EPWM-1 Interrupt
+ /* Продолжает список аргументов, полей или выражение EPWM2_INT_ISR,; порядок элементов сохраняется. */
EPWM2_INT_ISR, // 3.2 EPWM-2 Interrupt
+ /* Продолжает список аргументов, полей или выражение EPWM3_INT_ISR,; порядок элементов сохраняется. */
EPWM3_INT_ISR, // 3.3 EPWM-3 Interrupt
+ /* Продолжает список аргументов, полей или выражение EPWM4_INT_ISR,; порядок элементов сохраняется. */
EPWM4_INT_ISR, // 3.4 EPWM-4 Interrupt
+ /* Продолжает список аргументов, полей или выражение EPWM5_INT_ISR,; порядок элементов сохраняется. */
EPWM5_INT_ISR, // 3.5 EPWM-5 Interrupt
- EPWM6_INT_ISR, // 3.6 EPWM-6 Interrupt
+ /* Продолжает список аргументов, полей или выражение EPWM6_INT_ISR,; порядок элементов сохраняется. */
+ EPWM6_INT_ISR, // 3.6 EPWM-6 Interrupt
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 3.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 3.8
-
+
// Group 4 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение ECAP1_INT_ISR,; порядок элементов сохраняется. */
ECAP1_INT_ISR, // 4.1 ECAP-1
+ /* Продолжает список аргументов, полей или выражение ECAP2_INT_ISR,; порядок элементов сохраняется. */
ECAP2_INT_ISR, // 4.2 ECAP-2
+ /* Продолжает список аргументов, полей или выражение ECAP3_INT_ISR,; порядок элементов сохраняется. */
ECAP3_INT_ISR, // 4.3 ECAP-3
- ECAP4_INT_ISR, // 4.4 ECAP-4
- ECAP5_INT_ISR, // 4.5 ECAP-5
- ECAP6_INT_ISR, // 4.6 ECAP-6
- rsvd_ISR, // 4.7
- rsvd_ISR, // 4.8
-
+ /* Продолжает список аргументов, полей или выражение ECAP4_INT_ISR,; порядок элементов сохраняется. */
+ ECAP4_INT_ISR, // 4.4 ECAP-4
+ /* Продолжает список аргументов, полей или выражение ECAP5_INT_ISR,; порядок элементов сохраняется. */
+ ECAP5_INT_ISR, // 4.5 ECAP-5
+ /* Продолжает список аргументов, полей или выражение ECAP6_INT_ISR,; порядок элементов сохраняется. */
+ ECAP6_INT_ISR, // 4.6 ECAP-6
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 4.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 4.8
+
// Group 5 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение EQEP1_INT_ISR,; порядок элементов сохраняется. */
EQEP1_INT_ISR, // 5.1 EQEP-1
+ /* Продолжает список аргументов, полей или выражение EQEP2_INT_ISR,; порядок элементов сохраняется. */
EQEP2_INT_ISR, // 5.2 EQEP-2
- rsvd_ISR, // 5.3
- rsvd_ISR, // 5.4
- rsvd_ISR, // 5.5
- rsvd_ISR, // 5.6
- rsvd_ISR, // 5.7
- rsvd_ISR, // 5.8
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 5.3
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 5.4
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 5.5
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 5.6
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 5.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 5.8
// Group 6 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение SPIRXINTA_ISR,; порядок элементов сохраняется. */
SPIRXINTA_ISR, // 6.1 SPI-A
+ /* Продолжает список аргументов, полей или выражение SPITXINTA_ISR,; порядок элементов сохраняется. */
SPITXINTA_ISR, // 6.2 SPI-A
+ /* Продолжает список аргументов, полей или выражение MRINTA_ISR,; порядок элементов сохраняется. */
MRINTA_ISR, // 6.3 McBSP-A
+ /* Продолжает список аргументов, полей или выражение MXINTA_ISR,; порядок элементов сохраняется. */
MXINTA_ISR, // 6.4 McBSP-A
+ /* Продолжает список аргументов, полей или выражение MRINTB_ISR,; порядок элементов сохраняется. */
MRINTB_ISR, // 6.5 McBSP-B
+ /* Продолжает список аргументов, полей или выражение MXINTB_ISR,; порядок элементов сохраняется. */
MXINTB_ISR, // 6.6 McBSP-B
- rsvd_ISR, // 6.7
- rsvd_ISR, // 6.8
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 6.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 6.8
+
-
// Group 7 PIE Vectors
- DINTCH1_ISR, // 7.1 DMA channel 1
+ /* Продолжает список аргументов, полей или выражение DINTCH1_ISR,; порядок элементов сохраняется. */
+ DINTCH1_ISR, // 7.1 DMA channel 1
+ /* Продолжает список аргументов, полей или выражение DINTCH2_ISR,; порядок элементов сохраняется. */
DINTCH2_ISR, // 7.2 DMA channel 2
- DINTCH3_ISR, // 7.3 DMA channel 3
- DINTCH4_ISR, // 7.4 DMA channel 4
- DINTCH5_ISR, // 7.5 DMA channel 5
- DINTCH6_ISR, // 7.6 DMA channel 6
- rsvd_ISR, // 7.7
- rsvd_ISR, // 7.8
+ /* Продолжает список аргументов, полей или выражение DINTCH3_ISR,; порядок элементов сохраняется. */
+ DINTCH3_ISR, // 7.3 DMA channel 3
+ /* Продолжает список аргументов, полей или выражение DINTCH4_ISR,; порядок элементов сохраняется. */
+ DINTCH4_ISR, // 7.4 DMA channel 4
+ /* Продолжает список аргументов, полей или выражение DINTCH5_ISR,; порядок элементов сохраняется. */
+ DINTCH5_ISR, // 7.5 DMA channel 5
+ /* Продолжает список аргументов, полей или выражение DINTCH6_ISR,; порядок элементов сохраняется. */
+ DINTCH6_ISR, // 7.6 DMA channel 6
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 7.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 7.8
// Group 8 PIE Vectors
- I2CINT1A_ISR, // 8.1 I2C
+ /* Продолжает список аргументов, полей или выражение I2CINT1A_ISR,; порядок элементов сохраняется. */
+ I2CINT1A_ISR, // 8.1 I2C
+ /* Продолжает список аргументов, полей или выражение I2CINT2A_ISR,; порядок элементов сохраняется. */
I2CINT2A_ISR, // 8.2 I2C
- rsvd_ISR, // 8.3
- rsvd_ISR, // 8.4
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 8.3
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 8.4
+ /* Продолжает список аргументов, полей или выражение SCIRXINTC_ISR,; порядок элементов сохраняется. */
SCIRXINTC_ISR, // 8.5 SCI-C
- SCITXINTC_ISR, // 8.6 SCI-C
- rsvd_ISR, // 8.7
- rsvd_ISR, // 8.8
-
-// Group 9 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение SCITXINTC_ISR,; порядок элементов сохраняется. */
+ SCITXINTC_ISR, // 8.6 SCI-C
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 8.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 8.8
+
+// Group 9 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение SCIRXINTA_ISR,; порядок элементов сохраняется. */
SCIRXINTA_ISR, // 9.1 SCI-A
+ /* Продолжает список аргументов, полей или выражение SCITXINTA_ISR,; порядок элементов сохраняется. */
SCITXINTA_ISR, // 9.2 SCI-A
+ /* Продолжает список аргументов, полей или выражение SCIRXINTB_ISR,; порядок элементов сохраняется. */
SCIRXINTB_ISR, // 9.3 SCI-B
+ /* Продолжает список аргументов, полей или выражение SCITXINTB_ISR,; порядок элементов сохраняется. */
SCITXINTB_ISR, // 9.4 SCI-B
+ /* Продолжает список аргументов, полей или выражение ECAN0INTA_ISR,; порядок элементов сохраняется. */
ECAN0INTA_ISR, // 9.5 eCAN-A
+ /* Продолжает список аргументов, полей или выражение ECAN1INTA_ISR,; порядок элементов сохраняется. */
ECAN1INTA_ISR, // 9.6 eCAN-A
+ /* Продолжает список аргументов, полей или выражение ECAN0INTB_ISR,; порядок элементов сохраняется. */
ECAN0INTB_ISR, // 9.7 eCAN-B
+ /* Продолжает список аргументов, полей или выражение ECAN1INTB_ISR,; порядок элементов сохраняется. */
ECAN1INTB_ISR, // 9.8 eCAN-B
-
+
// Group 10 PIE Vectors
- rsvd_ISR, // 10.1
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 10.1
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 10.2
- rsvd_ISR, // 10.3
- rsvd_ISR, // 10.4
- rsvd_ISR, // 10.5
- rsvd_ISR, // 10.6
- rsvd_ISR, // 10.7
- rsvd_ISR, // 10.8
-
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 10.3
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 10.4
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 10.5
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 10.6
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 10.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 10.8
+
// Group 11 PIE Vectors
- rsvd_ISR, // 11.1
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 11.1
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 11.2
- rsvd_ISR, // 11.3
- rsvd_ISR, // 11.4
- rsvd_ISR, // 11.5
- rsvd_ISR, // 11.6
- rsvd_ISR, // 11.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 11.3
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 11.4
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 11.5
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 11.6
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 11.7
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 11.8
-
+
// Group 12 PIE Vectors
- XINT3_ISR, // 12.1
+ /* Продолжает список аргументов, полей или выражение XINT3_ISR,; порядок элементов сохраняется. */
+ XINT3_ISR, // 12.1
+ /* Продолжает список аргументов, полей или выражение XINT4_ISR,; порядок элементов сохраняется. */
XINT4_ISR, // 12.2
- XINT5_ISR, // 12.3
- XINT6_ISR, // 12.4
- XINT7_ISR, // 12.5
- rsvd_ISR, // 12.6
- LVF_ISR, // 12.7
- LUF_ISR, // 12.8
+ /* Продолжает список аргументов, полей или выражение XINT5_ISR,; порядок элементов сохраняется. */
+ XINT5_ISR, // 12.3
+ /* Продолжает список аргументов, полей или выражение XINT6_ISR,; порядок элементов сохраняется. */
+ XINT6_ISR, // 12.4
+ /* Продолжает список аргументов, полей или выражение XINT7_ISR,; порядок элементов сохраняется. */
+ XINT7_ISR, // 12.5
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR, // 12.6
+ /* Продолжает список аргументов, полей или выражение LVF_ISR,; порядок элементов сохраняется. */
+ LVF_ISR, // 12.7
+ /* Продолжает список аргументов, полей или выражение LUF_ISR,; порядок элементов сохраняется. */
+ LUF_ISR, // 12.8
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
-// InitPieVectTable:
+// InitPieVectTable:
//---------------------------------------------------------------------------
// This function initializes the PIE vector table to a known state.
// This function must be executed after boot time.
//
+/* Начинает функцию InitPieVectTable; назначение модуля — поставляемое TI описание PieVect для семейства C2833x. */
void InitPieVectTable(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Продолжает список аргументов, полей или выражение int16 i;; порядок элементов сохраняется. */
int16 i;
+ /* Объявляет Source — данные Source; PieVectTableInit — данные PieVectTableInit. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
Uint32 *Source = (void *) &PieVectTableInit;
+ /* Объявляет Dest — данные Dest; PieVectTable — данные PieVectTable. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
Uint32 *Dest = (void *) &PieVectTable;
-
- EALLOW;
+
+ /* Разрешение записи в защищённые регистры периферии. */
+ EALLOW;
+ /* Цикл for(i=0; i < 128; i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0; i < 128; i++)
- *Dest++ = *Source++;
+ /* Изменяет счётчик в выражении *Dest++ = *Source++; на один для следующего шага. */
+ *Dest++ = *Source++;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
// Enable the PIE Vector Table
- PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
-
+ /* Записывает PieCtrlRegs.PIECTRL.bit.ENPIE значением 1; данные ENPIE. */
+ PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
+
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedDefaultIsr.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedDefaultIsr.c
index bf821e1..c81094e 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedDefaultIsr.c
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedDefaultIsr.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание SWPrioritizedDefaultIsr для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: January 14, 2008 11:28:12 $
//###########################################################################
@@ -13,259 +14,388 @@
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
+/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
#include "DSP2833x_SWPrioritizedIsrLevels.h"
// Connected to INT13 of CPU (use MINT13 mask):
// Note CPU-Timer1 is reserved for TI use, however XINT13
// ISR can be used by the user.
+/* Условие компиляции (INT13PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL != 0)
+/* Объявляет обработчик INT13_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT13_ISR(void) // INT13 or CPU-Timer1
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Устанавливает биты IER значением MINT13; регистр разрешения прерываний ядра C28x. */
IER |= MINT13; // Set "global" priority
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to INT14 of CPU (use MINT14 mask):
+/* Условие компиляции (INT14PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL != 0)
+/* Объявляет обработчик INT14_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT14_ISR(void) // CPU-Timer2
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Устанавливает биты IER значением MINT14; регистр разрешения прерываний ядра C28x. */
IER |= MINT14; // Set "global" priority
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to INT15 of CPU (use MINT15 mask):
+/* Условие компиляции (INT15PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL != 0)
+/* Объявляет обработчик DATALOG_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DATALOG_ISR(void) // Datalogging interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Устанавливает биты IER значением MINT15; регистр разрешения прерываний ядра C28x. */
IER |= MINT15; // Set "global" priority
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to INT16 of CPU (use MINT16 mask):
+/* Условие компиляции (INT16PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL != 0)
+/* Объявляет обработчик RTOSINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RTOSINT_ISR(void) // RTOS interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Устанавливает биты IER значением MINT16; регистр разрешения прерываний ядра C28x. */
IER |= MINT16; // Set "global" priority
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to EMUINT of CPU (non-maskable):
+/* Объявляет обработчик EMUINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EMUINT_ISR(void) // Emulation interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
// Connected to NMI of CPU (non-maskable):
+/* Объявляет обработчик NMI_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void NMI_ISR(void) // Non-maskable interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик ILLEGAL_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ILLEGAL_ISR(void) // Illegal operation TRAP
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER1_ISR(void) // User Defined trap 1
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER2_ISR(void) // User Defined trap 2
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER3_ISR(void) // User Defined trap 3
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER4_ISR(void) // User Defined trap 4
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER5_ISR(void) // User Defined trap 5
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER6_ISR(void) // User Defined trap 6
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER7_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER7_ISR(void) // User Defined trap 7
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER8_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER8_ISR(void) // User Defined trap 8
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER9_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER9_ISR(void) // User Defined trap 9
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER10_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER10_ISR(void) // User Defined trap 10
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER11_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER11_ISR(void) // User Defined trap 11
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик USER12_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER12_ISR(void) // User Defined trap 12
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
@@ -274,41 +404,65 @@ interrupt void USER12_ISR(void) // User Defined trap 12
// -----------------------------------------------------------
// Connected to PIEIER1_1 (use MINT1 and MG11 masks):
+/* Условие компиляции (G11PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL != 0)
+/* Объявляет обработчик SEQ1INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SEQ1INT_ISR( void ) // ADC
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
+ /* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1;
+ /* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG11; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG11; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER1_2 (use MINT1 and MG12 masks):
+/* Условие компиляции (G12PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL != 0)
+/* Объявляет обработчик SEQ2INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SEQ2INT_ISR( void ) // ADC
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
+ /* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1;
+ /* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG12; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG12; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
@@ -317,50 +471,78 @@ interrupt void SEQ2INT_ISR( void ) // ADC
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER1_4 (use MINT1 and MG14 masks):
+/* Условие компиляции (G14PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL != 0)
+/* Объявляет обработчик XINT1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT1_ISR(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
+ /* Устанавливает биты IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER |= MINT1; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG14; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG14; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER1_5 (use MINT1 and MG15 masks):
+/* Условие компиляции (G15PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL != 0)
+/* Объявляет обработчик XINT2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT2_ISR(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
+ /* Устанавливает биты IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER |= MINT1; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG15; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG15; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
@@ -368,92 +550,143 @@ interrupt void XINT2_ISR(void)
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER1_6 (use MINT1 and MG16 masks):
+/* Условие компиляции (G16PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL != 0)
+/* Объявляет обработчик ADCINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ADCINT_ISR(void) // ADC
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
+ /* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1;
+ /* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG16; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG16; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER1_7 (use MINT1 and MG17 masks):
+/* Условие компиляции (G17PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL != 0)
+/* Объявляет обработчик TINT0_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void TINT0_ISR(void) // CPU-Timer 0
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
+ /* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1;
+ /* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG17; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG17; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER1_8 (use MINT1 and MG18 masks):
+/* Условие компиляции (G18PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL != 0)
+/* Объявляет обработчик WAKEINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void WAKEINT_ISR(void) // WD/LPM
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
+ /* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1;
+ /* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG18; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG18; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -462,157 +695,247 @@ interrupt void WAKEINT_ISR(void) // WD/LPM
// -----------------------------------------------------------
// Connected to PIEIER2_1 (use MINT2 and MG21 masks):
+/* Условие компиляции (G21PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL != 0)
+/* Объявляет обработчик EPWM1_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM1_TZINT_ISR(void) // ePWM1 Trip Zone
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
+ /* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2;
+ /* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG21; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG21; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER2_2 (use MINT2 and MG22 masks):
+/* Условие компиляции (G22PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL != 0)
+/* Объявляет обработчик EPWM2_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM2_TZINT_ISR(void) // ePWM2 Trip Zone
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
+ /* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2;
+ /* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG22; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG22; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER2_3 (use MINT2 and MG23 masks):
+/* Условие компиляции (G23PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL != 0)
+/* Объявляет обработчик EPWM3_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM3_TZINT_ISR(void) // ePWM3 Trip Zone
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
+ /* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2;
+ /* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG23; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG23; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER2_4 (use MINT2 and MG24 masks):
+/* Условие компиляции (G24PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL != 0)
+/* Объявляет обработчик EPWM4_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM4_TZINT_ISR(void) // ePWM4 Trip Zone
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
+ /* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2;
+ /* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG24; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG24; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER2_5 (use MINT2 and MG25 masks):
+/* Условие компиляции (G25PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL != 0)
+/* Объявляет обработчик EPWM5_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM5_TZINT_ISR(void) // ePWM5 Trip Zone
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
+ /* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2;
+ /* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG25; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG25; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER2_6 (use MINT2 and MG26 masks):
+/* Условие компиляции (G26PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL != 0)
+/* Объявляет обработчик EPWM6_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM6_TZINT_ISR(void) // ePWM6 Trip Zone
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
+ /* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2;
+ /* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG26; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG26; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -622,157 +945,247 @@ interrupt void EPWM6_TZINT_ISR(void) // ePWM6 Trip Zone
// Connected to PIEIER3_1 (use MINT3 and MG31 masks):
+/* Условие компиляции (G31PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL != 0)
+/* Объявляет обработчик EPWM1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM1_INT_ISR(void) // ePWM1 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
+ /* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3;
+ /* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG31; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG31; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER3_2 (use MINT3 and MG32 masks):
+/* Условие компиляции (G32PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL != 0)
+/* Объявляет обработчик EPWM2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM2_INT_ISR(void) // ePWM2 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
+ /* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3;
+ /* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG32; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG32; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER3_3 (use MINT3 and MG33 masks):
+/* Условие компиляции (G33PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL != 0)
+/* Объявляет обработчик EPWM3_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM3_INT_ISR(void) // ePWM3 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
+ /* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3;
+ /* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG33; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG33; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER3_4 (use MINT3 and MG34 masks):
+/* Условие компиляции (G34PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL != 0)
+/* Объявляет обработчик EPWM4_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM4_INT_ISR(void) // ePWM4 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
+ /* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3;
+ /* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG34; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG34; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER3_5 (use MINT3 and MG35 masks):
+/* Условие компиляции (G35PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL != 0)
+/* Объявляет обработчик EPWM5_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM5_INT_ISR(void) // ePWM5 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
+ /* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3;
+ /* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG35; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG35; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER3_6 (use MINT3 and MG36 masks):
+/* Условие компиляции (G36PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL != 0)
+/* Объявляет обработчик EPWM6_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM6_INT_ISR(void) // ePWM6 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
+ /* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3;
+ /* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG36; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG36; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -782,159 +1195,249 @@ interrupt void EPWM6_INT_ISR(void) // ePWM6 Interrupt
// Connected to PIEIER4_1 (use MINT4 and MG41 masks):
+/* Условие компиляции (G41PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL != 0)
+/* Объявляет обработчик ECAP1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP1_INT_ISR(void) // eCAP1 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
+ /* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4;
+ /* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG41; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG41; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER4_2 (use MINT4 and MG42 masks):
+/* Условие компиляции (G42PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL != 0)
+/* Объявляет обработчик ECAP2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP2_INT_ISR(void) // eCAP2 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all;
+ /* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4;
+ /* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG42; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG42; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER4_3 (use MINT4 and MG43 masks):
+/* Условие компиляции (G43PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL != 0)
+/* Объявляет обработчик ECAP3_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP3_INT_ISR(void) // eCAP3 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
+ /* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4;
+ /* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG43; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG43; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER4_4 (use MINT4 and MG44 masks):
+/* Условие компиляции (G44PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL != 0)
+/* Объявляет обработчик ECAP4_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP4_INT_ISR(void) // eCAP4 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
+ /* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4;
+ /* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG44; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG44; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER4_5 (use MINT4 and MG45 masks):
+/* Условие компиляции (G45PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL != 0)
+/* Объявляет обработчик ECAP5_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP5_INT_ISR(void) // eCAP5 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
+ /* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4;
+ /* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG45; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG45; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER4_6 (use MINT4 and MG46 masks):
+/* Условие компиляции (G46PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL != 0)
+/* Объявляет обработчик ECAP6_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP6_INT_ISR(void) // eCAP6 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
+ /* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4;
+ /* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG46; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG46; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -944,57 +1447,87 @@ interrupt void ECAP6_INT_ISR(void) // eCAP6 Interrupt
// -----------------------------------------------------------
// Connected to PIEIER5_1 (use MINT5 and MG51 masks):
+/* Условие компиляции (G51PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL != 0)
+/* Объявляет обработчик EQEP1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EQEP1_INT_ISR(void) // eQEP1 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all;
+ /* Устанавливает биты IER значением M_INT5; регистр разрешения прерываний ядра C28x. */
IER |= M_INT5;
+ /* Оставляет биты маски IER значением MINT5; регистр разрешения прерываний ядра C28x. */
IER &= MINT5; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER5.all значением MG51; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all &= MG51; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER5.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER5_2 (use MINT5 and MG52 masks):
+/* Условие компиляции (G52PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL != 0)
+/* Объявляет обработчик EQEP2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EQEP2_INT_ISR(void) // eQEP2 Interrupt
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all;
+ /* Устанавливает биты IER значением M_INT5; регистр разрешения прерываний ядра C28x. */
IER |= M_INT5;
+ /* Оставляет биты маски IER значением MINT5; регистр разрешения прерываний ядра C28x. */
IER &= MINT5; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER5.all значением MG52; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all &= MG52; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER5.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// -----------------------------------------------------------
@@ -1002,160 +1535,250 @@ interrupt void EQEP2_INT_ISR(void) // eQEP2 Interrupt
// -----------------------------------------------------------
// Connected to PIEIER6_1 (use MINT6 and MG61 masks):
+/* Условие компиляции (G61PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL != 0)
+/* Объявляет обработчик SPIRXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SPIRXINTA_ISR(void) // SPI-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
+ /* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6;
+ /* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG61; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG61; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER6_2 (use MINT6 and MG62 masks):
+/* Условие компиляции (G62PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL != 0)
+/* Объявляет обработчик SPITXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SPITXINTA_ISR(void) // SPI-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
+ /* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6;
+ /* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG62; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG62; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER6_3 (use MINT6 and MG63 masks):
+/* Условие компиляции (G63PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL != 0)
+/* Объявляет обработчик MRINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MRINTB_ISR(void) // McBSP-B
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
+ /* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6;
+ /* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG63; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG63; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER6_4 (use MINT6 and MG64 masks):
+/* Условие компиляции (G64PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL != 0)
+/* Объявляет обработчик MXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MXINTB_ISR(void) // McBSP-B
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
+ /* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6;
+ /* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG64; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG64; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER6_5 (use MINT6 and MG65 masks):
+/* Условие компиляции (G65PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL != 0)
+/* Объявляет обработчик MRINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MRINTA_ISR(void) // McBSP-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
+ /* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6;
+ /* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG65; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG65; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER6_6 (use MINT6 and MG66 masks):
+/* Условие компиляции (G66PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL != 0)
+/* Объявляет обработчик MXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MXINTA_ISR(void) // McBSP-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
+ /* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6;
+ /* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG66; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG66; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -1164,160 +1787,250 @@ interrupt void MXINTA_ISR(void) // McBSP-A
// -----------------------------------------------------------
// Connected to PIEIER7_1 (use MINT7 and MG71 masks):
+/* Условие компиляции (G71PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL != 0)
+/* Объявляет обработчик DINTCH1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH1_ISR(void) // DMA
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
+ /* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7;
+ /* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG71; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG71; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER7_2 (use MINT7 and MG72 masks):
+/* Условие компиляции (G72PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL != 0)
+/* Объявляет обработчик DINTCH2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH2_ISR(void) // DMA
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
+ /* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7;
+ /* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG72; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG72; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER7_3 (use MINT7 and MG73 masks):
+/* Условие компиляции (G73PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL != 0)
+/* Объявляет обработчик DINTCH3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH3_ISR(void) // DMA
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
+ /* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7;
+ /* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG73; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG73; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER7_4 (use MINT7 and MG74 masks):
+/* Условие компиляции (G74PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL != 0)
+/* Объявляет обработчик DINTCH4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH4_ISR(void) // DMA
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
+ /* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7;
+ /* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG74; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG74; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER7_5 (use MINT7 and MG75 masks):
+/* Условие компиляции (G75PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL != 0)
+/* Объявляет обработчик DINTCH5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH5_ISR(void) // DMA
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
+ /* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7;
+ /* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG75; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG75; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER7_6 (use MINT7 and MG76 masks):
+/* Условие компиляции (G76PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL != 0)
+/* Объявляет обработчик DINTCH6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH6_ISR(void) // DMA
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
+ /* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7;
+ /* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG76; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG76; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -1326,107 +2039,167 @@ interrupt void DINTCH6_ISR(void) // DMA
// -----------------------------------------------------------
// Connected to PIEIER8_1 (use MINT8 and MG81 masks):
+/* Условие компиляции (G81PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL != 0)
+/* Объявляет обработчик I2CINT1A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void I2CINT1A_ISR(void) // I2C-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all;
+ /* Устанавливает биты IER значением M_INT8; регистр разрешения прерываний ядра C28x. */
IER |= M_INT8;
+ /* Оставляет биты маски IER значением MINT8; регистр разрешения прерываний ядра C28x. */
IER &= MINT8; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG81; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG81; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER8.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER8_2 (use MINT8 and MG82 masks):
+/* Условие компиляции (G82PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL != 0)
+/* Объявляет обработчик I2CINT2A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void I2CINT2A_ISR(void) // I2C-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all;
+ /* Устанавливает биты IER значением M_INT8; регистр разрешения прерываний ядра C28x. */
IER |= M_INT8;
+ /* Оставляет биты маски IER значением MINT8; регистр разрешения прерываний ядра C28x. */
IER &= MINT8; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER8.all значением MG82; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all &= MG82; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER8.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER8_5 (use MINT8 and MG85 masks):
+/* Условие компиляции (G85PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL != 0)
+/* Объявляет обработчик SCIRXINTC_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTC_ISR(void) // SCI-C
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all;
+ /* Устанавливает биты IER значением M_INT8; регистр разрешения прерываний ядра C28x. */
IER |= M_INT8;
+ /* Оставляет биты маски IER значением MINT8; регистр разрешения прерываний ядра C28x. */
IER &= MINT8; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG85; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG85; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER8.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER8_6 (use MINT8 and MG86 masks):
+/* Условие компиляции (G82PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL != 0)
+/* Объявляет обработчик SCITXINTC_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTC_ISR(void) // SCI-C
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all;
+ /* Устанавливает биты IER значением M_INT8; регистр разрешения прерываний ядра C28x. */
IER |= M_INT8;
+ /* Оставляет биты маски IER значением MINT8; регистр разрешения прерываний ядра C28x. */
IER &= MINT8; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER8.all значением MG86; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all &= MG86; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER8.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// -----------------------------------------------------------
@@ -1434,212 +2207,332 @@ interrupt void SCITXINTC_ISR(void) // SCI-C
// -----------------------------------------------------------
// Connected to PIEIER9_1 (use MINT9 and MG91 masks):
+/* Условие компиляции (G91PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL != 0)
+/* Объявляет обработчик SCIRXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTA_ISR(void) // SCI-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG91; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG91; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER9_2 (use MINT9 and MG92 masks):
+/* Условие компиляции (G92PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL != 0)
+/* Объявляет обработчик SCITXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTA_ISR(void) // SCI-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG92; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG92; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER9_3 (use MINT9 and MG93 masks):
+/* Условие компиляции (G93PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL != 0)
+/* Объявляет обработчик SCIRXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTB_ISR(void) // SCI-B
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG93; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG93; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER9_4 (use MINT9 and MG94 masks):
+/* Условие компиляции (G94PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL != 0)
+/* Объявляет обработчик SCITXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTB_ISR(void) // SCI-B
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG94; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG94; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER9_5 (use MINT9 and MG95 masks):
+/* Условие компиляции (G95PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL != 0)
+/* Объявляет обработчик ECAN0INTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN0INTA_ISR(void) // eCAN-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG95; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG95; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER9_6 (use MINT9 and MG96 masks):
+/* Условие компиляции (G96PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL != 0)
+/* Объявляет обработчик ECAN1INTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN1INTA_ISR(void) // eCAN-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG96; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG96; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER9_7 (use MINT9 and MG97 masks):
+/* Условие компиляции (G97PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL != 0)
+/* Объявляет обработчик ECAN0INTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN0INTB_ISR(void) // eCAN-B
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG97; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG97; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER9_8 (use MINT9 and MG98 masks):
+/* Условие компиляции (G98PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL != 0)
+/* Объявляет обработчик ECAN1INTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN1INTB_ISR(void) // eCAN-B
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG98; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG98; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// -----------------------------------------------------------
@@ -1653,186 +2546,291 @@ interrupt void ECAN1INTB_ISR(void) // eCAN-B
// -----------------------------------------------------------
// Connected to PIEIER9_1 (use MINT12 and MG121 masks):
+/* Условие компиляции (G121PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL != 0)
+/* Объявляет обработчик XINT3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT3_ISR(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
+ /* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12;
+ /* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG121; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG121; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER12_2 (use MINT12 and MG122 masks):
+/* Условие компиляции (G122PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL != 0)
+/* Объявляет обработчик XINT4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT4_ISR(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
+ /* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12;
+ /* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG122; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG122; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER12_3 (use MINT12 and MG123 masks):
+/* Условие компиляции (G123PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL != 0)
+/* Объявляет обработчик XINT5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT5_ISR(void) // SCI-B
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
+ /* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12;
+ /* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG123; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG123; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER12_4 (use MINT12 and MG124 masks):
+/* Условие компиляции (G124PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL != 0)
+/* Объявляет обработчик XINT6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT6_ISR(void) // SCI-B
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
+ /* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12;
+ /* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG124; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG124; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER12_5 (use MINT12 and MG125 masks):
+/* Условие компиляции (G125PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL != 0)
+/* Объявляет обработчик XINT7_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT7_ISR(void) // eCAN-A
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
+ /* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12;
+ /* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG125; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG125; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER12_7 (use MINT12 and MG127 masks):
+/* Условие компиляции (G127PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL != 0)
+/* Объявляет обработчик LVF_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void LVF_ISR(void) // FPU
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
+ /* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12;
+ /* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG127; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG127; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Connected to PIEIER12_8 (use MINT12 and MG128 masks):
+/* Условие компиляции (G128PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL != 0)
+/* Объявляет обработчик LUF_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void LUF_ISR(void) // FPU
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
+ /* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12;
+ /* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG128; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG128; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
// Insert ISR Code here.......
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -1840,22 +2838,37 @@ interrupt void LUF_ISR(void) // FPU
// Catch All Default ISRs:
//
+/* Начинает функцию PIE_RESERVED; назначение модуля — поставляемое TI описание SWPrioritizedDefaultIsr для семейства C2833x. */
interrupt void PIE_RESERVED(void) // Reserved space. For test.
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик INT_NOTUSED_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT_NOTUSED_ISR(void) // Reserved space. For test.
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик rsvd_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void rsvd_ISR(void) // For test
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0");
+ /* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedPieVect.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedPieVect.c
index 99379ea..8ff7d9f 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedPieVect.c
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedPieVect.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание SWPrioritizedPieVect для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: April 4, 2007 14:25:31 $
//###########################################################################
@@ -7,503 +8,895 @@
// TITLE: DSP2833x Devices SW Prioritized PIE Vector Table Initialization.
//
//###########################################################################
-//
+//
// Original Source by A.T.
//
// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
-#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
+#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Записывает PieVectTableInit значением {; данные PieVectTableInit. */
const struct PIE_VECT_TABLE PieVectTableInit = {
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // Reserved space
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
+ /* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved
// Non-Peripheral Interrupts:
+ /* Условие компиляции (INT13PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL != 0)
+ /* Продолжает список аргументов, полей или выражение INT13_ISR,; порядок элементов сохраняется. */
INT13_ISR, // XINT13
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
+
+ /* Условие компиляции (INT14PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL != 0)
+ /* Продолжает список аргументов, полей или выражение INT14_ISR,; порядок элементов сохраняется. */
INT14_ISR, // CPU-Timer2
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
+
+ /* Условие компиляции (INT15PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL != 0)
+ /* Продолжает список аргументов, полей или выражение DATALOG_ISR,; порядок элементов сохраняется. */
DATALOG_ISR, // Datalogging interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (INT16PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL != 0)
+ /* Продолжает список аргументов, полей или выражение RTOSINT_ISR,; порядок элементов сохраняется. */
RTOSINT_ISR, // RTOS interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // reserved interrupt
+ /* Продолжает список аргументов, полей или выражение NMI_ISR,; порядок элементов сохраняется. */
NMI_ISR, // Non-maskable interrupt
+ /* Продолжает список аргументов, полей или выражение ILLEGAL_ISR,; порядок элементов сохраняется. */
ILLEGAL_ISR, // Illegal operation TRAP
+ /* Продолжает список аргументов, полей или выражение USER1_ISR,; порядок элементов сохраняется. */
USER1_ISR, // User Defined trap 1
+ /* Продолжает список аргументов, полей или выражение USER2_ISR,; порядок элементов сохраняется. */
USER2_ISR, // User Defined trap 2
+ /* Продолжает список аргументов, полей или выражение USER3_ISR,; порядок элементов сохраняется. */
USER3_ISR, // User Defined trap 3
+ /* Продолжает список аргументов, полей или выражение USER4_ISR,; порядок элементов сохраняется. */
USER4_ISR, // User Defined trap 4
+ /* Продолжает список аргументов, полей или выражение USER5_ISR,; порядок элементов сохраняется. */
USER5_ISR, // User Defined trap 5
+ /* Продолжает список аргументов, полей или выражение USER6_ISR,; порядок элементов сохраняется. */
USER6_ISR, // User Defined trap 6
+ /* Продолжает список аргументов, полей или выражение USER7_ISR,; порядок элементов сохраняется. */
USER7_ISR, // User Defined trap 7
+ /* Продолжает список аргументов, полей или выражение USER8_ISR,; порядок элементов сохраняется. */
USER8_ISR, // User Defined trap 8
+ /* Продолжает список аргументов, полей или выражение USER9_ISR,; порядок элементов сохраняется. */
USER9_ISR, // User Defined trap 9
+ /* Продолжает список аргументов, полей или выражение USER10_ISR,; порядок элементов сохраняется. */
USER10_ISR, // User Defined trap 10
+ /* Продолжает список аргументов, полей или выражение USER11_ISR,; порядок элементов сохраняется. */
USER11_ISR, // User Defined trap 11
+ /* Продолжает список аргументов, полей или выражение USER12_ISR,; порядок элементов сохраняется. */
USER12_ISR, // User Defined trap 12
// Group 1 PIE Vectors:
+ /* Условие компиляции (G11PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL != 0)
+ /* Продолжает список аргументов, полей или выражение SEQ1INT_ISR,; порядок элементов сохраняется. */
SEQ1INT_ISR, // ADC
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G12PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL != 0)
- SEQ2INT_ISR, // ADC
+ /* Продолжает список аргументов, полей или выражение SEQ2INT_ISR,; порядок элементов сохраняется. */
+ SEQ2INT_ISR, // ADC
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
+ /* Условие компиляции (G14PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL != 0)
+ /* Продолжает список аргументов, полей или выражение XINT1_ISR,; порядок элементов сохраняется. */
XINT1_ISR, // External
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G15PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL != 0)
+ /* Продолжает список аргументов, полей или выражение XINT2_ISR,; порядок элементов сохраняется. */
XINT2_ISR, // External
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G16PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL != 0)
+ /* Продолжает список аргументов, полей или выражение ADCINT_ISR,; порядок элементов сохраняется. */
ADCINT_ISR, // ADC
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G17PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL != 0)
+ /* Продолжает список аргументов, полей или выражение TINT0_ISR,; порядок элементов сохраняется. */
TINT0_ISR, // Timer 0
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G18PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL != 0)
+ /* Продолжает список аргументов, полей или выражение WAKEINT_ISR,; порядок элементов сохраняется. */
WAKEINT_ISR, // WD & Low Power
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Group 2 PIE Vectors:
+ /* Условие компиляции (G21PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM1_TZINT_ISR,; порядок элементов сохраняется. */
EPWM1_TZINT_ISR, // ePWM1 Trip Zone
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G22PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM2_TZINT_ISR,; порядок элементов сохраняется. */
EPWM2_TZINT_ISR, // ePWM2 Trip Zone
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G23PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM3_TZINT_ISR,; порядок элементов сохраняется. */
EPWM3_TZINT_ISR, // ePWM3 Trip Zone
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G24PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM4_TZINT_ISR,; порядок элементов сохраняется. */
EPWM4_TZINT_ISR, // ePWM4 Trip Zone
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G25PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM5_TZINT_ISR,; порядок элементов сохраняется. */
EPWM5_TZINT_ISR, // ePWM5 Trip Zone
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G26PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM6_TZINT_ISR,; порядок элементов сохраняется. */
EPWM6_TZINT_ISR, // ePWM6 Trip Zone
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
-
+
// Group 3 PIE Vectors:
+ /* Условие компиляции (G31PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM1_INT_ISR,; порядок элементов сохраняется. */
EPWM1_INT_ISR, // ePWM1 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G32PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM2_INT_ISR,; порядок элементов сохраняется. */
EPWM2_INT_ISR, // ePWM2 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G33PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM3_INT_ISR,; порядок элементов сохраняется. */
EPWM3_INT_ISR, // ePWM3 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G34PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM4_INT_ISR,; порядок элементов сохраняется. */
EPWM4_INT_ISR, // ePWM4 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G35PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM5_INT_ISR,; порядок элементов сохраняется. */
EPWM5_INT_ISR, // ePWM5 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G36PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL != 0)
+ /* Продолжает список аргументов, полей или выражение EPWM6_INT_ISR,; порядок элементов сохраняется. */
EPWM6_INT_ISR, // ePWM6 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
-
+
// Group 4 PIE Vectors:
+ /* Условие компиляции (G41PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAP1_INT_ISR,; порядок элементов сохраняется. */
ECAP1_INT_ISR, // eCAP1 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G42PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAP2_INT_ISR,; порядок элементов сохраняется. */
ECAP2_INT_ISR, // eCAP2 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G43PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAP3_INT_ISR,; порядок элементов сохраняется. */
ECAP3_INT_ISR, // eCAP3 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G44PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAP4_INT_ISR,; порядок элементов сохраняется. */
ECAP4_INT_ISR, // eCAP4 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G45PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAP5_INT_ISR,; порядок элементов сохраняется. */
ECAP5_INT_ISR, // eCAP5 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G46PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAP6_INT_ISR,; порядок элементов сохраняется. */
ECAP6_INT_ISR, // eCAP6 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
- rsvd_ISR,
-
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+
// Group 5 PIE Vectors:
+ /* Условие компиляции (G51PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL != 0)
+ /* Продолжает список аргументов, полей или выражение EQEP1_INT_ISR,; порядок элементов сохраняется. */
EQEP1_INT_ISR, // eQEP1 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G52PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL != 0)
+ /* Продолжает список аргументов, полей или выражение EQEP2_INT_ISR,; порядок элементов сохраняется. */
EQEP2_INT_ISR, // eQEP2 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
- rsvd_ISR,
// Group 6 PIE Vectors:
+ /* Условие компиляции (G61PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL != 0)
+ /* Продолжает список аргументов, полей или выражение SPIRXINTA_ISR,; порядок элементов сохраняется. */
SPIRXINTA_ISR, // SPI-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G62PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL != 0)
+ /* Продолжает список аргументов, полей или выражение SPITXINTA_ISR,; порядок элементов сохраняется. */
SPITXINTA_ISR, // SPI-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G63PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL != 0)
+ /* Продолжает список аргументов, полей или выражение MRINTB_ISR,; порядок элементов сохраняется. */
MRINTB_ISR, // McBSP-B
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G64PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL != 0)
+ /* Продолжает список аргументов, полей или выражение MXINTB_ISR,; порядок элементов сохраняется. */
MXINTB_ISR, // McBSP-B
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G65PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL != 0)
+ /* Продолжает список аргументов, полей или выражение MRINTA_ISR,; порядок элементов сохраняется. */
MRINTA_ISR, // McBSP-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G66PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL != 0)
+ /* Продолжает список аргументов, полей или выражение MXINTA_ISR,; порядок элементов сохраняется. */
MXINTA_ISR, // McBSP-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
-
+
// Group 7 PIE Vectors:
+ /* Условие компиляции (G71PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL != 0)
+ /* Продолжает список аргументов, полей или выражение DINTCH1_ISR,; порядок элементов сохраняется. */
DINTCH1_ISR, // DMA-Channel 1 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G72PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL != 0)
+ /* Продолжает список аргументов, полей или выражение DINTCH2_ISR,; порядок элементов сохраняется. */
DINTCH2_ISR, // DMA-Channel 2 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G73PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL != 0)
+ /* Продолжает список аргументов, полей или выражение DINTCH3_ISR,; порядок элементов сохраняется. */
DINTCH3_ISR, // DMA-Channel 3 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G74PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL != 0)
+ /* Продолжает список аргументов, полей или выражение DINTCH4_ISR,; порядок элементов сохраняется. */
DINTCH4_ISR, // DMA-Channel 4 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G75PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL != 0)
+ /* Продолжает список аргументов, полей или выражение DINTCH5_ISR,; порядок элементов сохраняется. */
DINTCH5_ISR, // DMA-Channel 5 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G76PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL != 0)
+ /* Продолжает список аргументов, полей или выражение DINTCH6_ISR,; порядок элементов сохраняется. */
DINTCH6_ISR, // DMA-Channel 6 Interrupt
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
- rsvd_ISR,
// Group 8 PIE Vectors:
+ /* Условие компиляции (G81PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL != 0)
+ /* Продолжает список аргументов, полей или выражение I2CINT1A_ISR,; порядок элементов сохраняется. */
I2CINT1A_ISR, // I2C-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (G82PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL != 0)
+ /* Продолжает список аргументов, полей или выражение I2CINT2A_ISR,; порядок элементов сохраняется. */
I2CINT2A_ISR, // I2C-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
- #endif
-
- rsvd_ISR,
- rsvd_ISR,
-
- #if (G85PL != 0)
- SCIRXINTC_ISR, // SCI-C
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G86PL != 0)
- SCITXINTC_ISR, // SCI-C
- #else
- INT_NOTUSED_ISR,
- #endif
-
- rsvd_ISR,
- rsvd_ISR,
-
-// Group 9 PIE Vectors:
- #if (G91PL != 0)
- SCIRXINTA_ISR, // SCI-A
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G92PL != 0)
- SCITXINTA_ISR, // SCI-A
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G93PL != 0)
- SCIRXINTB_ISR, // SCI-B
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G94PL != 0)
- SCITXINTB_ISR, // SCI-B
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G95PL != 0)
- ECAN0INTA_ISR, // eCAN-A
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G96PL != 0)
- ECAN1INTA_ISR, // eCAN-A
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G97PL != 0)
- ECAN0INTB_ISR, // eCAN-B
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G98PL != 0)
- ECAN1INTB_ISR, // eCAN-B
- #else
- INT_NOTUSED_ISR,
- #endif
-
-// Group 10 PIE Vectors
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
-
-// Group 11 PIE Vectors
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
- rsvd_ISR,
-
-// Group 12 PIE Vectors
- #if (G121PL != 0)
- XINT3_ISR, // External interrupt 3
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G122PL != 0)
- XINT4_ISR, // External interrupt 4
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G123PL != 0)
- XINT5_ISR, // External interrupt 5
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G124PL != 0)
- XINT6_ISR, // External interrupt 6
- #else
- INT_NOTUSED_ISR,
- #endif
-
- #if (G125PL != 0)
- XINT7_ISR, // External interrupt 7
- #else
- INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
- #if (G127PL != 0)
- LVF_ISR, // Latched overflow flag
+ /* Условие компиляции (G85PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G85PL != 0)
+ /* Продолжает список аргументов, полей или выражение SCIRXINTC_ISR,; порядок элементов сохраняется. */
+ SCIRXINTC_ISR, // SCI-C
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
- #if (G128PL != 0)
- LUF_ISR, // Latched underflow flag
+ /* Условие компиляции (G86PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G86PL != 0)
+ /* Продолжает список аргументов, полей или выражение SCITXINTC_ISR,; порядок элементов сохраняется. */
+ SCITXINTC_ISR, // SCI-C
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
- #endif
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+
+// Group 9 PIE Vectors:
+ /* Условие компиляции (G91PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G91PL != 0)
+ /* Продолжает список аргументов, полей или выражение SCIRXINTA_ISR,; порядок элементов сохраняется. */
+ SCIRXINTA_ISR, // SCI-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G92PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G92PL != 0)
+ /* Продолжает список аргументов, полей или выражение SCITXINTA_ISR,; порядок элементов сохраняется. */
+ SCITXINTA_ISR, // SCI-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G93PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G93PL != 0)
+ /* Продолжает список аргументов, полей или выражение SCIRXINTB_ISR,; порядок элементов сохраняется. */
+ SCIRXINTB_ISR, // SCI-B
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G94PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G94PL != 0)
+ /* Продолжает список аргументов, полей или выражение SCITXINTB_ISR,; порядок элементов сохраняется. */
+ SCITXINTB_ISR, // SCI-B
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G95PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G95PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAN0INTA_ISR,; порядок элементов сохраняется. */
+ ECAN0INTA_ISR, // eCAN-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G96PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G96PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAN1INTA_ISR,; порядок элементов сохраняется. */
+ ECAN1INTA_ISR, // eCAN-A
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G97PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G97PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAN0INTB_ISR,; порядок элементов сохраняется. */
+ ECAN0INTB_ISR, // eCAN-B
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G98PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G98PL != 0)
+ /* Продолжает список аргументов, полей или выражение ECAN1INTB_ISR,; порядок элементов сохраняется. */
+ ECAN1INTB_ISR, // eCAN-B
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+// Group 10 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+
+// Group 11 PIE Vectors
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+
+// Group 12 PIE Vectors
+ /* Условие компиляции (G121PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G121PL != 0)
+ /* Продолжает список аргументов, полей или выражение XINT3_ISR,; порядок элементов сохраняется. */
+ XINT3_ISR, // External interrupt 3
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G122PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G122PL != 0)
+ /* Продолжает список аргументов, полей или выражение XINT4_ISR,; порядок элементов сохраняется. */
+ XINT4_ISR, // External interrupt 4
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G123PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G123PL != 0)
+ /* Продолжает список аргументов, полей или выражение XINT5_ISR,; порядок элементов сохраняется. */
+ XINT5_ISR, // External interrupt 5
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G124PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G124PL != 0)
+ /* Продолжает список аргументов, полей или выражение XINT6_ISR,; порядок элементов сохраняется. */
+ XINT6_ISR, // External interrupt 6
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G125PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G125PL != 0)
+ /* Продолжает список аргументов, полей или выражение XINT7_ISR,; порядок элементов сохраняется. */
+ XINT7_ISR, // External interrupt 7
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
+ rsvd_ISR,
+
+ /* Условие компиляции (G127PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G127PL != 0)
+ /* Продолжает список аргументов, полей или выражение LVF_ISR,; порядок элементов сохраняется. */
+ LVF_ISR, // Latched overflow flag
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+
+ /* Условие компиляции (G128PL != 0): выбранный блок включается в текущий вариант прошивки. */
+ #if (G128PL != 0)
+ /* Продолжает список аргументов, полей или выражение LUF_ISR,; порядок элементов сохраняется. */
+ LUF_ISR, // Latched underflow flag
+ /* Выбирает альтернативный блок текущего условия компиляции. */
+ #else
+ /* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
+ INT_NOTUSED_ISR,
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+ #endif
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
-// InitPieVectTable:
+// InitPieVectTable:
//---------------------------------------------------------------------------
// This function initializes the PIE vector table to a known state.
// This function must be executed after boot time.
//
+/* Начинает функцию InitPieVectTable; назначение модуля — поставляемое TI описание SWPrioritizedPieVect для семейства C2833x. */
void InitPieVectTable(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Продолжает список аргументов, полей или выражение int16 i;; порядок элементов сохраняется. */
int16 i;
+ /* Объявляет Source — данные Source; PieVectTableInit — данные PieVectTableInit. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
Uint32 *Source = (void *) &PieVectTableInit;
+ /* Объявляет Dest — данные Dest; PieVectTable — данные PieVectTable. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
Uint32 *Dest = (void *) &PieVectTable;
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Цикл for(i=0; i < 128; i++) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0; i < 128; i++) {
+ /* Изменяет счётчик в выражении *Dest++ = *Source++; на один для следующего шага. */
*Dest++ = *Source++;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c
index 7d9ea10..028b875 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание SysCtrl для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/7 $
// Checkin $Date: September 20, 2007 13:30:31 $
//###########################################################################
@@ -16,7 +17,9 @@
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // Examples Include File
//#include "RS485.h"
@@ -26,6 +29,7 @@
// a different section. This section will then be mapped to a load and
// run address using the linker cmd file.
+/* Указание компилятору CODE_SECTION(InitFlash, "ramfuncs");: размещение данных или настройка обработки объявлений. */
#pragma CODE_SECTION(InitFlash, "ramfuncs");
//---------------------------------------------------------------------------
@@ -37,20 +41,27 @@
// - Set the pre-scaler for the high and low frequency peripheral clocks
// - Enable the clocks to the peripherals
+/* Объявляет SYSCLKOUT — данные SYSCLKOUT; LSPCLK — данные LSPCLK; HSPCLK — данные HSPCLK. */
long SYSCLKOUT, LSPCLK, HSPCLK;
+/* Начинает функцию InitSysCtrl; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void InitSysCtrl(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Disable the watchdog
+ /* Вызывает DisableDog с аргументами () в текущей последовательности операций. */
DisableDog();
// Initialize the PLL control: PLLCR and DIVSEL
// DSP28_PLLCR and DSP28_DIVSEL are defined in DSP2833x_Examples.h
+ /* Инициализирует модуль вызовом InitPll(DSP28_PLLCR,DSP28_DIVSEL); перед его дальнейшим использованием. */
InitPll(DSP28_PLLCR,DSP28_DIVSEL);
// Initialize the peripheral clocks
+ /* Инициализирует модуль вызовом InitPeripheralClocks(); перед его дальнейшим использованием. */
InitPeripheralClocks();
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
@@ -63,48 +74,67 @@ void InitSysCtrl(void)
// This function MUST be executed out of RAM. Executing it
// out of OTP/Flash will yield unpredictable results
+/* Начинает функцию InitFlash; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void InitFlash(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
//Enable Flash Pipeline mode to improve performance
//of code executed from Flash.
+ /* Записывает FlashRegs.FOPT.bit.ENPIPE значением 1; данные ENPIPE. */
FlashRegs.FOPT.bit.ENPIPE = 1;
// CAUTION
//Minimum waitstates required for the flash operating
//at a given CPU rate must be characterized by TI.
//Refer to the datasheet for the latest information.
+/* Условие компиляции CPU_FRQ_150MHZ: выбранный блок включается в текущий вариант прошивки. */
#if CPU_FRQ_150MHZ
//Set the Paged Waitstate for the Flash
+ /* Записывает FlashRegs.FBANKWAIT.bit.PAGEWAIT значением 5; данные PAGEWAIT. */
FlashRegs.FBANKWAIT.bit.PAGEWAIT = 5;
//Set the Random Waitstate for the Flash
+ /* Записывает FlashRegs.FBANKWAIT.bit.RANDWAIT значением 5; данные RANDWAIT. */
FlashRegs.FBANKWAIT.bit.RANDWAIT = 5;
//Set the Waitstate for the OTP
+ /* Записывает FlashRegs.FOTPWAIT.bit.OTPWAIT значением 8; данные OTPWAIT. */
FlashRegs.FOTPWAIT.bit.OTPWAIT = 8;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции CPU_FRQ_100MHZ: выбранный блок включается в текущий вариант прошивки. */
#if CPU_FRQ_100MHZ
//Set the Paged Waitstate for the Flash
+ /* Записывает FlashRegs.FBANKWAIT.bit.PAGEWAIT значением 3; данные PAGEWAIT. */
FlashRegs.FBANKWAIT.bit.PAGEWAIT = 3;
//Set the Random Waitstate for the Flash
+ /* Записывает FlashRegs.FBANKWAIT.bit.RANDWAIT значением 3; данные RANDWAIT. */
FlashRegs.FBANKWAIT.bit.RANDWAIT = 3;
//Set the Waitstate for the OTP
+ /* Записывает FlashRegs.FOTPWAIT.bit.OTPWAIT значением 5; данные OTPWAIT. */
FlashRegs.FOTPWAIT.bit.OTPWAIT = 5;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// CAUTION
//ONLY THE DEFAULT VALUE FOR THESE 2 REGISTERS SHOULD BE USED
+ /* Записывает FlashRegs.FSTDBYWAIT.bit.STDBYWAIT значением 0x01FF; данные STDBYWAIT. */
FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;
+ /* Записывает FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT значением 0x01FF; данные ACTIVEWAIT. */
FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
//Force a pipeline flush to ensure that the write to
//the last register configured occurs before returning.
+ /* Вызывает asm с аргументами (" RPT #7 || NOP") в текущей последовательности операций. */
asm(" RPT #7 || NOP");
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
@@ -114,16 +144,27 @@ void InitFlash(void)
// This function resets the watchdog timer.
// Enable this function for using ServiceDog in the application
+/* Начинает функцию ServiceDog; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void ServiceDog(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(SysCtrlRegs.PLLCR.bit.DIV == DSP28_PLLCR); последующий оператор выполняется только при истинном условии. */
if(SysCtrlRegs.PLLCR.bit.DIV == DSP28_PLLCR)
+ /* Проверяет if(SysCtrlRegs.PLLSTS.bit.DIVSEL == DSP28_DIVSEL); последующий оператор выполняется только при истинном условии. */
if(SysCtrlRegs.PLLSTS.bit.DIVSEL == DSP28_DIVSEL)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает SysCtrlRegs.WDKEY значением 0x0055; данные WDKEY. */
SysCtrlRegs.WDKEY = 0x0055;
+ /* Записывает SysCtrlRegs.WDKEY значением 0x00AA; данные WDKEY. */
SysCtrlRegs.WDKEY = 0x00AA;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Завершает ServiceDog без возвращаемого значения. */
return;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
@@ -132,11 +173,17 @@ void ServiceDog(void)
//---------------------------------------------------------------------------
// This function disables the watchdog timer.
+/* Начинает функцию DisableDog; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void DisableDog(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает SysCtrlRegs.WDCR значением 0x0068; данные WDCR. */
SysCtrlRegs.WDCR= 0x0068;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//---------------------------------------------------------------------------
@@ -144,40 +191,60 @@ void DisableDog(void)
//---------------------------------------------------------------------------
// This function initializes the PLLCR register.
+/* Начинает функцию InitPll; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void InitPll(Uint16 divval, Uint16 divsel)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет clkVal — данные clkVal. */
long clkVal;
// Make sure the PLL is not running in limp mode
+ /* Проверяет if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0); последующий оператор выполняется только при истинном условии. */
if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Missing external clock has been detected
// Replace this line with a call to an appropriate
// SystemShutdown(); function.
+ /* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm(" ESTOP0");
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
// DIVSEL MUST be 0 before PLLCR can be changed from
// 0x0000. It is set to 0 by an external reset XRSn
// This puts us in 1/4
+ /* Проверяет if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0); последующий оператор выполняется только при истинном условии. */
if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает SysCtrlRegs.PLLSTS.bit.DIVSEL значением 0; данные DIVSEL. */
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
// Change the PLLCR
// if (SysCtrlRegs.PLLCR.bit.DIV != val)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
// Before setting PLLCR turn off missing clock detect logic
+ /* Записывает SysCtrlRegs.PLLSTS.bit.MCLKOFF значением 1; данные MCLKOFF. */
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
+ /* Записывает SysCtrlRegs.PLLCR.bit.DIV значением divval; данные DIV. */
SysCtrlRegs.PLLCR.bit.DIV = divval;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Записывает clkVal значением (divval)?divval:1; данные clkVal. */
clkVal = (divval)?divval:1;
+ /* Записывает clkVal значением XCLKIN * clkVal; данные clkVal. */
clkVal = XCLKIN * clkVal;
// Optional: Wait for PLL to lock.
@@ -198,47 +265,74 @@ void InitPll(Uint16 divval, Uint16 divsel)
// the loop via ServiceDog().
// Uncomment to disable the watchdog
+ /* Вызывает DisableDog с аргументами () в текущей последовательности операций. */
DisableDog();
+ /* Повторяет или ожидает, пока выполняется while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1). */
while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Uncomment to service the watchdog
// ServiceDog();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает SysCtrlRegs.PLLSTS.bit.MCLKOFF значением 0; данные MCLKOFF. */
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
// If switching to 1/2
+ /* Проверяет if((divsel == 1) или (divsel == 2)); последующий оператор выполняется только при истинном условии. */
if((divsel == 1)||(divsel == 2))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает SysCtrlRegs.PLLSTS.bit.DIVSEL значением divsel; данные DIVSEL. */
SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(divsel == 0) clkVal /= 4; последующий оператор выполняется только при истинном условии. */
if(divsel == 0) clkVal /= 4;
+ /* Проверяет if(divsel == 1) clkVal /= 4; последующий оператор выполняется только при истинном условии. */
if(divsel == 1) clkVal /= 4;
+ /* Проверяет if(divsel == 2) clkVal /= 2; последующий оператор выполняется только при истинном условии. */
if(divsel == 2) clkVal /= 2;
-
+
// If switching to 1/1
// * First go to 1/2 and let the power settle
// The time required will depend on the system, this is only an example
// * Then switch to 1/1
+ /* Проверяет if((divval == 0) и (divsel == 3)); последующий оператор выполняется только при истинном условии. */
if((divval == 0) && (divsel == 3))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает SysCtrlRegs.PLLSTS.bit.DIVSEL значением 2; данные DIVSEL. */
SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;
+ /* Вызывает DELAY_US с аргументами (50L) в текущей последовательности операций. */
DELAY_US(50L);
// pause_us(50L);
+ /* Записывает SysCtrlRegs.PLLSTS.bit.DIVSEL значением 3; данные DIVSEL. */
SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает SYSCLKOUT значением clkVal; данные SYSCLKOUT. */
SYSCLKOUT = clkVal;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//--------------------------------------------------------------------------
@@ -252,52 +346,86 @@ void InitPll(Uint16 divval, Uint16 divsel)
// Note: If a peripherals clock is not enabled then you cannot
// read or write to the registers for that peripheral
+/* Начинает функцию InitPeripheralClocks; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void InitPeripheralClocks(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Val — данные Val. */
long Val;
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
// HISPCP/LOSPCP prescale register settings, normally it will be set to default values
+/* Условие компиляции CLKMULT == 0: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT == 0
+ /* Записывает SysCtrlRegs.HISPCP.all значением 0x0000; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0000;
-#endif
-#if CLKMULT == 1
- SysCtrlRegs.HISPCP.all = 0x0000;
-#endif
-#if CLKMULT == 2
- SysCtrlRegs.HISPCP.all = 0x0001;
-#endif
-#if CLKMULT == 3
- SysCtrlRegs.HISPCP.all = 0x0002;
-#endif
-#if CLKMULT == 4
- SysCtrlRegs.HISPCP.all = 0x0002;
-#endif
-#if CLKMULT == 5
- SysCtrlRegs.HISPCP.all = 0x0003;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
+/* Условие компиляции CLKMULT == 1: выбранный блок включается в текущий вариант прошивки. */
+#if CLKMULT == 1
+ /* Записывает SysCtrlRegs.HISPCP.all значением 0x0000; представление регистра целым словом без разбиения на битовые поля. */
+ SysCtrlRegs.HISPCP.all = 0x0000;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+/* Условие компиляции CLKMULT == 2: выбранный блок включается в текущий вариант прошивки. */
+#if CLKMULT == 2
+ /* Записывает SysCtrlRegs.HISPCP.all значением 0x0001; представление регистра целым словом без разбиения на битовые поля. */
+ SysCtrlRegs.HISPCP.all = 0x0001;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+/* Условие компиляции CLKMULT == 3: выбранный блок включается в текущий вариант прошивки. */
+#if CLKMULT == 3
+ /* Записывает SysCtrlRegs.HISPCP.all значением 0x0002; представление регистра целым словом без разбиения на битовые поля. */
+ SysCtrlRegs.HISPCP.all = 0x0002;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+/* Условие компиляции CLKMULT == 4: выбранный блок включается в текущий вариант прошивки. */
+#if CLKMULT == 4
+ /* Записывает SysCtrlRegs.HISPCP.all значением 0x0002; представление регистра целым словом без разбиения на битовые поля. */
+ SysCtrlRegs.HISPCP.all = 0x0002;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+/* Условие компиляции CLKMULT == 5: выбранный блок включается в текущий вариант прошивки. */
+#if CLKMULT == 5
+ /* Записывает SysCtrlRegs.HISPCP.all значением 0x0003; представление регистра целым словом без разбиения на битовые поля. */
+ SysCtrlRegs.HISPCP.all = 0x0003;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+
+ /* Записывает SysCtrlRegs.LOSPCP.all значением 0x0000; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.LOSPCP.all = 0x0000;
+ /* Записывает Val значением (SysCtrlRegs.HISPCP.all)?; данные Val. */
Val = (SysCtrlRegs.HISPCP.all)?
+ /* Продолжает список аргументов, полей или выражение SysCtrlRegs.HISPCP.all*2 : 1;; порядок элементов сохраняется. */
SysCtrlRegs.HISPCP.all*2 : 1;
+ /* Записывает Val значением SYSCLKOUT / Val; данные Val. */
Val = SYSCLKOUT / Val;
+ /* Записывает HSPCLK значением Val; данные HSPCLK. */
HSPCLK = Val;
+ /* Записывает Val значением (SysCtrlRegs.LOSPCP.all)?; данные Val. */
Val = (SysCtrlRegs.LOSPCP.all)?
+ /* Продолжает список аргументов, полей или выражение SysCtrlRegs.LOSPCP.all*2 : 1;; порядок элементов сохраняется. */
SysCtrlRegs.LOSPCP.all*2 : 1;
+ /* Записывает Val значением SYSCLKOUT / Val; данные Val. */
Val = SYSCLKOUT / Val;
+ /* Записывает LSPCLK значением Val; данные LSPCLK. */
LSPCLK = Val;
// XCLKOUT to SYSCLKOUT ratio. By default XCLKOUT = 1/4 SYSCLKOUT
// XTIMCLK = SYSCLKOUT/2
+ /* Записывает XintfRegs.XINTCNF2.bit.XTIMCLK значением 1; данные XTIMCLK. */
XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
// XCLKOUT = XTIMCLK/2
+ /* Записывает XintfRegs.XINTCNF2.bit.CLKMODE значением 1; данные CLKMODE. */
XintfRegs.XINTCNF2.bit.CLKMODE = 1;
// Enable XCLKOUT
+ /* Записывает XintfRegs.XINTCNF2.bit.CLKOFF значением 0; данные CLKOFF. */
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// Peripheral clock enables set for the selected peripherals.
@@ -309,6 +437,7 @@ void InitPeripheralClocks(void)
//
// This function is not written to be an example of efficient code.
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.ADCENCLK значением 1; данные ADCENCLK. */
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; // ADC
// *IMPORTANT*
@@ -321,46 +450,80 @@ void InitPeripheralClocks(void)
// See the device data manual and/or the ADC Reference
// Manual for more information.
+ /* Вызывает ADC_cal с аргументами () в текущей последовательности операций. */
ADC_cal();
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.I2CAENCLK значением 1; данные I2CAENCLK. */
SysCtrlRegs.PCLKCR0.bit.I2CAENCLK = 1; // I2C
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.SCIAENCLK значением 1; данные SCIAENCLK. */
SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1; // SCI-A
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.SCIBENCLK значением 1; данные SCIBENCLK. */
SysCtrlRegs.PCLKCR0.bit.SCIBENCLK = 1; // SCI-B
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.SCICENCLK значением 1; данные SCICENCLK. */
SysCtrlRegs.PCLKCR0.bit.SCICENCLK = 1; // SCI-C
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.SPIAENCLK значением 1; данные SPIAENCLK. */
SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1; // SPI-A
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.MCBSPAENCLK значением 1; данные MCBSPAENCLK. */
SysCtrlRegs.PCLKCR0.bit.MCBSPAENCLK = 1; // McBSP-A
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.MCBSPBENCLK значением 1; данные MCBSPBENCLK. */
SysCtrlRegs.PCLKCR0.bit.MCBSPBENCLK = 1; // McBSP-B
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.ECANAENCLK значением 1; данные ECANAENCLK. */
SysCtrlRegs.PCLKCR0.bit.ECANAENCLK=1; // eCAN-A
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.ECANBENCLK значением 1; данные ECANBENCLK. */
SysCtrlRegs.PCLKCR0.bit.ECANBENCLK=1; // eCAN-B
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC значением 0; данные TBCLKSYNC. */
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Disable TBCLK within the ePWM
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK значением 1; данные EPWM1ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1; // ePWM1
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK значением 1; данные EPWM2ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK = 1; // ePWM2
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK значением 1; данные EPWM3ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK = 1; // ePWM3
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM4ENCLK значением 1; данные EPWM4ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM4ENCLK = 1; // ePWM4
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM5ENCLK значением 1; данные EPWM5ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM5ENCLK = 1; // ePWM5
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK значением 1; данные EPWM6ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK = 1; // ePWM6
+ /* Записывает SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC значением 1; данные TBCLKSYNC. */
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK within the ePWM
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP3ENCLK значением 1; данные ECAP3ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP3ENCLK = 1; // eCAP3
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP4ENCLK значением 1; данные ECAP4ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP4ENCLK = 1; // eCAP4
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK значением 1; данные ECAP5ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK = 1; // eCAP5
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK значением 1; данные ECAP6ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK = 1; // eCAP6
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK значением 1; данные ECAP1ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK = 1; // eCAP1
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP2ENCLK значением 1; данные ECAP2ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP2ENCLK = 1; // eCAP2
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.EQEP1ENCLK значением 1; данные EQEP1ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EQEP1ENCLK = 1; // eQEP1
+ /* Записывает SysCtrlRegs.PCLKCR1.bit.EQEP2ENCLK значением 1; данные EQEP2ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EQEP2ENCLK = 1; // eQEP2
+ /* Записывает SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK значением 1; данные CPUTIMER0ENCLK. */
SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1; // CPU Timer 0
+ /* Записывает SysCtrlRegs.PCLKCR3.bit.CPUTIMER1ENCLK значением 1; данные CPUTIMER1ENCLK. */
SysCtrlRegs.PCLKCR3.bit.CPUTIMER1ENCLK = 1; // CPU Timer 1
+ /* Записывает SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK значением 1; данные CPUTIMER2ENCLK. */
SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK = 1; // CPU Timer 2
+ /* Записывает SysCtrlRegs.PCLKCR3.bit.DMAENCLK значением 1; данные DMAENCLK. */
SysCtrlRegs.PCLKCR3.bit.DMAENCLK = 1; // DMA Clock
+ /* Записывает SysCtrlRegs.PCLKCR3.bit.XINTFENCLK значением 1; данные XINTFENCLK. */
SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1; // XTIMCLK
+ /* Записывает SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK значением 1; аппаратная линия ввода/вывода GPIOINENCLK. */
SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1; // GPIO input clock
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//---------------------------------------------------------------------------
@@ -369,44 +532,70 @@ void InitPeripheralClocks(void)
// This function unlocks the CSM. User must replace 0xFFFF's with current
// password for the DSP. Returns 1 if unlock is successful.
+/* Задаёт STATUS_FAIL = 0; состояние FAIL. */
#define STATUS_FAIL 0
+/* Задаёт STATUS_SUCCESS = 1; состояние SUCCESS. */
#define STATUS_SUCCESS 1
+/* Начинает функцию CsmUnlock; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
Uint16 CsmUnlock()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет temp — данные temp. volatile требует фактического чтения или записи при каждом доступе. */
volatile Uint16 temp;
// Load the key registers with the current password. The 0xFFFF's are dummy
// passwords. User should replace them with the correct password for the DSP.
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает CsmRegs.KEY0 значением 0xFFFF; данные KEY0. */
CsmRegs.KEY0 = 0xFFFF;
+ /* Записывает CsmRegs.KEY1 значением 0xFFFF; данные KEY1. */
CsmRegs.KEY1 = 0xFFFF;
+ /* Записывает CsmRegs.KEY2 значением 0xFFFF; данные KEY2. */
CsmRegs.KEY2 = 0xFFFF;
+ /* Записывает CsmRegs.KEY3 значением 0xFFFF; данные KEY3. */
CsmRegs.KEY3 = 0xFFFF;
+ /* Записывает CsmRegs.KEY4 значением 0xFFFF; данные KEY4. */
CsmRegs.KEY4 = 0xFFFF;
+ /* Записывает CsmRegs.KEY5 значением 0xFFFF; данные KEY5. */
CsmRegs.KEY5 = 0xFFFF;
+ /* Записывает CsmRegs.KEY6 значением 0xFFFF; данные KEY6. */
CsmRegs.KEY6 = 0xFFFF;
+ /* Записывает CsmRegs.KEY7 значением 0xFFFF; данные KEY7. */
CsmRegs.KEY7 = 0xFFFF;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
// Perform a dummy read of the password locations
// if they match the key values, the CSM will unlock
+ /* Записывает temp значением CsmPwl.PSWD0; данные temp. */
temp = CsmPwl.PSWD0;
+ /* Записывает temp значением CsmPwl.PSWD1; данные temp. */
temp = CsmPwl.PSWD1;
+ /* Записывает temp значением CsmPwl.PSWD2; данные temp. */
temp = CsmPwl.PSWD2;
+ /* Записывает temp значением CsmPwl.PSWD3; данные temp. */
temp = CsmPwl.PSWD3;
+ /* Записывает temp значением CsmPwl.PSWD4; данные temp. */
temp = CsmPwl.PSWD4;
+ /* Записывает temp значением CsmPwl.PSWD5; данные temp. */
temp = CsmPwl.PSWD5;
+ /* Записывает temp значением CsmPwl.PSWD6; данные temp. */
temp = CsmPwl.PSWD6;
+ /* Записывает temp значением CsmPwl.PSWD7; данные temp. */
temp = CsmPwl.PSWD7;
// If the CSM unlocked, return succes, otherwise return
// failure.
+ /* Проверяет if (CsmRegs.CSMSCR.bit.SECURE == 0) return STATUS_SUCCESS; последующий оператор выполняется только при истинном условии. */
if (CsmRegs.CSMSCR.bit.SECURE == 0) return STATUS_SUCCESS;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else return STATUS_FAIL;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c
index 0d3619a..105412e 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Xintf для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: August 16, 2007 11:06:26 $
//###########################################################################
@@ -18,7 +19,9 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
//---------------------------------------------------------------------------
@@ -30,7 +33,9 @@
// so can yield unpredictable results
+/* Начинает функцию InitXintf; назначение модуля — поставляемое TI описание Xintf для семейства C2833x. */
void InitXintf(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// This shows how to write to the XINTF registers. The
// values used here are the default state after reset.
@@ -44,13 +49,18 @@ void InitXintf(void)
// All Zones---------------------------------
// Timing for all zones based on XTIMCLK = 1/2 SYSCLKOUT
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает XintfRegs.XINTCNF2.bit.XTIMCLK значением 1; данные XTIMCLK. */
XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
// No write buffering
+ /* Записывает XintfRegs.XINTCNF2.bit.WRBUFF значением 0; данные WRBUFF. */
XintfRegs.XINTCNF2.bit.WRBUFF = 0;
// XCLKOUT is enabled
+ /* Записывает XintfRegs.XINTCNF2.bit.CLKOFF значением 0; данные CLKOFF. */
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// XCLKOUT = XTIMCLK/2
+ /* Записывает XintfRegs.XINTCNF2.bit.CLKMODE значением 1; данные CLKMODE. */
XintfRegs.XINTCNF2.bit.CLKMODE = 1;
@@ -58,48 +68,68 @@ void InitXintf(void)
// When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater
// Zone write timing
+ /* Записывает XintfRegs.XTIMING0.bit.XWRLEAD значением 3; данные XWRLEAD. */
XintfRegs.XTIMING0.bit.XWRLEAD = 3;
+ /* Записывает XintfRegs.XTIMING0.bit.XWRACTIVE значением 7; данные XWRACTIVE. */
XintfRegs.XTIMING0.bit.XWRACTIVE = 7;
+ /* Записывает XintfRegs.XTIMING0.bit.XWRTRAIL значением 3; данные XWRTRAIL. */
XintfRegs.XTIMING0.bit.XWRTRAIL = 3;
// Zone read timing
+ /* Записывает XintfRegs.XTIMING0.bit.XRDLEAD значением 3; данные XRDLEAD. */
XintfRegs.XTIMING0.bit.XRDLEAD = 3;
+ /* Записывает XintfRegs.XTIMING0.bit.XRDACTIVE значением 7; данные XRDACTIVE. */
XintfRegs.XTIMING0.bit.XRDACTIVE = 7;
+ /* Записывает XintfRegs.XTIMING0.bit.XRDTRAIL значением 3; данные XRDTRAIL. */
XintfRegs.XTIMING0.bit.XRDTRAIL = 3;
// double all Zone read/write lead/active/trail timing
+ /* Записывает XintfRegs.XTIMING0.bit.X2TIMING значением 1; данные X2TIMING. */
XintfRegs.XTIMING0.bit.X2TIMING = 1;
// Zone will sample XREADY signal
+ /* Записывает XintfRegs.XTIMING0.bit.USEREADY значением 1; данные USEREADY. */
XintfRegs.XTIMING0.bit.USEREADY = 1;
+ /* Записывает XintfRegs.XTIMING0.bit.READYMODE значением 1; данные READYMODE. */
XintfRegs.XTIMING0.bit.READYMODE = 1; // sample asynchronous
// Size must be either:
// 0,1 = x32 or
// 1,1 = x16 other values are reserved
+ /* Записывает XintfRegs.XTIMING0.bit.XSIZE значением 3; данные XSIZE. */
XintfRegs.XTIMING0.bit.XSIZE = 3;
// Zone 6------------------------------------
// When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater
// Zone write timing
+ /* Записывает XintfRegs.XTIMING6.bit.XWRLEAD значением 3; данные XWRLEAD. */
XintfRegs.XTIMING6.bit.XWRLEAD = 3;
+ /* Записывает XintfRegs.XTIMING6.bit.XWRACTIVE значением 7; данные XWRACTIVE. */
XintfRegs.XTIMING6.bit.XWRACTIVE = 7;
+ /* Записывает XintfRegs.XTIMING6.bit.XWRTRAIL значением 3; данные XWRTRAIL. */
XintfRegs.XTIMING6.bit.XWRTRAIL = 3;
// Zone read timing
+ /* Записывает XintfRegs.XTIMING6.bit.XRDLEAD значением 3; данные XRDLEAD. */
XintfRegs.XTIMING6.bit.XRDLEAD = 3;
+ /* Записывает XintfRegs.XTIMING6.bit.XRDACTIVE значением 7; данные XRDACTIVE. */
XintfRegs.XTIMING6.bit.XRDACTIVE = 7;
+ /* Записывает XintfRegs.XTIMING6.bit.XRDTRAIL значением 3; данные XRDTRAIL. */
XintfRegs.XTIMING6.bit.XRDTRAIL = 3;
// double all Zone read/write lead/active/trail timing
+ /* Записывает XintfRegs.XTIMING6.bit.X2TIMING значением 1; данные X2TIMING. */
XintfRegs.XTIMING6.bit.X2TIMING = 1;
// Zone will sample XREADY signal
+ /* Записывает XintfRegs.XTIMING6.bit.USEREADY значением 1; данные USEREADY. */
XintfRegs.XTIMING6.bit.USEREADY = 1;
+ /* Записывает XintfRegs.XTIMING6.bit.READYMODE значением 1; данные READYMODE. */
XintfRegs.XTIMING6.bit.READYMODE = 1; // sample asynchronous
// Size must be either:
// 0,1 = x32 or
// 1,1 = x16 other values are reserved
+ /* Записывает XintfRegs.XTIMING6.bit.XSIZE значением 3; данные XSIZE. */
XintfRegs.XTIMING6.bit.XSIZE = 3;
@@ -107,135 +137,229 @@ void InitXintf(void)
// When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater
// Zone write timing
+ /* Записывает XintfRegs.XTIMING7.bit.XWRLEAD значением 3; данные XWRLEAD. */
XintfRegs.XTIMING7.bit.XWRLEAD = 3;
+ /* Записывает XintfRegs.XTIMING7.bit.XWRACTIVE значением 7; данные XWRACTIVE. */
XintfRegs.XTIMING7.bit.XWRACTIVE = 7;
+ /* Записывает XintfRegs.XTIMING7.bit.XWRTRAIL значением 3; данные XWRTRAIL. */
XintfRegs.XTIMING7.bit.XWRTRAIL = 3;
// Zone read timing
+ /* Записывает XintfRegs.XTIMING7.bit.XRDLEAD значением 3; данные XRDLEAD. */
XintfRegs.XTIMING7.bit.XRDLEAD = 3;
+ /* Записывает XintfRegs.XTIMING7.bit.XRDACTIVE значением 7; данные XRDACTIVE. */
XintfRegs.XTIMING7.bit.XRDACTIVE = 7;
+ /* Записывает XintfRegs.XTIMING7.bit.XRDTRAIL значением 3; данные XRDTRAIL. */
XintfRegs.XTIMING7.bit.XRDTRAIL = 3;
// double all Zone read/write lead/active/trail timing
+ /* Записывает XintfRegs.XTIMING7.bit.X2TIMING значением 1; данные X2TIMING. */
XintfRegs.XTIMING7.bit.X2TIMING = 1;
// Zone will sample XREADY signal
+ /* Записывает XintfRegs.XTIMING7.bit.USEREADY значением 1; данные USEREADY. */
XintfRegs.XTIMING7.bit.USEREADY = 1;
+ /* Записывает XintfRegs.XTIMING7.bit.READYMODE значением 1; данные READYMODE. */
XintfRegs.XTIMING7.bit.READYMODE = 1; // sample asynchronous
// Size must be either:
// 0,1 = x32 or
// 1,1 = x16 other values are reserved
+ /* Записывает XintfRegs.XTIMING7.bit.XSIZE значением 3; данные XSIZE. */
XintfRegs.XTIMING7.bit.XSIZE = 3;
// Bank switching
// Assume Zone 7 is slow, so add additional BCYC cycles
// when ever switching from Zone 7 to another Zone.
// This will help avoid bus contention.
+ /* Записывает XintfRegs.XBANK.bit.BANK значением 7; данные BANK. */
XintfRegs.XBANK.bit.BANK = 7;
+ /* Записывает XintfRegs.XBANK.bit.BCYC значением 7; данные BCYC. */
XintfRegs.XBANK.bit.BCYC = 7;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
//Force a pipeline flush to ensure that the write to
//the last register configured occurs before returning.
+ /* Инициализирует модуль вызовом InitXintf16Gpio(); перед его дальнейшим использованием. */
InitXintf16Gpio();
// InitXintf32Gpio();
+ /* Вызывает asm с аргументами (" RPT #7 || NOP") в текущей последовательности операций. */
asm(" RPT #7 || NOP");
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию InitXintf32Gpio; назначение модуля — поставляемое TI описание Xintf для семейства C2833x. */
void InitXintf32Gpio()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO48 значением 3; аппаратная линия ввода/вывода GPIO48. */
GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 3; // XD31
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO49 значением 3; аппаратная линия ввода/вывода GPIO49. */
GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 3; // XD30
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO50 значением 3; аппаратная линия ввода/вывода GPIO50. */
GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 3; // XD29
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO51 значением 3; аппаратная линия ввода/вывода GPIO51. */
GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 3; // XD28
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO52 значением 3; аппаратная линия ввода/вывода GPIO52. */
GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 3; // XD27
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO53 значением 3; аппаратная линия ввода/вывода GPIO53. */
GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 3; // XD26
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO54 значением 3; аппаратная линия ввода/вывода GPIO54. */
GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 3; // XD25
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO55 значением 3; аппаратная линия ввода/вывода GPIO55. */
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 3; // XD24
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO56 значением 3; аппаратная линия ввода/вывода GPIO56. */
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 3; // XD23
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO57 значением 3; аппаратная линия ввода/вывода GPIO57. */
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 3; // XD22
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO58 значением 3; аппаратная линия ввода/вывода GPIO58. */
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3; // XD21
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO59 значением 3; аппаратная линия ввода/вывода GPIO59. */
GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 3; // XD20
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO60 значением 3; аппаратная линия ввода/вывода GPIO60. */
GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3; // XD19
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO61 значением 3; аппаратная линия ввода/вывода GPIO61. */
GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3; // XD18
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO62 значением 3; аппаратная линия ввода/вывода GPIO62. */
GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 3; // XD17
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO63 значением 3; аппаратная линия ввода/вывода GPIO63. */
GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 3; // XD16
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO48 значением 3; аппаратная линия ввода/вывода GPIO48. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO48 = 3; // XD31 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO49 значением 3; аппаратная линия ввода/вывода GPIO49. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO49 = 3; // XD30 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO50 значением 3; аппаратная линия ввода/вывода GPIO50. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 3; // XD29 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO51 значением 3; аппаратная линия ввода/вывода GPIO51. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO51 = 3; // XD28 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO52 значением 3; аппаратная линия ввода/вывода GPIO52. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO52 = 3; // XD27 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO53 значением 3; аппаратная линия ввода/вывода GPIO53. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 3; // XD26 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO54 значением 3; аппаратная линия ввода/вывода GPIO54. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; // XD25 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO55 значением 3; аппаратная линия ввода/вывода GPIO55. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3; // XD24 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO56 значением 3; аппаратная линия ввода/вывода GPIO56. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3; // XD23 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO57 значением 3; аппаратная линия ввода/вывода GPIO57. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3; // XD22 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO58 значением 3; аппаратная линия ввода/вывода GPIO58. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; // XD21 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO59 значением 3; аппаратная линия ввода/вывода GPIO59. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3; // XD20 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO60 значением 3; аппаратная линия ввода/вывода GPIO60. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; // XD19 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO61 значением 3; аппаратная линия ввода/вывода GPIO61. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3; // XD18 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO62 значением 3; аппаратная линия ввода/вывода GPIO62. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // XD17 asynchronous input
+ /* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO63 значением 3; аппаратная линия ввода/вывода GPIO63. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3; // XD16 asynchronous input
+ /* Инициализирует модуль вызовом InitXintf16Gpio(); перед его дальнейшим использованием. */
InitXintf16Gpio();
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию InitXintf16Gpio; назначение модуля — поставляемое TI описание Xintf для семейства C2833x. */
void InitXintf16Gpio()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO64 значением 3; аппаратная линия ввода/вывода GPIO64. */
GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 3; // XD15
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO65 значением 3; аппаратная линия ввода/вывода GPIO65. */
GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 3; // XD14
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO66 значением 3; аппаратная линия ввода/вывода GPIO66. */
GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 3; // XD13
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO67 значением 3; аппаратная линия ввода/вывода GPIO67. */
GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 3; // XD12
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO68 значением 3; аппаратная линия ввода/вывода GPIO68. */
GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 3; // XD11
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO69 значением 3; аппаратная линия ввода/вывода GPIO69. */
GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 3; // XD10
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO70 значением 3; аппаратная линия ввода/вывода GPIO70. */
GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 3; // XD19
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO71 значением 3; аппаратная линия ввода/вывода GPIO71. */
GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 3; // XD8
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO72 значением 3; аппаратная линия ввода/вывода GPIO72. */
GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 3; // XD7
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO73 значением 3; аппаратная линия ввода/вывода GPIO73. */
GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3; // XD6
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO74 значением 3; аппаратная линия ввода/вывода GPIO74. */
GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 3; // XD5
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO75 значением 3; аппаратная линия ввода/вывода GPIO75. */
GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 3; // XD4
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO76 значением 3; аппаратная линия ввода/вывода GPIO76. */
GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 3; // XD3
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO77 значением 3; аппаратная линия ввода/вывода GPIO77. */
GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 3; // XD2
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO78 значением 3; аппаратная линия ввода/вывода GPIO78. */
GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 3; // XD1
+ /* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO79 значением 3; аппаратная линия ввода/вывода GPIO79. */
GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 3; // XD0
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO40 значением 3; аппаратная линия ввода/вывода GPIO40. */
GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 3; // XA0/XWE1n
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO41 значением 3; аппаратная линия ввода/вывода GPIO41. */
GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 3; // XA1
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO42 значением 3; аппаратная линия ввода/вывода GPIO42. */
GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3; // XA2
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO43 значением 3; аппаратная линия ввода/вывода GPIO43. */
GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 3; // XA3
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO44 значением 3; аппаратная линия ввода/вывода GPIO44. */
GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 3; // XA4
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO45 значением 3; аппаратная линия ввода/вывода GPIO45. */
GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 3; // XA5
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO46 значением 3; аппаратная линия ввода/вывода GPIO46. */
GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 3; // XA6
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO47 значением 3; аппаратная линия ввода/вывода GPIO47. */
GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 3; // XA7
+ /* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO80 значением 3; аппаратная линия ввода/вывода GPIO80. */
GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 3; // XA8
+ /* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO81 значением 3; аппаратная линия ввода/вывода GPIO81. */
GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 3; // XA9
+ /* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO82 значением 3; аппаратная линия ввода/вывода GPIO82. */
GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 3; // XA10
+ /* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO83 значением 3; аппаратная линия ввода/вывода GPIO83. */
GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 3; // XA11
+ /* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO84 значением 3; аппаратная линия ввода/вывода GPIO84. */
GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 3; // XA12
+ /* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO85 значением 3; аппаратная линия ввода/вывода GPIO85. */
GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 3; // XA13
+ /* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO86 значением 3; аппаратная линия ввода/вывода GPIO86. */
GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 3; // XA14
+ /* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO87 значением 3; аппаратная линия ввода/вывода GPIO87. */
GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 3; // XA15
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO39 значением 3; аппаратная линия ввода/вывода GPIO39. */
GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // XA16
// GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // XA17
// GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // XA18
// GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // XA19
// GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // XREADY
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO35 значением 3; аппаратная линия ввода/вывода GPIO35. */
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // XRNW
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO38 значением 3; аппаратная линия ввода/вывода GPIO38. */
GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3; // XWE0
// GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // XZCS0
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO37 значением 3; аппаратная линия ввода/вывода GPIO37. */
GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // XZCS7
// GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // XZCS6
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_usDelay.asm b/Source/External/v120/DSP2833x_common/source/DSP2833x_usDelay.asm
index d3878b4..d91efde 100644
--- a/Source/External/v120/DSP2833x_common/source/DSP2833x_usDelay.asm
+++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_usDelay.asm
@@ -1,3 +1,4 @@
+; Поставляемое ti описание usdelay для семейства c2833x. Пояснения в UTF-8.
;// TI File $Revision: /main/4 $
;// Checkin $Date: July 30, 2007 10:28:57 $
;//###########################################################################
@@ -7,38 +8,38 @@
;// TITLE: Simple delay function
;//
;// DESCRIPTION:
-;//
+;//
;// This is a simple delay function that can be used to insert a specified
-;// delay into code.
-;//
+;// delay into code.
+;//
;// This function is only accurate if executed from internal zero-waitstate
;// SARAM. If it is executed from waitstate memory then the delay will be
-;// longer then specified.
-;//
+;// longer then specified.
+;//
;// To use this function:
;//
;// 1 - update the CPU clock speed in the DSP2833x_Examples.h
;// file. For example:
;// #define CPU_RATE 6.667L // for a 150MHz CPU clock speed
-;// or #define CPU_RATE 10.000L // for a 100MHz CPU clock speed
+;// or #define CPU_RATE 10.000L // for a 100MHz CPU clock speed
;//
;// 2 - Call this function by using the DELAY_US(A) macro
;// that is defined in the DSP2833x_Examples.h file. This macro
;// will convert the number of microseconds specified
-;// into a loop count for use with this function.
+;// into a loop count for use with this function.
;// This count will be based on the CPU frequency you specify.
;//
-;// 3 - For the most accurate delay
-;// - Execute this function in 0 waitstate RAM.
+;// 3 - For the most accurate delay
+;// - Execute this function in 0 waitstate RAM.
;// - Disable interrupts before calling the function
;// If you do not disable interrupts, then think of
;// this as an "at least" delay function as the actual
-;// delay may be longer.
+;// delay may be longer.
;//
;// The C assembly call from the DELAY_US(time) macro will
-;// look as follows:
+;// look as follows:
;//
-;// extern void Delay(long LoopCount);
+;// extern void Delay(long LoopCount);
;//
;// MOV AL,#LowLoopCount
;// MOV AH,#HighLoopCount
@@ -53,16 +54,23 @@
;//###########################################################################
;// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $
;// $Release Date: August 1, 2008 $
-;//###########################################################################
+;//###########################################################################
+ ; Экспортирует символ для связывания с C-кодом. Операция: .def _DSP28x_usDelay.
.def _DSP28x_usDelay
+ ; Выбирает секцию объектного файла для следующих инструкций. Операция: .sect ".text".
.sect ".text"
+ ; Объявляет глобальный символ для линкера. Операция: .global __DSP28x_usDelay.
.global __DSP28x_usDelay
+; Объявляет метку _DSP28x_usDelay: для перехода или вызова. Операция: _DSP28x_usDelay:.
_DSP28x_usDelay:
+ ; Вычитает операнд и обновляет арифметическое состояние. Операция: SUB ACC,#1.
SUB ACC,#1
+ ; Выполняет условный переход по флагам результата. Операция: BF _DSP28x_usDelay,GEQ.
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
- LRETR
+ ; Возвращает управление вызывающему коду через длинный адрес возврата. Операция: LRETR.
+ LRETR
;There is a 9/10 cycle overhead and each loop
;takes five cycles. The LoopCount is given by
diff --git a/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_BIOS.cmd b/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_BIOS.cmd
index fe2d6c5..bf950d0 100644
--- a/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_BIOS.cmd
+++ b/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_BIOS.cmd
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Headers_BIOS для семейства C2833x. Русские пояснения сохранены в UTF-8. */
/*
// TI File $Revision: /main/9 $
// Checkin $Date: August 8, 2008 11:09:25 $
@@ -5,18 +6,18 @@
//
// FILE: DSP2833x_Headers_BIOS.cmd
//
-// TITLE: DSP2833x Peripheral registers linker command file
+// TITLE: DSP2833x Peripheral registers linker command file
+//
+// DESCRIPTION:
//
-// DESCRIPTION:
-//
// This file is for use in BIOS applications.
//
-// Linker command file to place the peripheral structures
+// Linker command file to place the peripheral structures
// used within the DSP2833x headerfiles into the correct memory
// mapped locations.
//
// This version of the file does not include the PieVectorTable structure.
-// For non-BIOS applications, please use the DSP2833x_Headers_nonBIOS.cmd
+// For non-BIOS applications, please use the DSP2833x_Headers_nonBIOS.cmd
// file which includes the PieVectorTable structure.
//
//#####################################################################
@@ -25,154 +26,210 @@
//#####################################################################
*/
+/* Начинает описание физических блоков памяти для линкера. */
MEMORY
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- PAGE 0: /* Program Memory */
+ PAGE 0: /* Program Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
- PAGE 1: /* Data Memory */
-
- DEV_EMU : origin = 0x000880, length = 0x000180 /* device emulation registers */
- FLASH_REGS : origin = 0x000A80, length = 0x000060 /* FLASH registers */
- CSM : origin = 0x000AE0, length = 0x000010 /* code security module registers */
-
- ADC_MIRROR : origin = 0x000B00, length = 0x000010 /* ADC Results register mirror */
+ PAGE 1: /* Data Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
- XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */
-
- CPU_TIMER0 : origin = 0x000C00, length = 0x000008 /* CPU Timer0 registers */
- CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/
- CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/
+ DEV_EMU : origin = 0x000880, length = 0x000180 /* device emulation registers */ /* Записывает origin значением 0x000880, length = 0x000180; данные origin. */
+ FLASH_REGS : origin = 0x000A80, length = 0x000060 /* FLASH registers */ /* Записывает origin значением 0x000A80, length = 0x000060; данные origin. */
+ CSM : origin = 0x000AE0, length = 0x000010 /* code security module registers */ /* Записывает origin значением 0x000AE0, length = 0x000010; данные origin. */
- PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */
+ ADC_MIRROR : origin = 0x000B00, length = 0x000010 /* ADC Results register mirror */ /* Записывает origin значением 0x000B00, length = 0x000010; данные origin. */
- DMA : origin = 0x001000, length = 0x000200 /* DMA registers */
+ XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */ /* Записывает origin значением 0x000B20, length = 0x000020; данные origin. */
- MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */
- MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */
+ CPU_TIMER0 : origin = 0x000C00, length = 0x000008 /* CPU Timer0 registers */ /* Записывает origin значением 0x000C00, length = 0x000008; данные origin. */
+ CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ /* Записывает origin значением 0x000C08, length = 0x000008; данные origin. */
+ CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ /* Записывает origin значением 0x000C10, length = 0x000008; данные origin. */
- ECANA : origin = 0x006000, length = 0x000040 /* eCAN-A control and status registers */
- ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN-A local acceptance masks */
- ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN-A message object time stamps */
- ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN-A object time-out registers */
- ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN-A mailboxes */
+ PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */ /* Записывает origin значением 0x000CE0, length = 0x000020; данные origin. */
- ECANB : origin = 0x006200, length = 0x000040 /* eCAN-B control and status registers */
- ECANB_LAM : origin = 0x006240, length = 0x000040 /* eCAN-B local acceptance masks */
- ECANB_MOTS : origin = 0x006280, length = 0x000040 /* eCAN-B message object time stamps */
- ECANB_MOTO : origin = 0x0062C0, length = 0x000040 /* eCAN-B object time-out registers */
- ECANB_MBOX : origin = 0x006300, length = 0x000100 /* eCAN-B mailboxes */
+ DMA : origin = 0x001000, length = 0x000200 /* DMA registers */ /* Записывает origin значением 0x001000, length = 0x000200; данные origin. */
- EPWM1 : origin = 0x006800, length = 0x000022 /* Enhanced PWM 1 registers */
- EPWM2 : origin = 0x006840, length = 0x000022 /* Enhanced PWM 2 registers */
- EPWM3 : origin = 0x006880, length = 0x000022 /* Enhanced PWM 3 registers */
- EPWM4 : origin = 0x0068C0, length = 0x000022 /* Enhanced PWM 4 registers */
- EPWM5 : origin = 0x006900, length = 0x000022 /* Enhanced PWM 5 registers */
- EPWM6 : origin = 0x006940, length = 0x000022 /* Enhanced PWM 6 registers */
+ MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */ /* Записывает origin значением 0x005000, length = 0x000040; данные origin. */
+ MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */ /* Записывает origin значением 0x005040, length = 0x000040; данные origin. */
- ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */
- ECAP2 : origin = 0x006A20, length = 0x000020 /* Enhanced Capture 2 registers */
- ECAP3 : origin = 0x006A40, length = 0x000020 /* Enhanced Capture 3 registers */
- ECAP4 : origin = 0x006A60, length = 0x000020 /* Enhanced Capture 4 registers */
- ECAP5 : origin = 0x006A80, length = 0x000020 /* Enhanced Capture 5 registers */
- ECAP6 : origin = 0x006AA0, length = 0x000020 /* Enhanced Capture 6 registers */
-
- EQEP1 : origin = 0x006B00, length = 0x000040 /* Enhanced QEP 1 registers */
- EQEP2 : origin = 0x006B40, length = 0x000040 /* Enhanced QEP 2 registers */
+ ECANA : origin = 0x006000, length = 0x000040 /* eCAN-A control and status registers */ /* Записывает origin значением 0x006000, length = 0x000040; данные origin. */
+ ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN-A local acceptance masks */ /* Записывает origin значением 0x006040, length = 0x000040; данные origin. */
+ ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN-A message object time stamps */ /* Записывает origin значением 0x006080, length = 0x000040; данные origin. */
+ ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN-A object time-out registers */ /* Записывает origin значением 0x0060C0, length = 0x000040; данные origin. */
+ ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN-A mailboxes */ /* Записывает origin значением 0x006100, length = 0x000100; данные origin. */
- GPIOCTRL : origin = 0x006F80, length = 0x000040 /* GPIO control registers */
- GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */
- GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */
-
- SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */
- SPIA : origin = 0x007040, length = 0x000010 /* SPI-A registers */
- SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */
- XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */
+ ECANB : origin = 0x006200, length = 0x000040 /* eCAN-B control and status registers */ /* Записывает origin значением 0x006200, length = 0x000040; данные origin. */
+ ECANB_LAM : origin = 0x006240, length = 0x000040 /* eCAN-B local acceptance masks */ /* Записывает origin значением 0x006240, length = 0x000040; данные origin. */
+ ECANB_MOTS : origin = 0x006280, length = 0x000040 /* eCAN-B message object time stamps */ /* Записывает origin значением 0x006280, length = 0x000040; данные origin. */
+ ECANB_MOTO : origin = 0x0062C0, length = 0x000040 /* eCAN-B object time-out registers */ /* Записывает origin значением 0x0062C0, length = 0x000040; данные origin. */
+ ECANB_MBOX : origin = 0x006300, length = 0x000100 /* eCAN-B mailboxes */ /* Записывает origin значением 0x006300, length = 0x000100; данные origin. */
- ADC : origin = 0x007100, length = 0x000020 /* ADC registers */
+ EPWM1 : origin = 0x006800, length = 0x000022 /* Enhanced PWM 1 registers */ /* Записывает origin значением 0x006800, length = 0x000022; данные origin. */
+ EPWM2 : origin = 0x006840, length = 0x000022 /* Enhanced PWM 2 registers */ /* Записывает origin значением 0x006840, length = 0x000022; данные origin. */
+ EPWM3 : origin = 0x006880, length = 0x000022 /* Enhanced PWM 3 registers */ /* Записывает origin значением 0x006880, length = 0x000022; данные origin. */
+ EPWM4 : origin = 0x0068C0, length = 0x000022 /* Enhanced PWM 4 registers */ /* Записывает origin значением 0x0068C0, length = 0x000022; данные origin. */
+ EPWM5 : origin = 0x006900, length = 0x000022 /* Enhanced PWM 5 registers */ /* Записывает origin значением 0x006900, length = 0x000022; данные origin. */
+ EPWM6 : origin = 0x006940, length = 0x000022 /* Enhanced PWM 6 registers */ /* Записывает origin значением 0x006940, length = 0x000022; данные origin. */
- SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */
+ ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */ /* Записывает origin значением 0x006A00, length = 0x000020; данные origin. */
+ ECAP2 : origin = 0x006A20, length = 0x000020 /* Enhanced Capture 2 registers */ /* Записывает origin значением 0x006A20, length = 0x000020; данные origin. */
+ ECAP3 : origin = 0x006A40, length = 0x000020 /* Enhanced Capture 3 registers */ /* Записывает origin значением 0x006A40, length = 0x000020; данные origin. */
+ ECAP4 : origin = 0x006A60, length = 0x000020 /* Enhanced Capture 4 registers */ /* Записывает origin значением 0x006A60, length = 0x000020; данные origin. */
+ ECAP5 : origin = 0x006A80, length = 0x000020 /* Enhanced Capture 5 registers */ /* Записывает origin значением 0x006A80, length = 0x000020; данные origin. */
+ ECAP6 : origin = 0x006AA0, length = 0x000020 /* Enhanced Capture 6 registers */ /* Записывает origin значением 0x006AA0, length = 0x000020; данные origin. */
- SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */
-
- I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */
-
- CSM_PWL : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */
+ EQEP1 : origin = 0x006B00, length = 0x000040 /* Enhanced QEP 1 registers */ /* Записывает origin значением 0x006B00, length = 0x000040; данные origin. */
+ EQEP2 : origin = 0x006B40, length = 0x000040 /* Enhanced QEP 2 registers */ /* Записывает origin значением 0x006B40, length = 0x000040; данные origin. */
- PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */
+ GPIOCTRL : origin = 0x006F80, length = 0x000040 /* GPIO control registers */ /* Записывает origin значением 0x006F80, length = 0x000040; данные origin. */
+ GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */ /* Записывает origin значением 0x006FC0, length = 0x000020; данные origin. */
+ GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */ /* Записывает origin значением 0x006FE0, length = 0x000020; данные origin. */
+
+ SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */ /* Записывает origin значением 0x007010, length = 0x000020; данные origin. */
+ SPIA : origin = 0x007040, length = 0x000010 /* SPI-A registers */ /* Записывает origin значением 0x007040, length = 0x000010; данные origin. */
+ SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */ /* Записывает origin значением 0x007050, length = 0x000010; данные origin. */
+ XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */ /* Записывает origin значением 0x007070, length = 0x000010; данные origin. */
+
+ ADC : origin = 0x007100, length = 0x000020 /* ADC registers */ /* Записывает origin значением 0x007100, length = 0x000020; данные origin. */
+
+ SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */ /* Записывает origin значением 0x007750, length = 0x000010; данные origin. */
+
+ SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */ /* Записывает origin значением 0x007770, length = 0x000010; данные origin. */
+
+ I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */ /* Записывает origin значением 0x007900, length = 0x000040; данные origin. */
+
+ CSM_PWL : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */ /* Записывает origin значением 0x3F7FF8, length = 0x000008; данные origin. */
+
+ PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */ /* Записывает origin значением 0x380090, length = 0x000001; данные origin. */
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
+
+/* Начинает описание размещения секций объектных файлов для линкера. */
SECTIONS
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
/*** The PIE Vector table is called PIEVECT by DSP/BIOS ***/
+ /* Записывает PAGE значением 1, TYPE = DSECT; данные PAGE. */
PieVectTableFile : > PIEVECT, PAGE = 1, TYPE = DSECT
/*** Peripheral Frame 0 Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
DevEmuRegsFile : > DEV_EMU, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
FlashRegsFile : > FLASH_REGS, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
CsmRegsFile : > CSM, PAGE = 1
- AdcMirrorFile : > ADC_MIRROR, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ AdcMirrorFile : > ADC_MIRROR, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
XintfRegsFile : > XINTF, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1
- CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
- PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
- DmaRegsFile : > DMA, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ DmaRegsFile : > DMA, PAGE = 1
/*** Peripheral Frame 3 Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
McbspaRegsFile : > MCBSPA, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
McbspbRegsFile : > MCBSPB, PAGE = 1
/*** Peripheral Frame 1 Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanaRegsFile : > ECANA, PAGE = 1
- ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanaMboxesFile : > ECANA_MBOX PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1
-
+
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanbRegsFile : > ECANB, PAGE = 1
- ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanbMboxesFile : > ECANB_MBOX PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTORegsFile : > ECANB_MOTO PAGE = 1
-
- EPwm1RegsFile : > EPWM1 PAGE = 1
- EPwm2RegsFile : > EPWM2 PAGE = 1
- EPwm3RegsFile : > EPWM3 PAGE = 1
- EPwm4RegsFile : > EPWM4 PAGE = 1
- EPwm5RegsFile : > EPWM5 PAGE = 1
+
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm1RegsFile : > EPWM1 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm2RegsFile : > EPWM2 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm3RegsFile : > EPWM3 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm4RegsFile : > EPWM4 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm5RegsFile : > EPWM5 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
EPwm6RegsFile : > EPWM6 PAGE = 1
-
- ECap1RegsFile : > ECAP1 PAGE = 1
- ECap2RegsFile : > ECAP2 PAGE = 1
- ECap3RegsFile : > ECAP3 PAGE = 1
+
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECap1RegsFile : > ECAP1 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECap2RegsFile : > ECAP2 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECap3RegsFile : > ECAP3 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECap4RegsFile : > ECAP4 PAGE = 1
- ECap5RegsFile : > ECAP5 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECap5RegsFile : > ECAP5 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECap6RegsFile : > ECAP6 PAGE = 1
- EQep1RegsFile : > EQEP1 PAGE = 1
- EQep2RegsFile : > EQEP2 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EQep1RegsFile : > EQEP1 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EQep2RegsFile : > EQEP2 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
GpioCtrlRegsFile : > GPIOCTRL PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
GpioDataRegsFile : > GPIODAT PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
GpioIntRegsFile : > GPIOINT PAGE = 1
-
+
/*** Peripheral Frame 2 Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
SysCtrlRegsFile : > SYSTEM, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
SpiaRegsFile : > SPIA, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
SciaRegsFile : > SCIA, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
XIntruptRegsFile : > XINTRUPT, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
AdcRegsFile : > ADC, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ScibRegsFile : > SCIB, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ScicRegsFile : > SCIC, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
I2caRegsFile : > I2CA, PAGE = 1
-
+
/*** Code Security Module Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
CsmPwlFile : > CSM_PWL, PAGE = 1
/*** Device Part ID Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
PartIdRegsFile : > PARTID, PAGE = 1
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
@@ -180,4 +237,4 @@ SECTIONS
//===========================================================================
// End of file.
//===========================================================================
-*/
\ No newline at end of file
+*/
diff --git a/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_nonBIOS.cmd b/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_nonBIOS.cmd
index 9da1026..d6716e7 100644
--- a/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_nonBIOS.cmd
+++ b/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_nonBIOS.cmd
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Headers_nonBIOS для семейства C2833x. Русские пояснения сохранены в UTF-8. */
/*
// TI File $Revision: /main/8 $
// Checkin $Date: June 2, 2008 11:12:24 $
@@ -5,13 +6,13 @@
//
// FILE: DSP2833x_Headers_nonBIOS.cmd
//
-// TITLE: DSP2833x Peripheral registers linker command file
+// TITLE: DSP2833x Peripheral registers linker command file
+//
+// DESCRIPTION:
//
-// DESCRIPTION:
-//
// This file is for use in Non-BIOS applications.
//
-// Linker command file to place the peripheral structures
+// Linker command file to place the peripheral structures
// used within the DSP2833x headerfiles into the correct memory
// mapped locations.
//
@@ -25,154 +26,210 @@
//###########################################################################
*/
+/* Начинает описание физических блоков памяти для линкера. */
MEMORY
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- PAGE 0: /* Program Memory */
+ PAGE 0: /* Program Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
- PAGE 1: /* Data Memory */
-
- DEV_EMU : origin = 0x000880, length = 0x000180 /* device emulation registers */
- FLASH_REGS : origin = 0x000A80, length = 0x000060 /* FLASH registers */
- CSM : origin = 0x000AE0, length = 0x000010 /* code security module registers */
-
- ADC_MIRROR : origin = 0x000B00, length = 0x000010 /* ADC Results register mirror */
+ PAGE 1: /* Data Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
- XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */
-
- CPU_TIMER0 : origin = 0x000C00, length = 0x000008 /* CPU Timer0 registers */
- CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/
- CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/
+ DEV_EMU : origin = 0x000880, length = 0x000180 /* device emulation registers */ /* Записывает origin значением 0x000880, length = 0x000180; данные origin. */
+ FLASH_REGS : origin = 0x000A80, length = 0x000060 /* FLASH registers */ /* Записывает origin значением 0x000A80, length = 0x000060; данные origin. */
+ CSM : origin = 0x000AE0, length = 0x000010 /* code security module registers */ /* Записывает origin значением 0x000AE0, length = 0x000010; данные origin. */
- PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */
- PIE_VECT : origin = 0x000D00, length = 0x000100 /* PIE Vector Table */
+ ADC_MIRROR : origin = 0x000B00, length = 0x000010 /* ADC Results register mirror */ /* Записывает origin значением 0x000B00, length = 0x000010; данные origin. */
- DMA : origin = 0x001000, length = 0x000200 /* DMA registers */
+ XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */ /* Записывает origin значением 0x000B20, length = 0x000020; данные origin. */
- MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */
- MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */
+ CPU_TIMER0 : origin = 0x000C00, length = 0x000008 /* CPU Timer0 registers */ /* Записывает origin значением 0x000C00, length = 0x000008; данные origin. */
+ CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ /* Записывает origin значением 0x000C08, length = 0x000008; данные origin. */
+ CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ /* Записывает origin значением 0x000C10, length = 0x000008; данные origin. */
- ECANA : origin = 0x006000, length = 0x000040 /* eCAN-A control and status registers */
- ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN-A local acceptance masks */
- ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN-A message object time stamps */
- ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN-A object time-out registers */
- ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN-A mailboxes */
+ PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */ /* Записывает origin значением 0x000CE0, length = 0x000020; данные origin. */
+ PIE_VECT : origin = 0x000D00, length = 0x000100 /* PIE Vector Table */ /* Записывает origin значением 0x000D00, length = 0x000100; данные origin. */
- ECANB : origin = 0x006200, length = 0x000040 /* eCAN-B control and status registers */
- ECANB_LAM : origin = 0x006240, length = 0x000040 /* eCAN-B local acceptance masks */
- ECANB_MOTS : origin = 0x006280, length = 0x000040 /* eCAN-B message object time stamps */
- ECANB_MOTO : origin = 0x0062C0, length = 0x000040 /* eCAN-B object time-out registers */
- ECANB_MBOX : origin = 0x006300, length = 0x000100 /* eCAN-B mailboxes */
+ DMA : origin = 0x001000, length = 0x000200 /* DMA registers */ /* Записывает origin значением 0x001000, length = 0x000200; данные origin. */
- EPWM1 : origin = 0x006800, length = 0x000022 /* Enhanced PWM 1 registers */
- EPWM2 : origin = 0x006840, length = 0x000022 /* Enhanced PWM 2 registers */
- EPWM3 : origin = 0x006880, length = 0x000022 /* Enhanced PWM 3 registers */
- EPWM4 : origin = 0x0068C0, length = 0x000022 /* Enhanced PWM 4 registers */
- EPWM5 : origin = 0x006900, length = 0x000022 /* Enhanced PWM 5 registers */
- EPWM6 : origin = 0x006940, length = 0x000022 /* Enhanced PWM 6 registers */
+ MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */ /* Записывает origin значением 0x005000, length = 0x000040; данные origin. */
+ MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */ /* Записывает origin значением 0x005040, length = 0x000040; данные origin. */
- ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */
- ECAP2 : origin = 0x006A20, length = 0x000020 /* Enhanced Capture 2 registers */
- ECAP3 : origin = 0x006A40, length = 0x000020 /* Enhanced Capture 3 registers */
- ECAP4 : origin = 0x006A60, length = 0x000020 /* Enhanced Capture 4 registers */
- ECAP5 : origin = 0x006A80, length = 0x000020 /* Enhanced Capture 5 registers */
- ECAP6 : origin = 0x006AA0, length = 0x000020 /* Enhanced Capture 6 registers */
-
- EQEP1 : origin = 0x006B00, length = 0x000040 /* Enhanced QEP 1 registers */
- EQEP2 : origin = 0x006B40, length = 0x000040 /* Enhanced QEP 2 registers */
+ ECANA : origin = 0x006000, length = 0x000040 /* eCAN-A control and status registers */ /* Записывает origin значением 0x006000, length = 0x000040; данные origin. */
+ ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN-A local acceptance masks */ /* Записывает origin значением 0x006040, length = 0x000040; данные origin. */
+ ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN-A message object time stamps */ /* Записывает origin значением 0x006080, length = 0x000040; данные origin. */
+ ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN-A object time-out registers */ /* Записывает origin значением 0x0060C0, length = 0x000040; данные origin. */
+ ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN-A mailboxes */ /* Записывает origin значением 0x006100, length = 0x000100; данные origin. */
- GPIOCTRL : origin = 0x006F80, length = 0x000040 /* GPIO control registers */
- GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */
- GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */
-
- SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */
- SPIA : origin = 0x007040, length = 0x000010 /* SPI-A registers */
- SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */
- XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */
+ ECANB : origin = 0x006200, length = 0x000040 /* eCAN-B control and status registers */ /* Записывает origin значением 0x006200, length = 0x000040; данные origin. */
+ ECANB_LAM : origin = 0x006240, length = 0x000040 /* eCAN-B local acceptance masks */ /* Записывает origin значением 0x006240, length = 0x000040; данные origin. */
+ ECANB_MOTS : origin = 0x006280, length = 0x000040 /* eCAN-B message object time stamps */ /* Записывает origin значением 0x006280, length = 0x000040; данные origin. */
+ ECANB_MOTO : origin = 0x0062C0, length = 0x000040 /* eCAN-B object time-out registers */ /* Записывает origin значением 0x0062C0, length = 0x000040; данные origin. */
+ ECANB_MBOX : origin = 0x006300, length = 0x000100 /* eCAN-B mailboxes */ /* Записывает origin значением 0x006300, length = 0x000100; данные origin. */
- ADC : origin = 0x007100, length = 0x000020 /* ADC registers */
+ EPWM1 : origin = 0x006800, length = 0x000022 /* Enhanced PWM 1 registers */ /* Записывает origin значением 0x006800, length = 0x000022; данные origin. */
+ EPWM2 : origin = 0x006840, length = 0x000022 /* Enhanced PWM 2 registers */ /* Записывает origin значением 0x006840, length = 0x000022; данные origin. */
+ EPWM3 : origin = 0x006880, length = 0x000022 /* Enhanced PWM 3 registers */ /* Записывает origin значением 0x006880, length = 0x000022; данные origin. */
+ EPWM4 : origin = 0x0068C0, length = 0x000022 /* Enhanced PWM 4 registers */ /* Записывает origin значением 0x0068C0, length = 0x000022; данные origin. */
+ EPWM5 : origin = 0x006900, length = 0x000022 /* Enhanced PWM 5 registers */ /* Записывает origin значением 0x006900, length = 0x000022; данные origin. */
+ EPWM6 : origin = 0x006940, length = 0x000022 /* Enhanced PWM 6 registers */ /* Записывает origin значением 0x006940, length = 0x000022; данные origin. */
- SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */
+ ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */ /* Записывает origin значением 0x006A00, length = 0x000020; данные origin. */
+ ECAP2 : origin = 0x006A20, length = 0x000020 /* Enhanced Capture 2 registers */ /* Записывает origin значением 0x006A20, length = 0x000020; данные origin. */
+ ECAP3 : origin = 0x006A40, length = 0x000020 /* Enhanced Capture 3 registers */ /* Записывает origin значением 0x006A40, length = 0x000020; данные origin. */
+ ECAP4 : origin = 0x006A60, length = 0x000020 /* Enhanced Capture 4 registers */ /* Записывает origin значением 0x006A60, length = 0x000020; данные origin. */
+ ECAP5 : origin = 0x006A80, length = 0x000020 /* Enhanced Capture 5 registers */ /* Записывает origin значением 0x006A80, length = 0x000020; данные origin. */
+ ECAP6 : origin = 0x006AA0, length = 0x000020 /* Enhanced Capture 6 registers */ /* Записывает origin значением 0x006AA0, length = 0x000020; данные origin. */
- SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */
-
- I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */
-
- CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */
+ EQEP1 : origin = 0x006B00, length = 0x000040 /* Enhanced QEP 1 registers */ /* Записывает origin значением 0x006B00, length = 0x000040; данные origin. */
+ EQEP2 : origin = 0x006B40, length = 0x000040 /* Enhanced QEP 2 registers */ /* Записывает origin значением 0x006B40, length = 0x000040; данные origin. */
- PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */
+ GPIOCTRL : origin = 0x006F80, length = 0x000040 /* GPIO control registers */ /* Записывает origin значением 0x006F80, length = 0x000040; данные origin. */
+ GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */ /* Записывает origin значением 0x006FC0, length = 0x000020; данные origin. */
+ GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */ /* Записывает origin значением 0x006FE0, length = 0x000020; данные origin. */
+
+ SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */ /* Записывает origin значением 0x007010, length = 0x000020; данные origin. */
+ SPIA : origin = 0x007040, length = 0x000010 /* SPI-A registers */ /* Записывает origin значением 0x007040, length = 0x000010; данные origin. */
+ SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */ /* Записывает origin значением 0x007050, length = 0x000010; данные origin. */
+ XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */ /* Записывает origin значением 0x007070, length = 0x000010; данные origin. */
+
+ ADC : origin = 0x007100, length = 0x000020 /* ADC registers */ /* Записывает origin значением 0x007100, length = 0x000020; данные origin. */
+
+ SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */ /* Записывает origin значением 0x007750, length = 0x000010; данные origin. */
+
+ SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */ /* Записывает origin значением 0x007770, length = 0x000010; данные origin. */
+
+ I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */ /* Записывает origin значением 0x007900, length = 0x000040; данные origin. */
+
+ CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */ /* Записывает origin значением 0x33FFF8, length = 0x000008; данные origin. */
+
+ PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */ /* Записывает origin значением 0x380090, length = 0x000001; данные origin. */
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
+
+/* Начинает описание размещения секций объектных файлов для линкера. */
SECTIONS
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает PAGE значением 1; данные PAGE. */
PieVectTableFile : > PIE_VECT, PAGE = 1
/*** Peripheral Frame 0 Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
DevEmuRegsFile : > DEV_EMU, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
FlashRegsFile : > FLASH_REGS, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
CsmRegsFile : > CSM, PAGE = 1
- AdcMirrorFile : > ADC_MIRROR, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ AdcMirrorFile : > ADC_MIRROR, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
XintfRegsFile : > XINTF, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1
- CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
- PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
- DmaRegsFile : > DMA, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ DmaRegsFile : > DMA, PAGE = 1
/*** Peripheral Frame 3 Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
McbspaRegsFile : > MCBSPA, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
McbspbRegsFile : > MCBSPB, PAGE = 1
/*** Peripheral Frame 1 Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanaRegsFile : > ECANA, PAGE = 1
- ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanaMboxesFile : > ECANA_MBOX PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1
-
+
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanbRegsFile : > ECANB, PAGE = 1
- ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanbMboxesFile : > ECANB_MBOX PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTORegsFile : > ECANB_MOTO PAGE = 1
-
- EPwm1RegsFile : > EPWM1 PAGE = 1
- EPwm2RegsFile : > EPWM2 PAGE = 1
- EPwm3RegsFile : > EPWM3 PAGE = 1
- EPwm4RegsFile : > EPWM4 PAGE = 1
- EPwm5RegsFile : > EPWM5 PAGE = 1
+
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm1RegsFile : > EPWM1 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm2RegsFile : > EPWM2 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm3RegsFile : > EPWM3 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm4RegsFile : > EPWM4 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EPwm5RegsFile : > EPWM5 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
EPwm6RegsFile : > EPWM6 PAGE = 1
-
- ECap1RegsFile : > ECAP1 PAGE = 1
- ECap2RegsFile : > ECAP2 PAGE = 1
- ECap3RegsFile : > ECAP3 PAGE = 1
+
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECap1RegsFile : > ECAP1 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECap2RegsFile : > ECAP2 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECap3RegsFile : > ECAP3 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECap4RegsFile : > ECAP4 PAGE = 1
- ECap5RegsFile : > ECAP5 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ ECap5RegsFile : > ECAP5 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ECap6RegsFile : > ECAP6 PAGE = 1
- EQep1RegsFile : > EQEP1 PAGE = 1
- EQep2RegsFile : > EQEP2 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EQep1RegsFile : > EQEP1 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
+ EQep2RegsFile : > EQEP2 PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
GpioCtrlRegsFile : > GPIOCTRL PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
GpioDataRegsFile : > GPIODAT PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
GpioIntRegsFile : > GPIOINT PAGE = 1
-
+
/*** Peripheral Frame 2 Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
SysCtrlRegsFile : > SYSTEM, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
SpiaRegsFile : > SPIA, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
SciaRegsFile : > SCIA, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
XIntruptRegsFile : > XINTRUPT, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
AdcRegsFile : > ADC, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ScibRegsFile : > SCIB, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ScicRegsFile : > SCIC, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
I2caRegsFile : > I2CA, PAGE = 1
-
+
/*** Code Security Module Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
CsmPwlFile : > CSM_PWL, PAGE = 1
/*** Device Part ID Register Structures ***/
+ /* Записывает PAGE значением 1; данные PAGE. */
PartIdRegsFile : > PARTID, PAGE = 1
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Adc.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Adc.h
index 5c8467a..5e7e011 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Adc.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Adc.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Adc для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:51:50 $
//###########################################################################
@@ -11,252 +12,452 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_ADC_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_ADC_H
+/* Определяет защитный символ или переключатель DSP2833x_ADC_H для последующей компиляции. */
#define DSP2833x_ADC_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//---------------------------------------------------------------------------
// ADC Individual Register Bit Definitions:
+/* Описывает структуру ADCTRL1_BITS; порядок полей определяет расположение данных. */
struct ADCTRL1_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 3:0 reserved
+ /* Битовое поле SEQ_CASC, ширина 1 бит; данные SEQ_CASC. */
Uint16 SEQ_CASC:1; // 4 Cascaded sequencer mode
- Uint16 SEQ_OVRD:1; // 5 Sequencer override
+ /* Битовое поле SEQ_OVRD, ширина 1 бит; данные SEQ_OVRD. */
+ Uint16 SEQ_OVRD:1; // 5 Sequencer override
+ /* Битовое поле CONT_RUN, ширина 1 бит; данные CONT_RUN. */
Uint16 CONT_RUN:1; // 6 Continuous run
+ /* Битовое поле CPS, ширина 1 бит; данные CPS. */
Uint16 CPS:1; // 7 ADC core clock pre-scalar
+ /* Битовое поле ACQ_PS, ширина 4 бит; данные ACQ_PS. */
Uint16 ACQ_PS:4; // 11:8 Acquisition window size
+ /* Битовое поле SUSMOD, ширина 2 бит; данные SUSMOD. */
Uint16 SUSMOD:2; // 13:12 Emulation suspend mode
+ /* Битовое поле RESET, ширина 1 бит; сброс. */
Uint16 RESET:1; // 14 ADC reset
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCTRL1_REG в одной области памяти. */
union ADCTRL1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCTRL1_BITS bit;; порядок полей определяет расположение данных. */
struct ADCTRL1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCTRL2_BITS; порядок полей определяет расположение данных. */
struct ADCTRL2_BITS { // bits description
+ /* Битовое поле EPWM_SOCB_SEQ2, ширина 1 бит; данные EPWM_SOCB_SEQ2. */
Uint16 EPWM_SOCB_SEQ2:1; // 0 EPWM compare B SOC mask for SEQ2
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved
+ /* Битовое поле INT_MOD_SEQ2, ширина 1 бит; данные INT_MOD_SEQ2. */
Uint16 INT_MOD_SEQ2:1; // 2 SEQ2 Interrupt mode
+ /* Битовое поле INT_ENA_SEQ2, ширина 1 бит; данные INT_ENA_SEQ2. */
Uint16 INT_ENA_SEQ2:1; // 3 SEQ2 Interrupt enable
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 4 reserved
+ /* Битовое поле SOC_SEQ2, ширина 1 бит; данные SOC_SEQ2. */
Uint16 SOC_SEQ2:1; // 5 Start of conversion for SEQ2
+ /* Битовое поле RST_SEQ2, ширина 1 бит; данные RST_SEQ2. */
Uint16 RST_SEQ2:1; // 6 Reset SEQ2
+ /* Битовое поле EXT_SOC_SEQ1, ширина 1 бит; данные EXT_SOC_SEQ1. */
Uint16 EXT_SOC_SEQ1:1; // 7 External start of conversion for SEQ1
+ /* Битовое поле EPWM_SOCA_SEQ1, ширина 1 бит; данные EPWM_SOCA_SEQ1. */
Uint16 EPWM_SOCA_SEQ1:1; // 8 EPWM compare B SOC mask for SEQ1
+ /* Битовое поле rsvd3, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:1; // 9 reserved
+ /* Битовое поле INT_MOD_SEQ1, ширина 1 бит; данные INT_MOD_SEQ1. */
Uint16 INT_MOD_SEQ1:1; // 10 SEQ1 Interrupt mode
+ /* Битовое поле INT_ENA_SEQ1, ширина 1 бит; данные INT_ENA_SEQ1. */
Uint16 INT_ENA_SEQ1:1; // 11 SEQ1 Interrupt enable
+ /* Битовое поле rsvd4, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd4:1; // 12 reserved
+ /* Битовое поле SOC_SEQ1, ширина 1 бит; данные SOC_SEQ1. */
Uint16 SOC_SEQ1:1; // 13 Start of conversion trigger for SEQ1
- Uint16 RST_SEQ1:1; // 14 Restart sequencer 1
+ /* Битовое поле RST_SEQ1, ширина 1 бит; данные RST_SEQ1. */
+ Uint16 RST_SEQ1:1; // 14 Restart sequencer 1
+ /* Битовое поле EPWM_SOCB_SEQ, ширина 1 бит; данные EPWM_SOCB_SEQ. */
Uint16 EPWM_SOCB_SEQ:1; // 15 EPWM compare B SOC enable
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCTRL2_REG в одной области памяти. */
union ADCTRL2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCTRL2_BITS bit;; порядок полей определяет расположение данных. */
struct ADCTRL2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCASEQSR_BITS; порядок полей определяет расположение данных. */
struct ADCASEQSR_BITS { // bits description
+ /* Битовое поле SEQ1_STATE, ширина 4 бит; данные SEQ1_STATE. */
Uint16 SEQ1_STATE:4; // 3:0 SEQ1 state
+ /* Битовое поле SEQ2_STATE, ширина 3 бит; данные SEQ2_STATE. */
Uint16 SEQ2_STATE:3; // 6:4 SEQ2 state
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 7 reserved
- Uint16 SEQ_CNTR:4; // 11:8 Sequencing counter status
- Uint16 rsvd2:4; // 15:12 reserved
+ /* Битовое поле SEQ_CNTR, ширина 4 бит; данные SEQ_CNTR. */
+ Uint16 SEQ_CNTR:4; // 11:8 Sequencing counter status
+ /* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd2:4; // 15:12 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCASEQSR_REG в одной области памяти. */
union ADCASEQSR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCASEQSR_BITS bit;; порядок полей определяет расположение данных. */
struct ADCASEQSR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCMAXCONV_BITS; порядок полей определяет расположение данных. */
struct ADCMAXCONV_BITS { // bits description
+ /* Битовое поле MAX_CONV1, ширина 4 бит; данные MAX_CONV1. */
Uint16 MAX_CONV1:4; // 3:0 Max number of conversions
- Uint16 MAX_CONV2:3; // 6:4 Max number of conversions
- Uint16 rsvd1:9; // 15:7 reserved
+ /* Битовое поле MAX_CONV2, ширина 3 бит; данные MAX_CONV2. */
+ Uint16 MAX_CONV2:3; // 6:4 Max number of conversions
+ /* Битовое поле rsvd1, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd1:9; // 15:7 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCMAXCONV_REG в одной области памяти. */
union ADCMAXCONV_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCMAXCONV_BITS bit;; порядок полей определяет расположение данных. */
struct ADCMAXCONV_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCCHSELSEQ1_BITS; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ1_BITS { // bits description
+ /* Битовое поле CONV00, ширина 4 бит; данные CONV00. */
Uint16 CONV00:4; // 3:0 Conversion selection 00
+ /* Битовое поле CONV01, ширина 4 бит; данные CONV01. */
Uint16 CONV01:4; // 7:4 Conversion selection 01
+ /* Битовое поле CONV02, ширина 4 бит; данные CONV02. */
Uint16 CONV02:4; // 11:8 Conversion selection 02
+ /* Битовое поле CONV03, ширина 4 бит; данные CONV03. */
Uint16 CONV03:4; // 15:12 Conversion selection 03
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCCHSELSEQ1_REG в одной области памяти. */
union ADCCHSELSEQ1_REG{
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCCHSELSEQ1_BITS bit;; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCCHSELSEQ2_BITS; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ2_BITS { // bits description
+ /* Битовое поле CONV04, ширина 4 бит; данные CONV04. */
Uint16 CONV04:4; // 3:0 Conversion selection 04
+ /* Битовое поле CONV05, ширина 4 бит; данные CONV05. */
Uint16 CONV05:4; // 7:4 Conversion selection 05
+ /* Битовое поле CONV06, ширина 4 бит; данные CONV06. */
Uint16 CONV06:4; // 11:8 Conversion selection 06
+ /* Битовое поле CONV07, ширина 4 бит; данные CONV07. */
Uint16 CONV07:4; // 15:12 Conversion selection 07
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCCHSELSEQ2_REG в одной области памяти. */
union ADCCHSELSEQ2_REG{
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCCHSELSEQ2_BITS bit;; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCCHSELSEQ3_BITS; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ3_BITS { // bits description
+ /* Битовое поле CONV08, ширина 4 бит; данные CONV08. */
Uint16 CONV08:4; // 3:0 Conversion selection 08
+ /* Битовое поле CONV09, ширина 4 бит; данные CONV09. */
Uint16 CONV09:4; // 7:4 Conversion selection 09
+ /* Битовое поле CONV10, ширина 4 бит; данные CONV10. */
Uint16 CONV10:4; // 11:8 Conversion selection 10
+ /* Битовое поле CONV11, ширина 4 бит; данные CONV11. */
Uint16 CONV11:4; // 15:12 Conversion selection 11
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCCHSELSEQ3_REG в одной области памяти. */
union ADCCHSELSEQ3_REG{
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCCHSELSEQ3_BITS bit;; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ3_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCCHSELSEQ4_BITS; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ4_BITS { // bits description
+ /* Битовое поле CONV12, ширина 4 бит; данные CONV12. */
Uint16 CONV12:4; // 3:0 Conversion selection 12
+ /* Битовое поле CONV13, ширина 4 бит; данные CONV13. */
Uint16 CONV13:4; // 7:4 Conversion selection 13
+ /* Битовое поле CONV14, ширина 4 бит; данные CONV14. */
Uint16 CONV14:4; // 11:8 Conversion selection 14
+ /* Битовое поле CONV15, ширина 4 бит; данные CONV15. */
Uint16 CONV15:4; // 15:12 Conversion selection 15
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCCHSELSEQ4_REG в одной области памяти. */
union ADCCHSELSEQ4_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCCHSELSEQ4_BITS bit;; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ4_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCTRL3_BITS; порядок полей определяет расположение данных. */
struct ADCTRL3_BITS { // bits description
+ /* Битовое поле SMODE_SEL, ширина 1 бит; данные SMODE_SEL. */
Uint16 SMODE_SEL:1; // 0 Sampling mode select
+ /* Битовое поле ADCCLKPS, ширина 4 бит; данные ADCCLKPS. */
Uint16 ADCCLKPS:4; // 4:1 ADC core clock divider
+ /* Битовое поле ADCPWDN, ширина 1 бит; данные ADCPWDN. */
Uint16 ADCPWDN:1; // 5 ADC powerdown
+ /* Битовое поле ADCBGRFDN, ширина 2 бит; данные ADCBGRFDN. */
Uint16 ADCBGRFDN:2; // 7:6 ADC bandgap/ref power down
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Объединяет несколько представлений ADCTRL3_REG в одной области памяти. */
union ADCTRL3_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCTRL3_BITS bit;; порядок полей определяет расположение данных. */
struct ADCTRL3_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCST_BITS; порядок полей определяет расположение данных. */
struct ADCST_BITS { // bits description
- Uint16 INT_SEQ1:1; // 0 SEQ1 Interrupt flag
+ /* Битовое поле INT_SEQ1, ширина 1 бит; данные INT_SEQ1. */
+ Uint16 INT_SEQ1:1; // 0 SEQ1 Interrupt flag
+ /* Битовое поле INT_SEQ2, ширина 1 бит; данные INT_SEQ2. */
Uint16 INT_SEQ2:1; // 1 SEQ2 Interrupt flag
+ /* Битовое поле SEQ1_BSY, ширина 1 бит; данные SEQ1_BSY. */
Uint16 SEQ1_BSY:1; // 2 SEQ1 busy status
+ /* Битовое поле SEQ2_BSY, ширина 1 бит; данные SEQ2_BSY. */
Uint16 SEQ2_BSY:1; // 3 SEQ2 busy status
+ /* Битовое поле INT_SEQ1_CLR, ширина 1 бит; данные INT_SEQ1_CLR. */
Uint16 INT_SEQ1_CLR:1; // 4 SEQ1 Interrupt clear
+ /* Битовое поле INT_SEQ2_CLR, ширина 1 бит; данные INT_SEQ2_CLR. */
Uint16 INT_SEQ2_CLR:1; // 5 SEQ2 Interrupt clear
+ /* Битовое поле EOS_BUF1, ширина 1 бит; данные EOS_BUF1. */
Uint16 EOS_BUF1:1; // 6 End of sequence buffer1
+ /* Битовое поле EOS_BUF2, ширина 1 бит; данные EOS_BUF2. */
Uint16 EOS_BUF2:1; // 7 End of sequence buffer2
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
-
-union ADCST_REG {
- Uint16 all;
- struct ADCST_BITS bit;
-};
+/* Объединяет несколько представлений ADCST_REG в одной области памяти. */
+union ADCST_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
+ Uint16 all;
+ /* Описывает структуру ADCST_BITS bit;; порядок полей определяет расположение данных. */
+ struct ADCST_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+
+/* Описывает структуру ADCREFSEL_BITS; порядок полей определяет расположение данных. */
struct ADCREFSEL_BITS { // bits description
- Uint16 rsvd1:14; // 13:0 reserved
+ /* Битовое поле rsvd1, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd1:14; // 13:0 reserved
+ /* Битовое поле REF_SEL, ширина 2 бит; данные REF_SEL. */
Uint16 REF_SEL:2; // 15:14 Reference select
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCREFSEL_REG в одной области памяти. */
union ADCREFSEL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCREFSEL_BITS bit;; порядок полей определяет расположение данных. */
struct ADCREFSEL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADCOFFTRIM_BITS; порядок полей определяет расположение данных. */
struct ADCOFFTRIM_BITS{ // bits description
- int16 OFFSET_TRIM:9; // 8:0 Offset Trim
+ /* Продолжает список аргументов, полей или выражение int16 OFFSET_TRIM:9;; порядок элементов сохраняется. */
+ int16 OFFSET_TRIM:9; // 8:0 Offset Trim
+ /* Битовое поле rsvd1, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:7; // 15:9 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ADCOFFTRIM_REG в одной области памяти. */
union ADCOFFTRIM_REG{
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ADCOFFTRIM_BITS bit;; порядок полей определяет расположение данных. */
struct ADCOFFTRIM_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADC_REGS; порядок полей определяет расположение данных. */
struct ADC_REGS {
+ /* Объединяет несколько представлений ADCTRL1_REG ADCTRL1; в одной области памяти. */
union ADCTRL1_REG ADCTRL1; // ADC Control 1
+ /* Объединяет несколько представлений ADCTRL2_REG ADCTRL2; в одной области памяти. */
union ADCTRL2_REG ADCTRL2; // ADC Control 2
+ /* Объединяет несколько представлений ADCMAXCONV_REG ADCMAXCONV; в одной области памяти. */
union ADCMAXCONV_REG ADCMAXCONV; // Max conversions
+ /* Объединяет несколько представлений ADCCHSELSEQ1_REG ADCCHSELSEQ1; в одной области памяти. */
union ADCCHSELSEQ1_REG ADCCHSELSEQ1; // Channel select sequencing control 1
+ /* Объединяет несколько представлений ADCCHSELSEQ2_REG ADCCHSELSEQ2; в одной области памяти. */
union ADCCHSELSEQ2_REG ADCCHSELSEQ2; // Channel select sequencing control 2
+ /* Объединяет несколько представлений ADCCHSELSEQ3_REG ADCCHSELSEQ3; в одной области памяти. */
union ADCCHSELSEQ3_REG ADCCHSELSEQ3; // Channel select sequencing control 3
+ /* Объединяет несколько представлений ADCCHSELSEQ4_REG ADCCHSELSEQ4; в одной области памяти. */
union ADCCHSELSEQ4_REG ADCCHSELSEQ4; // Channel select sequencing control 4
+ /* Объединяет несколько представлений ADCASEQSR_REG ADCASEQSR; в одной области памяти. */
union ADCASEQSR_REG ADCASEQSR; // Autosequence status register
+ /* Объявляет ADCRESULT0 — данные ADCRESULT0. */
Uint16 ADCRESULT0; // Conversion Result Buffer 0
+ /* Объявляет ADCRESULT1 — данные ADCRESULT1. */
Uint16 ADCRESULT1; // Conversion Result Buffer 1
+ /* Объявляет ADCRESULT2 — данные ADCRESULT2. */
Uint16 ADCRESULT2; // Conversion Result Buffer 2
+ /* Объявляет ADCRESULT3 — данные ADCRESULT3. */
Uint16 ADCRESULT3; // Conversion Result Buffer 3
+ /* Объявляет ADCRESULT4 — данные ADCRESULT4. */
Uint16 ADCRESULT4; // Conversion Result Buffer 4
+ /* Объявляет ADCRESULT5 — данные ADCRESULT5. */
Uint16 ADCRESULT5; // Conversion Result Buffer 5
+ /* Объявляет ADCRESULT6 — данные ADCRESULT6. */
Uint16 ADCRESULT6; // Conversion Result Buffer 6
+ /* Объявляет ADCRESULT7 — данные ADCRESULT7. */
Uint16 ADCRESULT7; // Conversion Result Buffer 7
+ /* Объявляет ADCRESULT8 — данные ADCRESULT8. */
Uint16 ADCRESULT8; // Conversion Result Buffer 8
+ /* Объявляет ADCRESULT9 — данные ADCRESULT9. */
Uint16 ADCRESULT9; // Conversion Result Buffer 9
+ /* Объявляет ADCRESULT10 — данные ADCRESULT10. */
Uint16 ADCRESULT10; // Conversion Result Buffer 10
+ /* Объявляет ADCRESULT11 — данные ADCRESULT11. */
Uint16 ADCRESULT11; // Conversion Result Buffer 11
+ /* Объявляет ADCRESULT12 — данные ADCRESULT12. */
Uint16 ADCRESULT12; // Conversion Result Buffer 12
+ /* Объявляет ADCRESULT13 — данные ADCRESULT13. */
Uint16 ADCRESULT13; // Conversion Result Buffer 13
+ /* Объявляет ADCRESULT14 — данные ADCRESULT14. */
Uint16 ADCRESULT14; // Conversion Result Buffer 14
+ /* Объявляет ADCRESULT15 — данные ADCRESULT15. */
Uint16 ADCRESULT15; // Conversion Result Buffer 15
- union ADCTRL3_REG ADCTRL3; // ADC Control 3
+ /* Объединяет несколько представлений ADCTRL3_REG ADCTRL3; в одной области памяти. */
+ union ADCTRL3_REG ADCTRL3; // ADC Control 3
+ /* Объединяет несколько представлений ADCST_REG ADCST; в одной области памяти. */
union ADCST_REG ADCST; // ADC Status Register
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1;
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2;
+ /* Объединяет несколько представлений ADCREFSEL_REG ADCREFSEL; в одной области памяти. */
union ADCREFSEL_REG ADCREFSEL; // Reference Select Register
+ /* Объединяет несколько представлений ADCOFFTRIM_REG ADCOFFTRIM; в одной области памяти. */
union ADCOFFTRIM_REG ADCOFFTRIM; // Offset Trim Register
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру ADC_RESULT_MIRROR_REGS; порядок полей определяет расположение данных. */
struct ADC_RESULT_MIRROR_REGS
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет ADCRESULT0 — данные ADCRESULT0. */
Uint16 ADCRESULT0; // Conversion Result Buffer 0
+ /* Объявляет ADCRESULT1 — данные ADCRESULT1. */
Uint16 ADCRESULT1; // Conversion Result Buffer 1
+ /* Объявляет ADCRESULT2 — данные ADCRESULT2. */
Uint16 ADCRESULT2; // Conversion Result Buffer 2
+ /* Объявляет ADCRESULT3 — данные ADCRESULT3. */
Uint16 ADCRESULT3; // Conversion Result Buffer 3
+ /* Объявляет ADCRESULT4 — данные ADCRESULT4. */
Uint16 ADCRESULT4; // Conversion Result Buffer 4
+ /* Объявляет ADCRESULT5 — данные ADCRESULT5. */
Uint16 ADCRESULT5; // Conversion Result Buffer 5
+ /* Объявляет ADCRESULT6 — данные ADCRESULT6. */
Uint16 ADCRESULT6; // Conversion Result Buffer 6
+ /* Объявляет ADCRESULT7 — данные ADCRESULT7. */
Uint16 ADCRESULT7; // Conversion Result Buffer 7
+ /* Объявляет ADCRESULT8 — данные ADCRESULT8. */
Uint16 ADCRESULT8; // Conversion Result Buffer 8
+ /* Объявляет ADCRESULT9 — данные ADCRESULT9. */
Uint16 ADCRESULT9; // Conversion Result Buffer 9
+ /* Объявляет ADCRESULT10 — данные ADCRESULT10. */
Uint16 ADCRESULT10; // Conversion Result Buffer 10
+ /* Объявляет ADCRESULT11 — данные ADCRESULT11. */
Uint16 ADCRESULT11; // Conversion Result Buffer 11
+ /* Объявляет ADCRESULT12 — данные ADCRESULT12. */
Uint16 ADCRESULT12; // Conversion Result Buffer 12
+ /* Объявляет ADCRESULT13 — данные ADCRESULT13. */
Uint16 ADCRESULT13; // Conversion Result Buffer 13
+ /* Объявляет ADCRESULT14 — данные ADCRESULT14. */
Uint16 ADCRESULT14; // Conversion Result Buffer 14
+ /* Объявляет ADCRESULT15 — данные ADCRESULT15. */
Uint16 ADCRESULT15; // Conversion Result Buffer 15
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// ADC External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct ADC_REGS AdcRegs;; порядок элементов сохраняется. */
extern volatile struct ADC_REGS AdcRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ADC_RESULT_MIRROR_REGS AdcMirror;; порядок элементов сохраняется. */
extern volatile struct ADC_RESULT_MIRROR_REGS AdcMirror;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_ADC_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_CpuTimers.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_CpuTimers.h
index 3475801..dd140be 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_CpuTimers.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_CpuTimers.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание CpuTimers для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/4 $
// Checkin $Date: March 20, 2007 15:33:42 $
//###########################################################################
@@ -20,11 +21,16 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_CPU_TIMERS_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_CPU_TIMERS_H
+/* Определяет защитный символ или переключатель DSP2833x_CPU_TIMERS_H для последующей компиляции. */
#define DSP2833x_CPU_TIMERS_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//---------------------------------------------------------------------------
@@ -32,121 +38,195 @@ extern "C" {
//
//
// TCR: Control register bit definitions:
+/* Описывает структуру TCR_BITS; порядок полей определяет расположение данных. */
struct TCR_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 3:0 reserved
+ /* Битовое поле TSS, ширина 1 бит; данные TSS. */
Uint16 TSS:1; // 4 Timer Start/Stop
+ /* Битовое поле TRB, ширина 1 бит; данные TRB. */
Uint16 TRB:1; // 5 Timer reload
+ /* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 9:6 reserved
+ /* Битовое поле SOFT, ширина 1 бит; данные SOFT. */
Uint16 SOFT:1; // 10 Emulation modes
+ /* Битовое поле FREE, ширина 1 бит; данные FREE. */
Uint16 FREE:1; // 11
+ /* Битовое поле rsvd3, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:2; // 12:13 reserved
+ /* Битовое поле TIE, ширина 1 бит; данные TIE. */
Uint16 TIE:1; // 14 Output enable
+ /* Битовое поле TIF, ширина 1 бит; данные TIF. */
Uint16 TIF:1; // 15 Interrupt flag
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TCR_REG в одной области памяти. */
union TCR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TCR_BITS bit;; порядок полей определяет расположение данных. */
struct TCR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// TPR: Pre-scale low bit definitions:
+/* Описывает структуру TPR_BITS; порядок полей определяет расположение данных. */
struct TPR_BITS { // bits description
+ /* Битовое поле TDDR, ширина 8 бит; данные TDDR. */
Uint16 TDDR:8; // 7:0 Divide-down low
+ /* Битовое поле PSC, ширина 8 бит; данные PSC. */
Uint16 PSC:8; // 15:8 Prescale counter low
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TPR_REG в одной области памяти. */
union TPR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TPR_BITS bit;; порядок полей определяет расположение данных. */
struct TPR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// TPRH: Pre-scale high bit definitions:
+/* Описывает структуру TPRH_BITS; порядок полей определяет расположение данных. */
struct TPRH_BITS { // bits description
+ /* Битовое поле TDDRH, ширина 8 бит; данные TDDRH. */
Uint16 TDDRH:8; // 7:0 Divide-down high
+ /* Битовое поле PSCH, ширина 8 бит; данные PSCH. */
Uint16 PSCH:8; // 15:8 Prescale counter high
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TPRH_REG в одной области памяти. */
union TPRH_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TPRH_BITS bit;; порядок полей определяет расположение данных. */
struct TPRH_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// TIM, TIMH: Timer register definitions:
+/* Описывает структуру TIM_REG; порядок полей определяет расположение данных. */
struct TIM_REG {
+ /* Объявляет LSW — данные LSW. */
Uint16 LSW;
+ /* Объявляет MSW — данные MSW. */
Uint16 MSW;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TIM_GROUP в одной области памяти. */
union TIM_GROUP {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру TIM_REG half;; порядок полей определяет расположение данных. */
struct TIM_REG half;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// PRD, PRDH: Period register definitions:
+/* Описывает структуру PRD_REG; порядок полей определяет расположение данных. */
struct PRD_REG {
+ /* Объявляет LSW — данные LSW. */
Uint16 LSW;
+ /* Объявляет MSW — данные MSW. */
Uint16 MSW;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PRD_GROUP в одной области памяти. */
union PRD_GROUP {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру PRD_REG half;; порядок полей определяет расположение данных. */
struct PRD_REG half;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// CPU Timer Register File:
//
+/* Описывает структуру CPUTIMER_REGS; порядок полей определяет расположение данных. */
struct CPUTIMER_REGS {
+ /* Объединяет несколько представлений TIM_GROUP TIM; в одной области памяти. */
union TIM_GROUP TIM; // Timer counter register
+ /* Объединяет несколько представлений PRD_GROUP PRD; в одной области памяти. */
union PRD_GROUP PRD; // Period register
+ /* Объединяет несколько представлений TCR_REG TCR; в одной области памяти. */
union TCR_REG TCR; // Timer control register
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // reserved
+ /* Объединяет несколько представлений TPR_REG TPR; в одной области памяти. */
union TPR_REG TPR; // Timer pre-scale low
+ /* Объединяет несколько представлений TPRH_REG TPRH; в одной области памяти. */
union TPRH_REG TPRH; // Timer pre-scale high
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// CPU Timer Support Variables:
//
+/* Описывает структуру CPUTIMER_VARS; порядок полей определяет расположение данных. */
struct CPUTIMER_VARS {
+ /* Продолжает список аргументов, полей или выражение volatile struct CPUTIMER_REGS *RegsAddr;; порядок элементов сохраняется. */
volatile struct CPUTIMER_REGS *RegsAddr;
+ /* Объявляет InterruptCount — прерывание число. */
Uint32 InterruptCount;
+ /* Объявляет CPUFreqInMHz — данные CPUFreqInMHz. */
float CPUFreqInMHz;
+ /* Объявляет PeriodInUSec — период In U Sec. */
float PeriodInUSec;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// Function prototypes and external definitions:
//
+/* Объявляет интерфейс функции InitCpuTimers; реализация вызывается через этот прототип. */
void InitCpuTimers(void);
+/* Объявляет интерфейс функции ConfigCpuTimer; реализация вызывается через этот прототип. */
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period);
+/* Продолжает список аргументов, полей или выражение extern volatile struct CPUTIMER_REGS CpuTimer0Regs;; порядок элементов сохраняется. */
extern volatile struct CPUTIMER_REGS CpuTimer0Regs;
+/* Продолжает список аргументов, полей или выражение extern struct CPUTIMER_VARS CpuTimer0;; порядок элементов сохраняется. */
extern struct CPUTIMER_VARS CpuTimer0;
// CpuTimer 1 and CpuTimer2 are reserved for DSP BIOS & other RTOS. Comment out CpuTimer1 and CpuTimer2 if using DSP BIOS or other RTOS
+/* Продолжает список аргументов, полей или выражение extern volatile struct CPUTIMER_REGS CpuTimer1Regs;; порядок элементов сохраняется. */
extern volatile struct CPUTIMER_REGS CpuTimer1Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct CPUTIMER_REGS CpuTimer2Regs;; порядок элементов сохраняется. */
extern volatile struct CPUTIMER_REGS CpuTimer2Regs;
+/* Продолжает список аргументов, полей или выражение extern struct CPUTIMER_VARS CpuTimer1;; порядок элементов сохраняется. */
extern struct CPUTIMER_VARS CpuTimer1;
+/* Продолжает список аргументов, полей или выражение extern struct CPUTIMER_VARS CpuTimer2;; порядок элементов сохраняется. */
extern struct CPUTIMER_VARS CpuTimer2;
//---------------------------------------------------------------------------
// Usefull Timer Operations:
//
// Start Timer:
+/* Задаёт StartCpuTimer0 = CpuTimer0Regs.TCR.bit.TSS = 0; Start Cpu таймер 0. */
#define StartCpuTimer0() CpuTimer0Regs.TCR.bit.TSS = 0
// Stop Timer:
+/* Задаёт StopCpuTimer0 = CpuTimer0Regs.TCR.bit.TSS = 1; Stop Cpu таймер 0. */
#define StopCpuTimer0() CpuTimer0Regs.TCR.bit.TSS = 1
// Reload Timer With period Value:
+/* Задаёт ReloadCpuTimer0 = CpuTimer0Regs.TCR.bit.TRB = 1; Reload Cpu таймер 0. */
#define ReloadCpuTimer0() CpuTimer0Regs.TCR.bit.TRB = 1
// Read 32-Bit Timer Value:
+/* Задаёт ReadCpuTimer0Counter = CpuTimer0Regs.TIM.all; чтение Cpu таймер 0 счётчик. */
#define ReadCpuTimer0Counter() CpuTimer0Regs.TIM.all
// Read 32-Bit Period Value:
+/* Задаёт ReadCpuTimer0Period = CpuTimer0Regs.PRD.all; чтение Cpu таймер 0 период. */
#define ReadCpuTimer0Period() CpuTimer0Regs.PRD.all
// CpuTimer 1 and CpuTimer2 are reserved for DSP BIOS & other RTOS
@@ -157,31 +237,44 @@ extern struct CPUTIMER_VARS CpuTimer2;
// if using DSP-BIOS or another realtime OS.
// Start Timer:
+/* Задаёт StartCpuTimer1 = CpuTimer1Regs.TCR.bit.TSS = 0; Start Cpu таймер 1. */
#define StartCpuTimer1() CpuTimer1Regs.TCR.bit.TSS = 0
+/* Задаёт StartCpuTimer2 = CpuTimer2Regs.TCR.bit.TSS = 0; Start Cpu таймер 2. */
#define StartCpuTimer2() CpuTimer2Regs.TCR.bit.TSS = 0
// Stop Timer:
+/* Задаёт StopCpuTimer1 = CpuTimer1Regs.TCR.bit.TSS = 1; Stop Cpu таймер 1. */
#define StopCpuTimer1() CpuTimer1Regs.TCR.bit.TSS = 1
+/* Задаёт StopCpuTimer2 = CpuTimer2Regs.TCR.bit.TSS = 1; Stop Cpu таймер 2. */
#define StopCpuTimer2() CpuTimer2Regs.TCR.bit.TSS = 1
// Reload Timer With period Value:
+/* Задаёт ReloadCpuTimer1 = CpuTimer1Regs.TCR.bit.TRB = 1; Reload Cpu таймер 1. */
#define ReloadCpuTimer1() CpuTimer1Regs.TCR.bit.TRB = 1
+/* Задаёт ReloadCpuTimer2 = CpuTimer2Regs.TCR.bit.TRB = 1; Reload Cpu таймер 2. */
#define ReloadCpuTimer2() CpuTimer2Regs.TCR.bit.TRB = 1
// Read 32-Bit Timer Value:
+/* Задаёт ReadCpuTimer1Counter = CpuTimer1Regs.TIM.all; чтение Cpu таймер 1 счётчик. */
#define ReadCpuTimer1Counter() CpuTimer1Regs.TIM.all
+/* Задаёт ReadCpuTimer2Counter = CpuTimer2Regs.TIM.all; чтение Cpu таймер 2 счётчик. */
#define ReadCpuTimer2Counter() CpuTimer2Regs.TIM.all
// Read 32-Bit Period Value:
+/* Задаёт ReadCpuTimer1Period = CpuTimer1Regs.PRD.all; чтение Cpu таймер 1 период. */
#define ReadCpuTimer1Period() CpuTimer1Regs.PRD.all
+/* Задаёт ReadCpuTimer2Period = CpuTimer2Regs.PRD.all; чтение Cpu таймер 2 период. */
#define ReadCpuTimer2Period() CpuTimer2Regs.PRD.all
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_CPU_TIMERS_H definition
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_DMA.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_DMA.h
index e8b0d59..de23b04 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_DMA.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_DMA.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание DMA для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/11 $
// Checkin $Date: June 23, 2008 11:34:15 $
//###########################################################################
@@ -11,17 +12,24 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_DMA_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DMA_H
+/* Определяет защитный символ или переключатель DSP2833x_DMA_H для последующей компиляции. */
#define DSP2833x_DMA_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//----------------------------------------------------
// Channel MODE register bit definitions:
+/* Описывает структуру MODE_BITS; порядок полей определяет расположение данных. */
struct MODE_BITS { // bits description
+ /* Битовое поле PERINTSEL, ширина 5 бит; данные PERINTSEL. */
Uint16 PERINTSEL:5; // 4:0 Peripheral Interrupt and Sync Select Bits (R/W):
// 0 no interrupt
// 1 SEQ1INT & ADCSYNC
@@ -54,127 +62,191 @@ struct MODE_BITS { // bits description
// 28 ePWM6SOCA
// 29 ePWM6SOCB
// 30:31 no interrupt
+ /* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 6:5 (R=0:0)
+ /* Битовое поле OVRINTE, ширина 1 бит; данные OVRINTE. */
Uint16 OVRINTE:1; // 7 Overflow Interrupt Enable (R/W):
// 0 overflow interrupt disabled
// 1 overflow interrupt enabled
+ /* Битовое поле PERINTE, ширина 1 бит; данные PERINTE. */
Uint16 PERINTE:1; // 8 Peripheral Interrupt Enable Bit (R/W):
// 0 peripheral interrupt disabled
// 1 peripheral interrupt enabled
+ /* Битовое поле CHINTMODE, ширина 1 бит; данные CHINTMODE. */
Uint16 CHINTMODE:1; // 9 Channel Interrupt Mode Bit (R/W):
// 0 generate interrupt at beginning of new transfer
// 1 generate interrupt at end of transfer
+ /* Битовое поле ONESHOT, ширина 1 бит; данные ONESHOT. */
Uint16 ONESHOT:1; // 10 One Shot Mode Bit (R/W):
// 0 only interrupt event triggers single burst transfer
// 1 first interrupt triggers burst, continue until transfer count is zero
+ /* Битовое поле CONTINUOUS, ширина 1 бит; данные CONTINUOUS. */
Uint16 CONTINUOUS:1; // 11 Continous Mode Bit (R/W):
// 0 stop when transfer count is zero
// 1 re-initialize when transfer count is zero
+ /* Битовое поле SYNCE, ширина 1 бит; данные SYNCE. */
Uint16 SYNCE:1; // 12 Sync Enable Bit (R/W):
// 0 ignore selected interrupt sync signal
// 1 enable selected interrupt sync signal
+ /* Битовое поле SYNCSEL, ширина 1 бит; данные SYNCSEL. */
Uint16 SYNCSEL:1; // 13 Sync Select Bit (R/W):
// 0 sync signal controls source wrap counter
// 1 sync signal controls destination wrap counter
+ /* Битовое поле DATASIZE, ширина 1 бит; данные DATASIZE. */
Uint16 DATASIZE:1; // 14 Data Size Mode Bit (R/W):
// 0 16-bit data transfer size
// 1 32-bit data transfer size
+ /* Битовое поле CHINTE, ширина 1 бит; данные CHINTE. */
Uint16 CHINTE:1; // 15 Channel Interrupt Enable Bit (R/W):
// 0 channel interrupt disabled
// 1 channel interrupt enabled
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений MODE_REG в одной области памяти. */
union MODE_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру MODE_BITS bit;; порядок полей определяет расположение данных. */
struct MODE_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// Channel CONTROL register bit definitions:
+/* Описывает структуру CONTROL_BITS; порядок полей определяет расположение данных. */
struct CONTROL_BITS { // bits description
+ /* Битовое поле RUN, ширина 1 бит; данные RUN. */
Uint16 RUN:1; // 0 Run Bit (R=0/W=1)
+ /* Битовое поле HALT, ширина 1 бит; данные HALT. */
Uint16 HALT:1; // 1 Halt Bit (R=0/W=1)
+ /* Битовое поле SOFTRESET, ширина 1 бит; данные SOFTRESET. */
Uint16 SOFTRESET:1; // 2 Soft Reset Bit (R=0/W=1)
+ /* Битовое поле PERINTFRC, ширина 1 бит; данные PERINTFRC. */
Uint16 PERINTFRC:1; // 3 Interrupt Force Bit (R=0/W=1)
+ /* Битовое поле PERINTCLR, ширина 1 бит; данные PERINTCLR. */
Uint16 PERINTCLR:1; // 4 Interrupt Clear Bit (R=0/W=1)
+ /* Битовое поле SYNCFRC, ширина 1 бит; данные SYNCFRC. */
Uint16 SYNCFRC:1; // 5 Sync Force Bit (R=0/W=1)
+ /* Битовое поле SYNCCLR, ширина 1 бит; данные SYNCCLR. */
Uint16 SYNCCLR:1; // 6 Sync Clear Bit (R=0/W=1)
+ /* Битовое поле ERRCLR, ширина 1 бит; данные ERRCLR. */
Uint16 ERRCLR:1; // 7 Error Clear Bit (R=0/W=1)
+ /* Битовое поле PERINTFLG, ширина 1 бит; данные PERINTFLG. */
Uint16 PERINTFLG:1; // 8 Interrupt Flag Bit (R):
// 0 no interrupt pending
// 1 interrupt pending
+ /* Битовое поле SYNCFLG, ширина 1 бит; данные SYNCFLG. */
Uint16 SYNCFLG:1; // 9 Sync Flag Bit (R):
// 0 no sync pending
// 1 sync pending
+ /* Битовое поле SYNCERR, ширина 1 бит; данные SYNCERR. */
Uint16 SYNCERR:1; // 10 Sync Error Flag Bit (R):
// 0 no sync error
// 1 sync error detected
+ /* Битовое поле TRANSFERSTS, ширина 1 бит; данные TRANSFERSTS. */
Uint16 TRANSFERSTS:1; // 11 Transfer Status Bit (R):
// 0 no transfer in progress or pending
// 1 transfer in progress or pending
+ /* Битовое поле BURSTSTS, ширина 1 бит; данные BURSTSTS. */
Uint16 BURSTSTS:1; // 12 Burst Status Bit (R):
// 0 no burst in progress or pending
// 1 burst in progress or pending
+ /* Битовое поле RUNSTS, ширина 1 бит; данные RUNSTS. */
Uint16 RUNSTS:1; // 13 Run Status Bit (R):
// 0 channel not running or halted
// 1 channel running
+ /* Битовое поле OVRFLG, ширина 1 бит; данные OVRFLG. */
Uint16 OVRFLG:1; // 14 Overflow Flag Bit(R)
// 0 no overflow event
// 1 overflow event
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 15 (R=0)
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений CONTROL_REG в одной области памяти. */
union CONTROL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру CONTROL_BITS bit;; порядок полей определяет расположение данных. */
struct CONTROL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// DMACTRL register bit definitions:
+/* Описывает структуру DMACTRL_BITS; порядок полей определяет расположение данных. */
struct DMACTRL_BITS { // bits description
+ /* Битовое поле HARDRESET, ширина 1 бит; данные HARDRESET. */
Uint16 HARDRESET:1; // 0 Hard Reset Bit (R=0/W=1)
+ /* Битовое поле PRIORITYRESET, ширина 1 бит; данные PRIORITYRESET. */
Uint16 PRIORITYRESET:1; // 1 Priority Reset Bit (R=0/W=1)
+ /* Битовое поле rsvd1, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:14; // 15:2 (R=0:0)
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений DMACTRL_REG в одной области памяти. */
union DMACTRL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру DMACTRL_BITS bit;; порядок полей определяет расположение данных. */
struct DMACTRL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// DEBUGCTRL register bit definitions:
+/* Описывает структуру DEBUGCTRL_BITS; порядок полей определяет расположение данных. */
struct DEBUGCTRL_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:15; // 14:0 (R=0:0)
+ /* Битовое поле FREE, ширина 1 бит; данные FREE. */
Uint16 FREE:1; // 15 Debug Mode Bit (R/W):
// 0 halt after current read-write operation
// 1 continue running
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений DEBUGCTRL_REG в одной области памяти. */
union DEBUGCTRL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру DEBUGCTRL_BITS bit;; порядок полей определяет расположение данных. */
struct DEBUGCTRL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// PRIORITYCTRL1 register bit definitions:
+/* Описывает структуру PRIORITYCTRL1_BITS; порядок полей определяет расположение данных. */
struct PRIORITYCTRL1_BITS { // bits description
+ /* Битовое поле CH1PRIORITY, ширина 1 бит; 1 приоритет. */
Uint16 CH1PRIORITY:1; // 0 Ch1 Priority Bit (R/W):
// 0 same priority as all other channels
// 1 highest priority channel
+ /* Битовое поле rsvd1, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:15; // 15:1 (R=0:0)
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PRIORITYCTRL1_REG в одной области памяти. */
union PRIORITYCTRL1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PRIORITYCTRL1_BITS bit;; порядок полей определяет расположение данных. */
struct PRIORITYCTRL1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// PRIORITYSTAT register bit definitions:
+/* Описывает структуру PRIORITYSTAT_BITS; порядок полей определяет расположение данных. */
struct PRIORITYSTAT_BITS { // bits description
+ /* Битовое поле ACTIVESTS, ширина 3 бит; данные ACTIVESTS. */
Uint16 ACTIVESTS:3; // 2:0 Active Channel Status Bits (R):
// 0,0,0 no channel active
// 0,0,1 Ch1 channel active
@@ -183,7 +255,9 @@ struct PRIORITYSTAT_BITS { // bits description
// 1,0,0 Ch4 channel active
// 1,0,1 Ch5 channel active
// 1,1,0 Ch6 channel active
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 3 (R=0)
+ /* Битовое поле ACTIVESTS_SHADOW, ширина 3 бит; данные ACTIVESTS_SHADOW. */
Uint16 ACTIVESTS_SHADOW:3; // 6:4 Active Channel Status Shadow Bits (R):
// 0,0,0 no channel active and interrupted by Ch1
// 0,0,1 cannot occur
@@ -192,102 +266,170 @@ struct PRIORITYSTAT_BITS { // bits description
// 1,0,0 Ch4 was active and interrupted by Ch1
// 1,0,1 Ch5 was active and interrupted by Ch1
// 1,1,0 Ch6 was active and interrupted by Ch1
+ /* Битовое поле rsvd2, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:9; // 15:7 (R=0:0)
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PRIORITYSTAT_REG в одной области памяти. */
union PRIORITYSTAT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PRIORITYSTAT_BITS bit;; порядок полей определяет расположение данных. */
struct PRIORITYSTAT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// Burst Size
+/* Описывает структуру BURST_SIZE_BITS; порядок полей определяет расположение данных. */
struct BURST_SIZE_BITS { // bits description
+ /* Битовое поле BURSTSIZE, ширина 5 бит; данные BURSTSIZE. */
Uint16 BURSTSIZE:5; // 4:0 Burst transfer size
+ /* Битовое поле rsvd1, ширина 11 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:11; // 15:5 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений BURST_SIZE_REG в одной области памяти. */
union BURST_SIZE_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру BURST_SIZE_BITS bit;; порядок полей определяет расположение данных. */
struct BURST_SIZE_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// Burst Count
+/* Описывает структуру BURST_COUNT_BITS; порядок полей определяет расположение данных. */
struct BURST_COUNT_BITS { // bits description
+ /* Битовое поле BURSTCOUNT, ширина 5 бит; данные BURSTCOUNT. */
Uint16 BURSTCOUNT:5; // 4:0 Burst transfer size
+ /* Битовое поле rsvd1, ширина 11 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:11; // 15:5 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений BURST_COUNT_REG в одной области памяти. */
union BURST_COUNT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру BURST_COUNT_BITS bit;; порядок полей определяет расположение данных. */
struct BURST_COUNT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// DMA Channel Registers:
+/* Описывает структуру CH_REGS; порядок полей определяет расположение данных. */
struct CH_REGS {
+ /* Объединяет несколько представлений MODE_REG MODE; в одной области памяти. */
union MODE_REG MODE; // Mode Register
+ /* Объединяет несколько представлений CONTROL_REG CONTROL; в одной области памяти. */
union CONTROL_REG CONTROL; // Control Register
+ /* Объединяет несколько представлений BURST_SIZE_REG BURST_SIZE; в одной области памяти. */
union BURST_SIZE_REG BURST_SIZE; // Burst Size Register
+ /* Объединяет несколько представлений BURST_COUNT_REG BURST_COUNT; в одной области памяти. */
union BURST_COUNT_REG BURST_COUNT; // Burst Count Register
+ /* Продолжает список аргументов, полей или выражение int16 SRC_BURST_STEP;; порядок элементов сохраняется. */
int16 SRC_BURST_STEP; // Source Burst Step Register
+ /* Продолжает список аргументов, полей или выражение int16 DST_BURST_STEP;; порядок элементов сохраняется. */
int16 DST_BURST_STEP; // Destination Burst Step Register
+ /* Объявляет TRANSFER_SIZE — TRANSFER размер. */
Uint16 TRANSFER_SIZE; // Transfer Size Register
+ /* Объявляет TRANSFER_COUNT — TRANSFER число. */
Uint16 TRANSFER_COUNT; // Transfer Count Register
+ /* Продолжает список аргументов, полей или выражение int16 SRC_TRANSFER_STEP;; порядок элементов сохраняется. */
int16 SRC_TRANSFER_STEP; // Source Transfer Step Register
+ /* Продолжает список аргументов, полей или выражение int16 DST_TRANSFER_STEP;; порядок элементов сохраняется. */
int16 DST_TRANSFER_STEP; // Destination Transfer Step Register
+ /* Объявляет SRC_WRAP_SIZE — SRC WRAP размер. */
Uint16 SRC_WRAP_SIZE; // Source Wrap Size Register
+ /* Объявляет SRC_WRAP_COUNT — SRC WRAP число. */
Uint16 SRC_WRAP_COUNT; // Source Wrap Count Register
+ /* Продолжает список аргументов, полей или выражение int16 SRC_WRAP_STEP;; порядок элементов сохраняется. */
int16 SRC_WRAP_STEP; // Source Wrap Step Register
+ /* Объявляет DST_WRAP_SIZE — DST WRAP размер. */
Uint16 DST_WRAP_SIZE; // Destination Wrap Size Register
+ /* Объявляет DST_WRAP_COUNT — DST WRAP число. */
Uint16 DST_WRAP_COUNT; // Destination Wrap Count Register
+ /* Продолжает список аргументов, полей или выражение int16 DST_WRAP_STEP;; порядок элементов сохраняется. */
int16 DST_WRAP_STEP; // Destination Wrap Step Register
+ /* Объявляет SRC_BEG_ADDR_SHADOW — данные SRC_BEG_ADDR_SHADOW. */
Uint32 SRC_BEG_ADDR_SHADOW; // Source Begin Address Shadow Register
+ /* Объявляет SRC_ADDR_SHADOW — данные SRC_ADDR_SHADOW. */
Uint32 SRC_ADDR_SHADOW; // Source Address Shadow Register
+ /* Объявляет SRC_BEG_ADDR_ACTIVE — данные SRC_BEG_ADDR_ACTIVE. */
Uint32 SRC_BEG_ADDR_ACTIVE; // Source Begin Address Active Register
+ /* Объявляет SRC_ADDR_ACTIVE — данные SRC_ADDR_ACTIVE. */
Uint32 SRC_ADDR_ACTIVE; // Source Address Active Register
+ /* Объявляет DST_BEG_ADDR_SHADOW — данные DST_BEG_ADDR_SHADOW. */
Uint32 DST_BEG_ADDR_SHADOW; // Destination Begin Address Shadow Register
+ /* Объявляет DST_ADDR_SHADOW — данные DST_ADDR_SHADOW. */
Uint32 DST_ADDR_SHADOW; // Destination Address Shadow Register
+ /* Объявляет DST_BEG_ADDR_ACTIVE — данные DST_BEG_ADDR_ACTIVE. */
Uint32 DST_BEG_ADDR_ACTIVE; // Destination Begin Address Active Register
+ /* Объявляет DST_ADDR_ACTIVE — данные DST_ADDR_ACTIVE. */
Uint32 DST_ADDR_ACTIVE; // Destination Address Active Register
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// DMA Registers:
+/* Описывает структуру DMA_REGS; порядок полей определяет расположение данных. */
struct DMA_REGS {
+ /* Объединяет несколько представлений DMACTRL_REG DMACTRL; в одной области памяти. */
union DMACTRL_REG DMACTRL; // DMA Control Register
+ /* Объединяет несколько представлений DEBUGCTRL_REG DEBUGCTRL; в одной области памяти. */
union DEBUGCTRL_REG DEBUGCTRL; // Debug Control Register
+ /* Объявляет rsvd0 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd0; // reserved
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; //
+ /* Объединяет несколько представлений PRIORITYCTRL1_REG PRIORITYCTRL1; в одной области памяти. */
union PRIORITYCTRL1_REG PRIORITYCTRL1; // Priority Control 1 Register
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2; //
+ /* Объединяет несколько представлений PRIORITYSTAT_REG PRIORITYSTAT; в одной области памяти. */
union PRIORITYSTAT_REG PRIORITYSTAT; // Priority Status Register
+ /* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3[25]; //
+ /* Описывает структуру CH_REGS CH1;; порядок полей определяет расположение данных. */
struct CH_REGS CH1; // DMA Channel 1 Registers
+ /* Описывает структуру CH_REGS CH2;; порядок полей определяет расположение данных. */
struct CH_REGS CH2; // DMA Channel 2 Registers
+ /* Описывает структуру CH_REGS CH3;; порядок полей определяет расположение данных. */
struct CH_REGS CH3; // DMA Channel 3 Registers
+ /* Описывает структуру CH_REGS CH4;; порядок полей определяет расположение данных. */
struct CH_REGS CH4; // DMA Channel 4 Registers
+ /* Описывает структуру CH_REGS CH5;; порядок полей определяет расположение данных. */
struct CH_REGS CH5; // DMA Channel 5 Registers
+ /* Описывает структуру CH_REGS CH6;; порядок полей определяет расположение данных. */
struct CH_REGS CH6; // DMA Channel 6 Registers
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct DMA_REGS DmaRegs;; порядок элементов сохраняется. */
extern volatile struct DMA_REGS DmaRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_DMA_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_DevEmu.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_DevEmu.h
index 3a765c6..68506f6 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_DevEmu.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_DevEmu.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание DevEmu для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/3 $
// Checkin $Date: June 2, 2008 11:12:30 $
//###########################################################################
@@ -11,71 +12,122 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_DEV_EMU_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DEV_EMU_H
+/* Определяет защитный символ или переключатель DSP2833x_DEV_EMU_H для последующей компиляции. */
#define DSP2833x_DEV_EMU_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//---------------------------------------------------------------------------
// Device Emulation Register Bit Definitions:
//
// Device Configuration Register Bit Definitions
+/* Описывает структуру DEVICECNF_BITS; порядок полей определяет расположение данных. */
struct DEVICECNF_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 2:0 reserved
+ /* Битовое поле VMAPS, ширина 1 бит; данные VMAPS. */
Uint16 VMAPS:1; // 3 VMAP Status
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 4 reserved
+ /* Битовое поле XRSn, ширина 1 бит; данные XRSn. */
Uint16 XRSn:1; // 5 XRSn Signal Status
+ /* Битовое поле rsvd3, ширина 10 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:10; // 15:6
+ /* Битовое поле rsvd4, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd4:3; // 18:16
+ /* Битовое поле ENPROT, ширина 1 бит; данные ENPROT. */
Uint16 ENPROT:1; // 19 Enable/Disable pipeline protection
+ /* Битовое поле MONPRIV, ширина 1 бит; данные MONPRIV. */
Uint16 MONPRIV:1; // 20 MONPRIV enable bit
+ /* Битовое поле rsvd5, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd5:1; // 21 reserved
+ /* Битовое поле EMU0SEL, ширина 2 бит; данные EMU0SEL. */
Uint16 EMU0SEL:2; // 23,22 EMU0 Mux select
+ /* Битовое поле EMU1SEL, ширина 2 бит; данные EMU1SEL. */
Uint16 EMU1SEL:2; // 25,24 EMU1 Mux select
+ /* Битовое поле MCBSPCON, ширина 1 бит; данные MCBSPCON. */
Uint16 MCBSPCON:1; // 26 McBSP-B to EMU0/EMU1 pins control
+ /* Битовое поле rsvd6, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd6:5; // 31:27 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений DEVICECNF_REG в одной области памяти. */
union DEVICECNF_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру DEVICECNF_BITS bit;; порядок полей определяет расположение данных. */
struct DEVICECNF_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// CLASSID
+/* Описывает структуру CLASSID_BITS; порядок полей определяет расположение данных. */
struct CLASSID_BITS { // bits description
+ /* Битовое поле CLASSNO, ширина 8 бит; данные CLASSNO. */
Uint16 CLASSNO:8; // 7:0 Class Number
+ /* Битовое поле PARTTYPE, ширина 8 бит; данные PARTTYPE. */
Uint16 PARTTYPE:8; // 15:8 Part Type
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений CLASSID_REG в одной области памяти. */
union CLASSID_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру CLASSID_BITS bit;; порядок полей определяет расположение данных. */
struct CLASSID_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру DEV_EMU_REGS; порядок полей определяет расположение данных. */
struct DEV_EMU_REGS {
+ /* Объединяет несколько представлений DEVICECNF_REG DEVICECNF; в одной области памяти. */
union DEVICECNF_REG DEVICECNF; // device configuration
+ /* Объединяет несколько представлений CLASSID_REG CLASSID; в одной области памяти. */
union CLASSID_REG CLASSID; // Class ID
+ /* Объявляет REVID — данные REVID. */
Uint16 REVID; // Device ID
+ /* Объявляет PROTSTART — данные PROTSTART. */
Uint16 PROTSTART; // Write-Read protection start
+ /* Объявляет PROTRANGE — данные PROTRANGE. */
Uint16 PROTRANGE; // Write-Read protection range
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2[202];
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// PARTID
+/* Описывает структуру PARTID_BITS; порядок полей определяет расположение данных. */
struct PARTID_BITS { // bits description
+ /* Битовое поле PARTNO, ширина 8 бит; данные PARTNO. */
Uint16 PARTNO:8; // 7:0 Part Number
+ /* Битовое поле PARTTYPE, ширина 8 бит; данные PARTTYPE. */
Uint16 PARTTYPE:8; // 15:8 Part Type
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PARTID_REG в одной области памяти. */
union PARTID_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PARTID_BITS bit;; порядок полей определяет расположение данных. */
struct PARTID_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру PARTID_REGS; порядок полей определяет расположение данных. */
struct PARTID_REGS {
+ /* Объединяет несколько представлений PARTID_REG PARTID; в одной области памяти. */
union PARTID_REG PARTID; // Part ID
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -83,13 +135,18 @@ struct PARTID_REGS {
//---------------------------------------------------------------------------
// Device Emulation Register References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct DEV_EMU_REGS DevEmuRegs;; порядок элементов сохраняется. */
extern volatile struct DEV_EMU_REGS DevEmuRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct PARTID_REGS PartIdRegs;; порядок элементов сохраняется. */
extern volatile struct PARTID_REGS PartIdRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_DEV_EMU_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h
index 0cf9a3b..008c8e5 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Device для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: January 22, 2008 16:55:35 $
//###########################################################################
@@ -11,21 +12,30 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_DEVICE_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DEVICE_H
+/* Определяет защитный символ или переключатель DSP2833x_DEVICE_H для последующей компиляции. */
#define DSP2833x_DEVICE_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт TARGET = 1; данные TARGET. */
#define TARGET 1
//---------------------------------------------------------------------------
// User To Select Target Device:
+/* Задаёт DSP28_28335 = TARGET; данные DSP28_28335. */
#define DSP28_28335 TARGET // Selects '28335/'28235
+/* Задаёт DSP28_28334 = 0; данные DSP28_28334. */
#define DSP28_28334 0 // Selects '28334/'28234
+/* Задаёт DSP28_28332 = 0; данные DSP28_28332. */
#define DSP28_28332 0 // Selects '28332/'28232
@@ -33,49 +43,90 @@ extern "C" {
// Common CPU Definitions:
//
+/* Продолжает список аргументов, полей или выражение extern cregister volatile unsigned int IFR;; порядок элементов сохраняется. */
extern cregister volatile unsigned int IFR;
+/* Продолжает список аргументов, полей или выражение extern cregister volatile unsigned int IER;; порядок элементов сохраняется. */
extern cregister volatile unsigned int IER;
+/* Задаёт EINT = asm(" clrc INTM"); разрешение маскируемых прерываний ядра. */
#define EINT asm(" clrc INTM")
+/* Задаёт DINT = asm(" setc INTM"); запрет маскируемых прерываний ядра. */
#define DINT asm(" setc INTM")
+/* Задаёт ERTM = asm(" clrc DBGM"); данные ERTM. */
#define ERTM asm(" clrc DBGM")
+/* Задаёт DRTM = asm(" setc DBGM"); данные DRTM. */
#define DRTM asm(" setc DBGM")
+/* Задаёт EALLOW = asm(" EALLOW"); разрешение записи в защищённые регистры периферии. */
#define EALLOW asm(" EALLOW")
+/* Задаёт EDIS = asm(" EDIS"); закрытие доступа к защищённым регистрам периферии. */
#define EDIS asm(" EDIS")
+/* Задаёт ESTOP0 = asm(" ESTOP0"); данные ESTOP0. */
#define ESTOP0 asm(" ESTOP0")
+/* Задаёт M_INT1 = 0x0001; данные M_INT1. */
#define M_INT1 0x0001
+/* Задаёт M_INT2 = 0x0002; данные M_INT2. */
#define M_INT2 0x0002
+/* Задаёт M_INT3 = 0x0004; данные M_INT3. */
#define M_INT3 0x0004
+/* Задаёт M_INT4 = 0x0008; данные M_INT4. */
#define M_INT4 0x0008
+/* Задаёт M_INT5 = 0x0010; данные M_INT5. */
#define M_INT5 0x0010
+/* Задаёт M_INT6 = 0x0020; данные M_INT6. */
#define M_INT6 0x0020
+/* Задаёт M_INT7 = 0x0040; данные M_INT7. */
#define M_INT7 0x0040
+/* Задаёт M_INT8 = 0x0080; данные M_INT8. */
#define M_INT8 0x0080
+/* Задаёт M_INT9 = 0x0100; данные M_INT9. */
#define M_INT9 0x0100
+/* Задаёт M_INT10 = 0x0200; данные M_INT10. */
#define M_INT10 0x0200
+/* Задаёт M_INT11 = 0x0400; данные M_INT11. */
#define M_INT11 0x0400
+/* Задаёт M_INT12 = 0x0800; данные M_INT12. */
#define M_INT12 0x0800
+/* Задаёт M_INT13 = 0x1000; данные M_INT13. */
#define M_INT13 0x1000
+/* Задаёт M_INT14 = 0x2000; данные M_INT14. */
#define M_INT14 0x2000
+/* Задаёт M_DLOG = 0x4000; данные M_DLOG. */
#define M_DLOG 0x4000
+/* Задаёт M_RTOS = 0x8000; данные M_RTOS. */
#define M_RTOS 0x8000
+/* Задаёт BIT0 = 0x0001; данные BIT0. */
#define BIT0 0x0001
+/* Задаёт BIT1 = 0x0002; данные BIT1. */
#define BIT1 0x0002
+/* Задаёт BIT2 = 0x0004; данные BIT2. */
#define BIT2 0x0004
+/* Задаёт BIT3 = 0x0008; данные BIT3. */
#define BIT3 0x0008
+/* Задаёт BIT4 = 0x0010; данные BIT4. */
#define BIT4 0x0010
+/* Задаёт BIT5 = 0x0020; данные BIT5. */
#define BIT5 0x0020
+/* Задаёт BIT6 = 0x0040; данные BIT6. */
#define BIT6 0x0040
+/* Задаёт BIT7 = 0x0080; данные BIT7. */
#define BIT7 0x0080
+/* Задаёт BIT8 = 0x0100; данные BIT8. */
#define BIT8 0x0100
+/* Задаёт BIT9 = 0x0200; данные BIT9. */
#define BIT9 0x0200
+/* Задаёт BIT10 = 0x0400; данные BIT10. */
#define BIT10 0x0400
+/* Задаёт BIT11 = 0x0800; данные BIT11. */
#define BIT11 0x0800
+/* Задаёт BIT12 = 0x1000; данные BIT12. */
#define BIT12 0x1000
+/* Задаёт BIT13 = 0x2000; данные BIT13. */
#define BIT13 0x2000
+/* Задаёт BIT14 = 0x4000; данные BIT14. */
#define BIT14 0x4000
+/* Задаёт BIT15 = 0x8000; данные BIT15. */
#define BIT15 0x8000
@@ -85,281 +136,517 @@ extern cregister volatile unsigned int IER;
// Definitions For 16-bit and 32-Bit Signed/Unsigned Integers:
//
+/* Начинает условие: DSP28_DATA_TYPES ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP28_DATA_TYPES
+/* Определяет защитный символ или переключатель DSP28_DATA_TYPES для последующей компиляции. */
#define DSP28_DATA_TYPES
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef int int16;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef long int32;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef long long int64;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned int Uint16;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned long Uint32;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned long long Uint64;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef float float32;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef long double float64;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef union
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- struct
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
+ struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле bit0, ширина 1 бит; бит 0. */
unsigned int bit0: 1;
+ /* Битовое поле bit1, ширина 1 бит; бит 1. */
unsigned int bit1: 1;
+ /* Битовое поле bit2, ширина 1 бит; бит 2. */
unsigned int bit2: 1;
+ /* Битовое поле bit3, ширина 1 бит; бит 3. */
unsigned int bit3: 1;
+ /* Битовое поле bit4, ширина 1 бит; бит 4. */
unsigned int bit4: 1;
+ /* Битовое поле bit5, ширина 1 бит; бит 5. */
unsigned int bit5: 1;
+ /* Битовое поле bit6, ширина 1 бит; бит 6. */
unsigned int bit6: 1;
+ /* Битовое поле bit7, ширина 1 бит; бит 7. */
unsigned int bit7: 1;
+ /* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
} bit;
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле quad_0, ширина 4 бит; данные quad_0. */
unsigned int quad_0 :4;
+ /* Битовое поле quad_1, ширина 4 бит; данные quad_1. */
unsigned int quad_1 :4;
+ /* Продолжает список аргументов, полей или выражение } qua;; порядок элементов сохраняется. */
} qua;
+ /* Продолжает список аргументов, полей или выражение unsigned short all;; порядок элементов сохраняется. */
unsigned short all;
-} BAITE;
+/* Продолжает список аргументов, полей или выражение } BAITE;; порядок элементов сохраняется. */
+} BAITE;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef union
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- struct
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
+ struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле bit0, ширина 1 бит; бит 0. */
unsigned int bit0: 1;
+ /* Битовое поле bit1, ширина 1 бит; бит 1. */
unsigned int bit1: 1;
+ /* Битовое поле bit2, ширина 1 бит; бит 2. */
unsigned int bit2: 1;
+ /* Битовое поле bit3, ширина 1 бит; бит 3. */
unsigned int bit3: 1;
+ /* Битовое поле bit4, ширина 1 бит; бит 4. */
unsigned int bit4: 1;
+ /* Битовое поле bit5, ширина 1 бит; бит 5. */
unsigned int bit5: 1;
+ /* Битовое поле bit6, ширина 1 бит; бит 6. */
unsigned int bit6: 1;
+ /* Битовое поле bit7, ширина 1 бит; бит 7. */
unsigned int bit7: 1;
+ /* Битовое поле bit8, ширина 1 бит; бит 8. */
unsigned int bit8: 1;
+ /* Битовое поле bit9, ширина 1 бит; бит 9. */
unsigned int bit9: 1;
+ /* Битовое поле bitA, ширина 1 бит; бит A. */
unsigned int bitA: 1;
+ /* Битовое поле bitB, ширина 1 бит; бит B. */
unsigned int bitB: 1;
+ /* Битовое поле bitC, ширина 1 бит; бит C. */
unsigned int bitC: 1;
+ /* Битовое поле bitD, ширина 1 бит; бит D. */
unsigned int bitD: 1;
+ /* Битовое поле bitE, ширина 1 бит; бит E. */
unsigned int bitE: 1;
+ /* Битовое поле bitF, ширина 1 бит; бит F. */
unsigned int bitF: 1;
+ /* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
} bit;
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле quad_0, ширина 4 бит; данные quad_0. */
unsigned int quad_0 :4;
+ /* Битовое поле quad_1, ширина 4 бит; данные quad_1. */
unsigned int quad_1 :4;
+ /* Битовое поле quad_2, ширина 4 бит; данные quad_2. */
unsigned int quad_2 :4;
+ /* Битовое поле quad_3, ширина 4 бит; данные quad_3. */
unsigned int quad_3 :4;
+ /* Продолжает список аргументов, полей или выражение } qua;; порядок элементов сохраняется. */
} qua;
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле byte_0, ширина 8 бит; данные byte_0. */
unsigned int byte_0 :8;
+ /* Битовое поле byte_1, ширина 8 бит; данные byte_1. */
unsigned int byte_1 :8;
+ /* Продолжает список аргументов, полей или выражение } byt;; порядок элементов сохраняется. */
} byt;
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
int all;
-} WORDE;
+/* Продолжает список аргументов, полей или выражение } WORDE;; порядок элементов сохраняется. */
+} WORDE;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef union
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- struct
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
+ struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле bit00, ширина 1 бит; бит 00. */
unsigned int bit00: 1;
+ /* Битовое поле bit01, ширина 1 бит; бит 01. */
unsigned int bit01: 1;
+ /* Битовое поле bit02, ширина 1 бит; бит 02. */
unsigned int bit02: 1;
+ /* Битовое поле bit03, ширина 1 бит; бит 03. */
unsigned int bit03: 1;
+ /* Битовое поле bit04, ширина 1 бит; бит 04. */
unsigned int bit04: 1;
+ /* Битовое поле bit05, ширина 1 бит; бит 05. */
unsigned int bit05: 1;
+ /* Битовое поле bit06, ширина 1 бит; бит 06. */
unsigned int bit06: 1;
+ /* Битовое поле bit07, ширина 1 бит; бит 07. */
unsigned int bit07: 1;
+ /* Битовое поле bit08, ширина 1 бит; бит 08. */
unsigned int bit08: 1;
+ /* Битовое поле bit09, ширина 1 бит; бит 09. */
unsigned int bit09: 1;
+ /* Битовое поле bit0A, ширина 1 бит; бит 0 A. */
unsigned int bit0A: 1;
+ /* Битовое поле bit0B, ширина 1 бит; бит 0 B. */
unsigned int bit0B: 1;
+ /* Битовое поле bit0C, ширина 1 бит; бит 0 C. */
unsigned int bit0C: 1;
+ /* Битовое поле bit0D, ширина 1 бит; бит 0 D. */
unsigned int bit0D: 1;
+ /* Битовое поле bit0E, ширина 1 бит; бит 0 E. */
unsigned int bit0E: 1;
+ /* Битовое поле bit0F, ширина 1 бит; бит 0 F. */
unsigned int bit0F: 1;
+ /* Битовое поле bit10, ширина 1 бит; бит 10. */
unsigned int bit10: 1;
+ /* Битовое поле bit11, ширина 1 бит; бит 11. */
unsigned int bit11: 1;
+ /* Битовое поле bit12, ширина 1 бит; бит 12. */
unsigned int bit12: 1;
+ /* Битовое поле bit13, ширина 1 бит; бит 13. */
unsigned int bit13: 1;
+ /* Битовое поле bit14, ширина 1 бит; бит 14. */
unsigned int bit14: 1;
+ /* Битовое поле bit15, ширина 1 бит; бит 15. */
unsigned int bit15: 1;
+ /* Битовое поле bit16, ширина 1 бит; бит 16. */
unsigned int bit16: 1;
+ /* Битовое поле bit17, ширина 1 бит; бит 17. */
unsigned int bit17: 1;
+ /* Битовое поле bit18, ширина 1 бит; бит 18. */
unsigned int bit18: 1;
+ /* Битовое поле bit19, ширина 1 бит; бит 19. */
unsigned int bit19: 1;
+ /* Битовое поле bit1A, ширина 1 бит; бит 1 A. */
unsigned int bit1A: 1;
+ /* Битовое поле bit1B, ширина 1 бит; бит 1 B. */
unsigned int bit1B: 1;
+ /* Битовое поле bit1C, ширина 1 бит; бит 1 C. */
unsigned int bit1C: 1;
+ /* Битовое поле bit1D, ширина 1 бит; бит 1 D. */
unsigned int bit1D: 1;
+ /* Битовое поле bit1E, ширина 1 бит; бит 1 E. */
unsigned int bit1E: 1;
+ /* Битовое поле bit1F, ширина 1 бит; бит 1 F. */
unsigned int bit1F: 1;
+ /* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
} bit;
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле quad_0, ширина 4 бит; данные quad_0. */
unsigned int quad_0 :4;
+ /* Битовое поле quad_1, ширина 4 бит; данные quad_1. */
unsigned int quad_1 :4;
+ /* Битовое поле quad_2, ширина 4 бит; данные quad_2. */
unsigned int quad_2 :4;
+ /* Битовое поле quad_3, ширина 4 бит; данные quad_3. */
unsigned int quad_3 :4;
+ /* Битовое поле quad_4, ширина 4 бит; данные quad_4. */
unsigned int quad_4 :4;
+ /* Битовое поле quad_5, ширина 4 бит; данные quad_5. */
unsigned int quad_5 :4;
+ /* Битовое поле quad_6, ширина 4 бит; данные quad_6. */
unsigned int quad_6 :4;
+ /* Битовое поле quad_7, ширина 4 бит; данные quad_7. */
unsigned int quad_7 :4;
+ /* Продолжает список аргументов, полей или выражение } qua;; порядок элементов сохраняется. */
} qua;
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле byte_0, ширина 8 бит; данные byte_0. */
unsigned int byte_0 :8;
+ /* Битовое поле byte_1, ширина 8 бит; данные byte_1. */
unsigned int byte_1 :8;
+ /* Битовое поле byte_2, ширина 8 бит; данные byte_2. */
unsigned int byte_2 :8;
+ /* Битовое поле byte_3, ширина 8 бит; данные byte_3. */
unsigned int byte_3 :8;
+ /* Продолжает список аргументов, полей или выражение } byt;; порядок элементов сохраняется. */
} byt;
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле word_0, ширина 16 бит; слово 0. */
unsigned int word_0 :16;
+ /* Битовое поле word_1, ширина 16 бит; слово 1. */
unsigned int word_1 :16;
+ /* Продолжает список аргументов, полей или выражение } wrd;; порядок элементов сохраняется. */
} wrd;
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
unsigned long all;
-} LONGE;
+/* Продолжает список аргументов, полей или выражение } LONGE;; порядок элементов сохраняется. */
+} LONGE;
+/* Задаёт XCLKIN = 30000000; данные XCLKIN. */
#define XCLKIN 30000000 // external oscillator frequency
+/* Объявляет SYSCLKOUT — данные SYSCLKOUT; LSPCLK — данные LSPCLK; HSPCLK — данные HSPCLK. Память определена в другом модуле. */
extern long SYSCLKOUT, LSPCLK, HSPCLK;
+/* Задаёт CLKMULT = 2L; данные CLKMULT. */
#define CLKMULT 2L // 1 to 5
+/* Задаёт LOWORD = int)( (long int)(l) &0xFFFF)); данные LOWORD. */
#define LOWORD(l)((short int)( (long int)(l) &0xFFFF))
+/* Задаёт HIWORD = int)(((long int)(l)>>16)&0xFFFF)); данные HIWORD. */
#define HIWORD(l)((short int)(((long int)(l)>>16)&0xFFFF))
+/* Задаёт LOBYTE = (short int)(w) &0xFF)); данные LOBYTE. */
#define LOBYTE(w)((char)( (short int)(w) &0xFF))
+/* Задаёт HIBYTE = int)(w)>>8)&0xFF)); данные HIBYTE. */
#define HIBYTE(w)((char)(((short int)(w)>>8)&0xFF))
+/* Задаёт BYTE3 = int)(l)>>24)&0xFF)); данные BYTE3. */
#define BYTE3(l)((char)(((long int)(l)>>24)&0xFF))
+/* Задаёт BYTE2 = int)(l)>>16)&0xFF)); данные BYTE2. */
#define BYTE2(l)((char)(((long int)(l)>>16)&0xFF))
+/* Задаёт BYTE1 = int)(l)>> 8)&0xFF)); данные BYTE1. */
#define BYTE1(l)((char)(((long int)(l)>> 8)&0xFF))
+/* Задаёт BYTE0 = (long int)(l) &0xFF)); данные BYTE0. */
#define BYTE0(l)((char)( (long int)(l) &0xFF))
//---------------------------------------------------------------------------
// Include All Peripheral Header Files:
//
+/* Подключает "DSP2833x_Adc.h": поставляемое TI описание Adc для семейства C2833x. */
#include "DSP2833x_Adc.h" // ADC Registers
+/* Подключает "DSP2833x_DevEmu.h": поставляемое TI описание DevEmu для семейства C2833x. */
#include "DSP2833x_DevEmu.h" // Device Emulation Registers
+/* Подключает "DSP2833x_CpuTimers.h": поставляемое TI описание CpuTimers для семейства C2833x. */
#include "DSP2833x_CpuTimers.h" // 32-bit CPU Timers
+/* Подключает "DSP2833x_ECan.h": поставляемое TI описание ECan для семейства C2833x. */
#include "DSP2833x_ECan.h" // Enhanced eCAN Registers
+/* Подключает "DSP2833x_ECap.h": поставляемое TI описание ECap для семейства C2833x. */
#include "DSP2833x_ECap.h" // Enhanced Capture
+/* Подключает "DSP2833x_DMA.h": поставляемое TI описание DMA для семейства C2833x. */
#include "DSP2833x_DMA.h" // DMA Registers
+/* Подключает "DSP2833x_EPwm.h": поставляемое TI описание EPwm для семейства C2833x. */
#include "DSP2833x_EPwm.h" // Enhanced PWM
+/* Подключает "DSP2833x_EQep.h": поставляемое TI описание EQep для семейства C2833x. */
#include "DSP2833x_EQep.h" // Enhanced QEP
+/* Подключает "DSP2833x_Gpio.h": поставляемое TI описание Gpio для семейства C2833x. */
#include "DSP2833x_Gpio.h" // General Purpose I/O Registers
+/* Подключает "DSP2833x_I2c.h": поставляемое TI описание I2c для семейства C2833x. */
#include "DSP2833x_I2c.h" // I2C Registers
+/* Подключает "DSP2833x_McBSP.h": поставляемое TI описание McBSP для семейства C2833x. */
#include "DSP2833x_McBSP.h" // McBSP
+/* Подключает "DSP2833x_PieCtrl.h": поставляемое TI описание PieCtrl для семейства C2833x. */
#include "DSP2833x_PieCtrl.h" // PIE Control Registers
+/* Подключает "DSP2833x_PieVect.h": поставляемое TI описание PieVect для семейства C2833x. */
#include "DSP2833x_PieVect.h" // PIE Vector Table
+/* Подключает "DSP2833x_Spi.h": поставляемое TI описание Spi для семейства C2833x. */
#include "DSP2833x_Spi.h" // SPI Registers
+/* Подключает "DSP2833x_Sci.h": поставляемое TI описание Sci для семейства C2833x. */
#include "DSP2833x_Sci.h" // SCI Registers
+/* Подключает "DSP2833x_SysCtrl.h": поставляемое TI описание SysCtrl для семейства C2833x. */
#include "DSP2833x_SysCtrl.h" // System Control/Power Modes
+/* Подключает "DSP2833x_XIntrupt.h": поставляемое TI описание XIntrupt для семейства C2833x. */
#include "DSP2833x_XIntrupt.h" // External Interrupts
+/* Подключает "DSP2833x_Xintf.h": поставляемое TI описание Xintf для семейства C2833x. */
#include "DSP2833x_Xintf.h" // XINTF External Interface
+/* Подключает "DSP2833x_GlobalPrototypes.h": поставляемое TI описание GlobalPrototypes для семейства C2833x. */
#include "DSP2833x_GlobalPrototypes.h" // Prototypes for global functions within the
+/* Условие компиляции DSP28_28335: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_28335
+/* Задаёт DSP28_EPWM1 = 1; данные DSP28_EPWM1. */
#define DSP28_EPWM1 1
+/* Задаёт DSP28_EPWM2 = 1; данные DSP28_EPWM2. */
#define DSP28_EPWM2 1
+/* Задаёт DSP28_EPWM3 = 1; данные DSP28_EPWM3. */
#define DSP28_EPWM3 1
+/* Задаёт DSP28_EPWM4 = 1; данные DSP28_EPWM4. */
#define DSP28_EPWM4 1
+/* Задаёт DSP28_EPWM5 = 1; данные DSP28_EPWM5. */
#define DSP28_EPWM5 1
+/* Задаёт DSP28_EPWM6 = 1; данные DSP28_EPWM6. */
#define DSP28_EPWM6 1
+/* Задаёт DSP28_ECAP1 = 1; данные DSP28_ECAP1. */
#define DSP28_ECAP1 1
+/* Задаёт DSP28_ECAP2 = 1; данные DSP28_ECAP2. */
#define DSP28_ECAP2 1
+/* Задаёт DSP28_ECAP3 = 1; данные DSP28_ECAP3. */
#define DSP28_ECAP3 1
+/* Задаёт DSP28_ECAP4 = 1; данные DSP28_ECAP4. */
#define DSP28_ECAP4 1
+/* Задаёт DSP28_ECAP5 = 1; данные DSP28_ECAP5. */
#define DSP28_ECAP5 1
+/* Задаёт DSP28_ECAP6 = 1; данные DSP28_ECAP6. */
#define DSP28_ECAP6 1
+/* Задаёт DSP28_EQEP1 = 1; данные DSP28_EQEP1. */
#define DSP28_EQEP1 1
+/* Задаёт DSP28_EQEP2 = 1; данные DSP28_EQEP2. */
#define DSP28_EQEP2 1
+/* Задаёт DSP28_ECANA = 1; данные DSP28_ECANA. */
#define DSP28_ECANA 1
+/* Задаёт DSP28_ECANB = 1; данные DSP28_ECANB. */
#define DSP28_ECANB 1
+/* Задаёт DSP28_MCBSPA = 1; данные DSP28_MCBSPA. */
#define DSP28_MCBSPA 1
+/* Задаёт DSP28_MCBSPB = 1; данные DSP28_MCBSPB. */
#define DSP28_MCBSPB 1
+/* Задаёт DSP28_SPIA = 1; данные DSP28_SPIA. */
#define DSP28_SPIA 1
+/* Задаёт DSP28_SCIA = 1; данные DSP28_SCIA. */
#define DSP28_SCIA 1
+/* Задаёт DSP28_SCIB = 1; данные DSP28_SCIB. */
#define DSP28_SCIB 1
+/* Задаёт DSP28_SCIC = 1; данные DSP28_SCIC. */
#define DSP28_SCIC 1
+/* Задаёт DSP28_I2CA = 1; данные DSP28_I2CA. */
#define DSP28_I2CA 1
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end DSP28_28335
+/* Условие компиляции DSP28_28334: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_28334
+/* Задаёт DSP28_EPWM1 = 1; данные DSP28_EPWM1. */
#define DSP28_EPWM1 1
+/* Задаёт DSP28_EPWM2 = 1; данные DSP28_EPWM2. */
#define DSP28_EPWM2 1
+/* Задаёт DSP28_EPWM3 = 1; данные DSP28_EPWM3. */
#define DSP28_EPWM3 1
+/* Задаёт DSP28_EPWM4 = 1; данные DSP28_EPWM4. */
#define DSP28_EPWM4 1
+/* Задаёт DSP28_EPWM5 = 1; данные DSP28_EPWM5. */
#define DSP28_EPWM5 1
+/* Задаёт DSP28_EPWM6 = 1; данные DSP28_EPWM6. */
#define DSP28_EPWM6 1
+/* Задаёт DSP28_ECAP1 = 1; данные DSP28_ECAP1. */
#define DSP28_ECAP1 1
+/* Задаёт DSP28_ECAP2 = 1; данные DSP28_ECAP2. */
#define DSP28_ECAP2 1
+/* Задаёт DSP28_ECAP3 = 1; данные DSP28_ECAP3. */
#define DSP28_ECAP3 1
+/* Задаёт DSP28_ECAP4 = 1; данные DSP28_ECAP4. */
#define DSP28_ECAP4 1
+/* Задаёт DSP28_ECAP5 = 0; данные DSP28_ECAP5. */
#define DSP28_ECAP5 0
+/* Задаёт DSP28_ECAP6 = 0; данные DSP28_ECAP6. */
#define DSP28_ECAP6 0
+/* Задаёт DSP28_EQEP1 = 1; данные DSP28_EQEP1. */
#define DSP28_EQEP1 1
+/* Задаёт DSP28_EQEP2 = 1; данные DSP28_EQEP2. */
#define DSP28_EQEP2 1
+/* Задаёт DSP28_ECANA = 1; данные DSP28_ECANA. */
#define DSP28_ECANA 1
+/* Задаёт DSP28_ECANB = 1; данные DSP28_ECANB. */
#define DSP28_ECANB 1
+/* Задаёт DSP28_MCBSPA = 1; данные DSP28_MCBSPA. */
#define DSP28_MCBSPA 1
+/* Задаёт DSP28_MCBSPB = 1; данные DSP28_MCBSPB. */
#define DSP28_MCBSPB 1
+/* Задаёт DSP28_SPIA = 1; данные DSP28_SPIA. */
#define DSP28_SPIA 1
+/* Задаёт DSP28_SCIA = 1; данные DSP28_SCIA. */
#define DSP28_SCIA 1
+/* Задаёт DSP28_SCIB = 1; данные DSP28_SCIB. */
#define DSP28_SCIB 1
+/* Задаёт DSP28_SCIC = 1; данные DSP28_SCIC. */
#define DSP28_SCIC 1
+/* Задаёт DSP28_I2CA = 1; данные DSP28_I2CA. */
#define DSP28_I2CA 1
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end DSP28_28334
+/* Условие компиляции DSP28_28332: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_28332
+/* Задаёт DSP28_EPWM1 = 1; данные DSP28_EPWM1. */
#define DSP28_EPWM1 1
+/* Задаёт DSP28_EPWM2 = 1; данные DSP28_EPWM2. */
#define DSP28_EPWM2 1
+/* Задаёт DSP28_EPWM3 = 1; данные DSP28_EPWM3. */
#define DSP28_EPWM3 1
+/* Задаёт DSP28_EPWM4 = 1; данные DSP28_EPWM4. */
#define DSP28_EPWM4 1
+/* Задаёт DSP28_EPWM5 = 1; данные DSP28_EPWM5. */
#define DSP28_EPWM5 1
+/* Задаёт DSP28_EPWM6 = 1; данные DSP28_EPWM6. */
#define DSP28_EPWM6 1
+/* Задаёт DSP28_ECAP1 = 1; данные DSP28_ECAP1. */
#define DSP28_ECAP1 1
+/* Задаёт DSP28_ECAP2 = 1; данные DSP28_ECAP2. */
#define DSP28_ECAP2 1
+/* Задаёт DSP28_ECAP3 = 1; данные DSP28_ECAP3. */
#define DSP28_ECAP3 1
+/* Задаёт DSP28_ECAP4 = 1; данные DSP28_ECAP4. */
#define DSP28_ECAP4 1
+/* Задаёт DSP28_ECAP5 = 0; данные DSP28_ECAP5. */
#define DSP28_ECAP5 0
+/* Задаёт DSP28_ECAP6 = 0; данные DSP28_ECAP6. */
#define DSP28_ECAP6 0
+/* Задаёт DSP28_EQEP1 = 1; данные DSP28_EQEP1. */
#define DSP28_EQEP1 1
+/* Задаёт DSP28_EQEP2 = 1; данные DSP28_EQEP2. */
#define DSP28_EQEP2 1
+/* Задаёт DSP28_ECANA = 1; данные DSP28_ECANA. */
#define DSP28_ECANA 1
+/* Задаёт DSP28_ECANB = 1; данные DSP28_ECANB. */
#define DSP28_ECANB 1
+/* Задаёт DSP28_MCBSPA = 1; данные DSP28_MCBSPA. */
#define DSP28_MCBSPA 1
+/* Задаёт DSP28_MCBSPB = 0; данные DSP28_MCBSPB. */
#define DSP28_MCBSPB 0
+/* Задаёт DSP28_SPIA = 1; данные DSP28_SPIA. */
#define DSP28_SPIA 1
+/* Задаёт DSP28_SCIA = 1; данные DSP28_SCIA. */
#define DSP28_SCIA 1
+/* Задаёт DSP28_SCIB = 1; данные DSP28_SCIB. */
#define DSP28_SCIB 1
+/* Задаёт DSP28_SCIC = 0; данные DSP28_SCIC. */
#define DSP28_SCIC 0
+/* Задаёт DSP28_I2CA = 1; данные DSP28_I2CA. */
#define DSP28_I2CA 1
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end DSP28_28332
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_DEVICE_H definition
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_ECan.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_ECan.h
index 65988ca..a610c51 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_ECan.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_ECan.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание ECan для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: May 7, 2007 16:05:39 $
//###########################################################################
@@ -11,12 +12,17 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_ECAN_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_ECAN_H
+/* Определяет защитный символ или переключатель DSP2833x_ECAN_H для последующей компиляции. */
#define DSP2833x_ECAN_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -25,854 +31,1577 @@ extern "C" {
/* ----------------------------------------------------*/
/* eCAN Mailbox enable register (CANME) bit definitions */
+/* Описывает структуру CANME_BITS; порядок полей определяет расположение данных. */
struct CANME_BITS { // bit description
+ /* Битовое поле ME0, ширина 1 бит; данные ME0. */
Uint16 ME0:1; // 0 Enable Mailbox 0
+ /* Битовое поле ME1, ширина 1 бит; данные ME1. */
Uint16 ME1:1; // 1 Enable Mailbox 1
+ /* Битовое поле ME2, ширина 1 бит; данные ME2. */
Uint16 ME2:1; // 2 Enable Mailbox 2
+ /* Битовое поле ME3, ширина 1 бит; данные ME3. */
Uint16 ME3:1; // 3 Enable Mailbox 3
+ /* Битовое поле ME4, ширина 1 бит; данные ME4. */
Uint16 ME4:1; // 4 Enable Mailbox 4
+ /* Битовое поле ME5, ширина 1 бит; данные ME5. */
Uint16 ME5:1; // 5 Enable Mailbox 5
+ /* Битовое поле ME6, ширина 1 бит; данные ME6. */
Uint16 ME6:1; // 6 Enable Mailbox 6
+ /* Битовое поле ME7, ширина 1 бит; данные ME7. */
Uint16 ME7:1; // 7 Enable Mailbox 7
+ /* Битовое поле ME8, ширина 1 бит; данные ME8. */
Uint16 ME8:1; // 8 Enable Mailbox 8
+ /* Битовое поле ME9, ширина 1 бит; данные ME9. */
Uint16 ME9:1; // 9 Enable Mailbox 9
+ /* Битовое поле ME10, ширина 1 бит; данные ME10. */
Uint16 ME10:1; // 10 Enable Mailbox 10
+ /* Битовое поле ME11, ширина 1 бит; данные ME11. */
Uint16 ME11:1; // 11 Enable Mailbox 11
+ /* Битовое поле ME12, ширина 1 бит; данные ME12. */
Uint16 ME12:1; // 12 Enable Mailbox 12
+ /* Битовое поле ME13, ширина 1 бит; данные ME13. */
Uint16 ME13:1; // 13 Enable Mailbox 13
+ /* Битовое поле ME14, ширина 1 бит; данные ME14. */
Uint16 ME14:1; // 14 Enable Mailbox 14
+ /* Битовое поле ME15, ширина 1 бит; данные ME15. */
Uint16 ME15:1; // 15 Enable Mailbox 15
+ /* Битовое поле ME16, ширина 1 бит; данные ME16. */
Uint16 ME16:1; // 16 Enable Mailbox 16
+ /* Битовое поле ME17, ширина 1 бит; данные ME17. */
Uint16 ME17:1; // 17 Enable Mailbox 17
+ /* Битовое поле ME18, ширина 1 бит; данные ME18. */
Uint16 ME18:1; // 18 Enable Mailbox 18
+ /* Битовое поле ME19, ширина 1 бит; данные ME19. */
Uint16 ME19:1; // 19 Enable Mailbox 19
+ /* Битовое поле ME20, ширина 1 бит; данные ME20. */
Uint16 ME20:1; // 20 Enable Mailbox 20
+ /* Битовое поле ME21, ширина 1 бит; данные ME21. */
Uint16 ME21:1; // 21 Enable Mailbox 21
+ /* Битовое поле ME22, ширина 1 бит; данные ME22. */
Uint16 ME22:1; // 22 Enable Mailbox 22
+ /* Битовое поле ME23, ширина 1 бит; данные ME23. */
Uint16 ME23:1; // 23 Enable Mailbox 23
+ /* Битовое поле ME24, ширина 1 бит; данные ME24. */
Uint16 ME24:1; // 24 Enable Mailbox 24
+ /* Битовое поле ME25, ширина 1 бит; данные ME25. */
Uint16 ME25:1; // 25 Enable Mailbox 25
+ /* Битовое поле ME26, ширина 1 бит; данные ME26. */
Uint16 ME26:1; // 26 Enable Mailbox 26
+ /* Битовое поле ME27, ширина 1 бит; данные ME27. */
Uint16 ME27:1; // 27 Enable Mailbox 27
+ /* Битовое поле ME28, ширина 1 бит; данные ME28. */
Uint16 ME28:1; // 28 Enable Mailbox 28
+ /* Битовое поле ME29, ширина 1 бит; данные ME29. */
Uint16 ME29:1; // 29 Enable Mailbox 29
+ /* Битовое поле ME30, ширина 1 бит; данные ME30. */
Uint16 ME30:1; // 30 Enable Mailbox 30
+ /* Битовое поле ME31, ширина 1 бит; данные ME31. */
Uint16 ME31:1; // 31 Enable Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANME_REG в одной области памяти. */
union CANME_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANME_BITS bit;; порядок полей определяет расположение данных. */
struct CANME_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Mailbox direction register (CANMD) bit definitions */
+/* Описывает структуру CANMD_BITS; порядок полей определяет расположение данных. */
struct CANMD_BITS { // bit description
+ /* Битовое поле MD0, ширина 1 бит; данные MD0. */
Uint16 MD0:1; // 0 0 -> Tx 1 -> Rx
+ /* Битовое поле MD1, ширина 1 бит; данные MD1. */
Uint16 MD1:1; // 1 0 -> Tx 1 -> Rx
+ /* Битовое поле MD2, ширина 1 бит; данные MD2. */
Uint16 MD2:1; // 2 0 -> Tx 1 -> Rx
+ /* Битовое поле MD3, ширина 1 бит; данные MD3. */
Uint16 MD3:1; // 3 0 -> Tx 1 -> Rx
+ /* Битовое поле MD4, ширина 1 бит; данные MD4. */
Uint16 MD4:1; // 4 0 -> Tx 1 -> Rx
+ /* Битовое поле MD5, ширина 1 бит; данные MD5. */
Uint16 MD5:1; // 5 0 -> Tx 1 -> Rx
+ /* Битовое поле MD6, ширина 1 бит; данные MD6. */
Uint16 MD6:1; // 6 0 -> Tx 1 -> Rx
+ /* Битовое поле MD7, ширина 1 бит; данные MD7. */
Uint16 MD7:1; // 7 0 -> Tx 1 -> Rx
+ /* Битовое поле MD8, ширина 1 бит; данные MD8. */
Uint16 MD8:1; // 8 0 -> Tx 1 -> Rx
+ /* Битовое поле MD9, ширина 1 бит; данные MD9. */
Uint16 MD9:1; // 9 0 -> Tx 1 -> Rx
+ /* Битовое поле MD10, ширина 1 бит; данные MD10. */
Uint16 MD10:1; // 10 0 -> Tx 1 -> Rx
+ /* Битовое поле MD11, ширина 1 бит; данные MD11. */
Uint16 MD11:1; // 11 0 -> Tx 1 -> Rx
+ /* Битовое поле MD12, ширина 1 бит; данные MD12. */
Uint16 MD12:1; // 12 0 -> Tx 1 -> Rx
+ /* Битовое поле MD13, ширина 1 бит; данные MD13. */
Uint16 MD13:1; // 13 0 -> Tx 1 -> Rx
+ /* Битовое поле MD14, ширина 1 бит; данные MD14. */
Uint16 MD14:1; // 14 0 -> Tx 1 -> Rx
+ /* Битовое поле MD15, ширина 1 бит; данные MD15. */
Uint16 MD15:1; // 15 0 -> Tx 1 -> Rx
+ /* Битовое поле MD16, ширина 1 бит; данные MD16. */
Uint16 MD16:1; // 16 0 -> Tx 1 -> Rx
+ /* Битовое поле MD17, ширина 1 бит; данные MD17. */
Uint16 MD17:1; // 17 0 -> Tx 1 -> Rx
+ /* Битовое поле MD18, ширина 1 бит; данные MD18. */
Uint16 MD18:1; // 18 0 -> Tx 1 -> Rx
+ /* Битовое поле MD19, ширина 1 бит; данные MD19. */
Uint16 MD19:1; // 19 0 -> Tx 1 -> Rx
+ /* Битовое поле MD20, ширина 1 бит; данные MD20. */
Uint16 MD20:1; // 20 0 -> Tx 1 -> Rx
+ /* Битовое поле MD21, ширина 1 бит; данные MD21. */
Uint16 MD21:1; // 21 0 -> Tx 1 -> Rx
+ /* Битовое поле MD22, ширина 1 бит; данные MD22. */
Uint16 MD22:1; // 22 0 -> Tx 1 -> Rx
+ /* Битовое поле MD23, ширина 1 бит; данные MD23. */
Uint16 MD23:1; // 23 0 -> Tx 1 -> Rx
+ /* Битовое поле MD24, ширина 1 бит; данные MD24. */
Uint16 MD24:1; // 24 0 -> Tx 1 -> Rx
+ /* Битовое поле MD25, ширина 1 бит; данные MD25. */
Uint16 MD25:1; // 25 0 -> Tx 1 -> Rx
+ /* Битовое поле MD26, ширина 1 бит; данные MD26. */
Uint16 MD26:1; // 26 0 -> Tx 1 -> Rx
+ /* Битовое поле MD27, ширина 1 бит; данные MD27. */
Uint16 MD27:1; // 27 0 -> Tx 1 -> Rx
+ /* Битовое поле MD28, ширина 1 бит; данные MD28. */
Uint16 MD28:1; // 28 0 -> Tx 1 -> Rx
+ /* Битовое поле MD29, ширина 1 бит; данные MD29. */
Uint16 MD29:1; // 29 0 -> Tx 1 -> Rx
+ /* Битовое поле MD30, ширина 1 бит; данные MD30. */
Uint16 MD30:1; // 30 0 -> Tx 1 -> Rx
+ /* Битовое поле MD31, ширина 1 бит; данные MD31. */
Uint16 MD31:1; // 31 0 -> Tx 1 -> Rx
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANMD_REG в одной области памяти. */
union CANMD_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANMD_BITS bit;; порядок полей определяет расположение данных. */
struct CANMD_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Transmit Request Set register (CANTRS) bit definitions */
+/* Описывает структуру CANTRS_BITS; порядок полей определяет расположение данных. */
struct CANTRS_BITS { // bit description
+ /* Битовое поле TRS0, ширина 1 бит; данные TRS0. */
Uint16 TRS0:1; // 0 TRS for Mailbox 0
+ /* Битовое поле TRS1, ширина 1 бит; данные TRS1. */
Uint16 TRS1:1; // 1 TRS for Mailbox 1
+ /* Битовое поле TRS2, ширина 1 бит; данные TRS2. */
Uint16 TRS2:1; // 2 TRS for Mailbox 2
+ /* Битовое поле TRS3, ширина 1 бит; данные TRS3. */
Uint16 TRS3:1; // 3 TRS for Mailbox 3
+ /* Битовое поле TRS4, ширина 1 бит; данные TRS4. */
Uint16 TRS4:1; // 4 TRS for Mailbox 4
+ /* Битовое поле TRS5, ширина 1 бит; данные TRS5. */
Uint16 TRS5:1; // 5 TRS for Mailbox 5
+ /* Битовое поле TRS6, ширина 1 бит; данные TRS6. */
Uint16 TRS6:1; // 6 TRS for Mailbox 6
+ /* Битовое поле TRS7, ширина 1 бит; данные TRS7. */
Uint16 TRS7:1; // 7 TRS for Mailbox 7
+ /* Битовое поле TRS8, ширина 1 бит; данные TRS8. */
Uint16 TRS8:1; // 8 TRS for Mailbox 8
+ /* Битовое поле TRS9, ширина 1 бит; данные TRS9. */
Uint16 TRS9:1; // 9 TRS for Mailbox 9
+ /* Битовое поле TRS10, ширина 1 бит; данные TRS10. */
Uint16 TRS10:1; // 10 TRS for Mailbox 10
+ /* Битовое поле TRS11, ширина 1 бит; данные TRS11. */
Uint16 TRS11:1; // 11 TRS for Mailbox 11
+ /* Битовое поле TRS12, ширина 1 бит; данные TRS12. */
Uint16 TRS12:1; // 12 TRS for Mailbox 12
+ /* Битовое поле TRS13, ширина 1 бит; данные TRS13. */
Uint16 TRS13:1; // 13 TRS for Mailbox 13
+ /* Битовое поле TRS14, ширина 1 бит; данные TRS14. */
Uint16 TRS14:1; // 14 TRS for Mailbox 14
+ /* Битовое поле TRS15, ширина 1 бит; данные TRS15. */
Uint16 TRS15:1; // 15 TRS for Mailbox 15
+ /* Битовое поле TRS16, ширина 1 бит; данные TRS16. */
Uint16 TRS16:1; // 16 TRS for Mailbox 16
+ /* Битовое поле TRS17, ширина 1 бит; данные TRS17. */
Uint16 TRS17:1; // 17 TRS for Mailbox 17
+ /* Битовое поле TRS18, ширина 1 бит; данные TRS18. */
Uint16 TRS18:1; // 18 TRS for Mailbox 18
+ /* Битовое поле TRS19, ширина 1 бит; данные TRS19. */
Uint16 TRS19:1; // 19 TRS for Mailbox 19
+ /* Битовое поле TRS20, ширина 1 бит; данные TRS20. */
Uint16 TRS20:1; // 20 TRS for Mailbox 20
+ /* Битовое поле TRS21, ширина 1 бит; данные TRS21. */
Uint16 TRS21:1; // 21 TRS for Mailbox 21
+ /* Битовое поле TRS22, ширина 1 бит; данные TRS22. */
Uint16 TRS22:1; // 22 TRS for Mailbox 22
+ /* Битовое поле TRS23, ширина 1 бит; данные TRS23. */
Uint16 TRS23:1; // 23 TRS for Mailbox 23
+ /* Битовое поле TRS24, ширина 1 бит; данные TRS24. */
Uint16 TRS24:1; // 24 TRS for Mailbox 24
+ /* Битовое поле TRS25, ширина 1 бит; данные TRS25. */
Uint16 TRS25:1; // 25 TRS for Mailbox 25
+ /* Битовое поле TRS26, ширина 1 бит; данные TRS26. */
Uint16 TRS26:1; // 26 TRS for Mailbox 26
+ /* Битовое поле TRS27, ширина 1 бит; данные TRS27. */
Uint16 TRS27:1; // 27 TRS for Mailbox 27
+ /* Битовое поле TRS28, ширина 1 бит; данные TRS28. */
Uint16 TRS28:1; // 28 TRS for Mailbox 28
+ /* Битовое поле TRS29, ширина 1 бит; данные TRS29. */
Uint16 TRS29:1; // 29 TRS for Mailbox 29
+ /* Битовое поле TRS30, ширина 1 бит; данные TRS30. */
Uint16 TRS30:1; // 30 TRS for Mailbox 30
+ /* Битовое поле TRS31, ширина 1 бит; данные TRS31. */
Uint16 TRS31:1; // 31 TRS for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANTRS_REG в одной области памяти. */
union CANTRS_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANTRS_BITS bit;; порядок полей определяет расположение данных. */
struct CANTRS_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Transmit Request Reset register (CANTRR) bit definitions */
+/* Описывает структуру CANTRR_BITS; порядок полей определяет расположение данных. */
struct CANTRR_BITS { // bit description
+ /* Битовое поле TRR0, ширина 1 бит; данные TRR0. */
Uint16 TRR0:1; // 0 TRR for Mailbox 0
+ /* Битовое поле TRR1, ширина 1 бит; данные TRR1. */
Uint16 TRR1:1; // 1 TRR for Mailbox 1
+ /* Битовое поле TRR2, ширина 1 бит; данные TRR2. */
Uint16 TRR2:1; // 2 TRR for Mailbox 2
+ /* Битовое поле TRR3, ширина 1 бит; данные TRR3. */
Uint16 TRR3:1; // 3 TRR for Mailbox 3
+ /* Битовое поле TRR4, ширина 1 бит; данные TRR4. */
Uint16 TRR4:1; // 4 TRR for Mailbox 4
+ /* Битовое поле TRR5, ширина 1 бит; данные TRR5. */
Uint16 TRR5:1; // 5 TRR for Mailbox 5
+ /* Битовое поле TRR6, ширина 1 бит; данные TRR6. */
Uint16 TRR6:1; // 6 TRR for Mailbox 6
+ /* Битовое поле TRR7, ширина 1 бит; данные TRR7. */
Uint16 TRR7:1; // 7 TRR for Mailbox 7
+ /* Битовое поле TRR8, ширина 1 бит; данные TRR8. */
Uint16 TRR8:1; // 8 TRR for Mailbox 8
+ /* Битовое поле TRR9, ширина 1 бит; данные TRR9. */
Uint16 TRR9:1; // 9 TRR for Mailbox 9
+ /* Битовое поле TRR10, ширина 1 бит; данные TRR10. */
Uint16 TRR10:1; // 10 TRR for Mailbox 10
+ /* Битовое поле TRR11, ширина 1 бит; данные TRR11. */
Uint16 TRR11:1; // 11 TRR for Mailbox 11
+ /* Битовое поле TRR12, ширина 1 бит; данные TRR12. */
Uint16 TRR12:1; // 12 TRR for Mailbox 12
+ /* Битовое поле TRR13, ширина 1 бит; данные TRR13. */
Uint16 TRR13:1; // 13 TRR for Mailbox 13
+ /* Битовое поле TRR14, ширина 1 бит; данные TRR14. */
Uint16 TRR14:1; // 14 TRR for Mailbox 14
+ /* Битовое поле TRR15, ширина 1 бит; данные TRR15. */
Uint16 TRR15:1; // 15 TRR for Mailbox 15
+ /* Битовое поле TRR16, ширина 1 бит; данные TRR16. */
Uint16 TRR16:1; // 16 TRR for Mailbox 16
+ /* Битовое поле TRR17, ширина 1 бит; данные TRR17. */
Uint16 TRR17:1; // 17 TRR for Mailbox 17
+ /* Битовое поле TRR18, ширина 1 бит; данные TRR18. */
Uint16 TRR18:1; // 18 TRR for Mailbox 18
+ /* Битовое поле TRR19, ширина 1 бит; данные TRR19. */
Uint16 TRR19:1; // 19 TRR for Mailbox 19
+ /* Битовое поле TRR20, ширина 1 бит; данные TRR20. */
Uint16 TRR20:1; // 20 TRR for Mailbox 20
+ /* Битовое поле TRR21, ширина 1 бит; данные TRR21. */
Uint16 TRR21:1; // 21 TRR for Mailbox 21
+ /* Битовое поле TRR22, ширина 1 бит; данные TRR22. */
Uint16 TRR22:1; // 22 TRR for Mailbox 22
+ /* Битовое поле TRR23, ширина 1 бит; данные TRR23. */
Uint16 TRR23:1; // 23 TRR for Mailbox 23
+ /* Битовое поле TRR24, ширина 1 бит; данные TRR24. */
Uint16 TRR24:1; // 24 TRR for Mailbox 24
+ /* Битовое поле TRR25, ширина 1 бит; данные TRR25. */
Uint16 TRR25:1; // 25 TRR for Mailbox 25
+ /* Битовое поле TRR26, ширина 1 бит; данные TRR26. */
Uint16 TRR26:1; // 26 TRR for Mailbox 26
+ /* Битовое поле TRR27, ширина 1 бит; данные TRR27. */
Uint16 TRR27:1; // 27 TRR for Mailbox 27
+ /* Битовое поле TRR28, ширина 1 бит; данные TRR28. */
Uint16 TRR28:1; // 28 TRR for Mailbox 28
+ /* Битовое поле TRR29, ширина 1 бит; данные TRR29. */
Uint16 TRR29:1; // 29 TRR for Mailbox 29
+ /* Битовое поле TRR30, ширина 1 бит; данные TRR30. */
Uint16 TRR30:1; // 30 TRR for Mailbox 30
+ /* Битовое поле TRR31, ширина 1 бит; данные TRR31. */
Uint16 TRR31:1; // 31 TRR for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANTRR_REG в одной области памяти. */
union CANTRR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANTRR_BITS bit;; порядок полей определяет расположение данных. */
struct CANTRR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Transmit Acknowledge register (CANTA) bit definitions */
+/* Описывает структуру CANTA_BITS; порядок полей определяет расположение данных. */
struct CANTA_BITS { // bit description
+ /* Битовое поле TA0, ширина 1 бит; данные TA0. */
Uint16 TA0:1; // 0 TA for Mailbox 0
+ /* Битовое поле TA1, ширина 1 бит; данные TA1. */
Uint16 TA1:1; // 1 TA for Mailbox 1
+ /* Битовое поле TA2, ширина 1 бит; данные TA2. */
Uint16 TA2:1; // 2 TA for Mailbox 2
+ /* Битовое поле TA3, ширина 1 бит; данные TA3. */
Uint16 TA3:1; // 3 TA for Mailbox 3
+ /* Битовое поле TA4, ширина 1 бит; данные TA4. */
Uint16 TA4:1; // 4 TA for Mailbox 4
+ /* Битовое поле TA5, ширина 1 бит; данные TA5. */
Uint16 TA5:1; // 5 TA for Mailbox 5
+ /* Битовое поле TA6, ширина 1 бит; данные TA6. */
Uint16 TA6:1; // 6 TA for Mailbox 6
+ /* Битовое поле TA7, ширина 1 бит; данные TA7. */
Uint16 TA7:1; // 7 TA for Mailbox 7
+ /* Битовое поле TA8, ширина 1 бит; данные TA8. */
Uint16 TA8:1; // 8 TA for Mailbox 8
+ /* Битовое поле TA9, ширина 1 бит; данные TA9. */
Uint16 TA9:1; // 9 TA for Mailbox 9
+ /* Битовое поле TA10, ширина 1 бит; данные TA10. */
Uint16 TA10:1; // 10 TA for Mailbox 10
+ /* Битовое поле TA11, ширина 1 бит; данные TA11. */
Uint16 TA11:1; // 11 TA for Mailbox 11
+ /* Битовое поле TA12, ширина 1 бит; данные TA12. */
Uint16 TA12:1; // 12 TA for Mailbox 12
+ /* Битовое поле TA13, ширина 1 бит; данные TA13. */
Uint16 TA13:1; // 13 TA for Mailbox 13
+ /* Битовое поле TA14, ширина 1 бит; данные TA14. */
Uint16 TA14:1; // 14 TA for Mailbox 14
+ /* Битовое поле TA15, ширина 1 бит; данные TA15. */
Uint16 TA15:1; // 15 TA for Mailbox 15
+ /* Битовое поле TA16, ширина 1 бит; данные TA16. */
Uint16 TA16:1; // 16 TA for Mailbox 16
+ /* Битовое поле TA17, ширина 1 бит; данные TA17. */
Uint16 TA17:1; // 17 TA for Mailbox 17
+ /* Битовое поле TA18, ширина 1 бит; данные TA18. */
Uint16 TA18:1; // 18 TA for Mailbox 18
+ /* Битовое поле TA19, ширина 1 бит; данные TA19. */
Uint16 TA19:1; // 19 TA for Mailbox 19
+ /* Битовое поле TA20, ширина 1 бит; данные TA20. */
Uint16 TA20:1; // 20 TA for Mailbox 20
+ /* Битовое поле TA21, ширина 1 бит; данные TA21. */
Uint16 TA21:1; // 21 TA for Mailbox 21
+ /* Битовое поле TA22, ширина 1 бит; данные TA22. */
Uint16 TA22:1; // 22 TA for Mailbox 22
+ /* Битовое поле TA23, ширина 1 бит; данные TA23. */
Uint16 TA23:1; // 23 TA for Mailbox 23
+ /* Битовое поле TA24, ширина 1 бит; данные TA24. */
Uint16 TA24:1; // 24 TA for Mailbox 24
+ /* Битовое поле TA25, ширина 1 бит; данные TA25. */
Uint16 TA25:1; // 25 TA for Mailbox 25
+ /* Битовое поле TA26, ширина 1 бит; данные TA26. */
Uint16 TA26:1; // 26 TA for Mailbox 26
+ /* Битовое поле TA27, ширина 1 бит; данные TA27. */
Uint16 TA27:1; // 27 TA for Mailbox 27
+ /* Битовое поле TA28, ширина 1 бит; данные TA28. */
Uint16 TA28:1; // 28 TA for Mailbox 28
+ /* Битовое поле TA29, ширина 1 бит; данные TA29. */
Uint16 TA29:1; // 29 TA for Mailbox 29
+ /* Битовое поле TA30, ширина 1 бит; данные TA30. */
Uint16 TA30:1; // 30 TA for Mailbox 30
+ /* Битовое поле TA31, ширина 1 бит; данные TA31. */
Uint16 TA31:1; // 31 TA for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANTA_REG в одной области памяти. */
union CANTA_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANTA_BITS bit;; порядок полей определяет расположение данных. */
struct CANTA_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Transmit Abort Acknowledge register (CANAA) bit definitions */
+/* Описывает структуру CANAA_BITS; порядок полей определяет расположение данных. */
struct CANAA_BITS { // bit description
+ /* Битовое поле AA0, ширина 1 бит; данные AA0. */
Uint16 AA0:1; // 0 AA for Mailbox 0
+ /* Битовое поле AA1, ширина 1 бит; данные AA1. */
Uint16 AA1:1; // 1 AA for Mailbox 1
+ /* Битовое поле AA2, ширина 1 бит; данные AA2. */
Uint16 AA2:1; // 2 AA for Mailbox 2
+ /* Битовое поле AA3, ширина 1 бит; данные AA3. */
Uint16 AA3:1; // 3 AA for Mailbox 3
+ /* Битовое поле AA4, ширина 1 бит; данные AA4. */
Uint16 AA4:1; // 4 AA for Mailbox 4
+ /* Битовое поле AA5, ширина 1 бит; данные AA5. */
Uint16 AA5:1; // 5 AA for Mailbox 5
+ /* Битовое поле AA6, ширина 1 бит; данные AA6. */
Uint16 AA6:1; // 6 AA for Mailbox 6
+ /* Битовое поле AA7, ширина 1 бит; данные AA7. */
Uint16 AA7:1; // 7 AA for Mailbox 7
+ /* Битовое поле AA8, ширина 1 бит; данные AA8. */
Uint16 AA8:1; // 8 AA for Mailbox 8
+ /* Битовое поле AA9, ширина 1 бит; данные AA9. */
Uint16 AA9:1; // 9 AA for Mailbox 9
+ /* Битовое поле AA10, ширина 1 бит; данные AA10. */
Uint16 AA10:1; // 10 AA for Mailbox 10
+ /* Битовое поле AA11, ширина 1 бит; данные AA11. */
Uint16 AA11:1; // 11 AA for Mailbox 11
+ /* Битовое поле AA12, ширина 1 бит; данные AA12. */
Uint16 AA12:1; // 12 AA for Mailbox 12
+ /* Битовое поле AA13, ширина 1 бит; данные AA13. */
Uint16 AA13:1; // 13 AA for Mailbox 13
+ /* Битовое поле AA14, ширина 1 бит; данные AA14. */
Uint16 AA14:1; // 14 AA for Mailbox 14
+ /* Битовое поле AA15, ширина 1 бит; данные AA15. */
Uint16 AA15:1; // 15 AA for Mailbox 15
+ /* Битовое поле AA16, ширина 1 бит; данные AA16. */
Uint16 AA16:1; // 16 AA for Mailbox 16
+ /* Битовое поле AA17, ширина 1 бит; данные AA17. */
Uint16 AA17:1; // 17 AA for Mailbox 17
+ /* Битовое поле AA18, ширина 1 бит; данные AA18. */
Uint16 AA18:1; // 18 AA for Mailbox 18
+ /* Битовое поле AA19, ширина 1 бит; данные AA19. */
Uint16 AA19:1; // 19 AA for Mailbox 19
+ /* Битовое поле AA20, ширина 1 бит; данные AA20. */
Uint16 AA20:1; // 20 AA for Mailbox 20
+ /* Битовое поле AA21, ширина 1 бит; данные AA21. */
Uint16 AA21:1; // 21 AA for Mailbox 21
+ /* Битовое поле AA22, ширина 1 бит; данные AA22. */
Uint16 AA22:1; // 22 AA for Mailbox 22
+ /* Битовое поле AA23, ширина 1 бит; данные AA23. */
Uint16 AA23:1; // 23 AA for Mailbox 23
+ /* Битовое поле AA24, ширина 1 бит; данные AA24. */
Uint16 AA24:1; // 24 AA for Mailbox 24
+ /* Битовое поле AA25, ширина 1 бит; данные AA25. */
Uint16 AA25:1; // 25 AA for Mailbox 25
+ /* Битовое поле AA26, ширина 1 бит; данные AA26. */
Uint16 AA26:1; // 26 AA for Mailbox 26
+ /* Битовое поле AA27, ширина 1 бит; данные AA27. */
Uint16 AA27:1; // 27 AA for Mailbox 27
+ /* Битовое поле AA28, ширина 1 бит; данные AA28. */
Uint16 AA28:1; // 28 AA for Mailbox 28
+ /* Битовое поле AA29, ширина 1 бит; данные AA29. */
Uint16 AA29:1; // 29 AA for Mailbox 29
+ /* Битовое поле AA30, ширина 1 бит; данные AA30. */
Uint16 AA30:1; // 30 AA for Mailbox 30
+ /* Битовое поле AA31, ширина 1 бит; данные AA31. */
Uint16 AA31:1; // 31 AA for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANAA_REG в одной области памяти. */
union CANAA_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANAA_BITS bit;; порядок полей определяет расположение данных. */
struct CANAA_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Received Message Pending register (CANRMP) bit definitions */
+/* Описывает структуру CANRMP_BITS; порядок полей определяет расположение данных. */
struct CANRMP_BITS { // bit description
+ /* Битовое поле RMP0, ширина 1 бит; данные RMP0. */
Uint16 RMP0:1; // 0 RMP for Mailbox 0
+ /* Битовое поле RMP1, ширина 1 бит; данные RMP1. */
Uint16 RMP1:1; // 1 RMP for Mailbox 1
+ /* Битовое поле RMP2, ширина 1 бит; данные RMP2. */
Uint16 RMP2:1; // 2 RMP for Mailbox 2
+ /* Битовое поле RMP3, ширина 1 бит; данные RMP3. */
Uint16 RMP3:1; // 3 RMP for Mailbox 3
+ /* Битовое поле RMP4, ширина 1 бит; данные RMP4. */
Uint16 RMP4:1; // 4 RMP for Mailbox 4
+ /* Битовое поле RMP5, ширина 1 бит; данные RMP5. */
Uint16 RMP5:1; // 5 RMP for Mailbox 5
+ /* Битовое поле RMP6, ширина 1 бит; данные RMP6. */
Uint16 RMP6:1; // 6 RMP for Mailbox 6
+ /* Битовое поле RMP7, ширина 1 бит; данные RMP7. */
Uint16 RMP7:1; // 7 RMP for Mailbox 7
+ /* Битовое поле RMP8, ширина 1 бит; данные RMP8. */
Uint16 RMP8:1; // 8 RMP for Mailbox 8
+ /* Битовое поле RMP9, ширина 1 бит; данные RMP9. */
Uint16 RMP9:1; // 9 RMP for Mailbox 9
+ /* Битовое поле RMP10, ширина 1 бит; данные RMP10. */
Uint16 RMP10:1; // 10 RMP for Mailbox 10
+ /* Битовое поле RMP11, ширина 1 бит; данные RMP11. */
Uint16 RMP11:1; // 11 RMP for Mailbox 11
+ /* Битовое поле RMP12, ширина 1 бит; данные RMP12. */
Uint16 RMP12:1; // 12 RMP for Mailbox 12
+ /* Битовое поле RMP13, ширина 1 бит; данные RMP13. */
Uint16 RMP13:1; // 13 RMP for Mailbox 13
+ /* Битовое поле RMP14, ширина 1 бит; данные RMP14. */
Uint16 RMP14:1; // 14 RMP for Mailbox 14
+ /* Битовое поле RMP15, ширина 1 бит; данные RMP15. */
Uint16 RMP15:1; // 15 RMP for Mailbox 15
+ /* Битовое поле RMP16, ширина 1 бит; данные RMP16. */
Uint16 RMP16:1; // 16 RMP for Mailbox 16
+ /* Битовое поле RMP17, ширина 1 бит; данные RMP17. */
Uint16 RMP17:1; // 17 RMP for Mailbox 17
+ /* Битовое поле RMP18, ширина 1 бит; данные RMP18. */
Uint16 RMP18:1; // 18 RMP for Mailbox 18
+ /* Битовое поле RMP19, ширина 1 бит; данные RMP19. */
Uint16 RMP19:1; // 19 RMP for Mailbox 19
+ /* Битовое поле RMP20, ширина 1 бит; данные RMP20. */
Uint16 RMP20:1; // 20 RMP for Mailbox 20
+ /* Битовое поле RMP21, ширина 1 бит; данные RMP21. */
Uint16 RMP21:1; // 21 RMP for Mailbox 21
+ /* Битовое поле RMP22, ширина 1 бит; данные RMP22. */
Uint16 RMP22:1; // 22 RMP for Mailbox 22
+ /* Битовое поле RMP23, ширина 1 бит; данные RMP23. */
Uint16 RMP23:1; // 23 RMP for Mailbox 23
+ /* Битовое поле RMP24, ширина 1 бит; данные RMP24. */
Uint16 RMP24:1; // 24 RMP for Mailbox 24
+ /* Битовое поле RMP25, ширина 1 бит; данные RMP25. */
Uint16 RMP25:1; // 25 RMP for Mailbox 25
+ /* Битовое поле RMP26, ширина 1 бит; данные RMP26. */
Uint16 RMP26:1; // 26 RMP for Mailbox 26
+ /* Битовое поле RMP27, ширина 1 бит; данные RMP27. */
Uint16 RMP27:1; // 27 RMP for Mailbox 27
+ /* Битовое поле RMP28, ширина 1 бит; данные RMP28. */
Uint16 RMP28:1; // 28 RMP for Mailbox 28
+ /* Битовое поле RMP29, ширина 1 бит; данные RMP29. */
Uint16 RMP29:1; // 29 RMP for Mailbox 29
+ /* Битовое поле RMP30, ширина 1 бит; данные RMP30. */
Uint16 RMP30:1; // 30 RMP for Mailbox 30
+ /* Битовое поле RMP31, ширина 1 бит; данные RMP31. */
Uint16 RMP31:1; // 31 RMP for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANRMP_REG в одной области памяти. */
union CANRMP_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANRMP_BITS bit;; порядок полей определяет расположение данных. */
struct CANRMP_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Received Message Lost register (CANRML) bit definitions */
+/* Описывает структуру CANRML_BITS; порядок полей определяет расположение данных. */
struct CANRML_BITS { // bit description
+ /* Битовое поле RML0, ширина 1 бит; данные RML0. */
Uint16 RML0:1; // 0 RML for Mailbox 0
+ /* Битовое поле RML1, ширина 1 бит; данные RML1. */
Uint16 RML1:1; // 1 RML for Mailbox 1
+ /* Битовое поле RML2, ширина 1 бит; данные RML2. */
Uint16 RML2:1; // 2 RML for Mailbox 2
+ /* Битовое поле RML3, ширина 1 бит; данные RML3. */
Uint16 RML3:1; // 3 RML for Mailbox 3
+ /* Битовое поле RML4, ширина 1 бит; данные RML4. */
Uint16 RML4:1; // 4 RML for Mailbox 4
+ /* Битовое поле RML5, ширина 1 бит; данные RML5. */
Uint16 RML5:1; // 5 RML for Mailbox 5
+ /* Битовое поле RML6, ширина 1 бит; данные RML6. */
Uint16 RML6:1; // 6 RML for Mailbox 6
+ /* Битовое поле RML7, ширина 1 бит; данные RML7. */
Uint16 RML7:1; // 7 RML for Mailbox 7
+ /* Битовое поле RML8, ширина 1 бит; данные RML8. */
Uint16 RML8:1; // 8 RML for Mailbox 8
+ /* Битовое поле RML9, ширина 1 бит; данные RML9. */
Uint16 RML9:1; // 9 RML for Mailbox 9
+ /* Битовое поле RML10, ширина 1 бит; данные RML10. */
Uint16 RML10:1; // 10 RML for Mailbox 10
+ /* Битовое поле RML11, ширина 1 бит; данные RML11. */
Uint16 RML11:1; // 11 RML for Mailbox 11
+ /* Битовое поле RML12, ширина 1 бит; данные RML12. */
Uint16 RML12:1; // 12 RML for Mailbox 12
+ /* Битовое поле RML13, ширина 1 бит; данные RML13. */
Uint16 RML13:1; // 13 RML for Mailbox 13
+ /* Битовое поле RML14, ширина 1 бит; данные RML14. */
Uint16 RML14:1; // 14 RML for Mailbox 14
+ /* Битовое поле RML15, ширина 1 бит; данные RML15. */
Uint16 RML15:1; // 15 RML for Mailbox 15
+ /* Битовое поле RML16, ширина 1 бит; данные RML16. */
Uint16 RML16:1; // 16 RML for Mailbox 16
+ /* Битовое поле RML17, ширина 1 бит; данные RML17. */
Uint16 RML17:1; // 17 RML for Mailbox 17
+ /* Битовое поле RML18, ширина 1 бит; данные RML18. */
Uint16 RML18:1; // 18 RML for Mailbox 18
+ /* Битовое поле RML19, ширина 1 бит; данные RML19. */
Uint16 RML19:1; // 19 RML for Mailbox 19
+ /* Битовое поле RML20, ширина 1 бит; данные RML20. */
Uint16 RML20:1; // 20 RML for Mailbox 20
+ /* Битовое поле RML21, ширина 1 бит; данные RML21. */
Uint16 RML21:1; // 21 RML for Mailbox 21
+ /* Битовое поле RML22, ширина 1 бит; данные RML22. */
Uint16 RML22:1; // 22 RML for Mailbox 22
+ /* Битовое поле RML23, ширина 1 бит; данные RML23. */
Uint16 RML23:1; // 23 RML for Mailbox 23
+ /* Битовое поле RML24, ширина 1 бит; данные RML24. */
Uint16 RML24:1; // 24 RML for Mailbox 24
+ /* Битовое поле RML25, ширина 1 бит; данные RML25. */
Uint16 RML25:1; // 25 RML for Mailbox 25
+ /* Битовое поле RML26, ширина 1 бит; данные RML26. */
Uint16 RML26:1; // 26 RML for Mailbox 26
+ /* Битовое поле RML27, ширина 1 бит; данные RML27. */
Uint16 RML27:1; // 27 RML for Mailbox 27
+ /* Битовое поле RML28, ширина 1 бит; данные RML28. */
Uint16 RML28:1; // 28 RML for Mailbox 28
+ /* Битовое поле RML29, ширина 1 бит; данные RML29. */
Uint16 RML29:1; // 29 RML for Mailbox 29
+ /* Битовое поле RML30, ширина 1 бит; данные RML30. */
Uint16 RML30:1; // 30 RML for Mailbox 30
+ /* Битовое поле RML31, ширина 1 бит; данные RML31. */
Uint16 RML31:1; // 31 RML for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANRML_REG в одной области памяти. */
union CANRML_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANRML_BITS bit;; порядок полей определяет расположение данных. */
struct CANRML_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Remote Frame Pending register (CANRFP) bit definitions */
+/* Описывает структуру CANRFP_BITS; порядок полей определяет расположение данных. */
struct CANRFP_BITS { // bit description
+ /* Битовое поле RFP0, ширина 1 бит; данные RFP0. */
Uint16 RFP0:1; // 0 RFP for Mailbox 0
+ /* Битовое поле RFP1, ширина 1 бит; данные RFP1. */
Uint16 RFP1:1; // 1 RFP for Mailbox 1
+ /* Битовое поле RFP2, ширина 1 бит; данные RFP2. */
Uint16 RFP2:1; // 2 RFP for Mailbox 2
+ /* Битовое поле RFP3, ширина 1 бит; данные RFP3. */
Uint16 RFP3:1; // 3 RFP for Mailbox 3
+ /* Битовое поле RFP4, ширина 1 бит; данные RFP4. */
Uint16 RFP4:1; // 4 RFP for Mailbox 4
+ /* Битовое поле RFP5, ширина 1 бит; данные RFP5. */
Uint16 RFP5:1; // 5 RFP for Mailbox 5
+ /* Битовое поле RFP6, ширина 1 бит; данные RFP6. */
Uint16 RFP6:1; // 6 RFP for Mailbox 6
+ /* Битовое поле RFP7, ширина 1 бит; данные RFP7. */
Uint16 RFP7:1; // 7 RFP for Mailbox 7
+ /* Битовое поле RFP8, ширина 1 бит; данные RFP8. */
Uint16 RFP8:1; // 8 RFP for Mailbox 8
+ /* Битовое поле RFP9, ширина 1 бит; данные RFP9. */
Uint16 RFP9:1; // 9 RFP for Mailbox 9
+ /* Битовое поле RFP10, ширина 1 бит; данные RFP10. */
Uint16 RFP10:1; // 10 RFP for Mailbox 10
+ /* Битовое поле RFP11, ширина 1 бит; данные RFP11. */
Uint16 RFP11:1; // 11 RFP for Mailbox 11
+ /* Битовое поле RFP12, ширина 1 бит; данные RFP12. */
Uint16 RFP12:1; // 12 RFP for Mailbox 12
+ /* Битовое поле RFP13, ширина 1 бит; данные RFP13. */
Uint16 RFP13:1; // 13 RFP for Mailbox 13
+ /* Битовое поле RFP14, ширина 1 бит; данные RFP14. */
Uint16 RFP14:1; // 14 RFP for Mailbox 14
+ /* Битовое поле RFP15, ширина 1 бит; данные RFP15. */
Uint16 RFP15:1; // 15 RFP for Mailbox 15
+ /* Битовое поле RFP16, ширина 1 бит; данные RFP16. */
Uint16 RFP16:1; // 16 RFP for Mailbox 16
+ /* Битовое поле RFP17, ширина 1 бит; данные RFP17. */
Uint16 RFP17:1; // 17 RFP for Mailbox 17
+ /* Битовое поле RFP18, ширина 1 бит; данные RFP18. */
Uint16 RFP18:1; // 18 RFP for Mailbox 18
+ /* Битовое поле RFP19, ширина 1 бит; данные RFP19. */
Uint16 RFP19:1; // 19 RFP for Mailbox 19
+ /* Битовое поле RFP20, ширина 1 бит; данные RFP20. */
Uint16 RFP20:1; // 20 RFP for Mailbox 20
+ /* Битовое поле RFP21, ширина 1 бит; данные RFP21. */
Uint16 RFP21:1; // 21 RFP for Mailbox 21
+ /* Битовое поле RFP22, ширина 1 бит; данные RFP22. */
Uint16 RFP22:1; // 22 RFP for Mailbox 22
+ /* Битовое поле RFP23, ширина 1 бит; данные RFP23. */
Uint16 RFP23:1; // 23 RFP for Mailbox 23
+ /* Битовое поле RFP24, ширина 1 бит; данные RFP24. */
Uint16 RFP24:1; // 24 RFP for Mailbox 24
+ /* Битовое поле RFP25, ширина 1 бит; данные RFP25. */
Uint16 RFP25:1; // 25 RFP for Mailbox 25
+ /* Битовое поле RFP26, ширина 1 бит; данные RFP26. */
Uint16 RFP26:1; // 26 RFP for Mailbox 26
+ /* Битовое поле RFP27, ширина 1 бит; данные RFP27. */
Uint16 RFP27:1; // 27 RFP for Mailbox 27
+ /* Битовое поле RFP28, ширина 1 бит; данные RFP28. */
Uint16 RFP28:1; // 28 RFP for Mailbox 28
+ /* Битовое поле RFP29, ширина 1 бит; данные RFP29. */
Uint16 RFP29:1; // 29 RFP for Mailbox 29
+ /* Битовое поле RFP30, ширина 1 бит; данные RFP30. */
Uint16 RFP30:1; // 30 RFP for Mailbox 30
+ /* Битовое поле RFP31, ширина 1 бит; данные RFP31. */
Uint16 RFP31:1; // 31 RFP for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANRFP_REG в одной области памяти. */
union CANRFP_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANRFP_BITS bit;; порядок полей определяет расположение данных. */
struct CANRFP_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Global Acceptance Mask register (CANGAM) bit definitions */
+/* Описывает структуру CANGAM_BITS; порядок полей определяет расположение данных. */
struct CANGAM_BITS { // bits description
+ /* Битовое поле GAM150, ширина 16 бит; данные GAM150. */
Uint16 GAM150:16; // 15:0 Global acceptance mask bits 0-15
+ /* Битовое поле GAM2816, ширина 13 бит; данные GAM2816. */
Uint16 GAM2816:13; // 28:16 Global acceptance mask bits 16-28
+ /* Битовое поле rsvd, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:2; // 30:29 reserved
+ /* Битовое поле AMI, ширина 1 бит; данные AMI. */
Uint16 AMI:1; // 31 AMI bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANGAM_REG в одной области памяти. */
union CANGAM_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANGAM_BITS bit;; порядок полей определяет расположение данных. */
struct CANGAM_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Master Control register (CANMC) bit definitions */
+/* Описывает структуру CANMC_BITS; порядок полей определяет расположение данных. */
struct CANMC_BITS { // bits description
+ /* Битовое поле MBNR, ширина 5 бит; данные MBNR. */
Uint16 MBNR:5; // 4:0 MBX # for CDR bit
+ /* Битовое поле SRES, ширина 1 бит; данные SRES. */
Uint16 SRES:1; // 5 Soft reset
+ /* Битовое поле STM, ширина 1 бит; данные STM. */
Uint16 STM:1; // 6 Self-test mode
+ /* Битовое поле ABO, ширина 1 бит; данные ABO. */
Uint16 ABO:1; // 7 Auto bus-on
+ /* Битовое поле CDR, ширина 1 бит; данные CDR. */
Uint16 CDR:1; // 8 Change data request
+ /* Битовое поле WUBA, ширина 1 бит; данные WUBA. */
Uint16 WUBA:1; // 9 Wake-up on bus activity
+ /* Битовое поле DBO, ширина 1 бит; данные DBO. */
Uint16 DBO:1; // 10 Data-byte order
+ /* Битовое поле PDR, ширина 1 бит; данные PDR. */
Uint16 PDR:1; // 11 Power-down mode request
+ /* Битовое поле CCR, ширина 1 бит; данные CCR. */
Uint16 CCR:1; // 12 Change configuration request
+ /* Битовое поле SCB, ширина 1 бит; данные SCB. */
Uint16 SCB:1; // 13 SCC compatibility bit
+ /* Битовое поле TCC, ширина 1 бит; данные TCC. */
Uint16 TCC:1; // 14 TSC MSB clear bit
+ /* Битовое поле MBCC, ширина 1 бит; данные MBCC. */
Uint16 MBCC:1; // 15 TSC clear bit thru mailbox 16
+ /* Битовое поле SUSP, ширина 1 бит; данные SUSP. */
Uint16 SUSP:1; // 16 SUSPEND free/soft bit
+ /* Битовое поле rsvd, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:15; // 31:17 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANMC_REG в одной области памяти. */
union CANMC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANMC_BITS bit;; порядок полей определяет расположение данных. */
struct CANMC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Bit -timing configuration register (CANBTC) bit definitions */
+/* Описывает структуру CANBTC_BITS; порядок полей определяет расположение данных. */
struct CANBTC_BITS { // bits description
+ /* Битовое поле TSEG2REG, ширина 3 бит; данные TSEG2REG. */
Uint16 TSEG2REG:3; // 2:0 TSEG2 register value
+ /* Битовое поле TSEG1REG, ширина 4 бит; данные TSEG1REG. */
Uint16 TSEG1REG:4; // 6:3 TSEG1 register value
+ /* Битовое поле SAM, ширина 1 бит; данные SAM. */
Uint16 SAM:1; // 7 Sample-point setting
+ /* Битовое поле SJWREG, ширина 2 бит; данные SJWREG. */
Uint16 SJWREG:2; // 9:8 Synchroniztion Jump Width register value
+ /* Битовое поле rsvd1, ширина 6 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:6; // 15:10 reserved
+ /* Битовое поле BRPREG, ширина 8 бит; данные BRPREG. */
Uint16 BRPREG:8; // 23:16 Baudrate prescaler register value
+ /* Битовое поле rsvd2, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:8; // 31:24 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANBTC_REG в одной области памяти. */
union CANBTC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANBTC_BITS bit;; порядок полей определяет расположение данных. */
struct CANBTC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Error & Status register (CANES) bit definitions */
+/* Описывает структуру CANES_BITS; порядок полей определяет расположение данных. */
struct CANES_BITS { // bits description
+ /* Битовое поле TM, ширина 1 бит; данные TM. */
Uint16 TM:1; // 0 Transmit Mode
+ /* Битовое поле RM, ширина 1 бит; данные RM. */
Uint16 RM:1; // 1 Receive Mode
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 2 reserved
+ /* Битовое поле PDA, ширина 1 бит; данные PDA. */
Uint16 PDA:1; // 3 Power-down acknowledge
+ /* Битовое поле CCE, ширина 1 бит; данные CCE. */
Uint16 CCE:1; // 4 Change Configuration Enable
+ /* Битовое поле SMA, ширина 1 бит; данные SMA. */
Uint16 SMA:1; // 5 Suspend Mode Acknowledge
+ /* Битовое поле rsvd2, ширина 10 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:10; // 15:6 reserved
+ /* Битовое поле EW, ширина 1 бит; данные EW. */
Uint16 EW:1; // 16 Warning status
+ /* Битовое поле EP, ширина 1 бит; данные EP. */
Uint16 EP:1; // 17 Error Passive status
+ /* Битовое поле BO, ширина 1 бит; данные BO. */
Uint16 BO:1; // 18 Bus-off status
+ /* Битовое поле ACKE, ширина 1 бит; данные ACKE. */
Uint16 ACKE:1; // 19 Acknowledge error
+ /* Битовое поле SE, ширина 1 бит; данные SE. */
Uint16 SE:1; // 20 Stuff error
+ /* Битовое поле CRCE, ширина 1 бит; данные CRCE. */
Uint16 CRCE:1; // 21 CRC error
+ /* Битовое поле SA1, ширина 1 бит; данные SA1. */
Uint16 SA1:1; // 22 Stuck at Dominant error
+ /* Битовое поле BE, ширина 1 бит; данные BE. */
Uint16 BE:1; // 23 Bit error
+ /* Битовое поле FE, ширина 1 бит; данные FE. */
Uint16 FE:1; // 24 Framing error
+ /* Битовое поле rsvd3, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:7; // 31:25 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANES_REG в одной области памяти. */
union CANES_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANES_BITS bit;; порядок полей определяет расположение данных. */
struct CANES_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Transmit Error Counter register (CANTEC) bit definitions */
+/* Описывает структуру CANTEC_BITS; порядок полей определяет расположение данных. */
struct CANTEC_BITS { // bits description
+ /* Битовое поле TEC, ширина 8 бит; данные TEC. */
Uint16 TEC:8; // 7:0 TEC
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
+ /* Битовое поле rsvd2, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:16; // 31:16 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANTEC_REG в одной области памяти. */
union CANTEC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANTEC_BITS bit;; порядок полей определяет расположение данных. */
struct CANTEC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Receive Error Counter register (CANREC) bit definitions */
+/* Описывает структуру CANREC_BITS; порядок полей определяет расположение данных. */
struct CANREC_BITS { // bits description
+ /* Битовое поле REC, ширина 8 бит; данные REC. */
Uint16 REC:8; // 7:0 REC
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
+ /* Битовое поле rsvd2, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:16; // 31:16 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANREC_REG в одной области памяти. */
union CANREC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANREC_BITS bit;; порядок полей определяет расположение данных. */
struct CANREC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Global Interrupt Flag 0 (CANGIF0) bit definitions */
+/* Описывает структуру CANGIF0_BITS; порядок полей определяет расположение данных. */
struct CANGIF0_BITS { // bits description
+ /* Битовое поле MIV0, ширина 5 бит; данные MIV0. */
Uint16 MIV0:5; // 4:0 Mailbox Interrupt Vector
+ /* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 7:5 reserved
+ /* Битовое поле WLIF0, ширина 1 бит; данные WLIF0. */
Uint16 WLIF0:1; // 8 Warning level interrupt flag
+ /* Битовое поле EPIF0, ширина 1 бит; данные EPIF0. */
Uint16 EPIF0:1; // 9 Error-passive interrupt flag
+ /* Битовое поле BOIF0, ширина 1 бит; данные BOIF0. */
Uint16 BOIF0:1; // 10 Bus-off interrupt flag
+ /* Битовое поле RMLIF0, ширина 1 бит; данные RMLIF0. */
Uint16 RMLIF0:1; // 11 Received message lost interrupt flag
+ /* Битовое поле WUIF0, ширина 1 бит; данные WUIF0. */
Uint16 WUIF0:1; // 12 Wakeup interrupt flag
+ /* Битовое поле WDIF0, ширина 1 бит; данные WDIF0. */
Uint16 WDIF0:1; // 13 Write denied interrupt flag
+ /* Битовое поле AAIF0, ширина 1 бит; данные AAIF0. */
Uint16 AAIF0:1; // 14 Abort Ack interrupt flag
+ /* Битовое поле GMIF0, ширина 1 бит; данные GMIF0. */
Uint16 GMIF0:1; // 15 Global MBX interrupt flag
+ /* Битовое поле TCOF0, ширина 1 бит; данные TCOF0. */
Uint16 TCOF0:1; // 16 TSC Overflow flag
+ /* Битовое поле MTOF0, ширина 1 бит; данные MTOF0. */
Uint16 MTOF0:1; // 17 Mailbox Timeout flag
+ /* Битовое поле rsvd2, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:14; // 31:18 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANGIF0_REG в одной области памяти. */
union CANGIF0_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANGIF0_BITS bit;; порядок полей определяет расположение данных. */
struct CANGIF0_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Global Interrupt Mask register (CANGIM) bit definitions */
+/* Описывает структуру CANGIM_BITS; порядок полей определяет расположение данных. */
struct CANGIM_BITS { // bits description
+ /* Битовое поле I0EN, ширина 1 бит; данные I0EN. */
Uint16 I0EN:1; // 0 Interrupt 0 enable
+ /* Битовое поле I1EN, ширина 1 бит; данные I1EN. */
Uint16 I1EN:1; // 1 Interrupt 1 enable
+ /* Битовое поле GIL, ширина 1 бит; данные GIL. */
Uint16 GIL:1; // 2 Global Interrupt Level
+ /* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 7:3 reserved
+ /* Битовое поле WLIM, ширина 1 бит; данные WLIM. */
Uint16 WLIM:1; // 8 Warning level interrupt mask
+ /* Битовое поле EPIM, ширина 1 бит; данные EPIM. */
Uint16 EPIM:1; // 9 Error-passive interrupt mask
+ /* Битовое поле BOIM, ширина 1 бит; данные BOIM. */
Uint16 BOIM:1; // 10 Bus-off interrupt mask
+ /* Битовое поле RMLIM, ширина 1 бит; данные RMLIM. */
Uint16 RMLIM:1; // 11 Received message lost interrupt mask
+ /* Битовое поле WUIM, ширина 1 бит; данные WUIM. */
Uint16 WUIM:1; // 12 Wakeup interrupt mask
+ /* Битовое поле WDIM, ширина 1 бит; данные WDIM. */
Uint16 WDIM:1; // 13 Write denied interrupt mask
+ /* Битовое поле AAIM, ширина 1 бит; данные AAIM. */
Uint16 AAIM:1; // 14 Abort Ack interrupt mask
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 15 reserved
+ /* Битовое поле TCOM, ширина 1 бит; данные TCOM. */
Uint16 TCOM:1; // 16 TSC overflow interrupt mask
+ /* Битовое поле MTOM, ширина 1 бит; данные MTOM. */
Uint16 MTOM:1; // 17 MBX Timeout interrupt mask
+ /* Битовое поле rsvd3, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:14; // 31:18 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANGIM_REG в одной области памяти. */
union CANGIM_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANGIM_BITS bit;; порядок полей определяет расположение данных. */
struct CANGIM_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Global Interrupt Flag 1 (eCANGIF1) bit definitions */
+/* Описывает структуру CANGIF1_BITS; порядок полей определяет расположение данных. */
struct CANGIF1_BITS { // bits description
+ /* Битовое поле MIV1, ширина 5 бит; данные MIV1. */
Uint16 MIV1:5; // 4:0 Mailbox Interrupt Vector
+ /* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 7:5 reserved
+ /* Битовое поле WLIF1, ширина 1 бит; данные WLIF1. */
Uint16 WLIF1:1; // 8 Warning level interrupt flag
+ /* Битовое поле EPIF1, ширина 1 бит; данные EPIF1. */
Uint16 EPIF1:1; // 9 Error-passive interrupt flag
+ /* Битовое поле BOIF1, ширина 1 бит; данные BOIF1. */
Uint16 BOIF1:1; // 10 Bus-off interrupt flag
+ /* Битовое поле RMLIF1, ширина 1 бит; данные RMLIF1. */
Uint16 RMLIF1:1; // 11 Received message lost interrupt flag
+ /* Битовое поле WUIF1, ширина 1 бит; данные WUIF1. */
Uint16 WUIF1:1; // 12 Wakeup interrupt flag
+ /* Битовое поле WDIF1, ширина 1 бит; данные WDIF1. */
Uint16 WDIF1:1; // 13 Write denied interrupt flag
+ /* Битовое поле AAIF1, ширина 1 бит; данные AAIF1. */
Uint16 AAIF1:1; // 14 Abort Ack interrupt flag
+ /* Битовое поле GMIF1, ширина 1 бит; данные GMIF1. */
Uint16 GMIF1:1; // 15 Global MBX interrupt flag
+ /* Битовое поле TCOF1, ширина 1 бит; данные TCOF1. */
Uint16 TCOF1:1; // 16 TSC Overflow flag
+ /* Битовое поле MTOF1, ширина 1 бит; данные MTOF1. */
Uint16 MTOF1:1; // 17 Mailbox Timeout flag
+ /* Битовое поле rsvd2, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:14; // 31:18 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANGIF1_REG в одной области памяти. */
union CANGIF1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANGIF1_BITS bit;; порядок полей определяет расположение данных. */
struct CANGIF1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Mailbox Interrupt Mask register (CANMIM) bit definitions */
+/* Описывает структуру CANMIM_BITS; порядок полей определяет расположение данных. */
struct CANMIM_BITS { // bit description
+ /* Битовое поле MIM0, ширина 1 бит; данные MIM0. */
Uint16 MIM0:1; // 0 MIM for Mailbox 0
+ /* Битовое поле MIM1, ширина 1 бит; данные MIM1. */
Uint16 MIM1:1; // 1 MIM for Mailbox 1
+ /* Битовое поле MIM2, ширина 1 бит; данные MIM2. */
Uint16 MIM2:1; // 2 MIM for Mailbox 2
+ /* Битовое поле MIM3, ширина 1 бит; данные MIM3. */
Uint16 MIM3:1; // 3 MIM for Mailbox 3
+ /* Битовое поле MIM4, ширина 1 бит; данные MIM4. */
Uint16 MIM4:1; // 4 MIM for Mailbox 4
+ /* Битовое поле MIM5, ширина 1 бит; данные MIM5. */
Uint16 MIM5:1; // 5 MIM for Mailbox 5
+ /* Битовое поле MIM6, ширина 1 бит; данные MIM6. */
Uint16 MIM6:1; // 6 MIM for Mailbox 6
+ /* Битовое поле MIM7, ширина 1 бит; данные MIM7. */
Uint16 MIM7:1; // 7 MIM for Mailbox 7
+ /* Битовое поле MIM8, ширина 1 бит; данные MIM8. */
Uint16 MIM8:1; // 8 MIM for Mailbox 8
+ /* Битовое поле MIM9, ширина 1 бит; данные MIM9. */
Uint16 MIM9:1; // 9 MIM for Mailbox 9
+ /* Битовое поле MIM10, ширина 1 бит; данные MIM10. */
Uint16 MIM10:1; // 10 MIM for Mailbox 10
+ /* Битовое поле MIM11, ширина 1 бит; данные MIM11. */
Uint16 MIM11:1; // 11 MIM for Mailbox 11
+ /* Битовое поле MIM12, ширина 1 бит; данные MIM12. */
Uint16 MIM12:1; // 12 MIM for Mailbox 12
+ /* Битовое поле MIM13, ширина 1 бит; данные MIM13. */
Uint16 MIM13:1; // 13 MIM for Mailbox 13
+ /* Битовое поле MIM14, ширина 1 бит; данные MIM14. */
Uint16 MIM14:1; // 14 MIM for Mailbox 14
+ /* Битовое поле MIM15, ширина 1 бит; данные MIM15. */
Uint16 MIM15:1; // 15 MIM for Mailbox 15
+ /* Битовое поле MIM16, ширина 1 бит; данные MIM16. */
Uint16 MIM16:1; // 16 MIM for Mailbox 16
+ /* Битовое поле MIM17, ширина 1 бит; данные MIM17. */
Uint16 MIM17:1; // 17 MIM for Mailbox 17
+ /* Битовое поле MIM18, ширина 1 бит; данные MIM18. */
Uint16 MIM18:1; // 18 MIM for Mailbox 18
+ /* Битовое поле MIM19, ширина 1 бит; данные MIM19. */
Uint16 MIM19:1; // 19 MIM for Mailbox 19
+ /* Битовое поле MIM20, ширина 1 бит; данные MIM20. */
Uint16 MIM20:1; // 20 MIM for Mailbox 20
+ /* Битовое поле MIM21, ширина 1 бит; данные MIM21. */
Uint16 MIM21:1; // 21 MIM for Mailbox 21
+ /* Битовое поле MIM22, ширина 1 бит; данные MIM22. */
Uint16 MIM22:1; // 22 MIM for Mailbox 22
+ /* Битовое поле MIM23, ширина 1 бит; данные MIM23. */
Uint16 MIM23:1; // 23 MIM for Mailbox 23
+ /* Битовое поле MIM24, ширина 1 бит; данные MIM24. */
Uint16 MIM24:1; // 24 MIM for Mailbox 24
+ /* Битовое поле MIM25, ширина 1 бит; данные MIM25. */
Uint16 MIM25:1; // 25 MIM for Mailbox 25
+ /* Битовое поле MIM26, ширина 1 бит; данные MIM26. */
Uint16 MIM26:1; // 26 MIM for Mailbox 26
+ /* Битовое поле MIM27, ширина 1 бит; данные MIM27. */
Uint16 MIM27:1; // 27 MIM for Mailbox 27
+ /* Битовое поле MIM28, ширина 1 бит; данные MIM28. */
Uint16 MIM28:1; // 28 MIM for Mailbox 28
+ /* Битовое поле MIM29, ширина 1 бит; данные MIM29. */
Uint16 MIM29:1; // 29 MIM for Mailbox 29
+ /* Битовое поле MIM30, ширина 1 бит; данные MIM30. */
Uint16 MIM30:1; // 30 MIM for Mailbox 30
+ /* Битовое поле MIM31, ширина 1 бит; данные MIM31. */
Uint16 MIM31:1; // 31 MIM for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANMIM_REG в одной области памяти. */
union CANMIM_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANMIM_BITS bit;; порядок полей определяет расположение данных. */
struct CANMIM_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Mailbox Interrupt Level register (CANMIL) bit definitions */
+/* Описывает структуру CANMIL_BITS; порядок полей определяет расположение данных. */
struct CANMIL_BITS { // bit description
+ /* Битовое поле MIL0, ширина 1 бит; данные MIL0. */
Uint16 MIL0:1; // 0 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL1, ширина 1 бит; данные MIL1. */
Uint16 MIL1:1; // 1 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL2, ширина 1 бит; данные MIL2. */
Uint16 MIL2:1; // 2 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL3, ширина 1 бит; данные MIL3. */
Uint16 MIL3:1; // 3 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL4, ширина 1 бит; данные MIL4. */
Uint16 MIL4:1; // 4 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL5, ширина 1 бит; данные MIL5. */
Uint16 MIL5:1; // 5 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL6, ширина 1 бит; данные MIL6. */
Uint16 MIL6:1; // 6 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL7, ширина 1 бит; данные MIL7. */
Uint16 MIL7:1; // 7 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL8, ширина 1 бит; данные MIL8. */
Uint16 MIL8:1; // 8 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL9, ширина 1 бит; данные MIL9. */
Uint16 MIL9:1; // 9 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL10, ширина 1 бит; данные MIL10. */
Uint16 MIL10:1; // 10 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL11, ширина 1 бит; данные MIL11. */
Uint16 MIL11:1; // 11 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL12, ширина 1 бит; данные MIL12. */
Uint16 MIL12:1; // 12 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL13, ширина 1 бит; данные MIL13. */
Uint16 MIL13:1; // 13 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL14, ширина 1 бит; данные MIL14. */
Uint16 MIL14:1; // 14 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL15, ширина 1 бит; данные MIL15. */
Uint16 MIL15:1; // 15 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL16, ширина 1 бит; данные MIL16. */
Uint16 MIL16:1; // 16 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL17, ширина 1 бит; данные MIL17. */
Uint16 MIL17:1; // 17 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL18, ширина 1 бит; данные MIL18. */
Uint16 MIL18:1; // 18 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL19, ширина 1 бит; данные MIL19. */
Uint16 MIL19:1; // 19 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL20, ширина 1 бит; данные MIL20. */
Uint16 MIL20:1; // 20 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL21, ширина 1 бит; данные MIL21. */
Uint16 MIL21:1; // 21 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL22, ширина 1 бит; данные MIL22. */
Uint16 MIL22:1; // 22 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL23, ширина 1 бит; данные MIL23. */
Uint16 MIL23:1; // 23 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL24, ширина 1 бит; данные MIL24. */
Uint16 MIL24:1; // 24 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL25, ширина 1 бит; данные MIL25. */
Uint16 MIL25:1; // 25 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL26, ширина 1 бит; данные MIL26. */
Uint16 MIL26:1; // 26 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL27, ширина 1 бит; данные MIL27. */
Uint16 MIL27:1; // 27 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL28, ширина 1 бит; данные MIL28. */
Uint16 MIL28:1; // 28 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL29, ширина 1 бит; данные MIL29. */
Uint16 MIL29:1; // 29 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL30, ширина 1 бит; данные MIL30. */
Uint16 MIL30:1; // 30 0 -> Int 9.5 1 -> Int 9.6
+ /* Битовое поле MIL31, ширина 1 бит; данные MIL31. */
Uint16 MIL31:1; // 31 0 -> Int 9.5 1 -> Int 9.6
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANMIL_REG в одной области памяти. */
union CANMIL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANMIL_BITS bit;; порядок полей определяет расположение данных. */
struct CANMIL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Overwrite Protection Control register (CANOPC) bit definitions */
+/* Описывает структуру CANOPC_BITS; порядок полей определяет расположение данных. */
struct CANOPC_BITS { // bit description
+ /* Битовое поле OPC0, ширина 1 бит; данные OPC0. */
Uint16 OPC0:1; // 0 OPC for Mailbox 0
+ /* Битовое поле OPC1, ширина 1 бит; данные OPC1. */
Uint16 OPC1:1; // 1 OPC for Mailbox 1
+ /* Битовое поле OPC2, ширина 1 бит; данные OPC2. */
Uint16 OPC2:1; // 2 OPC for Mailbox 2
+ /* Битовое поле OPC3, ширина 1 бит; данные OPC3. */
Uint16 OPC3:1; // 3 OPC for Mailbox 3
+ /* Битовое поле OPC4, ширина 1 бит; данные OPC4. */
Uint16 OPC4:1; // 4 OPC for Mailbox 4
+ /* Битовое поле OPC5, ширина 1 бит; данные OPC5. */
Uint16 OPC5:1; // 5 OPC for Mailbox 5
+ /* Битовое поле OPC6, ширина 1 бит; данные OPC6. */
Uint16 OPC6:1; // 6 OPC for Mailbox 6
+ /* Битовое поле OPC7, ширина 1 бит; данные OPC7. */
Uint16 OPC7:1; // 7 OPC for Mailbox 7
+ /* Битовое поле OPC8, ширина 1 бит; данные OPC8. */
Uint16 OPC8:1; // 8 OPC for Mailbox 8
+ /* Битовое поле OPC9, ширина 1 бит; данные OPC9. */
Uint16 OPC9:1; // 9 OPC for Mailbox 9
+ /* Битовое поле OPC10, ширина 1 бит; данные OPC10. */
Uint16 OPC10:1; // 10 OPC for Mailbox 10
+ /* Битовое поле OPC11, ширина 1 бит; данные OPC11. */
Uint16 OPC11:1; // 11 OPC for Mailbox 11
+ /* Битовое поле OPC12, ширина 1 бит; данные OPC12. */
Uint16 OPC12:1; // 12 OPC for Mailbox 12
+ /* Битовое поле OPC13, ширина 1 бит; данные OPC13. */
Uint16 OPC13:1; // 13 OPC for Mailbox 13
+ /* Битовое поле OPC14, ширина 1 бит; данные OPC14. */
Uint16 OPC14:1; // 14 OPC for Mailbox 14
+ /* Битовое поле OPC15, ширина 1 бит; данные OPC15. */
Uint16 OPC15:1; // 15 OPC for Mailbox 15
+ /* Битовое поле OPC16, ширина 1 бит; данные OPC16. */
Uint16 OPC16:1; // 16 OPC for Mailbox 16
+ /* Битовое поле OPC17, ширина 1 бит; данные OPC17. */
Uint16 OPC17:1; // 17 OPC for Mailbox 17
+ /* Битовое поле OPC18, ширина 1 бит; данные OPC18. */
Uint16 OPC18:1; // 18 OPC for Mailbox 18
+ /* Битовое поле OPC19, ширина 1 бит; данные OPC19. */
Uint16 OPC19:1; // 19 OPC for Mailbox 19
+ /* Битовое поле OPC20, ширина 1 бит; данные OPC20. */
Uint16 OPC20:1; // 20 OPC for Mailbox 20
+ /* Битовое поле OPC21, ширина 1 бит; данные OPC21. */
Uint16 OPC21:1; // 21 OPC for Mailbox 21
+ /* Битовое поле OPC22, ширина 1 бит; данные OPC22. */
Uint16 OPC22:1; // 22 OPC for Mailbox 22
+ /* Битовое поле OPC23, ширина 1 бит; данные OPC23. */
Uint16 OPC23:1; // 23 OPC for Mailbox 23
+ /* Битовое поле OPC24, ширина 1 бит; данные OPC24. */
Uint16 OPC24:1; // 24 OPC for Mailbox 24
+ /* Битовое поле OPC25, ширина 1 бит; данные OPC25. */
Uint16 OPC25:1; // 25 OPC for Mailbox 25
+ /* Битовое поле OPC26, ширина 1 бит; данные OPC26. */
Uint16 OPC26:1; // 26 OPC for Mailbox 26
+ /* Битовое поле OPC27, ширина 1 бит; данные OPC27. */
Uint16 OPC27:1; // 27 OPC for Mailbox 27
+ /* Битовое поле OPC28, ширина 1 бит; данные OPC28. */
Uint16 OPC28:1; // 28 OPC for Mailbox 28
+ /* Битовое поле OPC29, ширина 1 бит; данные OPC29. */
Uint16 OPC29:1; // 29 OPC for Mailbox 29
+ /* Битовое поле OPC30, ширина 1 бит; данные OPC30. */
Uint16 OPC30:1; // 30 OPC for Mailbox 30
+ /* Битовое поле OPC31, ширина 1 бит; данные OPC31. */
Uint16 OPC31:1; // 31 OPC for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANOPC_REG в одной области памяти. */
union CANOPC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANOPC_BITS bit;; порядок полей определяет расположение данных. */
struct CANOPC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN TX I/O Control Register (CANTIOC) bit definitions */
+/* Описывает структуру CANTIOC_BITS; порядок полей определяет расположение данных. */
struct CANTIOC_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 2:0 reserved
+ /* Битовое поле TXFUNC, ширина 1 бит; данные TXFUNC. */
Uint16 TXFUNC:1; // 3 TXFUNC
+ /* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved
+ /* Битовое поле rsvd3, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:16; // 31:16 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANTIOC_REG в одной области памяти. */
union CANTIOC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANTIOC_BITS bit;; порядок полей определяет расположение данных. */
struct CANTIOC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN RX I/O Control Register (CANRIOC) bit definitions */
+/* Описывает структуру CANRIOC_BITS; порядок полей определяет расположение данных. */
struct CANRIOC_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 2:0 reserved
+ /* Битовое поле RXFUNC, ширина 1 бит; данные RXFUNC. */
Uint16 RXFUNC:1; // 3 RXFUNC
+ /* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved
+ /* Битовое поле rsvd3, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:16; // 31:16 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANRIOC_REG в одной области памяти. */
union CANRIOC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANRIOC_BITS bit;; порядок полей определяет расположение данных. */
struct CANRIOC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Time-out Control register (CANTOC) bit definitions */
+/* Описывает структуру CANTOC_BITS; порядок полей определяет расположение данных. */
struct CANTOC_BITS { // bit description
+ /* Битовое поле TOC0, ширина 1 бит; данные TOC0. */
Uint16 TOC0:1; // 0 TOC for Mailbox 0
+ /* Битовое поле TOC1, ширина 1 бит; данные TOC1. */
Uint16 TOC1:1; // 1 TOC for Mailbox 1
+ /* Битовое поле TOC2, ширина 1 бит; данные TOC2. */
Uint16 TOC2:1; // 2 TOC for Mailbox 2
+ /* Битовое поле TOC3, ширина 1 бит; данные TOC3. */
Uint16 TOC3:1; // 3 TOC for Mailbox 3
+ /* Битовое поле TOC4, ширина 1 бит; данные TOC4. */
Uint16 TOC4:1; // 4 TOC for Mailbox 4
+ /* Битовое поле TOC5, ширина 1 бит; данные TOC5. */
Uint16 TOC5:1; // 5 TOC for Mailbox 5
+ /* Битовое поле TOC6, ширина 1 бит; данные TOC6. */
Uint16 TOC6:1; // 6 TOC for Mailbox 6
+ /* Битовое поле TOC7, ширина 1 бит; данные TOC7. */
Uint16 TOC7:1; // 7 TOC for Mailbox 7
+ /* Битовое поле TOC8, ширина 1 бит; данные TOC8. */
Uint16 TOC8:1; // 8 TOC for Mailbox 8
+ /* Битовое поле TOC9, ширина 1 бит; данные TOC9. */
Uint16 TOC9:1; // 9 TOC for Mailbox 9
+ /* Битовое поле TOC10, ширина 1 бит; данные TOC10. */
Uint16 TOC10:1; // 10 TOC for Mailbox 10
+ /* Битовое поле TOC11, ширина 1 бит; данные TOC11. */
Uint16 TOC11:1; // 11 TOC for Mailbox 11
+ /* Битовое поле TOC12, ширина 1 бит; данные TOC12. */
Uint16 TOC12:1; // 12 TOC for Mailbox 12
+ /* Битовое поле TOC13, ширина 1 бит; данные TOC13. */
Uint16 TOC13:1; // 13 TOC for Mailbox 13
+ /* Битовое поле TOC14, ширина 1 бит; данные TOC14. */
Uint16 TOC14:1; // 14 TOC for Mailbox 14
+ /* Битовое поле TOC15, ширина 1 бит; данные TOC15. */
Uint16 TOC15:1; // 15 TOC for Mailbox 15
+ /* Битовое поле TOC16, ширина 1 бит; данные TOC16. */
Uint16 TOC16:1; // 16 TOC for Mailbox 16
+ /* Битовое поле TOC17, ширина 1 бит; данные TOC17. */
Uint16 TOC17:1; // 17 TOC for Mailbox 17
+ /* Битовое поле TOC18, ширина 1 бит; данные TOC18. */
Uint16 TOC18:1; // 18 TOC for Mailbox 18
+ /* Битовое поле TOC19, ширина 1 бит; данные TOC19. */
Uint16 TOC19:1; // 19 TOC for Mailbox 19
+ /* Битовое поле TOC20, ширина 1 бит; данные TOC20. */
Uint16 TOC20:1; // 20 TOC for Mailbox 20
+ /* Битовое поле TOC21, ширина 1 бит; данные TOC21. */
Uint16 TOC21:1; // 21 TOC for Mailbox 21
+ /* Битовое поле TOC22, ширина 1 бит; данные TOC22. */
Uint16 TOC22:1; // 22 TOC for Mailbox 22
+ /* Битовое поле TOC23, ширина 1 бит; данные TOC23. */
Uint16 TOC23:1; // 23 TOC for Mailbox 23
+ /* Битовое поле TOC24, ширина 1 бит; данные TOC24. */
Uint16 TOC24:1; // 24 TOC for Mailbox 24
+ /* Битовое поле TOC25, ширина 1 бит; данные TOC25. */
Uint16 TOC25:1; // 25 TOC for Mailbox 25
+ /* Битовое поле TOC26, ширина 1 бит; данные TOC26. */
Uint16 TOC26:1; // 26 TOC for Mailbox 26
+ /* Битовое поле TOC27, ширина 1 бит; данные TOC27. */
Uint16 TOC27:1; // 27 TOC for Mailbox 27
+ /* Битовое поле TOC28, ширина 1 бит; данные TOC28. */
Uint16 TOC28:1; // 28 TOC for Mailbox 28
+ /* Битовое поле TOC29, ширина 1 бит; данные TOC29. */
Uint16 TOC29:1; // 29 TOC for Mailbox 29
+ /* Битовое поле TOC30, ширина 1 бит; данные TOC30. */
Uint16 TOC30:1; // 30 TOC for Mailbox 30
+ /* Битовое поле TOC31, ширина 1 бит; данные TOC31. */
Uint16 TOC31:1; // 31 TOC for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANTOC_REG в одной области памяти. */
union CANTOC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANTOC_BITS bit;; порядок полей определяет расположение данных. */
struct CANTOC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Time-out Status register (CANTOS) bit definitions */
+/* Описывает структуру CANTOS_BITS; порядок полей определяет расположение данных. */
struct CANTOS_BITS { // bit description
+ /* Битовое поле TOS0, ширина 1 бит; данные TOS0. */
Uint16 TOS0:1; // 0 TOS for Mailbox 0
+ /* Битовое поле TOS1, ширина 1 бит; данные TOS1. */
Uint16 TOS1:1; // 1 TOS for Mailbox 1
+ /* Битовое поле TOS2, ширина 1 бит; данные TOS2. */
Uint16 TOS2:1; // 2 TOS for Mailbox 2
+ /* Битовое поле TOS3, ширина 1 бит; данные TOS3. */
Uint16 TOS3:1; // 3 TOS for Mailbox 3
+ /* Битовое поле TOS4, ширина 1 бит; данные TOS4. */
Uint16 TOS4:1; // 4 TOS for Mailbox 4
+ /* Битовое поле TOS5, ширина 1 бит; данные TOS5. */
Uint16 TOS5:1; // 5 TOS for Mailbox 5
+ /* Битовое поле TOS6, ширина 1 бит; данные TOS6. */
Uint16 TOS6:1; // 6 TOS for Mailbox 6
+ /* Битовое поле TOS7, ширина 1 бит; данные TOS7. */
Uint16 TOS7:1; // 7 TOS for Mailbox 7
+ /* Битовое поле TOS8, ширина 1 бит; данные TOS8. */
Uint16 TOS8:1; // 8 TOS for Mailbox 8
+ /* Битовое поле TOS9, ширина 1 бит; данные TOS9. */
Uint16 TOS9:1; // 9 TOS for Mailbox 9
+ /* Битовое поле TOS10, ширина 1 бит; данные TOS10. */
Uint16 TOS10:1; // 10 TOS for Mailbox 10
+ /* Битовое поле TOS11, ширина 1 бит; данные TOS11. */
Uint16 TOS11:1; // 11 TOS for Mailbox 11
+ /* Битовое поле TOS12, ширина 1 бит; данные TOS12. */
Uint16 TOS12:1; // 12 TOS for Mailbox 12
+ /* Битовое поле TOS13, ширина 1 бит; данные TOS13. */
Uint16 TOS13:1; // 13 TOS for Mailbox 13
+ /* Битовое поле TOS14, ширина 1 бит; данные TOS14. */
Uint16 TOS14:1; // 14 TOS for Mailbox 14
+ /* Битовое поле TOS15, ширина 1 бит; данные TOS15. */
Uint16 TOS15:1; // 15 TOS for Mailbox 15
+ /* Битовое поле TOS16, ширина 1 бит; данные TOS16. */
Uint16 TOS16:1; // 16 TOS for Mailbox 16
+ /* Битовое поле TOS17, ширина 1 бит; данные TOS17. */
Uint16 TOS17:1; // 17 TOS for Mailbox 17
+ /* Битовое поле TOS18, ширина 1 бит; данные TOS18. */
Uint16 TOS18:1; // 18 TOS for Mailbox 18
+ /* Битовое поле TOS19, ширина 1 бит; данные TOS19. */
Uint16 TOS19:1; // 19 TOS for Mailbox 19
+ /* Битовое поле TOS20, ширина 1 бит; данные TOS20. */
Uint16 TOS20:1; // 20 TOS for Mailbox 20
+ /* Битовое поле TOS21, ширина 1 бит; данные TOS21. */
Uint16 TOS21:1; // 21 TOS for Mailbox 21
+ /* Битовое поле TOS22, ширина 1 бит; данные TOS22. */
Uint16 TOS22:1; // 22 TOS for Mailbox 22
+ /* Битовое поле TOS23, ширина 1 бит; данные TOS23. */
Uint16 TOS23:1; // 23 TOS for Mailbox 23
+ /* Битовое поле TOS24, ширина 1 бит; данные TOS24. */
Uint16 TOS24:1; // 24 TOS for Mailbox 24
+ /* Битовое поле TOS25, ширина 1 бит; данные TOS25. */
Uint16 TOS25:1; // 25 TOS for Mailbox 25
+ /* Битовое поле TOS26, ширина 1 бит; данные TOS26. */
Uint16 TOS26:1; // 26 TOS for Mailbox 26
+ /* Битовое поле TOS27, ширина 1 бит; данные TOS27. */
Uint16 TOS27:1; // 27 TOS for Mailbox 27
+ /* Битовое поле TOS28, ширина 1 бит; данные TOS28. */
Uint16 TOS28:1; // 28 TOS for Mailbox 28
+ /* Битовое поле TOS29, ширина 1 бит; данные TOS29. */
Uint16 TOS29:1; // 29 TOS for Mailbox 29
+ /* Битовое поле TOS30, ширина 1 бит; данные TOS30. */
Uint16 TOS30:1; // 30 TOS for Mailbox 30
+ /* Битовое поле TOS31, ширина 1 бит; данные TOS31. */
Uint16 TOS31:1; // 31 TOS for Mailbox 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANTOS_REG в одной области памяти. */
union CANTOS_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANTOS_BITS bit;; порядок полей определяет расположение данных. */
struct CANTOS_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/**************************************/
/* eCAN Control & Status register file */
/**************************************/
+/* Описывает структуру ECAN_REGS; порядок полей определяет расположение данных. */
struct ECAN_REGS {
+ /* Объединяет несколько представлений CANME_REG CANME; в одной области памяти. */
union CANME_REG CANME; // Mailbox Enable
+ /* Объединяет несколько представлений CANMD_REG CANMD; в одной области памяти. */
union CANMD_REG CANMD; // Mailbox Direction
+ /* Объединяет несколько представлений CANTRS_REG CANTRS; в одной области памяти. */
union CANTRS_REG CANTRS; // Transmit Request Set
+ /* Объединяет несколько представлений CANTRR_REG CANTRR; в одной области памяти. */
union CANTRR_REG CANTRR; // Transmit Request Reset
+ /* Объединяет несколько представлений CANTA_REG CANTA; в одной области памяти. */
union CANTA_REG CANTA; // Transmit Acknowledge
+ /* Объединяет несколько представлений CANAA_REG CANAA; в одной области памяти. */
union CANAA_REG CANAA; // Abort Acknowledge
+ /* Объединяет несколько представлений CANRMP_REG CANRMP; в одной области памяти. */
union CANRMP_REG CANRMP; // Received Message Pending
+ /* Объединяет несколько представлений CANRML_REG CANRML; в одной области памяти. */
union CANRML_REG CANRML; // Received Message Lost
+ /* Объединяет несколько представлений CANRFP_REG CANRFP; в одной области памяти. */
union CANRFP_REG CANRFP; // Remote Frame Pending
+ /* Объединяет несколько представлений CANGAM_REG CANGAM; в одной области памяти. */
union CANGAM_REG CANGAM; // Global Acceptance Mask
+ /* Объединяет несколько представлений CANMC_REG CANMC; в одной области памяти. */
union CANMC_REG CANMC; // Master Control
+ /* Объединяет несколько представлений CANBTC_REG CANBTC; в одной области памяти. */
union CANBTC_REG CANBTC; // Bit Timing
+ /* Объединяет несколько представлений CANES_REG CANES; в одной области памяти. */
union CANES_REG CANES; // Error Status
+ /* Объединяет несколько представлений CANTEC_REG CANTEC; в одной области памяти. */
union CANTEC_REG CANTEC; // Transmit Error Counter
+ /* Объединяет несколько представлений CANREC_REG CANREC; в одной области памяти. */
union CANREC_REG CANREC; // Receive Error Counter
+ /* Объединяет несколько представлений CANGIF0_REG CANGIF0; в одной области памяти. */
union CANGIF0_REG CANGIF0; // Global Interrupt Flag 0
+ /* Объединяет несколько представлений CANGIM_REG CANGIM; в одной области памяти. */
union CANGIM_REG CANGIM; // Global Interrupt Mask 0
+ /* Объединяет несколько представлений CANGIF1_REG CANGIF1; в одной области памяти. */
union CANGIF1_REG CANGIF1; // Global Interrupt Flag 1
+ /* Объединяет несколько представлений CANMIM_REG CANMIM; в одной области памяти. */
union CANMIM_REG CANMIM; // Mailbox Interrupt Mask
+ /* Объединяет несколько представлений CANMIL_REG CANMIL; в одной области памяти. */
union CANMIL_REG CANMIL; // Mailbox Interrupt Level
+ /* Объединяет несколько представлений CANOPC_REG CANOPC; в одной области памяти. */
union CANOPC_REG CANOPC; // Overwrite Protection Control
+ /* Объединяет несколько представлений CANTIOC_REG CANTIOC; в одной области памяти. */
union CANTIOC_REG CANTIOC; // TX I/O Control
+ /* Объединяет несколько представлений CANRIOC_REG CANRIOC; в одной области памяти. */
union CANRIOC_REG CANRIOC; // RX I/O Control
+ /* Объявляет CANTSC — данные CANTSC. */
Uint32 CANTSC; // Time-stamp counter
+ /* Объединяет несколько представлений CANTOC_REG CANTOC; в одной области памяти. */
union CANTOC_REG CANTOC; // Time-out Control
+ /* Объединяет несколько представлений CANTOS_REG CANTOS; в одной области памяти. */
union CANTOS_REG CANTOS; // Time-out Status
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* --------------------------------------------------- */
@@ -880,143 +1609,247 @@ struct ECAN_REGS {
/* ----------------------------------------------------*/
/* eCAN Message ID (MSGID) bit definitions */
+/* Описывает структуру CANMSGID_BITS; порядок полей определяет расположение данных. */
struct CANMSGID_BITS { // bits description
+ /* Битовое поле EXTMSGID_L, ширина 16 бит; данные EXTMSGID_L. */
Uint16 EXTMSGID_L:16; // 0:15
+ /* Битовое поле EXTMSGID_H, ширина 2 бит; данные EXTMSGID_H. */
Uint16 EXTMSGID_H:2; // 16:17
+ /* Битовое поле STDMSGID, ширина 11 бит; данные STDMSGID. */
Uint16 STDMSGID:11; // 18:28
+ /* Битовое поле AAM, ширина 1 бит; данные AAM. */
Uint16 AAM:1; // 29
+ /* Битовое поле AME, ширина 1 бит; данные AME. */
Uint16 AME:1; // 30
+ /* Битовое поле IDE, ширина 1 бит; данные IDE. */
Uint16 IDE:1; // 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANMSGID_REG в одной области памяти. */
union CANMSGID_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANMSGID_BITS bit;; порядок полей определяет расположение данных. */
struct CANMSGID_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Message Control Register (MSGCTRL) bit definitions */
+/* Описывает структуру CANMSGCTRL_BITS; порядок полей определяет расположение данных. */
struct CANMSGCTRL_BITS { // bits description
+ /* Битовое поле DLC, ширина 4 бит; данные DLC. */
Uint16 DLC:4; // 0:3
+ /* Битовое поле RTR, ширина 1 бит; данные RTR. */
Uint16 RTR:1; // 4
+ /* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 7:5 reserved
+ /* Битовое поле TPL, ширина 5 бит; данные TPL. */
Uint16 TPL:5; // 12:8
+ /* Битовое поле rsvd2, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:3; // 15:13 reserved
+ /* Битовое поле rsvd3, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:16; // 31:16 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANMSGCTRL_REG в одной области памяти. */
union CANMSGCTRL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANMSGCTRL_BITS bit;; порядок полей определяет расположение данных. */
struct CANMSGCTRL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Message Data Register low (MDR_L) word definitions */
+/* Описывает структуру CANMDL_WORDS; порядок полей определяет расположение данных. */
struct CANMDL_WORDS { // bits description
+ /* Битовое поле LOW_WORD, ширина 16 бит; LOW слово. */
Uint16 LOW_WORD:16; // 0:15
+ /* Битовое поле HI_WORD, ширина 16 бит; HI слово. */
Uint16 HI_WORD:16; // 31:16
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Message Data Register low (MDR_L) byte definitions */
+/* Описывает структуру CANMDL_BYTES; порядок полей определяет расположение данных. */
struct CANMDL_BYTES { // bits description
+ /* Битовое поле BYTE3, ширина 8 бит; данные BYTE3. */
Uint16 BYTE3:8; // 31:24
+ /* Битовое поле BYTE2, ширина 8 бит; данные BYTE2. */
Uint16 BYTE2:8; // 23:16
+ /* Битовое поле BYTE1, ширина 8 бит; данные BYTE1. */
Uint16 BYTE1:8; // 15:8
+ /* Битовое поле BYTE0, ширина 8 бит; данные BYTE0. */
Uint16 BYTE0:8; // 7:0
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANMDL_REG в одной области памяти. */
union CANMDL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANMDL_WORDS word;; порядок полей определяет расположение данных. */
struct CANMDL_WORDS word;
+ /* Описывает структуру CANMDL_BYTES byte;; порядок полей определяет расположение данных. */
struct CANMDL_BYTES byte;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Message Data Register high (MDR_H) word definitions */
+/* Описывает структуру CANMDH_WORDS; порядок полей определяет расположение данных. */
struct CANMDH_WORDS { // bits description
+ /* Битовое поле LOW_WORD, ширина 16 бит; LOW слово. */
Uint16 LOW_WORD:16; // 0:15
+ /* Битовое поле HI_WORD, ширина 16 бит; HI слово. */
Uint16 HI_WORD:16; // 31:16
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Message Data Register low (MDR_H) byte definitions */
+/* Описывает структуру CANMDH_BYTES; порядок полей определяет расположение данных. */
struct CANMDH_BYTES { // bits description
+ /* Битовое поле BYTE7, ширина 8 бит; данные BYTE7. */
Uint16 BYTE7:8; // 63:56
+ /* Битовое поле BYTE6, ширина 8 бит; данные BYTE6. */
Uint16 BYTE6:8; // 55:48
+ /* Битовое поле BYTE5, ширина 8 бит; данные BYTE5. */
Uint16 BYTE5:8; // 47:40
+ /* Битовое поле BYTE4, ширина 8 бит; данные BYTE4. */
Uint16 BYTE4:8; // 39:32
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANMDH_REG в одной области памяти. */
union CANMDH_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANMDH_WORDS word;; порядок полей определяет расположение данных. */
struct CANMDH_WORDS word;
+ /* Описывает структуру CANMDH_BYTES byte;; порядок полей определяет расположение данных. */
struct CANMDH_BYTES byte;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру MBOX; порядок полей определяет расположение данных. */
struct MBOX {
+ /* Объединяет несколько представлений CANMSGID_REG MSGID; в одной области памяти. */
union CANMSGID_REG MSGID;
+ /* Объединяет несколько представлений CANMSGCTRL_REG MSGCTRL; в одной области памяти. */
union CANMSGCTRL_REG MSGCTRL;
+ /* Объединяет несколько представлений CANMDL_REG MDL; в одной области памяти. */
union CANMDL_REG MDL;
+ /* Объединяет несколько представлений CANMDH_REG MDH; в одной области памяти. */
union CANMDH_REG MDH;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/**************************************/
/* eCAN Mailboxes */
/**************************************/
+/* Описывает структуру ECAN_MBOXES; порядок полей определяет расположение данных. */
struct ECAN_MBOXES {
+ /* Описывает структуру MBOX MBOX0;; порядок полей определяет расположение данных. */
struct MBOX MBOX0;
+ /* Описывает структуру MBOX MBOX1;; порядок полей определяет расположение данных. */
struct MBOX MBOX1;
+ /* Описывает структуру MBOX MBOX2;; порядок полей определяет расположение данных. */
struct MBOX MBOX2;
+ /* Описывает структуру MBOX MBOX3;; порядок полей определяет расположение данных. */
struct MBOX MBOX3;
+ /* Описывает структуру MBOX MBOX4;; порядок полей определяет расположение данных. */
struct MBOX MBOX4;
+ /* Описывает структуру MBOX MBOX5;; порядок полей определяет расположение данных. */
struct MBOX MBOX5;
+ /* Описывает структуру MBOX MBOX6;; порядок полей определяет расположение данных. */
struct MBOX MBOX6;
+ /* Описывает структуру MBOX MBOX7;; порядок полей определяет расположение данных. */
struct MBOX MBOX7;
+ /* Описывает структуру MBOX MBOX8;; порядок полей определяет расположение данных. */
struct MBOX MBOX8;
+ /* Описывает структуру MBOX MBOX9;; порядок полей определяет расположение данных. */
struct MBOX MBOX9;
+ /* Описывает структуру MBOX MBOX10;; порядок полей определяет расположение данных. */
struct MBOX MBOX10;
+ /* Описывает структуру MBOX MBOX11;; порядок полей определяет расположение данных. */
struct MBOX MBOX11;
+ /* Описывает структуру MBOX MBOX12;; порядок полей определяет расположение данных. */
struct MBOX MBOX12;
+ /* Описывает структуру MBOX MBOX13;; порядок полей определяет расположение данных. */
struct MBOX MBOX13;
+ /* Описывает структуру MBOX MBOX14;; порядок полей определяет расположение данных. */
struct MBOX MBOX14;
+ /* Описывает структуру MBOX MBOX15;; порядок полей определяет расположение данных. */
struct MBOX MBOX15;
+ /* Описывает структуру MBOX MBOX16;; порядок полей определяет расположение данных. */
struct MBOX MBOX16;
+ /* Описывает структуру MBOX MBOX17;; порядок полей определяет расположение данных. */
struct MBOX MBOX17;
+ /* Описывает структуру MBOX MBOX18;; порядок полей определяет расположение данных. */
struct MBOX MBOX18;
+ /* Описывает структуру MBOX MBOX19;; порядок полей определяет расположение данных. */
struct MBOX MBOX19;
+ /* Описывает структуру MBOX MBOX20;; порядок полей определяет расположение данных. */
struct MBOX MBOX20;
+ /* Описывает структуру MBOX MBOX21;; порядок полей определяет расположение данных. */
struct MBOX MBOX21;
+ /* Описывает структуру MBOX MBOX22;; порядок полей определяет расположение данных. */
struct MBOX MBOX22;
+ /* Описывает структуру MBOX MBOX23;; порядок полей определяет расположение данных. */
struct MBOX MBOX23;
+ /* Описывает структуру MBOX MBOX24;; порядок полей определяет расположение данных. */
struct MBOX MBOX24;
+ /* Описывает структуру MBOX MBOX25;; порядок полей определяет расположение данных. */
struct MBOX MBOX25;
+ /* Описывает структуру MBOX MBOX26;; порядок полей определяет расположение данных. */
struct MBOX MBOX26;
+ /* Описывает структуру MBOX MBOX27;; порядок полей определяет расположение данных. */
struct MBOX MBOX27;
+ /* Описывает структуру MBOX MBOX28;; порядок полей определяет расположение данных. */
struct MBOX MBOX28;
+ /* Описывает структуру MBOX MBOX29;; порядок полей определяет расположение данных. */
struct MBOX MBOX29;
+ /* Описывает структуру MBOX MBOX30;; порядок полей определяет расположение данных. */
struct MBOX MBOX30;
+ /* Описывает структуру MBOX MBOX31;; порядок полей определяет расположение данных. */
struct MBOX MBOX31;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* eCAN Local Acceptance Mask (LAM) bit definitions */
+/* Описывает структуру CANLAM_BITS; порядок полей определяет расположение данных. */
struct CANLAM_BITS { // bits description
+ /* Битовое поле LAM_L, ширина 16 бит; данные LAM_L. */
Uint16 LAM_L:16; // 0:15
+ /* Битовое поле LAM_H, ширина 13 бит; данные LAM_H. */
Uint16 LAM_H:13; // 16:28
+ /* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 29:30 reserved
+ /* Битовое поле LAMI, ширина 1 бит; данные LAMI. */
Uint16 LAMI:1; // 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CANLAM_REG в одной области памяти. */
union CANLAM_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CANLAM_BITS bit;; порядок полей определяет расположение данных. */
struct CANLAM_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -1025,135 +1858,250 @@ union CANLAM_REG {
/**************************************/
/* eCAN LAM File */
+/* Описывает структуру LAM_REGS; порядок полей определяет расположение данных. */
struct LAM_REGS {
+ /* Объединяет несколько представлений CANLAM_REG LAM0; в одной области памяти. */
union CANLAM_REG LAM0;
+ /* Объединяет несколько представлений CANLAM_REG LAM1; в одной области памяти. */
union CANLAM_REG LAM1;
+ /* Объединяет несколько представлений CANLAM_REG LAM2; в одной области памяти. */
union CANLAM_REG LAM2;
+ /* Объединяет несколько представлений CANLAM_REG LAM3; в одной области памяти. */
union CANLAM_REG LAM3;
+ /* Объединяет несколько представлений CANLAM_REG LAM4; в одной области памяти. */
union CANLAM_REG LAM4;
+ /* Объединяет несколько представлений CANLAM_REG LAM5; в одной области памяти. */
union CANLAM_REG LAM5;
+ /* Объединяет несколько представлений CANLAM_REG LAM6; в одной области памяти. */
union CANLAM_REG LAM6;
+ /* Объединяет несколько представлений CANLAM_REG LAM7; в одной области памяти. */
union CANLAM_REG LAM7;
+ /* Объединяет несколько представлений CANLAM_REG LAM8; в одной области памяти. */
union CANLAM_REG LAM8;
+ /* Объединяет несколько представлений CANLAM_REG LAM9; в одной области памяти. */
union CANLAM_REG LAM9;
+ /* Объединяет несколько представлений CANLAM_REG LAM10; в одной области памяти. */
union CANLAM_REG LAM10;
+ /* Объединяет несколько представлений CANLAM_REG LAM11; в одной области памяти. */
union CANLAM_REG LAM11;
+ /* Объединяет несколько представлений CANLAM_REG LAM12; в одной области памяти. */
union CANLAM_REG LAM12;
+ /* Объединяет несколько представлений CANLAM_REG LAM13; в одной области памяти. */
union CANLAM_REG LAM13;
+ /* Объединяет несколько представлений CANLAM_REG LAM14; в одной области памяти. */
union CANLAM_REG LAM14;
+ /* Объединяет несколько представлений CANLAM_REG LAM15; в одной области памяти. */
union CANLAM_REG LAM15;
+ /* Объединяет несколько представлений CANLAM_REG LAM16; в одной области памяти. */
union CANLAM_REG LAM16;
+ /* Объединяет несколько представлений CANLAM_REG LAM17; в одной области памяти. */
union CANLAM_REG LAM17;
+ /* Объединяет несколько представлений CANLAM_REG LAM18; в одной области памяти. */
union CANLAM_REG LAM18;
+ /* Объединяет несколько представлений CANLAM_REG LAM19; в одной области памяти. */
union CANLAM_REG LAM19;
+ /* Объединяет несколько представлений CANLAM_REG LAM20; в одной области памяти. */
union CANLAM_REG LAM20;
+ /* Объединяет несколько представлений CANLAM_REG LAM21; в одной области памяти. */
union CANLAM_REG LAM21;
+ /* Объединяет несколько представлений CANLAM_REG LAM22; в одной области памяти. */
union CANLAM_REG LAM22;
+ /* Объединяет несколько представлений CANLAM_REG LAM23; в одной области памяти. */
union CANLAM_REG LAM23;
+ /* Объединяет несколько представлений CANLAM_REG LAM24; в одной области памяти. */
union CANLAM_REG LAM24;
+ /* Объединяет несколько представлений CANLAM_REG LAM25; в одной области памяти. */
union CANLAM_REG LAM25;
+ /* Объединяет несколько представлений CANLAM_REG LAM26; в одной области памяти. */
union CANLAM_REG LAM26;
+ /* Объединяет несколько представлений CANLAM_REG LAM27; в одной области памяти. */
union CANLAM_REG LAM27;
+ /* Объединяет несколько представлений CANLAM_REG LAM28; в одной области памяти. */
union CANLAM_REG LAM28;
+ /* Объединяет несколько представлений CANLAM_REG LAM29; в одной области памяти. */
union CANLAM_REG LAM29;
+ /* Объединяет несколько представлений CANLAM_REG LAM30; в одной области памяти. */
union CANLAM_REG LAM30;
+ /* Объединяет несколько представлений CANLAM_REG LAM31; в одной области памяти. */
union CANLAM_REG LAM31;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Mailbox MOTS File */
+/* Описывает структуру MOTS_REGS; порядок полей определяет расположение данных. */
struct MOTS_REGS {
+ /* Объявляет MOTS0 — данные MOTS0. */
Uint32 MOTS0;
+ /* Объявляет MOTS1 — данные MOTS1. */
Uint32 MOTS1;
+ /* Объявляет MOTS2 — данные MOTS2. */
Uint32 MOTS2;
+ /* Объявляет MOTS3 — данные MOTS3. */
Uint32 MOTS3;
+ /* Объявляет MOTS4 — данные MOTS4. */
Uint32 MOTS4;
+ /* Объявляет MOTS5 — данные MOTS5. */
Uint32 MOTS5;
+ /* Объявляет MOTS6 — данные MOTS6. */
Uint32 MOTS6;
+ /* Объявляет MOTS7 — данные MOTS7. */
Uint32 MOTS7;
+ /* Объявляет MOTS8 — данные MOTS8. */
Uint32 MOTS8;
+ /* Объявляет MOTS9 — данные MOTS9. */
Uint32 MOTS9;
+ /* Объявляет MOTS10 — данные MOTS10. */
Uint32 MOTS10;
+ /* Объявляет MOTS11 — данные MOTS11. */
Uint32 MOTS11;
+ /* Объявляет MOTS12 — данные MOTS12. */
Uint32 MOTS12;
+ /* Объявляет MOTS13 — данные MOTS13. */
Uint32 MOTS13;
+ /* Объявляет MOTS14 — данные MOTS14. */
Uint32 MOTS14;
+ /* Объявляет MOTS15 — данные MOTS15. */
Uint32 MOTS15;
+ /* Объявляет MOTS16 — данные MOTS16. */
Uint32 MOTS16;
+ /* Объявляет MOTS17 — данные MOTS17. */
Uint32 MOTS17;
+ /* Объявляет MOTS18 — данные MOTS18. */
Uint32 MOTS18;
+ /* Объявляет MOTS19 — данные MOTS19. */
Uint32 MOTS19;
+ /* Объявляет MOTS20 — данные MOTS20. */
Uint32 MOTS20;
+ /* Объявляет MOTS21 — данные MOTS21. */
Uint32 MOTS21;
+ /* Объявляет MOTS22 — данные MOTS22. */
Uint32 MOTS22;
+ /* Объявляет MOTS23 — данные MOTS23. */
Uint32 MOTS23;
+ /* Объявляет MOTS24 — данные MOTS24. */
Uint32 MOTS24;
+ /* Объявляет MOTS25 — данные MOTS25. */
Uint32 MOTS25;
+ /* Объявляет MOTS26 — данные MOTS26. */
Uint32 MOTS26;
+ /* Объявляет MOTS27 — данные MOTS27. */
Uint32 MOTS27;
+ /* Объявляет MOTS28 — данные MOTS28. */
Uint32 MOTS28;
+ /* Объявляет MOTS29 — данные MOTS29. */
Uint32 MOTS29;
+ /* Объявляет MOTS30 — данные MOTS30. */
Uint32 MOTS30;
+ /* Объявляет MOTS31 — данные MOTS31. */
Uint32 MOTS31;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Mailbox MOTO File */
+/* Описывает структуру MOTO_REGS; порядок полей определяет расположение данных. */
struct MOTO_REGS {
+ /* Объявляет MOTO0 — данные MOTO0. */
Uint32 MOTO0;
+ /* Объявляет MOTO1 — данные MOTO1. */
Uint32 MOTO1;
+ /* Объявляет MOTO2 — данные MOTO2. */
Uint32 MOTO2;
+ /* Объявляет MOTO3 — данные MOTO3. */
Uint32 MOTO3;
+ /* Объявляет MOTO4 — данные MOTO4. */
Uint32 MOTO4;
+ /* Объявляет MOTO5 — данные MOTO5. */
Uint32 MOTO5;
+ /* Объявляет MOTO6 — данные MOTO6. */
Uint32 MOTO6;
+ /* Объявляет MOTO7 — данные MOTO7. */
Uint32 MOTO7;
+ /* Объявляет MOTO8 — данные MOTO8. */
Uint32 MOTO8;
+ /* Объявляет MOTO9 — данные MOTO9. */
Uint32 MOTO9;
+ /* Объявляет MOTO10 — данные MOTO10. */
Uint32 MOTO10;
+ /* Объявляет MOTO11 — данные MOTO11. */
Uint32 MOTO11;
+ /* Объявляет MOTO12 — данные MOTO12. */
Uint32 MOTO12;
+ /* Объявляет MOTO13 — данные MOTO13. */
Uint32 MOTO13;
+ /* Объявляет MOTO14 — данные MOTO14. */
Uint32 MOTO14;
+ /* Объявляет MOTO15 — данные MOTO15. */
Uint32 MOTO15;
+ /* Объявляет MOTO16 — данные MOTO16. */
Uint32 MOTO16;
+ /* Объявляет MOTO17 — данные MOTO17. */
Uint32 MOTO17;
+ /* Объявляет MOTO18 — данные MOTO18. */
Uint32 MOTO18;
+ /* Объявляет MOTO19 — данные MOTO19. */
Uint32 MOTO19;
+ /* Объявляет MOTO20 — данные MOTO20. */
Uint32 MOTO20;
+ /* Объявляет MOTO21 — данные MOTO21. */
Uint32 MOTO21;
+ /* Объявляет MOTO22 — данные MOTO22. */
Uint32 MOTO22;
+ /* Объявляет MOTO23 — данные MOTO23. */
Uint32 MOTO23;
+ /* Объявляет MOTO24 — данные MOTO24. */
Uint32 MOTO24;
+ /* Объявляет MOTO25 — данные MOTO25. */
Uint32 MOTO25;
+ /* Объявляет MOTO26 — данные MOTO26. */
Uint32 MOTO26;
+ /* Объявляет MOTO27 — данные MOTO27. */
Uint32 MOTO27;
+ /* Объявляет MOTO28 — данные MOTO28. */
Uint32 MOTO28;
+ /* Объявляет MOTO29 — данные MOTO29. */
Uint32 MOTO29;
+ /* Объявляет MOTO30 — данные MOTO30. */
Uint32 MOTO30;
+ /* Объявляет MOTO31 — данные MOTO31. */
Uint32 MOTO31;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// eCAN External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAN_REGS ECanaRegs;; порядок элементов сохраняется. */
extern volatile struct ECAN_REGS ECanaRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAN_MBOXES ECanaMboxes;; порядок элементов сохраняется. */
extern volatile struct ECAN_MBOXES ECanaMboxes;
+/* Продолжает список аргументов, полей или выражение extern volatile struct LAM_REGS ECanaLAMRegs;; порядок элементов сохраняется. */
extern volatile struct LAM_REGS ECanaLAMRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct MOTO_REGS ECanaMOTORegs;; порядок элементов сохраняется. */
extern volatile struct MOTO_REGS ECanaMOTORegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct MOTS_REGS ECanaMOTSRegs;; порядок элементов сохраняется. */
extern volatile struct MOTS_REGS ECanaMOTSRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAN_REGS ECanbRegs;; порядок элементов сохраняется. */
extern volatile struct ECAN_REGS ECanbRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAN_MBOXES ECanbMboxes;; порядок элементов сохраняется. */
extern volatile struct ECAN_MBOXES ECanbMboxes;
+/* Продолжает список аргументов, полей или выражение extern volatile struct LAM_REGS ECanbLAMRegs;; порядок элементов сохраняется. */
extern volatile struct LAM_REGS ECanbLAMRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct MOTO_REGS ECanbMOTORegs;; порядок элементов сохраняется. */
extern volatile struct MOTO_REGS ECanbMOTORegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct MOTS_REGS ECanbMOTSRegs;; порядок элементов сохраняется. */
extern volatile struct MOTS_REGS ECanbMOTSRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_ECAN.H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_ECap.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_ECap.h
index b82bd7f..e5b1b2d 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_ECap.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_ECap.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание ECap для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:07 $
//###########################################################################
@@ -11,139 +12,232 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_ECAP_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_ECAP_H
+/* Определяет защитный символ или переключатель DSP2833x_ECAP_H для последующей компиляции. */
#define DSP2833x_ECAP_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//----------------------------------------------------
-// Capture control register 1 bit definitions */
+// Capture control register 1 bit definitions */
+/* Описывает структуру ECCTL1_BITS; порядок полей определяет расположение данных. */
struct ECCTL1_BITS { // bits description
+ /* Битовое поле CAP1POL, ширина 1 бит; данные CAP1POL. */
Uint16 CAP1POL:1; // 0 Capture Event 1 Polarity select
+ /* Битовое поле CTRRST1, ширина 1 бит; данные CTRRST1. */
Uint16 CTRRST1:1; // 1 Counter Reset on Capture Event 1
+ /* Битовое поле CAP2POL, ширина 1 бит; данные CAP2POL. */
Uint16 CAP2POL:1; // 2 Capture Event 2 Polarity select
+ /* Битовое поле CTRRST2, ширина 1 бит; данные CTRRST2. */
Uint16 CTRRST2:1; // 3 Counter Reset on Capture Event 2
+ /* Битовое поле CAP3POL, ширина 1 бит; данные CAP3POL. */
Uint16 CAP3POL:1; // 4 Capture Event 3 Polarity select
+ /* Битовое поле CTRRST3, ширина 1 бит; данные CTRRST3. */
Uint16 CTRRST3:1; // 5 Counter Reset on Capture Event 3
+ /* Битовое поле CAP4POL, ширина 1 бит; данные CAP4POL. */
Uint16 CAP4POL:1; // 6 Capture Event 4 Polarity select
+ /* Битовое поле CTRRST4, ширина 1 бит; данные CTRRST4. */
Uint16 CTRRST4:1; // 7 Counter Reset on Capture Event 4
+ /* Битовое поле CAPLDEN, ширина 1 бит; данные CAPLDEN. */
Uint16 CAPLDEN:1; // 8 Enable Loading CAP1-4 regs on a Cap Event
+ /* Битовое поле PRESCALE, ширина 5 бит; предделитель. */
Uint16 PRESCALE:5; // 13:9 Event Filter prescale select
+ /* Битовое поле FREE_SOFT, ширина 2 бит; данные FREE_SOFT. */
Uint16 FREE_SOFT:2; // 15:14 Emulation mode
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ECCTL1_REG в одной области памяти. */
union ECCTL1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ECCTL1_BITS bit;; порядок полей определяет расположение данных. */
struct ECCTL1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
-// In V1.1 the STOPVALUE bit field was changed to
+// In V1.1 the STOPVALUE bit field was changed to
// STOP_WRAP. This correlated to a silicon change from
-// F2833x Rev 0 to Rev A.
+// F2833x Rev 0 to Rev A.
//----------------------------------------------------
-// Capture control register 2 bit definitions */
+// Capture control register 2 bit definitions */
+/* Описывает структуру ECCTL2_BITS; порядок полей определяет расположение данных. */
struct ECCTL2_BITS { // bits description
+ /* Битовое поле CONT_ONESHT, ширина 1 бит; данные CONT_ONESHT. */
Uint16 CONT_ONESHT:1; // 0 Continuous or one-shot
+ /* Битовое поле STOP_WRAP, ширина 2 бит; данные STOP_WRAP. */
Uint16 STOP_WRAP:2; // 2:1 Stop value for one-shot, Wrap for continuous
+ /* Битовое поле REARM, ширина 1 бит; данные REARM. */
Uint16 REARM:1; // 3 One-shot re-arm
+ /* Битовое поле TSCTRSTOP, ширина 1 бит; данные TSCTRSTOP. */
Uint16 TSCTRSTOP:1; // 4 TSCNT counter stop
+ /* Битовое поле SYNCI_EN, ширина 1 бит; данные SYNCI_EN. */
Uint16 SYNCI_EN:1; // 5 Counter sync-in select
+ /* Битовое поле SYNCO_SEL, ширина 2 бит; данные SYNCO_SEL. */
Uint16 SYNCO_SEL:2; // 7:6 Sync-out mode
+ /* Битовое поле SWSYNC, ширина 1 бит; данные SWSYNC. */
Uint16 SWSYNC:1; // 8 SW forced counter sync
+ /* Битовое поле CAP_APWM, ширина 1 бит; данные CAP_APWM. */
Uint16 CAP_APWM:1; // 9 CAP/APWM operating mode select
+ /* Битовое поле APWMPOL, ширина 1 бит; данные APWMPOL. */
Uint16 APWMPOL:1; // 10 APWM output polarity select
- Uint16 rsvd1:5; // 15:11
+ /* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd1:5; // 15:11
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ECCTL2_REG в одной области памяти. */
union ECCTL2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ECCTL2_BITS bit;; порядок полей определяет расположение данных. */
struct ECCTL2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// ECAP interrupt enable register bit definitions */
+// ECAP interrupt enable register bit definitions */
+/* Описывает структуру ECEINT_BITS; порядок полей определяет расположение данных. */
struct ECEINT_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 0 reserved
+ /* Битовое поле CEVT1, ширина 1 бит; данные CEVT1. */
Uint16 CEVT1:1; // 1 Capture Event 1 Interrupt Enable
+ /* Битовое поле CEVT2, ширина 1 бит; данные CEVT2. */
Uint16 CEVT2:1; // 2 Capture Event 2 Interrupt Enable
+ /* Битовое поле CEVT3, ширина 1 бит; данные CEVT3. */
Uint16 CEVT3:1; // 3 Capture Event 3 Interrupt Enable
- Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Enable
+ /* Битовое поле CEVT4, ширина 1 бит; данные CEVT4. */
+ Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Enable
+ /* Битовое поле CTROVF, ширина 1 бит; данные CTROVF. */
Uint16 CTROVF:1; // 5 Counter Overflow Interrupt Enable
+ /* Битовое поле CTR_EQ_PRD, ширина 1 бит; данные CTR_EQ_PRD. */
Uint16 CTR_EQ_PRD:1; // 6 Period Equal Interrupt Enable
+ /* Битовое поле CTR_EQ_CMP, ширина 1 бит; данные CTR_EQ_CMP. */
Uint16 CTR_EQ_CMP:1; // 7 Compare Equal Interrupt Enable
+ /* Битовое поле rsvd2, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ECEINT_REG в одной области памяти. */
union ECEINT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ECEINT_BITS bit;; порядок полей определяет расположение данных. */
struct ECEINT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// ECAP interrupt flag register bit definitions */
+// ECAP interrupt flag register bit definitions */
+/* Описывает структуру ECFLG_BITS; порядок полей определяет расположение данных. */
struct ECFLG_BITS { // bits description
+ /* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 Global Flag
+ /* Битовое поле CEVT1, ширина 1 бит; данные CEVT1. */
Uint16 CEVT1:1; // 1 Capture Event 1 Interrupt Flag
+ /* Битовое поле CEVT2, ширина 1 бит; данные CEVT2. */
Uint16 CEVT2:1; // 2 Capture Event 2 Interrupt Flag
+ /* Битовое поле CEVT3, ширина 1 бит; данные CEVT3. */
Uint16 CEVT3:1; // 3 Capture Event 3 Interrupt Flag
- Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Flag
+ /* Битовое поле CEVT4, ширина 1 бит; данные CEVT4. */
+ Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Flag
+ /* Битовое поле CTROVF, ширина 1 бит; данные CTROVF. */
Uint16 CTROVF:1; // 5 Counter Overflow Interrupt Flag
+ /* Битовое поле CTR_EQ_PRD, ширина 1 бит; данные CTR_EQ_PRD. */
Uint16 CTR_EQ_PRD:1; // 6 Period Equal Interrupt Flag
+ /* Битовое поле CTR_EQ_CMP, ширина 1 бит; данные CTR_EQ_CMP. */
Uint16 CTR_EQ_CMP:1; // 7 Compare Equal Interrupt Flag
+ /* Битовое поле rsvd2, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ECFLG_REG в одной области памяти. */
union ECFLG_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ECFLG_BITS bit;; порядок полей определяет расположение данных. */
struct ECFLG_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
+/* Описывает структуру ECAP_REGS; порядок полей определяет расположение данных. */
struct ECAP_REGS {
- Uint32 TSCTR; // Time stamp counter
+ /* Объявляет TSCTR — данные TSCTR. */
+ Uint32 TSCTR; // Time stamp counter
+ /* Объявляет CTRPHS — данные CTRPHS. */
Uint32 CTRPHS; // Counter phase
- Uint32 CAP1; // Capture 1
- Uint32 CAP2; // Capture 2
- Uint32 CAP3; // Capture 3
- Uint32 CAP4; // Capture 4
+ /* Объявляет CAP1 — данные CAP1. */
+ Uint32 CAP1; // Capture 1
+ /* Объявляет CAP2 — данные CAP2. */
+ Uint32 CAP2; // Capture 2
+ /* Объявляет CAP3 — данные CAP3. */
+ Uint32 CAP3; // Capture 3
+ /* Объявляет CAP4 — данные CAP4. */
+ Uint32 CAP4; // Capture 4
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1[8]; // reserved
+ /* Объединяет несколько представлений ECCTL1_REG ECCTL1; в одной области памяти. */
union ECCTL1_REG ECCTL1; // Capture Control Reg 1
+ /* Объединяет несколько представлений ECCTL2_REG ECCTL2; в одной области памяти. */
union ECCTL2_REG ECCTL2; // Capture Control Reg 2
+ /* Объединяет несколько представлений ECEINT_REG ECEINT; в одной области памяти. */
union ECEINT_REG ECEINT; // ECAP interrupt enable
+ /* Объединяет несколько представлений ECFLG_REG ECFLG; в одной области памяти. */
union ECFLG_REG ECFLG; // ECAP interrupt flags
+ /* Объединяет несколько представлений ECFLG_REG ECCLR; в одной области памяти. */
union ECFLG_REG ECCLR; // ECAP interrupt clear
+ /* Объединяет несколько представлений ECEINT_REG ECFRC; в одной области памяти. */
union ECEINT_REG ECFRC; // ECAP interrupt force
- Uint16 rsvd2[6]; // reserved
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd2[6]; // reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
-
-
+
+
//---------------------------------------------------------------------------
// GPI/O External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap1Regs;; порядок элементов сохраняется. */
extern volatile struct ECAP_REGS ECap1Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap2Regs;; порядок элементов сохраняется. */
extern volatile struct ECAP_REGS ECap2Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap3Regs;; порядок элементов сохраняется. */
extern volatile struct ECAP_REGS ECap3Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap4Regs;; порядок элементов сохраняется. */
extern volatile struct ECAP_REGS ECap4Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap5Regs;; порядок элементов сохраняется. */
extern volatile struct ECAP_REGS ECap5Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap6Regs;; порядок элементов сохраняется. */
extern volatile struct ECAP_REGS ECap6Regs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_ECAP_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_EPwm.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_EPwm.h
index 9195752..7193a7b 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_EPwm.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_EPwm.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание EPwm для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:10 $
//###########################################################################
@@ -11,111 +12,190 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_EPWM_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_EPWM_H
+/* Определяет защитный символ или переключатель DSP2833x_EPWM_H для последующей компиляции. */
#define DSP2833x_EPWM_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//----------------------------------------------------
-// Time base control register bit definitions */
+// Time base control register bit definitions */
+/* Описывает структуру TBCTL_BITS; порядок полей определяет расположение данных. */
struct TBCTL_BITS { // bits description
+ /* Битовое поле CTRMODE, ширина 2 бит; данные CTRMODE. */
Uint16 CTRMODE:2; // 1:0 Counter Mode
+ /* Битовое поле PHSEN, ширина 1 бит; данные PHSEN. */
Uint16 PHSEN:1; // 2 Phase load enable
+ /* Битовое поле PRDLD, ширина 1 бит; данные PRDLD. */
Uint16 PRDLD:1; // 3 Active period load
+ /* Битовое поле SYNCOSEL, ширина 2 бит; данные SYNCOSEL. */
Uint16 SYNCOSEL:2; // 5:4 Sync output select
+ /* Битовое поле SWFSYNC, ширина 1 бит; данные SWFSYNC. */
Uint16 SWFSYNC:1; // 6 Software force sync pulse
+ /* Битовое поле HSPCLKDIV, ширина 3 бит; данные HSPCLKDIV. */
Uint16 HSPCLKDIV:3; // 9:7 High speed time pre-scale
+ /* Битовое поле CLKDIV, ширина 3 бит; данные CLKDIV. */
Uint16 CLKDIV:3; // 12:10 Timebase clock pre-scale
+ /* Битовое поле PHSDIR, ширина 1 бит; данные PHSDIR. */
Uint16 PHSDIR:1; // 13 Phase Direction
- Uint16 FREE_SOFT:2; // 15:14 Emulation mode
+ /* Битовое поле FREE_SOFT, ширина 2 бит; данные FREE_SOFT. */
+ Uint16 FREE_SOFT:2; // 15:14 Emulation mode
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TBCTL_REG в одной области памяти. */
union TBCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TBCTL_BITS bit;; порядок полей определяет расположение данных. */
struct TBCTL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Time base status register bit definitions */
+// Time base status register bit definitions */
+/* Описывает структуру TBSTS_BITS; порядок полей определяет расположение данных. */
struct TBSTS_BITS { // bits description
+ /* Битовое поле CTRDIR, ширина 1 бит; данные CTRDIR. */
Uint16 CTRDIR:1; // 0 Counter direction status
+ /* Битовое поле SYNCI, ширина 1 бит; данные SYNCI. */
Uint16 SYNCI:1; // 1 External input sync status
+ /* Битовое поле CTRMAX, ширина 1 бит; данные CTRMAX. */
Uint16 CTRMAX:1; // 2 Counter max latched status
+ /* Битовое поле rsvd1, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:13; // 15:3 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TBSTS_REG в одной области памяти. */
union TBSTS_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TBSTS_BITS bit;; порядок полей определяет расположение данных. */
struct TBSTS_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Compare control register bit definitions */
+// Compare control register bit definitions */
+/* Описывает структуру CMPCTL_BITS; порядок полей определяет расположение данных. */
struct CMPCTL_BITS { // bits description
+ /* Битовое поле LOADAMODE, ширина 2 бит; данные LOADAMODE. */
Uint16 LOADAMODE:2; // 0:1 Active compare A
+ /* Битовое поле LOADBMODE, ширина 2 бит; данные LOADBMODE. */
Uint16 LOADBMODE:2; // 3:2 Active compare B
+ /* Битовое поле SHDWAMODE, ширина 1 бит; данные SHDWAMODE. */
Uint16 SHDWAMODE:1; // 4 Compare A block operating mode
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 5 reserved
+ /* Битовое поле SHDWBMODE, ширина 1 бит; данные SHDWBMODE. */
Uint16 SHDWBMODE:1; // 6 Compare B block operating mode
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 7 reserved
+ /* Битовое поле SHDWAFULL, ширина 1 бит; данные SHDWAFULL. */
Uint16 SHDWAFULL:1; // 8 Compare A Shadow registers full Status
+ /* Битовое поле SHDWBFULL, ширина 1 бит; данные SHDWBFULL. */
Uint16 SHDWBFULL:1; // 9 Compare B Shadow registers full Status
+ /* Битовое поле rsvd3, ширина 6 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:6; // 15:10 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений CMPCTL_REG в одной области памяти. */
union CMPCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру CMPCTL_BITS bit;; порядок полей определяет расположение данных. */
struct CMPCTL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Action qualifier register bit definitions */
+// Action qualifier register bit definitions */
+/* Описывает структуру AQCTL_BITS; порядок полей определяет расположение данных. */
struct AQCTL_BITS { // bits description
+ /* Битовое поле ZRO, ширина 2 бит; данные ZRO. */
Uint16 ZRO:2; // 1:0 Action Counter = Zero
+ /* Битовое поле PRD, ширина 2 бит; данные PRD. */
Uint16 PRD:2; // 3:2 Action Counter = Period
+ /* Битовое поле CAU, ширина 2 бит; данные CAU. */
Uint16 CAU:2; // 5:4 Action Counter = Compare A up
+ /* Битовое поле CAD, ширина 2 бит; данные CAD. */
Uint16 CAD:2; // 7:6 Action Counter = Compare A down
+ /* Битовое поле CBU, ширина 2 бит; данные CBU. */
Uint16 CBU:2; // 9:8 Action Counter = Compare B up
+ /* Битовое поле CBD, ширина 2 бит; данные CBD. */
Uint16 CBD:2; // 11:10 Action Counter = Compare B down
+ /* Битовое поле rsvd, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:4; // 15:12 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений AQCTL_REG в одной области памяти. */
union AQCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру AQCTL_BITS bit;; порядок полей определяет расположение данных. */
struct AQCTL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Action qualifier SW force register bit definitions */
+// Action qualifier SW force register bit definitions */
+/* Описывает структуру AQSFRC_BITS; порядок полей определяет расположение данных. */
struct AQSFRC_BITS { // bits description
+ /* Битовое поле ACTSFA, ширина 2 бит; данные ACTSFA. */
Uint16 ACTSFA:2; // 1:0 Action when One-time SW Force A invoked
+ /* Битовое поле OTSFA, ширина 1 бит; данные OTSFA. */
Uint16 OTSFA:1; // 2 One-time SW Force A output
+ /* Битовое поле ACTSFB, ширина 2 бит; данные ACTSFB. */
Uint16 ACTSFB:2; // 4:3 Action when One-time SW Force B invoked
+ /* Битовое поле OTSFB, ширина 1 бит; данные OTSFB. */
Uint16 OTSFB:1; // 5 One-time SW Force A output
+ /* Битовое поле RLDCSF, ширина 2 бит; данные RLDCSF. */
Uint16 RLDCSF:2; // 7:6 Reload from Shadow options
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений AQSFRC_REG в одной области памяти. */
union AQSFRC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру AQSFRC_BITS bit;; порядок полей определяет расположение данных. */
struct AQSFRC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Action qualifier continuous SW force register bit definitions */
+// Action qualifier continuous SW force register bit definitions */
+/* Описывает структуру AQCSFRC_BITS; порядок полей определяет расположение данных. */
struct AQCSFRC_BITS { // bits description
+ /* Битовое поле CSFA, ширина 2 бит; данные CSFA. */
Uint16 CSFA:2; // 1:0 Continuous Software Force on output A
+ /* Битовое поле CSFB, ширина 2 бит; данные CSFB. */
Uint16 CSFB:2; // 3:2 Continuous Software Force on output B
+ /* Битовое поле rsvd1, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений AQCSFRC_REG в одной области памяти. */
union AQCSFRC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру AQCSFRC_BITS bit;; порядок полей определяет расположение данных. */
struct AQCSFRC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -125,297 +205,514 @@ union AQCSFRC_REG {
// This corresponds to changes in silicon as of F2833x devices
// Rev A silicon.
//----------------------------------------------------
-// Dead-band generator control register bit definitions
+// Dead-band generator control register bit definitions
+/* Описывает структуру DBCTL_BITS; порядок полей определяет расположение данных. */
struct DBCTL_BITS { // bits description
- Uint16 OUT_MODE:2; // 1:0 Dead Band Output Mode Control
- Uint16 POLSEL:2; // 3:2 Polarity Select Control
+ /* Битовое поле OUT_MODE, ширина 2 бит; OUT режим. */
+ Uint16 OUT_MODE:2; // 1:0 Dead Band Output Mode Control
+ /* Битовое поле POLSEL, ширина 2 бит; данные POLSEL. */
+ Uint16 POLSEL:2; // 3:2 Polarity Select Control
+ /* Битовое поле IN_MODE, ширина 2 бит; IN режим. */
Uint16 IN_MODE:2; // 5:4 Dead Band Input Select Mode Control
+ /* Битовое поле rsvd1, ширина 10 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:10; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений DBCTL_REG в одной области памяти. */
union DBCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру DBCTL_BITS bit;; порядок полей определяет расположение данных. */
struct DBCTL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Trip zone select register bit definitions
+// Trip zone select register bit definitions
+/* Описывает структуру TZSEL_BITS; порядок полей определяет расположение данных. */
struct TZSEL_BITS { // bits description
+ /* Битовое поле CBC1, ширина 1 бит; данные CBC1. */
Uint16 CBC1:1; // 0 TZ1 CBC select
+ /* Битовое поле CBC2, ширина 1 бит; данные CBC2. */
Uint16 CBC2:1; // 1 TZ2 CBC select
+ /* Битовое поле CBC3, ширина 1 бит; данные CBC3. */
Uint16 CBC3:1; // 2 TZ3 CBC select
+ /* Битовое поле CBC4, ширина 1 бит; данные CBC4. */
Uint16 CBC4:1; // 3 TZ4 CBC select
+ /* Битовое поле CBC5, ширина 1 бит; данные CBC5. */
Uint16 CBC5:1; // 4 TZ5 CBC select
+ /* Битовое поле CBC6, ширина 1 бит; данные CBC6. */
Uint16 CBC6:1; // 5 TZ6 CBC select
+ /* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 7:6 reserved
- Uint16 OSHT1:1; // 8 One-shot TZ1 select
- Uint16 OSHT2:1; // 9 One-shot TZ2 select
- Uint16 OSHT3:1; // 10 One-shot TZ3 select
- Uint16 OSHT4:1; // 11 One-shot TZ4 select
- Uint16 OSHT5:1; // 12 One-shot TZ5 select
- Uint16 OSHT6:1; // 13 One-shot TZ6 select
+ /* Битовое поле OSHT1, ширина 1 бит; данные OSHT1. */
+ Uint16 OSHT1:1; // 8 One-shot TZ1 select
+ /* Битовое поле OSHT2, ширина 1 бит; данные OSHT2. */
+ Uint16 OSHT2:1; // 9 One-shot TZ2 select
+ /* Битовое поле OSHT3, ширина 1 бит; данные OSHT3. */
+ Uint16 OSHT3:1; // 10 One-shot TZ3 select
+ /* Битовое поле OSHT4, ширина 1 бит; данные OSHT4. */
+ Uint16 OSHT4:1; // 11 One-shot TZ4 select
+ /* Битовое поле OSHT5, ширина 1 бит; данные OSHT5. */
+ Uint16 OSHT5:1; // 12 One-shot TZ5 select
+ /* Битовое поле OSHT6, ширина 1 бит; данные OSHT6. */
+ Uint16 OSHT6:1; // 13 One-shot TZ6 select
+ /* Битовое поле rsvd2, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:2; // 15:14 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TZSEL_REG в одной области памяти. */
union TZSEL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TZSEL_BITS bit;; порядок полей определяет расположение данных. */
struct TZSEL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Trip zone control register bit definitions */
+// Trip zone control register bit definitions */
+/* Описывает структуру TZCTL_BITS; порядок полей определяет расположение данных. */
struct TZCTL_BITS { // bits description
+ /* Битовое поле TZA, ширина 2 бит; данные TZA. */
Uint16 TZA:2; // 1:0 TZ1 to TZ6 Trip Action On EPWMxA
+ /* Битовое поле TZB, ширина 2 бит; данные TZB. */
Uint16 TZB:2; // 3:2 TZ1 to TZ6 Trip Action On EPWMxB
+ /* Битовое поле rsvd, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TZCTL_REG в одной области памяти. */
union TZCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TZCTL_BITS bit;; порядок полей определяет расположение данных. */
struct TZCTL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Trip zone control register bit definitions */
+// Trip zone control register bit definitions */
+/* Описывает структуру TZEINT_BITS; порядок полей определяет расположение данных. */
struct TZEINT_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 0 reserved
+ /* Битовое поле CBC, ширина 1 бит; данные CBC. */
Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int Enable
+ /* Битовое поле OST, ширина 1 бит; данные OST. */
Uint16 OST:1; // 2 Trip Zones One Shot Int Enable
+ /* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Объединяет несколько представлений TZEINT_REG в одной области памяти. */
union TZEINT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TZEINT_BITS bit;; порядок полей определяет расположение данных. */
struct TZEINT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Trip zone flag register bit definitions */
+// Trip zone flag register bit definitions */
+/* Описывает структуру TZFLG_BITS; порядок полей определяет расположение данных. */
struct TZFLG_BITS { // bits description
+ /* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 Global status
+ /* Битовое поле CBC, ширина 1 бит; данные CBC. */
Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int
+ /* Битовое поле OST, ширина 1 бит; данные OST. */
Uint16 OST:1; // 2 Trip Zones One Shot Int
+ /* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TZFLG_REG в одной области памяти. */
union TZFLG_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TZFLG_BITS bit;; порядок полей определяет расположение данных. */
struct TZFLG_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Trip zone flag clear register bit definitions */
+// Trip zone flag clear register bit definitions */
+/* Описывает структуру TZCLR_BITS; порядок полей определяет расположение данных. */
struct TZCLR_BITS { // bits description
+ /* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 Global status
+ /* Битовое поле CBC, ширина 1 бит; данные CBC. */
Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int
+ /* Битовое поле OST, ширина 1 бит; данные OST. */
Uint16 OST:1; // 2 Trip Zones One Shot Int
+ /* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TZCLR_REG в одной области памяти. */
union TZCLR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TZCLR_BITS bit;; порядок полей определяет расположение данных. */
struct TZCLR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Trip zone flag force register bit definitions */
+// Trip zone flag force register bit definitions */
+/* Описывает структуру TZFRC_BITS; порядок полей определяет расположение данных. */
struct TZFRC_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 0 reserved
+ /* Битовое поле CBC, ширина 1 бит; данные CBC. */
Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int
+ /* Битовое поле OST, ширина 1 бит; данные OST. */
Uint16 OST:1; // 2 Trip Zones One Shot Int
+ /* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TZFRC_REG в одной области памяти. */
union TZFRC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру TZFRC_BITS bit;; порядок полей определяет расположение данных. */
struct TZFRC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Event trigger select register bit definitions */
+// Event trigger select register bit definitions */
+/* Описывает структуру ETSEL_BITS; порядок полей определяет расположение данных. */
struct ETSEL_BITS { // bits description
+ /* Битовое поле INTSEL, ширина 3 бит; данные INTSEL. */
Uint16 INTSEL:3; // 2:0 EPWMxINTn Select
+ /* Битовое поле INTEN, ширина 1 бит; данные INTEN. */
Uint16 INTEN:1; // 3 EPWMxINTn Enable
+ /* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 7:4 reserved
+ /* Битовое поле SOCASEL, ширина 3 бит; данные SOCASEL. */
Uint16 SOCASEL:3; // 10:8 Start of conversion A Select
+ /* Битовое поле SOCAEN, ширина 1 бит; данные SOCAEN. */
Uint16 SOCAEN:1; // 11 Start of conversion A Enable
+ /* Битовое поле SOCBSEL, ширина 3 бит; данные SOCBSEL. */
Uint16 SOCBSEL:3; // 14:12 Start of conversion B Select
+ /* Битовое поле SOCBEN, ширина 1 бит; данные SOCBEN. */
Uint16 SOCBEN:1; // 15 Start of conversion B Enable
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ETSEL_REG в одной области памяти. */
union ETSEL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ETSEL_BITS bit;; порядок полей определяет расположение данных. */
struct ETSEL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Event trigger pre-scale register bit definitions */
+// Event trigger pre-scale register bit definitions */
+/* Описывает структуру ETPS_BITS; порядок полей определяет расположение данных. */
struct ETPS_BITS { // bits description
+ /* Битовое поле INTPRD, ширина 2 бит; данные INTPRD. */
Uint16 INTPRD:2; // 1:0 EPWMxINTn Period Select
+ /* Битовое поле INTCNT, ширина 2 бит; данные INTCNT. */
Uint16 INTCNT:2; // 3:2 EPWMxINTn Counter Register
+ /* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 7:4 reserved
+ /* Битовое поле SOCAPRD, ширина 2 бит; данные SOCAPRD. */
Uint16 SOCAPRD:2; // 9:8 EPWMxSOCA Period Select
+ /* Битовое поле SOCACNT, ширина 2 бит; данные SOCACNT. */
Uint16 SOCACNT:2; // 11:10 EPWMxSOCA Counter Register
+ /* Битовое поле SOCBPRD, ширина 2 бит; данные SOCBPRD. */
Uint16 SOCBPRD:2; // 13:12 EPWMxSOCB Period Select
+ /* Битовое поле SOCBCNT, ширина 2 бит; данные SOCBCNT. */
Uint16 SOCBCNT:2; // 15:14 EPWMxSOCB Counter Register
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ETPS_REG в одной области памяти. */
union ETPS_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ETPS_BITS bit;; порядок полей определяет расположение данных. */
struct ETPS_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Event trigger Flag register bit definitions */
+// Event trigger Flag register bit definitions */
+/* Описывает структуру ETFLG_BITS; порядок полей определяет расположение данных. */
struct ETFLG_BITS { // bits description
+ /* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 EPWMxINTn Flag
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved
+ /* Битовое поле SOCA, ширина 1 бит; данные SOCA. */
Uint16 SOCA:1; // 2 EPWMxSOCA Flag
+ /* Битовое поле SOCB, ширина 1 бит; данные SOCB. */
Uint16 SOCB:1; // 3 EPWMxSOCB Flag
+ /* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ETFLG_REG в одной области памяти. */
union ETFLG_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ETFLG_BITS bit;; порядок полей определяет расположение данных. */
struct ETFLG_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Event trigger Clear register bit definitions */
+// Event trigger Clear register bit definitions */
+/* Описывает структуру ETCLR_BITS; порядок полей определяет расположение данных. */
struct ETCLR_BITS { // bits description
+ /* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 EPWMxINTn Clear
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved
+ /* Битовое поле SOCA, ширина 1 бит; данные SOCA. */
Uint16 SOCA:1; // 2 EPWMxSOCA Clear
+ /* Битовое поле SOCB, ширина 1 бит; данные SOCB. */
Uint16 SOCB:1; // 3 EPWMxSOCB Clear
+ /* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ETCLR_REG в одной области памяти. */
union ETCLR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ETCLR_BITS bit;; порядок полей определяет расположение данных. */
struct ETCLR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// Event trigger Force register bit definitions */
+// Event trigger Force register bit definitions */
+/* Описывает структуру ETFRC_BITS; порядок полей определяет расположение данных. */
struct ETFRC_BITS { // bits description
+ /* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 EPWMxINTn Force
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved
+ /* Битовое поле SOCA, ширина 1 бит; данные SOCA. */
Uint16 SOCA:1; // 2 EPWMxSOCA Force
+ /* Битовое поле SOCB, ширина 1 бит; данные SOCB. */
Uint16 SOCB:1; // 3 EPWMxSOCB Force
+ /* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений ETFRC_REG в одной области памяти. */
union ETFRC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру ETFRC_BITS bit;; порядок полей определяет расположение данных. */
struct ETFRC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// PWM chopper control register bit definitions */
+// PWM chopper control register bit definitions */
+/* Описывает структуру PCCTL_BITS; порядок полей определяет расположение данных. */
struct PCCTL_BITS { // bits description
+ /* Битовое поле CHPEN, ширина 1 бит; данные CHPEN. */
Uint16 CHPEN:1; // 0 PWM chopping enable
+ /* Битовое поле OSHTWTH, ширина 4 бит; данные OSHTWTH. */
Uint16 OSHTWTH:4; // 4:1 One-shot pulse width
+ /* Битовое поле CHPFREQ, ширина 3 бит; данные CHPFREQ. */
Uint16 CHPFREQ:3; // 7:5 Chopping clock frequency
+ /* Битовое поле CHPDUTY, ширина 3 бит; данные CHPDUTY. */
Uint16 CHPDUTY:3; // 10:8 Chopping clock Duty cycle
+ /* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 15:11 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PCCTL_REG в одной области памяти. */
union PCCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PCCTL_BITS bit;; порядок полей определяет расположение данных. */
struct PCCTL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру HRCNFG_BITS; порядок полей определяет расположение данных. */
struct HRCNFG_BITS { // bits description
+ /* Битовое поле EDGMODE, ширина 2 бит; данные EDGMODE. */
Uint16 EDGMODE:2; // 1:0 Edge Mode select Bits
+ /* Битовое поле CTLMODE, ширина 1 бит; данные CTLMODE. */
Uint16 CTLMODE:1; // 2 Control mode Select Bit
+ /* Битовое поле HRLOAD, ширина 1 бит; данные HRLOAD. */
Uint16 HRLOAD:1; // 3 Shadow mode Select Bit
+ /* Битовое поле rsvd1, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений HRCNFG_REG в одной области памяти. */
union HRCNFG_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру HRCNFG_BITS bit;; порядок полей определяет расположение данных. */
struct HRCNFG_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру TBPHS_HRPWM_REG; порядок полей определяет расположение данных. */
struct TBPHS_HRPWM_REG { // bits description
+ /* Объявляет TBPHSHR — данные TBPHSHR. */
Uint16 TBPHSHR; // 15:0 Extension register for HRPWM Phase (8 bits)
+ /* Объявляет TBPHS — данные TBPHS. */
Uint16 TBPHS; // 31:16 Phase offset register
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений TBPHS_HRPWM_GROUP в одной области памяти. */
union TBPHS_HRPWM_GROUP {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру TBPHS_HRPWM_REG half;; порядок полей определяет расположение данных. */
struct TBPHS_HRPWM_REG half;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру CMPA_HRPWM_REG; порядок полей определяет расположение данных. */
struct CMPA_HRPWM_REG { // bits description
+ /* Объявляет CMPAHR — данные CMPAHR. */
Uint16 CMPAHR; // 15:0 Extension register for HRPWM compare (8 bits)
+ /* Объявляет CMPA — данные CMPA. */
Uint16 CMPA; // 31:16 Compare A reg
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений CMPA_HRPWM_GROUP в одной области памяти. */
union CMPA_HRPWM_GROUP {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру CMPA_HRPWM_REG half;; порядок полей определяет расположение данных. */
struct CMPA_HRPWM_REG half;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру EPWM_REGS; порядок полей определяет расположение данных. */
struct EPWM_REGS {
- union TBCTL_REG TBCTL; //
- union TBSTS_REG TBSTS; //
+ /* Объединяет несколько представлений TBCTL_REG TBCTL; в одной области памяти. */
+ union TBCTL_REG TBCTL; //
+ /* Объединяет несколько представлений TBSTS_REG TBSTS; в одной области памяти. */
+ union TBSTS_REG TBSTS; //
+ /* Объединяет несколько представлений TBPHS_HRPWM_GROUP TBPHS; в одной области памяти. */
union TBPHS_HRPWM_GROUP TBPHS; // Union of TBPHS:TBPHSHR
+ /* Объявляет TBCTR — данные TBCTR. */
Uint16 TBCTR; // Counter
- Uint16 TBPRD; // Period register set
- Uint16 rsvd1; //
+ /* Объявляет TBPRD — данные TBPRD. */
+ Uint16 TBPRD; // Period register set
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd1; //
+ /* Объединяет несколько представлений CMPCTL_REG CMPCTL; в одной области памяти. */
union CMPCTL_REG CMPCTL; // Compare control
+ /* Объединяет несколько представлений CMPA_HRPWM_GROUP CMPA; в одной области памяти. */
union CMPA_HRPWM_GROUP CMPA; // Union of CMPA:CMPAHR
+ /* Объявляет CMPB — данные CMPB. */
Uint16 CMPB; // Compare B reg
+ /* Объединяет несколько представлений AQCTL_REG AQCTLA; в одной области памяти. */
union AQCTL_REG AQCTLA; // Action qual output A
+ /* Объединяет несколько представлений AQCTL_REG AQCTLB; в одной области памяти. */
union AQCTL_REG AQCTLB; // Action qual output B
+ /* Объединяет несколько представлений AQSFRC_REG AQSFRC; в одной области памяти. */
union AQSFRC_REG AQSFRC; // Action qual SW force
- union AQCSFRC_REG AQCSFRC; // Action qualifier continuous SW force
+ /* Объединяет несколько представлений AQCSFRC_REG AQCSFRC; в одной области памяти. */
+ union AQCSFRC_REG AQCSFRC; // Action qualifier continuous SW force
+ /* Объединяет несколько представлений DBCTL_REG DBCTL; в одной области памяти. */
union DBCTL_REG DBCTL; // Dead-band control
+ /* Объявляет DBRED — данные DBRED. */
Uint16 DBRED; // Dead-band rising edge delay
+ /* Объявляет DBFED — данные DBFED. */
Uint16 DBFED; // Dead-band falling edge delay
+ /* Объединяет несколько представлений TZSEL_REG TZSEL; в одной области памяти. */
union TZSEL_REG TZSEL; // Trip zone select
- Uint16 rsvd2;
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd2;
+ /* Объединяет несколько представлений TZCTL_REG TZCTL; в одной области памяти. */
union TZCTL_REG TZCTL; // Trip zone control
+ /* Объединяет несколько представлений TZEINT_REG TZEINT; в одной области памяти. */
union TZEINT_REG TZEINT; // Trip zone interrupt enable
+ /* Объединяет несколько представлений TZFLG_REG TZFLG; в одной области памяти. */
union TZFLG_REG TZFLG; // Trip zone interrupt flags
- union TZCLR_REG TZCLR; // Trip zone clear
+ /* Объединяет несколько представлений TZCLR_REG TZCLR; в одной области памяти. */
+ union TZCLR_REG TZCLR; // Trip zone clear
+ /* Объединяет несколько представлений TZFRC_REG TZFRC; в одной области памяти. */
union TZFRC_REG TZFRC; // Trip zone force interrupt
+ /* Объединяет несколько представлений ETSEL_REG ETSEL; в одной области памяти. */
union ETSEL_REG ETSEL; // Event trigger selection
+ /* Объединяет несколько представлений ETPS_REG ETPS; в одной области памяти. */
union ETPS_REG ETPS; // Event trigger pre-scaler
+ /* Объединяет несколько представлений ETFLG_REG ETFLG; в одной области памяти. */
union ETFLG_REG ETFLG; // Event trigger flags
- union ETCLR_REG ETCLR; // Event trigger clear
+ /* Объединяет несколько представлений ETCLR_REG ETCLR; в одной области памяти. */
+ union ETCLR_REG ETCLR; // Event trigger clear
+ /* Объединяет несколько представлений ETFRC_REG ETFRC; в одной области памяти. */
union ETFRC_REG ETFRC; // Event trigger force
+ /* Объединяет несколько представлений PCCTL_REG PCCTL; в одной области памяти. */
union PCCTL_REG PCCTL; // PWM chopper control
- Uint16 rsvd3; //
+ /* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd3; //
+ /* Объединяет несколько представлений HRCNFG_REG HRCNFG; в одной области памяти. */
union HRCNFG_REG HRCNFG; // HRPWM Config Reg
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
-
-
+
+
//---------------------------------------------------------------------------
// External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm1Regs;; порядок элементов сохраняется. */
extern volatile struct EPWM_REGS EPwm1Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm2Regs;; порядок элементов сохраняется. */
extern volatile struct EPWM_REGS EPwm2Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm3Regs;; порядок элементов сохраняется. */
extern volatile struct EPWM_REGS EPwm3Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm4Regs;; порядок элементов сохраняется. */
extern volatile struct EPWM_REGS EPwm4Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm5Regs;; порядок элементов сохраняется. */
extern volatile struct EPWM_REGS EPwm5Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm6Regs;; порядок элементов сохраняется. */
extern volatile struct EPWM_REGS EPwm6Regs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_EPWM_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_EQep.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_EQep.h
index c330165..bca8f31 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_EQep.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_EQep.h
@@ -1,10 +1,11 @@
+/* Поставляемое TI описание EQep для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:13 $
//###########################################################################
//
// FILE: DSP2833x_EQep.h
//
-// TITLE: DSP2833x Enhanced Quadrature Encoder Pulse Module
+// TITLE: DSP2833x Enhanced Quadrature Encoder Pulse Module
// Register Bit Definitions.
//
//###########################################################################
@@ -12,229 +13,393 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_EQEP_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_EQEP_H
+/* Определяет защитный символ или переключатель DSP2833x_EQEP_H для последующей компиляции. */
#define DSP2833x_EQEP_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//----------------------------------------------------
-// Capture decoder control register bit definitions */
+// Capture decoder control register bit definitions */
+/* Описывает структуру QDECCTL_BITS; порядок полей определяет расположение данных. */
struct QDECCTL_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 4:0 reserved
+ /* Битовое поле QSP, ширина 1 бит; данные QSP. */
Uint16 QSP:1; // 5 QEPS input polarity
+ /* Битовое поле QIP, ширина 1 бит; данные QIP. */
Uint16 QIP:1; // 6 QEPI input polarity
+ /* Битовое поле QBP, ширина 1 бит; данные QBP. */
Uint16 QBP:1; // 7 QEPB input polarity
+ /* Битовое поле QAP, ширина 1 бит; данные QAP. */
Uint16 QAP:1; // 8 QEPA input polarity
+ /* Битовое поле IGATE, ширина 1 бит; данные IGATE. */
Uint16 IGATE:1; // 9 Index pulse gating option
+ /* Битовое поле SWAP, ширина 1 бит; данные SWAP. */
Uint16 SWAP:1; // 10 CLK/DIR signal source for Position Counter
+ /* Битовое поле XCR, ширина 1 бит; данные XCR. */
Uint16 XCR:1; // 11 External clock rate
+ /* Битовое поле SPSEL, ширина 1 бит; данные SPSEL. */
Uint16 SPSEL:1; // 12 Sync output pin select
+ /* Битовое поле SOEN, ширина 1 бит; данные SOEN. */
Uint16 SOEN:1; // 13 Enable position compare sync
+ /* Битовое поле QSRC, ширина 2 бит; данные QSRC. */
Uint16 QSRC:2; // 15:14 Position counter source
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений QDECCTL_REG в одной области памяти. */
union QDECCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру QDECCTL_BITS bit;; порядок полей определяет расположение данных. */
struct QDECCTL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// QEP control register bit definitions */
+// QEP control register bit definitions */
+/* Описывает структуру QEPCTL_BITS; порядок полей определяет расположение данных. */
struct QEPCTL_BITS { // bits description
+ /* Битовое поле WDE, ширина 1 бит; данные WDE. */
Uint16 WDE:1; // 0 QEP watchdog enable
+ /* Битовое поле UTE, ширина 1 бит; данные UTE. */
Uint16 UTE:1; // 1 QEP unit timer enable
+ /* Битовое поле QCLM, ширина 1 бит; данные QCLM. */
Uint16 QCLM:1; // 2 QEP capture latch mode
+ /* Битовое поле QPEN, ширина 1 бит; данные QPEN. */
Uint16 QPEN:1; // 3 Quadrature position counter enable
+ /* Битовое поле IEL, ширина 2 бит; данные IEL. */
Uint16 IEL:2; // 5:4 Index event latch
+ /* Битовое поле SEL, ширина 1 бит; данные SEL. */
Uint16 SEL:1; // 6 Strobe event latch
+ /* Битовое поле SWI, ширина 1 бит; данные SWI. */
Uint16 SWI:1; // 7 Software init position counter
+ /* Битовое поле IEI, ширина 2 бит; данные IEI. */
Uint16 IEI:2; // 9:8 Index event init of position count
+ /* Битовое поле SEI, ширина 2 бит; данные SEI. */
Uint16 SEI:2; // 11:10 Strobe event init
+ /* Битовое поле PCRM, ширина 2 бит; данные PCRM. */
Uint16 PCRM:2; // 13:12 Position counter reset
+ /* Битовое поле FREE_SOFT, ширина 2 бит; данные FREE_SOFT. */
Uint16 FREE_SOFT:2; // 15:14 Emulation mode
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений QEPCTL_REG в одной области памяти. */
union QEPCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру QEPCTL_BITS bit;; порядок полей определяет расположение данных. */
struct QEPCTL_BITS bit;
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
//----------------------------------------------------
-// Quadrature capture control register bit definitions */
+// Quadrature capture control register bit definitions */
+/* Описывает структуру QCAPCTL_BITS; порядок полей определяет расположение данных. */
struct QCAPCTL_BITS { // bits description
- Uint16 UPPS:4; // 3:0 Unit position pre-scale
+ /* Битовое поле UPPS, ширина 4 бит; данные UPPS. */
+ Uint16 UPPS:4; // 3:0 Unit position pre-scale
+ /* Битовое поле CCPS, ширина 3 бит; данные CCPS. */
Uint16 CCPS:3; // 6:4 QEP capture timer pre-scale
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 14:7 reserved
+ /* Битовое поле CEN, ширина 1 бит; данные CEN. */
Uint16 CEN:1; // 15 Enable QEP capture
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений QCAPCTL_REG в одной области памяти. */
union QCAPCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру QCAPCTL_BITS bit;; порядок полей определяет расположение данных. */
struct QCAPCTL_BITS bit;
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
//----------------------------------------------------
-// Position compare control register bit definitions */
+// Position compare control register bit definitions */
+/* Описывает структуру QPOSCTL_BITS; порядок полей определяет расположение данных. */
struct QPOSCTL_BITS { // bits description
+ /* Битовое поле PCSPW, ширина 12 бит; данные PCSPW. */
Uint16 PCSPW:12; // 11:0 Position compare sync pulse width
+ /* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 PCE:1; // 12 Position compare enable/disable
+ /* Битовое поле PCPOL, ширина 1 бит; данные PCPOL. */
Uint16 PCPOL:1; // 13 Polarity of sync output
+ /* Битовое поле PCLOAD, ширина 1 бит; данные PCLOAD. */
Uint16 PCLOAD:1; // 14 Position compare of shadow load
+ /* Битовое поле PCSHDW, ширина 1 бит; данные PCSHDW. */
Uint16 PCSHDW:1; // 15 Position compare shadow enable
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений QPOSCTL_REG в одной области памяти. */
union QPOSCTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру QPOSCTL_BITS bit;; порядок полей определяет расположение данных. */
struct QPOSCTL_BITS bit;
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
//----------------------------------------------------
-// QEP interrupt control register bit definitions */
+// QEP interrupt control register bit definitions */
+/* Описывает структуру QEINT_BITS; порядок полей определяет расположение данных. */
struct QEINT_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 0 reserved
+ /* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 PCE:1; // 1 Position counter error
+ /* Битовое поле QPE, ширина 1 бит; данные QPE. */
Uint16 QPE:1; // 2 Quadrature phase error
+ /* Битовое поле QDC, ширина 1 бит; данные QDC. */
Uint16 QDC:1; // 3 Quadrature dir change
+ /* Битовое поле WTO, ширина 1 бит; данные WTO. */
Uint16 WTO:1; // 4 Watchdog timeout
+ /* Битовое поле PCU, ширина 1 бит; данные PCU. */
Uint16 PCU:1; // 5 Position counter underflow
+ /* Битовое поле PCO, ширина 1 бит; данные PCO. */
Uint16 PCO:1; // 6 Position counter overflow
+ /* Битовое поле PCR, ширина 1 бит; данные PCR. */
Uint16 PCR:1; // 7 Position compare ready
+ /* Битовое поле PCM, ширина 1 бит; данные PCM. */
Uint16 PCM:1; // 8 Position compare match
+ /* Битовое поле SEL, ширина 1 бит; данные SEL. */
Uint16 SEL:1; // 9 Strobe event latch
+ /* Битовое поле IEL, ширина 1 бит; данные IEL. */
Uint16 IEL:1; // 10 Event latch
+ /* Битовое поле UTO, ширина 1 бит; данные UTO. */
Uint16 UTO:1; // 11 Unit timeout
+ /* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 15:12 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений QEINT_REG в одной области памяти. */
union QEINT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру QEINT_BITS bit;; порядок полей определяет расположение данных. */
struct QEINT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// QEP interrupt status register bit definitions */
+// QEP interrupt status register bit definitions */
+/* Описывает структуру QFLG_BITS; порядок полей определяет расположение данных. */
struct QFLG_BITS { // bits description
- Uint16 INT:1; // 0 Global interrupt
+ /* Битовое поле INT, ширина 1 бит; данные INT. */
+ Uint16 INT:1; // 0 Global interrupt
+ /* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 PCE:1; // 1 Position counter error
+ /* Битовое поле PHE, ширина 1 бит; данные PHE. */
Uint16 PHE:1; // 2 Quadrature phase error
+ /* Битовое поле QDC, ширина 1 бит; данные QDC. */
Uint16 QDC:1; // 3 Quadrature dir change
+ /* Битовое поле WTO, ширина 1 бит; данные WTO. */
Uint16 WTO:1; // 4 Watchdog timeout
+ /* Битовое поле PCU, ширина 1 бит; данные PCU. */
Uint16 PCU:1; // 5 Position counter underflow
+ /* Битовое поле PCO, ширина 1 бит; данные PCO. */
Uint16 PCO:1; // 6 Position counter overflow
+ /* Битовое поле PCR, ширина 1 бит; данные PCR. */
Uint16 PCR:1; // 7 Position compare ready
+ /* Битовое поле PCM, ширина 1 бит; данные PCM. */
Uint16 PCM:1; // 8 Position compare match
+ /* Битовое поле SEL, ширина 1 бит; данные SEL. */
Uint16 SEL:1; // 9 Strobe event latch
+ /* Битовое поле IEL, ширина 1 бит; данные IEL. */
Uint16 IEL:1; // 10 Event latch
+ /* Битовое поле UTO, ширина 1 бит; данные UTO. */
Uint16 UTO:1; // 11 Unit timeout
+ /* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 15:12 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений QFLG_REG в одной области памяти. */
union QFLG_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру QFLG_BITS bit;; порядок полей определяет расположение данных. */
struct QFLG_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
-// QEP interrupt force register bit definitions */
+// QEP interrupt force register bit definitions */
+/* Описывает структуру QFRC_BITS; порядок полей определяет расположение данных. */
struct QFRC_BITS { // bits description
+ /* Битовое поле reserved, ширина 1 бит; Зарезервировано; сохраняет положение следующих полей в аппаратном регистре. */
Uint16 reserved:1; // 0 Reserved
+ /* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 PCE:1; // 1 Position counter error
+ /* Битовое поле PHE, ширина 1 бит; данные PHE. */
Uint16 PHE:1; // 2 Quadrature phase error
+ /* Битовое поле QDC, ширина 1 бит; данные QDC. */
Uint16 QDC:1; // 3 Quadrature dir change
+ /* Битовое поле WTO, ширина 1 бит; данные WTO. */
Uint16 WTO:1; // 4 Watchdog timeout
+ /* Битовое поле PCU, ширина 1 бит; данные PCU. */
Uint16 PCU:1; // 5 Position counter underflow
+ /* Битовое поле PCO, ширина 1 бит; данные PCO. */
Uint16 PCO:1; // 6 Position counter overflow
+ /* Битовое поле PCR, ширина 1 бит; данные PCR. */
Uint16 PCR:1; // 7 Position compare ready
+ /* Битовое поле PCM, ширина 1 бит; данные PCM. */
Uint16 PCM:1; // 8 Position compare match
+ /* Битовое поле SEL, ширина 1 бит; данные SEL. */
Uint16 SEL:1; // 9 Strobe event latch
+ /* Битовое поле IEL, ширина 1 бит; данные IEL. */
Uint16 IEL:1; // 10 Event latch
+ /* Битовое поле UTO, ширина 1 бит; данные UTO. */
Uint16 UTO:1; // 11 Unit timeout
+ /* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 15:12 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений QFRC_REG в одной области памяти. */
union QFRC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру QFRC_BITS bit;; порядок полей определяет расположение данных. */
struct QFRC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
-// V1.1 Added UPEVNT (bit 7) This reflects changes
+// V1.1 Added UPEVNT (bit 7) This reflects changes
// made as of F2833x Rev A devices
//----------------------------------------------------
-// QEP status register bit definitions */
+// QEP status register bit definitions */
+/* Описывает структуру QEPSTS_BITS; порядок полей определяет расположение данных. */
struct QEPSTS_BITS { // bits description
+ /* Битовое поле PCEF, ширина 1 бит; данные PCEF. */
Uint16 PCEF:1; // 0 Position counter error
+ /* Битовое поле FIMF, ширина 1 бит; данные FIMF. */
Uint16 FIMF:1; // 1 First index marker
+ /* Битовое поле CDEF, ширина 1 бит; данные CDEF. */
Uint16 CDEF:1; // 2 Capture direction error
+ /* Битовое поле COEF, ширина 1 бит; данные COEF. */
Uint16 COEF:1; // 3 Capture overflow error
+ /* Битовое поле QDLF, ширина 1 бит; данные QDLF. */
Uint16 QDLF:1; // 4 QEP direction latch
+ /* Битовое поле QDF, ширина 1 бит; данные QDF. */
Uint16 QDF:1; // 5 Quadrature direction
+ /* Битовое поле FIDF, ширина 1 бит; данные FIDF. */
Uint16 FIDF:1; // 6 Direction on first index marker
+ /* Битовое поле UPEVNT, ширина 1 бит; данные UPEVNT. */
Uint16 UPEVNT:1; // 7 Unit position event flag
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений QEPSTS_REG в одной области памяти. */
union QEPSTS_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру QEPSTS_BITS bit;; порядок полей определяет расположение данных. */
struct QEPSTS_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
+/* Описывает структуру EQEP_REGS; порядок полей определяет расположение данных. */
struct EQEP_REGS {
- Uint32 QPOSCNT; // Position counter
+ /* Объявляет QPOSCNT — данные QPOSCNT. */
+ Uint32 QPOSCNT; // Position counter
+ /* Объявляет QPOSINIT — данные QPOSINIT. */
Uint32 QPOSINIT; // Position counter init
+ /* Объявляет QPOSMAX — данные QPOSMAX. */
Uint32 QPOSMAX; // Maximum position count
+ /* Объявляет QPOSCMP — данные QPOSCMP. */
Uint32 QPOSCMP; // Position compare
+ /* Объявляет QPOSILAT — данные QPOSILAT. */
Uint32 QPOSILAT; // Index position latch
+ /* Объявляет QPOSSLAT — данные QPOSSLAT. */
Uint32 QPOSSLAT; // Strobe position latch
+ /* Объявляет QPOSLAT — данные QPOSLAT. */
Uint32 QPOSLAT; // Position latch
+ /* Объявляет QUTMR — данные QUTMR. */
Uint32 QUTMR; // Unit timer
+ /* Объявляет QUPRD — данные QUPRD. */
Uint32 QUPRD; // Unit period
+ /* Объявляет QWDTMR — данные QWDTMR. */
Uint16 QWDTMR; // QEP watchdog timer
+ /* Объявляет QWDPRD — данные QWDPRD. */
Uint16 QWDPRD; // QEP watchdog period
+ /* Объединяет несколько представлений QDECCTL_REG QDECCTL; в одной области памяти. */
union QDECCTL_REG QDECCTL; // Quadrature decoder control
- union QEPCTL_REG QEPCTL; // QEP control
- union QCAPCTL_REG QCAPCTL; // Quadrature capture control
+ /* Объединяет несколько представлений QEPCTL_REG QEPCTL; в одной области памяти. */
+ union QEPCTL_REG QEPCTL; // QEP control
+ /* Объединяет несколько представлений QCAPCTL_REG QCAPCTL; в одной области памяти. */
+ union QCAPCTL_REG QCAPCTL; // Quadrature capture control
+ /* Объединяет несколько представлений QPOSCTL_REG QPOSCTL; в одной области памяти. */
union QPOSCTL_REG QPOSCTL; // Position compare control
- union QEINT_REG QEINT; // QEP interrupt control
+ /* Объединяет несколько представлений QEINT_REG QEINT; в одной области памяти. */
+ union QEINT_REG QEINT; // QEP interrupt control
+ /* Объединяет несколько представлений QFLG_REG QFLG; в одной области памяти. */
union QFLG_REG QFLG; // QEP interrupt flag
- union QFLG_REG QCLR; // QEP interrupt clear
- union QFRC_REG QFRC; // QEP interrupt force
+ /* Объединяет несколько представлений QFLG_REG QCLR; в одной области памяти. */
+ union QFLG_REG QCLR; // QEP interrupt clear
+ /* Объединяет несколько представлений QFRC_REG QFRC; в одной области памяти. */
+ union QFRC_REG QFRC; // QEP interrupt force
+ /* Объединяет несколько представлений QEPSTS_REG QEPSTS; в одной области памяти. */
union QEPSTS_REG QEPSTS; // QEP status
+ /* Объявляет QCTMR — данные QCTMR. */
Uint16 QCTMR; // QEP capture timer
+ /* Объявляет QCPRD — данные QCPRD. */
Uint16 QCPRD; // QEP capture period
+ /* Объявляет QCTMRLAT — данные QCTMRLAT. */
Uint16 QCTMRLAT; // QEP capture latch
+ /* Объявляет QCPRDLAT — данные QCPRDLAT. */
Uint16 QCPRDLAT; // QEP capture period latch
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1[30]; // reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
-
-
+
+
//---------------------------------------------------------------------------
// GPI/O External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct EQEP_REGS EQep1Regs;; порядок элементов сохраняется. */
extern volatile struct EQEP_REGS EQep1Regs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct EQEP_REGS EQep2Regs;; порядок элементов сохраняется. */
extern volatile struct EQEP_REGS EQep2Regs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_EQEP_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Gpio.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Gpio.h
index 5759c81..9bb8924 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Gpio.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Gpio.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Gpio для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/4 $
// Checkin $Date: November 15, 2007 09:58:53 $
//###########################################################################
@@ -11,298 +12,555 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_GPIO_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_GPIO_H
+/* Определяет защитный символ или переключатель DSP2833x_GPIO_H для последующей компиляции. */
#define DSP2833x_GPIO_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//----------------------------------------------------
// GPIO A control register bit definitions */
+/* Описывает структуру GPACTRL_BITS; порядок полей определяет расположение данных. */
struct GPACTRL_BITS { // bits description
+ /* Битовое поле QUALPRD0, ширина 8 бит; данные QUALPRD0. */
Uint16 QUALPRD0:8; // 7:0 Qual period
+ /* Битовое поле QUALPRD1, ширина 8 бит; данные QUALPRD1. */
Uint16 QUALPRD1:8; // 15:8 Qual period
+ /* Битовое поле QUALPRD2, ширина 8 бит; данные QUALPRD2. */
Uint16 QUALPRD2:8; // 23:16 Qual period
+ /* Битовое поле QUALPRD3, ширина 8 бит; данные QUALPRD3. */
Uint16 QUALPRD3:8; // 31:24 Qual period
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPACTRL_REG в одной области памяти. */
union GPACTRL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPACTRL_BITS bit;; порядок полей определяет расположение данных. */
struct GPACTRL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// GPIO B control register bit definitions */
+/* Описывает структуру GPBCTRL_BITS; порядок полей определяет расположение данных. */
struct GPBCTRL_BITS { // bits description
+ /* Битовое поле QUALPRD0, ширина 8 бит; данные QUALPRD0. */
Uint16 QUALPRD0:8; // 7:0 Qual period
+ /* Битовое поле QUALPRD1, ширина 8 бит; данные QUALPRD1. */
Uint16 QUALPRD1:8; // 15:8 Qual period
+ /* Битовое поле QUALPRD2, ширина 8 бит; данные QUALPRD2. */
Uint16 QUALPRD2:8; // 23:16 Qual period
+ /* Битовое поле QUALPRD3, ширина 8 бит; данные QUALPRD3. */
Uint16 QUALPRD3:8; // 31:24
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPBCTRL_REG в одной области памяти. */
union GPBCTRL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPBCTRL_BITS bit;; порядок полей определяет расположение данных. */
struct GPBCTRL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// GPIO A Qual/MUX select register bit definitions */
+/* Описывает структуру GPA1_BITS; порядок полей определяет расположение данных. */
struct GPA1_BITS { // bits description
+ /* Битовое поле GPIO0, ширина 2 бит; аппаратная линия ввода/вывода GPIO0. */
Uint16 GPIO0:2; // 1:0 GPIO0
+ /* Битовое поле GPIO1, ширина 2 бит; аппаратная линия ввода/вывода GPIO1. */
Uint16 GPIO1:2; // 3:2 GPIO1
+ /* Битовое поле GPIO2, ширина 2 бит; аппаратная линия ввода/вывода GPIO2. */
Uint16 GPIO2:2; // 5:4 GPIO2
+ /* Битовое поле GPIO3, ширина 2 бит; аппаратная линия ввода/вывода GPIO3. */
Uint16 GPIO3:2; // 7:6 GPIO3
+ /* Битовое поле GPIO4, ширина 2 бит; аппаратная линия ввода/вывода GPIO4. */
Uint16 GPIO4:2; // 9:8 GPIO4
+ /* Битовое поле GPIO5, ширина 2 бит; аппаратная линия ввода/вывода GPIO5. */
Uint16 GPIO5:2; // 11:10 GPIO5
+ /* Битовое поле GPIO6, ширина 2 бит; аппаратная линия ввода/вывода GPIO6. */
Uint16 GPIO6:2; // 13:12 GPIO6
+ /* Битовое поле GPIO7, ширина 2 бит; аппаратная линия ввода/вывода GPIO7. */
Uint16 GPIO7:2; // 15:14 GPIO7
+ /* Битовое поле GPIO8, ширина 2 бит; аппаратная линия ввода/вывода GPIO8. */
Uint16 GPIO8:2; // 17:16 GPIO8
+ /* Битовое поле GPIO9, ширина 2 бит; аппаратная линия ввода/вывода GPIO9. */
Uint16 GPIO9:2; // 19:18 GPIO9
+ /* Битовое поле GPIO10, ширина 2 бит; аппаратная линия ввода/вывода GPIO10. */
Uint16 GPIO10:2; // 21:20 GPIO10
+ /* Битовое поле GPIO11, ширина 2 бит; аппаратная линия ввода/вывода GPIO11. */
Uint16 GPIO11:2; // 23:22 GPIO11
+ /* Битовое поле GPIO12, ширина 2 бит; аппаратная линия ввода/вывода GPIO12. */
Uint16 GPIO12:2; // 25:24 GPIO12
+ /* Битовое поле GPIO13, ширина 2 бит; аппаратная линия ввода/вывода GPIO13. */
Uint16 GPIO13:2; // 27:26 GPIO13
+ /* Битовое поле GPIO14, ширина 2 бит; аппаратная линия ввода/вывода GPIO14. */
Uint16 GPIO14:2; // 29:28 GPIO14
+ /* Битовое поле GPIO15, ширина 2 бит; аппаратная линия ввода/вывода GPIO15. */
Uint16 GPIO15:2; // 31:30 GPIO15
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPA2_BITS; порядок полей определяет расположение данных. */
struct GPA2_BITS { // bits description
+ /* Битовое поле GPIO16, ширина 2 бит; аппаратная линия ввода/вывода GPIO16. */
Uint16 GPIO16:2; // 1:0 GPIO16
+ /* Битовое поле GPIO17, ширина 2 бит; аппаратная линия ввода/вывода GPIO17. */
Uint16 GPIO17:2; // 3:2 GPIO17
+ /* Битовое поле GPIO18, ширина 2 бит; аппаратная линия ввода/вывода GPIO18. */
Uint16 GPIO18:2; // 5:4 GPIO18
+ /* Битовое поле GPIO19, ширина 2 бит; аппаратная линия ввода/вывода GPIO19. */
Uint16 GPIO19:2; // 7:6 GPIO19
+ /* Битовое поле GPIO20, ширина 2 бит; аппаратная линия ввода/вывода GPIO20. */
Uint16 GPIO20:2; // 9:8 GPIO20
+ /* Битовое поле GPIO21, ширина 2 бит; аппаратная линия ввода/вывода GPIO21. */
Uint16 GPIO21:2; // 11:10 GPIO21
+ /* Битовое поле GPIO22, ширина 2 бит; аппаратная линия ввода/вывода GPIO22. */
Uint16 GPIO22:2; // 13:12 GPIO22
+ /* Битовое поле GPIO23, ширина 2 бит; аппаратная линия ввода/вывода GPIO23. */
Uint16 GPIO23:2; // 15:14 GPIO23
+ /* Битовое поле GPIO24, ширина 2 бит; аппаратная линия ввода/вывода GPIO24. */
Uint16 GPIO24:2; // 17:16 GPIO24
+ /* Битовое поле GPIO25, ширина 2 бит; аппаратная линия ввода/вывода GPIO25. */
Uint16 GPIO25:2; // 19:18 GPIO25
+ /* Битовое поле GPIO26, ширина 2 бит; аппаратная линия ввода/вывода GPIO26. */
Uint16 GPIO26:2; // 21:20 GPIO26
+ /* Битовое поле GPIO27, ширина 2 бит; аппаратная линия ввода/вывода GPIO27. */
Uint16 GPIO27:2; // 23:22 GPIO27
+ /* Битовое поле GPIO28, ширина 2 бит; аппаратная линия ввода/вывода GPIO28. */
Uint16 GPIO28:2; // 25:24 GPIO28
+ /* Битовое поле GPIO29, ширина 2 бит; аппаратная линия ввода/вывода GPIO29. */
Uint16 GPIO29:2; // 27:26 GPIO29
+ /* Битовое поле GPIO30, ширина 2 бит; аппаратная линия ввода/вывода GPIO30. */
Uint16 GPIO30:2; // 29:28 GPIO30
+ /* Битовое поле GPIO31, ширина 2 бит; аппаратная линия ввода/вывода GPIO31. */
Uint16 GPIO31:2; // 31:30 GPIO31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPB1_BITS; порядок полей определяет расположение данных. */
struct GPB1_BITS { // bits description
+ /* Битовое поле GPIO32, ширина 2 бит; аппаратная линия ввода/вывода GPIO32. */
Uint16 GPIO32:2; // 1:0 GPIO32
+ /* Битовое поле GPIO33, ширина 2 бит; аппаратная линия ввода/вывода GPIO33. */
Uint16 GPIO33:2; // 3:2 GPIO33
+ /* Битовое поле GPIO34, ширина 2 бит; аппаратная линия ввода/вывода GPIO34. */
Uint16 GPIO34:2; // 5:4 GPIO34
+ /* Битовое поле GPIO35, ширина 2 бит; аппаратная линия ввода/вывода GPIO35. */
Uint16 GPIO35:2; // 7:6 GPIO35
+ /* Битовое поле GPIO36, ширина 2 бит; аппаратная линия ввода/вывода GPIO36. */
Uint16 GPIO36:2; // 9:8 GPIO36
+ /* Битовое поле GPIO37, ширина 2 бит; аппаратная линия ввода/вывода GPIO37. */
Uint16 GPIO37:2; // 11:10 GPIO37
+ /* Битовое поле GPIO38, ширина 2 бит; аппаратная линия ввода/вывода GPIO38. */
Uint16 GPIO38:2; // 13:12 GPIO38
+ /* Битовое поле GPIO39, ширина 2 бит; аппаратная линия ввода/вывода GPIO39. */
Uint16 GPIO39:2; // 15:14 GPIO39
+ /* Битовое поле GPIO40, ширина 2 бит; аппаратная линия ввода/вывода GPIO40. */
Uint16 GPIO40:2; // 17:16 GPIO40
+ /* Битовое поле GPIO41, ширина 2 бит; аппаратная линия ввода/вывода GPIO41. */
Uint16 GPIO41:2; // 19:16 GPIO41
+ /* Битовое поле GPIO42, ширина 2 бит; аппаратная линия ввода/вывода GPIO42. */
Uint16 GPIO42:2; // 21:20 GPIO42
+ /* Битовое поле GPIO43, ширина 2 бит; аппаратная линия ввода/вывода GPIO43. */
Uint16 GPIO43:2; // 23:22 GPIO43
+ /* Битовое поле GPIO44, ширина 2 бит; аппаратная линия ввода/вывода GPIO44. */
Uint16 GPIO44:2; // 25:24 GPIO44
+ /* Битовое поле GPIO45, ширина 2 бит; аппаратная линия ввода/вывода GPIO45. */
Uint16 GPIO45:2; // 27:26 GPIO45
+ /* Битовое поле GPIO46, ширина 2 бит; аппаратная линия ввода/вывода GPIO46. */
Uint16 GPIO46:2; // 29:28 GPIO46
+ /* Битовое поле GPIO47, ширина 2 бит; аппаратная линия ввода/вывода GPIO47. */
Uint16 GPIO47:2; // 31:30 GPIO47
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPB2_BITS; порядок полей определяет расположение данных. */
struct GPB2_BITS { // bits description
+ /* Битовое поле GPIO48, ширина 2 бит; аппаратная линия ввода/вывода GPIO48. */
Uint16 GPIO48:2; // 1:0 GPIO48
+ /* Битовое поле GPIO49, ширина 2 бит; аппаратная линия ввода/вывода GPIO49. */
Uint16 GPIO49:2; // 3:2 GPIO49
+ /* Битовое поле GPIO50, ширина 2 бит; аппаратная линия ввода/вывода GPIO50. */
Uint16 GPIO50:2; // 5:4 GPIO50
+ /* Битовое поле GPIO51, ширина 2 бит; аппаратная линия ввода/вывода GPIO51. */
Uint16 GPIO51:2; // 7:6 GPIO51
+ /* Битовое поле GPIO52, ширина 2 бит; аппаратная линия ввода/вывода GPIO52. */
Uint16 GPIO52:2; // 9:8 GPIO52
+ /* Битовое поле GPIO53, ширина 2 бит; аппаратная линия ввода/вывода GPIO53. */
Uint16 GPIO53:2; // 11:10 GPIO53
+ /* Битовое поле GPIO54, ширина 2 бит; аппаратная линия ввода/вывода GPIO54. */
Uint16 GPIO54:2; // 13:12 GPIO54
+ /* Битовое поле GPIO55, ширина 2 бит; аппаратная линия ввода/вывода GPIO55. */
Uint16 GPIO55:2; // 15:14 GPIO55
+ /* Битовое поле GPIO56, ширина 2 бит; аппаратная линия ввода/вывода GPIO56. */
Uint16 GPIO56:2; // 17:16 GPIO56
+ /* Битовое поле GPIO57, ширина 2 бит; аппаратная линия ввода/вывода GPIO57. */
Uint16 GPIO57:2; // 19:18 GPIO57
+ /* Битовое поле GPIO58, ширина 2 бит; аппаратная линия ввода/вывода GPIO58. */
Uint16 GPIO58:2; // 21:20 GPIO58
+ /* Битовое поле GPIO59, ширина 2 бит; аппаратная линия ввода/вывода GPIO59. */
Uint16 GPIO59:2; // 23:22 GPIO59
+ /* Битовое поле GPIO60, ширина 2 бит; аппаратная линия ввода/вывода GPIO60. */
Uint16 GPIO60:2; // 25:24 GPIO60
+ /* Битовое поле GPIO61, ширина 2 бит; аппаратная линия ввода/вывода GPIO61. */
Uint16 GPIO61:2; // 27:26 GPIO61
+ /* Битовое поле GPIO62, ширина 2 бит; аппаратная линия ввода/вывода GPIO62. */
Uint16 GPIO62:2; // 29:28 GPIO62
+ /* Битовое поле GPIO63, ширина 2 бит; аппаратная линия ввода/вывода GPIO63. */
Uint16 GPIO63:2; // 31:30 GPIO63
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPC1_BITS; порядок полей определяет расположение данных. */
struct GPC1_BITS { // bits description
+ /* Битовое поле GPIO64, ширина 2 бит; аппаратная линия ввода/вывода GPIO64. */
Uint16 GPIO64:2; // 1:0 GPIO64
+ /* Битовое поле GPIO65, ширина 2 бит; аппаратная линия ввода/вывода GPIO65. */
Uint16 GPIO65:2; // 3:2 GPIO65
+ /* Битовое поле GPIO66, ширина 2 бит; аппаратная линия ввода/вывода GPIO66. */
Uint16 GPIO66:2; // 5:4 GPIO66
+ /* Битовое поле GPIO67, ширина 2 бит; аппаратная линия ввода/вывода GPIO67. */
Uint16 GPIO67:2; // 7:6 GPIO67
+ /* Битовое поле GPIO68, ширина 2 бит; аппаратная линия ввода/вывода GPIO68. */
Uint16 GPIO68:2; // 9:8 GPIO68
+ /* Битовое поле GPIO69, ширина 2 бит; аппаратная линия ввода/вывода GPIO69. */
Uint16 GPIO69:2; // 11:10 GPIO69
+ /* Битовое поле GPIO70, ширина 2 бит; аппаратная линия ввода/вывода GPIO70. */
Uint16 GPIO70:2; // 13:12 GPIO70
+ /* Битовое поле GPIO71, ширина 2 бит; аппаратная линия ввода/вывода GPIO71. */
Uint16 GPIO71:2; // 15:14 GPIO71
+ /* Битовое поле GPIO72, ширина 2 бит; аппаратная линия ввода/вывода GPIO72. */
Uint16 GPIO72:2; // 17:16 GPIO72
+ /* Битовое поле GPIO73, ширина 2 бит; аппаратная линия ввода/вывода GPIO73. */
Uint16 GPIO73:2; // 19:18 GPIO73
+ /* Битовое поле GPIO74, ширина 2 бит; аппаратная линия ввода/вывода GPIO74. */
Uint16 GPIO74:2; // 21:20 GPIO74
+ /* Битовое поле GPIO75, ширина 2 бит; аппаратная линия ввода/вывода GPIO75. */
Uint16 GPIO75:2; // 23:22 GPIO75
+ /* Битовое поле GPIO76, ширина 2 бит; аппаратная линия ввода/вывода GPIO76. */
Uint16 GPIO76:2; // 25:24 GPIO76
+ /* Битовое поле GPIO77, ширина 2 бит; аппаратная линия ввода/вывода GPIO77. */
Uint16 GPIO77:2; // 27:26 GPIO77
+ /* Битовое поле GPIO78, ширина 2 бит; аппаратная линия ввода/вывода GPIO78. */
Uint16 GPIO78:2; // 29:28 GPIO78
+ /* Битовое поле GPIO79, ширина 2 бит; аппаратная линия ввода/вывода GPIO79. */
Uint16 GPIO79:2; // 31:30 GPIO79
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPC2_BITS; порядок полей определяет расположение данных. */
struct GPC2_BITS { // bits description
+ /* Битовое поле GPIO80, ширина 2 бит; аппаратная линия ввода/вывода GPIO80. */
Uint16 GPIO80:2; // 1:0 GPIO80
+ /* Битовое поле GPIO81, ширина 2 бит; аппаратная линия ввода/вывода GPIO81. */
Uint16 GPIO81:2; // 3:2 GPIO81
+ /* Битовое поле GPIO82, ширина 2 бит; аппаратная линия ввода/вывода GPIO82. */
Uint16 GPIO82:2; // 5:4 GPIO82
+ /* Битовое поле GPIO83, ширина 2 бит; аппаратная линия ввода/вывода GPIO83. */
Uint16 GPIO83:2; // 7:6 GPIO83
+ /* Битовое поле GPIO84, ширина 2 бит; аппаратная линия ввода/вывода GPIO84. */
Uint16 GPIO84:2; // 9:8 GPIO84
+ /* Битовое поле GPIO85, ширина 2 бит; аппаратная линия ввода/вывода GPIO85. */
Uint16 GPIO85:2; // 11:10 GPIO85
+ /* Битовое поле GPIO86, ширина 2 бит; аппаратная линия ввода/вывода GPIO86. */
Uint16 GPIO86:2; // 13:12 GPIO86
+ /* Битовое поле GPIO87, ширина 2 бит; аппаратная линия ввода/вывода GPIO87. */
Uint16 GPIO87:2; // 15:14 GPIO87
+ /* Битовое поле rsvd, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:16; // 31:16 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPA1_REG в одной области памяти. */
union GPA1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPA1_BITS bit;; порядок полей определяет расположение данных. */
struct GPA1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPA2_REG в одной области памяти. */
union GPA2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPA2_BITS bit;; порядок полей определяет расположение данных. */
struct GPA2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPB1_REG в одной области памяти. */
union GPB1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPB1_BITS bit;; порядок полей определяет расположение данных. */
struct GPB1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPB2_REG в одной области памяти. */
union GPB2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPB2_BITS bit;; порядок полей определяет расположение данных. */
struct GPB2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPC1_REG в одной области памяти. */
union GPC1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPC1_BITS bit;; порядок полей определяет расположение данных. */
struct GPC1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPC2_REG в одной области памяти. */
union GPC2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPC2_BITS bit;; порядок полей определяет расположение данных. */
struct GPC2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// GPIO A DIR/TOGGLE/SET/CLEAR register bit definitions */
+/* Описывает структуру GPADAT_BITS; порядок полей определяет расположение данных. */
struct GPADAT_BITS { // bits description
+ /* Битовое поле GPIO0, ширина 1 бит; аппаратная линия ввода/вывода GPIO0. */
Uint16 GPIO0:1; // 0 GPIO0
+ /* Битовое поле GPIO1, ширина 1 бит; аппаратная линия ввода/вывода GPIO1. */
Uint16 GPIO1:1; // 1 GPIO1
+ /* Битовое поле GPIO2, ширина 1 бит; аппаратная линия ввода/вывода GPIO2. */
Uint16 GPIO2:1; // 2 GPIO2
+ /* Битовое поле GPIO3, ширина 1 бит; аппаратная линия ввода/вывода GPIO3. */
Uint16 GPIO3:1; // 3 GPIO3
+ /* Битовое поле GPIO4, ширина 1 бит; аппаратная линия ввода/вывода GPIO4. */
Uint16 GPIO4:1; // 4 GPIO4
+ /* Битовое поле GPIO5, ширина 1 бит; аппаратная линия ввода/вывода GPIO5. */
Uint16 GPIO5:1; // 5 GPIO5
+ /* Битовое поле GPIO6, ширина 1 бит; аппаратная линия ввода/вывода GPIO6. */
Uint16 GPIO6:1; // 6 GPIO6
+ /* Битовое поле GPIO7, ширина 1 бит; аппаратная линия ввода/вывода GPIO7. */
Uint16 GPIO7:1; // 7 GPIO7
+ /* Битовое поле GPIO8, ширина 1 бит; аппаратная линия ввода/вывода GPIO8. */
Uint16 GPIO8:1; // 8 GPIO8
+ /* Битовое поле GPIO9, ширина 1 бит; аппаратная линия ввода/вывода GPIO9. */
Uint16 GPIO9:1; // 9 GPIO9
+ /* Битовое поле GPIO10, ширина 1 бит; аппаратная линия ввода/вывода GPIO10. */
Uint16 GPIO10:1; // 10 GPIO10
+ /* Битовое поле GPIO11, ширина 1 бит; аппаратная линия ввода/вывода GPIO11. */
Uint16 GPIO11:1; // 11 GPIO11
+ /* Битовое поле GPIO12, ширина 1 бит; аппаратная линия ввода/вывода GPIO12. */
Uint16 GPIO12:1; // 12 GPIO12
+ /* Битовое поле GPIO13, ширина 1 бит; аппаратная линия ввода/вывода GPIO13. */
Uint16 GPIO13:1; // 13 GPIO13
+ /* Битовое поле GPIO14, ширина 1 бит; аппаратная линия ввода/вывода GPIO14. */
Uint16 GPIO14:1; // 14 GPIO14
+ /* Битовое поле GPIO15, ширина 1 бит; аппаратная линия ввода/вывода GPIO15. */
Uint16 GPIO15:1; // 15 GPIO15
+ /* Битовое поле GPIO16, ширина 1 бит; аппаратная линия ввода/вывода GPIO16. */
Uint16 GPIO16:1; // 16 GPIO16
+ /* Битовое поле GPIO17, ширина 1 бит; аппаратная линия ввода/вывода GPIO17. */
Uint16 GPIO17:1; // 17 GPIO17
+ /* Битовое поле GPIO18, ширина 1 бит; аппаратная линия ввода/вывода GPIO18. */
Uint16 GPIO18:1; // 18 GPIO18
+ /* Битовое поле GPIO19, ширина 1 бит; аппаратная линия ввода/вывода GPIO19. */
Uint16 GPIO19:1; // 19 GPIO19
+ /* Битовое поле GPIO20, ширина 1 бит; аппаратная линия ввода/вывода GPIO20. */
Uint16 GPIO20:1; // 20 GPIO20
+ /* Битовое поле GPIO21, ширина 1 бит; аппаратная линия ввода/вывода GPIO21. */
Uint16 GPIO21:1; // 21 GPIO21
+ /* Битовое поле GPIO22, ширина 1 бит; аппаратная линия ввода/вывода GPIO22. */
Uint16 GPIO22:1; // 22 GPIO22
+ /* Битовое поле GPIO23, ширина 1 бит; аппаратная линия ввода/вывода GPIO23. */
Uint16 GPIO23:1; // 23 GPIO23
+ /* Битовое поле GPIO24, ширина 1 бит; аппаратная линия ввода/вывода GPIO24. */
Uint16 GPIO24:1; // 24 GPIO24
+ /* Битовое поле GPIO25, ширина 1 бит; аппаратная линия ввода/вывода GPIO25. */
Uint16 GPIO25:1; // 25 GPIO25
+ /* Битовое поле GPIO26, ширина 1 бит; аппаратная линия ввода/вывода GPIO26. */
Uint16 GPIO26:1; // 26 GPIO26
+ /* Битовое поле GPIO27, ширина 1 бит; аппаратная линия ввода/вывода GPIO27. */
Uint16 GPIO27:1; // 27 GPIO27
+ /* Битовое поле GPIO28, ширина 1 бит; аппаратная линия ввода/вывода GPIO28. */
Uint16 GPIO28:1; // 28 GPIO28
+ /* Битовое поле GPIO29, ширина 1 бит; аппаратная линия ввода/вывода GPIO29. */
Uint16 GPIO29:1; // 29 GPIO29
+ /* Битовое поле GPIO30, ширина 1 бит; аппаратная линия ввода/вывода GPIO30. */
Uint16 GPIO30:1; // 30 GPIO30
+ /* Битовое поле GPIO31, ширина 1 бит; аппаратная линия ввода/вывода GPIO31. */
Uint16 GPIO31:1; // 31 GPIO31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPBDAT_BITS; порядок полей определяет расположение данных. */
struct GPBDAT_BITS { // bits description
+ /* Битовое поле GPIO32, ширина 1 бит; аппаратная линия ввода/вывода GPIO32. */
Uint16 GPIO32:1; // 0 GPIO32
+ /* Битовое поле GPIO33, ширина 1 бит; аппаратная линия ввода/вывода GPIO33. */
Uint16 GPIO33:1; // 1 GPIO33
+ /* Битовое поле GPIO34, ширина 1 бит; аппаратная линия ввода/вывода GPIO34. */
Uint16 GPIO34:1; // 2 GPIO34
+ /* Битовое поле GPIO35, ширина 1 бит; аппаратная линия ввода/вывода GPIO35. */
Uint16 GPIO35:1; // 3 GPIO35
+ /* Битовое поле GPIO36, ширина 1 бит; аппаратная линия ввода/вывода GPIO36. */
Uint16 GPIO36:1; // 4 GPIO36
+ /* Битовое поле GPIO37, ширина 1 бит; аппаратная линия ввода/вывода GPIO37. */
Uint16 GPIO37:1; // 5 GPIO37
+ /* Битовое поле GPIO38, ширина 1 бит; аппаратная линия ввода/вывода GPIO38. */
Uint16 GPIO38:1; // 6 GPIO38
+ /* Битовое поле GPIO39, ширина 1 бит; аппаратная линия ввода/вывода GPIO39. */
Uint16 GPIO39:1; // 7 GPIO39
+ /* Битовое поле GPIO40, ширина 1 бит; аппаратная линия ввода/вывода GPIO40. */
Uint16 GPIO40:1; // 8 GPIO40
+ /* Битовое поле GPIO41, ширина 1 бит; аппаратная линия ввода/вывода GPIO41. */
Uint16 GPIO41:1; // 9 GPIO41
+ /* Битовое поле GPIO42, ширина 1 бит; аппаратная линия ввода/вывода GPIO42. */
Uint16 GPIO42:1; // 10 GPIO42
+ /* Битовое поле GPIO43, ширина 1 бит; аппаратная линия ввода/вывода GPIO43. */
Uint16 GPIO43:1; // 11 GPIO43
+ /* Битовое поле GPIO44, ширина 1 бит; аппаратная линия ввода/вывода GPIO44. */
Uint16 GPIO44:1; // 12 GPIO44
+ /* Битовое поле GPIO45, ширина 1 бит; аппаратная линия ввода/вывода GPIO45. */
Uint16 GPIO45:1; // 13 GPIO45
+ /* Битовое поле GPIO46, ширина 1 бит; аппаратная линия ввода/вывода GPIO46. */
Uint16 GPIO46:1; // 14 GPIO46
+ /* Битовое поле GPIO47, ширина 1 бит; аппаратная линия ввода/вывода GPIO47. */
Uint16 GPIO47:1; // 15 GPIO47
+ /* Битовое поле GPIO48, ширина 1 бит; аппаратная линия ввода/вывода GPIO48. */
Uint16 GPIO48:1; // 16 GPIO48
+ /* Битовое поле GPIO49, ширина 1 бит; аппаратная линия ввода/вывода GPIO49. */
Uint16 GPIO49:1; // 17 GPIO49
+ /* Битовое поле GPIO50, ширина 1 бит; аппаратная линия ввода/вывода GPIO50. */
Uint16 GPIO50:1; // 18 GPIO50
+ /* Битовое поле GPIO51, ширина 1 бит; аппаратная линия ввода/вывода GPIO51. */
Uint16 GPIO51:1; // 19 GPIO51
+ /* Битовое поле GPIO52, ширина 1 бит; аппаратная линия ввода/вывода GPIO52. */
Uint16 GPIO52:1; // 20 GPIO52
+ /* Битовое поле GPIO53, ширина 1 бит; аппаратная линия ввода/вывода GPIO53. */
Uint16 GPIO53:1; // 21 GPIO53
+ /* Битовое поле GPIO54, ширина 1 бит; аппаратная линия ввода/вывода GPIO54. */
Uint16 GPIO54:1; // 22 GPIO54
+ /* Битовое поле GPIO55, ширина 1 бит; аппаратная линия ввода/вывода GPIO55. */
Uint16 GPIO55:1; // 23 GPIO55
+ /* Битовое поле GPIO56, ширина 1 бит; аппаратная линия ввода/вывода GPIO56. */
Uint16 GPIO56:1; // 24 GPIO56
+ /* Битовое поле GPIO57, ширина 1 бит; аппаратная линия ввода/вывода GPIO57. */
Uint16 GPIO57:1; // 25 GPIO57
+ /* Битовое поле GPIO58, ширина 1 бит; аппаратная линия ввода/вывода GPIO58. */
Uint16 GPIO58:1; // 26 GPIO58
+ /* Битовое поле GPIO59, ширина 1 бит; аппаратная линия ввода/вывода GPIO59. */
Uint16 GPIO59:1; // 27 GPIO59
+ /* Битовое поле GPIO60, ширина 1 бит; аппаратная линия ввода/вывода GPIO60. */
Uint16 GPIO60:1; // 28 GPIO60
+ /* Битовое поле GPIO61, ширина 1 бит; аппаратная линия ввода/вывода GPIO61. */
Uint16 GPIO61:1; // 29 GPIO61
+ /* Битовое поле GPIO62, ширина 1 бит; аппаратная линия ввода/вывода GPIO62. */
Uint16 GPIO62:1; // 30 GPIO62
+ /* Битовое поле GPIO63, ширина 1 бит; аппаратная линия ввода/вывода GPIO63. */
Uint16 GPIO63:1; // 31 GPIO63
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPCDAT_BITS; порядок полей определяет расположение данных. */
struct GPCDAT_BITS { // bits description
+ /* Битовое поле GPIO64, ширина 1 бит; аппаратная линия ввода/вывода GPIO64. */
Uint16 GPIO64:1; // 0 GPIO64
+ /* Битовое поле GPIO65, ширина 1 бит; аппаратная линия ввода/вывода GPIO65. */
Uint16 GPIO65:1; // 1 GPIO65
+ /* Битовое поле GPIO66, ширина 1 бит; аппаратная линия ввода/вывода GPIO66. */
Uint16 GPIO66:1; // 2 GPIO66
+ /* Битовое поле GPIO67, ширина 1 бит; аппаратная линия ввода/вывода GPIO67. */
Uint16 GPIO67:1; // 3 GPIO67
+ /* Битовое поле GPIO68, ширина 1 бит; аппаратная линия ввода/вывода GPIO68. */
Uint16 GPIO68:1; // 4 GPIO68
+ /* Битовое поле GPIO69, ширина 1 бит; аппаратная линия ввода/вывода GPIO69. */
Uint16 GPIO69:1; // 5 GPIO69
+ /* Битовое поле GPIO70, ширина 1 бит; аппаратная линия ввода/вывода GPIO70. */
Uint16 GPIO70:1; // 6 GPIO70
+ /* Битовое поле GPIO71, ширина 1 бит; аппаратная линия ввода/вывода GPIO71. */
Uint16 GPIO71:1; // 7 GPIO71
+ /* Битовое поле GPIO72, ширина 1 бит; аппаратная линия ввода/вывода GPIO72. */
Uint16 GPIO72:1; // 8 GPIO72
+ /* Битовое поле GPIO73, ширина 1 бит; аппаратная линия ввода/вывода GPIO73. */
Uint16 GPIO73:1; // 9 GPIO73
+ /* Битовое поле GPIO74, ширина 1 бит; аппаратная линия ввода/вывода GPIO74. */
Uint16 GPIO74:1; // 10 GPIO74
+ /* Битовое поле GPIO75, ширина 1 бит; аппаратная линия ввода/вывода GPIO75. */
Uint16 GPIO75:1; // 11 GPIO75
+ /* Битовое поле GPIO76, ширина 1 бит; аппаратная линия ввода/вывода GPIO76. */
Uint16 GPIO76:1; // 12 GPIO76
+ /* Битовое поле GPIO77, ширина 1 бит; аппаратная линия ввода/вывода GPIO77. */
Uint16 GPIO77:1; // 13 GPIO77
+ /* Битовое поле GPIO78, ширина 1 бит; аппаратная линия ввода/вывода GPIO78. */
Uint16 GPIO78:1; // 14 GPIO78
+ /* Битовое поле GPIO79, ширина 1 бит; аппаратная линия ввода/вывода GPIO79. */
Uint16 GPIO79:1; // 15 GPIO79
+ /* Битовое поле GPIO80, ширина 1 бит; аппаратная линия ввода/вывода GPIO80. */
Uint16 GPIO80:1; // 16 GPIO80
+ /* Битовое поле GPIO81, ширина 1 бит; аппаратная линия ввода/вывода GPIO81. */
Uint16 GPIO81:1; // 17 GPIO81
+ /* Битовое поле GPIO82, ширина 1 бит; аппаратная линия ввода/вывода GPIO82. */
Uint16 GPIO82:1; // 18 GPIO82
+ /* Битовое поле GPIO83, ширина 1 бит; аппаратная линия ввода/вывода GPIO83. */
Uint16 GPIO83:1; // 19 GPIO83
+ /* Битовое поле GPIO84, ширина 1 бит; аппаратная линия ввода/вывода GPIO84. */
Uint16 GPIO84:1; // 20 GPIO84
+ /* Битовое поле GPIO85, ширина 1 бит; аппаратная линия ввода/вывода GPIO85. */
Uint16 GPIO85:1; // 21 GPIO85
+ /* Битовое поле GPIO86, ширина 1 бит; аппаратная линия ввода/вывода GPIO86. */
Uint16 GPIO86:1; // 22 GPIO86
+ /* Битовое поле GPIO87, ширина 1 бит; аппаратная линия ввода/вывода GPIO87. */
Uint16 GPIO87:1; // 23 GPIO87
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 31:24 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPADAT_REG в одной области памяти. */
union GPADAT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPADAT_BITS bit;; порядок полей определяет расположение данных. */
struct GPADAT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPBDAT_REG в одной области памяти. */
union GPBDAT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPBDAT_BITS bit;; порядок полей определяет расположение данных. */
struct GPBDAT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPCDAT_REG в одной области памяти. */
union GPCDAT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру GPCDAT_BITS bit;; порядок полей определяет расположение данных. */
struct GPCDAT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -310,80 +568,142 @@ union GPCDAT_REG {
//----------------------------------------------------
// GPIO Xint1/XINT2/XNMI select register bit definitions */
+/* Описывает структуру GPIOXINT_BITS; порядок полей определяет расположение данных. */
struct GPIOXINT_BITS { // bits description
+ /* Битовое поле GPIOSEL, ширина 5 бит; аппаратная линия ввода/вывода GPIOSEL. */
Uint16 GPIOSEL:5; // 4:0 Select GPIO interrupt input source
+ /* Битовое поле rsvd1, ширина 11 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:11; // 15:5 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений GPIOXINT_REG в одной области памяти. */
union GPIOXINT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру GPIOXINT_BITS bit;; порядок полей определяет расположение данных. */
struct GPIOXINT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPIO_CTRL_REGS; порядок полей определяет расположение данных. */
struct GPIO_CTRL_REGS {
+ /* Объединяет несколько представлений GPACTRL_REG GPACTRL; в одной области памяти. */
union GPACTRL_REG GPACTRL; // GPIO A Control Register (GPIO0 to 31)
+ /* Объединяет несколько представлений GPA1_REG GPAQSEL1; в одной области памяти. */
union GPA1_REG GPAQSEL1; // GPIO A Qualifier Select 1 Register (GPIO0 to 15)
+ /* Объединяет несколько представлений GPA2_REG GPAQSEL2; в одной области памяти. */
union GPA2_REG GPAQSEL2; // GPIO A Qualifier Select 2 Register (GPIO16 to 31)
+ /* Объединяет несколько представлений GPA1_REG GPAMUX1; в одной области памяти. */
union GPA1_REG GPAMUX1; // GPIO A Mux 1 Register (GPIO0 to 15)
+ /* Объединяет несколько представлений GPA2_REG GPAMUX2; в одной области памяти. */
union GPA2_REG GPAMUX2; // GPIO A Mux 2 Register (GPIO16 to 31)
+ /* Объединяет несколько представлений GPADAT_REG GPADIR; в одной области памяти. */
union GPADAT_REG GPADIR; // GPIO A Direction Register (GPIO0 to 31)
+ /* Объединяет несколько представлений GPADAT_REG GPAPUD; в одной области памяти. */
union GPADAT_REG GPAPUD; // GPIO A Pull Up Disable Register (GPIO0 to 31)
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint32 rsvd1;
+ /* Объединяет несколько представлений GPBCTRL_REG GPBCTRL; в одной области памяти. */
union GPBCTRL_REG GPBCTRL; // GPIO B Control Register (GPIO32 to 63)
+ /* Объединяет несколько представлений GPB1_REG GPBQSEL1; в одной области памяти. */
union GPB1_REG GPBQSEL1; // GPIO B Qualifier Select 1 Register (GPIO32 to 47)
+ /* Объединяет несколько представлений GPB2_REG GPBQSEL2; в одной области памяти. */
union GPB2_REG GPBQSEL2; // GPIO B Qualifier Select 2 Register (GPIO48 to 63)
+ /* Объединяет несколько представлений GPB1_REG GPBMUX1; в одной области памяти. */
union GPB1_REG GPBMUX1; // GPIO B Mux 1 Register (GPIO32 to 47)
+ /* Объединяет несколько представлений GPB2_REG GPBMUX2; в одной области памяти. */
union GPB2_REG GPBMUX2; // GPIO B Mux 2 Register (GPIO48 to 63)
+ /* Объединяет несколько представлений GPBDAT_REG GPBDIR; в одной области памяти. */
union GPBDAT_REG GPBDIR; // GPIO B Direction Register (GPIO32 to 63)
+ /* Объединяет несколько представлений GPBDAT_REG GPBPUD; в одной области памяти. */
union GPBDAT_REG GPBPUD; // GPIO B Pull Up Disable Register (GPIO32 to 63)
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2[8];
+ /* Объединяет несколько представлений GPC1_REG GPCMUX1; в одной области памяти. */
union GPC1_REG GPCMUX1; // GPIO C Mux 1 Register (GPIO64 to 79)
+ /* Объединяет несколько представлений GPC2_REG GPCMUX2; в одной области памяти. */
union GPC2_REG GPCMUX2; // GPIO C Mux 2 Register (GPIO80 to 95)
+ /* Объединяет несколько представлений GPCDAT_REG GPCDIR; в одной области памяти. */
union GPCDAT_REG GPCDIR; // GPIO C Direction Register (GPIO64 to 95)
+ /* Объединяет несколько представлений GPCDAT_REG GPCPUD; в одной области памяти. */
union GPCDAT_REG GPCPUD; // GPIO C Pull Up Disable Register (GPIO64 to 95)
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPIO_DATA_REGS; порядок полей определяет расположение данных. */
struct GPIO_DATA_REGS {
+ /* Объединяет несколько представлений GPADAT_REG GPADAT; в одной области памяти. */
union GPADAT_REG GPADAT; // GPIO Data Register (GPIO0 to 31)
+ /* Объединяет несколько представлений GPADAT_REG GPASET; в одной области памяти. */
union GPADAT_REG GPASET; // GPIO Data Set Register (GPIO0 to 31)
+ /* Объединяет несколько представлений GPADAT_REG GPACLEAR; в одной области памяти. */
union GPADAT_REG GPACLEAR; // GPIO Data Clear Register (GPIO0 to 31)
+ /* Объединяет несколько представлений GPADAT_REG GPATOGGLE; в одной области памяти. */
union GPADAT_REG GPATOGGLE; // GPIO Data Toggle Register (GPIO0 to 31)
+ /* Объединяет несколько представлений GPBDAT_REG GPBDAT; в одной области памяти. */
union GPBDAT_REG GPBDAT; // GPIO Data Register (GPIO32 to 63)
+ /* Объединяет несколько представлений GPBDAT_REG GPBSET; в одной области памяти. */
union GPBDAT_REG GPBSET; // GPIO Data Set Register (GPIO32 to 63)
+ /* Объединяет несколько представлений GPBDAT_REG GPBCLEAR; в одной области памяти. */
union GPBDAT_REG GPBCLEAR; // GPIO Data Clear Register (GPIO32 to 63)
+ /* Объединяет несколько представлений GPBDAT_REG GPBTOGGLE; в одной области памяти. */
union GPBDAT_REG GPBTOGGLE; // GPIO Data Toggle Register (GPIO32 to 63)
+ /* Объединяет несколько представлений GPCDAT_REG GPCDAT; в одной области памяти. */
union GPCDAT_REG GPCDAT; // GPIO Data Register (GPIO64 to 95)
+ /* Объединяет несколько представлений GPCDAT_REG GPCSET; в одной области памяти. */
union GPCDAT_REG GPCSET; // GPIO Data Set Register (GPIO64 to 95)
+ /* Объединяет несколько представлений GPCDAT_REG GPCCLEAR; в одной области памяти. */
union GPCDAT_REG GPCCLEAR; // GPIO Data Clear Register (GPIO64 to 95)
+ /* Объединяет несколько представлений GPCDAT_REG GPCTOGGLE; в одной области памяти. */
union GPCDAT_REG GPCTOGGLE; // GPIO Data Toggle Register (GPIO64 to 95)
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1[8];
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру GPIO_INT_REGS; порядок полей определяет расположение данных. */
struct GPIO_INT_REGS {
+ /* Объединяет несколько представлений GPIOXINT_REG GPIOXINT1SEL; в одной области памяти. */
union GPIOXINT_REG GPIOXINT1SEL; // XINT1 GPIO Input Selection
+ /* Объединяет несколько представлений GPIOXINT_REG GPIOXINT2SEL; в одной области памяти. */
union GPIOXINT_REG GPIOXINT2SEL; // XINT2 GPIO Input Selection
+ /* Объединяет несколько представлений GPIOXINT_REG GPIOXNMISEL; в одной области памяти. */
union GPIOXINT_REG GPIOXNMISEL; // XNMI_Xint13 GPIO Input Selection
+ /* Объединяет несколько представлений GPIOXINT_REG GPIOXINT3SEL; в одной области памяти. */
union GPIOXINT_REG GPIOXINT3SEL; // XINT3 GPIO Input Selection
+ /* Объединяет несколько представлений GPIOXINT_REG GPIOXINT4SEL; в одной области памяти. */
union GPIOXINT_REG GPIOXINT4SEL; // XINT4 GPIO Input Selection
+ /* Объединяет несколько представлений GPIOXINT_REG GPIOXINT5SEL; в одной области памяти. */
union GPIOXINT_REG GPIOXINT5SEL; // XINT5 GPIO Input Selection
+ /* Объединяет несколько представлений GPIOXINT_REG GPIOXINT6SEL; в одной области памяти. */
union GPIOXINT_REG GPIOXINT6SEL; // XINT6 GPIO Input Selection
+ /* Объединяет несколько представлений GPIOXINT_REG GPIOXINT7SEL; в одной области памяти. */
union GPIOXINT_REG GPIOXINT7SEL; // XINT7 GPIO Input Selection
+ /* Объединяет несколько представлений GPADAT_REG GPIOLPMSEL; в одной области памяти. */
union GPADAT_REG GPIOLPMSEL; // Low power modes GP I/O input select
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// GPI/O External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct GPIO_CTRL_REGS GpioCtrlRegs;; порядок элементов сохраняется. */
extern volatile struct GPIO_CTRL_REGS GpioCtrlRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct GPIO_DATA_REGS GpioDataRegs;; порядок элементов сохраняется. */
extern volatile struct GPIO_DATA_REGS GpioDataRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct GPIO_INT_REGS GpioIntRegs;; порядок элементов сохраняется. */
extern volatile struct GPIO_INT_REGS GpioIntRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_GPIO_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_I2c.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_I2c.h
index 382c12d..43a0049 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_I2c.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_I2c.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание I2c для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: March 22, 2007 10:40:22 $
//###########################################################################
@@ -12,165 +13,286 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_I2C_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_I2C_H
+/* Определяет защитный символ или переключатель DSP2833x_I2C_H для последующей компиляции. */
#define DSP2833x_I2C_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//----------------------------------------------------
// I2C interrupt vector register bit definitions */
+/* Описывает структуру I2CISRC_BITS; порядок полей определяет расположение данных. */
struct I2CISRC_BITS { // bits description
+ /* Битовое поле INTCODE, ширина 3 бит; данные INTCODE. */
Uint16 INTCODE:3; // 2:0 Interrupt code
+ /* Битовое поле rsvd1, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:13; // 15:3 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений I2CISRC_REG в одной области памяти. */
union I2CISRC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру I2CISRC_BITS bit;; порядок полей определяет расположение данных. */
struct I2CISRC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// I2C interrupt mask register bit definitions */
+/* Описывает структуру I2CIER_BITS; порядок полей определяет расположение данных. */
struct I2CIER_BITS { // bits description
+ /* Битовое поле ARBL, ширина 1 бит; данные ARBL. */
Uint16 ARBL:1; // 0 Arbitration lost interrupt
+ /* Битовое поле NACK, ширина 1 бит; данные NACK. */
Uint16 NACK:1; // 1 No ack interrupt
+ /* Битовое поле ARDY, ширина 1 бит; данные ARDY. */
Uint16 ARDY:1; // 2 Register access ready interrupt
+ /* Битовое поле RRDY, ширина 1 бит; данные RRDY. */
Uint16 RRDY:1; // 3 Recieve data ready interrupt
+ /* Битовое поле XRDY, ширина 1 бит; данные XRDY. */
Uint16 XRDY:1; // 4 Transmit data ready interrupt
+ /* Битовое поле SCD, ширина 1 бит; данные SCD. */
Uint16 SCD:1; // 5 Stop condition detection
+ /* Битовое поле AAS, ширина 1 бит; данные AAS. */
Uint16 AAS:1; // 6 Address as slave
+ /* Битовое поле rsvd, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:9; // 15:7 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений I2CIER_REG в одной области памяти. */
union I2CIER_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру I2CIER_BITS bit;; порядок полей определяет расположение данных. */
struct I2CIER_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// I2C status register bit definitions */
+/* Описывает структуру I2CSTR_BITS; порядок полей определяет расположение данных. */
struct I2CSTR_BITS { // bits description
+ /* Битовое поле ARBL, ширина 1 бит; данные ARBL. */
Uint16 ARBL:1; // 0 Arbitration lost interrupt
+ /* Битовое поле NACK, ширина 1 бит; данные NACK. */
Uint16 NACK:1; // 1 No ack interrupt
+ /* Битовое поле ARDY, ширина 1 бит; данные ARDY. */
Uint16 ARDY:1; // 2 Register access ready interrupt
+ /* Битовое поле RRDY, ширина 1 бит; данные RRDY. */
Uint16 RRDY:1; // 3 Recieve data ready interrupt
+ /* Битовое поле XRDY, ширина 1 бит; данные XRDY. */
Uint16 XRDY:1; // 4 Transmit data ready interrupt
+ /* Битовое поле SCD, ширина 1 бит; данные SCD. */
Uint16 SCD:1; // 5 Stop condition detection
+ /* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 7:6 reserved
+ /* Битовое поле AD0, ширина 1 бит; данные AD0. */
Uint16 AD0:1; // 8 Address Zero
+ /* Битовое поле AAS, ширина 1 бит; данные AAS. */
Uint16 AAS:1; // 9 Address as slave
+ /* Битовое поле XSMT, ширина 1 бит; данные XSMT. */
Uint16 XSMT:1; // 10 XMIT shift empty
+ /* Битовое поле RSFULL, ширина 1 бит; данные RSFULL. */
Uint16 RSFULL:1; // 11 Recieve shift full
+ /* Битовое поле BB, ширина 1 бит; данные BB. */
Uint16 BB:1; // 12 Bus busy
+ /* Битовое поле NACKSNT, ширина 1 бит; данные NACKSNT. */
Uint16 NACKSNT:1; // 13 A no ack sent
+ /* Битовое поле SDIR, ширина 1 бит; данные SDIR. */
Uint16 SDIR:1; // 14 Slave direction
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений I2CSTR_REG в одной области памяти. */
union I2CSTR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру I2CSTR_BITS bit;; порядок полей определяет расположение данных. */
struct I2CSTR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// I2C mode control register bit definitions */
+/* Описывает структуру I2CMDR_BITS; порядок полей определяет расположение данных. */
struct I2CMDR_BITS { // bits description
+ /* Битовое поле BC, ширина 3 бит; данные BC. */
Uint16 BC:3; // 2:0 Bit count
+ /* Битовое поле FDF, ширина 1 бит; данные FDF. */
Uint16 FDF:1; // 3 Free data format
+ /* Битовое поле STB, ширина 1 бит; данные STB. */
Uint16 STB:1; // 4 Start byte
+ /* Битовое поле IRS, ширина 1 бит; данные IRS. */
Uint16 IRS:1; // 5 I2C Reset not
+ /* Битовое поле DLB, ширина 1 бит; данные DLB. */
Uint16 DLB:1; // 6 Digital loopback
+ /* Битовое поле RM, ширина 1 бит; данные RM. */
Uint16 RM:1; // 7 Repeat mode
+ /* Битовое поле XA, ширина 1 бит; данные XA. */
Uint16 XA:1; // 8 Expand address
+ /* Битовое поле TRX, ширина 1 бит; данные TRX. */
Uint16 TRX:1; // 9 Transmitter/reciever
+ /* Битовое поле MST, ширина 1 бит; данные MST. */
Uint16 MST:1; // 10 Master/slave
+ /* Битовое поле STP, ширина 1 бит; данные STP. */
Uint16 STP:1; // 11 Stop condition
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 12 reserved
+ /* Битовое поле STT, ширина 1 бит; данные STT. */
Uint16 STT:1; // 13 Start condition
+ /* Битовое поле FREE, ширина 1 бит; данные FREE. */
Uint16 FREE:1; // 14 Emulation mode
+ /* Битовое поле NACKMOD, ширина 1 бит; данные NACKMOD. */
Uint16 NACKMOD:1; // 15 No Ack mode
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений I2CMDR_REG в одной области памяти. */
union I2CMDR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру I2CMDR_BITS bit;; порядок полей определяет расположение данных. */
struct I2CMDR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// I2C pre-scaler register bit definitions */
+/* Описывает структуру I2CPSC_BITS; порядок полей определяет расположение данных. */
struct I2CPSC_BITS { // bits description
+ /* Битовое поле IPSC, ширина 8 бит; данные IPSC. */
Uint16 IPSC:8; // 7:0 pre-scaler
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений I2CPSC_REG в одной области памяти. */
union I2CPSC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру I2CPSC_BITS bit;; порядок полей определяет расположение данных. */
struct I2CPSC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// TX FIFO control register bit definitions */
+/* Описывает структуру I2CFFTX_BITS; порядок полей определяет расположение данных. */
struct I2CFFTX_BITS { // bits description
+ /* Битовое поле TXFFIL, ширина 5 бит; данные TXFFIL. */
Uint16 TXFFIL:5; // 4:0 FIFO interrupt level
+ /* Битовое поле TXFFIENA, ширина 1 бит; данные TXFFIENA. */
Uint16 TXFFIENA:1; // 5 FIFO interrupt enable/disable
+ /* Битовое поле TXFFINTCLR, ширина 1 бит; данные TXFFINTCLR. */
Uint16 TXFFINTCLR:1; // 6 FIFO clear
+ /* Битовое поле TXFFINT, ширина 1 бит; данные TXFFINT. */
Uint16 TXFFINT:1; // 7 FIFO interrupt flag
+ /* Битовое поле TXFFST, ширина 5 бит; данные TXFFST. */
Uint16 TXFFST:5; // 12:8 FIFO level status
+ /* Битовое поле TXFFRST, ширина 1 бит; данные TXFFRST. */
Uint16 TXFFRST:1; // 13 FIFO reset
+ /* Битовое поле I2CFFEN, ширина 1 бит; данные I2CFFEN. */
Uint16 I2CFFEN:1; // 14 enable/disable TX & RX FIFOs
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений I2CFFTX_REG в одной области памяти. */
union I2CFFTX_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру I2CFFTX_BITS bit;; порядок полей определяет расположение данных. */
struct I2CFFTX_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// RX FIFO control register bit definitions */
+/* Описывает структуру I2CFFRX_BITS; порядок полей определяет расположение данных. */
struct I2CFFRX_BITS { // bits description
+ /* Битовое поле RXFFIL, ширина 5 бит; данные RXFFIL. */
Uint16 RXFFIL:5; // 4:0 FIFO interrupt level
+ /* Битовое поле RXFFIENA, ширина 1 бит; данные RXFFIENA. */
Uint16 RXFFIENA:1; // 5 FIFO interrupt enable/disable
+ /* Битовое поле RXFFINTCLR, ширина 1 бит; данные RXFFINTCLR. */
Uint16 RXFFINTCLR:1; // 6 FIFO clear
+ /* Битовое поле RXFFINT, ширина 1 бит; данные RXFFINT. */
Uint16 RXFFINT:1; // 7 FIFO interrupt flag
+ /* Битовое поле RXFFST, ширина 5 бит; данные RXFFST. */
Uint16 RXFFST:5; // 12:8 FIFO level
+ /* Битовое поле RXFFRST, ширина 1 бит; данные RXFFRST. */
Uint16 RXFFRST:1; // 13 FIFO reset
+ /* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 15:14 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений I2CFFRX_REG в одной области памяти. */
union I2CFFRX_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру I2CFFRX_BITS bit;; порядок полей определяет расположение данных. */
struct I2CFFRX_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
+/* Описывает структуру I2C_REGS; порядок полей определяет расположение данных. */
struct I2C_REGS {
+ /* Объявляет I2COAR — данные I2COAR. */
Uint16 I2COAR; // Own address register
+ /* Объединяет несколько представлений I2CIER_REG I2CIER; в одной области памяти. */
union I2CIER_REG I2CIER; // Interrupt enable
+ /* Объединяет несколько представлений I2CSTR_REG I2CSTR; в одной области памяти. */
union I2CSTR_REG I2CSTR; // Interrupt status
+ /* Объявляет I2CCLKL — данные I2CCLKL. */
Uint16 I2CCLKL; // Clock divider low
+ /* Объявляет I2CCLKH — данные I2CCLKH. */
Uint16 I2CCLKH; // Clock divider high
+ /* Объявляет I2CCNT — данные I2CCNT. */
Uint16 I2CCNT; // Data count
+ /* Объявляет I2CDRR — данные I2CDRR. */
Uint16 I2CDRR; // Data recieve
+ /* Объявляет I2CSAR — данные I2CSAR. */
Uint16 I2CSAR; // Slave address
+ /* Объявляет I2CDXR — данные I2CDXR. */
Uint16 I2CDXR; // Data transmit
+ /* Объединяет несколько представлений I2CMDR_REG I2CMDR; в одной области памяти. */
union I2CMDR_REG I2CMDR; // Mode
+ /* Объединяет несколько представлений I2CISRC_REG I2CISRC; в одной области памяти. */
union I2CISRC_REG I2CISRC; // Interrupt source
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // reserved
+ /* Объединяет несколько представлений I2CPSC_REG I2CPSC; в одной области памяти. */
union I2CPSC_REG I2CPSC; // Pre-scaler
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2[19]; // reserved
+ /* Объединяет несколько представлений I2CFFTX_REG I2CFFTX; в одной области памяти. */
union I2CFFTX_REG I2CFFTX; // Transmit FIFO
+ /* Объединяет несколько представлений I2CFFRX_REG I2CFFRX; в одной области памяти. */
union I2CFFRX_REG I2CFFRX; // Recieve FIFO
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -179,13 +301,17 @@ struct I2C_REGS {
//---------------------------------------------------------------------------
// External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct I2C_REGS I2caRegs;; порядок элементов сохраняется. */
extern volatile struct I2C_REGS I2caRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_I2C_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Mcbsp.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Mcbsp.h
index 05e4af9..4bf6d6d 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Mcbsp.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Mcbsp.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Mcbsp для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: May 14, 2008 16:30:31 $
//###########################################################################
@@ -11,11 +12,16 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_MCBSP_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_MCBSP_H
+/* Определяет защитный символ или переключатель DSP2833x_MCBSP_H для последующей компиляции. */
#define DSP2833x_MCBSP_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -23,691 +29,1269 @@ extern "C" {
// McBSP Individual Register Bit Definitions:
//
// McBSP DRR2 register bit definitions:
+/* Описывает структуру DRR2_BITS; порядок полей определяет расположение данных. */
struct DRR2_BITS { // bit description
+ /* Битовое поле HWLB, ширина 8 бит; данные HWLB. */
Uint16 HWLB:8; // 16:23 High word low byte
+ /* Битовое поле HWHB, ширина 8 бит; данные HWHB. */
Uint16 HWHB:8; // 24:31 High word high byte
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений DRR2_REG в одной области памяти. */
union DRR2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру DRR2_BITS bit;; порядок полей определяет расположение данных. */
struct DRR2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// McBSP DRR1 register bit definitions:
+/* Описывает структуру DRR1_BITS; порядок полей определяет расположение данных. */
struct DRR1_BITS { // bit description
+ /* Битовое поле LWLB, ширина 8 бит; данные LWLB. */
Uint16 LWLB:8; // 16:23 Low word low byte
+ /* Битовое поле LWHB, ширина 8 бит; данные LWHB. */
Uint16 LWHB:8; // 24:31 low word high byte
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений DRR1_REG в одной области памяти. */
union DRR1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру DRR1_BITS bit;; порядок полей определяет расположение данных. */
struct DRR1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// McBSP DXR2 register bit definitions:
+/* Описывает структуру DXR2_BITS; порядок полей определяет расположение данных. */
struct DXR2_BITS { // bit description
+ /* Битовое поле HWLB, ширина 8 бит; данные HWLB. */
Uint16 HWLB:8; // 16:23 High word low byte
+ /* Битовое поле HWHB, ширина 8 бит; данные HWHB. */
Uint16 HWHB:8; // 24:31 High word high byte
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений DXR2_REG в одной области памяти. */
union DXR2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру DXR2_BITS bit;; порядок полей определяет расположение данных. */
struct DXR2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// McBSP DXR1 register bit definitions:
+/* Описывает структуру DXR1_BITS; порядок полей определяет расположение данных. */
struct DXR1_BITS { // bit description
+ /* Битовое поле LWLB, ширина 8 бит; данные LWLB. */
Uint16 LWLB:8; // 16:23 Low word low byte
+ /* Битовое поле LWHB, ширина 8 бит; данные LWHB. */
Uint16 LWHB:8; // 24:31 low word high byte
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений DXR1_REG в одной области памяти. */
union DXR1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру DXR1_BITS bit;; порядок полей определяет расположение данных. */
struct DXR1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// SPCR2 control register bit definitions:
+/* Описывает структуру SPCR2_BITS; порядок полей определяет расположение данных. */
struct SPCR2_BITS { // bit description
+ /* Битовое поле XRST, ширина 1 бит; данные XRST. */
Uint16 XRST:1; // 0 transmit reset
+ /* Битовое поле XRDY, ширина 1 бит; данные XRDY. */
Uint16 XRDY:1; // 1 transmit ready
+ /* Битовое поле XEMPTY, ширина 1 бит; данные XEMPTY. */
Uint16 XEMPTY:1; // 2 Transmit empty
+ /* Битовое поле XSYNCERR, ширина 1 бит; данные XSYNCERR. */
Uint16 XSYNCERR:1; // 3 Transmit syn errorINT flag
+ /* Битовое поле XINTM, ширина 2 бит; данные XINTM. */
Uint16 XINTM:2; // 5:4 Transmit interrupt types
+ /* Битовое поле GRST, ширина 1 бит; данные GRST. */
Uint16 GRST:1; // 6 CLKG reset
+ /* Битовое поле FRST, ширина 1 бит; данные FRST. */
Uint16 FRST:1; // 7 Frame sync reset
+ /* Битовое поле SOFT, ширина 1 бит; данные SOFT. */
Uint16 SOFT:1; // 8 SOFT bit
+ /* Битовое поле FREE, ширина 1 бит; данные FREE. */
Uint16 FREE:1; // 9 FREE bit
+ /* Битовое поле rsvd, ширина 6 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:6; // 15:10 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPCR2_REG в одной области памяти. */
union SPCR2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPCR2_BITS bit;; порядок полей определяет расположение данных. */
struct SPCR2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// SPCR1 control register bit definitions:
+/* Описывает структуру SPCR1_BITS; порядок полей определяет расположение данных. */
struct SPCR1_BITS { // bit description
+ /* Битовое поле RRST, ширина 1 бит; данные RRST. */
Uint16 RRST:1; // 0 Receive reset
+ /* Битовое поле RRDY, ширина 1 бит; данные RRDY. */
Uint16 RRDY:1; // 1 Receive ready
+ /* Битовое поле RFULL, ширина 1 бит; данные RFULL. */
Uint16 RFULL:1; // 2 Receive full
+ /* Битовое поле RSYNCERR, ширина 1 бит; данные RSYNCERR. */
Uint16 RSYNCERR:1; // 7 Receive syn error
+ /* Битовое поле RINTM, ширина 2 бит; данные RINTM. */
Uint16 RINTM:2; // 5:4 Receive interrupt types
+ /* Битовое поле ABIS, ширина 1 бит; данные ABIS. */
Uint16 ABIS:1; // 6 ABIS mode select
+ /* Битовое поле DXENA, ширина 1 бит; данные DXENA. */
Uint16 DXENA:1; // 7 DX hi-z enable
+ /* Битовое поле rsvd, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:3; // 10:8 reserved
+ /* Битовое поле CLKSTP, ширина 2 бит; данные CLKSTP. */
Uint16 CLKSTP:2; // 12:11 CLKSTOP mode bit
+ /* Битовое поле RJUST, ширина 2 бит; данные RJUST. */
Uint16 RJUST:2; // 13:14 Right justified
+ /* Битовое поле DLB, ширина 1 бит; данные DLB. */
Uint16 DLB:1; // 15 Digital loop back
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPCR1_REG в одной области памяти. */
union SPCR1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPCR1_BITS bit;; порядок полей определяет расположение данных. */
struct SPCR1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCR2 control register bit definitions:
+/* Описывает структуру RCR2_BITS; порядок полей определяет расположение данных. */
struct RCR2_BITS { // bit description
+ /* Битовое поле RDATDLY, ширина 2 бит; данные RDATDLY. */
Uint16 RDATDLY:2; // 1:0 Receive data delay
+ /* Битовое поле RFIG, ширина 1 бит; данные RFIG. */
Uint16 RFIG:1; // 2 Receive frame sync ignore
+ /* Битовое поле RCOMPAND, ширина 2 бит; данные RCOMPAND. */
Uint16 RCOMPAND:2; // 4:3 Receive Companding Mode selects
+ /* Битовое поле RWDLEN2, ширина 3 бит; данные RWDLEN2. */
Uint16 RWDLEN2:3; // 7:5 Receive word length
+ /* Битовое поле RFRLEN2, ширина 7 бит; данные RFRLEN2. */
Uint16 RFRLEN2:7; // 14:8 Receive Frame sync
+ /* Битовое поле RPHASE, ширина 1 бит; данные RPHASE. */
Uint16 RPHASE:1; // 15 Receive Phase
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCR2_REG в одной области памяти. */
union RCR2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCR2_BITS bit;; порядок полей определяет расположение данных. */
struct RCR2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCR1 control register bit definitions:
+/* Описывает структуру RCR1_BITS; порядок полей определяет расположение данных. */
struct RCR1_BITS { // bit description
+ /* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 4:0 reserved
+ /* Битовое поле RWDLEN1, ширина 3 бит; данные RWDLEN1. */
Uint16 RWDLEN1:3; // 7:5 Receive word length
+ /* Битовое поле RFRLEN1, ширина 7 бит; данные RFRLEN1. */
Uint16 RFRLEN1:7; // 14:8 Receive frame length
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCR1_REG в одной области памяти. */
union RCR1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCR1_BITS bit;; порядок полей определяет расположение данных. */
struct RCR1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCR2 control register bit definitions:
+/* Описывает структуру XCR2_BITS; порядок полей определяет расположение данных. */
struct XCR2_BITS { // bit description
+ /* Битовое поле XDATDLY, ширина 2 бит; данные XDATDLY. */
Uint16 XDATDLY:2; // 1:0 Transmit data delay
+ /* Битовое поле XFIG, ширина 1 бит; данные XFIG. */
Uint16 XFIG:1; // 2 Transmit frame sync ignore
+ /* Битовое поле XCOMPAND, ширина 2 бит; данные XCOMPAND. */
Uint16 XCOMPAND:2; // 4:3 Transmit Companding Mode selects
+ /* Битовое поле XWDLEN2, ширина 3 бит; данные XWDLEN2. */
Uint16 XWDLEN2:3; // 7:5 Transmit word length
+ /* Битовое поле XFRLEN2, ширина 7 бит; данные XFRLEN2. */
Uint16 XFRLEN2:7; // 14:8 Transmit Frame sync
+ /* Битовое поле XPHASE, ширина 1 бит; данные XPHASE. */
Uint16 XPHASE:1; // 15 Transmit Phase
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCR2_REG в одной области памяти. */
union XCR2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCR2_BITS bit;; порядок полей определяет расположение данных. */
struct XCR2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCR1 control register bit definitions:
+/* Описывает структуру XCR1_BITS; порядок полей определяет расположение данных. */
struct XCR1_BITS { // bit description
+ /* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 4:0 reserved
+ /* Битовое поле XWDLEN1, ширина 3 бит; данные XWDLEN1. */
Uint16 XWDLEN1:3; // 7:5 Transmit word length
+ /* Битовое поле XFRLEN1, ширина 7 бит; данные XFRLEN1. */
Uint16 XFRLEN1:7; // 14:8 Transmit frame length
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCR1_REG в одной области памяти. */
union XCR1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCR1_BITS bit;; порядок полей определяет расположение данных. */
struct XCR1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// SRGR2 Sample rate generator control register bit definitions:
+/* Описывает структуру SRGR2_BITS; порядок полей определяет расположение данных. */
struct SRGR2_BITS { // bit description
+ /* Битовое поле FPER, ширина 12 бит; данные FPER. */
Uint16 FPER:12; // 11:0 Frame period
+ /* Битовое поле FSGM, ширина 1 бит; данные FSGM. */
Uint16 FSGM:1; // 12 Frame sync generator mode
+ /* Битовое поле CLKSM, ширина 1 бит; данные CLKSM. */
Uint16 CLKSM:1; // 13 Sample rate generator mode
+ /* Битовое поле rsvd, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:1; // 14 reserved
+ /* Битовое поле GSYNC, ширина 1 бит; данные GSYNC. */
Uint16 GSYNC:1; // 15 CLKG sync
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SRGR2_REG в одной области памяти. */
union SRGR2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SRGR2_BITS bit;; порядок полей определяет расположение данных. */
struct SRGR2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// SRGR1 control register bit definitions:
+/* Описывает структуру SRGR1_BITS; порядок полей определяет расположение данных. */
struct SRGR1_BITS { // bit description
+ /* Битовое поле CLKGDV, ширина 8 бит; данные CLKGDV. */
Uint16 CLKGDV:8; // 7:0 CLKG divider
+ /* Битовое поле FWID, ширина 8 бит; данные FWID. */
Uint16 FWID:8; // 15:8 Frame width
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SRGR1_REG в одной области памяти. */
union SRGR1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SRGR1_BITS bit;; порядок полей определяет расположение данных. */
struct SRGR1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// MCR2 Multichannel control register bit definitions:
+/* Описывает структуру MCR2_BITS; порядок полей определяет расположение данных. */
struct MCR2_BITS { // bit description
+ /* Битовое поле XMCM, ширина 2 бит; данные XMCM. */
Uint16 XMCM:2; // 1:0 Transmit multichannel mode
+ /* Битовое поле XCBLK, ширина 3 бит; данные XCBLK. */
Uint16 XCBLK:3; // 2:4 Transmit current block
+ /* Битовое поле XPABLK, ширина 2 бит; данные XPABLK. */
Uint16 XPABLK:2; // 5:6 Transmit partition A Block
+ /* Битовое поле XPBBLK, ширина 2 бит; данные XPBBLK. */
Uint16 XPBBLK:2; // 7:8 Transmit partition B Block
+ /* Битовое поле XMCME, ширина 1 бит; данные XMCME. */
Uint16 XMCME:1; // 9 Transmit multi-channel enhance mode
+ /* Битовое поле rsvd, ширина 6 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:6; // 15:10 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений MCR2_REG в одной области памяти. */
union MCR2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру MCR2_BITS bit;; порядок полей определяет расположение данных. */
struct MCR2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// MCR1 Multichannel control register bit definitions:
+/* Описывает структуру MCR1_BITS; порядок полей определяет расположение данных. */
struct MCR1_BITS { // bit description
+ /* Битовое поле RMCM, ширина 1 бит; данные RMCM. */
Uint16 RMCM:1; // 0 Receive multichannel mode
+ /* Битовое поле rsvd, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:1; // 1 reserved
+ /* Битовое поле RCBLK, ширина 3 бит; данные RCBLK. */
Uint16 RCBLK:3; // 4:2 Receive current block
+ /* Битовое поле RPABLK, ширина 2 бит; данные RPABLK. */
Uint16 RPABLK:2; // 6:5 Receive partition A Block
+ /* Битовое поле RPBBLK, ширина 2 бит; данные RPBBLK. */
Uint16 RPBBLK:2; // 7:8 Receive partition B Block
+ /* Битовое поле RMCME, ширина 1 бит; данные RMCME. */
Uint16 RMCME:1; // 9 Receive multi-channel enhance mode
+ /* Битовое поле rsvd1, ширина 6 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:6; // 15:10 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений MCR1_REG в одной области памяти. */
union MCR1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру MCR1_BITS bit;; порядок полей определяет расположение данных. */
struct MCR1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCERA control register bit definitions:
+/* Описывает структуру RCERA_BITS; порядок полей определяет расположение данных. */
struct RCERA_BITS { // bit description
+ /* Битовое поле RCEA0, ширина 1 бит; данные RCEA0. */
Uint16 RCEA0:1; // 0 Receive Channel enable bit
+ /* Битовое поле RCEA1, ширина 1 бит; данные RCEA1. */
Uint16 RCEA1:1; // 1 Receive Channel enable bit
+ /* Битовое поле RCEA2, ширина 1 бит; данные RCEA2. */
Uint16 RCEA2:1; // 2 Receive Channel enable bit
+ /* Битовое поле RCEA3, ширина 1 бит; данные RCEA3. */
Uint16 RCEA3:1; // 3 Receive Channel enable bit
+ /* Битовое поле RCEA4, ширина 1 бит; данные RCEA4. */
Uint16 RCEA4:1; // 4 Receive Channel enable bit
+ /* Битовое поле RCEA5, ширина 1 бит; данные RCEA5. */
Uint16 RCEA5:1; // 5 Receive Channel enable bit
+ /* Битовое поле RCEA6, ширина 1 бит; данные RCEA6. */
Uint16 RCEA6:1; // 6 Receive Channel enable bit
+ /* Битовое поле RCEA7, ширина 1 бит; данные RCEA7. */
Uint16 RCEA7:1; // 7 Receive Channel enable bit
+ /* Битовое поле RCEA8, ширина 1 бит; данные RCEA8. */
Uint16 RCEA8:1; // 8 Receive Channel enable bit
+ /* Битовое поле RCEA9, ширина 1 бит; данные RCEA9. */
Uint16 RCEA9:1; // 9 Receive Channel enable bit
+ /* Битовое поле RCEA10, ширина 1 бит; данные RCEA10. */
Uint16 RCEA10:1; // 10 Receive Channel enable bit
+ /* Битовое поле RCEA11, ширина 1 бит; данные RCEA11. */
Uint16 RCEA11:1; // 11 Receive Channel enable bit
+ /* Битовое поле RCEA12, ширина 1 бит; данные RCEA12. */
Uint16 RCEA12:1; // 12 Receive Channel enable bit
+ /* Битовое поле RCEA13, ширина 1 бит; данные RCEA13. */
Uint16 RCEA13:1; // 13 Receive Channel enable bit
+ /* Битовое поле RCEA14, ширина 1 бит; данные RCEA14. */
Uint16 RCEA14:1; // 14 Receive Channel enable bit
+ /* Битовое поле RCEA15, ширина 1 бит; данные RCEA15. */
Uint16 RCEA15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCERA_REG в одной области памяти. */
union RCERA_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCERA_BITS bit;; порядок полей определяет расположение данных. */
struct RCERA_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCERB control register bit definitions:
+/* Описывает структуру RCERB_BITS; порядок полей определяет расположение данных. */
struct RCERB_BITS { // bit description
+ /* Битовое поле RCEB0, ширина 1 бит; данные RCEB0. */
Uint16 RCEB0:1; // 0 Receive Channel enable bit
+ /* Битовое поле RCEB1, ширина 1 бит; данные RCEB1. */
Uint16 RCEB1:1; // 1 Receive Channel enable bit
+ /* Битовое поле RCEB2, ширина 1 бит; данные RCEB2. */
Uint16 RCEB2:1; // 2 Receive Channel enable bit
+ /* Битовое поле RCEB3, ширина 1 бит; данные RCEB3. */
Uint16 RCEB3:1; // 3 Receive Channel enable bit
+ /* Битовое поле RCEB4, ширина 1 бит; данные RCEB4. */
Uint16 RCEB4:1; // 4 Receive Channel enable bit
+ /* Битовое поле RCEB5, ширина 1 бит; данные RCEB5. */
Uint16 RCEB5:1; // 5 Receive Channel enable bit
+ /* Битовое поле RCEB6, ширина 1 бит; данные RCEB6. */
Uint16 RCEB6:1; // 6 Receive Channel enable bit
+ /* Битовое поле RCEB7, ширина 1 бит; данные RCEB7. */
Uint16 RCEB7:1; // 7 Receive Channel enable bit
+ /* Битовое поле RCEB8, ширина 1 бит; данные RCEB8. */
Uint16 RCEB8:1; // 8 Receive Channel enable bit
+ /* Битовое поле RCEB9, ширина 1 бит; данные RCEB9. */
Uint16 RCEB9:1; // 9 Receive Channel enable bit
+ /* Битовое поле RCEB10, ширина 1 бит; данные RCEB10. */
Uint16 RCEB10:1; // 10 Receive Channel enable bit
+ /* Битовое поле RCEB11, ширина 1 бит; данные RCEB11. */
Uint16 RCEB11:1; // 11 Receive Channel enable bit
+ /* Битовое поле RCEB12, ширина 1 бит; данные RCEB12. */
Uint16 RCEB12:1; // 12 Receive Channel enable bit
+ /* Битовое поле RCEB13, ширина 1 бит; данные RCEB13. */
Uint16 RCEB13:1; // 13 Receive Channel enable bit
+ /* Битовое поле RCEB14, ширина 1 бит; данные RCEB14. */
Uint16 RCEB14:1; // 14 Receive Channel enable bit
+ /* Битовое поле RCEB15, ширина 1 бит; данные RCEB15. */
Uint16 RCEB15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCERB_REG в одной области памяти. */
union RCERB_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCERB_BITS bit;; порядок полей определяет расположение данных. */
struct RCERB_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCERA control register bit definitions:
+/* Описывает структуру XCERA_BITS; порядок полей определяет расположение данных. */
struct XCERA_BITS { // bit description
+ /* Битовое поле XCERA0, ширина 1 бит; данные XCERA0. */
Uint16 XCERA0:1; // 0 Receive Channel enable bit
+ /* Битовое поле XCERA1, ширина 1 бит; данные XCERA1. */
Uint16 XCERA1:1; // 1 Receive Channel enable bit
+ /* Битовое поле XCERA2, ширина 1 бит; данные XCERA2. */
Uint16 XCERA2:1; // 2 Receive Channel enable bit
+ /* Битовое поле XCERA3, ширина 1 бит; данные XCERA3. */
Uint16 XCERA3:1; // 3 Receive Channel enable bit
+ /* Битовое поле XCERA4, ширина 1 бит; данные XCERA4. */
Uint16 XCERA4:1; // 4 Receive Channel enable bit
+ /* Битовое поле XCERA5, ширина 1 бит; данные XCERA5. */
Uint16 XCERA5:1; // 5 Receive Channel enable bit
+ /* Битовое поле XCERA6, ширина 1 бит; данные XCERA6. */
Uint16 XCERA6:1; // 6 Receive Channel enable bit
+ /* Битовое поле XCERA7, ширина 1 бит; данные XCERA7. */
Uint16 XCERA7:1; // 7 Receive Channel enable bit
+ /* Битовое поле XCERA8, ширина 1 бит; данные XCERA8. */
Uint16 XCERA8:1; // 8 Receive Channel enable bit
+ /* Битовое поле XCERA9, ширина 1 бит; данные XCERA9. */
Uint16 XCERA9:1; // 9 Receive Channel enable bit
+ /* Битовое поле XCERA10, ширина 1 бит; данные XCERA10. */
Uint16 XCERA10:1; // 10 Receive Channel enable bit
+ /* Битовое поле XCERA11, ширина 1 бит; данные XCERA11. */
Uint16 XCERA11:1; // 11 Receive Channel enable bit
+ /* Битовое поле XCERA12, ширина 1 бит; данные XCERA12. */
Uint16 XCERA12:1; // 12 Receive Channel enable bit
+ /* Битовое поле XCERA13, ширина 1 бит; данные XCERA13. */
Uint16 XCERA13:1; // 13 Receive Channel enable bit
+ /* Битовое поле XCERA14, ширина 1 бит; данные XCERA14. */
Uint16 XCERA14:1; // 14 Receive Channel enable bit
+ /* Битовое поле XCERA15, ширина 1 бит; данные XCERA15. */
Uint16 XCERA15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCERA_REG в одной области памяти. */
union XCERA_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCERA_BITS bit;; порядок полей определяет расположение данных. */
struct XCERA_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCERB control register bit definitions:
+/* Описывает структуру XCERB_BITS; порядок полей определяет расположение данных. */
struct XCERB_BITS { // bit description
+ /* Битовое поле XCERB0, ширина 1 бит; данные XCERB0. */
Uint16 XCERB0:1; // 0 Receive Channel enable bit
+ /* Битовое поле XCERB1, ширина 1 бит; данные XCERB1. */
Uint16 XCERB1:1; // 1 Receive Channel enable bit
+ /* Битовое поле XCERB2, ширина 1 бит; данные XCERB2. */
Uint16 XCERB2:1; // 2 Receive Channel enable bit
+ /* Битовое поле XCERB3, ширина 1 бит; данные XCERB3. */
Uint16 XCERB3:1; // 3 Receive Channel enable bit
+ /* Битовое поле XCERB4, ширина 1 бит; данные XCERB4. */
Uint16 XCERB4:1; // 4 Receive Channel enable bit
+ /* Битовое поле XCERB5, ширина 1 бит; данные XCERB5. */
Uint16 XCERB5:1; // 5 Receive Channel enable bit
+ /* Битовое поле XCERB6, ширина 1 бит; данные XCERB6. */
Uint16 XCERB6:1; // 6 Receive Channel enable bit
+ /* Битовое поле XCERB7, ширина 1 бит; данные XCERB7. */
Uint16 XCERB7:1; // 7 Receive Channel enable bit
+ /* Битовое поле XCERB8, ширина 1 бит; данные XCERB8. */
Uint16 XCERB8:1; // 8 Receive Channel enable bit
+ /* Битовое поле XCERB9, ширина 1 бит; данные XCERB9. */
Uint16 XCERB9:1; // 9 Receive Channel enable bit
+ /* Битовое поле XCERB10, ширина 1 бит; данные XCERB10. */
Uint16 XCERB10:1; // 10 Receive Channel enable bit
+ /* Битовое поле XCERB11, ширина 1 бит; данные XCERB11. */
Uint16 XCERB11:1; // 11 Receive Channel enable bit
+ /* Битовое поле XCERB12, ширина 1 бит; данные XCERB12. */
Uint16 XCERB12:1; // 12 Receive Channel enable bit
+ /* Битовое поле XCERB13, ширина 1 бит; данные XCERB13. */
Uint16 XCERB13:1; // 13 Receive Channel enable bit
+ /* Битовое поле XCERB14, ширина 1 бит; данные XCERB14. */
Uint16 XCERB14:1; // 14 Receive Channel enable bit
+ /* Битовое поле XCERB15, ширина 1 бит; данные XCERB15. */
Uint16 XCERB15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCERB_REG в одной области памяти. */
union XCERB_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCERB_BITS bit;; порядок полей определяет расположение данных. */
struct XCERB_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// PCR control register bit definitions:
+/* Описывает структуру PCR_BITS; порядок полей определяет расположение данных. */
struct PCR_BITS { // bit description
+ /* Битовое поле CLKRP, ширина 1 бит; данные CLKRP. */
Uint16 CLKRP:1; // 0 Receive Clock polarity
+ /* Битовое поле CLKXP, ширина 1 бит; данные CLKXP. */
Uint16 CLKXP:1; // 1 Transmit clock polarity
+ /* Битовое поле FSRP, ширина 1 бит; данные FSRP. */
Uint16 FSRP:1; // 2 Receive Frame synchronization polarity
+ /* Битовое поле FSXP, ширина 1 бит; данные FSXP. */
Uint16 FSXP:1; // 3 Transmit Frame synchronization polarity
+ /* Битовое поле DR_STAT, ширина 1 бит; данные DR_STAT. */
Uint16 DR_STAT:1; // 4 DR pin status - reserved for this McBSP
+ /* Битовое поле DX_STAT, ширина 1 бит; данные DX_STAT. */
Uint16 DX_STAT:1; // 5 DX pin status - reserved for this McBSP
+ /* Битовое поле CLKS_STAT, ширина 1 бит; данные CLKS_STAT. */
Uint16 CLKS_STAT:1; // 6 CLKS pin status - reserved for 28x -McBSP
+ /* Битовое поле SCLKME, ширина 1 бит; данные SCLKME. */
Uint16 SCLKME:1; // 7 Enhanced sample clock mode selection bit.
+ /* Битовое поле CLKRM, ширина 1 бит; данные CLKRM. */
Uint16 CLKRM:1; // 8 Receiver Clock Mode
+ /* Битовое поле CLKXM, ширина 1 бит; данные CLKXM. */
Uint16 CLKXM:1; // 9 Transmitter Clock Mode.
+ /* Битовое поле FSRM, ширина 1 бит; данные FSRM. */
Uint16 FSRM:1; // 10 Receive Frame Synchronization Mode
+ /* Битовое поле FSXM, ширина 1 бит; данные FSXM. */
Uint16 FSXM:1; // 11 Transmit Frame Synchronization Mode
+ /* Битовое поле RIOEN, ширина 1 бит; данные RIOEN. */
Uint16 RIOEN:1; // 12 General Purpose I/O Mode - reserved in this 28x-McBSP
+ /* Битовое поле XIOEN, ширина 1 бит; данные XIOEN. */
Uint16 XIOEN:1; // 13 General Purpose I/O Mode - reserved in this 28x-McBSP
+ /* Битовое поле IDEL_EN, ширина 1 бит; данные IDEL_EN. */
Uint16 IDEL_EN:1; // 14 reserved in this 28x-McBSP
+ /* Битовое поле rsvd, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:1 ; // 15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PCR_REG в одной области памяти. */
union PCR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PCR_BITS bit;; порядок полей определяет расположение данных. */
struct PCR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCERC control register bit definitions:
+/* Описывает структуру RCERC_BITS; порядок полей определяет расположение данных. */
struct RCERC_BITS { // bit description
+ /* Битовое поле RCEC0, ширина 1 бит; данные RCEC0. */
Uint16 RCEC0:1; // 0 Receive Channel enable bit
+ /* Битовое поле RCEC1, ширина 1 бит; данные RCEC1. */
Uint16 RCEC1:1; // 1 Receive Channel enable bit
+ /* Битовое поле RCEC2, ширина 1 бит; данные RCEC2. */
Uint16 RCEC2:1; // 2 Receive Channel enable bit
+ /* Битовое поле RCEC3, ширина 1 бит; данные RCEC3. */
Uint16 RCEC3:1; // 3 Receive Channel enable bit
+ /* Битовое поле RCEC4, ширина 1 бит; данные RCEC4. */
Uint16 RCEC4:1; // 4 Receive Channel enable bit
+ /* Битовое поле RCEC5, ширина 1 бит; данные RCEC5. */
Uint16 RCEC5:1; // 5 Receive Channel enable bit
+ /* Битовое поле RCEC6, ширина 1 бит; данные RCEC6. */
Uint16 RCEC6:1; // 6 Receive Channel enable bit
+ /* Битовое поле RCEC7, ширина 1 бит; данные RCEC7. */
Uint16 RCEC7:1; // 7 Receive Channel enable bit
+ /* Битовое поле RCEC8, ширина 1 бит; данные RCEC8. */
Uint16 RCEC8:1; // 8 Receive Channel enable bit
+ /* Битовое поле RCEC9, ширина 1 бит; данные RCEC9. */
Uint16 RCEC9:1; // 9 Receive Channel enable bit
+ /* Битовое поле RCEC10, ширина 1 бит; данные RCEC10. */
Uint16 RCEC10:1; // 10 Receive Channel enable bit
+ /* Битовое поле RCEC11, ширина 1 бит; данные RCEC11. */
Uint16 RCEC11:1; // 11 Receive Channel enable bit
+ /* Битовое поле RCEC12, ширина 1 бит; данные RCEC12. */
Uint16 RCEC12:1; // 12 Receive Channel enable bit
+ /* Битовое поле RCEC13, ширина 1 бит; данные RCEC13. */
Uint16 RCEC13:1; // 13 Receive Channel enable bit
+ /* Битовое поле RCEC14, ширина 1 бит; данные RCEC14. */
Uint16 RCEC14:1; // 14 Receive Channel enable bit
+ /* Битовое поле RCEC15, ширина 1 бит; данные RCEC15. */
Uint16 RCEC15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCERC_REG в одной области памяти. */
union RCERC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCERC_BITS bit;; порядок полей определяет расположение данных. */
struct RCERC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCERD control register bit definitions:
+/* Описывает структуру RCERD_BITS; порядок полей определяет расположение данных. */
struct RCERD_BITS { // bit description
+ /* Битовое поле RCED0, ширина 1 бит; данные RCED0. */
Uint16 RCED0:1; // 0 Receive Channel enable bit
+ /* Битовое поле RCED1, ширина 1 бит; данные RCED1. */
Uint16 RCED1:1; // 1 Receive Channel enable bit
+ /* Битовое поле RCED2, ширина 1 бит; данные RCED2. */
Uint16 RCED2:1; // 2 Receive Channel enable bit
+ /* Битовое поле RCED3, ширина 1 бит; данные RCED3. */
Uint16 RCED3:1; // 3 Receive Channel enable bit
+ /* Битовое поле RCED4, ширина 1 бит; данные RCED4. */
Uint16 RCED4:1; // 4 Receive Channel enable bit
+ /* Битовое поле RCED5, ширина 1 бит; данные RCED5. */
Uint16 RCED5:1; // 5 Receive Channel enable bit
+ /* Битовое поле RCED6, ширина 1 бит; данные RCED6. */
Uint16 RCED6:1; // 6 Receive Channel enable bit
+ /* Битовое поле RCED7, ширина 1 бит; данные RCED7. */
Uint16 RCED7:1; // 7 Receive Channel enable bit
+ /* Битовое поле RCED8, ширина 1 бит; данные RCED8. */
Uint16 RCED8:1; // 8 Receive Channel enable bit
+ /* Битовое поле RCED9, ширина 1 бит; данные RCED9. */
Uint16 RCED9:1; // 9 Receive Channel enable bit
+ /* Битовое поле RCED10, ширина 1 бит; данные RCED10. */
Uint16 RCED10:1; // 10 Receive Channel enable bit
+ /* Битовое поле RCED11, ширина 1 бит; данные RCED11. */
Uint16 RCED11:1; // 11 Receive Channel enable bit
+ /* Битовое поле RCED12, ширина 1 бит; данные RCED12. */
Uint16 RCED12:1; // 12 Receive Channel enable bit
+ /* Битовое поле RCED13, ширина 1 бит; данные RCED13. */
Uint16 RCED13:1; // 13 Receive Channel enable bit
+ /* Битовое поле RCED14, ширина 1 бит; данные RCED14. */
Uint16 RCED14:1; // 14 Receive Channel enable bit
+ /* Битовое поле RCED15, ширина 1 бит; данные RCED15. */
Uint16 RCED15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCERD_REG в одной области памяти. */
union RCERD_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCERD_BITS bit;; порядок полей определяет расположение данных. */
struct RCERD_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCERC control register bit definitions:
+/* Описывает структуру XCERC_BITS; порядок полей определяет расположение данных. */
struct XCERC_BITS { // bit description
+ /* Битовое поле XCERC0, ширина 1 бит; данные XCERC0. */
Uint16 XCERC0:1; // 0 Receive Channel enable bit
+ /* Битовое поле XCERC1, ширина 1 бит; данные XCERC1. */
Uint16 XCERC1:1; // 1 Receive Channel enable bit
+ /* Битовое поле XCERC2, ширина 1 бит; данные XCERC2. */
Uint16 XCERC2:1; // 2 Receive Channel enable bit
+ /* Битовое поле XCERC3, ширина 1 бит; данные XCERC3. */
Uint16 XCERC3:1; // 3 Receive Channel enable bit
+ /* Битовое поле XCERC4, ширина 1 бит; данные XCERC4. */
Uint16 XCERC4:1; // 4 Receive Channel enable bit
+ /* Битовое поле XCERC5, ширина 1 бит; данные XCERC5. */
Uint16 XCERC5:1; // 5 Receive Channel enable bit
+ /* Битовое поле XCERC6, ширина 1 бит; данные XCERC6. */
Uint16 XCERC6:1; // 6 Receive Channel enable bit
+ /* Битовое поле XCERC7, ширина 1 бит; данные XCERC7. */
Uint16 XCERC7:1; // 7 Receive Channel enable bit
+ /* Битовое поле XCERC8, ширина 1 бит; данные XCERC8. */
Uint16 XCERC8:1; // 8 Receive Channel enable bit
+ /* Битовое поле XCERC9, ширина 1 бит; данные XCERC9. */
Uint16 XCERC9:1; // 9 Receive Channel enable bit
+ /* Битовое поле XCERC10, ширина 1 бит; данные XCERC10. */
Uint16 XCERC10:1; // 10 Receive Channel enable bit
+ /* Битовое поле XCERC11, ширина 1 бит; данные XCERC11. */
Uint16 XCERC11:1; // 11 Receive Channel enable bit
+ /* Битовое поле XCERC12, ширина 1 бит; данные XCERC12. */
Uint16 XCERC12:1; // 12 Receive Channel enable bit
+ /* Битовое поле XCERC13, ширина 1 бит; данные XCERC13. */
Uint16 XCERC13:1; // 13 Receive Channel enable bit
+ /* Битовое поле XCERC14, ширина 1 бит; данные XCERC14. */
Uint16 XCERC14:1; // 14 Receive Channel enable bit
+ /* Битовое поле XCERC15, ширина 1 бит; данные XCERC15. */
Uint16 XCERC15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCERC_REG в одной области памяти. */
union XCERC_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCERC_BITS bit;; порядок полей определяет расположение данных. */
struct XCERC_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCERD control register bit definitions:
+/* Описывает структуру XCERD_BITS; порядок полей определяет расположение данных. */
struct XCERD_BITS { // bit description
+ /* Битовое поле XCERD0, ширина 1 бит; данные XCERD0. */
Uint16 XCERD0:1; // 0 Receive Channel enable bit
+ /* Битовое поле XCERD1, ширина 1 бит; данные XCERD1. */
Uint16 XCERD1:1; // 1 Receive Channel enable bit
+ /* Битовое поле XCERD2, ширина 1 бит; данные XCERD2. */
Uint16 XCERD2:1; // 2 Receive Channel enable bit
+ /* Битовое поле XCERD3, ширина 1 бит; данные XCERD3. */
Uint16 XCERD3:1; // 3 Receive Channel enable bit
+ /* Битовое поле XCERD4, ширина 1 бит; данные XCERD4. */
Uint16 XCERD4:1; // 4 Receive Channel enable bit
+ /* Битовое поле XCERD5, ширина 1 бит; данные XCERD5. */
Uint16 XCERD5:1; // 5 Receive Channel enable bit
+ /* Битовое поле XCERD6, ширина 1 бит; данные XCERD6. */
Uint16 XCERD6:1; // 6 Receive Channel enable bit
+ /* Битовое поле XCERD7, ширина 1 бит; данные XCERD7. */
Uint16 XCERD7:1; // 7 Receive Channel enable bit
+ /* Битовое поле XCERD8, ширина 1 бит; данные XCERD8. */
Uint16 XCERD8:1; // 8 Receive Channel enable bit
+ /* Битовое поле XCERD9, ширина 1 бит; данные XCERD9. */
Uint16 XCERD9:1; // 9 Receive Channel enable bit
+ /* Битовое поле XCERD10, ширина 1 бит; данные XCERD10. */
Uint16 XCERD10:1; // 10 Receive Channel enable bit
+ /* Битовое поле XCERD11, ширина 1 бит; данные XCERD11. */
Uint16 XCERD11:1; // 11 Receive Channel enable bit
+ /* Битовое поле XCERD12, ширина 1 бит; данные XCERD12. */
Uint16 XCERD12:1; // 12 Receive Channel enable bit
+ /* Битовое поле XCERD13, ширина 1 бит; данные XCERD13. */
Uint16 XCERD13:1; // 13 Receive Channel enable bit
+ /* Битовое поле XCERD14, ширина 1 бит; данные XCERD14. */
Uint16 XCERD14:1; // 14 Receive Channel enable bit
+ /* Битовое поле XCERD15, ширина 1 бит; данные XCERD15. */
Uint16 XCERD15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCERD_REG в одной области памяти. */
union XCERD_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCERD_BITS bit;; порядок полей определяет расположение данных. */
struct XCERD_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCERE control register bit definitions:
+/* Описывает структуру RCERE_BITS; порядок полей определяет расположение данных. */
struct RCERE_BITS { // bit description
+ /* Битовое поле RCEE0, ширина 1 бит; данные RCEE0. */
Uint16 RCEE0:1; // 0 Receive Channel enable bit
+ /* Битовое поле RCEE1, ширина 1 бит; данные RCEE1. */
Uint16 RCEE1:1; // 1 Receive Channel enable bit
+ /* Битовое поле RCEE2, ширина 1 бит; данные RCEE2. */
Uint16 RCEE2:1; // 2 Receive Channel enable bit
+ /* Битовое поле RCEE3, ширина 1 бит; данные RCEE3. */
Uint16 RCEE3:1; // 3 Receive Channel enable bit
+ /* Битовое поле RCEE4, ширина 1 бит; данные RCEE4. */
Uint16 RCEE4:1; // 4 Receive Channel enable bit
+ /* Битовое поле RCEE5, ширина 1 бит; данные RCEE5. */
Uint16 RCEE5:1; // 5 Receive Channel enable bit
+ /* Битовое поле RCEE6, ширина 1 бит; данные RCEE6. */
Uint16 RCEE6:1; // 6 Receive Channel enable bit
+ /* Битовое поле RCEE7, ширина 1 бит; данные RCEE7. */
Uint16 RCEE7:1; // 7 Receive Channel enable bit
+ /* Битовое поле RCEE8, ширина 1 бит; данные RCEE8. */
Uint16 RCEE8:1; // 8 Receive Channel enable bit
+ /* Битовое поле RCEE9, ширина 1 бит; данные RCEE9. */
Uint16 RCEE9:1; // 9 Receive Channel enable bit
+ /* Битовое поле RCEE10, ширина 1 бит; данные RCEE10. */
Uint16 RCEE10:1; // 10 Receive Channel enable bit
+ /* Битовое поле RCEE11, ширина 1 бит; данные RCEE11. */
Uint16 RCEE11:1; // 11 Receive Channel enable bit
+ /* Битовое поле RCEE12, ширина 1 бит; данные RCEE12. */
Uint16 RCEE12:1; // 12 Receive Channel enable bit
+ /* Битовое поле RCEE13, ширина 1 бит; данные RCEE13. */
Uint16 RCEE13:1; // 13 Receive Channel enable bit
+ /* Битовое поле RCEE14, ширина 1 бит; данные RCEE14. */
Uint16 RCEE14:1; // 14 Receive Channel enable bit
+ /* Битовое поле RCEE15, ширина 1 бит; данные RCEE15. */
Uint16 RCEE15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCERE_REG в одной области памяти. */
union RCERE_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCERE_BITS bit;; порядок полей определяет расположение данных. */
struct RCERE_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCERF control register bit definitions:
+/* Описывает структуру RCERF_BITS; порядок полей определяет расположение данных. */
struct RCERF_BITS { // bit description
+ /* Битовое поле RCEF0, ширина 1 бит; данные RCEF0. */
Uint16 RCEF0:1; // 0 Receive Channel enable bit
+ /* Битовое поле RCEF1, ширина 1 бит; данные RCEF1. */
Uint16 RCEF1:1; // 1 Receive Channel enable bit
+ /* Битовое поле RCEF2, ширина 1 бит; данные RCEF2. */
Uint16 RCEF2:1; // 2 Receive Channel enable bit
+ /* Битовое поле RCEF3, ширина 1 бит; данные RCEF3. */
Uint16 RCEF3:1; // 3 Receive Channel enable bit
+ /* Битовое поле RCEF4, ширина 1 бит; данные RCEF4. */
Uint16 RCEF4:1; // 4 Receive Channel enable bit
+ /* Битовое поле RCEF5, ширина 1 бит; данные RCEF5. */
Uint16 RCEF5:1; // 5 Receive Channel enable bit
+ /* Битовое поле RCEF6, ширина 1 бит; данные RCEF6. */
Uint16 RCEF6:1; // 6 Receive Channel enable bit
+ /* Битовое поле RCEF7, ширина 1 бит; данные RCEF7. */
Uint16 RCEF7:1; // 7 Receive Channel enable bit
+ /* Битовое поле RCEF8, ширина 1 бит; данные RCEF8. */
Uint16 RCEF8:1; // 8 Receive Channel enable bit
+ /* Битовое поле RCEF9, ширина 1 бит; данные RCEF9. */
Uint16 RCEF9:1; // 9 Receive Channel enable bit
+ /* Битовое поле RCEF10, ширина 1 бит; данные RCEF10. */
Uint16 RCEF10:1; // 10 Receive Channel enable bit
+ /* Битовое поле RCEF11, ширина 1 бит; данные RCEF11. */
Uint16 RCEF11:1; // 11 Receive Channel enable bit
+ /* Битовое поле RCEF12, ширина 1 бит; данные RCEF12. */
Uint16 RCEF12:1; // 12 Receive Channel enable bit
+ /* Битовое поле RCEF13, ширина 1 бит; данные RCEF13. */
Uint16 RCEF13:1; // 13 Receive Channel enable bit
+ /* Битовое поле RCEF14, ширина 1 бит; данные RCEF14. */
Uint16 RCEF14:1; // 14 Receive Channel enable bit
+ /* Битовое поле RCEF15, ширина 1 бит; данные RCEF15. */
Uint16 RCEF15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCERF_REG в одной области памяти. */
union RCERF_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCERF_BITS bit;; порядок полей определяет расположение данных. */
struct RCERF_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCERE control register bit definitions:
+/* Описывает структуру XCERE_BITS; порядок полей определяет расположение данных. */
struct XCERE_BITS { // bit description
+ /* Битовое поле XCERE0, ширина 1 бит; данные XCERE0. */
Uint16 XCERE0:1; // 0 Receive Channel enable bit
+ /* Битовое поле XCERE1, ширина 1 бит; данные XCERE1. */
Uint16 XCERE1:1; // 1 Receive Channel enable bit
+ /* Битовое поле XCERE2, ширина 1 бит; данные XCERE2. */
Uint16 XCERE2:1; // 2 Receive Channel enable bit
+ /* Битовое поле XCERE3, ширина 1 бит; данные XCERE3. */
Uint16 XCERE3:1; // 3 Receive Channel enable bit
+ /* Битовое поле XCERE4, ширина 1 бит; данные XCERE4. */
Uint16 XCERE4:1; // 4 Receive Channel enable bit
+ /* Битовое поле XCERE5, ширина 1 бит; данные XCERE5. */
Uint16 XCERE5:1; // 5 Receive Channel enable bit
+ /* Битовое поле XCERE6, ширина 1 бит; данные XCERE6. */
Uint16 XCERE6:1; // 6 Receive Channel enable bit
+ /* Битовое поле XCERE7, ширина 1 бит; данные XCERE7. */
Uint16 XCERE7:1; // 7 Receive Channel enable bit
+ /* Битовое поле XCERE8, ширина 1 бит; данные XCERE8. */
Uint16 XCERE8:1; // 8 Receive Channel enable bit
+ /* Битовое поле XCERE9, ширина 1 бит; данные XCERE9. */
Uint16 XCERE9:1; // 9 Receive Channel enable bit
+ /* Битовое поле XCERE10, ширина 1 бит; данные XCERE10. */
Uint16 XCERE10:1; // 10 Receive Channel enable bit
+ /* Битовое поле XCERE11, ширина 1 бит; данные XCERE11. */
Uint16 XCERE11:1; // 11 Receive Channel enable bit
+ /* Битовое поле XCERE12, ширина 1 бит; данные XCERE12. */
Uint16 XCERE12:1; // 12 Receive Channel enable bit
+ /* Битовое поле XCERE13, ширина 1 бит; данные XCERE13. */
Uint16 XCERE13:1; // 13 Receive Channel enable bit
+ /* Битовое поле XCERE14, ширина 1 бит; данные XCERE14. */
Uint16 XCERE14:1; // 14 Receive Channel enable bit
+ /* Битовое поле XCERE15, ширина 1 бит; данные XCERE15. */
Uint16 XCERE15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCERE_REG в одной области памяти. */
union XCERE_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCERE_BITS bit;; порядок полей определяет расположение данных. */
struct XCERE_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCERF control register bit definitions:
+/* Описывает структуру XCERF_BITS; порядок полей определяет расположение данных. */
struct XCERF_BITS { // bit description
+ /* Битовое поле XCERF0, ширина 1 бит; данные XCERF0. */
Uint16 XCERF0:1; // 0 Receive Channel enable bit
+ /* Битовое поле XCERF1, ширина 1 бит; данные XCERF1. */
Uint16 XCERF1:1; // 1 Receive Channel enable bit
+ /* Битовое поле XCERF2, ширина 1 бит; данные XCERF2. */
Uint16 XCERF2:1; // 2 Receive Channel enable bit
+ /* Битовое поле XCERF3, ширина 1 бит; данные XCERF3. */
Uint16 XCERF3:1; // 3 Receive Channel enable bit
+ /* Битовое поле XCERF4, ширина 1 бит; данные XCERF4. */
Uint16 XCERF4:1; // 4 Receive Channel enable bit
+ /* Битовое поле XCERF5, ширина 1 бит; данные XCERF5. */
Uint16 XCERF5:1; // 5 Receive Channel enable bit
+ /* Битовое поле XCERF6, ширина 1 бит; данные XCERF6. */
Uint16 XCERF6:1; // 6 Receive Channel enable bit
+ /* Битовое поле XCERF7, ширина 1 бит; данные XCERF7. */
Uint16 XCERF7:1; // 7 Receive Channel enable bit
+ /* Битовое поле XCERF8, ширина 1 бит; данные XCERF8. */
Uint16 XCERF8:1; // 8 Receive Channel enable bit
+ /* Битовое поле XCERF9, ширина 1 бит; данные XCERF9. */
Uint16 XCERF9:1; // 9 Receive Channel enable bit
+ /* Битовое поле XCERF10, ширина 1 бит; данные XCERF10. */
Uint16 XCERF10:1; // 10 Receive Channel enable bit
+ /* Битовое поле XCERF11, ширина 1 бит; данные XCERF11. */
Uint16 XCERF11:1; // 11 Receive Channel enable bit
+ /* Битовое поле XCERF12, ширина 1 бит; данные XCERF12. */
Uint16 XCERF12:1; // 12 Receive Channel enable bit
+ /* Битовое поле XCERF13, ширина 1 бит; данные XCERF13. */
Uint16 XCERF13:1; // 13 Receive Channel enable bit
+ /* Битовое поле XCERF14, ширина 1 бит; данные XCERF14. */
Uint16 XCERF14:1; // 14 Receive Channel enable bit
+ /* Битовое поле XCERF15, ширина 1 бит; данные XCERF15. */
Uint16 XCERF15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCERF_REG в одной области памяти. */
union XCERF_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCERF_BITS bit;; порядок полей определяет расположение данных. */
struct XCERF_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCERG control register bit definitions:
+/* Описывает структуру RCERG_BITS; порядок полей определяет расположение данных. */
struct RCERG_BITS { // bit description
+ /* Битовое поле RCEG0, ширина 1 бит; данные RCEG0. */
Uint16 RCEG0:1; // 0 Receive Channel enable bit
+ /* Битовое поле RCEG1, ширина 1 бит; данные RCEG1. */
Uint16 RCEG1:1; // 1 Receive Channel enable bit
+ /* Битовое поле RCEG2, ширина 1 бит; данные RCEG2. */
Uint16 RCEG2:1; // 2 Receive Channel enable bit
+ /* Битовое поле RCEG3, ширина 1 бит; данные RCEG3. */
Uint16 RCEG3:1; // 3 Receive Channel enable bit
+ /* Битовое поле RCEG4, ширина 1 бит; данные RCEG4. */
Uint16 RCEG4:1; // 4 Receive Channel enable bit
+ /* Битовое поле RCEG5, ширина 1 бит; данные RCEG5. */
Uint16 RCEG5:1; // 5 Receive Channel enable bit
+ /* Битовое поле RCEG6, ширина 1 бит; данные RCEG6. */
Uint16 RCEG6:1; // 6 Receive Channel enable bit
+ /* Битовое поле RCEG7, ширина 1 бит; данные RCEG7. */
Uint16 RCEG7:1; // 7 Receive Channel enable bit
+ /* Битовое поле RCEG8, ширина 1 бит; данные RCEG8. */
Uint16 RCEG8:1; // 8 Receive Channel enable bit
+ /* Битовое поле RCEG9, ширина 1 бит; данные RCEG9. */
Uint16 RCEG9:1; // 9 Receive Channel enable bit
+ /* Битовое поле RCEG10, ширина 1 бит; данные RCEG10. */
Uint16 RCEG10:1; // 10 Receive Channel enable bit
+ /* Битовое поле RCEG11, ширина 1 бит; данные RCEG11. */
Uint16 RCEG11:1; // 11 Receive Channel enable bit
+ /* Битовое поле RCEG12, ширина 1 бит; данные RCEG12. */
Uint16 RCEG12:1; // 12 Receive Channel enable bit
+ /* Битовое поле RCEG13, ширина 1 бит; данные RCEG13. */
Uint16 RCEG13:1; // 13 Receive Channel enable bit
+ /* Битовое поле RCEG14, ширина 1 бит; данные RCEG14. */
Uint16 RCEG14:1; // 14 Receive Channel enable bit
+ /* Битовое поле RCEG15, ширина 1 бит; данные RCEG15. */
Uint16 RCEG15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCERG_REG в одной области памяти. */
union RCERG_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCERG_BITS bit;; порядок полей определяет расположение данных. */
struct RCERG_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// RCERH control register bit definitions:
+/* Описывает структуру RCERH_BITS; порядок полей определяет расположение данных. */
struct RCERH_BITS { // bit description
+ /* Битовое поле RCEH0, ширина 1 бит; данные RCEH0. */
Uint16 RCEH0:1; // 0 Receive Channel enable bit
+ /* Битовое поле RCEH1, ширина 1 бит; данные RCEH1. */
Uint16 RCEH1:1; // 1 Receive Channel enable bit
+ /* Битовое поле RCEH2, ширина 1 бит; данные RCEH2. */
Uint16 RCEH2:1; // 2 Receive Channel enable bit
+ /* Битовое поле RCEH3, ширина 1 бит; данные RCEH3. */
Uint16 RCEH3:1; // 3 Receive Channel enable bit
+ /* Битовое поле RCEH4, ширина 1 бит; данные RCEH4. */
Uint16 RCEH4:1; // 4 Receive Channel enable bit
+ /* Битовое поле RCEH5, ширина 1 бит; данные RCEH5. */
Uint16 RCEH5:1; // 5 Receive Channel enable bit
+ /* Битовое поле RCEH6, ширина 1 бит; данные RCEH6. */
Uint16 RCEH6:1; // 6 Receive Channel enable bit
+ /* Битовое поле RCEH7, ширина 1 бит; данные RCEH7. */
Uint16 RCEH7:1; // 7 Receive Channel enable bit
+ /* Битовое поле RCEH8, ширина 1 бит; данные RCEH8. */
Uint16 RCEH8:1; // 8 Receive Channel enable bit
+ /* Битовое поле RCEH9, ширина 1 бит; данные RCEH9. */
Uint16 RCEH9:1; // 9 Receive Channel enable bit
+ /* Битовое поле RCEH10, ширина 1 бит; данные RCEH10. */
Uint16 RCEH10:1; // 10 Receive Channel enable bit
+ /* Битовое поле RCEH11, ширина 1 бит; данные RCEH11. */
Uint16 RCEH11:1; // 11 Receive Channel enable bit
+ /* Битовое поле RCEH12, ширина 1 бит; данные RCEH12. */
Uint16 RCEH12:1; // 12 Receive Channel enable bit
+ /* Битовое поле RCEH13, ширина 1 бит; данные RCEH13. */
Uint16 RCEH13:1; // 13 Receive Channel enable bit
+ /* Битовое поле RCEH14, ширина 1 бит; данные RCEH14. */
Uint16 RCEH14:1; // 14 Receive Channel enable bit
+ /* Битовое поле RCEH15, ширина 1 бит; данные RCEH15. */
Uint16 RCEH15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений RCERH_REG в одной области памяти. */
union RCERH_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру RCERH_BITS bit;; порядок полей определяет расположение данных. */
struct RCERH_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCERG control register bit definitions:
+/* Описывает структуру XCERG_BITS; порядок полей определяет расположение данных. */
struct XCERG_BITS { // bit description
+ /* Битовое поле XCERG0, ширина 1 бит; данные XCERG0. */
Uint16 XCERG0:1; // 0 Receive Channel enable bit
+ /* Битовое поле XCERG1, ширина 1 бит; данные XCERG1. */
Uint16 XCERG1:1; // 1 Receive Channel enable bit
+ /* Битовое поле XCERG2, ширина 1 бит; данные XCERG2. */
Uint16 XCERG2:1; // 2 Receive Channel enable bit
+ /* Битовое поле XCERG3, ширина 1 бит; данные XCERG3. */
Uint16 XCERG3:1; // 3 Receive Channel enable bit
+ /* Битовое поле XCERG4, ширина 1 бит; данные XCERG4. */
Uint16 XCERG4:1; // 4 Receive Channel enable bit
+ /* Битовое поле XCERG5, ширина 1 бит; данные XCERG5. */
Uint16 XCERG5:1; // 5 Receive Channel enable bit
+ /* Битовое поле XCERG6, ширина 1 бит; данные XCERG6. */
Uint16 XCERG6:1; // 6 Receive Channel enable bit
+ /* Битовое поле XCERG7, ширина 1 бит; данные XCERG7. */
Uint16 XCERG7:1; // 7 Receive Channel enable bit
+ /* Битовое поле XCERG8, ширина 1 бит; данные XCERG8. */
Uint16 XCERG8:1; // 8 Receive Channel enable bit
+ /* Битовое поле XCERG9, ширина 1 бит; данные XCERG9. */
Uint16 XCERG9:1; // 9 Receive Channel enable bit
+ /* Битовое поле XCERG10, ширина 1 бит; данные XCERG10. */
Uint16 XCERG10:1; // 10 Receive Channel enable bit
+ /* Битовое поле XCERG11, ширина 1 бит; данные XCERG11. */
Uint16 XCERG11:1; // 11 Receive Channel enable bit
+ /* Битовое поле XCERG12, ширина 1 бит; данные XCERG12. */
Uint16 XCERG12:1; // 12 Receive Channel enable bit
+ /* Битовое поле XCERG13, ширина 1 бит; данные XCERG13. */
Uint16 XCERG13:1; // 13 Receive Channel enable bit
+ /* Битовое поле XCERG14, ширина 1 бит; данные XCERG14. */
Uint16 XCERG14:1; // 14 Receive Channel enable bit
+ /* Битовое поле XCERG15, ширина 1 бит; данные XCERG15. */
Uint16 XCERG15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCERG_REG в одной области памяти. */
union XCERG_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCERG_BITS bit;; порядок полей определяет расположение данных. */
struct XCERG_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XCERH control register bit definitions:
+/* Описывает структуру XCERH_BITS; порядок полей определяет расположение данных. */
struct XCERH_BITS { // bit description
+ /* Битовое поле XCEH0, ширина 1 бит; данные XCEH0. */
Uint16 XCEH0:1; // 0 Receive Channel enable bit
+ /* Битовое поле XCEH1, ширина 1 бит; данные XCEH1. */
Uint16 XCEH1:1; // 1 Receive Channel enable bit
+ /* Битовое поле XCEH2, ширина 1 бит; данные XCEH2. */
Uint16 XCEH2:1; // 2 Receive Channel enable bit
+ /* Битовое поле XCEH3, ширина 1 бит; данные XCEH3. */
Uint16 XCEH3:1; // 3 Receive Channel enable bit
+ /* Битовое поле XCEH4, ширина 1 бит; данные XCEH4. */
Uint16 XCEH4:1; // 4 Receive Channel enable bit
+ /* Битовое поле XCEH5, ширина 1 бит; данные XCEH5. */
Uint16 XCEH5:1; // 5 Receive Channel enable bit
+ /* Битовое поле XCEH6, ширина 1 бит; данные XCEH6. */
Uint16 XCEH6:1; // 6 Receive Channel enable bit
+ /* Битовое поле XCEH7, ширина 1 бит; данные XCEH7. */
Uint16 XCEH7:1; // 7 Receive Channel enable bit
+ /* Битовое поле XCEH8, ширина 1 бит; данные XCEH8. */
Uint16 XCEH8:1; // 8 Receive Channel enable bit
+ /* Битовое поле XCEH9, ширина 1 бит; данные XCEH9. */
Uint16 XCEH9:1; // 9 Receive Channel enable bit
+ /* Битовое поле XCEH10, ширина 1 бит; данные XCEH10. */
Uint16 XCEH10:1; // 10 Receive Channel enable bit
+ /* Битовое поле XCEH11, ширина 1 бит; данные XCEH11. */
Uint16 XCEH11:1; // 11 Receive Channel enable bit
+ /* Битовое поле XCEH12, ширина 1 бит; данные XCEH12. */
Uint16 XCEH12:1; // 12 Receive Channel enable bit
+ /* Битовое поле XCEH13, ширина 1 бит; данные XCEH13. */
Uint16 XCEH13:1; // 13 Receive Channel enable bit
+ /* Битовое поле XCEH14, ширина 1 бит; данные XCEH14. */
Uint16 XCEH14:1; // 14 Receive Channel enable bit
+ /* Битовое поле XCEH15, ширина 1 бит; данные XCEH15. */
Uint16 XCEH15:1; // 15 Receive Channel enable bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XCERH_REG в одной области памяти. */
union XCERH_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XCERH_BITS bit;; порядок полей определяет расположение данных. */
struct XCERH_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// McBSP Interrupt enable register for RINT/XINT
+/* Описывает структуру MFFINT_BITS; порядок полей определяет расположение данных. */
struct MFFINT_BITS { // bits description
+ /* Битовое поле XINT, ширина 1 бит; данные XINT. */
Uint16 XINT:1; // 0 XINT interrupt enable
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved
+ /* Битовое поле RINT, ширина 1 бит; данные RINT. */
Uint16 RINT:1; // 2 RINT interrupt enable
+ /* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений MFFINT_REG в одной области памяти. */
union MFFINT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру MFFINT_BITS bit;; порядок полей определяет расположение данных. */
struct MFFINT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// McBSP Register File:
//
+/* Описывает структуру MCBSP_REGS; порядок полей определяет расположение данных. */
struct MCBSP_REGS {
+ /* Объединяет несколько представлений DRR2_REG DRR2; в одной области памяти. */
union DRR2_REG DRR2; // MCBSP Data receive register bits 31-16
+ /* Объединяет несколько представлений DRR1_REG DRR1; в одной области памяти. */
union DRR1_REG DRR1; // MCBSP Data receive register bits 15-0
+ /* Объединяет несколько представлений DXR2_REG DXR2; в одной области памяти. */
union DXR2_REG DXR2; // MCBSP Data transmit register bits 31-16
+ /* Объединяет несколько представлений DXR1_REG DXR1; в одной области памяти. */
union DXR1_REG DXR1; // MCBSP Data transmit register bits 15-0
+ /* Объединяет несколько представлений SPCR2_REG SPCR2; в одной области памяти. */
union SPCR2_REG SPCR2; // MCBSP control register bits 31-16
+ /* Объединяет несколько представлений SPCR1_REG SPCR1; в одной области памяти. */
union SPCR1_REG SPCR1; // MCBSP control register bits 15-0
+ /* Объединяет несколько представлений RCR2_REG RCR2; в одной области памяти. */
union RCR2_REG RCR2; // MCBSP receive control register bits 31-16
+ /* Объединяет несколько представлений RCR1_REG RCR1; в одной области памяти. */
union RCR1_REG RCR1; // MCBSP receive control register bits 15-0
+ /* Объединяет несколько представлений XCR2_REG XCR2; в одной области памяти. */
union XCR2_REG XCR2; // MCBSP transmit control register bits 31-16
+ /* Объединяет несколько представлений XCR1_REG XCR1; в одной области памяти. */
union XCR1_REG XCR1; // MCBSP transmit control register bits 15-0
+ /* Объединяет несколько представлений SRGR2_REG SRGR2; в одной области памяти. */
union SRGR2_REG SRGR2; // MCBSP sample rate gen register bits 31-16
+ /* Объединяет несколько представлений SRGR1_REG SRGR1; в одной области памяти. */
union SRGR1_REG SRGR1; // MCBSP sample rate gen register bits 15-0
+ /* Объединяет несколько представлений MCR2_REG MCR2; в одной области памяти. */
union MCR2_REG MCR2; // MCBSP multichannel register bits 31-16
+ /* Объединяет несколько представлений MCR1_REG MCR1; в одной области памяти. */
union MCR1_REG MCR1; // MCBSP multichannel register bits 15-0
+ /* Объединяет несколько представлений RCERA_REG RCERA; в одной области памяти. */
union RCERA_REG RCERA; // MCBSP Receive channel enable partition A
+ /* Объединяет несколько представлений RCERB_REG RCERB; в одной области памяти. */
union RCERB_REG RCERB; // MCBSP Receive channel enable partition B
+ /* Объединяет несколько представлений XCERA_REG XCERA; в одной области памяти. */
union XCERA_REG XCERA; // MCBSP Transmit channel enable partition A
+ /* Объединяет несколько представлений XCERB_REG XCERB; в одной области памяти. */
union XCERB_REG XCERB; // MCBSP Transmit channel enable partition B
+ /* Объединяет несколько представлений PCR_REG PCR; в одной области памяти. */
union PCR_REG PCR; // MCBSP Pin control register bits 15-0
+ /* Объединяет несколько представлений RCERC_REG RCERC; в одной области памяти. */
union RCERC_REG RCERC; // MCBSP Receive channel enable partition C
+ /* Объединяет несколько представлений RCERD_REG RCERD; в одной области памяти. */
union RCERD_REG RCERD; // MCBSP Receive channel enable partition D
+ /* Объединяет несколько представлений XCERC_REG XCERC; в одной области памяти. */
union XCERC_REG XCERC; // MCBSP Transmit channel enable partition C
+ /* Объединяет несколько представлений XCERD_REG XCERD; в одной области памяти. */
union XCERD_REG XCERD; // MCBSP Transmit channel enable partition D
+ /* Объединяет несколько представлений RCERE_REG RCERE; в одной области памяти. */
union RCERE_REG RCERE; // MCBSP Receive channel enable partition E
+ /* Объединяет несколько представлений RCERF_REG RCERF; в одной области памяти. */
union RCERF_REG RCERF; // MCBSP Receive channel enable partition F
+ /* Объединяет несколько представлений XCERE_REG XCERE; в одной области памяти. */
union XCERE_REG XCERE; // MCBSP Transmit channel enable partition E
+ /* Объединяет несколько представлений XCERF_REG XCERF; в одной области памяти. */
union XCERF_REG XCERF; // MCBSP Transmit channel enable partition F
+ /* Объединяет несколько представлений RCERG_REG RCERG; в одной области памяти. */
union RCERG_REG RCERG; // MCBSP Receive channel enable partition G
+ /* Объединяет несколько представлений RCERH_REG RCERH; в одной области памяти. */
union RCERH_REG RCERH; // MCBSP Receive channel enable partition H
+ /* Объединяет несколько представлений XCERG_REG XCERG; в одной области памяти. */
union XCERG_REG XCERG; // MCBSP Transmit channel enable partition G
+ /* Объединяет несколько представлений XCERH_REG XCERH; в одной области памяти. */
union XCERH_REG XCERH; // MCBSP Transmit channel enable partition H
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1[4]; // reserved
+ /* Объединяет несколько представлений MFFINT_REG MFFINT; в одной области памяти. */
union MFFINT_REG MFFINT; // MCBSP Interrupt enable register for RINT/XINT
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2; // reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// McBSP External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct MCBSP_REGS McbspaRegs;; порядок элементов сохраняется. */
extern volatile struct MCBSP_REGS McbspaRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct MCBSP_REGS McbspbRegs;; порядок элементов сохраняется. */
extern volatile struct MCBSP_REGS McbspbRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_MCBSP_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_PieCtrl.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_PieCtrl.h
index 1ab6e9d..edd922f 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_PieCtrl.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_PieCtrl.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание PieCtrl для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:24 $
//###########################################################################
@@ -12,140 +13,246 @@
//###########################################################################
+/* Начинает условие: DSP2833x_PIE_CTRL_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_PIE_CTRL_H
+/* Определяет защитный символ или переключатель DSP2833x_PIE_CTRL_H для последующей компиляции. */
#define DSP2833x_PIE_CTRL_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//---------------------------------------------------------------------------
// PIE Control Register Bit Definitions:
//
// PIECTRL: Register bit definitions:
+/* Описывает структуру PIECTRL_BITS; порядок полей определяет расположение данных. */
struct PIECTRL_BITS { // bits description
+ /* Битовое поле ENPIE, ширина 1 бит; данные ENPIE. */
Uint16 ENPIE:1; // 0 Enable PIE block
+ /* Битовое поле PIEVECT, ширина 15 бит; данные PIEVECT. */
Uint16 PIEVECT:15; // 15:1 Fetched vector address
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PIECTRL_REG в одной области памяти. */
union PIECTRL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PIECTRL_BITS bit;; порядок полей определяет расположение данных. */
struct PIECTRL_BITS bit;
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
// PIEIER: Register bit definitions:
+/* Описывает структуру PIEIER_BITS; порядок полей определяет расположение данных. */
struct PIEIER_BITS { // bits description
+ /* Битовое поле INTx1, ширина 1 бит; данные INTx1. */
Uint16 INTx1:1; // 0 INTx.1
+ /* Битовое поле INTx2, ширина 1 бит; данные INTx2. */
Uint16 INTx2:1; // 1 INTx.2
+ /* Битовое поле INTx3, ширина 1 бит; данные INTx3. */
Uint16 INTx3:1; // 2 INTx.3
+ /* Битовое поле INTx4, ширина 1 бит; данные INTx4. */
Uint16 INTx4:1; // 3 INTx.4
+ /* Битовое поле INTx5, ширина 1 бит; данные INTx5. */
Uint16 INTx5:1; // 4 INTx.5
+ /* Битовое поле INTx6, ширина 1 бит; данные INTx6. */
Uint16 INTx6:1; // 5 INTx.6
+ /* Битовое поле INTx7, ширина 1 бит; данные INTx7. */
Uint16 INTx7:1; // 6 INTx.7
+ /* Битовое поле INTx8, ширина 1 бит; данные INTx8. */
Uint16 INTx8:1; // 7 INTx.8
+ /* Битовое поле rsvd, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PIEIER_REG в одной области памяти. */
union PIEIER_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PIEIER_BITS bit;; порядок полей определяет расположение данных. */
struct PIEIER_BITS bit;
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
// PIEIFR: Register bit definitions:
+/* Описывает структуру PIEIFR_BITS; порядок полей определяет расположение данных. */
struct PIEIFR_BITS { // bits description
+ /* Битовое поле INTx1, ширина 1 бит; данные INTx1. */
Uint16 INTx1:1; // 0 INTx.1
+ /* Битовое поле INTx2, ширина 1 бит; данные INTx2. */
Uint16 INTx2:1; // 1 INTx.2
+ /* Битовое поле INTx3, ширина 1 бит; данные INTx3. */
Uint16 INTx3:1; // 2 INTx.3
+ /* Битовое поле INTx4, ширина 1 бит; данные INTx4. */
Uint16 INTx4:1; // 3 INTx.4
+ /* Битовое поле INTx5, ширина 1 бит; данные INTx5. */
Uint16 INTx5:1; // 4 INTx.5
+ /* Битовое поле INTx6, ширина 1 бит; данные INTx6. */
Uint16 INTx6:1; // 5 INTx.6
+ /* Битовое поле INTx7, ширина 1 бит; данные INTx7. */
Uint16 INTx7:1; // 6 INTx.7
+ /* Битовое поле INTx8, ширина 1 бит; данные INTx8. */
Uint16 INTx8:1; // 7 INTx.8
+ /* Битовое поле rsvd, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PIEIFR_REG в одной области памяти. */
union PIEIFR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PIEIFR_BITS bit;; порядок полей определяет расположение данных. */
struct PIEIFR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// PIEACK: Register bit definitions:
+/* Описывает структуру PIEACK_BITS; порядок полей определяет расположение данных. */
struct PIEACK_BITS { // bits description
+ /* Битовое поле ACK1, ширина 1 бит; данные ACK1. */
Uint16 ACK1:1; // 0 Acknowledge PIE interrupt group 1
+ /* Битовое поле ACK2, ширина 1 бит; данные ACK2. */
Uint16 ACK2:1; // 1 Acknowledge PIE interrupt group 2
+ /* Битовое поле ACK3, ширина 1 бит; данные ACK3. */
Uint16 ACK3:1; // 2 Acknowledge PIE interrupt group 3
+ /* Битовое поле ACK4, ширина 1 бит; данные ACK4. */
Uint16 ACK4:1; // 3 Acknowledge PIE interrupt group 4
+ /* Битовое поле ACK5, ширина 1 бит; данные ACK5. */
Uint16 ACK5:1; // 4 Acknowledge PIE interrupt group 5
+ /* Битовое поле ACK6, ширина 1 бит; данные ACK6. */
Uint16 ACK6:1; // 5 Acknowledge PIE interrupt group 6
+ /* Битовое поле ACK7, ширина 1 бит; данные ACK7. */
Uint16 ACK7:1; // 6 Acknowledge PIE interrupt group 7
+ /* Битовое поле ACK8, ширина 1 бит; данные ACK8. */
Uint16 ACK8:1; // 7 Acknowledge PIE interrupt group 8
+ /* Битовое поле ACK9, ширина 1 бит; данные ACK9. */
Uint16 ACK9:1; // 8 Acknowledge PIE interrupt group 9
+ /* Битовое поле ACK10, ширина 1 бит; данные ACK10. */
Uint16 ACK10:1; // 9 Acknowledge PIE interrupt group 10
+ /* Битовое поле ACK11, ширина 1 бит; данные ACK11. */
Uint16 ACK11:1; // 10 Acknowledge PIE interrupt group 11
+ /* Битовое поле ACK12, ширина 1 бит; данные ACK12. */
Uint16 ACK12:1; // 11 Acknowledge PIE interrupt group 12
+ /* Битовое поле rsvd, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:4; // 15:12 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PIEACK_REG в одной области памяти. */
union PIEACK_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PIEACK_BITS bit;; порядок полей определяет расположение данных. */
struct PIEACK_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// PIE Control Register File:
//
+/* Описывает структуру PIE_CTRL_REGS; порядок полей определяет расположение данных. */
struct PIE_CTRL_REGS {
+ /* Объединяет несколько представлений PIECTRL_REG PIECTRL; в одной области памяти. */
union PIECTRL_REG PIECTRL; // PIE control register
+ /* Объединяет несколько представлений PIEACK_REG PIEACK; в одной области памяти. */
union PIEACK_REG PIEACK; // PIE acknowledge
- union PIEIER_REG PIEIER1; // PIE int1 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER1; в одной области памяти. */
+ union PIEIER_REG PIEIER1; // PIE int1 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR1; в одной области памяти. */
union PIEIFR_REG PIEIFR1; // PIE int1 IFR register
- union PIEIER_REG PIEIER2; // PIE INT2 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER2; в одной области памяти. */
+ union PIEIER_REG PIEIER2; // PIE INT2 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR2; в одной области памяти. */
union PIEIFR_REG PIEIFR2; // PIE INT2 IFR register
- union PIEIER_REG PIEIER3; // PIE INT3 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER3; в одной области памяти. */
+ union PIEIER_REG PIEIER3; // PIE INT3 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR3; в одной области памяти. */
union PIEIFR_REG PIEIFR3; // PIE INT3 IFR register
- union PIEIER_REG PIEIER4; // PIE INT4 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER4; в одной области памяти. */
+ union PIEIER_REG PIEIER4; // PIE INT4 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR4; в одной области памяти. */
union PIEIFR_REG PIEIFR4; // PIE INT4 IFR register
- union PIEIER_REG PIEIER5; // PIE INT5 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER5; в одной области памяти. */
+ union PIEIER_REG PIEIER5; // PIE INT5 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR5; в одной области памяти. */
union PIEIFR_REG PIEIFR5; // PIE INT5 IFR register
- union PIEIER_REG PIEIER6; // PIE INT6 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER6; в одной области памяти. */
+ union PIEIER_REG PIEIER6; // PIE INT6 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR6; в одной области памяти. */
union PIEIFR_REG PIEIFR6; // PIE INT6 IFR register
- union PIEIER_REG PIEIER7; // PIE INT7 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER7; в одной области памяти. */
+ union PIEIER_REG PIEIER7; // PIE INT7 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR7; в одной области памяти. */
union PIEIFR_REG PIEIFR7; // PIE INT7 IFR register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER8; в одной области памяти. */
union PIEIER_REG PIEIER8; // PIE INT8 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR8; в одной области памяти. */
union PIEIFR_REG PIEIFR8; // PIE INT8 IFR register
- union PIEIER_REG PIEIER9; // PIE INT9 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER9; в одной области памяти. */
+ union PIEIER_REG PIEIER9; // PIE INT9 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR9; в одной области памяти. */
union PIEIFR_REG PIEIFR9; // PIE INT9 IFR register
- union PIEIER_REG PIEIER10; // PIE int10 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER10; в одной области памяти. */
+ union PIEIER_REG PIEIER10; // PIE int10 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR10; в одной области памяти. */
union PIEIFR_REG PIEIFR10; // PIE int10 IFR register
- union PIEIER_REG PIEIER11; // PIE int11 IER register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER11; в одной области памяти. */
+ union PIEIER_REG PIEIER11; // PIE int11 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR11; в одной области памяти. */
union PIEIFR_REG PIEIFR11; // PIE int11 IFR register
+ /* Объединяет несколько представлений PIEIER_REG PIEIER12; в одной области памяти. */
union PIEIER_REG PIEIER12; // PIE int12 IER register
+ /* Объединяет несколько представлений PIEIFR_REG PIEIFR12; в одной области памяти. */
union PIEIFR_REG PIEIFR12; // PIE int12 IFR register
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Задаёт PIEACK_GROUP1 = 0x0001; данные PIEACK_GROUP1. */
#define PIEACK_GROUP1 0x0001
+/* Задаёт PIEACK_GROUP2 = 0x0002; данные PIEACK_GROUP2. */
#define PIEACK_GROUP2 0x0002
+/* Задаёт PIEACK_GROUP3 = 0x0004; данные PIEACK_GROUP3. */
#define PIEACK_GROUP3 0x0004
+/* Задаёт PIEACK_GROUP4 = 0x0008; данные PIEACK_GROUP4. */
#define PIEACK_GROUP4 0x0008
+/* Задаёт PIEACK_GROUP5 = 0x0010; данные PIEACK_GROUP5. */
#define PIEACK_GROUP5 0x0010
+/* Задаёт PIEACK_GROUP6 = 0x0020; данные PIEACK_GROUP6. */
#define PIEACK_GROUP6 0x0020
+/* Задаёт PIEACK_GROUP7 = 0x0040; данные PIEACK_GROUP7. */
#define PIEACK_GROUP7 0x0040
+/* Задаёт PIEACK_GROUP8 = 0x0080; данные PIEACK_GROUP8. */
#define PIEACK_GROUP8 0x0080
+/* Задаёт PIEACK_GROUP9 = 0x0100; данные PIEACK_GROUP9. */
#define PIEACK_GROUP9 0x0100
+/* Задаёт PIEACK_GROUP10 = 0x0200; данные PIEACK_GROUP10. */
#define PIEACK_GROUP10 0x0200
+/* Задаёт PIEACK_GROUP11 = 0x0400; данные PIEACK_GROUP11. */
#define PIEACK_GROUP11 0x0400
+/* Задаёт PIEACK_GROUP12 = 0x0800; данные PIEACK_GROUP12. */
#define PIEACK_GROUP12 0x0800
//---------------------------------------------------------------------------
// PIE Control Registers External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct PIE_CTRL_REGS PieCtrlRegs;; порядок элементов сохраняется. */
extern volatile struct PIE_CTRL_REGS PieCtrlRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_PIE_CTRL_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_PieVect.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_PieVect.h
index acddab7..9513341 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_PieVect.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_PieVect.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание PieVect для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: March 16, 2007 09:00:21 $
//###########################################################################
@@ -11,12 +12,17 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_PIE_VECT_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_PIE_VECT_H
+/* Определяет защитный символ или переключатель DSP2833x_PIE_VECT_H для последующей компиляции. */
#define DSP2833x_PIE_VECT_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -25,181 +31,316 @@ extern "C" {
//
// Create a user type called PINT (pointer to interrupt):
+/* Объявляет интерфейс функции void; реализация вызывается через этот прототип. */
typedef interrupt void(*PINT)(void);
// Define Vector Table:
+/* Описывает структуру PIE_VECT_TABLE; порядок полей определяет расположение данных. */
struct PIE_VECT_TABLE {
// Reset is never fetched from this table.
// It will always be fetched from 0x3FFFC0 in
// boot ROM
+ /* Продолжает список аргументов, полей или выражение PINT PIE1_RESERVED;; порядок элементов сохраняется. */
PINT PIE1_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE2_RESERVED;; порядок элементов сохраняется. */
PINT PIE2_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE3_RESERVED;; порядок элементов сохраняется. */
PINT PIE3_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE4_RESERVED;; порядок элементов сохраняется. */
PINT PIE4_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE5_RESERVED;; порядок элементов сохраняется. */
PINT PIE5_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE6_RESERVED;; порядок элементов сохраняется. */
PINT PIE6_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE7_RESERVED;; порядок элементов сохраняется. */
PINT PIE7_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE8_RESERVED;; порядок элементов сохраняется. */
PINT PIE8_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE9_RESERVED;; порядок элементов сохраняется. */
PINT PIE9_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE10_RESERVED;; порядок элементов сохраняется. */
PINT PIE10_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE11_RESERVED;; порядок элементов сохраняется. */
PINT PIE11_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE12_RESERVED;; порядок элементов сохраняется. */
PINT PIE12_RESERVED;
+ /* Продолжает список аргументов, полей или выражение PINT PIE13_RESERVED;; порядок элементов сохраняется. */
PINT PIE13_RESERVED;
// Non-Peripheral Interrupts:
+ /* Продолжает список аргументов, полей или выражение PINT XINT13;; порядок элементов сохраняется. */
PINT XINT13; // XINT13 / CPU-Timer1
+ /* Продолжает список аргументов, полей или выражение PINT TINT2;; порядок элементов сохраняется. */
PINT TINT2; // CPU-Timer2
+ /* Продолжает список аргументов, полей или выражение PINT DATALOG;; порядок элементов сохраняется. */
PINT DATALOG; // Datalogging interrupt
+ /* Продолжает список аргументов, полей или выражение PINT RTOSINT;; порядок элементов сохраняется. */
PINT RTOSINT; // RTOS interrupt
+ /* Продолжает список аргументов, полей или выражение PINT EMUINT;; порядок элементов сохраняется. */
PINT EMUINT; // Emulation interrupt
+ /* Продолжает список аргументов, полей или выражение PINT XNMI;; порядок элементов сохраняется. */
PINT XNMI; // Non-maskable interrupt
+ /* Продолжает список аргументов, полей или выражение PINT ILLEGAL;; порядок элементов сохраняется. */
PINT ILLEGAL; // Illegal operation TRAP
+ /* Продолжает список аргументов, полей или выражение PINT USER1;; порядок элементов сохраняется. */
PINT USER1; // User Defined trap 1
+ /* Продолжает список аргументов, полей или выражение PINT USER2;; порядок элементов сохраняется. */
PINT USER2; // User Defined trap 2
+ /* Продолжает список аргументов, полей или выражение PINT USER3;; порядок элементов сохраняется. */
PINT USER3; // User Defined trap 3
+ /* Продолжает список аргументов, полей или выражение PINT USER4;; порядок элементов сохраняется. */
PINT USER4; // User Defined trap 4
+ /* Продолжает список аргументов, полей или выражение PINT USER5;; порядок элементов сохраняется. */
PINT USER5; // User Defined trap 5
+ /* Продолжает список аргументов, полей или выражение PINT USER6;; порядок элементов сохраняется. */
PINT USER6; // User Defined trap 6
+ /* Продолжает список аргументов, полей или выражение PINT USER7;; порядок элементов сохраняется. */
PINT USER7; // User Defined trap 7
+ /* Продолжает список аргументов, полей или выражение PINT USER8;; порядок элементов сохраняется. */
PINT USER8; // User Defined trap 8
+ /* Продолжает список аргументов, полей или выражение PINT USER9;; порядок элементов сохраняется. */
PINT USER9; // User Defined trap 9
+ /* Продолжает список аргументов, полей или выражение PINT USER10;; порядок элементов сохраняется. */
PINT USER10; // User Defined trap 10
+ /* Продолжает список аргументов, полей или выражение PINT USER11;; порядок элементов сохраняется. */
PINT USER11; // User Defined trap 11
+ /* Продолжает список аргументов, полей или выражение PINT USER12;; порядок элементов сохраняется. */
PINT USER12; // User Defined trap 12
// Group 1 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT SEQ1INT;; порядок элементов сохраняется. */
PINT SEQ1INT;
+ /* Продолжает список аргументов, полей или выражение PINT SEQ2INT;; порядок элементов сохраняется. */
PINT SEQ2INT;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd1_3;; порядок элементов сохраняется. */
PINT rsvd1_3;
+ /* Продолжает список аргументов, полей или выражение PINT XINT1;; порядок элементов сохраняется. */
PINT XINT1;
+ /* Продолжает список аргументов, полей или выражение PINT XINT2;; порядок элементов сохраняется. */
PINT XINT2;
+ /* Продолжает список аргументов, полей или выражение PINT ADCINT;; порядок элементов сохраняется. */
PINT ADCINT; // ADC
+ /* Продолжает список аргументов, полей или выражение PINT TINT0;; порядок элементов сохраняется. */
PINT TINT0; // Timer 0
+ /* Продолжает список аргументов, полей или выражение PINT WAKEINT;; порядок элементов сохраняется. */
PINT WAKEINT; // WD
// Group 2 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT EPWM1_TZINT;; порядок элементов сохраняется. */
PINT EPWM1_TZINT; // EPWM-1
+ /* Продолжает список аргументов, полей или выражение PINT EPWM2_TZINT;; порядок элементов сохраняется. */
PINT EPWM2_TZINT; // EPWM-2
+ /* Продолжает список аргументов, полей или выражение PINT EPWM3_TZINT;; порядок элементов сохраняется. */
PINT EPWM3_TZINT; // EPWM-3
+ /* Продолжает список аргументов, полей или выражение PINT EPWM4_TZINT;; порядок элементов сохраняется. */
PINT EPWM4_TZINT; // EPWM-4
+ /* Продолжает список аргументов, полей или выражение PINT EPWM5_TZINT;; порядок элементов сохраняется. */
PINT EPWM5_TZINT; // EPWM-5
+ /* Продолжает список аргументов, полей или выражение PINT EPWM6_TZINT;; порядок элементов сохраняется. */
PINT EPWM6_TZINT; // EPWM-6
+ /* Продолжает список аргументов, полей или выражение PINT rsvd2_7;; порядок элементов сохраняется. */
PINT rsvd2_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd2_8;; порядок элементов сохраняется. */
PINT rsvd2_8;
// Group 3 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT EPWM1_INT;; порядок элементов сохраняется. */
PINT EPWM1_INT; // EPWM-1
+ /* Продолжает список аргументов, полей или выражение PINT EPWM2_INT;; порядок элементов сохраняется. */
PINT EPWM2_INT; // EPWM-2
+ /* Продолжает список аргументов, полей или выражение PINT EPWM3_INT;; порядок элементов сохраняется. */
PINT EPWM3_INT; // EPWM-3
+ /* Продолжает список аргументов, полей или выражение PINT EPWM4_INT;; порядок элементов сохраняется. */
PINT EPWM4_INT; // EPWM-4
+ /* Продолжает список аргументов, полей или выражение PINT EPWM5_INT;; порядок элементов сохраняется. */
PINT EPWM5_INT; // EPWM-5
+ /* Продолжает список аргументов, полей или выражение PINT EPWM6_INT;; порядок элементов сохраняется. */
PINT EPWM6_INT; // EPWM-6
+ /* Продолжает список аргументов, полей или выражение PINT rsvd3_7;; порядок элементов сохраняется. */
PINT rsvd3_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd3_8;; порядок элементов сохраняется. */
PINT rsvd3_8;
// Group 4 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT ECAP1_INT;; порядок элементов сохраняется. */
PINT ECAP1_INT; // ECAP-1
+ /* Продолжает список аргументов, полей или выражение PINT ECAP2_INT;; порядок элементов сохраняется. */
PINT ECAP2_INT; // ECAP-2
+ /* Продолжает список аргументов, полей или выражение PINT ECAP3_INT;; порядок элементов сохраняется. */
PINT ECAP3_INT; // ECAP-3
+ /* Продолжает список аргументов, полей или выражение PINT ECAP4_INT;; порядок элементов сохраняется. */
PINT ECAP4_INT; // ECAP-4
+ /* Продолжает список аргументов, полей или выражение PINT ECAP5_INT;; порядок элементов сохраняется. */
PINT ECAP5_INT; // ECAP-5
+ /* Продолжает список аргументов, полей или выражение PINT ECAP6_INT;; порядок элементов сохраняется. */
PINT ECAP6_INT; // ECAP-6
+ /* Продолжает список аргументов, полей или выражение PINT rsvd4_7;; порядок элементов сохраняется. */
PINT rsvd4_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd4_8;; порядок элементов сохраняется. */
PINT rsvd4_8;
// Group 5 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT EQEP1_INT;; порядок элементов сохраняется. */
PINT EQEP1_INT; // EQEP-1
+ /* Продолжает список аргументов, полей или выражение PINT EQEP2_INT;; порядок элементов сохраняется. */
PINT EQEP2_INT; // EQEP-2
+ /* Продолжает список аргументов, полей или выражение PINT rsvd5_3;; порядок элементов сохраняется. */
PINT rsvd5_3;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd5_4;; порядок элементов сохраняется. */
PINT rsvd5_4;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd5_5;; порядок элементов сохраняется. */
PINT rsvd5_5;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd5_6;; порядок элементов сохраняется. */
PINT rsvd5_6;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd5_7;; порядок элементов сохраняется. */
PINT rsvd5_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd5_8;; порядок элементов сохраняется. */
PINT rsvd5_8;
// Group 6 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT SPIRXINTA;; порядок элементов сохраняется. */
PINT SPIRXINTA; // SPI-A
+ /* Продолжает список аргументов, полей или выражение PINT SPITXINTA;; порядок элементов сохраняется. */
PINT SPITXINTA; // SPI-A
+ /* Продолжает список аргументов, полей или выражение PINT MRINTB;; порядок элементов сохраняется. */
PINT MRINTB; // McBSP-B
+ /* Продолжает список аргументов, полей или выражение PINT MXINTB;; порядок элементов сохраняется. */
PINT MXINTB; // McBSP-B
+ /* Продолжает список аргументов, полей или выражение PINT MRINTA;; порядок элементов сохраняется. */
PINT MRINTA; // McBSP-A
+ /* Продолжает список аргументов, полей или выражение PINT MXINTA;; порядок элементов сохраняется. */
PINT MXINTA; // McBSP-A
+ /* Продолжает список аргументов, полей или выражение PINT rsvd6_7;; порядок элементов сохраняется. */
PINT rsvd6_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd6_8;; порядок элементов сохраняется. */
PINT rsvd6_8;
// Group 7 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT DINTCH1;; порядок элементов сохраняется. */
PINT DINTCH1; // DMA
+ /* Продолжает список аргументов, полей или выражение PINT DINTCH2;; порядок элементов сохраняется. */
PINT DINTCH2; // DMA
+ /* Продолжает список аргументов, полей или выражение PINT DINTCH3;; порядок элементов сохраняется. */
PINT DINTCH3; // DMA
+ /* Продолжает список аргументов, полей или выражение PINT DINTCH4;; порядок элементов сохраняется. */
PINT DINTCH4; // DMA
+ /* Продолжает список аргументов, полей или выражение PINT DINTCH5;; порядок элементов сохраняется. */
PINT DINTCH5; // DMA
+ /* Продолжает список аргументов, полей или выражение PINT DINTCH6;; порядок элементов сохраняется. */
PINT DINTCH6; // DMA
+ /* Продолжает список аргументов, полей или выражение PINT rsvd7_7;; порядок элементов сохраняется. */
PINT rsvd7_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd7_8;; порядок элементов сохраняется. */
PINT rsvd7_8;
// Group 8 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT I2CINT1A;; порядок элементов сохраняется. */
PINT I2CINT1A; // I2C-A
+ /* Продолжает список аргументов, полей или выражение PINT I2CINT2A;; порядок элементов сохраняется. */
PINT I2CINT2A; // I2C-A
+ /* Продолжает список аргументов, полей или выражение PINT rsvd8_3;; порядок элементов сохраняется. */
PINT rsvd8_3;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd8_4;; порядок элементов сохраняется. */
PINT rsvd8_4;
+ /* Продолжает список аргументов, полей или выражение PINT SCIRXINTC;; порядок элементов сохраняется. */
PINT SCIRXINTC; // SCI-C
+ /* Продолжает список аргументов, полей или выражение PINT SCITXINTC;; порядок элементов сохраняется. */
PINT SCITXINTC; // SCI-C
+ /* Продолжает список аргументов, полей или выражение PINT rsvd8_7;; порядок элементов сохраняется. */
PINT rsvd8_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd8_8;; порядок элементов сохраняется. */
PINT rsvd8_8;
// Group 9 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT SCIRXINTA;; порядок элементов сохраняется. */
PINT SCIRXINTA; // SCI-A
+ /* Продолжает список аргументов, полей или выражение PINT SCITXINTA;; порядок элементов сохраняется. */
PINT SCITXINTA; // SCI-A
+ /* Продолжает список аргументов, полей или выражение PINT SCIRXINTB;; порядок элементов сохраняется. */
PINT SCIRXINTB; // SCI-B
+ /* Продолжает список аргументов, полей или выражение PINT SCITXINTB;; порядок элементов сохраняется. */
PINT SCITXINTB; // SCI-B
+ /* Продолжает список аргументов, полей или выражение PINT ECAN0INTA;; порядок элементов сохраняется. */
PINT ECAN0INTA; // eCAN-A
+ /* Продолжает список аргументов, полей или выражение PINT ECAN1INTA;; порядок элементов сохраняется. */
PINT ECAN1INTA; // eCAN-A
+ /* Продолжает список аргументов, полей или выражение PINT ECAN0INTB;; порядок элементов сохраняется. */
PINT ECAN0INTB; // eCAN-B
+ /* Продолжает список аргументов, полей или выражение PINT ECAN1INTB;; порядок элементов сохраняется. */
PINT ECAN1INTB; // eCAN-B
// Group 10 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT rsvd10_1;; порядок элементов сохраняется. */
PINT rsvd10_1;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd10_2;; порядок элементов сохраняется. */
PINT rsvd10_2;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd10_3;; порядок элементов сохраняется. */
PINT rsvd10_3;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd10_4;; порядок элементов сохраняется. */
PINT rsvd10_4;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd10_5;; порядок элементов сохраняется. */
PINT rsvd10_5;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd10_6;; порядок элементов сохраняется. */
PINT rsvd10_6;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd10_7;; порядок элементов сохраняется. */
PINT rsvd10_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd10_8;; порядок элементов сохраняется. */
PINT rsvd10_8;
// Group 11 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT rsvd11_1;; порядок элементов сохраняется. */
PINT rsvd11_1;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd11_2;; порядок элементов сохраняется. */
PINT rsvd11_2;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd11_3;; порядок элементов сохраняется. */
PINT rsvd11_3;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd11_4;; порядок элементов сохраняется. */
PINT rsvd11_4;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd11_5;; порядок элементов сохраняется. */
PINT rsvd11_5;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd11_6;; порядок элементов сохраняется. */
PINT rsvd11_6;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd11_7;; порядок элементов сохраняется. */
PINT rsvd11_7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd11_8;; порядок элементов сохраняется. */
PINT rsvd11_8;
// Group 12 PIE Peripheral Vectors:
+ /* Продолжает список аргументов, полей или выражение PINT XINT3;; порядок элементов сохраняется. */
PINT XINT3; // External interrupt
+ /* Продолжает список аргументов, полей или выражение PINT XINT4;; порядок элементов сохраняется. */
PINT XINT4;
+ /* Продолжает список аргументов, полей или выражение PINT XINT5;; порядок элементов сохраняется. */
PINT XINT5;
+ /* Продолжает список аргументов, полей или выражение PINT XINT6;; порядок элементов сохраняется. */
PINT XINT6;
+ /* Продолжает список аргументов, полей или выражение PINT XINT7;; порядок элементов сохраняется. */
PINT XINT7;
+ /* Продолжает список аргументов, полей или выражение PINT rsvd12_6;; порядок элементов сохраняется. */
PINT rsvd12_6;
+ /* Продолжает список аргументов, полей или выражение PINT LVF;; порядок элементов сохраняется. */
PINT LVF; // Latched overflow
+ /* Продолжает список аргументов, полей или выражение PINT LUF;; порядок элементов сохраняется. */
PINT LUF; // Latched underflow
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// PIE Interrupt Vector Table External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern struct PIE_VECT_TABLE PieVectTable;; порядок элементов сохраняется. */
extern struct PIE_VECT_TABLE PieVectTable;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_PIE_VECT_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Sci.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Sci.h
index 7c17822..8b5e141 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Sci.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Sci.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Sci для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: March 1, 2007 15:57:02 $
//###########################################################################
@@ -11,12 +12,17 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_SCI_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_SCI_H
+/* Определяет защитный символ или переключатель DSP2833x_SCI_H для последующей компиляции. */
#define DSP2833x_SCI_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//---------------------------------------------------------------------------
@@ -26,207 +32,343 @@ extern "C" {
// SCICCR communication control register bit definitions:
//
+/* Описывает структуру SCICCR_BITS; порядок полей определяет расположение данных. */
struct SCICCR_BITS { // bit description
- Uint16 SCICHAR:3; // 2:0 Character length control
+ /* Битовое поле SCICHAR, ширина 3 бит; данные SCICHAR. */
+ Uint16 SCICHAR:3; // 2:0 Character length control
+ /* Битовое поле ADDRIDLE_MODE, ширина 1 бит; ADDRIDLE режим. */
Uint16 ADDRIDLE_MODE:1; // 3 ADDR/IDLE Mode control
+ /* Битовое поле LOOPBKENA, ширина 1 бит; данные LOOPBKENA. */
Uint16 LOOPBKENA:1; // 4 Loop Back enable
- Uint16 PARITYENA:1; // 5 Parity enable
+ /* Битовое поле PARITYENA, ширина 1 бит; данные PARITYENA. */
+ Uint16 PARITYENA:1; // 5 Parity enable
+ /* Битовое поле PARITY, ширина 1 бит; чётность. */
Uint16 PARITY:1; // 6 Even or Odd Parity
+ /* Битовое поле STOPBITS, ширина 1 бит; данные STOPBITS. */
Uint16 STOPBITS:1; // 7 Number of Stop Bits
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Объединяет несколько представлений SCICCR_REG в одной области памяти. */
union SCICCR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCICCR_BITS bit;; порядок полей определяет расположение данных. */
struct SCICCR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//-------------------------------------------
// SCICTL1 control register 1 bit definitions:
//
-
+
+/* Описывает структуру SCICTL1_BITS; порядок полей определяет расположение данных. */
struct SCICTL1_BITS { // bit description
+ /* Битовое поле RXENA, ширина 1 бит; данные RXENA. */
Uint16 RXENA:1; // 0 SCI receiver enable
+ /* Битовое поле TXENA, ширина 1 бит; данные TXENA. */
Uint16 TXENA:1; // 1 SCI transmitter enable
- Uint16 SLEEP:1; // 2 SCI sleep
+ /* Битовое поле SLEEP, ширина 1 бит; данные SLEEP. */
+ Uint16 SLEEP:1; // 2 SCI sleep
+ /* Битовое поле TXWAKE, ширина 1 бит; данные TXWAKE. */
Uint16 TXWAKE:1; // 3 Transmitter wakeup method
+ /* Битовое поле rsvd, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:1; // 4 reserved
- Uint16 SWRESET:1; // 5 Software reset
+ /* Битовое поле SWRESET, ширина 1 бит; данные SWRESET. */
+ Uint16 SWRESET:1; // 5 Software reset
+ /* Битовое поле RXERRINTENA, ширина 1 бит; данные RXERRINTENA. */
Uint16 RXERRINTENA:1; // 6 Recieve interrupt enable
+ /* Битовое поле rsvd1, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:9; // 15:7 reserved
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Объединяет несколько представлений SCICTL1_REG в одной области памяти. */
union SCICTL1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCICTL1_BITS bit;; порядок полей определяет расположение данных. */
struct SCICTL1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------
// SCICTL2 control register 2 bit definitions:
-//
+//
+/* Описывает структуру SCICTL2_BITS; порядок полей определяет расположение данных. */
struct SCICTL2_BITS { // bit description
- Uint16 TXINTENA:1; // 0 Transmit interrupt enable
+ /* Битовое поле TXINTENA, ширина 1 бит; данные TXINTENA. */
+ Uint16 TXINTENA:1; // 0 Transmit interrupt enable
+ /* Битовое поле RXBKINTENA, ширина 1 бит; данные RXBKINTENA. */
Uint16 RXBKINTENA:1; // 1 Receiver-buffer break enable
+ /* Битовое поле rsvd, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:4; // 5:2 reserved
+ /* Битовое поле TXEMPTY, ширина 1 бит; данные TXEMPTY. */
Uint16 TXEMPTY:1; // 6 Transmitter empty flag
- Uint16 TXRDY:1; // 7 Transmitter ready flag
+ /* Битовое поле TXRDY, ширина 1 бит; данные TXRDY. */
+ Uint16 TXRDY:1; // 7 Transmitter ready flag
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Объединяет несколько представлений SCICTL2_REG в одной области памяти. */
union SCICTL2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCICTL2_BITS bit;; порядок полей определяет расположение данных. */
struct SCICTL2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------
// SCIRXST Receiver status register bit definitions:
//
+/* Описывает структуру SCIRXST_BITS; порядок полей определяет расположение данных. */
struct SCIRXST_BITS { // bit description
+ /* Битовое поле rsvd, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:1; // 0 reserved
+ /* Битовое поле RXWAKE, ширина 1 бит; данные RXWAKE. */
Uint16 RXWAKE:1; // 1 Receiver wakeup detect flag
+ /* Битовое поле PE, ширина 1 бит; данные PE. */
Uint16 PE:1; // 2 Parity error flag
+ /* Битовое поле OE, ширина 1 бит; данные OE. */
Uint16 OE:1; // 3 Overrun error flag
+ /* Битовое поле FE, ширина 1 бит; данные FE. */
Uint16 FE:1; // 4 Framing error flag
- Uint16 BRKDT:1; // 5 Break-detect flag
+ /* Битовое поле BRKDT, ширина 1 бит; данные BRKDT. */
+ Uint16 BRKDT:1; // 5 Break-detect flag
+ /* Битовое поле RXRDY, ширина 1 бит; данные RXRDY. */
Uint16 RXRDY:1; // 6 Receiver ready flag
+ /* Битовое поле RXERROR, ширина 1 бит; данные RXERROR. */
Uint16 RXERROR:1; // 7 Receiver error flag
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Объединяет несколько представлений SCIRXST_REG в одной области памяти. */
union SCIRXST_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCIRXST_BITS bit;; порядок полей определяет расположение данных. */
struct SCIRXST_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//----------------------------------------------------
// SCIRXBUF Receiver Data Buffer with FIFO bit definitions:
-//
+//
+/* Описывает структуру SCIRXBUF_BITS; порядок полей определяет расположение данных. */
struct SCIRXBUF_BITS { // bits description
+ /* Битовое поле RXDT, ширина 8 бит; данные RXDT. */
Uint16 RXDT:8; // 7:0 Receive word
+ /* Битовое поле rsvd, ширина 6 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:6; // 13:8 reserved
+ /* Битовое поле SCIFFPE, ширина 1 бит; данные SCIFFPE. */
Uint16 SCIFFPE:1; // 14 SCI PE error in FIFO mode
+ /* Битовое поле SCIFFFE, ширина 1 бит; данные SCIFFFE. */
Uint16 SCIFFFE:1; // 15 SCI FE error in FIFO mode
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SCIRXBUF_REG в одной области памяти. */
union SCIRXBUF_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCIRXBUF_BITS bit;; порядок полей определяет расположение данных. */
struct SCIRXBUF_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//--------------------------------------------------
// SCIPRI Priority control register bit definitions:
-//
//
-
-struct SCIPRI_BITS { // bit description
- Uint16 rsvd:3; // 2:0 reserved
- Uint16 FREE:1; // 3 Free emulation suspend mode
- Uint16 SOFT:1; // 4 Soft emulation suspend mode
- Uint16 rsvd1:3; // 7:5 reserved
-};
+//
+/* Описывает структуру SCIPRI_BITS; порядок полей определяет расположение данных. */
+struct SCIPRI_BITS { // bit description
+ /* Битовое поле rsvd, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd:3; // 2:0 reserved
+ /* Битовое поле FREE, ширина 1 бит; данные FREE. */
+ Uint16 FREE:1; // 3 Free emulation suspend mode
+ /* Битовое поле SOFT, ширина 1 бит; данные SOFT. */
+ Uint16 SOFT:1; // 4 Soft emulation suspend mode
+ /* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd1:3; // 7:5 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+
+/* Объединяет несколько представлений SCIPRI_REG в одной области памяти. */
union SCIPRI_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCIPRI_BITS bit;; порядок полей определяет расположение данных. */
struct SCIPRI_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//-------------------------------------------------
// SCI FIFO Transmit register bit definitions:
-//
//
-
+//
+
+/* Описывает структуру SCIFFTX_BITS; порядок полей определяет расположение данных. */
struct SCIFFTX_BITS { // bit description
+ /* Битовое поле TXFFIL, ширина 5 бит; данные TXFFIL. */
Uint16 TXFFIL:5; // 4:0 Interrupt level
+ /* Битовое поле TXFFIENA, ширина 1 бит; данные TXFFIENA. */
Uint16 TXFFIENA:1; // 5 Interrupt enable
+ /* Битовое поле TXFFINTCLR, ширина 1 бит; данные TXFFINTCLR. */
Uint16 TXFFINTCLR:1; // 6 Clear INT flag
+ /* Битовое поле TXFFINT, ширина 1 бит; данные TXFFINT. */
Uint16 TXFFINT:1; // 7 INT flag
+ /* Битовое поле TXFFST, ширина 5 бит; данные TXFFST. */
Uint16 TXFFST:5; // 12:8 FIFO status
+ /* Битовое поле TXFIFOXRESET, ширина 1 бит; данные TXFIFOXRESET. */
Uint16 TXFIFOXRESET:1; // 13 FIFO reset
+ /* Битовое поле SCIFFENA, ширина 1 бит; данные SCIFFENA. */
Uint16 SCIFFENA:1; // 14 Enhancement enable
- Uint16 SCIRST:1; // 15 SCI reset rx/tx channels
+ /* Битовое поле SCIRST, ширина 1 бит; данные SCIRST. */
+ Uint16 SCIRST:1; // 15 SCI reset rx/tx channels
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Объединяет несколько представлений SCIFFTX_REG в одной области памяти. */
union SCIFFTX_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCIFFTX_BITS bit;; порядок полей определяет расположение данных. */
struct SCIFFTX_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//------------------------------------------------
// SCI FIFO recieve register bit definitions:
-//
//
-
+//
+
+/* Описывает структуру SCIFFRX_BITS; порядок полей определяет расположение данных. */
struct SCIFFRX_BITS { // bits description
+ /* Битовое поле RXFFIL, ширина 5 бит; данные RXFFIL. */
Uint16 RXFFIL:5; // 4:0 Interrupt level
+ /* Битовое поле RXFFIENA, ширина 1 бит; данные RXFFIENA. */
Uint16 RXFFIENA:1; // 5 Interrupt enable
+ /* Битовое поле RXFFINTCLR, ширина 1 бит; данные RXFFINTCLR. */
Uint16 RXFFINTCLR:1; // 6 Clear INT flag
+ /* Битовое поле RXFFINT, ширина 1 бит; данные RXFFINT. */
Uint16 RXFFINT:1; // 7 INT flag
+ /* Битовое поле RXFFST, ширина 5 бит; данные RXFFST. */
Uint16 RXFFST:5; // 12:8 FIFO status
+ /* Битовое поле RXFIFORESET, ширина 1 бит; данные RXFIFORESET. */
Uint16 RXFIFORESET:1; // 13 FIFO reset
+ /* Битовое поле RXFFOVRCLR, ширина 1 бит; данные RXFFOVRCLR. */
Uint16 RXFFOVRCLR:1; // 14 Clear overflow
+ /* Битовое поле RXFFOVF, ширина 1 бит; данные RXFFOVF. */
Uint16 RXFFOVF:1; // 15 FIFO overflow
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+/* Объединяет несколько представлений SCIFFRX_REG в одной области памяти. */
union SCIFFRX_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCIFFRX_BITS bit;; порядок полей определяет расположение данных. */
struct SCIFFRX_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// SCI FIFO control register bit definitions:
+/* Описывает структуру SCIFFCT_BITS; порядок полей определяет расположение данных. */
struct SCIFFCT_BITS { // bits description
+ /* Битовое поле FFTXDLY, ширина 8 бит; данные FFTXDLY. */
Uint16 FFTXDLY:8; // 7:0 FIFO transmit delay
+ /* Битовое поле rsvd, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:5; // 12:8 reserved
+ /* Битовое поле CDC, ширина 1 бит; данные CDC. */
Uint16 CDC:1; // 13 Auto baud mode enable
+ /* Битовое поле ABDCLR, ширина 1 бит; данные ABDCLR. */
Uint16 ABDCLR:1; // 14 Auto baud clear
+ /* Битовое поле ABD, ширина 1 бит; данные ABD. */
Uint16 ABD:1; // 15 Auto baud detect
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SCIFFCT_REG в одной области памяти. */
union SCIFFCT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SCIFFCT_BITS bit;; порядок полей определяет расположение данных. */
struct SCIFFCT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// SCI Register File:
//
+/* Описывает структуру SCI_REGS; порядок полей определяет расположение данных. */
struct SCI_REGS {
+ /* Объединяет несколько представлений SCICCR_REG SCICCR; в одной области памяти. */
union SCICCR_REG SCICCR; // Communications control register
+ /* Объединяет несколько представлений SCICTL1_REG SCICTL1; в одной области памяти. */
union SCICTL1_REG SCICTL1; // Control register 1
+ /* Объявляет SCIHBAUD — данные SCIHBAUD. */
Uint16 SCIHBAUD; // Baud rate (high) register
+ /* Объявляет SCILBAUD — данные SCILBAUD. */
Uint16 SCILBAUD; // Baud rate (low) register
+ /* Объединяет несколько представлений SCICTL2_REG SCICTL2; в одной области памяти. */
union SCICTL2_REG SCICTL2; // Control register 2
+ /* Объединяет несколько представлений SCIRXST_REG SCIRXST; в одной области памяти. */
union SCIRXST_REG SCIRXST; // Recieve status register
+ /* Объявляет SCIRXEMU — данные SCIRXEMU. */
Uint16 SCIRXEMU; // Recieve emulation buffer register
- union SCIRXBUF_REG SCIRXBUF; // Recieve data buffer
+ /* Объединяет несколько представлений SCIRXBUF_REG SCIRXBUF; в одной области памяти. */
+ union SCIRXBUF_REG SCIRXBUF; // Recieve data buffer
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // reserved
- Uint16 SCITXBUF; // Transmit data buffer
+ /* Объявляет SCITXBUF — данные SCITXBUF. */
+ Uint16 SCITXBUF; // Transmit data buffer
+ /* Объединяет несколько представлений SCIFFTX_REG SCIFFTX; в одной области памяти. */
union SCIFFTX_REG SCIFFTX; // FIFO transmit register
+ /* Объединяет несколько представлений SCIFFRX_REG SCIFFRX; в одной области памяти. */
union SCIFFRX_REG SCIFFRX; // FIFO recieve register
+ /* Объединяет несколько представлений SCIFFCT_REG SCIFFCT; в одной области памяти. */
union SCIFFCT_REG SCIFFCT; // FIFO control register
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2; // reserved
+ /* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3; // reserved
- union SCIPRI_REG SCIPRI; // FIFO Priority control
+ /* Объединяет несколько представлений SCIPRI_REG SCIPRI; в одной области памяти. */
+ union SCIPRI_REG SCIPRI; // FIFO Priority control
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// SCI External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct SCI_REGS SciaRegs;; порядок элементов сохраняется. */
extern volatile struct SCI_REGS SciaRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct SCI_REGS ScibRegs;; порядок элементов сохраняется. */
extern volatile struct SCI_REGS ScibRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct SCI_REGS ScicRegs;; порядок элементов сохраняется. */
extern volatile struct SCI_REGS ScicRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_SCI_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Spi.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Spi.h
index 1325c59..317effe 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Spi.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Spi.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Spi для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/3 $
// Checkin $Date: April 17, 2008 11:08:27 $
//###########################################################################
@@ -11,12 +12,17 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_SPI_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_SPI_H
+/* Определяет защитный символ или переключатель DSP2833x_SPI_H для последующей компиляции. */
#define DSP2833x_SPI_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -24,157 +30,260 @@ extern "C" {
// SPI Individual Register Bit Definitions:
//
// SPI FIFO Transmit register bit definitions:
+/* Описывает структуру SPIFFTX_BITS; порядок полей определяет расположение данных. */
struct SPIFFTX_BITS { // bit description
+ /* Битовое поле TXFFIL, ширина 5 бит; данные TXFFIL. */
Uint16 TXFFIL:5; // 4:0 Interrupt level
+ /* Битовое поле TXFFIENA, ширина 1 бит; данные TXFFIENA. */
Uint16 TXFFIENA:1; // 5 Interrupt enable
+ /* Битовое поле TXFFINTCLR, ширина 1 бит; данные TXFFINTCLR. */
Uint16 TXFFINTCLR:1; // 6 Clear INT flag
+ /* Битовое поле TXFFINT, ширина 1 бит; данные TXFFINT. */
Uint16 TXFFINT:1; // 7 INT flag
+ /* Битовое поле TXFFST, ширина 5 бит; данные TXFFST. */
Uint16 TXFFST:5; // 12:8 FIFO status
+ /* Битовое поле TXFIFO, ширина 1 бит; данные TXFIFO. */
Uint16 TXFIFO:1; // 13 FIFO reset
+ /* Битовое поле SPIFFENA, ширина 1 бит; данные SPIFFENA. */
Uint16 SPIFFENA:1; // 14 Enhancement enable
+ /* Битовое поле SPIRST, ширина 1 бит; данные SPIRST. */
Uint16 SPIRST:1; // 15 Reset SPI
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPIFFTX_REG в одной области памяти. */
union SPIFFTX_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPIFFTX_BITS bit;; порядок полей определяет расположение данных. */
struct SPIFFTX_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//--------------------------------------------
// SPI FIFO recieve register bit definitions:
//
//
+/* Описывает структуру SPIFFRX_BITS; порядок полей определяет расположение данных. */
struct SPIFFRX_BITS { // bits description
+ /* Битовое поле RXFFIL, ширина 5 бит; данные RXFFIL. */
Uint16 RXFFIL:5; // 4:0 Interrupt level
+ /* Битовое поле RXFFIENA, ширина 1 бит; данные RXFFIENA. */
Uint16 RXFFIENA:1; // 5 Interrupt enable
+ /* Битовое поле RXFFINTCLR, ширина 1 бит; данные RXFFINTCLR. */
Uint16 RXFFINTCLR:1; // 6 Clear INT flag
+ /* Битовое поле RXFFINT, ширина 1 бит; данные RXFFINT. */
Uint16 RXFFINT:1; // 7 INT flag
+ /* Битовое поле RXFFST, ширина 5 бит; данные RXFFST. */
Uint16 RXFFST:5; // 12:8 FIFO status
+ /* Битовое поле RXFIFORESET, ширина 1 бит; данные RXFIFORESET. */
Uint16 RXFIFORESET:1; // 13 FIFO reset
+ /* Битовое поле RXFFOVFCLR, ширина 1 бит; данные RXFFOVFCLR. */
Uint16 RXFFOVFCLR:1; // 14 Clear overflow
+ /* Битовое поле RXFFOVF, ширина 1 бит; данные RXFFOVF. */
Uint16 RXFFOVF:1; // 15 FIFO overflow
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPIFFRX_REG в одной области памяти. */
union SPIFFRX_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPIFFRX_BITS bit;; порядок полей определяет расположение данных. */
struct SPIFFRX_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//--------------------------------------------
// SPI FIFO control register bit definitions:
//
//
+/* Описывает структуру SPIFFCT_BITS; порядок полей определяет расположение данных. */
struct SPIFFCT_BITS { // bits description
+ /* Битовое поле TXDLY, ширина 8 бит; данные TXDLY. */
Uint16 TXDLY:8; // 7:0 FIFO transmit delay
+ /* Битовое поле rsvd, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPIFFCT_REG в одной области памяти. */
union SPIFFCT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPIFFCT_BITS bit;; порядок полей определяет расположение данных. */
struct SPIFFCT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------
// SPI configuration register bit definitions:
//
//
+/* Описывает структуру SPICCR_BITS; порядок полей определяет расположение данных. */
struct SPICCR_BITS { // bits description
+ /* Битовое поле SPICHAR, ширина 4 бит; данные SPICHAR. */
Uint16 SPICHAR:4; // 3:0 Character length control
+ /* Битовое поле SPILBK, ширина 1 бит; данные SPILBK. */
Uint16 SPILBK:1; // 4 Loop-back enable/disable
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 5 reserved
+ /* Битовое поле CLKPOLARITY, ширина 1 бит; данные CLKPOLARITY. */
Uint16 CLKPOLARITY:1; // 6 Clock polarity
+ /* Битовое поле SPISWRESET, ширина 1 бит; данные SPISWRESET. */
Uint16 SPISWRESET:1; // 7 SPI SW Reset
+ /* Битовое поле rsvd2, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPICCR_REG в одной области памяти. */
union SPICCR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPICCR_BITS bit;; порядок полей определяет расположение данных. */
struct SPICCR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//-------------------------------------------------
// SPI operation control register bit definitions:
//
//
+/* Описывает структуру SPICTL_BITS; порядок полей определяет расположение данных. */
struct SPICTL_BITS { // bits description
+ /* Битовое поле SPIINTENA, ширина 1 бит; данные SPIINTENA. */
Uint16 SPIINTENA:1; // 0 Interrupt enable
+ /* Битовое поле TALK, ширина 1 бит; данные TALK. */
Uint16 TALK:1; // 1 Master/Slave transmit enable
+ /* Битовое поле MASTER_SLAVE, ширина 1 бит; данные MASTER_SLAVE. */
Uint16 MASTER_SLAVE:1; // 2 Network control mode
+ /* Битовое поле CLK_PHASE, ширина 1 бит; CLK фаза. */
Uint16 CLK_PHASE:1; // 3 Clock phase select
+ /* Битовое поле OVERRUNINTENA, ширина 1 бит; данные OVERRUNINTENA. */
Uint16 OVERRUNINTENA:1; // 4 Overrun interrupt enable
+ /* Битовое поле rsvd, ширина 11 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:11; // 15:5 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPICTL_REG в одной области памяти. */
union SPICTL_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPICTL_BITS bit;; порядок полей определяет расположение данных. */
struct SPICTL_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//--------------------------------------
// SPI status register bit definitions:
//
//
+/* Описывает структуру SPISTS_BITS; порядок полей определяет расположение данных. */
struct SPISTS_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 4:0 reserved
+ /* Битовое поле BUFFULL_FLAG, ширина 1 бит; BUFFULL флаг. */
Uint16 BUFFULL_FLAG:1; // 5 SPI transmit buffer full flag
+ /* Битовое поле INT_FLAG, ширина 1 бит; INT флаг. */
Uint16 INT_FLAG:1; // 6 SPI interrupt flag
+ /* Битовое поле OVERRUN_FLAG, ширина 1 бит; OVERRUN флаг. */
Uint16 OVERRUN_FLAG:1; // 7 SPI reciever overrun flag
+ /* Битовое поле rsvd2, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:8; // 15:8 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPISTS_REG в одной области памяти. */
union SPISTS_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPISTS_BITS bit;; порядок полей определяет расположение данных. */
struct SPISTS_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//------------------------------------------------
// SPI priority control register bit definitions:
//
//
+/* Описывает структуру SPIPRI_BITS; порядок полей определяет расположение данных. */
struct SPIPRI_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 3:0 reserved
+ /* Битовое поле FREE, ширина 1 бит; данные FREE. */
Uint16 FREE:1; // 4 Free emulation mode control
+ /* Битовое поле SOFT, ширина 1 бит; данные SOFT. */
Uint16 SOFT:1; // 5 Soft emulation mode control
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 6 reserved
+ /* Битовое поле rsvd3, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:9; // 15:7 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений SPIPRI_REG в одной области памяти. */
union SPIPRI_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру SPIPRI_BITS bit;; порядок полей определяет расположение данных. */
struct SPIPRI_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// SPI Register File:
//
+/* Описывает структуру SPI_REGS; порядок полей определяет расположение данных. */
struct SPI_REGS {
+ /* Объединяет несколько представлений SPICCR_REG SPICCR; в одной области памяти. */
union SPICCR_REG SPICCR; // Configuration register
+ /* Объединяет несколько представлений SPICTL_REG SPICTL; в одной области памяти. */
union SPICTL_REG SPICTL; // Operation control register
+ /* Объединяет несколько представлений SPISTS_REG SPISTS; в одной области памяти. */
union SPISTS_REG SPISTS; // Status register
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // reserved
+ /* Объявляет SPIBRR — данные SPIBRR. */
Uint16 SPIBRR; // Baud Rate
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2; // reserved
+ /* Объявляет SPIRXEMU — данные SPIRXEMU. */
Uint16 SPIRXEMU; // Emulation buffer
+ /* Объявляет SPIRXBUF — данные SPIRXBUF. */
Uint16 SPIRXBUF; // Serial input buffer
+ /* Объявляет SPITXBUF — данные SPITXBUF. */
Uint16 SPITXBUF; // Serial output buffer
+ /* Объявляет SPIDAT — данные SPIDAT. */
Uint16 SPIDAT; // Serial data
+ /* Объединяет несколько представлений SPIFFTX_REG SPIFFTX; в одной области памяти. */
union SPIFFTX_REG SPIFFTX; // FIFO transmit register
+ /* Объединяет несколько представлений SPIFFRX_REG SPIFFRX; в одной области памяти. */
union SPIFFRX_REG SPIFFRX; // FIFO recieve register
+ /* Объединяет несколько представлений SPIFFCT_REG SPIFFCT; в одной области памяти. */
union SPIFFCT_REG SPIFFCT; // FIFO control register
+ /* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3[2]; // reserved
+ /* Объединяет несколько представлений SPIPRI_REG SPIPRI; в одной области памяти. */
union SPIPRI_REG SPIPRI; // FIFO Priority control
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// SPI External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct SPI_REGS SpiaRegs;; порядок элементов сохраняется. */
extern volatile struct SPI_REGS SpiaRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_SPI_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_SysCtrl.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_SysCtrl.h
index f8bc343..7d0ea7b 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_SysCtrl.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_SysCtrl.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание SysCtrl для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: May 12, 2008 09:34:58 $
//###########################################################################
@@ -11,12 +12,17 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_SYS_CTRL_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_SYS_CTRL_H
+/* Определяет защитный символ или переключатель DSP2833x_SYS_CTRL_H для последующей компиляции. */
#define DSP2833x_SYS_CTRL_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
@@ -26,176 +32,310 @@ extern "C" {
// PLL Status Register
+/* Описывает структуру PLLSTS_BITS; порядок полей определяет расположение данных. */
struct PLLSTS_BITS { // bits description
+ /* Битовое поле PLLLOCKS, ширина 1 бит; данные PLLLOCKS. */
Uint16 PLLLOCKS:1; // 0 PLL lock status
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved
+ /* Битовое поле PLLOFF, ширина 1 бит; данные PLLOFF. */
Uint16 PLLOFF:1; // 2 PLL off bit
+ /* Битовое поле MCLKSTS, ширина 1 бит; данные MCLKSTS. */
Uint16 MCLKSTS:1; // 3 Missing clock status bit
+ /* Битовое поле MCLKCLR, ширина 1 бит; данные MCLKCLR. */
Uint16 MCLKCLR:1; // 4 Missing clock clear bit
+ /* Битовое поле OSCOFF, ширина 1 бит; данные OSCOFF. */
Uint16 OSCOFF:1; // 5 Oscillator clock off
+ /* Битовое поле MCLKOFF, ширина 1 бит; данные MCLKOFF. */
Uint16 MCLKOFF:1; // 6 Missing clock detect
+ /* Битовое поле DIVSEL, ширина 2 бит; данные DIVSEL. */
Uint16 DIVSEL:2; // 7 Divide Select
+ /* Битовое поле rsvd2, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:7; // 15:7 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PLLSTS_REG в одной области памяти. */
union PLLSTS_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PLLSTS_BITS bit;; порядок полей определяет расположение данных. */
struct PLLSTS_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// High speed peripheral clock register bit definitions:
+/* Описывает структуру HISPCP_BITS; порядок полей определяет расположение данных. */
struct HISPCP_BITS { // bits description
+ /* Битовое поле HSPCLK, ширина 3 бит; данные HSPCLK. */
Uint16 HSPCLK:3; // 2:0 Rate relative to SYSCLKOUT
+ /* Битовое поле rsvd1, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:13; // 15:3 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений HISPCP_REG в одной области памяти. */
union HISPCP_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру HISPCP_BITS bit;; порядок полей определяет расположение данных. */
struct HISPCP_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// Low speed peripheral clock register bit definitions:
+/* Описывает структуру LOSPCP_BITS; порядок полей определяет расположение данных. */
struct LOSPCP_BITS { // bits description
+ /* Битовое поле LSPCLK, ширина 3 бит; данные LSPCLK. */
Uint16 LSPCLK:3; // 2:0 Rate relative to SYSCLKOUT
+ /* Битовое поле rsvd1, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:13; // 15:3 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений LOSPCP_REG в одной области памяти. */
union LOSPCP_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру LOSPCP_BITS bit;; порядок полей определяет расположение данных. */
struct LOSPCP_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// Peripheral clock control register 0 bit definitions:
+/* Описывает структуру PCLKCR0_BITS; порядок полей определяет расположение данных. */
struct PCLKCR0_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 1:0 reserved
+ /* Битовое поле TBCLKSYNC, ширина 1 бит; данные TBCLKSYNC. */
Uint16 TBCLKSYNC:1; // 2 EWPM Module TBCLK enable/sync
+ /* Битовое поле ADCENCLK, ширина 1 бит; данные ADCENCLK. */
Uint16 ADCENCLK:1; // 3 Enable high speed clk to ADC
+ /* Битовое поле I2CAENCLK, ширина 1 бит; данные I2CAENCLK. */
Uint16 I2CAENCLK:1; // 4 Enable SYSCLKOUT to I2C-A
+ /* Битовое поле SCICENCLK, ширина 1 бит; данные SCICENCLK. */
Uint16 SCICENCLK:1; // 5 Enalbe low speed clk to SCI-C
+ /* Битовое поле rsvd2, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:2; // 7:6 reserved
+ /* Битовое поле SPIAENCLK, ширина 1 бит; данные SPIAENCLK. */
Uint16 SPIAENCLK:1; // 8 Enable low speed clk to SPI-A
+ /* Битовое поле rsvd3, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:1; // 9 reserved
+ /* Битовое поле SCIAENCLK, ширина 1 бит; данные SCIAENCLK. */
Uint16 SCIAENCLK:1; // 10 Enable low speed clk to SCI-A
+ /* Битовое поле SCIBENCLK, ширина 1 бит; данные SCIBENCLK. */
Uint16 SCIBENCLK:1; // 11 Enable low speed clk to SCI-B
+ /* Битовое поле MCBSPAENCLK, ширина 1 бит; данные MCBSPAENCLK. */
Uint16 MCBSPAENCLK:1; // 12 Enable low speed clk to McBSP-A
+ /* Битовое поле MCBSPBENCLK, ширина 1 бит; данные MCBSPBENCLK. */
Uint16 MCBSPBENCLK:1; // 13 Enable low speed clk to McBSP-B
+ /* Битовое поле ECANAENCLK, ширина 1 бит; данные ECANAENCLK. */
Uint16 ECANAENCLK:1; // 14 Enable system clk to eCAN-A
+ /* Битовое поле ECANBENCLK, ширина 1 бит; данные ECANBENCLK. */
Uint16 ECANBENCLK:1; // 15 Enable system clk to eCAN-B
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PCLKCR0_REG в одной области памяти. */
union PCLKCR0_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PCLKCR0_BITS bit;; порядок полей определяет расположение данных. */
struct PCLKCR0_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// Peripheral clock control register 1 bit definitions:
+/* Описывает структуру PCLKCR1_BITS; порядок полей определяет расположение данных. */
struct PCLKCR1_BITS { // bits description
+ /* Битовое поле EPWM1ENCLK, ширина 1 бит; данные EPWM1ENCLK. */
Uint16 EPWM1ENCLK:1; // 0 Enable SYSCLKOUT to EPWM1
+ /* Битовое поле EPWM2ENCLK, ширина 1 бит; данные EPWM2ENCLK. */
Uint16 EPWM2ENCLK:1; // 1 Enable SYSCLKOUT to EPWM2
+ /* Битовое поле EPWM3ENCLK, ширина 1 бит; данные EPWM3ENCLK. */
Uint16 EPWM3ENCLK:1; // 2 Enable SYSCLKOUT to EPWM3
+ /* Битовое поле EPWM4ENCLK, ширина 1 бит; данные EPWM4ENCLK. */
Uint16 EPWM4ENCLK:1; // 3 Enable SYSCLKOUT to EPWM4
+ /* Битовое поле EPWM5ENCLK, ширина 1 бит; данные EPWM5ENCLK. */
Uint16 EPWM5ENCLK:1; // 4 Enable SYSCLKOUT to EPWM5
+ /* Битовое поле EPWM6ENCLK, ширина 1 бит; данные EPWM6ENCLK. */
Uint16 EPWM6ENCLK:1; // 5 Enable SYSCLKOUT to EPWM6
+ /* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 7:6 reserved
+ /* Битовое поле ECAP1ENCLK, ширина 1 бит; данные ECAP1ENCLK. */
Uint16 ECAP1ENCLK:1; // 8 Enable SYSCLKOUT to ECAP1
+ /* Битовое поле ECAP2ENCLK, ширина 1 бит; данные ECAP2ENCLK. */
Uint16 ECAP2ENCLK:1; // 9 Enable SYSCLKOUT to ECAP2
+ /* Битовое поле ECAP3ENCLK, ширина 1 бит; данные ECAP3ENCLK. */
Uint16 ECAP3ENCLK:1; // 10 Enable SYSCLKOUT to ECAP3
+ /* Битовое поле ECAP4ENCLK, ширина 1 бит; данные ECAP4ENCLK. */
Uint16 ECAP4ENCLK:1; // 11 Enable SYSCLKOUT to ECAP4
+ /* Битовое поле ECAP5ENCLK, ширина 1 бит; данные ECAP5ENCLK. */
Uint16 ECAP5ENCLK:1; // 12 Enable SYSCLKOUT to ECAP5
+ /* Битовое поле ECAP6ENCLK, ширина 1 бит; данные ECAP6ENCLK. */
Uint16 ECAP6ENCLK:1; // 13 Enable SYSCLKOUT to ECAP6
+ /* Битовое поле EQEP1ENCLK, ширина 1 бит; данные EQEP1ENCLK. */
Uint16 EQEP1ENCLK:1; // 14 Enable SYSCLKOUT to EQEP1
+ /* Битовое поле EQEP2ENCLK, ширина 1 бит; данные EQEP2ENCLK. */
Uint16 EQEP2ENCLK:1; // 15 Enable SYSCLKOUT to EQEP2
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PCLKCR1_REG в одной области памяти. */
union PCLKCR1_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PCLKCR1_BITS bit;; порядок полей определяет расположение данных. */
struct PCLKCR1_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// Peripheral clock control register 2 bit definitions:
+/* Описывает структуру PCLKCR3_BITS; порядок полей определяет расположение данных. */
struct PCLKCR3_BITS { // bits description
+ /* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 7:0 reserved
+ /* Битовое поле CPUTIMER0ENCLK, ширина 1 бит; данные CPUTIMER0ENCLK. */
Uint16 CPUTIMER0ENCLK:1; // 8 Enable SYSCLKOUT to CPU-Timer 0
+ /* Битовое поле CPUTIMER1ENCLK, ширина 1 бит; данные CPUTIMER1ENCLK. */
Uint16 CPUTIMER1ENCLK:1; // 9 Enable SYSCLKOUT to CPU-Timer 1
+ /* Битовое поле CPUTIMER2ENCLK, ширина 1 бит; данные CPUTIMER2ENCLK. */
Uint16 CPUTIMER2ENCLK:1; // 10 Enable SYSCLKOUT to CPU-Timer 2
+ /* Битовое поле DMAENCLK, ширина 1 бит; данные DMAENCLK. */
Uint16 DMAENCLK:1; // 11 Enable the DMA clock
+ /* Битовое поле XINTFENCLK, ширина 1 бит; данные XINTFENCLK. */
Uint16 XINTFENCLK:1; // 12 Enable SYSCLKOUT to XINTF
+ /* Битовое поле GPIOINENCLK, ширина 1 бит; аппаратная линия ввода/вывода GPIOINENCLK. */
Uint16 GPIOINENCLK:1; // Enable GPIO input clock
+ /* Битовое поле rsvd2, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:2; // 15:14 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PCLKCR3_REG в одной области памяти. */
union PCLKCR3_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PCLKCR3_BITS bit;; порядок полей определяет расположение данных. */
struct PCLKCR3_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// PLL control register bit definitions:
+/* Описывает структуру PLLCR_BITS; порядок полей определяет расположение данных. */
struct PLLCR_BITS { // bits description
+ /* Битовое поле DIV, ширина 4 бит; данные DIV. */
Uint16 DIV:4; // 3:0 Set clock ratio for the PLL
+ /* Битовое поле rsvd1, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений PLLCR_REG в одной области памяти. */
union PLLCR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру PLLCR_BITS bit;; порядок полей определяет расположение данных. */
struct PLLCR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// Low Power Mode 0 control register bit definitions:
+/* Описывает структуру LPMCR0_BITS; порядок полей определяет расположение данных. */
struct LPMCR0_BITS { // bits description
+ /* Битовое поле LPM, ширина 2 бит; данные LPM. */
Uint16 LPM:2; // 1:0 Set the low power mode
+ /* Битовое поле QUALSTDBY, ширина 6 бит; данные QUALSTDBY. */
Uint16 QUALSTDBY:6; // 7:2 Qualification
+ /* Битовое поле rsvd1, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:7; // 14:8 reserved
+ /* Битовое поле WDINTE, ширина 1 бит; данные WDINTE. */
Uint16 WDINTE:1; // 15 Enables WD to wake the device from STANDBY
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений LPMCR0_REG в одной области памяти. */
union LPMCR0_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру LPMCR0_BITS bit;; порядок полей определяет расположение данных. */
struct LPMCR0_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// Dual-mapping configuration register bit definitions:
+/* Описывает структуру MAPCNF_BITS; порядок полей определяет расположение данных. */
struct MAPCNF_BITS { // bits description
+ /* Битовое поле MAPEPWM, ширина 1 бит; данные MAPEPWM. */
Uint16 MAPEPWM:1; // 0 EPWM dual-map enable
+ /* Битовое поле rsvd1, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:15; // 15:1 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений MAPCNF_REG в одной области памяти. */
union MAPCNF_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру MAPCNF_BITS bit;; порядок полей определяет расположение данных. */
struct MAPCNF_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// System Control Register File:
//
+/* Описывает структуру SYS_CTRL_REGS; порядок полей определяет расположение данных. */
struct SYS_CTRL_REGS {
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // 0
+ /* Объединяет несколько представлений PLLSTS_REG PLLSTS; в одной области памяти. */
union PLLSTS_REG PLLSTS; // 1
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2[8]; // 2-9
+ /* Объединяет несколько представлений HISPCP_REG HISPCP; в одной области памяти. */
union HISPCP_REG HISPCP; // 10: High-speed peripheral clock pre-scaler
+ /* Объединяет несколько представлений LOSPCP_REG LOSPCP; в одной области памяти. */
union LOSPCP_REG LOSPCP; // 11: Low-speed peripheral clock pre-scaler
+ /* Объединяет несколько представлений PCLKCR0_REG PCLKCR0; в одной области памяти. */
union PCLKCR0_REG PCLKCR0; // 12: Peripheral clock control register
+ /* Объединяет несколько представлений PCLKCR1_REG PCLKCR1; в одной области памяти. */
union PCLKCR1_REG PCLKCR1; // 13: Peripheral clock control register
+ /* Объединяет несколько представлений LPMCR0_REG LPMCR0; в одной области памяти. */
union LPMCR0_REG LPMCR0; // 14: Low-power mode control register 0
+ /* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3; // 15: reserved
+ /* Объединяет несколько представлений PCLKCR3_REG PCLKCR3; в одной области памяти. */
union PCLKCR3_REG PCLKCR3; // 16: Peripheral clock control register
+ /* Объединяет несколько представлений PLLCR_REG PLLCR; в одной области памяти. */
union PLLCR_REG PLLCR; // 17: PLL control register
// No bit definitions are defined for SCSR because
// a read-modify-write instruction can clear the WDOVERRIDE bit
+ /* Объявляет SCSR — данные SCSR. */
Uint16 SCSR; // 18: System control and status register
+ /* Объявляет WDCNTR — данные WDCNTR. */
Uint16 WDCNTR; // 19: WD counter register
+ /* Объявляет rsvd4 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd4; // 20
+ /* Объявляет WDKEY — данные WDKEY. */
Uint16 WDKEY; // 21: WD reset key register
+ /* Объявляет rsvd5 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd5[3]; // 22-24
// No bit definitions are defined for WDCR because
// the proper value must be written to the WDCHK field
// whenever writing to this register.
+ /* Объявляет WDCR — данные WDCR. */
Uint16 WDCR; // 25: WD timer control register
+ /* Объявляет rsvd6 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd6[4]; // 26-29
+ /* Объединяет несколько представлений MAPCNF_REG MAPCNF; в одной области памяти. */
union MAPCNF_REG MAPCNF; // 30: Dual-mapping configuration register
+ /* Объявляет rsvd7 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd7[1]; // 31
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -205,176 +345,295 @@ struct SYS_CTRL_REGS {
/* ----------------------------------------------------*/
/* CSM Status & Control register bit definitions */
+/* Описывает структуру CSMSCR_BITS; порядок полей определяет расположение данных. */
struct CSMSCR_BITS { // bit description
+ /* Битовое поле SECURE, ширина 1 бит; данные SECURE. */
Uint16 SECURE:1; // 0 Secure flag
+ /* Битовое поле rsvd1, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:14; // 14-1 reserved
+ /* Битовое поле FORCESEC, ширина 1 бит; данные FORCESEC. */
Uint16 FORCESEC:1; // 15 Force Secure control bit
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений CSMSCR_REG в одной области памяти. */
union CSMSCR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру CSMSCR_BITS bit;; порядок полей определяет расположение данных. */
struct CSMSCR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* CSM Register File */
+/* Описывает структуру CSM_REGS; порядок полей определяет расположение данных. */
struct CSM_REGS {
+ /* Объявляет KEY0 — данные KEY0. */
Uint16 KEY0; // KEY reg bits 15-0
+ /* Объявляет KEY1 — данные KEY1. */
Uint16 KEY1; // KEY reg bits 31-16
+ /* Объявляет KEY2 — данные KEY2. */
Uint16 KEY2; // KEY reg bits 47-32
+ /* Объявляет KEY3 — данные KEY3. */
Uint16 KEY3; // KEY reg bits 63-48
+ /* Объявляет KEY4 — данные KEY4. */
Uint16 KEY4; // KEY reg bits 79-64
+ /* Объявляет KEY5 — данные KEY5. */
Uint16 KEY5; // KEY reg bits 95-80
+ /* Объявляет KEY6 — данные KEY6. */
Uint16 KEY6; // KEY reg bits 111-96
+ /* Объявляет KEY7 — данные KEY7. */
Uint16 KEY7; // KEY reg bits 127-112
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // reserved
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2; // reserved
+ /* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3; // reserved
+ /* Объявляет rsvd4 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd4; // reserved
+ /* Объявляет rsvd5 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd5; // reserved
+ /* Объявляет rsvd6 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd6; // reserved
+ /* Объявляет rsvd7 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd7; // reserved
+ /* Объединяет несколько представлений CSMSCR_REG CSMSCR; в одной области памяти. */
union CSMSCR_REG CSMSCR; // CSM Status & Control register
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Password locations */
+/* Описывает структуру CSM_PWL; порядок полей определяет расположение данных. */
struct CSM_PWL {
+ /* Объявляет PSWD0 — данные PSWD0. */
Uint16 PSWD0; // PSWD bits 15-0
+ /* Объявляет PSWD1 — данные PSWD1. */
Uint16 PSWD1; // PSWD bits 31-16
+ /* Объявляет PSWD2 — данные PSWD2. */
Uint16 PSWD2; // PSWD bits 47-32
+ /* Объявляет PSWD3 — данные PSWD3. */
Uint16 PSWD3; // PSWD bits 63-48
+ /* Объявляет PSWD4 — данные PSWD4. */
Uint16 PSWD4; // PSWD bits 79-64
+ /* Объявляет PSWD5 — данные PSWD5. */
Uint16 PSWD5; // PSWD bits 95-80
+ /* Объявляет PSWD6 — данные PSWD6. */
Uint16 PSWD6; // PSWD bits 111-96
+ /* Объявляет PSWD7 — данные PSWD7. */
Uint16 PSWD7; // PSWD bits 127-112
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Flash Registers */
+/* Задаёт FLASH_SLEEP = 0x0000;; данные FLASH_SLEEP. */
#define FLASH_SLEEP 0x0000;
+/* Задаёт FLASH_STANDBY = 0x0001;; данные FLASH_STANDBY. */
#define FLASH_STANDBY 0x0001;
+/* Задаёт FLASH_ACTIVE = 0x0003;; данные FLASH_ACTIVE. */
#define FLASH_ACTIVE 0x0003;
/* Flash Option Register bit definitions */
+/* Описывает структуру FOPT_BITS; порядок полей определяет расположение данных. */
struct FOPT_BITS { // bit description
+ /* Битовое поле ENPIPE, ширина 1 бит; данные ENPIPE. */
Uint16 ENPIPE:1; // 0 Enable Pipeline Mode
+ /* Битовое поле rsvd, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:15; // 1-15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений FOPT_REG в одной области памяти. */
union FOPT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру FOPT_BITS bit;; порядок полей определяет расположение данных. */
struct FOPT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Flash Power Modes Register bit definitions */
+/* Описывает структуру FPWR_BITS; порядок полей определяет расположение данных. */
struct FPWR_BITS { // bit description
+ /* Битовое поле PWR, ширина 2 бит; данные PWR. */
Uint16 PWR:2; // 0-1 Power Mode bits
+ /* Битовое поле rsvd, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:14; // 2-15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений FPWR_REG в одной области памяти. */
union FPWR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру FPWR_BITS bit;; порядок полей определяет расположение данных. */
struct FPWR_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Flash Status Register bit definitions */
+/* Описывает структуру FSTATUS_BITS; порядок полей определяет расположение данных. */
struct FSTATUS_BITS { // bit description
+ /* Битовое поле PWRS, ширина 2 бит; данные PWRS. */
Uint16 PWRS:2; // 0-1 Power Mode Status bits
+ /* Битовое поле STDBYWAITS, ширина 1 бит; данные STDBYWAITS. */
Uint16 STDBYWAITS:1; // 2 Bank/Pump Sleep to Standby Wait Counter Status bits
+ /* Битовое поле ACTIVEWAITS, ширина 1 бит; данные ACTIVEWAITS. */
Uint16 ACTIVEWAITS:1; // 3 Bank/Pump Standby to Active Wait Counter Status bits
+ /* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 4-7 reserved
+ /* Битовое поле V3STAT, ширина 1 бит; данные V3STAT. */
Uint16 V3STAT:1; // 8 VDD3V Status Latch bit
+ /* Битовое поле rsvd2, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:7; // 9-15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений FSTATUS_REG в одной области памяти. */
union FSTATUS_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру FSTATUS_BITS bit;; порядок полей определяет расположение данных. */
struct FSTATUS_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Flash Sleep to Standby Wait Counter Register bit definitions */
+/* Описывает структуру FSTDBYWAIT_BITS; порядок полей определяет расположение данных. */
struct FSTDBYWAIT_BITS { // bit description
+ /* Битовое поле STDBYWAIT, ширина 9 бит; данные STDBYWAIT. */
Uint16 STDBYWAIT:9; // 0-8 Bank/Pump Sleep to Standby Wait Count bits
+ /* Битовое поле rsvd, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:7; // 9-15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений FSTDBYWAIT_REG в одной области памяти. */
union FSTDBYWAIT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру FSTDBYWAIT_BITS bit;; порядок полей определяет расположение данных. */
struct FSTDBYWAIT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Flash Standby to Active Wait Counter Register bit definitions */
+/* Описывает структуру FACTIVEWAIT_BITS; порядок полей определяет расположение данных. */
struct FACTIVEWAIT_BITS { // bit description
+ /* Битовое поле ACTIVEWAIT, ширина 9 бит; данные ACTIVEWAIT. */
Uint16 ACTIVEWAIT:9; // 0-8 Bank/Pump Standby to Active Wait Count bits
+ /* Битовое поле rsvd, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:7; // 9-15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений FACTIVEWAIT_REG в одной области памяти. */
union FACTIVEWAIT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру FACTIVEWAIT_BITS bit;; порядок полей определяет расположение данных. */
struct FACTIVEWAIT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Bank Read Access Wait State Register bit definitions */
+/* Описывает структуру FBANKWAIT_BITS; порядок полей определяет расположение данных. */
struct FBANKWAIT_BITS { // bit description
+ /* Битовое поле RANDWAIT, ширина 4 бит; данные RANDWAIT. */
Uint16 RANDWAIT:4; // 0-3 Flash Random Read Wait State bits
+ /* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 4-7 reserved
+ /* Битовое поле PAGEWAIT, ширина 4 бит; данные PAGEWAIT. */
Uint16 PAGEWAIT:4; // 8-11 Flash Paged Read Wait State bits
+ /* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 12-15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений FBANKWAIT_REG в одной области памяти. */
union FBANKWAIT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру FBANKWAIT_BITS bit;; порядок полей определяет расположение данных. */
struct FBANKWAIT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* OTP Read Access Wait State Register bit definitions */
+/* Описывает структуру FOTPWAIT_BITS; порядок полей определяет расположение данных. */
struct FOTPWAIT_BITS { // bit description
+ /* Битовое поле OTPWAIT, ширина 5 бит; данные OTPWAIT. */
Uint16 OTPWAIT:5; // 0-4 OTP Read Wait State bits
+ /* Битовое поле rsvd, ширина 11 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:11; // 5-15 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* Allow access to the bit fields or entire register */
+/* Объединяет несколько представлений FOTPWAIT_REG в одной области памяти. */
union FOTPWAIT_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру FOTPWAIT_BITS bit;; порядок полей определяет расположение данных. */
struct FOTPWAIT_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру FLASH_REGS; порядок полей определяет расположение данных. */
struct FLASH_REGS {
+ /* Объединяет несколько представлений FOPT_REG FOPT; в одной области памяти. */
union FOPT_REG FOPT; // Option Register
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // reserved
+ /* Объединяет несколько представлений FPWR_REG FPWR; в одной области памяти. */
union FPWR_REG FPWR; // Power Modes Register
+ /* Объединяет несколько представлений FSTATUS_REG FSTATUS; в одной области памяти. */
union FSTATUS_REG FSTATUS; // Status Register
+ /* Объединяет несколько представлений FSTDBYWAIT_REG FSTDBYWAIT; в одной области памяти. */
union FSTDBYWAIT_REG FSTDBYWAIT; // Pump/Bank Sleep to Standby Wait State Register
+ /* Объединяет несколько представлений FACTIVEWAIT_REG FACTIVEWAIT; в одной области памяти. */
union FACTIVEWAIT_REG FACTIVEWAIT; // Pump/Bank Standby to Active Wait State Register
+ /* Объединяет несколько представлений FBANKWAIT_REG FBANKWAIT; в одной области памяти. */
union FBANKWAIT_REG FBANKWAIT; // Bank Read Access Wait State Register
+ /* Объединяет несколько представлений FOTPWAIT_REG FOTPWAIT; в одной области памяти. */
union FOTPWAIT_REG FOTPWAIT; // OTP Read Access Wait State Register
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// System Control External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct SYS_CTRL_REGS SysCtrlRegs;; порядок элементов сохраняется. */
extern volatile struct SYS_CTRL_REGS SysCtrlRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct CSM_REGS CsmRegs;; порядок элементов сохраняется. */
extern volatile struct CSM_REGS CsmRegs;
+/* Продолжает список аргументов, полей или выражение extern volatile struct CSM_PWL CsmPwl;; порядок элементов сохраняется. */
extern volatile struct CSM_PWL CsmPwl;
+/* Продолжает список аргументов, полей или выражение extern volatile struct FLASH_REGS FlashRegs;; порядок элементов сохраняется. */
extern volatile struct FLASH_REGS FlashRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_SYS_CTRL_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_XIntrupt.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_XIntrupt.h
index 6f860f6..f9a5f85 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_XIntrupt.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_XIntrupt.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание XIntrupt для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:39 $
//###########################################################################
@@ -11,39 +12,64 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_XINTRUPT_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_XINTRUPT_H
+/* Определяет защитный символ или переключатель DSP2833x_XINTRUPT_H для последующей компиляции. */
#define DSP2833x_XINTRUPT_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
//---------------------------------------------------------------------------
+/* Описывает структуру XINTCR_BITS; порядок полей определяет расположение данных. */
struct XINTCR_BITS {
+ /* Битовое поле ENABLE, ширина 1 бит; разрешение. */
Uint16 ENABLE:1; // 0 enable/disable
+ /* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved
+ /* Битовое поле POLARITY, ширина 2 бит; данные POLARITY. */
Uint16 POLARITY:2; // 3:2 pos/neg, both triggered
+ /* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; //15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XINTCR_REG в одной области памяти. */
union XINTCR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XINTCR_BITS bit;; порядок полей определяет расположение данных. */
struct XINTCR_BITS bit;
-};
-
-struct XNMICR_BITS {
- Uint16 ENABLE:1; // 0 enable/disable
- Uint16 SELECT:1; // 1 Timer 1 or XNMI connected to int13
- Uint16 POLARITY:2; // 3:2 pos/neg, or both triggered
- Uint16 rsvd2:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру XNMICR_BITS; порядок полей определяет расположение данных. */
+struct XNMICR_BITS {
+ /* Битовое поле ENABLE, ширина 1 бит; разрешение. */
+ Uint16 ENABLE:1; // 0 enable/disable
+ /* Битовое поле SELECT, ширина 1 бит; выбор. */
+ Uint16 SELECT:1; // 1 Timer 1 or XNMI connected to int13
+ /* Битовое поле POLARITY, ширина 2 бит; данные POLARITY. */
+ Uint16 POLARITY:2; // 3:2 pos/neg, or both triggered
+ /* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
+ Uint16 rsvd2:12; // 15:4 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
+
+/* Объединяет несколько представлений XNMICR_REG в одной области памяти. */
union XNMICR_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XNMICR_BITS bit;; порядок полей определяет расположение данных. */
struct XNMICR_BITS bit;
-};
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+};
@@ -51,30 +77,48 @@ union XNMICR_REG {
//---------------------------------------------------------------------------
// External Interrupt Register File:
//
+/* Описывает структуру XINTRUPT_REGS; порядок полей определяет расположение данных. */
struct XINTRUPT_REGS {
+ /* Объединяет несколько представлений XINTCR_REG XINT1CR; в одной области памяти. */
union XINTCR_REG XINT1CR;
+ /* Объединяет несколько представлений XINTCR_REG XINT2CR; в одной области памяти. */
union XINTCR_REG XINT2CR;
+ /* Объединяет несколько представлений XINTCR_REG XINT3CR; в одной области памяти. */
union XINTCR_REG XINT3CR;
+ /* Объединяет несколько представлений XINTCR_REG XINT4CR; в одной области памяти. */
union XINTCR_REG XINT4CR;
+ /* Объединяет несколько представлений XINTCR_REG XINT5CR; в одной области памяти. */
union XINTCR_REG XINT5CR;
+ /* Объединяет несколько представлений XINTCR_REG XINT6CR; в одной области памяти. */
union XINTCR_REG XINT6CR;
+ /* Объединяет несколько представлений XINTCR_REG XINT7CR; в одной области памяти. */
union XINTCR_REG XINT7CR;
+ /* Объединяет несколько представлений XNMICR_REG XNMICR; в одной области памяти. */
union XNMICR_REG XNMICR;
+ /* Объявляет XINT1CTR — данные XINT1CTR. */
Uint16 XINT1CTR;
+ /* Объявляет XINT2CTR — данные XINT2CTR. */
Uint16 XINT2CTR;
+ /* Объявляет rsvd — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd[5];
+ /* Объявляет XNMICTR — данные XNMICTR. */
Uint16 XNMICTR;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// External Interrupt References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct XINTRUPT_REGS XIntruptRegs;; порядок элементов сохраняется. */
extern volatile struct XINTRUPT_REGS XIntruptRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_XINTF_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Xintf.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Xintf.h
index cb68744..c6f85f0 100644
--- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Xintf.h
+++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Xintf.h
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание Xintf для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/3 $
// Checkin $Date: March 20, 2007 16:34:08 $
//###########################################################################
@@ -11,108 +12,184 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Начинает условие: DSP2833x_XINTF_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_XINTF_H
+/* Определяет защитный символ или переключатель DSP2833x_XINTF_H для последующей компиляции. */
#define DSP2833x_XINTF_H
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// XINTF timing register bit definitions:
+/* Описывает структуру XTIMING_BITS; порядок полей определяет расположение данных. */
struct XTIMING_BITS { // bits description
+ /* Битовое поле XWRTRAIL, ширина 2 бит; данные XWRTRAIL. */
Uint16 XWRTRAIL:2; // 1:0 Write access trail timing
+ /* Битовое поле XWRACTIVE, ширина 3 бит; данные XWRACTIVE. */
Uint16 XWRACTIVE:3; // 4:2 Write access active timing
+ /* Битовое поле XWRLEAD, ширина 2 бит; данные XWRLEAD. */
Uint16 XWRLEAD:2; // 6:5 Write access lead timing
+ /* Битовое поле XRDTRAIL, ширина 2 бит; данные XRDTRAIL. */
Uint16 XRDTRAIL:2; // 8:7 Read access trail timing
+ /* Битовое поле XRDACTIVE, ширина 3 бит; данные XRDACTIVE. */
Uint16 XRDACTIVE:3; // 11:9 Read access active timing
+ /* Битовое поле XRDLEAD, ширина 2 бит; данные XRDLEAD. */
Uint16 XRDLEAD:2; // 13:12 Read access lead timing
+ /* Битовое поле USEREADY, ширина 1 бит; данные USEREADY. */
Uint16 USEREADY:1; // 14 Extend access using HW waitstates
+ /* Битовое поле READYMODE, ширина 1 бит; данные READYMODE. */
Uint16 READYMODE:1; // 15 Ready mode
+ /* Битовое поле XSIZE, ширина 2 бит; данные XSIZE. */
Uint16 XSIZE:2; // 17:16 XINTF bus width - must be written as 11b
+ /* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 21:18 reserved
+ /* Битовое поле X2TIMING, ширина 1 бит; данные X2TIMING. */
Uint16 X2TIMING:1; // 22 Double lead/active/trail timing
+ /* Битовое поле rsvd3, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:9; // 31:23 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XTIMING_REG в одной области памяти. */
union XTIMING_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру XTIMING_BITS bit;; порядок полей определяет расположение данных. */
struct XTIMING_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XINTF control register bit definitions:
+/* Описывает структуру XINTCNF2_BITS; порядок полей определяет расположение данных. */
struct XINTCNF2_BITS { // bits description
+ /* Битовое поле WRBUFF, ширина 2 бит; данные WRBUFF. */
Uint16 WRBUFF:2; // 1:0 Write buffer depth
+ /* Битовое поле CLKMODE, ширина 1 бит; данные CLKMODE. */
Uint16 CLKMODE:1; // 2 Ratio for XCLKOUT with respect to XTIMCLK
+ /* Битовое поле CLKOFF, ширина 1 бит; данные CLKOFF. */
Uint16 CLKOFF:1; // 3 Disable XCLKOUT
+ /* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 5:4 reserved
+ /* Битовое поле WLEVEL, ширина 2 бит; данные WLEVEL. */
Uint16 WLEVEL:2; // 7:6 Current level of the write buffer
+ /* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 8 reserved
+ /* Битовое поле HOLD, ширина 1 бит; данные HOLD. */
Uint16 HOLD:1; // 9 Hold enable/disable
+ /* Битовое поле HOLDS, ширина 1 бит; данные HOLDS. */
Uint16 HOLDS:1; // 10 Current state of HOLDn input
+ /* Битовое поле HOLDAS, ширина 1 бит; данные HOLDAS. */
Uint16 HOLDAS:1; // 11 Current state of HOLDAn output
+ /* Битовое поле rsvd3, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:4; // 15:12 reserved
+ /* Битовое поле XTIMCLK, ширина 3 бит; данные XTIMCLK. */
Uint16 XTIMCLK:3; // 18:16 Ratio for XTIMCLK
+ /* Битовое поле rsvd4, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd4:13; // 31:19 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XINTCNF2_REG в одной области памяти. */
union XINTCNF2_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all;
+ /* Описывает структуру XINTCNF2_BITS bit;; порядок полей определяет расположение данных. */
struct XINTCNF2_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
// XINTF bank switching register bit definitions:
+/* Описывает структуру XBANK_BITS; порядок полей определяет расположение данных. */
struct XBANK_BITS { // bits description
+ /* Битовое поле BANK, ширина 3 бит; данные BANK. */
Uint16 BANK:3; // 2:0 Zone for which banking is enabled
+ /* Битовое поле BCYC, ширина 3 бит; данные BCYC. */
Uint16 BCYC:3; // 5:3 XTIMCLK cycles to add
+ /* Битовое поле rsvd, ширина 10 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:10; // 15:6 reserved
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XBANK_REG в одной области памяти. */
union XBANK_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XBANK_BITS bit;; порядок полей определяет расположение данных. */
struct XBANK_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Описывает структуру XRESET_BITS; порядок полей определяет расположение данных. */
struct XRESET_BITS {
+ /* Битовое поле XHARDRESET, ширина 1 бит; данные XHARDRESET. */
Uint16 XHARDRESET:1;
+ /* Битовое поле rsvd1, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:15;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объединяет несколько представлений XRESET_REG в одной области памяти. */
union XRESET_REG {
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all;
+ /* Описывает структуру XBANK_BITS bit;; порядок полей определяет расположение данных. */
struct XBANK_BITS bit;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// XINTF Register File:
//
+/* Описывает структуру XINTF_REGS; порядок полей определяет расположение данных. */
struct XINTF_REGS {
+ /* Объединяет несколько представлений XTIMING_REG XTIMING0; в одной области памяти. */
union XTIMING_REG XTIMING0;
+ /* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint32 rsvd1[5];
+ /* Объединяет несколько представлений XTIMING_REG XTIMING6; в одной области памяти. */
union XTIMING_REG XTIMING6;
+ /* Объединяет несколько представлений XTIMING_REG XTIMING7; в одной области памяти. */
union XTIMING_REG XTIMING7;
+ /* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint32 rsvd2[2];
+ /* Объединяет несколько представлений XINTCNF2_REG XINTCNF2; в одной области памяти. */
union XINTCNF2_REG XINTCNF2;
+ /* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
Uint32 rsvd3;
+ /* Объединяет несколько представлений XBANK_REG XBANK; в одной области памяти. */
union XBANK_REG XBANK;
+ /* Объявляет rsvd4 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd4;
+ /* Объявляет XREVISION — данные XREVISION. */
Uint16 XREVISION;
+ /* Объявляет rsvd5 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd5[2];
+ /* Объединяет несколько представлений XRESET_REG XRESET; в одной области памяти. */
union XRESET_REG XRESET;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
//---------------------------------------------------------------------------
// XINTF External References & Function Declarations:
//
+/* Продолжает список аргументов, полей или выражение extern volatile struct XINTF_REGS XintfRegs;; порядок элементов сохраняется. */
extern volatile struct XINTF_REGS XintfRegs;
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-#endif /* extern "C" */
+#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_XINTF_H definition
//===========================================================================
diff --git a/Source/External/v120/DSP2833x_headers/source/DSP2833x_GlobalVariableDefs.c b/Source/External/v120/DSP2833x_headers/source/DSP2833x_GlobalVariableDefs.c
index d7cd332..4171497 100644
--- a/Source/External/v120/DSP2833x_headers/source/DSP2833x_GlobalVariableDefs.c
+++ b/Source/External/v120/DSP2833x_headers/source/DSP2833x_GlobalVariableDefs.c
@@ -1,3 +1,4 @@
+/* Поставляемое TI описание GlobalVariableDefs для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/4 $
// Checkin $Date: June 2, 2008 11:12:33 $
//###########################################################################
@@ -11,421 +12,722 @@
// $Release Date: August 1, 2008 $
//###########################################################################
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
//---------------------------------------------------------------------------
// Define Global Peripheral Variables:
//
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("AdcRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("AdcRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(AdcRegs,"AdcRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(AdcRegs,"AdcRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ADC_REGS AdcRegs;; порядок элементов сохраняется. */
volatile struct ADC_REGS AdcRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("AdcMirrorFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("AdcMirrorFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(AdcMirror,"AdcMirrorFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(AdcMirror,"AdcMirrorFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ADC_RESULT_MIRROR_REGS AdcMirror;; порядок элементов сохраняется. */
volatile struct ADC_RESULT_MIRROR_REGS AdcMirror;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("CpuTimer0RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("CpuTimer0RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(CpuTimer0Regs,"CpuTimer0RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(CpuTimer0Regs,"CpuTimer0RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct CPUTIMER_REGS CpuTimer0Regs;; порядок элементов сохраняется. */
volatile struct CPUTIMER_REGS CpuTimer0Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("CpuTimer1RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("CpuTimer1RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(CpuTimer1Regs,"CpuTimer1RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(CpuTimer1Regs,"CpuTimer1RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct CPUTIMER_REGS CpuTimer1Regs;; порядок элементов сохраняется. */
volatile struct CPUTIMER_REGS CpuTimer1Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("CpuTimer2RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("CpuTimer2RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(CpuTimer2Regs,"CpuTimer2RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(CpuTimer2Regs,"CpuTimer2RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct CPUTIMER_REGS CpuTimer2Regs;; порядок элементов сохраняется. */
volatile struct CPUTIMER_REGS CpuTimer2Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("CsmPwlFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("CsmPwlFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(CsmPwl,"CsmPwlFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(CsmPwl,"CsmPwlFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct CSM_PWL CsmPwl;; порядок элементов сохраняется. */
volatile struct CSM_PWL CsmPwl;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("CsmRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("CsmRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(CsmRegs,"CsmRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(CsmRegs,"CsmRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct CSM_REGS CsmRegs;; порядок элементов сохраняется. */
volatile struct CSM_REGS CsmRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("DevEmuRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("DevEmuRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(DevEmuRegs,"DevEmuRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(DevEmuRegs,"DevEmuRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct DEV_EMU_REGS DevEmuRegs;; порядок элементов сохраняется. */
volatile struct DEV_EMU_REGS DevEmuRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("DmaRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("DmaRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(DmaRegs,"DmaRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(DmaRegs,"DmaRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct DMA_REGS DmaRegs;; порядок элементов сохраняется. */
volatile struct DMA_REGS DmaRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanaRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanaRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanaRegs,"ECanaRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanaRegs,"ECanaRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAN_REGS ECanaRegs;; порядок элементов сохраняется. */
volatile struct ECAN_REGS ECanaRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanaMboxesFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanaMboxesFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanaMboxes,"ECanaMboxesFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanaMboxes,"ECanaMboxesFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAN_MBOXES ECanaMboxes;; порядок элементов сохраняется. */
volatile struct ECAN_MBOXES ECanaMboxes;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanaLAMRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanaLAMRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanaLAMRegs,"ECanaLAMRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanaLAMRegs,"ECanaLAMRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct LAM_REGS ECanaLAMRegs;; порядок элементов сохраняется. */
volatile struct LAM_REGS ECanaLAMRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanaMOTSRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanaMOTSRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanaMOTSRegs,"ECanaMOTSRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanaMOTSRegs,"ECanaMOTSRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct MOTS_REGS ECanaMOTSRegs;; порядок элементов сохраняется. */
volatile struct MOTS_REGS ECanaMOTSRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanaMOTORegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanaMOTORegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanaMOTORegs,"ECanaMOTORegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanaMOTORegs,"ECanaMOTORegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct MOTO_REGS ECanaMOTORegs;; порядок элементов сохраняется. */
volatile struct MOTO_REGS ECanaMOTORegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanbRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanbRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanbRegs,"ECanbRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanbRegs,"ECanbRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAN_REGS ECanbRegs;; порядок элементов сохраняется. */
volatile struct ECAN_REGS ECanbRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanbMboxesFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanbMboxesFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanbMboxes,"ECanbMboxesFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanbMboxes,"ECanbMboxesFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAN_MBOXES ECanbMboxes;; порядок элементов сохраняется. */
volatile struct ECAN_MBOXES ECanbMboxes;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanbLAMRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanbLAMRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanbLAMRegs,"ECanbLAMRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanbLAMRegs,"ECanbLAMRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct LAM_REGS ECanbLAMRegs;; порядок элементов сохраняется. */
volatile struct LAM_REGS ECanbLAMRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanbMOTSRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanbMOTSRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanbMOTSRegs,"ECanbMOTSRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanbMOTSRegs,"ECanbMOTSRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct MOTS_REGS ECanbMOTSRegs;; порядок элементов сохраняется. */
volatile struct MOTS_REGS ECanbMOTSRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECanbMOTORegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECanbMOTORegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECanbMOTORegs,"ECanbMOTORegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECanbMOTORegs,"ECanbMOTORegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct MOTO_REGS ECanbMOTORegs;; порядок элементов сохраняется. */
volatile struct MOTO_REGS ECanbMOTORegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("EPwm1RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("EPwm1RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(EPwm1Regs,"EPwm1RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(EPwm1Regs,"EPwm1RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct EPWM_REGS EPwm1Regs;; порядок элементов сохраняется. */
volatile struct EPWM_REGS EPwm1Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("EPwm2RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("EPwm2RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(EPwm2Regs,"EPwm2RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(EPwm2Regs,"EPwm2RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct EPWM_REGS EPwm2Regs;; порядок элементов сохраняется. */
volatile struct EPWM_REGS EPwm2Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("EPwm3RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("EPwm3RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(EPwm3Regs,"EPwm3RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(EPwm3Regs,"EPwm3RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct EPWM_REGS EPwm3Regs;; порядок элементов сохраняется. */
volatile struct EPWM_REGS EPwm3Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("EPwm4RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("EPwm4RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(EPwm4Regs,"EPwm4RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(EPwm4Regs,"EPwm4RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct EPWM_REGS EPwm4Regs;; порядок элементов сохраняется. */
volatile struct EPWM_REGS EPwm4Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("EPwm5RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("EPwm5RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(EPwm5Regs,"EPwm5RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(EPwm5Regs,"EPwm5RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct EPWM_REGS EPwm5Regs;; порядок элементов сохраняется. */
volatile struct EPWM_REGS EPwm5Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("EPwm6RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("EPwm6RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(EPwm6Regs,"EPwm6RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(EPwm6Regs,"EPwm6RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct EPWM_REGS EPwm6Regs;; порядок элементов сохраняется. */
volatile struct EPWM_REGS EPwm6Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECap1RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECap1RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECap1Regs,"ECap1RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECap1Regs,"ECap1RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAP_REGS ECap1Regs;; порядок элементов сохраняется. */
volatile struct ECAP_REGS ECap1Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECap2RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECap2RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECap2Regs,"ECap2RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECap2Regs,"ECap2RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAP_REGS ECap2Regs;; порядок элементов сохраняется. */
volatile struct ECAP_REGS ECap2Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECap3RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECap3RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECap3Regs,"ECap3RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECap3Regs,"ECap3RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAP_REGS ECap3Regs;; порядок элементов сохраняется. */
volatile struct ECAP_REGS ECap3Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECap4RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECap4RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECap4Regs,"ECap4RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECap4Regs,"ECap4RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAP_REGS ECap4Regs;; порядок элементов сохраняется. */
volatile struct ECAP_REGS ECap4Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECap5RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECap5RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECap5Regs,"ECap5RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECap5Regs,"ECap5RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAP_REGS ECap5Regs;; порядок элементов сохраняется. */
volatile struct ECAP_REGS ECap5Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ECap6RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ECap6RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ECap6Regs,"ECap6RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ECap6Regs,"ECap6RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct ECAP_REGS ECap6Regs;; порядок элементов сохраняется. */
volatile struct ECAP_REGS ECap6Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("EQep1RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("EQep1RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(EQep1Regs,"EQep1RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(EQep1Regs,"EQep1RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct EQEP_REGS EQep1Regs;; порядок элементов сохраняется. */
volatile struct EQEP_REGS EQep1Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("EQep2RegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("EQep2RegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(EQep2Regs,"EQep2RegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(EQep2Regs,"EQep2RegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct EQEP_REGS EQep2Regs;; порядок элементов сохраняется. */
volatile struct EQEP_REGS EQep2Regs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("GpioCtrlRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("GpioCtrlRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(GpioCtrlRegs,"GpioCtrlRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(GpioCtrlRegs,"GpioCtrlRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct GPIO_CTRL_REGS GpioCtrlRegs;; порядок элементов сохраняется. */
volatile struct GPIO_CTRL_REGS GpioCtrlRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("GpioDataRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("GpioDataRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(GpioDataRegs,"GpioDataRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(GpioDataRegs,"GpioDataRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct GPIO_DATA_REGS GpioDataRegs;; порядок элементов сохраняется. */
volatile struct GPIO_DATA_REGS GpioDataRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("GpioIntRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("GpioIntRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(GpioIntRegs,"GpioIntRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(GpioIntRegs,"GpioIntRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct GPIO_INT_REGS GpioIntRegs;; порядок элементов сохраняется. */
volatile struct GPIO_INT_REGS GpioIntRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("I2caRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("I2caRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(I2caRegs,"I2caRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(I2caRegs,"I2caRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct I2C_REGS I2caRegs;; порядок элементов сохраняется. */
volatile struct I2C_REGS I2caRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("McbspaRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("McbspaRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(McbspaRegs,"McbspaRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(McbspaRegs,"McbspaRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct MCBSP_REGS McbspaRegs;; порядок элементов сохраняется. */
volatile struct MCBSP_REGS McbspaRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("McbspbRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("McbspbRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(McbspbRegs,"McbspbRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(McbspbRegs,"McbspbRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct MCBSP_REGS McbspbRegs;; порядок элементов сохраняется. */
volatile struct MCBSP_REGS McbspbRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("PartIdRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("PartIdRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(PartIdRegs,"PartIdRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(PartIdRegs,"PartIdRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct PARTID_REGS PartIdRegs;; порядок элементов сохраняется. */
volatile struct PARTID_REGS PartIdRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("PieCtrlRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("PieCtrlRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(PieCtrlRegs,"PieCtrlRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(PieCtrlRegs,"PieCtrlRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct PIE_CTRL_REGS PieCtrlRegs;; порядок элементов сохраняется. */
volatile struct PIE_CTRL_REGS PieCtrlRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("PieVectTableFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("PieVectTableFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(PieVectTable,"PieVectTableFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(PieVectTable,"PieVectTableFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Описывает структуру PIE_VECT_TABLE PieVectTable;; порядок полей определяет расположение данных. */
struct PIE_VECT_TABLE PieVectTable;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("SciaRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("SciaRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(SciaRegs,"SciaRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(SciaRegs,"SciaRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct SCI_REGS SciaRegs;; порядок элементов сохраняется. */
volatile struct SCI_REGS SciaRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ScibRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ScibRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ScibRegs,"ScibRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ScibRegs,"ScibRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct SCI_REGS ScibRegs;; порядок элементов сохраняется. */
volatile struct SCI_REGS ScibRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("ScicRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("ScicRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(ScicRegs,"ScicRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(ScicRegs,"ScicRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct SCI_REGS ScicRegs;; порядок элементов сохраняется. */
volatile struct SCI_REGS ScicRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("SpiaRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("SpiaRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(SpiaRegs,"SpiaRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(SpiaRegs,"SpiaRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct SPI_REGS SpiaRegs;; порядок элементов сохраняется. */
volatile struct SPI_REGS SpiaRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("SysCtrlRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("SysCtrlRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(SysCtrlRegs,"SysCtrlRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(SysCtrlRegs,"SysCtrlRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct SYS_CTRL_REGS SysCtrlRegs;; порядок элементов сохраняется. */
volatile struct SYS_CTRL_REGS SysCtrlRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("FlashRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("FlashRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(FlashRegs,"FlashRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(FlashRegs,"FlashRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct FLASH_REGS FlashRegs;; порядок элементов сохраняется. */
volatile struct FLASH_REGS FlashRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("XIntruptRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("XIntruptRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(XIntruptRegs,"XIntruptRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(XIntruptRegs,"XIntruptRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct XINTRUPT_REGS XIntruptRegs;; порядок элементов сохраняется. */
volatile struct XINTRUPT_REGS XIntruptRegs;
//----------------------------------------
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+/* Указание компилятору DATA_SECTION("XintfRegsFile"): размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION("XintfRegsFile")
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Указание компилятору DATA_SECTION(XintfRegs,"XintfRegsFile");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(XintfRegs,"XintfRegsFile");
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение volatile struct XINTF_REGS XintfRegs;; порядок элементов сохраняется. */
volatile struct XINTF_REGS XintfRegs;
diff --git a/Source/Internal/ADC.c b/Source/Internal/ADC.c
index 57ac07b..089acf0 100644
--- a/Source/Internal/ADC.c
+++ b/Source/Internal/ADC.c
@@ -1,43 +1,74 @@
+/* Настройка АЦП, обработка преобразований и первичная фильтрация измерений. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
+/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP281x Examples Include File
+/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "ADC.h": настройка АЦП, обработка преобразований и первичная фильтрация измерений. */
#include "ADC.h"
+/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "log_to_mem.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
#include "message.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Объявляет adc_table_lem — АЦП table lem. */
Uint16 adc_table_lem[4];
-Uint16 ADC_table[28]; // Ïîòîìó ÷òî +4 êàëèáð
+/* Объявляет ADC_table — АЦП table. */
+Uint16 ADC_table[28]; // Потому что +4 калибр
+/* Объявляет prev_ok — данные prev_ok. */
Uint16 prev_ok[28];
+/* Объявляет COUNT_ONE_CANAL — число ONE CANAL. */
unsigned int COUNT_ONE_CANAL;
+/* Объявляет COUNT_DISCHARGE — число DISCHARGE. */
unsigned int COUNT_DISCHARGE;
+/* Объявляет COUNT_TRANSICIA — число TRANSICIA. */
unsigned int COUNT_TRANSICIA;
+/* Объявляет FILTER_CLIP — данные FILTER_CLIP. */
unsigned int FILTER_CLIP;
+/* Объявляет WAKE — данные WAKE; WAKE_TIME — данные WAKE_TIME. */
long WAKE, WAKE_TIME;
// Prototype statements for functions found within this file.
+/* Принимает результаты последовательности АЦП и обновляет измерительные фильтры в прерывании. */
interrupt void adc_isr(void);
+/* Настраивает каналы, последовательность преобразований и запуск АЦП. */
void setup_adc()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет CLKdiv — данные CLKdiv; HSPCLKdiv — данные HSPCLKdiv; Rate — данные Rate. */
long CLKdiv,HSPCLKdiv,Rate;
+ /* Объявляет i — данные i. */
int i;
+ /* Условие компиляции (CPU_FRQ_150MHZ): выбранный блок включается в текущий вариант прошивки. */
#if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT
+ /* Задаёт ADC_MODCLK = 0x3; АЦП MODCLK. */
#define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25.0 MHz
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (CPU_FRQ_100MHZ): выбранный блок включается в текущий вариант прошивки. */
#if (CPU_FRQ_100MHZ)
+ /* Задаёт ADC_MODCLK = 0x2; АЦП MODCLK. */
#define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25.0 MHz
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
// Specific clock setting for this example:
@@ -47,247 +78,438 @@ void setup_adc()
// Interrupts that are used in this example are re-mapped to
// ISR functions found within this file.
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW; // This is needed to write to EALLOW protected register
+ /* Записывает PieVectTable.ADCINT значением &adc_isr; данные ADCINT. */
PieVectTable.ADCINT = &adc_isr;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS; // This is needed to disable write to EALLOW protected registers
+ /* Инициализирует модуль вызовом InitAdc(); перед его дальнейшим использованием. */
InitAdc(); // For this example, init the ADC
// Enable ADCINT in PIE
+ /* Записывает PieCtrlRegs.PIEIER1.bit.INTx6 значением 1; данные INTx6. */
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
+ /* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1; // Enable CPU Interrupt 1
// EINT; // Enable Global interrupt INTM
// ERTM; // Enable Global realtime interrupt DBGM
+ /* Цикл for(i=0;i<28;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<28;i++)
+ /* Записывает ADC_table[i] значением ; АЦП table. */
ADC_table[i]=
+ /* Записывает prev_ok[i] значением 0; данные prev_ok. */
prev_ok[i] = 0;
// Configure ADC
- if(Desk==dsk_LOAD)
+ /* Проверяет if(Desk==dsk_LOAD); последующий оператор выполняется только при истинном условии. */
+ if(Desk==dsk_LOAD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает AdcRegs.ADCMAXCONV.bit.MAX_CONV1 значением 0x0005; данные MAX_CONV1. */
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0005; // Setup 2 conv's on SEQ1
- AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x3; // òåìïåðàòóðà (êîòîðîé íåò)
- AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // îìåãà
- AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x5; // íàïðóãà 1
- AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x4; // íàïðóãà 2
- AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x7; // òîê 1
- AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x2; // òîê 2
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV00 значением 0x3; данные CONV00. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x3; // температура (которой нет)
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV01 значением 0x1; данные CONV01. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // омега
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV02 значением 0x5; данные CONV02. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x5; // напруга 1
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV03 значением 0x4; данные CONV03. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x4; // напруга 2
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV04 значением 0x7; данные CONV04. */
+ AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x7; // ток 1
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV05 значением 0x2; данные CONV05. */
+ AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x2; // ток 2
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_BKST); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKST)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает AdcRegs.ADCMAXCONV.bit.MAX_CONV1 значением 0x0002; данные MAX_CONV1. */
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0002; // Setup 2 conv's on SEQ1
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV00 значением 0x0; данные CONV00. */
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; //0x5;//0x7; // Setup ADCINA3 as 1st SEQ1 conv.
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV01 значением 0x1; данные CONV01. */
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; //0x4;// Setup ADCINA2 as 2nd SEQ1 conv.
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV02 значением 0x2; данные CONV02. */
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x2; //0x4;// Setup ADCINA2 as 2nd SEQ1 conv.
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_COMM); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает AdcRegs.ADCMAXCONV.bit.MAX_CONV1 значением 0x0006; данные MAX_CONV1. */
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0006; // Setup 2 conv's on SEQ1
- AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x5; // ñíà÷àëà òîæå áóäóò òåìïåðàòóðû
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV00 значением 0x5; данные CONV00. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x5; // сначала тоже будут температуры
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV01 значением 0x4; данные CONV01. */
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x4; // Setup ADCINA2 as 2nd SEQ1 conv.
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV02 значением 0x7; данные CONV02. */
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x7; // Setup ADCINA2 as 2nd SEQ1 conv.
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV03 значением 0x2; данные CONV03. */
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x2; // Setup ADCINA2 as 2nd SEQ1 conv.
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV04 значением 0x3; данные CONV04. */
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x3; // Setup ADCINA2 as 2nd SEQ1 conv.
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV05 значением 0x6; данные CONV05. */
AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x6; // Setup ADCINA2 as 2nd SEQ1 conv.
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV06 значением 0x1; данные CONV06. */
AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x1; // Setup ADCINA2 as 2nd SEQ1 conv.
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- if(Desk==dsk_BKSD)
+ /* Проверяет if(Desk==dsk_BKSD); последующий оператор выполняется только при истинном условии. */
+ if(Desk==dsk_BKSD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает AdcRegs.ADCMAXCONV.bit.MAX_CONV1 значением 0x0000; данные MAX_CONV1. */
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0000; // Setup 2 conv's on SEQ1
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV00 значением 0x0; данные CONV00. */
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // Setup ADCINA3 as 1st SEQ1 conv.
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- if(Desk==dsk_SHKF)
+ /* Проверяет if(Desk==dsk_SHKF); последующий оператор выполняется только при истинном условии. */
+ if(Desk==dsk_SHKF)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает AdcRegs.ADCMAXCONV.bit.MAX_CONV1 значением 0x000F; данные MAX_CONV1. */
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x000F; // Setup 2 conv's on SEQ1
- AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x2; // 380Â Ô1
- AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x3; // 380Â Ô2
- AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x6; // 31Â Ô1
- AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0xC; // 31Â Ô2 ?
- AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0xA; // 31Â UC1
- AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0xB; // 31Â UC2
- AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x7; // 24Â ÏÓ
- AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x4; // 24Â ÏÓ
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV00 значением 0x2; данные CONV00. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x2; // 380В Ф1
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV01 значением 0x3; данные CONV01. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x3; // 380В Ф2
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV02 значением 0x6; данные CONV02. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x6; // 31В Ф1
+ /* Записывает AdcRegs.ADCCHSELSEQ1.bit.CONV03 значением 0xC; данные CONV03. */
+ AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0xC; // 31В Ф2 ?
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV04 значением 0xA; данные CONV04. */
+ AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0xA; // 31В UC1
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV05 значением 0xB; данные CONV05. */
+ AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0xB; // 31В UC2
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV06 значением 0x7; данные CONV06. */
+ AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x7; // 24В ПУ
+ /* Записывает AdcRegs.ADCCHSELSEQ2.bit.CONV07 значением 0x4; данные CONV07. */
+ AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x4; // 24В ПУ
- AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 0x5; // 24Â ÏÊ áûëî 5
- AdcRegs.ADCCHSELSEQ3.bit.CONV09 = 0x1; // 15Â Äð
- AdcRegs.ADCCHSELSEQ3.bit.CONV10 = 0xE; // +24Â Äò
- AdcRegs.ADCCHSELSEQ3.bit.CONV11 = 0x0; // +24Â Äò
- AdcRegs.ADCCHSELSEQ4.bit.CONV12 = 0x8; // -24Â Äò áûëî 8
+ /* Записывает AdcRegs.ADCCHSELSEQ3.bit.CONV08 значением 0x5; данные CONV08. */
+ AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 0x5; // 24В ПК было 5
+ /* Записывает AdcRegs.ADCCHSELSEQ3.bit.CONV09 значением 0x1; данные CONV09. */
+ AdcRegs.ADCCHSELSEQ3.bit.CONV09 = 0x1; // 15В Др
+ /* Записывает AdcRegs.ADCCHSELSEQ3.bit.CONV10 значением 0xE; данные CONV10. */
+ AdcRegs.ADCCHSELSEQ3.bit.CONV10 = 0xE; // +24В Дт
+ /* Записывает AdcRegs.ADCCHSELSEQ3.bit.CONV11 значением 0x0; данные CONV11. */
+ AdcRegs.ADCCHSELSEQ3.bit.CONV11 = 0x0; // +24В Дт
+ /* Записывает AdcRegs.ADCCHSELSEQ4.bit.CONV12 значением 0x8; данные CONV12. */
+ AdcRegs.ADCCHSELSEQ4.bit.CONV12 = 0x8; // -24В Дт было 8
- AdcRegs.ADCCHSELSEQ4.bit.CONV13 = 0xF;//0xF; // ÄҰ 1
- AdcRegs.ADCCHSELSEQ4.bit.CONV14 = 0xD;//0xD; // ÄҰ 2
+ /* Записывает AdcRegs.ADCCHSELSEQ4.bit.CONV13 значением 0xF; данные CONV13. */
+ AdcRegs.ADCCHSELSEQ4.bit.CONV13 = 0xF;//0xF; // ДТ° 1
+ /* Записывает AdcRegs.ADCCHSELSEQ4.bit.CONV14 значением 0xD; данные CONV14. */
+ AdcRegs.ADCCHSELSEQ4.bit.CONV14 = 0xD;//0xD; // ДТ° 2
+ /* Записывает AdcRegs.ADCCHSELSEQ4.bit.CONV15 значением 0x9; данные CONV15. */
AdcRegs.ADCCHSELSEQ4.bit.CONV15 = 0x9;//0x9;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 значением 1; данные EPWM_SOCA_SEQ1. */
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;// Enable SOCA from ePWM to start SEQ1
+ /* Записывает AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 значением 1; данные INT_ENA_SEQ1. */
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS)
+ /* Записывает AdcRegs.ADCST.bit.INT_SEQ1_CLR значением 1; данные INT_SEQ1_CLR. */
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit
-
+
+ /* Записывает AdcRegs.ADCTRL1.bit.SEQ_CASC значением 1; данные SEQ_CASC. */
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode
+ /* Записывает AdcRegs.ADCTRL1.bit.CONT_RUN значением 0; данные CONT_RUN. */
AdcRegs.ADCTRL1.bit.CONT_RUN=0;
+ /* Записывает AdcRegs.ADCTRL1.bit.ACQ_PS значением 15; данные ACQ_PS. */
AdcRegs.ADCTRL1.bit.ACQ_PS = 15;
//AdcRegs.ADCTRL1.bit.CPS=1;
+ /* Записывает AdcRegs.ADCTRL2.bit.RST_SEQ1 значением 1; данные RST_SEQ1. */
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1
+ /* Записывает PieCtrlRegs.PIEACK.all значением PIEACK_GROUP1; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE
-
+
// Assumes ePWM1 clock is already enabled in InitSysCtrl();
+ /* Записывает EPwm1Regs.ETSEL.bit.SOCAEN значением 1; данные SOCAEN. */
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group
+ /* Записывает EPwm1Regs.ETSEL.bit.SOCASEL значением 4; данные SOCASEL. */
EPwm1Regs.ETSEL.bit.SOCASEL = 4; // Select SOC from from CPMA on upcount
+ /* Записывает EPwm1Regs.ETPS.bit.SOCAPRD значением 1; данные SOCAPRD. */
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event
+ /* Записывает EPwm1Regs.CMPA.half.CMPA значением 0x0080; данные CMPA. */
EPwm1Regs.CMPA.half.CMPA = 0x0080; // Set compare A value
+ /* Записывает EPwm1Regs.TBCTL.bit.HSPCLKDIV значением CLKMULT; данные HSPCLKDIV. */
EPwm1Regs.TBCTL.bit.HSPCLKDIV = CLKMULT;
+ /* Записывает EPwm1Regs.TBCTL.bit.CLKDIV значением 2; данные CLKDIV. */
EPwm1Regs.TBCTL.bit.CLKDIV=2;
+ /* Записывает CLKdiv значением 1<>4; Current_count(i); АЦП table lem. */
adc_table_lem[i] = *((&AdcRegs.ADCRESULT0)+i+2) >>4; Current_count(i);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
- if(Desk==dsk_LOAD)
+ /* Проверяет if(Desk==dsk_LOAD); последующий оператор выполняется только при истинном условии. */
+ if(Desk==dsk_LOAD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает Temper значением AdcRegs.ADCRESULT1 >> 4; данные Temper. */
Temper = AdcRegs.ADCRESULT1 >> 4;
+ /* Записывает modbus[0x63] значением Temper; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[0x63] = Temper;
+ /* Записывает Temper значением filterbat(&adc_filter[0],Temper); данные Temper. */
Temper = filterbat(&adc_filter[0],Temper);
+ /* Записывает modbus[0x1D] значением (Temper-DAC_04)/(DAC_20-DAC_04)*(200-40)+40; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[0x1D] = (Temper-DAC_04)/(DAC_20-DAC_04)*(200-40)+40;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_SHKF); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_SHKF)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Цикл for(i=0;i=tpl_cans) cownt_cans=0; последующий оператор выполняется только при истинном условии. */
if (++cownt_cans>=tpl_cans) cownt_cans=0;
-// Èìåííî çäåñü íåò äûð
+// Именно здесь нет дыр
// if(sens_type[cownt_cans])
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Изменяет счётчик в выражении i++; на один для следующего шага. */
i++;
+ /* Записывает Temper значением *(&AdcRegs.ADCRESULT0 + cownt_cans) >>4; данные Temper. */
Temper= *(&AdcRegs.ADCRESULT0 + cownt_cans) >>4;
+ /* Записывает ADC_table[cownt_cans] значением filterbat(&adc_filter[cownt_cans],Temper); АЦП table. */
ADC_table[cownt_cans]=filterbat(&adc_filter[cownt_cans],Temper);
+ /* Проверяет if(sens_type[cownt_cans]==TERMO_AD) Temper_count(cownt_cans,0); последующий оператор выполняется только при истинном условии. */
if(sens_type[cownt_cans]==TERMO_AD) Temper_count(cownt_cans,0);
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else Power_count(cownt_cans);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} } }
+ /* Проверяет if(TermoSW); последующий оператор выполняется только при истинном условии. */
if(TermoSW)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(cownt_one_canal==COUNT_DISCHARGE); последующий оператор выполняется только при истинном условии. */
if(cownt_one_canal==COUNT_DISCHARGE)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает code_tpl_canal значением cownt_cans; данные code_tpl_canal. */
code_tpl_canal = cownt_cans;
+ /* Проверяет if(TermoAD); последующий оператор выполняется только при истинном условии. */
if(TermoAD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(cownt_cans == TPL_CANS ) code_tpl_canal = TERMOPAIR-1; последующий оператор выполняется только при истинном условии. */
if(cownt_cans == TPL_CANS ) code_tpl_canal = TERMOPAIR-1;
- if(cownt_cans == TPL_CANS+1) code_tpl_canal = TERMOPAIR-2; // ïîòîìó ÷òî 300 è 400 íàîáîðîò
+ /* Проверяет if(cownt_cans == TPL_CANS+1) code_tpl_canal = TERMOPAIR-2; последующий оператор выполняется только при истинном условии. */
+ if(cownt_cans == TPL_CANS+1) code_tpl_canal = TERMOPAIR-2; // потому что 300 и 400 наоборот
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает select_tpl_canal с аргументами (code_tpl_canal) в текущей последовательности операций. */
select_tpl_canal(code_tpl_canal);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(cownt_one_canal > COUNT_TRANSICIA); последующий оператор выполняется только при истинном условии. */
if(cownt_one_canal > COUNT_TRANSICIA)
+ /* Цикл for(i=0;i>4; данные Temper. */
Temper = *(&AdcRegs.ADCRESULT0 + i) >>4;
+ /* Записывает ok значением abs(ADC_table[n]-Temper) < FILTER_CLIP; данные ok. */
ok = abs(ADC_table[n]-Temper) < FILTER_CLIP;
+ /* Проверяет if(ok) cwnt_ok[i]++; последующий оператор выполняется только при истинном условии. */
if(ok) cwnt_ok[i]++;
+ /* Проверяет if(ok|!prev_ok[n]); последующий оператор выполняется только при истинном условии. */
if(ok|!prev_ok[n])
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает Filter значением filterbat(&adc_filter[n],Temper); данные Filter. */
Filter = filterbat(&adc_filter[n],Temper);
-
+
+ /* Проверяет if(WAKE)ADC_table[n] = Temper; последующий оператор выполняется только при истинном условии. */
if(WAKE)ADC_table[n] = Temper;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else ADC_table[n] = Filter;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/*
if(cownt_cans == TPL_CANS)
@@ -303,36 +525,59 @@ for(i=0;i<1;i++)
}
}
*/
+ /* Проверяет if(++cownt_one_canal>=COUNT_ONE_CANAL); последующий оператор выполняется только при истинном условии. */
if(++cownt_one_canal>=COUNT_ONE_CANAL)
+ /* Записывает cownt_one_canal значением 0; данные cownt_one_canal. */
{ cownt_one_canal=0;
+ /* Вызывает select_tpl_255 с аргументами () в текущей последовательности операций. */
select_tpl_255();
+ /* Цикл for(i=0;i= TPL_CANS+2); последующий оператор выполняется только при истинном условии. */
if(++cownt_cans >= TPL_CANS+2)
+ /* Записывает cownt_cans значением 0; данные cownt_cans. */
{ cownt_cans=0;
+ /* Цикл for(i=0;i>= 1) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 3; i++, address++, mask >>= 1) {
+ /* Проверяет if ((header & mask) и address == selected); последующий оператор выполняется только при истинном условии. */
if ((header & mask) && address == selected) {
+ /* Записывает load_voltage значением data[i]; последнее выбранное напряжение CAN, масштаб 1 В на слово. */
load_voltage = data[i];
+ /* Записывает load_voltage_age значением 0; возраст последнего достоверного выбранного напряжения CAN в миллисекундах. */
load_voltage_age = 0;
+ /* Записывает load_voltage_seen значением 1; признак получения выбранного измерения напряжения CAN. */
load_voltage_seen = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* STOP óäåðæèâàåòñÿ âåñü ñáðîñ, âêëþ÷àÿ îòïðàâêó êîäà 4 ìÀ â ÖÀÏ.
- * Ïîâòîðíûé ïóñê ðàçðåø¸í òîëüêî ïîñëå ýòîé îòïðàâêè è 1000 ìñ STOP.
- * Ýòî ïîäòâåðæäåíèå ïðîãðàììíîé îòïðàâêè, íå èçìåðåíèå ôèçè÷åñêîãî òîêà. */
+/* STOP удерживается весь сброс, включая отправку кода 4 мА в ЦАП.
+ * Повторный пуск разрешён только после этой отправки и 1000 мс STOP.
+ * Это подтверждение программной отправки, не измерение физического тока. */
+/* Снимает START и разрешение нагрузки, удерживает STOP 1000 мс и сбрасывает состояние нарастания тока. */
static void load_stop(unsigned int state)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Сбрасывает аппаратный сигнал через clear_START_DPTB();. */
clear_START_DPTB();
+ /* Устанавливает аппаратный сигнал через set_STOP_DPTB();. */
set_STOP_DPTB();
+ /* Сбрасывает аппаратный сигнал через clear_RES_OUT_2();. */
clear_RES_OUT_2();
+ /* Записывает load_stop_asserted значением 1; признак установленного выхода STOP. */
load_stop_asserted = 1;
+ /* Записывает load_state значением state; текущее состояние автомата нагрузки. */
load_state = state;
+ /* Записывает load_count_ramp значением 0; load число ramp. */
load_count_ramp = 0;
+ /* Записывает load_zero_sent значением 0; данные load_zero_sent. */
load_zero_sent = 0;
+ /* Записывает IMPowse значением LOAD_PULSE_MS; данные IMPowse. */
IMPowse = LOAD_PULSE_MS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Ограничивает начальный и конечный ток, снимает STOP, выдаёт START и считает новую попытку пуска. */
static void load_start(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- /* Óñòàâêè ôèêñèðóþòñÿ äëÿ êàæäîé ïîïûòêè. Âíóòðåííèé íîëü = 4 ìÀ.
- * Èñïðàâëåíà îïå÷àòêà ñòàðîãî îãðàíè÷åíèÿ: îãðàíè÷èâàåì êîíåö ðàìïû,
- * à íå çàìåíÿåì íà÷àëüíóþ óñòàâêó íà 16 (÷òî äàâàëî ñêà÷îê äî 20 ìÀ). */
+ /* Уставки фиксируются для каждой попытки. Внутренний ноль = 4 мА.
+ * Исправлена опечатка старого ограничения: ограничиваем конец рампы,
+ * а не заменяем начальную уставку на 16 (что давало скачок до 20 мА). */
+ /* Записывает load_go значением (float)DAC_go - 4.0; начальный ток за вычетом базовых 4 мА, ограниченный диапазоном 0..5. */
load_go = (float)DAC_go - 4.0;
+ /* Записывает load_end значением (float)DAC_stop - 4.0; конечный ток за вычетом 4 мА, ограниченный сверху значением 16. */
load_end = (float)DAC_stop - 4.0;
+ /* Проверяет if (load_go < 0) load_go = 0; последующий оператор выполняется только при истинном условии. */
if (load_go < 0) load_go = 0;
+ /* Проверяет if (load_go > 5) load_go = 5; последующий оператор выполняется только при истинном условии. */
if (load_go > 5) load_go = 5;
+ /* Проверяет if (load_end > 16) load_end = 16; последующий оператор выполняется только при истинном условии. */
if (load_end > 16) load_end = 16;
+ /* Проверяет if (load_end <= load_go) load_end = load_go + 1; последующий оператор выполняется только при истинном условии. */
if (load_end <= load_go) load_end = load_go + 1;
+ /* Записывает ump_dac_go10 значением (unsigned int)((load_go + 4.0) * 10.0); ump ЦАП go 10. */
ump_dac_go10 = (unsigned int)((load_go + 4.0) * 10.0);
+ /* Записывает ump_dac_stop10 значением (unsigned int)((load_end + 4.0) * 10.0); ump ЦАП stop 10. */
ump_dac_stop10 = (unsigned int)((load_end + 4.0) * 10.0);
+ /* Записывает load_count_ramp значением 0; load число ramp. */
load_count_ramp = 0;
+ /* Изменяет счётчик в выражении load_attempts++; на один для следующего шага. */
load_attempts++;
- /* STOP îòïóñêàåì íåïîñðåäñòâåííî ïåðåä START, ðàçðåøåíèå — ïîñëå íåãî.
- * Çàäàíèå îñòà¸òñÿ 4 ìÀ äî ïåðâîãî øàãà íîâîé ðàìïû. */
+ /* STOP отпускаем непосредственно перед START, разрешение — после него.
+ * Задание остаётся 4 мА до первого шага новой рампы. */
+ /* Сбрасывает аппаратный сигнал через clear_STOP_DPTB();. */
clear_STOP_DPTB();
+ /* Записывает load_stop_asserted значением 0; признак установленного выхода STOP. */
load_stop_asserted = 0;
+ /* Устанавливает аппаратный сигнал через set_START_DPTB();. */
set_START_DPTB();
+ /* Устанавливает аппаратный сигнал через set_RES_OUT_2();. */
set_RES_OUT_2();
+ /* Записывает IMPowse значением LOAD_PULSE_MS; данные IMPowse. */
IMPowse = LOAD_PULSE_MS;
+ /* Записывает load_state значением LOAD_RUN; текущее состояние автомата нагрузки. */
load_state = LOAD_RUN;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Вычисляет такты ЦАП; для недопустимого сохранённого тайм-аута CAN возвращает 600 мс. */
void Setup_DAC_time(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает WAKEpowse значением 3L * DAC_FREQ +1; данные WAKEpowse. */
WAKEpowse = 3L * DAC_FREQ +1;
+ /* Записывает period_dac значением READY_FREQ / DAC_FREQ; период ЦАП. */
period_dac = READY_FREQ / DAC_FREQ;
+ /* Записывает time_dac значением LOAD_TIME * DAC_FREQ; time ЦАП. */
time_dac = LOAD_TIME * DAC_FREQ;
- /* Ñòàðûå EEPROM èìåþò íîëü â íîâîì ïàðàìåòðå: èñïîëüçóåì 600 ìñ.
- * 1..60000 ìñ ìîæíî ìåíÿòü ÷åðåç ðåãèñòð 0x52 è ñîõðàíÿòü øòàòíî. */
+ /* Старые EEPROM имеют ноль в новом параметре: используем 600 мс.
+ * 1..60000 мс можно менять через регистр 0x52 и сохранять штатно. */
+ /* Проверяет if ((unsigned int)LOAD_CAN_TIMEOUT == 0U или; последующий оператор выполняется только при истинном условии. */
if ((unsigned int)LOAD_CAN_TIMEOUT == 0U ||
+ /* Записывает LOAD_CAN_TIMEOUT значением 600; сохраняемый тайм-аут свежести напряжения CAN в миллисекундах, регистр 0x52. */
(unsigned int)LOAD_CAN_TIMEOUT > 60000U) LOAD_CAN_TIMEOUT = 600;
+ /* Записывает LOAD_STATUS значением 0; LOAD_ATTEMPTS = 0; слово состояния защиты нагрузки для чтения, регистр 0x7C. */
LOAD_STATUS = 0; LOAD_ATTEMPTS = 0;
+ /* Записывает load_initialized значением 1; данные load_initialized. */
load_initialized = 1;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию dOUT; назначение модуля — выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
void dOUT(int x)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(x) GpioDataRegs.GPBSET.bit.GPIO60=1; последующий оператор выполняется только при истинном условии. */
if(x) GpioDataRegs.GPBSET.bit.GPIO60=1;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else GpioDataRegs.GPBCLEAR.bit.GPIO60=1;
-}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+/* Начинает функцию wast; назначение модуля — выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
void wast()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i. */
int i;
+ /* Цикл for(i=0;i<25;i++);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<25;i++);
-}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+/* Начинает функцию dSEND; назначение модуля — выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
void dSEND(unsigned int word)
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Объявляет i — данные i. */
int i;
+ /* Вызывает dCS_0 с аргументами (); DSP28x_usDelay(1L) в текущей последовательности операций. */
dCS_0(); DSP28x_usDelay(1L);
+ /* Цикл for(i=0;i<16;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<16;i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает dCLK_1 с аргументами () в текущей последовательности операций. */
dCLK_1();
+ /* Записывает word значением word<<1; DSP28x_usDelay(1L); слово. */
dOUT((word & 0x8000)?1:0); word = word<<1; DSP28x_usDelay(1L);
+ /* Вызывает dCLK_0 с аргументами (); DSP28x_usDelay(1L) в текущей последовательности операций. */
dCLK_0(); DSP28x_usDelay(1L);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает dCS_1 с аргументами () в текущей последовательности операций. */
dCS_1();
-}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+/* Начинает функцию Init_DAC; назначение модуля — выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
void Init_DAC(void)
-{
- dSEND(0x9002|0x0000);
- toggle_RES_OUT_1();
-}
-
-static void anal_output(long vrot, long maxx, int calibration)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает dSEND с аргументами (0x9002|0x0000) в текущей последовательности операций. */
+ dSEND(0x9002|0x0000);
+ /* Переключает аппаратный сигнал через toggle_RES_OUT_1();. */
+ toggle_RES_OUT_1();
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+
+/* Начинает функцию anal_output; назначение модуля — выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
+static void anal_output(long vrot, long maxx, int calibration)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Объявляет out — данные out. */
long out;
+ /* Объявляет x — данные x. */
static int x;
+ /* Записывает out значением DAC_min() + vrot * DAC_max() / maxx - vrot * DAC_min() / maxx ; данные out. */
out = DAC_min() + vrot * DAC_max() / maxx - vrot * DAC_min() / maxx ;
- x=0;// !x; òùåòíî áûòèå
+ /* Записывает x значением 0; данные x. */
+ x=0;// !x; тщетно бытие
+ /* Проверяет if(calibration и cCalibrDac) out=DAC_cal(); последующий оператор выполняется только при истинном условии. */
if(calibration && cCalibrDac) out=DAC_cal();
+ /* Записывает out значением out & 0xFFF; данные out. */
out = out & 0xFFF;
- if(x) dSEND(out|0x0000|0x0000);
+ /* Проверяет if(x) dSEND(out|0x0000|0x0000); последующий оператор выполняется только при истинном условии. */
+ if(x) dSEND(out|0x0000|0x0000);
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else dSEND(out|0x8000|0x0000);
- modbus[123] = out;
+ /* Записывает modbus[123] значением out; массив технологических регистров; слово int на C28x занимает 16 бит. */
+ modbus[123] = out;
- modbus[0x1C] = 40L + vrot * 200 / maxx - vrot * 40 / maxx ;
+ /* Записывает modbus[0x1C] значением 40L + vrot * 200 / maxx - vrot * 40 / maxx ; массив технологических регистров; слово int на C28x занимает 16 бит. */
+ modbus[0x1C] = 40L + vrot * 200 / maxx - vrot * 40 / maxx ;
/*
if(!no_write)
@@ -195,117 +334,197 @@ Log_to_mem(modbus[0x1D]);
*/
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Ñîõðàí¸í ïóáëè÷íûé èíòåðôåéñ; çàùèòíûé ñáðîñ âûçûâàåò âíóòðåííþþ
- * ôóíêöèþ ñ calibration=0, ÷òîáû ðó÷íàÿ êàëèáðîâêà íå ïîäìåíèëà 4 ìÀ. */
+/* Сохранён публичный интерфейс; защитный сброс вызывает внутреннюю
+ * функцию с calibration=0, чтобы ручная калибровка не подменила 4 мА. */
+/* Начинает функцию Anal_output; назначение модуля — выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
void Anal_output(long vrot, long maxx)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if (maxx > 0) anal_output(vrot, maxx, 1); последующий оператор выполняется только при истинном условии. */
if (maxx > 0) anal_output(vrot, maxx, 1);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* В такте Timer1 проверяет команды, напряжение и давность CAN; управляет STOP, повторным пуском и током ЦАП. */
void Load_runner(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved; commands — данные commands; voltage — данные voltage; fresh — данные fresh; timeout — данные timeout. */
unsigned int saved, commands, voltage, fresh, timeout;
+ /* Объявляет start — данные start; reset — сброс; active — данные active. Начальное значение задаётся справа от знака равенства. */
unsigned int start, reset, active = 0;
+ /* Объявляет sinus — данные sinus. Начальное значение задаётся справа от знака равенства. */
float sinus = 0;
- /* ISR ðàáîòàåò 1 êÃö, íî GPIO/ÖÀÏ íåëüçÿ îáñëóæèâàòü äî çàãðóçêè
- * ïàðàìåòðîâ. Ýòî òàêæå èñêëþ÷àåò ïðåæíåå äåëåíèå íà time_dac=0. */
+ /* ISR работает 1 кГц, но GPIO/ЦАП нельзя обслуживать до загрузки
+ * параметров. Это также исключает прежнее деление на time_dac=0. */
+ /* Проверяет if (!load_initialized или !READY или !period_dac или !time_dac) return; последующий оператор выполняется только при истинном условии. */
if (!load_initialized || !READY || !period_dac || !time_dac) return;
+ /* Записывает saved значением __disable_interrupts(); данные saved. */
saved = __disable_interrupts();
+ /* Записывает commands значением (unsigned int)Commands; данные commands. */
commands = (unsigned int)Commands;
+ /* Записывает voltage значением (load_simulation & 2U) ? 0U : load_voltage; данные voltage. */
voltage = (load_simulation & 2U) ? 0U : load_voltage;
+ /* Записывает timeout значением (unsigned int)LOAD_CAN_TIMEOUT; данные timeout. */
timeout = (unsigned int)LOAD_CAN_TIMEOUT;
+ /* Проверяет if (!timeout или timeout > 60000U) timeout = 600U; последующий оператор выполняется только при истинном условии. */
if (!timeout || timeout > 60000U) timeout = 600U;
- /* Äî ïåðâîãî ïàêåòà çíà÷åíèå 0 íå ñ÷èòàåòñÿ ñâåæèì èçìåðåíèåì.
- * Íàñûùåíèå âîçðàñòà èñêëþ÷àåò ëîæíîå âîññòàíîâëåíèå ïîñëå ïåðåïîëíåíèÿ. */
+ /* До первого пакета значение 0 не считается свежим измерением.
+ * Насыщение возраста исключает ложное восстановление после переполнения. */
+ /* Записывает fresh значением load_voltage_seen && load_voltage_age < timeout; данные fresh. */
fresh = load_voltage_seen && load_voltage_age < timeout;
+ /* Проверяет if (load_voltage_age < 65535U) load_voltage_age++; последующий оператор выполняется только при истинном условии. */
if (load_voltage_age < 65535U) load_voltage_age++;
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+ /* Записывает start значением commands & 0x80U; reset = commands & 0x40U; данные start. */
start = commands & 0x80U; reset = commands & 0x40U;
+ /* Проверяет if (IMPowse) IMPowse--; последующий оператор выполняется только при истинном условии. */
if (IMPowse) IMPowse--;
- /* Îòñóòñòâèå êîìàíäû ïóñêà — íà÷àëî íîâîãî ñåàíñà, ñáðàñûâàåò îøèáêó.
- * RESET âñåãäà ñòàðøå START; îòïóñêàíèå RESET ïðè îñòàâøåìñÿ START
- * íå äà¸ò íåîæèäàííîãî ïîâòîðíîãî ïóñêà: ñíà÷àëà òðåáóåòñÿ START=0. */
+ /* Отсутствие команды пуска — начало нового сеанса, сбрасывает ошибку.
+ * RESET всегда старше START; отпускание RESET при оставшемся START
+ * не даёт неожиданного повторного пуска: сначала требуется START=0. */
+ /* Проверяет if (!start); последующий оператор выполняется только при истинном условии. */
if (!start) {
+ /* Проверяет if (load_state != LOAD_IDLE) load_stop(LOAD_IDLE); последующий оператор выполняется только при истинном условии. */
if (load_state != LOAD_IDLE) load_stop(LOAD_IDLE);
+ /* Записывает load_attempts значением 0; load_inhibit = 0; накопленное число пусков в текущем цикле, максимум пять. */
load_attempts = 0; load_inhibit = 0;
+ /* Проверяет else if (reset); последующий оператор выполняется только при истинном условии. */
} else if (reset) {
+ /* Проверяет if (load_state != LOAD_FAULT и load_state != LOAD_IDLE); последующий оператор выполняется только при истинном условии. */
if (load_state != LOAD_FAULT && load_state != LOAD_IDLE)
+ /* Вызывает load_stop. Снимает START и разрешение нагрузки, удерживает STOP 1000 мс и сбрасывает состояние нарастания тока. */
load_stop(LOAD_IDLE);
+ /* Записывает load_inhibit значением 1; признак запрета повторного запуска до требуемого перехода входов. */
load_inhibit = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (reset и !load_stop_asserted) load_stop(LOAD_IDLE); последующий оператор выполняется только при истинном условии. */
if (reset && !load_stop_asserted) load_stop(LOAD_IDLE);
- /* Ïîâòîðíûé START äîïóñêàåòñÿ ïîñëå ñáðîñà ÖÀÏ, îêîí÷àíèÿ STOP è
- * âîññòàíîâëåíèÿ íóæíîãî CAN-íàïðÿæåíèÿ. Òàéìàóò ñàì íå òðàòèò ïîïûòêó. */
+ /* Повторный START допускается после сброса ЦАП, окончания STOP и
+ * восстановления нужного CAN-напряжения. Таймаут сам не тратит попытку. */
+ /* Проверяет if (start и !reset и !load_inhibit и !WAKEpowse и fresh и; последующий оператор выполняется только при истинном условии. */
if (start && !reset && !load_inhibit && !WAKEpowse && fresh &&
+ /* Продолжает список аргументов, полей или выражение load_zero_sent && !IMPowse &&; порядок элементов сохраняется. */
load_zero_sent && !IMPowse &&
+ /* Продолжает список аргументов, полей или выражение (load_state == LOAD_IDLE || load_state == LOAD_RELOAD)) load_start();; порядок элементов сохраняется. */
(load_state == LOAD_IDLE || load_state == LOAD_RELOAD)) load_start();
+ /* Проверяет if (load_state == LOAD_RUN и !IMPowse) clear_START_DPTB(); последующий оператор выполняется только при истинном условии. */
if (load_state == LOAD_RUN && !IMPowse) clear_START_DPTB();
+ /* Проверяет if (++load_count_dac >= period_dac); последующий оператор выполняется только при истинном условии. */
if (++load_count_dac >= period_dac) {
+ /* Записывает load_count_dac значением 0; load число ЦАП. */
load_count_dac = 0;
+ /* Проверяет if (WAKEpowse); последующий оператор выполняется только при истинном условии. */
if (WAKEpowse) {
+ /* Элемент постоянной таблицы --WAKEpowse;; порядок значений совпадает с порядком индексов потребителя. */
--WAKEpowse;
+ /* Проверяет if (WAKEpowse и !(WAKEpowse % (DAC_FREQ / 2))); последующий оператор выполняется только при истинном условии. */
if (WAKEpowse && !(WAKEpowse % (DAC_FREQ / 2))) {
+ /* Записывает load_init_count значением 1; load init число. */
Init_DAC(); load_init_count = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else {
+ /* Записывает active значением load_state == LOAD_RUN; данные active. */
active = load_state == LOAD_RUN;
+ /* Проверяет if (active); последующий оператор выполняется только при истинном условии. */
if (active) {
- /* Ïðè òàéìàóòå ñîõðàíÿåì ïîëîæåíèå È îòïðàâëåííîå çàäàíèå,
- * íå äåëàåì STOP è íå ïðîäîëæàåì ðàçãîí áåç îáðàòíîé ñâÿçè. */
+ /* При таймауте сохраняем положение И отправленное задание,
+ * не делаем STOP и не продолжаем разгон без обратной связи. */
+ /* Проверяет if (fresh); последующий оператор выполняется только при истинном условии. */
if (fresh) {
+ /* Проверяет if (load_count_ramp > time_dac / 2) load_count_ramp++; последующий оператор выполняется только при истинном условии. */
if (load_count_ramp > time_dac / 2) load_count_ramp++;
+ /* Проверяет if (++load_count_ramp > time_dac) load_count_ramp = time_dac; последующий оператор выполняется только при истинном условии. */
if (++load_count_ramp > time_dac) load_count_ramp = time_dac;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает sinus значением ((load_end - load_go) / 16.0 * load_count_ramp) +; данные sinus. */
sinus = ((load_end - load_go) / 16.0 * load_count_ramp) +
+ /* Продолжает список аргументов, полей или выражение (load_go / 16.0 * time_dac);; порядок элементов сохраняется. */
(load_go / 16.0 * time_dac);
- /* Ïðîâåðÿåì ñëåäóþùèé øàã ÄÎ ïåðåäà÷è ÖÀÏ. 6 ìÀ äîïóñòèìû,
- * ñòðîãî >6 ìÀ è <30  òðåáóþò íåìåäëåííîãî STOP.
- * Ïåðâàÿ ïîïûòêà âõîäèò â ëèìèò 5; øåñòîãî START íå áóäåò. */
+ /* Проверяем следующий шаг ДО передачи ЦАП. 6 мА допустимы,
+ * строго >6 мА и <30 В требуют немедленного STOP.
+ * Первая попытка входит в лимит 5; шестого START не будет. */
+ /* Проверяет if (fresh и voltage < LOAD_VOLTAGE_MIN и; последующий оператор выполняется только при истинном условии. */
if (fresh && voltage < LOAD_VOLTAGE_MIN &&
+ /* Продолжает список аргументов, полей или выражение sinus * 16.0 > 2.0 * time_dac) {; порядок элементов сохраняется. */
sinus * 16.0 > 2.0 * time_dac) {
+ /* Вызывает load_stop. Снимает START и разрешение нагрузки, удерживает STOP 1000 мс и сбрасывает состояние нарастания тока. */
load_stop(load_attempts >= LOAD_MAX_ATTEMPTS ?
+ /* Продолжает список аргументов, полей или выражение LOAD_FAULT : LOAD_RELOAD);; порядок элементов сохраняется. */
LOAD_FAULT : LOAD_RELOAD);
+ /* Записывает active значением 0; sinus = 0; данные active. */
active = 0; sinus = 0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else {
+ /* Записывает load_count_ramp значением 0; load число ramp. */
load_count_ramp = 0;
+ /* Записывает load_init_count значением (load_init_count + 1) & 0x3FFU; load init число. */
load_init_count = (load_init_count + 1) & 0x3FFU;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- /* Âî âðåìÿ çàùèòû è ïóñêà ðó÷íîé êîä êàëèáðîâêè çàïðåù¸í.
- * Êàëèáðîâêà ñîõðàíåíà òîëüêî ïðè ñíÿòîì START è ñâîáîäíîì STOP.
- * Íóëåâîé êîä çàäàíèÿ çäåñü îçíà÷àåò òîê 4 ìÀ ïî DAC_min(). */
+ /* Во время защиты и пуска ручной код калибровки запрещён.
+ * Калибровка сохранена только при снятом START и свободном STOP.
+ * Нулевой код задания здесь означает ток 4 мА по DAC_min(). */
+ /* Записывает ump_dac_ramp значением load_count_ramp; ump ЦАП ramp. */
ump_dac_ramp = load_count_ramp;
+ /* Записывает ump_dac_duration значением time_dac; ump ЦАП duration. */
ump_dac_duration = time_dac;
+ /* Записывает ump_dac_position значением (unsigned int)sinus; ump ЦАП position. */
ump_dac_position = (unsigned int)sinus;
+ /* Проверяет if (active и !fresh); последующий оператор выполняется только при истинном условии. */
if (active && !fresh) {
- /* Óäåðæèâàåì ÖÀÏ. Äàæå cInitDac íå ìåíÿåò òîê â ïàóçå CAN. */
+ /* Удерживаем ЦАП. Даже cInitDac не меняет ток в паузе CAN. */
+ /* Проверяет else if ((!load_init_count или cInitDac) и !load_stop_asserted); последующий оператор выполняется только при истинном условии. */
} else if ((!load_init_count || cInitDac) && !load_stop_asserted) {
+ /* Записывает load_init_count значением 1; cInitDac = 0; load init число. */
Init_DAC(); load_init_count = 1; cInitDac = 0;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else {
+ /* Вызывает anal_output с аргументами ((int)sinus, time_dac, в текущей последовательности операций. */
anal_output((int)sinus, time_dac,
+ /* Продолжает список аргументов, полей или выражение !start && !load_stop_asserted);; порядок элементов сохраняется. */
!start && !load_stop_asserted);
/* A manual calibration frame is not a confirmed 4 mA reload.
* START must wait for a forced baseline frame after it. */
+ /* Проверяет if (!active) load_zero_sent = !(!start и !load_stop_asserted и cCalibrDac); последующий оператор выполняется только при истинном условии. */
if (!active) load_zero_sent = !(!start && !load_stop_asserted && cCalibrDac);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- /* Äèàãíîñòèêà äîñòóïíà îáû÷íûì Modbus/CAN, íåçàâèñèìî îò ëîããåðà:
- * áèò 0 — îøèáêà ïÿòè ïóñêîâ; áèò 1 — íåò ñâåæåãî íàïðÿæåíèÿ;
- * áèò 2 — ñáðîñ ïåðåä ïîâòîðîì; áèò 3 — ðàáîòà ðàìïû.
- * Îøèáêà óäåðæèâàåòñÿ ñî STOP, ïîêà îïåðàòîð íå ñíèìåò START. */
+ /* Диагностика доступна обычным Modbus/CAN, независимо от логгера:
+ * бит 0 — ошибка пяти пусков; бит 1 — нет свежего напряжения;
+ * бит 2 — сброс перед повтором; бит 3 — работа рампы.
+ * Ошибка удерживается со STOP, пока оператор не снимет START. */
+ /* Записывает LOAD_STATUS значением (load_state == LOAD_FAULT ? 1U : 0U) |; слово состояния защиты нагрузки для чтения, регистр 0x7C. */
LOAD_STATUS = (load_state == LOAD_FAULT ? 1U : 0U) |
+ /* Продолжает список аргументов, полей или выражение (!fresh ? 2U : 0U) |; порядок элементов сохраняется. */
(!fresh ? 2U : 0U) |
+ /* Продолжает список аргументов, полей или выражение (load_state == LOAD_RELOAD ? 4U : 0U) |; порядок элементов сохраняется. */
(load_state == LOAD_RELOAD ? 4U : 0U) |
+ /* Продолжает список аргументов, полей или выражение (load_state == LOAD_RUN ? 8U : 0U) |; порядок элементов сохраняется. */
(load_state == LOAD_RUN ? 8U : 0U) |
+ /* Продолжает список аргументов, полей или выражение (load_simulation << 4);; порядок элементов сохраняется. */
(load_simulation << 4);
+ /* Записывает LOAD_ATTEMPTS значением load_attempts; число попыток пуска для чтения, регистр 0x7D. */
LOAD_ATTEMPTS = load_attempts;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/* Local versioned block, shared by RTU and service CAN. Probe its signature
@@ -313,29 +532,55 @@ void Load_runner(void)
* Simulation is RAM-only, zeroed at boot, and never copied into EEPROM.
* bit 0 ignores ZPT reception (age reaches the configured timeout);
* bit 1 substitutes 0 V only for protection, leaving real logged CAN intact. */
+/* Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
unsigned int Load_protection_prepare(unsigned int function, unsigned int address,
+ /* Объявляет value — данные value; out — данные out. Хранит указатель на данные. */
unsigned int value, unsigned int *out, unsigned int *error)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved. Начальное значение задаётся справа от знака равенства. */
unsigned int saved = __disable_interrupts();
+ /* Записывает error значением 2; ошибка. */
*error = 2;
+ /* Проверяет if (Desk == dsk_LOAD и address == 0x1300U и function == 3 и value == 8); последующий оператор выполняется только при истинном условии. */
if (Desk == dsk_LOAD && address == 0x1300U && function == 3 && value == 8) {
+ /* Записывает out[0] значением 0x5550U; out[1] = 1; данные out. */
out[0] = 0x5550U; out[1] = 1;
+ /* Записывает out[2] значением load_simulation; out[3] = (unsigned int)LOAD_CAN_TIMEOUT; данные out. */
out[2] = load_simulation; out[3] = (unsigned int)LOAD_CAN_TIMEOUT;
+ /* Записывает out[4] значением (unsigned int)LOAD_STATUS; out[5] = load_attempts; данные out. */
out[4] = (unsigned int)LOAD_STATUS; out[5] = load_attempts;
+ /* Записывает out[6] значением load_voltage; out[7] = load_voltage_seen ? load_voltage_age : 65535U; данные out. */
out[6] = load_voltage; out[7] = load_voltage_seen ? load_voltage_age : 65535U;
+ /* Записывает error значением 0; ошибка. */
*error = 0;
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+ /* Завершает Load_protection_prepare и возвращает 8. */
return 8;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (Desk == dsk_LOAD и function == 6); последующий оператор выполняется только при истинном условии. */
if (Desk == dsk_LOAD && function == 6) {
+ /* Проверяет if (address == 0x1302U и value <= 3U); последующий оператор выполняется только при истинном условии. */
if (address == 0x1302U && value <= 3U) {
+ /* Записывает load_simulation значением value; данные load_simulation. */
load_simulation = value;
+ /* Записывает error значением 0; ошибка. */
*error = 0;
+ /* Проверяет else if (address == 0x1303U и value >= 1U и value <= 60000U); последующий оператор выполняется только при истинном условии. */
} else if (address == 0x1303U && value >= 1U && value <= 60000U) {
+ /* Записывает LOAD_CAN_TIMEOUT значением value; *error = 0; сохраняемый тайм-аут свежести напряжения CAN в миллисекундах, регистр 0x52. */
LOAD_CAN_TIMEOUT = value; *error = 0;
+ /* Проверяет else if (address == 0x1302U или address == 0x1303U) *error = 3; последующий оператор выполняется только при истинном условии. */
} else if (address == 0x1302U || address == 0x1303U) *error = 3;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает out[0] значением address; out[1] = value; данные out. */
out[0] = address; out[1] = value;
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+ /* Завершает Load_protection_prepare и возвращает 2. */
return 2;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/Include/ADC.h b/Source/Internal/Include/ADC.h
index ff176ab..581bf2e 100644
--- a/Source/Internal/Include/ADC.h
+++ b/Source/Internal/Include/ADC.h
@@ -1,8 +1,13 @@
+/* Настройка АЦП, обработка преобразований и первичная фильтрация измерений. Русские пояснения сохранены в UTF-8. */
+/* Объявляет adc_table_lem — АЦП table lem. Память определена в другом модуле. */
extern Uint16 adc_table_lem[];
+/* Объявляет ADC_table — АЦП table. Память определена в другом модуле. */
extern Uint16 ADC_table[];
+/* Настраивает каналы, последовательность преобразований и запуск АЦП. */
void setup_adc(void);
+/* Объявляет WAKE — данные WAKE; WAKE_TIME — данные WAKE_TIME. Память определена в другом модуле. */
extern long WAKE,WAKE_TIME;
diff --git a/Source/Internal/Include/DAC.h b/Source/Internal/Include/DAC.h
index 8139737..ea35170 100644
--- a/Source/Internal/Include/DAC.h
+++ b/Source/Internal/Include/DAC.h
@@ -1,18 +1,30 @@
+/* Выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. Русские пояснения сохранены в UTF-8. */
+/* В такте Timer1 проверяет команды, напряжение и давность CAN; управляет STOP, повторным пуском и током ЦАП. */
void Load_runner(void);
+/* Объявляет интерфейс функции Anal_output; реализация вызывается через этот прототип. */
void Anal_output(long vrot, long maxx);
+/* Объявляет интерфейс функции Init_DAC; реализация вызывается через этот прототип. */
void Init_DAC(void);
+/* Вычисляет такты ЦАП; для недопустимого сохранённого тайм-аута CAN возвращает 600 мс. */
void Setup_DAC_time(void);
-/* Ñ÷¸ò÷èê ïóñêîâîãî èìïóëüñà è âûäåðæêè èíèöèàëèçàöèè äîñòóïíû ëîããåðó. */
+/* Счётчик пускового импульса и выдержки инициализации доступны логгеру. */
+/* Объявляет IMPowse — данные IMPowse; WAKEpowse — данные WAKEpowse. Память определена в другом модуле. */
extern unsigned long IMPowse, WAKEpowse;
+/* Объявляет period_dac — период ЦАП; time_dac — time ЦАП. Память определена в другом модуле. */
extern unsigned int period_dac, time_dac;
/* Call once before IRQ; complete technological CAN packets update voltage. */
+/* Сбрасывает все переменные автомата нагрузки до разрешения прерываний; COFF не обнуляет всю .ebss. */
void Load_control_init(void);
+/* Принимает напряжение выбранной нагрузки из достоверных слов CAN и сбрасывает возраст только нужного измерения. */
void Load_voltage_can(unsigned int header, unsigned int a,
+ /* Объявляет b — данные b. */
unsigned int b, unsigned int c);
/* 0x1300/8 words: signature, version, simulation, timeout, status, attempts,
* voltage, age. Only 0x1302 (simulation) and 0x1303 (timeout) are writable. */
+/* Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
unsigned int Load_protection_prepare(unsigned int function, unsigned int address,
+ /* Объявляет value — данные value; out — данные out. Хранит указатель на данные. */
unsigned int value, unsigned int *out, unsigned int *error);
diff --git a/Source/Internal/Include/GPIO_table.h b/Source/Internal/Include/GPIO_table.h
index 1c8079b..f459cfb 100644
--- a/Source/Internal/Include/GPIO_table.h
+++ b/Source/Internal/Include/GPIO_table.h
@@ -1,387 +1,654 @@
+/* Таблица назначения GPIO и макросы аппаратных сигналов платы. Русские пояснения сохранены в UTF-8. */
+/* Задаёт COMM_gpio00_dir = 0UL; COMM линия GPIO 00 dir. */
#define COMM_gpio00_dir 0UL
+/* Задаёт COMM_gpio01_dir = 0UL; COMM линия GPIO 01 dir. */
#define COMM_gpio01_dir 0UL
+/* Задаёт COMM_gpio02_dir = 0UL; COMM линия GPIO 02 dir. */
#define COMM_gpio02_dir 0UL
+/* Задаёт COMM_gpio03_dir = 0UL; COMM линия GPIO 03 dir. */
#define COMM_gpio03_dir 0UL
+/* Задаёт COMM_gpio04_dir = 0UL; COMM линия GPIO 04 dir. */
#define COMM_gpio04_dir 0UL
+/* Задаёт COMM_gpio05_dir = 0UL; COMM линия GPIO 05 dir. */
#define COMM_gpio05_dir 0UL
+/* Задаёт COMM_gpio06_dir = 0UL; COMM линия GPIO 06 dir. */
#define COMM_gpio06_dir 0UL
+/* Задаёт COMM_gpio07_dir = 0UL; COMM линия GPIO 07 dir. */
#define COMM_gpio07_dir 0UL
+/* Задаёт COMM_gpio08_dir = 0UL; COMM линия GPIO 08 dir. */
#define COMM_gpio08_dir 0UL
+/* Задаёт COMM_gpio09_dir = 0UL; COMM линия GPIO 09 dir. */
#define COMM_gpio09_dir 0UL
+/* Задаёт COMM_gpio10_dir = 0UL; COMM линия GPIO 10 dir. */
#define COMM_gpio10_dir 0UL
+/* Задаёт COMM_gpio11_dir = 0UL; COMM линия GPIO 11 dir. */
#define COMM_gpio11_dir 0UL
-#define COMM_gpio19_dir 1UL // 63 — SPI
+/* Задаёт COMM_gpio19_dir = 1UL; COMM линия GPIO 19 dir. */
+#define COMM_gpio19_dir 1UL // 63 — SPI
+/* Задаёт COMM_gpio20_dir = 0UL; COMM линия GPIO 20 dir. */
#define COMM_gpio20_dir 0UL // 64 2:9B mode 2
+/* Задаёт COMM_gpio21_dir = 0UL; COMM линия GPIO 21 dir. */
#define COMM_gpio21_dir 0UL // 65 2:9A mode 4
+/* Задаёт COMM_gpio22_dir = 0UL; COMM линия GPIO 22 dir. */
#define COMM_gpio22_dir 0UL // 66 2:12C mode 1
+/* Задаёт COMM_gpio23_dir = 0UL; COMM линия GPIO 23 dir. */
#define COMM_gpio23_dir 0UL
+/* Задаёт COMM_gpio24_dir = 1UL; COMM линия GPIO 24 dir. */
#define COMM_gpio24_dir 1UL // 68 2:12A select
+/* Задаёт COMM_gpio25_dir = 1UL; COMM линия GPIO 25 dir. */
#define COMM_gpio25_dir 1UL // 69 2:11C select
+/* Задаёт COMM_gpio26_dir = 0UL; COMM линия GPIO 26 dir. */
#define COMM_gpio26_dir 0UL
+/* Задаёт COMM_gpio27_dir = 1UL; COMM линия GPIO 27 dir. */
#define COMM_gpio27_dir 1UL // 73 2:11A select
+/* Задаёт COMM_gpio32_dir = 1UL; COMM линия GPIO 32 dir. */
#define COMM_gpio32_dir 1UL // 74 2:10B DIOD green
+/* Задаёт COMM_gpio33_dir = 0UL; COMM линия GPIO 33 dir. */
#define COMM_gpio33_dir 0UL
-#define COMM_gpio34_dir 1UL // 142 — SCI
+/* Задаёт COMM_gpio34_dir = 1UL; COMM линия GPIO 34 dir. */
+#define COMM_gpio34_dir 1UL // 142 — SCI
+/* Задаёт COMM_gpio48_dir = 1UL; COMM линия GPIO 48 dir. */
#define COMM_gpio48_dir 1UL // 88 2:14C DIOD red
+/* Задаёт COMM_gpio49_dir = 1UL; COMM линия GPIO 49 dir. */
#define COMM_gpio49_dir 1UL // 89 2:14B select
+/* Задаёт COMM_gpio50_dir = 0UL; COMM линия GPIO 50 dir. */
#define COMM_gpio50_dir 0UL // 90 2:14A input 2
+/* Задаёт COMM_gpio51_dir = 0UL; COMM линия GPIO 51 dir. */
#define COMM_gpio51_dir 0UL // 91 2:13C mode !8
+/* Задаёт COMM_gpio52_dir = 1UL; COMM линия GPIO 52 dir. */
#define COMM_gpio52_dir 1UL // 94 2:13B select
+/* Задаёт COMM_gpio53_dir = 0UL; COMM линия GPIO 53 dir. */
#define COMM_gpio53_dir 0UL // 95 2:13A input 1
+/* Задаёт COMM_gpio58_dir = 1UL; COMM линия GPIO 58 dir. */
#define COMM_gpio58_dir 1UL // 100 1:13C rez 1
+/* Задаёт COMM_gpio59_dir = 1UL; COMM линия GPIO 59 dir. */
#define COMM_gpio59_dir 1UL // 110 1:13B gotov
+/* Задаёт COMM_gpio60_dir = 1UL; COMM линия GPIO 60 dir. */
#define COMM_gpio60_dir 1UL // 111 1:13A led 1
+/* Задаёт COMM_gpio61_dir = 1UL; COMM линия GPIO 61 dir. */
#define COMM_gpio61_dir 1UL // 112 1:14C rez 2
-#define COMM_gpio62_dir 0UL
+/* Задаёт COMM_gpio62_dir = 0UL; COMM линия GPIO 62 dir. */
+#define COMM_gpio62_dir 0UL
+/* Задаёт COMM_gpio63_dir = 1UL; COMM линия GPIO 63 dir. */
#define COMM_gpio63_dir 1UL // 114 1:14A led 2
//===========================================================================
+/* Задаёт BKSD_gpio00_dir = 0UL; BKSD линия GPIO 00 dir. */
#define BKSD_gpio00_dir 0UL // 5 2:7A oil
+/* Задаёт BKSD_gpio01_dir = 1UL; BKSD линия GPIO 01 dir. */
#define BKSD_gpio01_dir 1UL // 6 2:4A select
+/* Задаёт BKSD_gpio02_dir = 0UL; BKSD линия GPIO 02 dir. */
#define BKSD_gpio02_dir 0UL // 7 2:7B oil
+/* Задаёт BKSD_gpio03_dir = 1UL; BKSD линия GPIO 03 dir. */
#define BKSD_gpio03_dir 1UL // 10 2:4B select
+/* Задаёт BKSD_gpio04_dir = 0UL; BKSD линия GPIO 04 dir. */
#define BKSD_gpio04_dir 0UL // 11 2:7C oil
+/* Задаёт BKSD_gpio05_dir = 0UL; BKSD линия GPIO 05 dir. */
#define BKSD_gpio05_dir 0UL
+/* Задаёт BKSD_gpio06_dir = 0UL; BKSD линия GPIO 06 dir. */
#define BKSD_gpio06_dir 0UL
+/* Задаёт BKSD_gpio07_dir = 1UL; BKSD линия GPIO 07 dir. */
#define BKSD_gpio07_dir 1UL // 16 2:3A select
+/* Задаёт BKSD_gpio08_dir = 1UL; BKSD линия GPIO 08 dir. */
#define BKSD_gpio08_dir 1UL // 17 2:6B select
+/* Задаёт BKSD_gpio09_dir = 1UL; BKSD линия GPIO 09 dir. */
#define BKSD_gpio09_dir 1UL // 18 2:3B select
+/* Задаёт BKSD_gpio10_dir = 0UL; BKSD линия GPIO 10 dir. */
#define BKSD_gpio10_dir 0UL // 19 2:6C oil
+/* Задаёт BKSD_gpio11_dir = 1UL; BKSD линия GPIO 11 dir. */
#define BKSD_gpio11_dir 1UL // 20 2:3C select
-#define BKSD_gpio19_dir 1UL // 63 — SPI
+/* Задаёт BKSD_gpio19_dir = 1UL; BKSD линия GPIO 19 dir. */
+#define BKSD_gpio19_dir 1UL // 63 — SPI
+/* Задаёт BKSD_gpio20_dir = 0UL; BKSD линия GPIO 20 dir. */
#define BKSD_gpio20_dir 0UL // 64 2:9B mode 2
+/* Задаёт BKSD_gpio21_dir = 0UL; BKSD линия GPIO 21 dir. */
#define BKSD_gpio21_dir 0UL // 65 2:9A mode 4
+/* Задаёт BKSD_gpio22_dir = 0UL; BKSD линия GPIO 22 dir. */
#define BKSD_gpio22_dir 0UL // 66 2:12C mode 1
+/* Задаёт BKSD_gpio23_dir = 0UL; BKSD линия GPIO 23 dir. */
#define BKSD_gpio23_dir 0UL
+/* Задаёт BKSD_gpio24_dir = 0UL; BKSD линия GPIO 24 dir. */
#define BKSD_gpio24_dir 0UL
+/* Задаёт BKSD_gpio25_dir = 0UL; BKSD линия GPIO 25 dir. */
#define BKSD_gpio25_dir 0UL
+/* Задаёт BKSD_gpio26_dir = 0UL; BKSD линия GPIO 26 dir. */
#define BKSD_gpio26_dir 0UL
+/* Задаёт BKSD_gpio27_dir = 0UL; BKSD линия GPIO 27 dir. */
#define BKSD_gpio27_dir 0UL
+/* Задаёт BKSD_gpio32_dir = 1UL; BKSD линия GPIO 32 dir. */
#define BKSD_gpio32_dir 1UL // 74 2:10B DIOD green
+/* Задаёт BKSD_gpio33_dir = 0UL; BKSD линия GPIO 33 dir. */
#define BKSD_gpio33_dir 0UL
-#define BKSD_gpio34_dir 1UL // 142 — SCI
+/* Задаёт BKSD_gpio34_dir = 1UL; BKSD линия GPIO 34 dir. */
+#define BKSD_gpio34_dir 1UL // 142 — SCI
+/* Задаёт BKSD_gpio48_dir = 1UL; BKSD линия GPIO 48 dir. */
#define BKSD_gpio48_dir 1UL // 88 2:14C DIOD red
+/* Задаёт BKSD_gpio49_dir = 0UL; BKSD линия GPIO 49 dir. */
#define BKSD_gpio49_dir 0UL // 89 2:14B input 2
+/* Задаёт BKSD_gpio50_dir = 0UL; BKSD линия GPIO 50 dir. */
#define BKSD_gpio50_dir 0UL // 90 2:14A input 1
+/* Задаёт BKSD_gpio51_dir = 0UL; BKSD линия GPIO 51 dir. */
#define BKSD_gpio51_dir 0UL // 91 2:13C mode !8
+/* Задаёт BKSD_gpio52_dir = 0UL; BKSD линия GPIO 52 dir. */
#define BKSD_gpio52_dir 0UL
+/* Задаёт BKSD_gpio53_dir = 0UL; BKSD линия GPIO 53 dir. */
#define BKSD_gpio53_dir 0UL
+/* Задаёт BKSD_gpio58_dir = 0UL; BKSD линия GPIO 58 dir. */
#define BKSD_gpio58_dir 0UL
+/* Задаёт BKSD_gpio59_dir = 1UL; BKSD линия GPIO 59 dir. */
#define BKSD_gpio59_dir 1UL // 110 1:13B gotov
+/* Задаёт BKSD_gpio60_dir = 1UL; BKSD линия GPIO 60 dir. */
#define BKSD_gpio60_dir 1UL // 111 1:13A led 1
+/* Задаёт BKSD_gpio61_dir = 1UL; BKSD линия GPIO 61 dir. */
#define BKSD_gpio61_dir 1UL // 112 1:14C rez 2
+/* Задаёт BKSD_gpio62_dir = 1UL; BKSD линия GPIO 62 dir. */
#define BKSD_gpio62_dir 1UL // 113 1:14B rez 1
+/* Задаёт BKSD_gpio63_dir = 1UL; BKSD линия GPIO 63 dir. */
#define BKSD_gpio63_dir 1UL // 114 1:14A led 2
//===========================================================================
+/* Задаёт BKST_gpio00_dir = 1UL; BKST линия GPIO 00 dir. */
#define BKST_gpio00_dir 1UL // 5 2:7A select
+/* Задаёт BKST_gpio01_dir = 1UL; BKST линия GPIO 01 dir. */
#define BKST_gpio01_dir 1UL // 6 2:4A select
+/* Задаёт BKST_gpio02_dir = 0UL; BKST линия GPIO 02 dir. */
#define BKST_gpio02_dir 0UL
+/* Задаёт BKST_gpio03_dir = 1UL; BKST линия GPIO 03 dir. */
#define BKST_gpio03_dir 1UL // 10 2:4B select
+/* Задаёт BKST_gpio04_dir = 0UL; BKST линия GPIO 04 dir. */
#define BKST_gpio04_dir 0UL
+/* Задаёт BKST_gpio05_dir = 0UL; BKST линия GPIO 05 dir. */
#define BKST_gpio05_dir 0UL
+/* Задаёт BKST_gpio06_dir = 1UL; BKST линия GPIO 06 dir. */
#define BKST_gpio06_dir 1UL // 13 2:6A select
+/* Задаёт BKST_gpio07_dir = 1UL; BKST линия GPIO 07 dir. */
#define BKST_gpio07_dir 1UL // 16 2:3A select
+/* Задаёт BKST_gpio08_dir = 1UL; BKST линия GPIO 08 dir. */
#define BKST_gpio08_dir 1UL // 17 2:6B select
+/* Задаёт BKST_gpio09_dir = 1UL; BKST линия GPIO 09 dir. */
#define BKST_gpio09_dir 1UL // 18 2:3B select
+/* Задаёт BKST_gpio10_dir = 0UL; BKST линия GPIO 10 dir. */
#define BKST_gpio10_dir 0UL
+/* Задаёт BKST_gpio11_dir = 1UL; BKST линия GPIO 11 dir. */
#define BKST_gpio11_dir 1UL // 20 2:3C select
-#define BKST_gpio19_dir 1UL // 63 — SPI
+/* Задаёт BKST_gpio19_dir = 1UL; BKST линия GPIO 19 dir. */
+#define BKST_gpio19_dir 1UL // 63 — SPI
+/* Задаёт BKST_gpio20_dir = 0UL; BKST линия GPIO 20 dir. */
#define BKST_gpio20_dir 0UL // 64 2:9B mode 2
+/* Задаёт BKST_gpio21_dir = 0UL; BKST линия GPIO 21 dir. */
#define BKST_gpio21_dir 0UL // 65 2:9A mode 4
+/* Задаёт BKST_gpio22_dir = 0UL; BKST линия GPIO 22 dir. */
#define BKST_gpio22_dir 0UL // 66 2:12C mode 1
+/* Задаёт BKST_gpio23_dir = 0UL; BKST линия GPIO 23 dir. */
#define BKST_gpio23_dir 0UL
+/* Задаёт BKST_gpio24_dir = 1UL; BKST линия GPIO 24 dir. */
#define BKST_gpio24_dir 1UL // 68 2:12A select
+/* Задаёт BKST_gpio25_dir = 0UL; BKST линия GPIO 25 dir. */
#define BKST_gpio25_dir 0UL
+/* Задаёт BKST_gpio26_dir = 0UL; BKST линия GPIO 26 dir. */
#define BKST_gpio26_dir 0UL
+/* Задаёт BKST_gpio27_dir = 1UL; BKST линия GPIO 27 dir. */
#define BKST_gpio27_dir 1UL // 73 2:11A select
+/* Задаёт BKST_gpio32_dir = 1UL; BKST линия GPIO 32 dir. */
#define BKST_gpio32_dir 1UL // 74 2:10B DIOD green
+/* Задаёт BKST_gpio33_dir = 0UL; BKST линия GPIO 33 dir. */
#define BKST_gpio33_dir 0UL
-#define BKST_gpio34_dir 1UL // 142 — SCI
+/* Задаёт BKST_gpio34_dir = 1UL; BKST линия GPIO 34 dir. */
+#define BKST_gpio34_dir 1UL // 142 — SCI
+/* Задаёт BKST_gpio48_dir = 1UL; BKST линия GPIO 48 dir. */
#define BKST_gpio48_dir 1UL // 88 2:14C DIOD red
+/* Задаёт BKST_gpio49_dir = 0UL; BKST линия GPIO 49 dir. */
#define BKST_gpio49_dir 0UL
+/* Задаёт BKST_gpio50_dir = 1UL; BKST линия GPIO 50 dir. */
#define BKST_gpio50_dir 1UL // 90 2:14A select
+/* Задаёт BKST_gpio51_dir = 0UL; BKST линия GPIO 51 dir. */
#define BKST_gpio51_dir 0UL // 91 2:13C mode !8
+/* Задаёт BKST_gpio52_dir = 0UL; BKST линия GPIO 52 dir. */
#define BKST_gpio52_dir 0UL
+/* Задаёт BKST_gpio53_dir = 1UL; BKST линия GPIO 53 dir. */
#define BKST_gpio53_dir 1UL // 95 2:13A select
+/* Задаёт BKST_gpio58_dir = 1UL; BKST линия GPIO 58 dir. */
#define BKST_gpio58_dir 1UL // 100 1:13C rez 1
+/* Задаёт BKST_gpio59_dir = 1UL; BKST линия GPIO 59 dir. */
#define BKST_gpio59_dir 1UL // 110 1:13B gotov
+/* Задаёт BKST_gpio60_dir = 1UL; BKST линия GPIO 60 dir. */
#define BKST_gpio60_dir 1UL // 111 1:13A led 1
+/* Задаёт BKST_gpio61_dir = 1UL; BKST линия GPIO 61 dir. */
#define BKST_gpio61_dir 1UL // 112 1:14C rez 2
+/* Задаёт BKST_gpio62_dir = 1UL; BKST линия GPIO 62 dir. */
#define BKST_gpio62_dir 1UL // 113 1:14B led 2
+/* Задаёт BKST_gpio63_dir = 0UL; BKST линия GPIO 63 dir. */
#define BKST_gpio63_dir 0UL // 114 1:14A input
//===========================================================================
+/* Задаёт PULT_gpio00_dir = 1UL; PULT линия GPIO 00 dir. */
#define PULT_gpio00_dir 1UL // 5 2:7A gotov
+/* Задаёт PULT_gpio01_dir = 0UL; PULT линия GPIO 01 dir. */
#define PULT_gpio01_dir 0UL
+/* Задаёт PULT_gpio02_dir = 1UL; PULT линия GPIO 02 dir. */
#define PULT_gpio02_dir 1UL // 7 2:7B ro 1
+/* Задаёт PULT_gpio03_dir = 0UL; PULT линия GPIO 03 dir. */
#define PULT_gpio03_dir 0UL
+/* Задаёт PULT_gpio04_dir = 0UL; PULT линия GPIO 04 dir. */
#define PULT_gpio04_dir 0UL
+/* Задаёт PULT_gpio05_dir = 0UL; PULT линия GPIO 05 dir. */
#define PULT_gpio05_dir 0UL
+/* Задаёт PULT_gpio06_dir = 1UL; PULT линия GPIO 06 dir. */
#define PULT_gpio06_dir 1UL // 13 2:6A kanal
+/* Задаёт PULT_gpio07_dir = 0UL; PULT линия GPIO 07 dir. */
#define PULT_gpio07_dir 0UL
+/* Задаёт PULT_gpio08_dir = 1UL; PULT линия GPIO 08 dir. */
#define PULT_gpio08_dir 1UL // 17 2:6B kanal
+/* Задаёт PULT_gpio09_dir = 0UL; PULT линия GPIO 09 dir. */
#define PULT_gpio09_dir 0UL
+/* Задаёт PULT_gpio10_dir = 0UL; PULT линия GPIO 10 dir. */
#define PULT_gpio10_dir 0UL
+/* Задаёт PULT_gpio11_dir = 0UL; PULT линия GPIO 11 dir. */
#define PULT_gpio11_dir 0UL
-#define PULT_gpio19_dir 1UL // 63 — SPI
+/* Задаёт PULT_gpio19_dir = 1UL; PULT линия GPIO 19 dir. */
+#define PULT_gpio19_dir 1UL // 63 — SPI
+/* Задаёт PULT_gpio20_dir = 0UL; PULT линия GPIO 20 dir. */
#define PULT_gpio20_dir 0UL // 64 2:9B mode 2
+/* Задаёт PULT_gpio21_dir = 0UL; PULT линия GPIO 21 dir. */
#define PULT_gpio21_dir 0UL // 65 2:9A mode 4
+/* Задаёт PULT_gpio22_dir = 0UL; PULT линия GPIO 22 dir. */
#define PULT_gpio22_dir 0UL // 66 2:12C mode 1
+/* Задаёт PULT_gpio23_dir = 0UL; PULT линия GPIO 23 dir. */
#define PULT_gpio23_dir 0UL // 67 2:12B button
+/* Задаёт PULT_gpio24_dir = 0UL; PULT линия GPIO 24 dir. */
#define PULT_gpio24_dir 0UL // 68 2:12A button
+/* Задаёт PULT_gpio25_dir = 0UL; PULT линия GPIO 25 dir. */
#define PULT_gpio25_dir 0UL
+/* Задаёт PULT_gpio26_dir = 0UL; PULT линия GPIO 26 dir. */
#define PULT_gpio26_dir 0UL // 72 2:11B button
+/* Задаёт PULT_gpio27_dir = 0UL; PULT линия GPIO 27 dir. */
#define PULT_gpio27_dir 0UL // 73 2:11A button
+/* Задаёт PULT_gpio32_dir = 1UL; PULT линия GPIO 32 dir. */
#define PULT_gpio32_dir 1UL // 74 2:10B DIOD green
+/* Задаёт PULT_gpio33_dir = 0UL; PULT линия GPIO 33 dir. */
#define PULT_gpio33_dir 0UL
-#define PULT_gpio34_dir 1UL // 142 — SCI
+/* Задаёт PULT_gpio34_dir = 1UL; PULT линия GPIO 34 dir. */
+#define PULT_gpio34_dir 1UL // 142 — SCI
+/* Задаёт PULT_gpio48_dir = 1UL; PULT линия GPIO 48 dir. */
#define PULT_gpio48_dir 1UL // 88 2:14C DIOD red
+/* Задаёт PULT_gpio49_dir = 0UL; PULT линия GPIO 49 dir. */
#define PULT_gpio49_dir 0UL // 89 2:14B button
+/* Задаёт PULT_gpio50_dir = 0UL; PULT линия GPIO 50 dir. */
#define PULT_gpio50_dir 0UL // 90 2:14A button
+/* Задаёт PULT_gpio51_dir = 0UL; PULT линия GPIO 51 dir. */
#define PULT_gpio51_dir 0UL // 91 2:13C mode !8
+/* Задаёт PULT_gpio52_dir = 0UL; PULT линия GPIO 52 dir. */
#define PULT_gpio52_dir 0UL // 94 2:13B button
+/* Задаёт PULT_gpio53_dir = 0UL; PULT линия GPIO 53 dir. */
#define PULT_gpio53_dir 0UL // 95 2:13A button
+/* Задаёт PULT_gpio58_dir = 0UL; PULT линия GPIO 58 dir. */
#define PULT_gpio58_dir 0UL
+/* Задаёт PULT_gpio59_dir = 0UL; PULT линия GPIO 59 dir. */
#define PULT_gpio59_dir 0UL
+/* Задаёт PULT_gpio60_dir = 0UL; PULT линия GPIO 60 dir. */
#define PULT_gpio60_dir 0UL
+/* Задаёт PULT_gpio61_dir = 0UL; PULT линия GPIO 61 dir. */
#define PULT_gpio61_dir 0UL
+/* Задаёт PULT_gpio62_dir = 0UL; PULT линия GPIO 62 dir. */
#define PULT_gpio62_dir 0UL
+/* Задаёт PULT_gpio63_dir = 0UL; PULT линия GPIO 63 dir. */
#define PULT_gpio63_dir 0UL
//===========================================================================
+/* Задаёт PLT2_gpio00_dir = 1UL; 2 линия GPIO 00 dir. */
#define PLT2_gpio00_dir 1UL // 5 2:7A gotov
+/* Задаёт PLT2_gpio01_dir = 0UL; 2 линия GPIO 01 dir. */
#define PLT2_gpio01_dir 0UL
+/* Задаёт PLT2_gpio02_dir = 0UL; 2 линия GPIO 02 dir. */
#define PLT2_gpio02_dir 0UL
+/* Задаёт PLT2_gpio03_dir = 1UL; 2 линия GPIO 03 dir. */
#define PLT2_gpio03_dir 1UL // 10 2:4B res_pb
+/* Задаёт PLT2_gpio04_dir = 0UL; 2 линия GPIO 04 dir. */
#define PLT2_gpio04_dir 0UL // 11 2:7C button
+/* Задаёт PLT2_gpio05_dir = 0UL; 2 линия GPIO 05 dir. */
#define PLT2_gpio05_dir 0UL // 12 2:4C button
+/* Задаёт PLT2_gpio06_dir = 1UL; 2 линия GPIO 06 dir. */
#define PLT2_gpio06_dir 1UL // 13 2:6A kanal
+/* Задаёт PLT2_gpio07_dir = 0UL; 2 линия GPIO 07 dir. */
#define PLT2_gpio07_dir 0UL
+/* Задаёт PLT2_gpio08_dir = 1UL; 2 линия GPIO 08 dir. */
#define PLT2_gpio08_dir 1UL // 17 2:6B kanal
+/* Задаёт PLT2_gpio09_dir = 1UL; 2 линия GPIO 09 dir. */
#define PLT2_gpio09_dir 1UL // 18 2:3B res_lb
+/* Задаёт PLT2_gpio10_dir = 0UL; 2 линия GPIO 10 dir. */
#define PLT2_gpio10_dir 0UL
+/* Задаёт PLT2_gpio11_dir = 0UL; 2 линия GPIO 11 dir. */
#define PLT2_gpio11_dir 0UL
-#define PLT2_gpio19_dir 1UL // 63 × SPI
+/* Задаёт PLT2_gpio19_dir = 1UL; 2 линия GPIO 19 dir. */
+#define PLT2_gpio19_dir 1UL // 63 Ч SPI
+/* Задаёт PLT2_gpio20_dir = 0UL; 2 линия GPIO 20 dir. */
#define PLT2_gpio20_dir 0UL // 64 2:9B mode 2
+/* Задаёт PLT2_gpio21_dir = 0UL; 2 линия GPIO 21 dir. */
#define PLT2_gpio21_dir 0UL // 65 2:9A mode 4
+/* Задаёт PLT2_gpio22_dir = 0UL; 2 линия GPIO 22 dir. */
#define PLT2_gpio22_dir 0UL // 66 2:12C mode 1
+/* Задаёт PLT2_gpio23_dir = 0UL; 2 линия GPIO 23 dir. */
#define PLT2_gpio23_dir 0UL // 67 2:12B button
+/* Задаёт PLT2_gpio24_dir = 0UL; 2 линия GPIO 24 dir. */
#define PLT2_gpio24_dir 0UL // 68 2:12A button
+/* Задаёт PLT2_gpio25_dir = 0UL; 2 линия GPIO 25 dir. */
#define PLT2_gpio25_dir 0UL // 69 2:11C button
+/* Задаёт PLT2_gpio26_dir = 0UL; 2 линия GPIO 26 dir. */
#define PLT2_gpio26_dir 0UL // 72 2:11B button
+/* Задаёт PLT2_gpio27_dir = 0UL; 2 линия GPIO 27 dir. */
#define PLT2_gpio27_dir 0UL // 73 2:11A button
+/* Задаёт PLT2_gpio32_dir = 1UL; 2 линия GPIO 32 dir. */
#define PLT2_gpio32_dir 1UL // 74 2:10B DIOD green
+/* Задаёт PLT2_gpio33_dir = 0UL; 2 линия GPIO 33 dir. */
#define PLT2_gpio33_dir 0UL // 75 2:10C button
-#define PLT2_gpio34_dir 1UL // 142 × SCI
+/* Задаёт PLT2_gpio34_dir = 1UL; 2 линия GPIO 34 dir. */
+#define PLT2_gpio34_dir 1UL // 142 Ч SCI
+/* Задаёт PLT2_gpio48_dir = 0UL; 2 линия GPIO 48 dir. */
#define PLT2_gpio48_dir 0UL // 88 2:14C button
+/* Задаёт PLT2_gpio49_dir = 0UL; 2 линия GPIO 49 dir. */
#define PLT2_gpio49_dir 0UL // 89 2:14B button
+/* Задаёт PLT2_gpio50_dir = 0UL; 2 линия GPIO 50 dir. */
#define PLT2_gpio50_dir 0UL // 90 2:14A button
+/* Задаёт PLT2_gpio51_dir = 0UL; 2 линия GPIO 51 dir. */
#define PLT2_gpio51_dir 0UL // 91 2:13C mode !8
+/* Задаёт PLT2_gpio52_dir = 0UL; 2 линия GPIO 52 dir. */
#define PLT2_gpio52_dir 0UL // 94 2:13B button
+/* Задаёт PLT2_gpio53_dir = 0UL; 2 линия GPIO 53 dir. */
#define PLT2_gpio53_dir 0UL // 95 2:13A button
+/* Задаёт PLT2_gpio58_dir = 0UL; 2 линия GPIO 58 dir. */
#define PLT2_gpio58_dir 0UL
+/* Задаёт PLT2_gpio59_dir = 0UL; 2 линия GPIO 59 dir. */
#define PLT2_gpio59_dir 0UL
+/* Задаёт PLT2_gpio60_dir = 0UL; 2 линия GPIO 60 dir. */
#define PLT2_gpio60_dir 0UL
+/* Задаёт PLT2_gpio61_dir = 0UL; 2 линия GPIO 61 dir. */
#define PLT2_gpio61_dir 0UL
+/* Задаёт PLT2_gpio62_dir = 0UL; 2 линия GPIO 62 dir. */
#define PLT2_gpio62_dir 0UL
+/* Задаёт PLT2_gpio63_dir = 0UL; 2 линия GPIO 63 dir. */
#define PLT2_gpio63_dir 0UL
//===========================================================================
+/* Задаёт SHKF_gpio00_dir = 0UL; SHKF линия GPIO 00 dir. */
#define SHKF_gpio00_dir 0UL // 5 2:7A input
+/* Задаёт SHKF_gpio01_dir = 0UL; SHKF линия GPIO 01 dir. */
#define SHKF_gpio01_dir 0UL // 6 2:4A input
+/* Задаёт SHKF_gpio02_dir = 0UL; SHKF линия GPIO 02 dir. */
#define SHKF_gpio02_dir 0UL // 7 2:7B input
+/* Задаёт SHKF_gpio03_dir = 0UL; SHKF линия GPIO 03 dir. */
#define SHKF_gpio03_dir 0UL // 10 2:4B input
+/* Задаёт SHKF_gpio04_dir = 0UL; SHKF линия GPIO 04 dir. */
#define SHKF_gpio04_dir 0UL // 11 2:7C input
+/* Задаёт SHKF_gpio05_dir = 0UL; SHKF линия GPIO 05 dir. */
#define SHKF_gpio05_dir 0UL // 12 2:4C input
+/* Задаёт SHKF_gpio06_dir = 0UL; SHKF линия GPIO 06 dir. */
#define SHKF_gpio06_dir 0UL // 13 2:6A input
+/* Задаёт SHKF_gpio07_dir = 0UL; SHKF линия GPIO 07 dir. */
#define SHKF_gpio07_dir 0UL // 16 2:3A input
+/* Задаёт SHKF_gpio08_dir = 0UL; SHKF линия GPIO 08 dir. */
#define SHKF_gpio08_dir 0UL // 17 2:6B input
+/* Задаёт SHKF_gpio09_dir = 0UL; SHKF линия GPIO 09 dir. */
#define SHKF_gpio09_dir 0UL // 18 2:3B input
+/* Задаёт SHKF_gpio10_dir = 0UL; SHKF линия GPIO 10 dir. */
#define SHKF_gpio10_dir 0UL // 19 2:6C input
+/* Задаёт SHKF_gpio11_dir = 0UL; SHKF линия GPIO 11 dir. */
#define SHKF_gpio11_dir 0UL // 20 2:3C input
-#define SHKF_gpio19_dir 1UL // 63 — SPI
+/* Задаёт SHKF_gpio19_dir = 1UL; SHKF линия GPIO 19 dir. */
+#define SHKF_gpio19_dir 1UL // 63 — SPI
+/* Задаёт SHKF_gpio20_dir = 0UL; SHKF линия GPIO 20 dir. */
#define SHKF_gpio20_dir 0UL // 64 2:9B mode 2
+/* Задаёт SHKF_gpio21_dir = 0UL; SHKF линия GPIO 21 dir. */
#define SHKF_gpio21_dir 0UL // 65 2:9A mode 4
+/* Задаёт SHKF_gpio22_dir = 0UL; SHKF линия GPIO 22 dir. */
#define SHKF_gpio22_dir 0UL // 66 2:12C mode 1
+/* Задаёт SHKF_gpio23_dir = 0UL; SHKF линия GPIO 23 dir. */
#define SHKF_gpio23_dir 0UL // 67 2:12B input
+/* Задаёт SHKF_gpio24_dir = 0UL; SHKF линия GPIO 24 dir. */
#define SHKF_gpio24_dir 0UL // 68 2:12A input
+/* Задаёт SHKF_gpio25_dir = 0UL; SHKF линия GPIO 25 dir. */
#define SHKF_gpio25_dir 0UL // 69 2:11C input
+/* Задаёт SHKF_gpio26_dir = 0UL; SHKF линия GPIO 26 dir. */
#define SHKF_gpio26_dir 0UL // 72 2:11B input
+/* Задаёт SHKF_gpio27_dir = 0UL; SHKF линия GPIO 27 dir. */
#define SHKF_gpio27_dir 0UL // 73 2:11A input
+/* Задаёт SHKF_gpio32_dir = 0UL; SHKF линия GPIO 32 dir. */
#define SHKF_gpio32_dir 0UL // 74 2:10B input
+/* Задаёт SHKF_gpio33_dir = 0UL; SHKF линия GPIO 33 dir. */
#define SHKF_gpio33_dir 0UL // 75 2:10C input
-#define SHKF_gpio34_dir 1UL // 142 — SCI
+/* Задаёт SHKF_gpio34_dir = 1UL; SHKF линия GPIO 34 dir. */
+#define SHKF_gpio34_dir 1UL // 142 — SCI
+/* Задаёт SHKF_gpio48_dir = 1UL; SHKF линия GPIO 48 dir. */
#define SHKF_gpio48_dir 1UL // 88 2:14C DIOD red
+/* Задаёт SHKF_gpio49_dir = 0UL; SHKF линия GPIO 49 dir. */
#define SHKF_gpio49_dir 0UL // 89 2:14B input
+/* Задаёт SHKF_gpio50_dir = 0UL; SHKF линия GPIO 50 dir. */
#define SHKF_gpio50_dir 0UL // 90 2:14A input
+/* Задаёт SHKF_gpio51_dir = 0UL; SHKF линия GPIO 51 dir. */
#define SHKF_gpio51_dir 0UL // 91 2:13C mode !8
+/* Задаёт SHKF_gpio52_dir = 0UL; SHKF линия GPIO 52 dir. */
#define SHKF_gpio52_dir 0UL // 94 2:13B input
+/* Задаёт SHKF_gpio53_dir = 0UL; SHKF линия GPIO 53 dir. */
#define SHKF_gpio53_dir 0UL // 95 2:13A input
+/* Задаёт SHKF_gpio58_dir = 1UL; SHKF линия GPIO 58 dir. */
#define SHKF_gpio58_dir 1UL // 100 1:13C rez 1
+/* Задаёт SHKF_gpio59_dir = 1UL; SHKF линия GPIO 59 dir. */
#define SHKF_gpio59_dir 1UL // 110 1:13B gotov
+/* Задаёт SHKF_gpio60_dir = 1UL; SHKF линия GPIO 60 dir. */
#define SHKF_gpio60_dir 1UL // 111 1:13A led 1
+/* Задаёт SHKF_gpio61_dir = 1UL; SHKF линия GPIO 61 dir. */
#define SHKF_gpio61_dir 1UL // 112 1:14C rez 2
+/* Задаёт SHKF_gpio62_dir = 0UL; SHKF линия GPIO 62 dir. */
#define SHKF_gpio62_dir 0UL
+/* Задаёт SHKF_gpio63_dir = 1UL; SHKF линия GPIO 63 dir. */
#define SHKF_gpio63_dir 1UL // 114 1:14A led 2
//===========================================================================
+/* Задаёт LOAD_gpio00_dir = 0UL; LOAD линия GPIO 00 dir. */
#define LOAD_gpio00_dir 0UL
+/* Задаёт LOAD_gpio01_dir = 1UL; LOAD линия GPIO 01 dir. */
#define LOAD_gpio01_dir 1UL // 6 2:4A led 2
+/* Задаёт LOAD_gpio02_dir = 0UL; LOAD линия GPIO 02 dir. */
#define LOAD_gpio02_dir 0UL
+/* Задаёт LOAD_gpio03_dir = 1UL; LOAD линия GPIO 03 dir. */
#define LOAD_gpio03_dir 1UL // 10 2:4B res_out 2
+/* Задаёт LOAD_gpio04_dir = 0UL; LOAD линия GPIO 04 dir. */
#define LOAD_gpio04_dir 0UL
+/* Задаёт LOAD_gpio05_dir = 0UL; LOAD линия GPIO 05 dir. */
#define LOAD_gpio05_dir 0UL
+/* Задаёт LOAD_gpio06_dir = 0UL; LOAD линия GPIO 06 dir. */
#define LOAD_gpio06_dir 0UL // 13 2:6A omega d
+/* Задаёт LOAD_gpio07_dir = 1UL; LOAD линия GPIO 07 dir. */
#define LOAD_gpio07_dir 1UL // 16 2:3A led 1
+/* Задаёт LOAD_gpio08_dir = 0UL; LOAD линия GPIO 08 dir. */
#define LOAD_gpio08_dir 0UL // 17 2:6B start 1
+/* Задаёт LOAD_gpio09_dir = 1UL; LOAD линия GPIO 09 dir. */
#define LOAD_gpio09_dir 1UL // 18 2:3B res_out 1
+/* Задаёт LOAD_gpio10_dir = 0UL; LOAD линия GPIO 10 dir. */
#define LOAD_gpio10_dir 0UL
+/* Задаёт LOAD_gpio11_dir = 0UL; LOAD линия GPIO 11 dir. */
#define LOAD_gpio11_dir 0UL // 20 2:3C res_in 0
-#define LOAD_gpio19_dir 1UL // 63 — SPI
+/* Задаёт LOAD_gpio19_dir = 1UL; LOAD линия GPIO 19 dir. */
+#define LOAD_gpio19_dir 1UL // 63 — SPI
+/* Задаёт LOAD_gpio20_dir = 0UL; LOAD линия GPIO 20 dir. */
#define LOAD_gpio20_dir 0UL // 64 2:9B mode 2
+/* Задаёт LOAD_gpio21_dir = 0UL; LOAD линия GPIO 21 dir. */
#define LOAD_gpio21_dir 0UL // 65 2:9A mode 4
+/* Задаёт LOAD_gpio22_dir = 0UL; LOAD линия GPIO 22 dir. */
#define LOAD_gpio22_dir 0UL // 66 2:12C mode 1
+/* Задаёт LOAD_gpio23_dir = 0UL; LOAD линия GPIO 23 dir. */
#define LOAD_gpio23_dir 0UL
+/* Задаёт LOAD_gpio24_dir = 0UL; LOAD линия GPIO 24 dir. */
#define LOAD_gpio24_dir 0UL
+/* Задаёт LOAD_gpio25_dir = 0UL; LOAD линия GPIO 25 dir. */
#define LOAD_gpio25_dir 0UL
+/* Задаёт LOAD_gpio26_dir = 0UL; LOAD линия GPIO 26 dir. */
#define LOAD_gpio26_dir 0UL
+/* Задаёт LOAD_gpio27_dir = 0UL; LOAD линия GPIO 27 dir. */
#define LOAD_gpio27_dir 0UL
+/* Задаёт LOAD_gpio32_dir = 1UL; LOAD линия GPIO 32 dir. */
#define LOAD_gpio32_dir 1UL // 74 2:10B DIOD green
+/* Задаёт LOAD_gpio33_dir = 0UL; LOAD линия GPIO 33 dir. */
#define LOAD_gpio33_dir 0UL
-#define LOAD_gpio34_dir 1UL // 142 — SCI
+/* Задаёт LOAD_gpio34_dir = 1UL; LOAD линия GPIO 34 dir. */
+#define LOAD_gpio34_dir 1UL // 142 — SCI
+/* Задаёт LOAD_gpio48_dir = 1UL; LOAD линия GPIO 48 dir. */
#define LOAD_gpio48_dir 1UL // 88 2:14C DIOD red
+/* Задаёт LOAD_gpio49_dir = 0UL; LOAD линия GPIO 49 dir. */
#define LOAD_gpio49_dir 0UL
+/* Задаёт LOAD_gpio50_dir = 0UL; LOAD линия GPIO 50 dir. */
#define LOAD_gpio50_dir 0UL
+/* Задаёт LOAD_gpio51_dir = 0UL; LOAD линия GPIO 51 dir. */
#define LOAD_gpio51_dir 0UL // 91 2:13C mode !8
+/* Задаёт LOAD_gpio52_dir = 0UL; LOAD линия GPIO 52 dir. */
#define LOAD_gpio52_dir 0UL
+/* Задаёт LOAD_gpio53_dir = 0UL; LOAD линия GPIO 53 dir. */
#define LOAD_gpio53_dir 0UL
+/* Задаёт LOAD_gpio58_dir = 1UL; LOAD линия GPIO 58 dir. */
#define LOAD_gpio58_dir 1UL // 100 1:13C stop_dptb
+/* Задаёт LOAD_gpio59_dir = 1UL; LOAD линия GPIO 59 dir. */
#define LOAD_gpio59_dir 1UL // 110 1:13B csdac
+/* Задаёт LOAD_gpio60_dir = 1UL; LOAD линия GPIO 60 dir. */
#define LOAD_gpio60_dir 1UL // 111 1:13A didac
+/* Задаёт LOAD_gpio61_dir = 1UL; LOAD линия GPIO 61 dir. */
#define LOAD_gpio61_dir 1UL // 112 1:14C gotov
+/* Задаёт LOAD_gpio62_dir = 1UL; LOAD линия GPIO 62 dir. */
#define LOAD_gpio62_dir 1UL // 113 1:14B start_dptb
+/* Задаёт LOAD_gpio63_dir = 1UL; LOAD линия GPIO 63 dir. */
#define LOAD_gpio63_dir 1UL // 114 1:14A clkdac
//===========================================================================
+/* Задаёт COMM_GPADIR = (COMM_gpio00_dir ) + (COMM_gpio01_dir<<1) + (COMM_gpio02_dir<<2) + (COMM_gpio03_dir<<3) +; данные COMM_GPADIR. */
#define COMM_GPADIR (COMM_gpio00_dir ) + (COMM_gpio01_dir<<1) + (COMM_gpio02_dir<<2) + (COMM_gpio03_dir<<3) + \
- (COMM_gpio04_dir<<4) + (COMM_gpio05_dir<<5) + (COMM_gpio06_dir<<6) + (COMM_gpio07_dir<<7) + \
- (COMM_gpio08_dir<<8) + (COMM_gpio09_dir<<9) + (COMM_gpio10_dir<<10)+ (COMM_gpio11_dir<<11)+ \
- (COMM_gpio19_dir<<19)+ \
- (COMM_gpio20_dir<<20)+ (COMM_gpio21_dir<<21)+ (COMM_gpio22_dir<<22)+ (COMM_gpio23_dir<<23)+ \
- (COMM_gpio24_dir<<24)+ (COMM_gpio25_dir<<25)+ (COMM_gpio26_dir<<26)+ (COMM_gpio27_dir<<27);
+ (COMM_gpio04_dir<<4) + (COMM_gpio05_dir<<5) + (COMM_gpio06_dir<<6) + (COMM_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (COMM_gpio04_dir<<4) + (COMM_gpio05_dir<<5) + (COMM_gpio06_dir<<6) + (COMM_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
+ (COMM_gpio08_dir<<8) + (COMM_gpio09_dir<<9) + (COMM_gpio10_dir<<10)+ (COMM_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio08_dir<<8) + (COMM_gpio09_dir<<9) + (COMM_gpio10_dir<<10)+ (COMM_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
+ (COMM_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
+ (COMM_gpio20_dir<<20)+ (COMM_gpio21_dir<<21)+ (COMM_gpio22_dir<<22)+ (COMM_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio20_dir<<20)+ (COMM_gpio21_dir<<21)+ (COMM_gpio22_dir<<22)+ (COMM_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
+ (COMM_gpio24_dir<<24)+ (COMM_gpio25_dir<<25)+ (COMM_gpio26_dir<<26)+ (COMM_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (COMM_gpio24_dir<<24)+ (COMM_gpio25_dir<<25)+ (COMM_gpio26_dir<<26)+ (COMM_gpio27_dir<<27);; порядок элементов сохраняется. */
+/* Задаёт COMM_GPBDIR = (COMM_gpio32_dir )+ (COMM_gpio33_dir<<1) + (COMM_gpio34_dir<<2 )+; данные COMM_GPBDIR. */
#define COMM_GPBDIR (COMM_gpio32_dir )+ (COMM_gpio33_dir<<1) + (COMM_gpio34_dir<<2 )+ \
- (COMM_gpio48_dir<<16)+ (COMM_gpio49_dir<<17)+ (COMM_gpio50_dir<<18)+ (COMM_gpio51_dir<<19)+ \
- (COMM_gpio52_dir<<20)+ (COMM_gpio53_dir<<21)+ \
- (COMM_gpio58_dir<<26)+ (COMM_gpio59_dir<<27)+ \
- (COMM_gpio60_dir<<28)+ (COMM_gpio61_dir<<29)+ (COMM_gpio62_dir<<30)+ (COMM_gpio63_dir<<31);
+ (COMM_gpio48_dir<<16)+ (COMM_gpio49_dir<<17)+ (COMM_gpio50_dir<<18)+ (COMM_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio48_dir<<16)+ (COMM_gpio49_dir<<17)+ (COMM_gpio50_dir<<18)+ (COMM_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
+ (COMM_gpio52_dir<<20)+ (COMM_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio52_dir<<20)+ (COMM_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
+ (COMM_gpio58_dir<<26)+ (COMM_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio58_dir<<26)+ (COMM_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
+ (COMM_gpio60_dir<<28)+ (COMM_gpio61_dir<<29)+ (COMM_gpio62_dir<<30)+ (COMM_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (COMM_gpio60_dir<<28)+ (COMM_gpio61_dir<<29)+ (COMM_gpio62_dir<<30)+ (COMM_gpio63_dir<<31);; порядок элементов сохраняется. */
+/* Задаёт BKSD_GPADIR = (BKSD_gpio00_dir ) + (BKSD_gpio01_dir<<1) + (BKSD_gpio02_dir<<2) + (BKSD_gpio03_dir<<3) +; данные BKSD_GPADIR. */
#define BKSD_GPADIR (BKSD_gpio00_dir ) + (BKSD_gpio01_dir<<1) + (BKSD_gpio02_dir<<2) + (BKSD_gpio03_dir<<3) + \
- (BKSD_gpio04_dir<<4) + (BKSD_gpio05_dir<<5) + (BKSD_gpio06_dir<<6) + (BKSD_gpio07_dir<<7) + \
- (BKSD_gpio08_dir<<8) + (BKSD_gpio09_dir<<9) + (BKSD_gpio10_dir<<10)+ (BKSD_gpio11_dir<<11)+ \
- (BKSD_gpio19_dir<<19)+ \
- (BKSD_gpio20_dir<<20)+ (BKSD_gpio21_dir<<21)+ (BKSD_gpio22_dir<<22)+ (BKSD_gpio23_dir<<23)+ \
- (BKSD_gpio24_dir<<24)+ (BKSD_gpio25_dir<<25)+ (BKSD_gpio26_dir<<26)+ (BKSD_gpio27_dir<<27);
+ (BKSD_gpio04_dir<<4) + (BKSD_gpio05_dir<<5) + (BKSD_gpio06_dir<<6) + (BKSD_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (BKSD_gpio04_dir<<4) + (BKSD_gpio05_dir<<5) + (BKSD_gpio06_dir<<6) + (BKSD_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
+ (BKSD_gpio08_dir<<8) + (BKSD_gpio09_dir<<9) + (BKSD_gpio10_dir<<10)+ (BKSD_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio08_dir<<8) + (BKSD_gpio09_dir<<9) + (BKSD_gpio10_dir<<10)+ (BKSD_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
+ (BKSD_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
+ (BKSD_gpio20_dir<<20)+ (BKSD_gpio21_dir<<21)+ (BKSD_gpio22_dir<<22)+ (BKSD_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio20_dir<<20)+ (BKSD_gpio21_dir<<21)+ (BKSD_gpio22_dir<<22)+ (BKSD_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
+ (BKSD_gpio24_dir<<24)+ (BKSD_gpio25_dir<<25)+ (BKSD_gpio26_dir<<26)+ (BKSD_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (BKSD_gpio24_dir<<24)+ (BKSD_gpio25_dir<<25)+ (BKSD_gpio26_dir<<26)+ (BKSD_gpio27_dir<<27);; порядок элементов сохраняется. */
+/* Задаёт BKSD_GPBDIR = (BKSD_gpio32_dir )+ (BKSD_gpio33_dir<<1) + (BKSD_gpio34_dir<<2 )+; данные BKSD_GPBDIR. */
#define BKSD_GPBDIR (BKSD_gpio32_dir )+ (BKSD_gpio33_dir<<1) + (BKSD_gpio34_dir<<2 )+ \
- (BKSD_gpio48_dir<<16)+ (BKSD_gpio49_dir<<17)+ (BKSD_gpio50_dir<<18)+ (BKSD_gpio51_dir<<19)+ \
- (BKSD_gpio52_dir<<20)+ (BKSD_gpio53_dir<<21)+ \
- (BKSD_gpio58_dir<<26)+ (BKSD_gpio59_dir<<27)+ \
- (BKSD_gpio60_dir<<28)+ (BKSD_gpio61_dir<<29)+ (BKSD_gpio62_dir<<30)+ (BKSD_gpio63_dir<<31);
+ (BKSD_gpio48_dir<<16)+ (BKSD_gpio49_dir<<17)+ (BKSD_gpio50_dir<<18)+ (BKSD_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio48_dir<<16)+ (BKSD_gpio49_dir<<17)+ (BKSD_gpio50_dir<<18)+ (BKSD_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
+ (BKSD_gpio52_dir<<20)+ (BKSD_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio52_dir<<20)+ (BKSD_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
+ (BKSD_gpio58_dir<<26)+ (BKSD_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio58_dir<<26)+ (BKSD_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
+ (BKSD_gpio60_dir<<28)+ (BKSD_gpio61_dir<<29)+ (BKSD_gpio62_dir<<30)+ (BKSD_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (BKSD_gpio60_dir<<28)+ (BKSD_gpio61_dir<<29)+ (BKSD_gpio62_dir<<30)+ (BKSD_gpio63_dir<<31);; порядок элементов сохраняется. */
+/* Задаёт BKST_GPADIR = (BKST_gpio00_dir ) + (BKST_gpio01_dir<<1) + (BKST_gpio02_dir<<2) + (BKST_gpio03_dir<<3) +; данные BKST_GPADIR. */
#define BKST_GPADIR (BKST_gpio00_dir ) + (BKST_gpio01_dir<<1) + (BKST_gpio02_dir<<2) + (BKST_gpio03_dir<<3) + \
- (BKST_gpio04_dir<<4) + (BKST_gpio05_dir<<5) + (BKST_gpio06_dir<<6) + (BKST_gpio07_dir<<7) + \
- (BKST_gpio08_dir<<8) + (BKST_gpio09_dir<<9) + (BKST_gpio10_dir<<10)+ (BKST_gpio11_dir<<11)+ \
- (BKST_gpio19_dir<<19)+ \
- (BKST_gpio20_dir<<20)+ (BKST_gpio21_dir<<21)+ (BKST_gpio22_dir<<22)+ (BKST_gpio23_dir<<23)+ \
- (BKST_gpio24_dir<<24)+ (BKST_gpio25_dir<<25)+ (BKST_gpio26_dir<<26)+ (BKST_gpio27_dir<<27);
+ (BKST_gpio04_dir<<4) + (BKST_gpio05_dir<<5) + (BKST_gpio06_dir<<6) + (BKST_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (BKST_gpio04_dir<<4) + (BKST_gpio05_dir<<5) + (BKST_gpio06_dir<<6) + (BKST_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
+ (BKST_gpio08_dir<<8) + (BKST_gpio09_dir<<9) + (BKST_gpio10_dir<<10)+ (BKST_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio08_dir<<8) + (BKST_gpio09_dir<<9) + (BKST_gpio10_dir<<10)+ (BKST_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
+ (BKST_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
+ (BKST_gpio20_dir<<20)+ (BKST_gpio21_dir<<21)+ (BKST_gpio22_dir<<22)+ (BKST_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio20_dir<<20)+ (BKST_gpio21_dir<<21)+ (BKST_gpio22_dir<<22)+ (BKST_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
+ (BKST_gpio24_dir<<24)+ (BKST_gpio25_dir<<25)+ (BKST_gpio26_dir<<26)+ (BKST_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (BKST_gpio24_dir<<24)+ (BKST_gpio25_dir<<25)+ (BKST_gpio26_dir<<26)+ (BKST_gpio27_dir<<27);; порядок элементов сохраняется. */
+/* Задаёт BKST_GPBDIR = (BKST_gpio32_dir )+ (BKST_gpio33_dir<<1) + (BKST_gpio34_dir<<2 )+; данные BKST_GPBDIR. */
#define BKST_GPBDIR (BKST_gpio32_dir )+ (BKST_gpio33_dir<<1) + (BKST_gpio34_dir<<2 )+ \
- (BKST_gpio48_dir<<16)+ (BKST_gpio49_dir<<17)+ (BKST_gpio50_dir<<18)+ (BKST_gpio51_dir<<19)+ \
- (BKST_gpio52_dir<<20)+ (BKST_gpio53_dir<<21)+ \
- (BKST_gpio58_dir<<26)+ (BKST_gpio59_dir<<27)+ \
- (BKST_gpio60_dir<<28)+ (BKST_gpio61_dir<<29)+ (BKST_gpio62_dir<<30)+ (BKST_gpio63_dir<<31);
+ (BKST_gpio48_dir<<16)+ (BKST_gpio49_dir<<17)+ (BKST_gpio50_dir<<18)+ (BKST_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio48_dir<<16)+ (BKST_gpio49_dir<<17)+ (BKST_gpio50_dir<<18)+ (BKST_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
+ (BKST_gpio52_dir<<20)+ (BKST_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio52_dir<<20)+ (BKST_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
+ (BKST_gpio58_dir<<26)+ (BKST_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio58_dir<<26)+ (BKST_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
+ (BKST_gpio60_dir<<28)+ (BKST_gpio61_dir<<29)+ (BKST_gpio62_dir<<30)+ (BKST_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (BKST_gpio60_dir<<28)+ (BKST_gpio61_dir<<29)+ (BKST_gpio62_dir<<30)+ (BKST_gpio63_dir<<31);; порядок элементов сохраняется. */
+/* Задаёт PULT_GPADIR = (PULT_gpio00_dir ) + (PULT_gpio01_dir<<1) + (PULT_gpio02_dir<<2) + (PULT_gpio03_dir<<3) +; данные PULT_GPADIR. */
#define PULT_GPADIR (PULT_gpio00_dir ) + (PULT_gpio01_dir<<1) + (PULT_gpio02_dir<<2) + (PULT_gpio03_dir<<3) + \
- (PULT_gpio04_dir<<4) + (PULT_gpio05_dir<<5) + (PULT_gpio06_dir<<6) + (PULT_gpio07_dir<<7) + \
- (PULT_gpio08_dir<<8) + (PULT_gpio09_dir<<9) + (PULT_gpio10_dir<<10)+ (PULT_gpio11_dir<<11)+ \
- (PULT_gpio19_dir<<19)+ \
- (PULT_gpio20_dir<<20)+ (PULT_gpio21_dir<<21)+ (PULT_gpio22_dir<<22)+ (PULT_gpio23_dir<<23)+ \
- (PULT_gpio24_dir<<24)+ (PULT_gpio25_dir<<25)+ (PULT_gpio26_dir<<26)+ (PULT_gpio27_dir<<27);
+ (PULT_gpio04_dir<<4) + (PULT_gpio05_dir<<5) + (PULT_gpio06_dir<<6) + (PULT_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (PULT_gpio04_dir<<4) + (PULT_gpio05_dir<<5) + (PULT_gpio06_dir<<6) + (PULT_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
+ (PULT_gpio08_dir<<8) + (PULT_gpio09_dir<<9) + (PULT_gpio10_dir<<10)+ (PULT_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio08_dir<<8) + (PULT_gpio09_dir<<9) + (PULT_gpio10_dir<<10)+ (PULT_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
+ (PULT_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
+ (PULT_gpio20_dir<<20)+ (PULT_gpio21_dir<<21)+ (PULT_gpio22_dir<<22)+ (PULT_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio20_dir<<20)+ (PULT_gpio21_dir<<21)+ (PULT_gpio22_dir<<22)+ (PULT_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
+ (PULT_gpio24_dir<<24)+ (PULT_gpio25_dir<<25)+ (PULT_gpio26_dir<<26)+ (PULT_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (PULT_gpio24_dir<<24)+ (PULT_gpio25_dir<<25)+ (PULT_gpio26_dir<<26)+ (PULT_gpio27_dir<<27);; порядок элементов сохраняется. */
+/* Задаёт PULT_GPBDIR = (PULT_gpio32_dir )+ (PULT_gpio33_dir<<1) + (PULT_gpio34_dir<<2 )+; данные PULT_GPBDIR. */
#define PULT_GPBDIR (PULT_gpio32_dir )+ (PULT_gpio33_dir<<1) + (PULT_gpio34_dir<<2 )+ \
- (PULT_gpio48_dir<<16)+ (PULT_gpio49_dir<<17)+ (PULT_gpio50_dir<<18)+ (PULT_gpio51_dir<<19)+ \
- (PULT_gpio52_dir<<20)+ (PULT_gpio53_dir<<21)+ \
- (PULT_gpio58_dir<<26)+ (PULT_gpio59_dir<<27)+ \
- (PULT_gpio60_dir<<28)+ (PULT_gpio61_dir<<29)+ (PULT_gpio62_dir<<30)+ (PULT_gpio63_dir<<31);
+ (PULT_gpio48_dir<<16)+ (PULT_gpio49_dir<<17)+ (PULT_gpio50_dir<<18)+ (PULT_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio48_dir<<16)+ (PULT_gpio49_dir<<17)+ (PULT_gpio50_dir<<18)+ (PULT_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
+ (PULT_gpio52_dir<<20)+ (PULT_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio52_dir<<20)+ (PULT_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
+ (PULT_gpio58_dir<<26)+ (PULT_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio58_dir<<26)+ (PULT_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
+ (PULT_gpio60_dir<<28)+ (PULT_gpio61_dir<<29)+ (PULT_gpio62_dir<<30)+ (PULT_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (PULT_gpio60_dir<<28)+ (PULT_gpio61_dir<<29)+ (PULT_gpio62_dir<<30)+ (PULT_gpio63_dir<<31);; порядок элементов сохраняется. */
+/* Задаёт PLT2_GPADIR = (PLT2_gpio00_dir ) + (PLT2_gpio01_dir<<1) + (PLT2_gpio02_dir<<2) + (PLT2_gpio03_dir<<3) +; данные PLT2_GPADIR. */
#define PLT2_GPADIR (PLT2_gpio00_dir ) + (PLT2_gpio01_dir<<1) + (PLT2_gpio02_dir<<2) + (PLT2_gpio03_dir<<3) + \
- (PLT2_gpio04_dir<<4) + (PLT2_gpio05_dir<<5) + (PLT2_gpio06_dir<<6) + (PLT2_gpio07_dir<<7) + \
- (PLT2_gpio08_dir<<8) + (PLT2_gpio09_dir<<9) + (PLT2_gpio10_dir<<10)+ (PLT2_gpio11_dir<<11)+ \
- (PLT2_gpio19_dir<<19)+ \
- (PLT2_gpio20_dir<<20)+ (PLT2_gpio21_dir<<21)+ (PLT2_gpio22_dir<<22)+ (PLT2_gpio23_dir<<23)+ \
- (PLT2_gpio24_dir<<24)+ (PLT2_gpio25_dir<<25)+ (PLT2_gpio26_dir<<26)+ (PLT2_gpio27_dir<<27);
+ (PLT2_gpio04_dir<<4) + (PLT2_gpio05_dir<<5) + (PLT2_gpio06_dir<<6) + (PLT2_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (PLT2_gpio04_dir<<4) + (PLT2_gpio05_dir<<5) + (PLT2_gpio06_dir<<6) + (PLT2_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
+ (PLT2_gpio08_dir<<8) + (PLT2_gpio09_dir<<9) + (PLT2_gpio10_dir<<10)+ (PLT2_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio08_dir<<8) + (PLT2_gpio09_dir<<9) + (PLT2_gpio10_dir<<10)+ (PLT2_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
+ (PLT2_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
+ (PLT2_gpio20_dir<<20)+ (PLT2_gpio21_dir<<21)+ (PLT2_gpio22_dir<<22)+ (PLT2_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio20_dir<<20)+ (PLT2_gpio21_dir<<21)+ (PLT2_gpio22_dir<<22)+ (PLT2_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
+ (PLT2_gpio24_dir<<24)+ (PLT2_gpio25_dir<<25)+ (PLT2_gpio26_dir<<26)+ (PLT2_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (PLT2_gpio24_dir<<24)+ (PLT2_gpio25_dir<<25)+ (PLT2_gpio26_dir<<26)+ (PLT2_gpio27_dir<<27);; порядок элементов сохраняется. */
+/* Задаёт PLT2_GPBDIR = (PLT2_gpio32_dir )+ (PLT2_gpio33_dir<<1) + (PLT2_gpio34_dir<<2 )+; данные PLT2_GPBDIR. */
#define PLT2_GPBDIR (PLT2_gpio32_dir )+ (PLT2_gpio33_dir<<1) + (PLT2_gpio34_dir<<2 )+ \
- (PLT2_gpio48_dir<<16)+ (PLT2_gpio49_dir<<17)+ (PLT2_gpio50_dir<<18)+ (PLT2_gpio51_dir<<19)+ \
- (PLT2_gpio52_dir<<20)+ (PLT2_gpio53_dir<<21)+ \
- (PLT2_gpio58_dir<<26)+ (PLT2_gpio59_dir<<27)+ \
- (PLT2_gpio60_dir<<28)+ (PLT2_gpio61_dir<<29)+ (PLT2_gpio62_dir<<30)+ (PLT2_gpio63_dir<<31);
+ (PLT2_gpio48_dir<<16)+ (PLT2_gpio49_dir<<17)+ (PLT2_gpio50_dir<<18)+ (PLT2_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio48_dir<<16)+ (PLT2_gpio49_dir<<17)+ (PLT2_gpio50_dir<<18)+ (PLT2_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
+ (PLT2_gpio52_dir<<20)+ (PLT2_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio52_dir<<20)+ (PLT2_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
+ (PLT2_gpio58_dir<<26)+ (PLT2_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio58_dir<<26)+ (PLT2_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
+ (PLT2_gpio60_dir<<28)+ (PLT2_gpio61_dir<<29)+ (PLT2_gpio62_dir<<30)+ (PLT2_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (PLT2_gpio60_dir<<28)+ (PLT2_gpio61_dir<<29)+ (PLT2_gpio62_dir<<30)+ (PLT2_gpio63_dir<<31);; порядок элементов сохраняется. */
+/* Задаёт SHKF_GPADIR = (SHKF_gpio00_dir ) + (SHKF_gpio01_dir<<1) + (SHKF_gpio02_dir<<2) + (SHKF_gpio03_dir<<3) +; данные SHKF_GPADIR. */
#define SHKF_GPADIR (SHKF_gpio00_dir ) + (SHKF_gpio01_dir<<1) + (SHKF_gpio02_dir<<2) + (SHKF_gpio03_dir<<3) + \
- (SHKF_gpio04_dir<<4) + (SHKF_gpio05_dir<<5) + (SHKF_gpio06_dir<<6) + (SHKF_gpio07_dir<<7) + \
- (SHKF_gpio08_dir<<8) + (SHKF_gpio09_dir<<9) + (SHKF_gpio10_dir<<10)+ (SHKF_gpio11_dir<<11)+ \
- (SHKF_gpio19_dir<<19)+ \
- (SHKF_gpio20_dir<<20)+ (SHKF_gpio21_dir<<21)+ (SHKF_gpio22_dir<<22)+ (SHKF_gpio23_dir<<23)+ \
- (SHKF_gpio24_dir<<24)+ (SHKF_gpio25_dir<<25)+ (SHKF_gpio26_dir<<26)+ (SHKF_gpio27_dir<<27);
+ (SHKF_gpio04_dir<<4) + (SHKF_gpio05_dir<<5) + (SHKF_gpio06_dir<<6) + (SHKF_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (SHKF_gpio04_dir<<4) + (SHKF_gpio05_dir<<5) + (SHKF_gpio06_dir<<6) + (SHKF_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
+ (SHKF_gpio08_dir<<8) + (SHKF_gpio09_dir<<9) + (SHKF_gpio10_dir<<10)+ (SHKF_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio08_dir<<8) + (SHKF_gpio09_dir<<9) + (SHKF_gpio10_dir<<10)+ (SHKF_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
+ (SHKF_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
+ (SHKF_gpio20_dir<<20)+ (SHKF_gpio21_dir<<21)+ (SHKF_gpio22_dir<<22)+ (SHKF_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio20_dir<<20)+ (SHKF_gpio21_dir<<21)+ (SHKF_gpio22_dir<<22)+ (SHKF_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
+ (SHKF_gpio24_dir<<24)+ (SHKF_gpio25_dir<<25)+ (SHKF_gpio26_dir<<26)+ (SHKF_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (SHKF_gpio24_dir<<24)+ (SHKF_gpio25_dir<<25)+ (SHKF_gpio26_dir<<26)+ (SHKF_gpio27_dir<<27);; порядок элементов сохраняется. */
+/* Задаёт SHKF_GPBDIR = (SHKF_gpio32_dir )+ (SHKF_gpio33_dir<<1) + (SHKF_gpio34_dir<<2 )+; данные SHKF_GPBDIR. */
#define SHKF_GPBDIR (SHKF_gpio32_dir )+ (SHKF_gpio33_dir<<1) + (SHKF_gpio34_dir<<2 )+ \
- (SHKF_gpio48_dir<<16)+ (SHKF_gpio49_dir<<17)+ (SHKF_gpio50_dir<<18)+ (SHKF_gpio51_dir<<19)+ \
- (SHKF_gpio52_dir<<20)+ (SHKF_gpio53_dir<<21)+ \
- (SHKF_gpio58_dir<<26)+ (SHKF_gpio59_dir<<27)+ \
- (SHKF_gpio60_dir<<28)+ (SHKF_gpio61_dir<<29)+ (SHKF_gpio62_dir<<30)+ (SHKF_gpio63_dir<<31);
+ (SHKF_gpio48_dir<<16)+ (SHKF_gpio49_dir<<17)+ (SHKF_gpio50_dir<<18)+ (SHKF_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio48_dir<<16)+ (SHKF_gpio49_dir<<17)+ (SHKF_gpio50_dir<<18)+ (SHKF_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
+ (SHKF_gpio52_dir<<20)+ (SHKF_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio52_dir<<20)+ (SHKF_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
+ (SHKF_gpio58_dir<<26)+ (SHKF_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio58_dir<<26)+ (SHKF_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
+ (SHKF_gpio60_dir<<28)+ (SHKF_gpio61_dir<<29)+ (SHKF_gpio62_dir<<30)+ (SHKF_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (SHKF_gpio60_dir<<28)+ (SHKF_gpio61_dir<<29)+ (SHKF_gpio62_dir<<30)+ (SHKF_gpio63_dir<<31);; порядок элементов сохраняется. */
+/* Задаёт LOAD_GPADIR = (LOAD_gpio00_dir ) + (LOAD_gpio01_dir<<1) + (LOAD_gpio02_dir<<2) + (LOAD_gpio03_dir<<3) +; данные LOAD_GPADIR. */
#define LOAD_GPADIR (LOAD_gpio00_dir ) + (LOAD_gpio01_dir<<1) + (LOAD_gpio02_dir<<2) + (LOAD_gpio03_dir<<3) + \
- (LOAD_gpio04_dir<<4) + (LOAD_gpio05_dir<<5) + (LOAD_gpio06_dir<<6) + (LOAD_gpio07_dir<<7) + \
- (LOAD_gpio08_dir<<8) + (LOAD_gpio09_dir<<9) + (LOAD_gpio10_dir<<10)+ (LOAD_gpio11_dir<<11)+ \
- (LOAD_gpio19_dir<<19)+ \
- (LOAD_gpio20_dir<<20)+ (LOAD_gpio21_dir<<21)+ (LOAD_gpio22_dir<<22)+ (LOAD_gpio23_dir<<23)+ \
- (LOAD_gpio24_dir<<24)+ (LOAD_gpio25_dir<<25)+ (LOAD_gpio26_dir<<26)+ (LOAD_gpio27_dir<<27);
+ (LOAD_gpio04_dir<<4) + (LOAD_gpio05_dir<<5) + (LOAD_gpio06_dir<<6) + (LOAD_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (LOAD_gpio04_dir<<4) + (LOAD_gpio05_dir<<5) + (LOAD_gpio06_dir<<6) + (LOAD_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
+ (LOAD_gpio08_dir<<8) + (LOAD_gpio09_dir<<9) + (LOAD_gpio10_dir<<10)+ (LOAD_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio08_dir<<8) + (LOAD_gpio09_dir<<9) + (LOAD_gpio10_dir<<10)+ (LOAD_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
+ (LOAD_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
+ (LOAD_gpio20_dir<<20)+ (LOAD_gpio21_dir<<21)+ (LOAD_gpio22_dir<<22)+ (LOAD_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio20_dir<<20)+ (LOAD_gpio21_dir<<21)+ (LOAD_gpio22_dir<<22)+ (LOAD_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
+ (LOAD_gpio24_dir<<24)+ (LOAD_gpio25_dir<<25)+ (LOAD_gpio26_dir<<26)+ (LOAD_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (LOAD_gpio24_dir<<24)+ (LOAD_gpio25_dir<<25)+ (LOAD_gpio26_dir<<26)+ (LOAD_gpio27_dir<<27);; порядок элементов сохраняется. */
+/* Задаёт LOAD_GPBDIR = (LOAD_gpio32_dir )+ (LOAD_gpio33_dir<<1) + (LOAD_gpio34_dir<<2 )+; данные LOAD_GPBDIR. */
#define LOAD_GPBDIR (LOAD_gpio32_dir )+ (LOAD_gpio33_dir<<1) + (LOAD_gpio34_dir<<2 )+ \
- (LOAD_gpio48_dir<<16)+ (LOAD_gpio49_dir<<17)+ (LOAD_gpio50_dir<<18)+ (LOAD_gpio51_dir<<19)+ \
- (LOAD_gpio52_dir<<20)+ (LOAD_gpio53_dir<<21)+ \
- (LOAD_gpio58_dir<<26)+ (LOAD_gpio59_dir<<27)+ \
- (LOAD_gpio60_dir<<28)+ (LOAD_gpio61_dir<<29)+ (LOAD_gpio62_dir<<30)+ (LOAD_gpio63_dir<<31);
+ (LOAD_gpio48_dir<<16)+ (LOAD_gpio49_dir<<17)+ (LOAD_gpio50_dir<<18)+ (LOAD_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio48_dir<<16)+ (LOAD_gpio49_dir<<17)+ (LOAD_gpio50_dir<<18)+ (LOAD_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
+ (LOAD_gpio52_dir<<20)+ (LOAD_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio52_dir<<20)+ (LOAD_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
+ (LOAD_gpio58_dir<<26)+ (LOAD_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio58_dir<<26)+ (LOAD_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
+ (LOAD_gpio60_dir<<28)+ (LOAD_gpio61_dir<<29)+ (LOAD_gpio62_dir<<30)+ (LOAD_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (LOAD_gpio60_dir<<28)+ (LOAD_gpio61_dir<<29)+ (LOAD_gpio62_dir<<30)+ (LOAD_gpio63_dir<<31);; порядок элементов сохраняется. */
//===========================================================================
// No more.
diff --git a/Source/Internal/Include/RS485.h b/Source/Internal/Include/RS485.h
index 89bb137..883fcb8 100644
--- a/Source/Internal/Include/RS485.h
+++ b/Source/Internal/Include/RS485.h
@@ -1,143 +1,225 @@
+/* Приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: _RS485 ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef _RS485
+/* Определяет защитный символ или переключатель _RS485 для последующей компиляции. */
#define _RS485
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
- extern "C" {
+ /* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
+ extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
+
//#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
//#include "DSP2833x_Sci.h"
//#include "cntrl_adr.h"
//#include "params.h"
+/* Начинает условие: RS232_USE_FIFO ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef RS232_USE_FIFO
+/* Задаёт RS232_USE_FIFO = 1; выбор FIFO для COM_1; COM_2 сохраняет отдельную логику RS485. */
#define RS232_USE_FIFO 1
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт COM_1 = 1; номер первого последовательного порта, SCI-A. */
#define COM_1 1
+/* Задаёт COM_2 = 2; номер второго последовательного порта, SCI-B. */
#define COM_2 2
+/* Задаёт MAX_RECEIVE_LENGTH = 400; MAX приём длина. */
#define MAX_RECEIVE_LENGTH 400 // 80 //150
+/* Задаёт MAX_SEND_LENGTH = 400; MAX SEND длина. */
#define MAX_SEND_LENGTH 400 //150
-#define TIME_WAIT_RS_BYTE_OUT 1000
+/* Задаёт TIME_WAIT_RS_BYTE_OUT = 1000; данные TIME_WAIT_RS_BYTE_OUT. */
+#define TIME_WAIT_RS_BYTE_OUT 1000
+/* Задаёт TIME_WAIT_RS_LOST_BYTE = 100; данные TIME_WAIT_RS_LOST_BYTE. */
#define TIME_WAIT_RS_LOST_BYTE 100
+/* Задаёт RS_TIME_OUT = (SECOND*10); данные RS_TIME_OUT. */
#define RS_TIME_OUT (SECOND*10)
+/* Задаёт Rec_Bloc_Begin = 0x200000; данные Rec_Bloc_Begin. */
#define Rec_Bloc_Begin 0x200000
+/* Задаёт Rec_Bloc_End = 0x2F0000; данные Rec_Bloc_End. */
#define Rec_Bloc_End 0x2F0000
+/* Задаёт Rec_Bloc_Length = (Rec_Bloc_End-Rec_Bloc_Begin); Rec Bloc длина. */
#define Rec_Bloc_Length (Rec_Bloc_End-Rec_Bloc_Begin)
/* Message RS declaration */
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef struct
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Продолжает список аргументов, полей или выражение volatile struct SCI_REGS *SciRegs;; порядок элементов сохраняется. */
volatile struct SCI_REGS *SciRegs;
- unsigned int commnumber; // Íîìåð ïîðòà
- unsigned long RS_Length; // Äëèíà ïàêåòà
+ /* Объявляет commnumber — данные commnumber. */
+ unsigned int commnumber; // Номер порта
+ /* Объявляет RS_Length — RS длина. */
+ unsigned long RS_Length; // Длина пакета
- unsigned int *pRS_RecvPtr; // Áóôåð ïðèåìà
- unsigned int *pRS_SendPtr; // Áóôåð ïîñûëêè
- unsigned int *pRecvPtr;
+ /* Объявляет pRS_RecvPtr — данные pRS_RecvPtr. Хранит указатель на данные. */
+ unsigned int *pRS_RecvPtr; // Буфер приема
+ /* Объявляет pRS_SendPtr — данные pRS_SendPtr. Хранит указатель на данные. */
+ unsigned int *pRS_SendPtr; // Буфер посылки
+ /* Объявляет pRecvPtr — данные pRecvPtr. Хранит указатель на данные. */
+ unsigned int *pRecvPtr;
- unsigned int RS_PrevCmd; // Ïðåäûäóùàà êîììàíäà
- unsigned int RS_Cmd; // Òåêóùàà êîììàíäà
- unsigned int RS_Header[MAX_RECEIVE_LENGTH]; // Çàãîëîâîê
- unsigned int flag_TIMEOUT_to_Send; // Ôëàã îæèäàíèà òàéìàóòà íà îòñûëêó
- unsigned int flag_TIMEOUT_to_Receive; // Ôëàã îæèäàíèà òàéìàóòà íà ïðèåì
- unsigned int RS_DataReady; // Ôëàã ãîòîâíîñòè RS äàííûõ
- unsigned int buffer[MAX_SEND_LENGTH]; // Áóôåð äëà îòñûëêè ïî RS
+ /* Объявляет RS_PrevCmd — данные RS_PrevCmd. */
+ unsigned int RS_PrevCmd; // Предыдущаа комманда
+ /* Объявляет RS_Cmd — данные RS_Cmd. */
+ unsigned int RS_Cmd; // Текущаа комманда
+ /* Объявляет RS_Header — данные RS_Header. */
+ unsigned int RS_Header[MAX_RECEIVE_LENGTH]; // Заголовок
+ /* Объявляет flag_TIMEOUT_to_Send — флаг TIMEOUT to Send. */
+ unsigned int flag_TIMEOUT_to_Send; // Флаг ожиданиа таймаута на отсылку
+ /* Объявляет flag_TIMEOUT_to_Receive — флаг TIMEOUT to приём. */
+ unsigned int flag_TIMEOUT_to_Receive; // Флаг ожиданиа таймаута на прием
+ /* Объявляет RS_DataReady — RS данные Ready. */
+ unsigned int RS_DataReady; // Флаг готовности RS данных
+ /* Объявляет buffer — буфер. */
+ unsigned int buffer[MAX_SEND_LENGTH]; // Буфер дла отсылки по RS
- unsigned int addr_answer; // àäðåñ êóäà îòâå÷àòü â ðåæèìå âåäóùåãî
- unsigned int addr_recive; // àäðåñ ïî êîòîðîìó íàñ çàïðîñèëè
- unsigned int flag_LEADING; // Ôëàã ðåæèìà êîíòðîëëåðà (ïî óìîë÷àíèþ âåäîìûé)
- unsigned long RS_RecvLen;
- unsigned long RS_SLength; // Äëèíà ïàêåòà äëà ïîñûëêè
- unsigned long RS_SendLen; // Êîëè÷åñòâî áàéò óæå ïåðåäàëè
- char RS_SendBlockMode; // Ðåæèì ïåðåäà÷è
- char RS_Flag9bit; // äëà RS485????????
- int BS_LoadOK; // Ôëàã óñïåøíîñòè ïðèåìà áëîêà
+ /* Объявляет addr_answer — данные addr_answer. */
+ unsigned int addr_answer; // адрес куда отвечать в режиме ведущего
+ /* Объявляет addr_recive — данные addr_recive. */
+ unsigned int addr_recive; // адрес по которому нас запросили
+ /* Объявляет flag_LEADING — флаг LEADING. */
+ unsigned int flag_LEADING; // Флаг режима контроллера (по умолчанию ведомый)
+ /* Объявляет RS_RecvLen — данные RS_RecvLen. */
+ unsigned long RS_RecvLen;
+ /* Объявляет RS_SLength — RS S длина. */
+ unsigned long RS_SLength; // Длина пакета дла посылки
+ /* Объявляет RS_SendLen — данные RS_SendLen. */
+ unsigned long RS_SendLen; // Количество байт уже передали
+ /* Объявляет RS_SendBlockMode — RS Send Block режим. */
+ char RS_SendBlockMode; // Режим передачи
+ /* Объявляет RS_Flag9bit — RS флаг 9 бит. */
+ char RS_Flag9bit; // дла RS485????????
+ /* Объявляет BS_LoadOK — данные BS_LoadOK. */
+ int BS_LoadOK; // Флаг успешности приема блока
+ /* Объявляет RS_FlagBegin — RS флаг Begin. */
int RS_FlagBegin;
+ /* Объявляет RS_HeaderCnt — данные RS_HeaderCnt. */
int RS_HeaderCnt;
+ /* Объявляет RS_FlagSkiping — RS флаг Skiping. */
int RS_FlagSkiping;
+ /* Объявляет curr_baud — curr скорость передачи. */
unsigned long curr_baud;
+ /* Объявляет time_wait_rs_out — данные time_wait_rs_out. */
unsigned long time_wait_rs_out;
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+ /* Объявляет fifo_tx_active — данные fifo_tx_active; fifo_rx_guard — данные fifo_rx_guard. volatile требует фактического чтения или записи при каждом доступе. */
volatile unsigned int fifo_tx_active, fifo_rx_guard;
+ /* Объявляет fifo_rx_errors — данные fifo_rx_errors; fifo_overflows — данные fifo_overflows. volatile требует фактического чтения или записи при каждом доступе. */
volatile unsigned long fifo_rx_errors, fifo_overflows;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-} RS_DATA;
+/* Продолжает список аргументов, полей или выражение } RS_DATA;; порядок элементов сохраняется. */
+} RS_DATA;
+/* Объявляет rs_a — данные rs_a; rs_b — данные rs_b. Память определена в другом модуле. */
extern RS_DATA rs_a,rs_b;
+/* Объявляет . Память определена в другом модуле. */
extern unsigned int
- RS_Len[70]; /* Äåéñòâèòåëüíàà äëèíà êîìàíäû (îòëàäî÷íîé) + 1 */
+ RS_Len[70]; /* Действительнаа длина команды (отладочной) + 1 */ /* Продолжает список аргументов, полей или выражение RS_Len[70];; порядок элементов сохраняется. */
+/* Объявляет обработчик RSA_RX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RSA_RX_Handler(void);
+/* Объявляет обработчик RSA_TX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RSA_TX_Handler(void);
+/* Объявляет обработчик RSB_RX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RSB_RX_Handler(void);
+/* Объявляет обработчик RSB_TX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RSB_TX_Handler(void);
-/* èíèöèëèçàöèà ïåðåìåííûõ rs_a,rs_b*/
+/* иницилизациа переменных rs_a,rs_b*/
+/* Инициализирует структуры обоих SCI и таблицу длин команд. */
void create_uart_vars(char size_cmd15);
-/** Ïîâòîðíàà èíèöèàëèçàöèà ïîñëåäîâàòåëüíîãî ïîðòà, èñïîëüçóåòñà ïîñëå ïîäâèñà */
-/** Íàñòðîéêà ðåæèìà ïðèåìà/ïåðåäà÷è */
+/** Повторнаа инициализациа последовательного порта, используетса после подвиса */
+/** Настройка режима приема/передачи */
+/* Объявляет интерфейс функции RS_SetBitMode; реализация вызывается через этот прототип. */
void RS_SetBitMode(RS_DATA *rs_arr, int n);
-/** Ïîñûëêà áëîêà áàéòîâ.
- Ïîñûëàåò ìàññèâà 32-áèòíûõ öåëûõ ÷èñåë ñòàðøèå áèòû äîëæíû áûòü 0.
- @precondition Ðàáîòà ô-öèè çàâèñèò îò ìàêðî RS_TRANSMIT_INTR
- @param buf àäðåñ ìàññèâà
- @param len êîëè÷åñòâî áàéò
+/** Посылка блока байтов.
+ Посылает массива 32-битных целых чисел старшие биты должны быть 0.
+ @precondition Работа ф-ции зависит от макро RS_TRANSMIT_INTR
+ @param buf адрес массива
+ @param len количество байт
@see RS_BSend, RS_TRANSMIT_INTR
*/
+/* Передаёт массив слов через SCI в выбранном режиме упаковки. */
int RS_Send(RS_DATA *rs_arr,unsigned int *pBuf, unsigned long len);
-/** Ïîñûëêà áëîêà óïàêîâàííûõ áàéòîâ.
- @precondition Ðàáîòà ô-öèè çàâèñèò îò ìàêðî RS_TRANSMIT_INTR
- @param buf àäðåñ ìàññèâà
- @param len êîëè÷åñòâî 8-áèòíûõ áàéò
+/** Посылка блока упакованных байтов.
+ @precondition Работа ф-ции зависит от макро RS_TRANSMIT_INTR
+ @param buf адрес массива
+ @param len количество 8-битных байт
@see RS_Send, RS_TRANSMIT_INTR
*/
+/* Передаёт последовательность 8-битных октетов, упакованных в слова C28x. */
int RS_BSend(RS_DATA *rs_arr,unsigned int *pBuf, unsigned long len);
-
-/** Èíèöèàëèçàöèà ïîñëåäîâàòåëüíîãî ïîðòà */
-void setup_uart(char commnumber,unsigned long speed_baud); /* speed_baud - ñêîðîñòü ëèíèè â áîäàõ */
+/** Инициализациа последовательного порта */
+void setup_uart(char commnumber,unsigned long speed_baud); /* speed_baud - скорость линии в бодах */ /* Настраивает выбранный SCI, скорость и обработчики прерываний. */
+
+/* Объявляет интерфейс функции RS_SetLineMode; реализация вызывается через этот прототип. */
void RS_SetLineMode(RS_DATA *rs_arr, int bit, char parity, int stop);
+/* Объявляет интерфейс функции RS_SetLineSpeed; реализация вызывается через этот прототип. */
void RS_SetLineSpeed(RS_DATA *rs_arr, unsigned long speed);
// Transmit a character from the SCI'
+/* Задаёт SCI_send = x->SciRegs->SCITXBUF=(unsigned char)(y); SCI send. */
#define SCI_send(x,y) x->SciRegs->SCITXBUF=(unsigned char)(y)
-// Îæèäàíèå çàâåðøåíèà ïåðåäà÷è UART
+// Ожидание завершениа передачи UART
// wait for TRDY =1 for empty state
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+/* Ожидает завершения аппаратной передачи FIFO и сдвигового регистра SCI. */
void RS_FifoWait(RS_DATA *rs_arr);
+/* Уменьшает защитную паузу RX FIFO по миллисекундному такту. */
void RS_FifoTick1ms(void);
+/* Задаёт RS_Wait4OK = RS_FifoWait(x); данные RS_Wait4OK. */
#define RS_Wait4OK(x) RS_FifoWait(x)
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт RS_Wait4OK = while(!(x->SciRegs->SCICTL2.bit.TXEMPTY)); данные RS_Wait4OK. */
#define RS_Wait4OK(x) while(!(x->SciRegs->SCICTL2.bit.TXEMPTY))
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-/** Ïåðåêëþ÷åíèå ëèíèè íà ïðèåì */
+/** Переключение линии на прием */
+/* Задаёт RS_Line_to_receive = if(x->commnumber==COM_2) GpioDataRegs.GPBDAT.bit.GPIO34 = 1;; RS Line to приём. */
#define RS_Line_to_receive(x) if(x->commnumber==COM_2) GpioDataRegs.GPBDAT.bit.GPIO34 = 1;
-/** Ïåðåêëþ÷åíèå ëèíèè íà ïåðåäà÷ó */
+/** Переключение линии на передачу */
+/* Задаёт RS_Line_to_send = if(x->commnumber==COM_2) GpioDataRegs.GPBDAT.bit.GPIO34 = 0;; данные RS_Line_to_send. */
#define RS_Line_to_send(x) if(x->commnumber==COM_2) GpioDataRegs.GPBDAT.bit.GPIO34 = 0;
-/** Ðàçðåøåíèå ïðåðûâàíèé ïî ïîëó÷åíèþ ñèìâîëà è îøèáêàì îò UART */
+/** Разрешение прерываний по получению символа и ошибкам от UART */
+/* Задаёт enableUARTInt = x->SciRegs->SCICTL2.all=2; разрешение UART Int. */
#define enableUARTInt(x) x->SciRegs->SCICTL2.all=2
+/* Задаёт enableUARTIntW = x->SciRegs->SCICTL2.all=1; разрешение UART Int W. */
#define enableUARTIntW(x) x->SciRegs->SCICTL2.all=1
+/* Объявляет интерфейс функции clear_timer_rs_live; реализация вызывается через этот прототип. */
void clear_timer_rs_live(RS_DATA *rs_arr);
+/* Объявляет интерфейс функции test_rs_live; реализация вызывается через этот прототип. */
void test_rs_live(RS_DATA *rs_arr);
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-#endif /* _RS485 */
+#endif /* _RS485 */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
diff --git a/Source/Internal/Include/bios_dsp.h b/Source/Internal/Include/bios_dsp.h
index 20b5ccb..c3e4107 100644
--- a/Source/Internal/Include/bios_dsp.h
+++ b/Source/Internal/Include/bios_dsp.h
@@ -1,22 +1,39 @@
+/* Коды и объявления команд последовательного загрузчика. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: _BIOS_DSP ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef _BIOS_DSP
+/* Определяет защитный символ или переключатель _BIOS_DSP для последующей компиляции. */
#define _BIOS_DSP
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
- extern "C" {
+ /* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
+ extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт BM_PACKED = 1; данные BM_PACKED. */
#define BM_PACKED 1
+/* Задаёт BM_CHAR32 = 0; данные BM_CHAR32. */
#define BM_CHAR32 0
+/* Задаёт CHIEF = 1; данные CHIEF. */
#define CHIEF 1
+/* Задаёт SLAVE = 0; данные SLAVE. */
#define SLAVE 0
+/* Задаёт ADR_FOR_SPECIAL = 0x100; данные ADR_FOR_SPECIAL. */
#define ADR_FOR_SPECIAL 0x100
+/* Задаёт CMD_MODBUS_3 = 3; данные CMD_MODBUS_3. */
#define CMD_MODBUS_3 3
+/* Задаёт ANS_MODBUS_4 = 4; данные ANS_MODBUS_4. */
#define ANS_MODBUS_4 4
+/* Задаёт CMD_MODBUS_15 = 5; данные CMD_MODBUS_15. */
#define CMD_MODBUS_15 5
+/* Задаёт CMD_MODBUS_6 = 6; данные CMD_MODBUS_6. */
#define CMD_MODBUS_6 6
+/* Задаёт ANS_MODBUS_6 = 7; данные ANS_MODBUS_6. */
#define ANS_MODBUS_6 7
+/* Задаёт CMD_MODBUS_16 = 16; данные CMD_MODBUS_16. */
#define CMD_MODBUS_16 16
/*
@@ -27,85 +44,110 @@ CMD_MODBUS_3 = 3,
ANS_MODBUS_6 = 7,
CMD_MODBUS_16 = 16,
*/
+/* Продолжает список аргументов, полей или выражение enum {; порядок элементов сохраняется. */
enum {
- CMD_LOAD=51, CMD_UPLOAD, CMD_RUN, CMD_XFLASH, CMD_TFLASH,
+ /* Записывает CMD_LOAD значением 51, CMD_UPLOAD, CMD_RUN, CMD_XFLASH, CMD_TFLASH,; данные CMD_LOAD. */
+ CMD_LOAD=51, CMD_UPLOAD, CMD_RUN, CMD_XFLASH, CMD_TFLASH,
+ /* Продолжает список аргументов, полей или выражение CMD_PEEK, CMD_POKE, CMD_INITLOAD, CMD_INIT,CMD_EXTEND,; порядок элементов сохраняется. */
CMD_PEEK, CMD_POKE, CMD_INITLOAD, CMD_INIT,CMD_EXTEND,
-
+
+ /* Записывает CMD_VECTOR значением 61,; данные CMD_VECTOR. */
CMD_VECTOR=61,
+ /* Продолжает список аргументов, полей или выражение CMD_IMPULSE,; порядок элементов сохраняется. */
CMD_IMPULSE,
- /* ñòàíäàðòíûå êîìàíäû */
+ /* стандартные команды */
+ /* Записывает CMD_STD значением 65, CMD_STD_ANS; данные CMD_STD. */
CMD_STD=65, CMD_STD_ANS
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
-
+
+/* Записывает false значением 0, true}; данные false. */
enum {false=0, true};
-/** Âîçâðàùàåò íîìåð êîììàíäû, åñëè åñòü èëè -1 åñëè òðàíçàêöèé íå áûëî */
+/** Возвращает номер комманды, если есть или -1 если транзакций не было */
+/* Объявляет интерфейс функции get_command; реализация вызывается через этот прототип. */
int get_command(RS_DATA *rs_arr);
-/** Ñòàíäàðòíûé îòâåò, áåç ïàðàìåòðîâ */
+/** Стандартный ответ, без параметров */
+/* Объявляет интерфейс функции Answer; реализация вызывается через этот прототип. */
void Answer(RS_DATA *rs_arr,int n);
-/* íà÷àëüíûå óñòàíîâêè (íå ðàáîòàåò)*/
+/* начальные установки (не работает)*/
+/* Объявляет интерфейс функции init; реализация вызывается через этот прототип. */
void init(RS_DATA *rs_arr);
-/**@name Êîììàíäû
-* Êîììàíäû, âûçûâàåìûå ÷åðåç ïîñëåäîâàòåëüíûé êàíàë*/
+/**@name Комманды
+* Комманды, вызываемые через последовательный канал*/
//@{
-/** Èíèöèèðîâàòü çàãðóçêó áëîêà.
- Íàñòðàèâàåò ïðèåì áëîêà äàííûõ */
-void initload(RS_DATA *rs_arr);
+/** Инициировать загрузку блока.
+ Настраивает прием блока данных */
+/* Объявляет интерфейс функции initload; реализация вызывается через этот прототип. */
+void initload(RS_DATA *rs_arr);
-/** Çàãðóçêà áëîêà.
- Âûçûâàåòñà ïîñëå çàãðóçêè áëîêà ÷åðåç RS */
+/** Загрузка блока.
+ Вызываетса после загрузки блока через RS */
+/* Объявляет интерфейс функции load; реализация вызывается через этот прототип. */
void load(RS_DATA *rs_arr);
-/** Âûïîëíèòü ïðîãðàììó â ôîðìàòå Serial Boot.
- @precondition Äîëæíà áûòü ïðîèçâåäåíà çàãðóçêà áëîêà
- Àäðåñ ïðîãðàììû áåðåòñà èç çàãîëîâêà è
- ñðàâíèâàåòñà ñ ïåðåìåííîé RecvPtr, çàïîëíàåìîé â ô-öèè load
+/** Выполнить программу в формате Serial Boot.
+ @precondition Должна быть произведена загрузка блока
+ Адрес программы беретса из заголовка и
+ сравниваетса с переменной RecvPtr, заполнаемой в ф-ции load
@see load */
-void run (RS_DATA *rs_arr);
+/* Объявляет интерфейс функции run; реализация вызывается через этот прототип. */
+void run (RS_DATA *rs_arr);
-/** Ïðî÷èòàòü à÷åéêó ïàìàòè */
+/** Прочитать ачейку памати */
+/* Объявляет интерфейс функции peek; реализация вызывается через этот прототип. */
void peek(RS_DATA *rs_arr);
-/** Çàïèñàòü â à÷åéêó ïàìàòè */
-void poke(RS_DATA *rs_arr);
+/** Записать в ачейку памати */
+/* Объявляет интерфейс функции poke; реализация вызывается через этот прототип. */
+void poke(RS_DATA *rs_arr);
-/** Ïåðåäàòü áëîê ïàìàòè */
-void upload(RS_DATA *rs_arr);
+/** Передать блок памати */
+/* Объявляет интерфейс функции upload; реализация вызывается через этот прототип. */
+void upload(RS_DATA *rs_arr);
-/** Ïðîøèòü XILINX.
- @precondition Äîëæíà áûòü ïðîèçâåäåíà çàãðóçêà áëîêà
- Àäðåñ è äëèíà ïðîøèâêè áåðåòñà èç çàãîëîâêà è
- ñðàâíèâàåòñà ñ ïåðåìåííûìè RecvPtr è Length, çàïîëíàåìûìè â ô-öèè load,
- òàê æå ñìîòðèò ìàãè÷åñêîå ñëîâî â íà÷àëå ïðîøèâêè
+/** Прошить XILINX.
+ @precondition Должна быть произведена загрузка блока
+ Адрес и длина прошивки беретса из заголовка и
+ сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load,
+ так же смотрит магическое слово в начале прошивки
@see load */
-void xflash(RS_DATA *rs_arr);
+/* Объявляет интерфейс функции xflash; реализация вызывается через этот прототип. */
+void xflash(RS_DATA *rs_arr);
-/** Ïðîøèòü TMS.
- @precondition Äîëæíà áûòü ïðîèçâåäåíà çàãðóçêà áëîêà
- Àäðåñ è äëèíà ïðîøèâêè áåðåòñà èç çàãîëîâêà è
- ñðàâíèâàåòñà ñ ïåðåìåííûìè RecvPtr è Length, çàïîëíàåìûìè â ô-öèè load
+/** Прошить TMS.
+ @precondition Должна быть произведена загрузка блока
+ Адрес и длина прошивки беретса из заголовка и
+ сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load
@see load */
-void tflash(RS_DATA *rs_arr);
+/* Объявляет интерфейс функции tflash; реализация вызывается через этот прототип. */
+void tflash(RS_DATA *rs_arr);
-/* ðàñøèðåííûå êîìàíäû äëà áèîñà */
+/* расширенные команды дла биоса */
+/* Объявляет интерфейс функции extendbios; реализация вызывается через этот прототип. */
void extendbios(RS_DATA *rs_arr);
+/* Объявляет интерфейс функции write_memory; реализация вызывается через этот прототип. */
void write_memory(unsigned long addr, unsigned int data);
+/* Объявляет интерфейс функции read_memory; реализация вызывается через этот прототип. */
unsigned int read_memory(unsigned long addr);
//@}
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
-#endif/* _BIOS_DSP */
+
+#endif/* _BIOS_DSP */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
diff --git a/Source/Internal/Include/caliber.h b/Source/Internal/Include/caliber.h
index dcaf6af..2f8d754 100644
--- a/Source/Internal/Include/caliber.h
+++ b/Source/Internal/Include/caliber.h
@@ -1,69 +1,105 @@
+/* Заводские калибровочные значения датчиков. Русские пояснения сохранены в UTF-8. */
+/* Условие компиляции BALSAM == 167: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 167 //-------------------------------------------------------------
+ /* Объявляет def_cal[][8] = {. Начальное значение задаётся справа от знака равенства. */
int def_cal[][8] = {
-// ÁÊÑÑ òðàíñ 100 1 100 2 150 1 150 2
- 0, 0, 0, 0, 455, 441, 2459, 2392, // Áîðò 0
- 0, 0, 0, 0, 462, 439, 2442, 2400, // Áîðò 1
+// БКСС транс 100 1 100 2 150 1 150 2
+ /* Элемент постоянной таблицы 0, 0, 0, 0, 455, 441, 2459, 2392,; порядок значений совпадает с порядком индексов потребителя. */
+ 0, 0, 0, 0, 455, 441, 2459, 2392, // Борт 0
+ /* Элемент постоянной таблицы 0, 0, 0, 0, 462, 439, 2442, 2400,; порядок значений совпадает с порядком индексов потребителя. */
+ 0, 0, 0, 0, 462, 439, 2442, 2400, // Борт 1
-// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
- 4936, 4877, 4972, 4857, 1886, 1898, 2517, 2535, // Áîðò 0
- 4876, 5005, 4876, 4847, 1898, 1873, 2535, 2502, // Áîðò 1
+// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
+ /* Элемент постоянной таблицы 4936, 4877, 4972, 4857, 1886, 1898, 2517, 2535,; порядок значений совпадает с порядком индексов потребителя. */
+ 4936, 4877, 4972, 4857, 1886, 1898, 2517, 2535, // Борт 0
+ /* Элемент постоянной таблицы 4876, 5005, 4876, 4847, 1898, 1873, 2535, 2502,; порядок значений совпадает с порядком индексов потребителя. */
+ 4876, 5005, 4876, 4847, 1898, 1873, 2535, 2502, // Борт 1
-// ÓÌÏ UA UC IA IC 20mA O 4mA O 20mA I 4mA I
- 7580, 7540, 2310, 2420, 1736, 683, 854, 14, // Áîðò 0 1062 1980
- 7580, 7540, 2310, 2420, 1745, 689, 860, 17, // Áîðò 1 1720 2405
+// УМП UA UC IA IC 20mA O 4mA O 20mA I 4mA I
+ /* Элемент постоянной таблицы 7580, 7540, 2310, 2420, 1736, 683, 854, 14,; порядок значений совпадает с порядком индексов потребителя. */
+ 7580, 7540, 2310, 2420, 1736, 683, 854, 14, // Борт 0 1062 1980
+ /* Элемент постоянной таблицы 7580, 7540, 2310, 2420, 1745, 689, 860, 17,; порядок значений совпадает с порядком индексов потребителя. */
+ 7580, 7540, 2310, 2420, 1745, 689, 860, 17, // Борт 1 1720 2405
-// ÁÊÑÑÄ 100 Ohm 150 Ohm
+// БКССД 100 Ohm 150 Ohm
+ /* Элемент постоянной таблицы 1281, 1272, 0, 0, 622, 2263, 0, 0,; порядок значений совпадает с порядком индексов потребителя. */
1281, 1272, 0, 0, 622, 2263, 0, 0,
-// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
+// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
+ /* Элемент постоянной таблицы 1290, 1285, 0, 0, 2045, 2045, 2725, 2725 };; порядок значений совпадает с порядком индексов потребителя. */
1290, 1285, 0, 0, 2045, 2045, 2725, 2725 };
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif //---------------------------------------------------------------------
+/* Условие компиляции BALSAM == 166: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 166 //-------------------------------------------------------------
+ /* Объявляет def_cal[][8] = {. Начальное значение задаётся справа от знака равенства. */
int def_cal[][8] = {
-// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
- 4936, 4877, 4972, 4857, 1960, 1920, 2610, 2570, // Áîðò 0
- 4876, 5005, 4876, 4847, 1950, 1965, 2600, 2615, // Áîðò 1
+// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
+ /* Элемент постоянной таблицы 4936, 4877, 4972, 4857, 1960, 1920, 2610, 2570,; порядок значений совпадает с порядком индексов потребителя. */
+ 4936, 4877, 4972, 4857, 1960, 1920, 2610, 2570, // Борт 0
+ /* Элемент постоянной таблицы 4876, 5005, 4876, 4847, 1950, 1965, 2600, 2615,; порядок значений совпадает с порядком индексов потребителя. */
+ 4876, 5005, 4876, 4847, 1950, 1965, 2600, 2615, // Борт 1
-// ÓÌÏ UA UC IA IC 20mA O 4mA O 20mA I 4mA I
- 3820, 3790, 3505, 3380, 1718, 673, 854, 14, // Áîðò 0
- 3835, 3785, 3522, 3332, 1697, 653, 860, 17, // Áîðò 1
+// УМП UA UC IA IC 20mA O 4mA O 20mA I 4mA I
+ /* Элемент постоянной таблицы 3820, 3790, 3505, 3380, 1718, 673, 854, 14,; порядок значений совпадает с порядком индексов потребителя. */
+ 3820, 3790, 3505, 3380, 1718, 673, 854, 14, // Борт 0
+ /* Элемент постоянной таблицы 3835, 3785, 3522, 3332, 1697, 653, 860, 17,; порядок значений совпадает с порядком индексов потребителя. */
+ 3835, 3785, 3522, 3332, 1697, 653, 860, 17, // Борт 1
-// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
+// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
+ /* Элемент постоянной таблицы 1281, 1272, 0, 0, 2049, 2050, 2749, 2750 };; порядок значений совпадает с порядком индексов потребителя. */
1281, 1272, 0, 0, 2049, 2050, 2749, 2750 };
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif //---------------------------------------------------------------------
+/* Условие компиляции BALSAM == 165: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 165 //-------------------------------------------------------------
+ /* Объявляет def_cal[][8] = {. Начальное значение задаётся справа от знака равенства. */
int def_cal[][8] = {
-// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
- 5130, 4960, 4925, 5070, 1881, 1881, 2506, 2516, // Áîðò 0
- 5020, 5040, 4950, 5030, 1871, 1879, 2507, 2514, // Áîðò 1
+// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
+ /* Элемент постоянной таблицы 5130, 4960, 4925, 5070, 1881, 1881, 2506, 2516,; порядок значений совпадает с порядком индексов потребителя. */
+ 5130, 4960, 4925, 5070, 1881, 1881, 2506, 2516, // Борт 0
+ /* Элемент постоянной таблицы 5020, 5040, 4950, 5030, 1871, 1879, 2507, 2514,; порядок значений совпадает с порядком индексов потребителя. */
+ 5020, 5040, 4950, 5030, 1871, 1879, 2507, 2514, // Борт 1
-// ÓÌÏ UA UC IA IC 20mA O 4mA O 20mA I 4mA I
- 3890, 3865, 5100, 4850, 1730, 675, 854, 14, // Áîðò 0
- 3845, 3800, 3250, 3100, 1044, 0, 860, 17, // Áîðò 1
+// УМП UA UC IA IC 20mA O 4mA O 20mA I 4mA I
+ /* Элемент постоянной таблицы 3890, 3865, 5100, 4850, 1730, 675, 854, 14,; порядок значений совпадает с порядком индексов потребителя. */
+ 3890, 3865, 5100, 4850, 1730, 675, 854, 14, // Борт 0
+ /* Элемент постоянной таблицы 3845, 3800, 3250, 3100, 1044, 0, 860, 17,; порядок значений совпадает с порядком индексов потребителя. */
+ 3845, 3800, 3250, 3100, 1044, 0, 860, 17, // Борт 1
-// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
+// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
+ /* Элемент постоянной таблицы 1289, 1280, 0, 0, 2073, 2071, 2773, 2771 };; порядок значений совпадает с порядком индексов потребителя. */
1289, 1280, 0, 0, 2073, 2071, 2773, 2771 };
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif //---------------------------------------------------------------------
+/* Условие компиляции BALSAM == 164: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 164 //-------------------------------------------------------------
+ /* Объявляет def_cal[][8] = {. Начальное значение задаётся справа от знака равенства. */
int def_cal[][8] = {
-// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
- 7573, 7573, 7573, 7573, 1979, 1888, 2592, 2513, // Áîðò 0
- 7573, 7573, 7573, 7573, 1970, 1907, 2584, 2558, // Áîðò 1
+// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
+ /* Элемент постоянной таблицы 7573, 7573, 7573, 7573, 1979, 1888, 2592, 2513,; порядок значений совпадает с порядком индексов потребителя. */
+ 7573, 7573, 7573, 7573, 1979, 1888, 2592, 2513, // Борт 0
+ /* Элемент постоянной таблицы 7573, 7573, 7573, 7573, 1970, 1907, 2584, 2558,; порядок значений совпадает с порядком индексов потребителя. */
+ 7573, 7573, 7573, 7573, 1970, 1907, 2584, 2558, // Борт 1
-// ÓÌÏ UA UC IA IC 20mA O 4mA O 20mA I 4mA I
- 3920, 3905, 3300, 3220, 1015, 0, 854, 14, // Áîðò 0
- 3835, 3785, 5100, 4600, 1750, 680, 860, 17, // Áîðò 1
+// УМП UA UC IA IC 20mA O 4mA O 20mA I 4mA I
+ /* Элемент постоянной таблицы 3920, 3905, 3300, 3220, 1015, 0, 854, 14,; порядок значений совпадает с порядком индексов потребителя. */
+ 3920, 3905, 3300, 3220, 1015, 0, 854, 14, // Борт 0
+ /* Элемент постоянной таблицы 3835, 3785, 5100, 4600, 1750, 680, 860, 17,; порядок значений совпадает с порядком индексов потребителя. */
+ 3835, 3785, 5100, 4600, 1750, 680, 860, 17, // Борт 1
-// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
+// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
+ /* Элемент постоянной таблицы 1266, 1267, 0, 0, 2063, 2040, 2678, 2655 };; порядок значений совпадает с порядком индексов потребителя. */
1266, 1267, 0, 0, 2063, 2040, 2678, 2655 };
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif //---------------------------------------------------------------------
@@ -71,15 +107,15 @@
#if PXXXXX == 1 //-------------------------------------------------------------
int def_cal[][6] = {
-// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
- 0400, 0400, 0400, 0400, 1950, 1950, 2600, 2600, // Áîðò 0
- 0400, 0400, 0400, 0400, 1950, 1950, 2600, 2600, // Áîðò 1
+// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
+ 0400, 0400, 0400, 0400, 1950, 1950, 2600, 2600, // Борт 0
+ 0400, 0400, 0400, 0400, 1950, 1950, 2600, 2600, // Борт 1
-// ÓÌÏ UA UC IA IC 20mA 4mA
- 0400, 0400, 4800, 4800, 0, 0, 0, 0, // Áîðò 0
- 0400, 0400, 4800, 4800, 0, 0, 0, 0, // Áîðò 1
+// УМП UA UC IA IC 20mA 4mA
+ 0400, 0400, 4800, 4800, 0, 0, 0, 0, // Борт 0
+ 0400, 0400, 4800, 4800, 0, 0, 0, 0, // Борт 1
-// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
+// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
1270, 1270, 0, 0, 1950, 1950, 2600, 2600 };
#endif //---------------------------------------------------------------------
*/
diff --git a/Source/Internal/Include/cntrl_adr.h b/Source/Internal/Include/cntrl_adr.h
index 2a8567c..8a87b76 100644
--- a/Source/Internal/Include/cntrl_adr.h
+++ b/Source/Internal/Include/cntrl_adr.h
@@ -1,34 +1,51 @@
+/* Собственный и универсальный адрес устройства. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: _CNTRL_ADR ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef _CNTRL_ADR
+/* Определяет защитный символ или переключатель _CNTRL_ADR для последующей компиляции. */
#define _CNTRL_ADR
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
- extern "C" {
-#endif
+ /* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
+ extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
-/** àäðåñ êîíòðîëëåðà äëà ïîñûëêè âñåì ÀÈÍàì */
+/** адрес контроллера дла посылки всем АИНам */
+/* Объявляет ADDR_FOR_ALL — данные ADDR_FOR_ALL. Память определена в другом модуле. */
extern int ADDR_FOR_ALL;
-/** àäðåñ êîíòðîëëåðà äëà ïîñûëêè îòâåòà */
-extern const int ADDR_ANSWER;
-
-/** àäðåñà òåðìèíàëà äëà ïîñûëêè îòâåòà */
-extern const int ADDR_TERMINAL;
+/** адрес контроллера дла посылки ответа */
+/* Объявляет ADDR_ANSWER — данные ADDR_ANSWER. Память определена в другом модуле. */
+extern const int ADDR_ANSWER;
-/* Àäðåñ êîíòðîëëåðà */
+/** адреса терминала дла посылки ответа */
+/* Объявляет ADDR_TERMINAL — данные ADDR_TERMINAL. Память определена в другом модуле. */
+extern const int ADDR_TERMINAL;
+
+/* Адрес контроллера */
+/* Объявляет CNTRL_ADDR — данные CNTRL_ADDR. Память определена в другом модуле. */
extern int CNTRL_ADDR;
-/* Óíèâåðñàëüíûé àäðåñ êîíòðîëëåðà */
+/* Универсальный адрес контроллера */
+/* Объявляет CNTRL_ADDR_UNIVERSAL — данные CNTRL_ADDR_UNIVERSAL. Память определена в другом модуле. */
extern const int CNTRL_ADDR_UNIVERSAL;
-/** Óñòàíîâêà àäðåñà êîíòðîëëåðà äëà ïðîøèâêè */
+/** Установка адреса контроллера дла прошивки */
+/* Устанавливает собственный и универсальный адрес для проверки адресованных команд. */
void set_cntrl_addr (int cntrl_addr,int cntrl_addr_for_all);
+/* Объявляет cntr_addr_c — данные cntr_addr_c. Память определена в другом модуле. */
extern int cntr_addr_c;
+/* Объявляет cntr_addr_c_all — данные cntr_addr_c_all. Память определена в другом модуле. */
extern int cntr_addr_c_all;
-
+
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-#endif /* _CNTRL_ADR */
+#endif /* _CNTRL_ADR */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
diff --git a/Source/Internal/Include/crc16.h b/Source/Internal/Include/crc16.h
index a1787cc..6282199 100644
--- a/Source/Internal/Include/crc16.h
+++ b/Source/Internal/Include/crc16.h
@@ -1,8 +1,15 @@
+/* Таблицы и функции вычисления контрольных сумм CRC. Русские пояснения сохранены в UTF-8. */
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned short WORD;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned char byte;
+/* Объявляет интерфейс функции get_crc_ccitt; реализация вызывается через этот прототип. */
unsigned int get_crc_ccitt(unsigned int crc, unsigned int *buf, unsigned long size );
+/* Объявляет интерфейс функции get_crc_16; реализация вызывается через этот прототип. */
unsigned int get_crc_16(unsigned int crc,unsigned int *buf,unsigned long size );
+/* Объявляет интерфейс функции get_crc_16b; реализация вызывается через этот прототип. */
unsigned int get_crc_16b(unsigned int crc,unsigned int *buf,unsigned long size );
+/* Объявляет интерфейс функции get_crc16; реализация вызывается через этот прототип. */
int get_crc16(unsigned int *buf, int size );
diff --git a/Source/Internal/Include/ecan.h b/Source/Internal/Include/ecan.h
index 36cf526..aed1b83 100644
--- a/Source/Internal/Include/ecan.h
+++ b/Source/Internal/Include/ecan.h
@@ -1,6 +1,11 @@
+/* Штатный eCAN и отдельный служебный обмен УМП/GAS. Русские пояснения сохранены в UTF-8. */
+/* Настраивает eCAN, скорость, почтовые ящики и маршрутизацию прерываний для выбранного режима платы. */
void InitCan(int Port, int DevNum);
+/* Упаковывает адрес и технологические слова в штатный CAN-кадр и запускает передачу mailbox. */
void CAN_send(int Port, int data[], int Addr);
+/* Объявляет CAN_input_data — CAN вход данные. Память определена в другом модуле. */
extern int CAN_input_data[];
-/* Íåáëîêèðóþùàÿ ïåðåäà÷à îòâåòîâ ëîããåðà îòäåëüíûì CAN mailbox. */
+/* Неблокирующая передача ответов логгера отдельным CAN mailbox. */
+/* В главном цикле готовит замороженный ответ служебного CAN и отправляет его двухсловными фрагментами. */
void UMP_CAN_service(void);
diff --git a/Source/Internal/Include/eeprom_config.h b/Source/Internal/Include/eeprom_config.h
index f3c3eaa..f44f213 100644
--- a/Source/Internal/Include/eeprom_config.h
+++ b/Source/Internal/Include/eeprom_config.h
@@ -1,15 +1,26 @@
+/* Выбор профиля физически установленной EEPROM при сборке. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: BALSAM167_EEPROM_CONFIG_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef BALSAM167_EEPROM_CONFIG_H
+/* Определяет защитный символ или переключатель BALSAM167_EEPROM_CONFIG_H для последующей компиляции. */
#define BALSAM167_EEPROM_CONFIG_H
-/* Build-time checkbox: 0 = AT25256B (32 KiB), 1 = M95M02-DR (256 KiB).
- * This must match the soldered part BEFORE startup loads saved parameters.
- * CCS: change the value below, then Project > Clean and Rebuild.
- * Command-line builds may override EEPROM_M95M02 for that build only.
- * A GUI checkbox cannot change SPI ROM boot or startup initialization.
+/* Аппаратный профиль выбирается при сборке: 0 — AT25256B (32 КиБ),
+ * 1 — M95M02-DR (256 КиБ). Он обязан соответствовать установленной микросхеме
+ * до загрузки сохранённых параметров при старте.
+ * В CCS измените определение ниже, затем выполните Clean/Rebuild.
+ * Ключ компилятора может переопределить значение только для своей сборки.
+ * Выбор профиля во время работы не меняет загрузку ROM по SPI и начальную адресацию.
*/
+/* Начинает условие: EEPROM_M95M02 ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef EEPROM_M95M02
+/* Задаёт EEPROM_M95M02 = 0; выбор аппаратной EEPROM при сборке: 0 — AT25256B 32 КиБ, 1 — M95M02 256 КиБ и GAS. */
#define EEPROM_M95M02 0
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции EEPROM_M95M02 != 0 и EEPROM_M95M02 != 1: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02 != 0 && EEPROM_M95M02 != 1
+/* Останавливает сборку при недопустимой конфигурации: EEPROM_M95M02_must_be_0_or_1. */
#error EEPROM_M95M02_must_be_0_or_1
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
diff --git a/Source/Internal/Include/filter_bat2.h b/Source/Internal/Include/filter_bat2.h
index a002e9b..aa9d9dd 100644
--- a/Source/Internal/Include/filter_bat2.h
+++ b/Source/Internal/Include/filter_bat2.h
@@ -1,49 +1,82 @@
+/* Накопительный фильтр измерительных каналов. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: _FILTER_BAT2 ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef _FILTER_BAT2
+/* Определяет защитный символ или переключатель _FILTER_BAT2 для последующей компиляции. */
#define _FILTER_BAT2
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
- extern "C" {
+ /* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
+ extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт K1_FILTER_BATTER2_1HZ = 0.0000096; данные K1_FILTER_BATTER2_1HZ. */
#define K1_FILTER_BATTER2_1HZ 0.0000096
+/* Задаёт K2_FILTER_BATTER2_1HZ = 1.94468056; данные K2_FILTER_BATTER2_1HZ. */
#define K2_FILTER_BATTER2_1HZ 1.94468056
+/* Задаёт K3_FILTER_BATTER2_1HZ = -0.94471895; данные K3_FILTER_BATTER2_1HZ. */
#define K3_FILTER_BATTER2_1HZ -0.94471895
+/* Задаёт K1_FILTER_BATTER2_3HZ = 0.00008766; данные K1_FILTER_BATTER2_3HZ. */
#define K1_FILTER_BATTER2_3HZ 0.00008766
+/* Задаёт K2_FILTER_BATTER2_3HZ = 1.97347532; данные K2_FILTER_BATTER2_3HZ. */
#define K2_FILTER_BATTER2_3HZ 1.97347532
+/* Задаёт K3_FILTER_BATTER2_3HZ = -0.97382594; данные K3_FILTER_BATTER2_3HZ. */
#define K3_FILTER_BATTER2_3HZ -0.97382594
+/* Задаёт K1_FILTER_BATTER2_5HZ = 0.00024135; данные K1_FILTER_BATTER2_5HZ. */
#define K1_FILTER_BATTER2_5HZ 0.00024135
+/* Задаёт K2_FILTER_BATTER2_5HZ = 1.95581276; данные K2_FILTER_BATTER2_5HZ. */
#define K2_FILTER_BATTER2_5HZ 1.95581276
+/* Задаёт K3_FILTER_BATTER2_5HZ = -0.95677816; данные K3_FILTER_BATTER2_5HZ. */
#define K3_FILTER_BATTER2_5HZ -0.95677816
+/* Задаёт K1_FILTER_BATTER2_10HZ = 0.00094411; данные K1_FILTER_BATTER2_10HZ. */
#define K1_FILTER_BATTER2_10HZ 0.00094411
+/* Задаёт K2_FILTER_BATTER2_10HZ = 1.91126422; данные K2_FILTER_BATTER2_10HZ. */
#define K2_FILTER_BATTER2_10HZ 1.91126422
+/* Задаёт K3_FILTER_BATTER2_10HZ = -0.91504065; данные K3_FILTER_BATTER2_10HZ. */
#define K3_FILTER_BATTER2_10HZ -0.91504065
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef struct { float k_0;
+ /* Объявляет k_1 — данные k_1. */
float k_1;
+ /* Объявляет k_2 — данные k_2. */
float k_2;
+ /* Объявляет i_0 — данные i_0. */
float i_0;
+ /* Объявляет i_1 — данные i_1. */
float i_1;
+ /* Объявляет i_2 — данные i_2. */
float i_2;
+ /* Объявляет u_0 — данные u_0. */
float u_0;
+ /* Объявляет u_1 — данные u_1. */
float u_1;
+ /* Объявляет u_2 — данные u_2. */
float u_2;
- } FILTERBAT;
+ /* Продолжает список аргументов, полей или выражение } FILTERBAT;; порядок элементов сохраняется. */
+ } FILTERBAT;
+/* Задаёт DEF_FILTERBAT = { K1_FILTER_BATTER2_3HZ,; данные DEF_FILTERBAT. */
#define DEF_FILTERBAT { K1_FILTER_BATTER2_3HZ, \
- K2_FILTER_BATTER2_3HZ, \
- K3_FILTER_BATTER2_3HZ, \
- 0,0,0,0,0,0}
+ K2_FILTER_BATTER2_3HZ, /* Продолжает список аргументов, полей или выражение K2_FILTER_BATTER2_3HZ,; порядок элементов сохраняется. */ \
+ K3_FILTER_BATTER2_3HZ, /* Продолжает список аргументов, полей или выражение K3_FILTER_BATTER2_3HZ,; порядок элементов сохраняется. */ \
+ 0,0,0,0,0,0} /* Элемент постоянной таблицы 0,0,0,0,0,0}; порядок значений совпадает с порядком индексов потребителя. */
+/* Обновляет скользящий фильтр измерительного канала и его накопленные значения. */
float filterbat(FILTERBAT *b, float InpVarCurr);
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-#endif /* _FILTER_BAT2 */
+#endif /* _FILTER_BAT2 */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
diff --git a/Source/Internal/Include/gas167.h b/Source/Internal/Include/gas167.h
index 444a5f2..392dd8e 100644
--- a/Source/Internal/Include/gas167.h
+++ b/Source/Internal/Include/gas167.h
@@ -1,28 +1,47 @@
+/* Дополнительная карта GAS 167/v1 только для новой EEPROM M95M02. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: BALSAM167_GAS_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef BALSAM167_GAS_H
+/* Определяет защитный символ или переключатель BALSAM167_GAS_H для последующей компиляции. */
#define BALSAM167_GAS_H
+/* Подключает "eeprom_config.h": выбор профиля физически установленной EEPROM при сборке. */
#include "eeprom_config.h"
+/* Подключает : настройки и интерфейс stdint. */
#include
-/* Board profile 167/v1, word addresses, independent of the wire transport.
- * The original register and UMP addresses remain valid in both builds.
- * Only the physically fitted M95M02 version exposes the additional regions. */
+/* Профиль платы 167/v1 использует словные адреса независимо от транспорта.
+ * Штатные адреса технологических регистров и УМП остаются доступными в обеих сборках.
+ * Дополнительные области GAS присутствуют только при установленной M95M02.
+ */
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+/* Задаёт GAS167_REG_BASE = 0x5000U; начало псевдонимов 128 технологических регистров GAS, адрес 0x5000. */
#define GAS167_REG_BASE 0x5000U
+/* Задаёт GAS167_REG_COUNT = 128U; число технологических слов GAS; скрытое слово modbus[128] в диапазон не входит. */
#define GAS167_REG_COUNT 128U
+/* Задаёт GAS167_INFO_BASE = 0x5F00U; начало доступного только для чтения дескриптора GAS, адрес 0x5F00. */
#define GAS167_INFO_BASE 0x5F00U
+/* Задаёт GAS167_INFO_WORDS = 8U; длина дескриптора GAS — восемь 16-битных слов. */
#define GAS167_INFO_WORDS 8U
+/* Задаёт GAS167_MAX_WORDS = 124U; максимальная длина чтения GAS — 124 слова; служебный CAN требует чётную длину. */
#define GAS167_MAX_WORDS 124U
+/* Задаёт GAS167_PROFILE_VERSION = 1U; версия карты адресов GAS 167/v1. */
#define GAS167_PROFILE_VERSION 1U
-#define GAS167_CAPABILITIES 7U /* bit 0 RTU, bit 1 service CAN, bit 2 FC06 */
+#define GAS167_CAPABILITIES 7U /* Бит 0 — RTU, бит 1 — служебный CAN, бит 2 — запись FC06. */ /* Задаёт GAS167_CAPABILITIES = 7U; маска возможностей: бит 0 — RTU, бит 1 — служебный CAN, бит 2 — FC06. */
-/* Called by the main-loop transports under their snapshot IRQ lock.
- * Capacity: at least GAS167_MAX_WORDS uint16_t words.
- * RTU reads: 1..124 words; paired service CAN reads: 2..124, even.
- * Successful reads return their count. Writes/errors return address/value.
- * error uses Modbus codes 0 (success), 1 (function), 2 (address), 3 (value).
- * No EEPROM I/O, allocation, or changes to the existing logger. */
+/* Вызывается транспортами из главного цикла под краткой блокировкой IRQ.
+ * Буфер ответа должен вмещать не меньше GAS167_MAX_WORDS слов uint16_t.
+ * RTU читает 1..124 слова; служебный CAN — чётное число слов 2..124.
+ * Успешное чтение возвращает число слов. Запись или ошибка возвращает адрес/значение.
+ * error: 0 — успех, 1 — функция, 2 — адрес, 3 — значение.
+ * Здесь нет обмена EEPROM, выделения памяти или изменения устройства регистратора.
+ */
+/* Проверяет принадлежность адреса одному из двух диапазонов GAS 167/v1; доступно только для M95M02. */
int gas167_contains(uint16_t address);
+/* Проверяет весь запрос FC03/FC06 до доступа к данным и формирует снимок регистров или дескриптора GAS. */
unsigned gas167_prepare(unsigned function, uint16_t address, uint16_t value,
+ /* Объявляет can — CAN; reply — данные reply. Хранит указатель на данные. */
int can, uint16_t *reply, unsigned *error);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
diff --git a/Source/Internal/Include/kanal.h b/Source/Internal/Include/kanal.h
index fce5473..ef7b690 100644
--- a/Source/Internal/Include/kanal.h
+++ b/Source/Internal/Include/kanal.h
@@ -1 +1,3 @@
+/* Последовательный вывод данных канала индикации. Русские пояснения сохранены в UTF-8. */
+/* Объявляет интерфейс функции kanal_Send; реализация вызывается через этот прототип. */
void kanal_Send(int adr, long dat, int dot);
diff --git a/Source/Internal/Include/log_to_mem.h b/Source/Internal/Include/log_to_mem.h
index 383ff49..8afd526 100644
--- a/Source/Internal/Include/log_to_mem.h
+++ b/Source/Internal/Include/log_to_mem.h
@@ -1,57 +1,94 @@
+/* Двухбанковый регистратор событий нагрузки во внешней RAM. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: _LOG_TO_MEM ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef _LOG_TO_MEM
-#define _LOG_TO_MEM
+/* Определяет защитный символ или переключатель _LOG_TO_MEM для последующей компиляции. */
+#define _LOG_TO_MEM
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
- extern "C" {
+ /* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
+ extern "C" {
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-/* Îïðåäåëåíèa äëa ðàáîòû ëîããåðà */
+/* Определениa длa работы логгера */
+/* Задаёт LOG_PAGE_START = 0x0200000; данные LOG_PAGE_START. */
#define LOG_PAGE_START 0x0200000
+/* Задаёт LOG_PAGE_LEN = 0xFA00; данные LOG_PAGE_LEN. */
#define LOG_PAGE_LEN 0xFA00
-extern int no_write, never_write; // Ôëàãè, ÷òîáû íå ïèñàòü (åñëè ÷òî)
+/* Объявляет no_write — no запись; never_write — never запись. Память определена в другом модуле. */
+extern int no_write, never_write; // Флаги, чтобы не писать (если что)
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef struct
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Объявляет Start — данные Start. */
unsigned long Start;
+ /* Объявляет Finis — данные Finis. */
unsigned long Finis;
+ /* Объявляет Adres — данные Adres. */
unsigned long Adres;
+ /* Объявляет Circl — данные Circl. */
unsigned int Circl;
+/* Продолжает список аргументов, полей или выражение } LOG;; порядок элементов сохраняется. */
} LOG;
+/* Объявляет Log — данные Log. Память определена в другом модуле. */
extern LOG Log;
-/* Çàïèñü ñëîâa â ïàìàòü, ãäå ëîãè ëåæàò */
+/* Запись словa в памать, где логи лежат */
+/* Задаёт Log_to_mem = *(int *)(Log.Adres++) = x; данные Log_to_mem. */
#define Log_to_mem(x) *(int *)(Log.Adres++) = x
-/* Ïðîâåðêà ãðàíèöû ïàìàòè äëà ëîãîâ */
+/* Проверка границы памати дла логов */
//#define Test_mem_limit(x) if(Log.Adres > (Log.Finis - (x))) Log.Adres = Log.Start
+/* Задаёт Test_mem_limit = if(Log.Adres > (Log.Finis - (x))) Log.Adres -=(x); данные Test_mem_limit. */
#define Test_mem_limit(x) if(Log.Adres > (Log.Finis - (x))) Log.Adres -=(x)
-/* Î÷èñòêà ïàìàòè (îáíóëåíèå) */
+/* Очистка памати (обнуление) */
+/* Обнуляет выделенный диапазон внешней RAM журнала и задаёт границы кольцевого буфера. */
void clear_mem();
-/* Ëîããåð ÓÌÏ: îòäåëüíîå àäðåñíîå ïðîñòðàíñòâî Modbus, áåç èçìåíåíèÿ
- * 128 òåõíîëîãè÷åñêèõ ðåãèñòðîâ. Äâà áàíêà ïî 760 çàïèñåé:
- * òåêóùèé êîëüöåâîé æóðíàë è çàôèêñèðîâàííûé ôðàãìåíò îòêëþ÷åíèÿ. */
+/* Логгер УМП: отдельное адресное пространство Modbus, без изменения
+ * 128 технологических регистров. Два банка по 760 записей:
+ * текущий кольцевой журнал и зафиксированный фрагмент отключения. */
+/* Задаёт UMP_LOG_BASE = 0x1000U; данные UMP_LOG_BASE. */
#define UMP_LOG_BASE 0x1000U
+/* Задаёт UMP_LOG_DATA = 0x1010U; UMP LOG данные. */
#define UMP_LOG_DATA 0x1010U
+/* Задаёт UMP_LOG_WORDS = 42U; UMP LOG слова. */
#define UMP_LOG_WORDS 42U
+/* Задаёт UMP_LOG_CAPACITY = 760U; данные UMP_LOG_CAPACITY. */
#define UMP_LOG_CAPACITY 760U
+/* Задаёт UMP_LOG_LIVE_RECORDS = (120U / UMP_LOG_WORDS); данные UMP_LOG_LIVE_RECORDS. */
#define UMP_LOG_LIVE_RECORDS (120U / UMP_LOG_WORDS)
+/* Задаёт UMP_LOG_LIVE = 0x1100U; данные UMP_LOG_LIVE. */
#define UMP_LOG_LIVE 0x1100U
+/* Объявляет ump_dac_ramp — ump ЦАП ramp; ump_dac_duration — ump ЦАП duration; ump_dac_go10 — ump ЦАП go 10; ump_dac_stop10 — ump ЦАП stop 10; ump_dac_position — ump ЦАП position. Память определена в другом модуле. */
extern unsigned int ump_dac_ramp, ump_dac_duration, ump_dac_go10, ump_dac_stop10, ump_dac_position;
+/* Явно инициализирует оба банка регистратора до включения IRQ; повторный старт записи архив не стирает. */
void ump_log_init(void);
+/* Продвигает время регистратора в Timer1 и снимает записи с заданным периодом. */
void ump_log_tick(void);
+/* Обслуживает изменения дискретных входов и выходов из главного цикла. */
void ump_log_io(void);
+/* Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
void ump_log_can(unsigned int header, unsigned int a, unsigned int b, unsigned int c);
+/* Регистрирует изменение слова команд после записи по последовательному интерфейсу. */
void ump_log_rs(void);
+/* Проверяет область чтения регистратора и возвращает слова состояния либо архивной записи. */
unsigned int ump_log_read(unsigned int address);
+/* Применяет допустимые команды управления регистратором, сохраняя ограничения адресов. */
int ump_log_write(unsigned int address, unsigned int value);
+/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-#endif /* _LOG_TO_MEM */
+#endif /* _LOG_TO_MEM */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
diff --git a/Source/Internal/Include/measure.h b/Source/Internal/Include/measure.h
index 30a8b79..229b9fc 100644
--- a/Source/Internal/Include/measure.h
+++ b/Source/Internal/Include/measure.h
@@ -1,121 +1,212 @@
+/* Обработка датчиков, вычисление величин и миллисекундный такт системы. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: _MEASURE ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef _MEASURE
+/* Определяет защитный символ или переключатель _MEASURE для последующей компиляции. */
#define _MEASURE
+/* Выполняет миллисекундный такт датчиков, таймеров связи, регистратора и защиты нагрузки. */
interrupt void cpu_timer1_isr_SENS(void);
+/* Объявляет интерфейс функции Init_sensors; реализация вызывается через этот прототип. */
void Init_sensors(void);
+/* Объявляет интерфейс функции Init_sensors_more; реализация вызывается через этот прототип. */
void Init_sensors_more(void);
+/* Объявляет интерфейс функции Init_packMask; реализация вызывается через этот прототип. */
void Init_packMask(void);
+/* Объявляет интерфейс функции Temper_count; реализация вызывается через этот прототип. */
void Temper_count(int chan, int ovn);
+/* Объявляет интерфейс функции Current_count; реализация вызывается через этот прототип. */
void Current_count(int chan);
+/* Объявляет интерфейс функции Power_count; реализация вызывается через этот прототип. */
void Power_count(int chan);
+/* Объявляет интерфейс функции calc_sensor_koef; реализация вызывается через этот прототип. */
void calc_sensor_koef(void);
+/* Объявляет интерфейс функции Is_Voltage_Hi; реализация вызывается через этот прототип. */
void Is_Voltage_Hi(void);
+/* Объявляет интерфейс функции calc_volta_edge; реализация вызывается через этот прототип. */
void calc_volta_edge(void);
+/* Объявляет интерфейс функции er_anal; реализация вызывается через этот прототип. */
int er_anal(int term, unsigned int * count, long edge, int pre);
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef union
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле Tear, ширина 1 бит; данные Tear. */
unsigned int Tear :1;
+ /* Битовое поле res, ширина 1 бит; данные res. */
unsigned int res :1;
+ /* Битовое поле Wry, ширина 1 бит; данные Wry. */
unsigned int Wry :1;
+ /* Битовое поле Out, ширина 1 бит; данные Out. */
unsigned int Out :1;
+ /* Битовое поле Over, ширина 1 бит; данные Over. */
unsigned int Over :1;
+ /* Битовое поле Hyper, ширина 1 бит; данные Hyper. */
unsigned int Hyper :1;
+ /* Битовое поле Contr, ширина 1 бит; данные Contr. */
unsigned int Contr :1;
+ /* Битовое поле res2, ширина 1 бит; данные res2. */
unsigned int res2 :1;
+ /* Битовое поле Stop, ширина 1 бит; данные Stop. */
unsigned int Stop :1;
+ /* Битовое поле Ready, ширина 1 бит; данные Ready. */
unsigned int Ready :1;
+ /* Битовое поле Discr1, ширина 1 бит; данные Discr1. */
unsigned int Discr1 :1;
+ /* Битовое поле Discr2, ширина 1 бит; данные Discr2. */
unsigned int Discr2 :1;
+ /* Битовое поле Discr3, ширина 1 бит; данные Discr3. */
unsigned int Discr3 :1;
+ /* Битовое поле Discr4, ширина 1 бит; данные Discr4. */
unsigned int Discr4 :1;
+ /* Битовое поле Ignor, ширина 1 бит; данные Ignor. */
unsigned int Ignor :1;
+ /* Битовое поле Bypas, ширина 1 бит; данные Bypas. */
unsigned int Bypas :1;
+ /* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
} bit;
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
unsigned int all;
+/* Задаёт Imit = Discr4; данные Imit. */
#define Imit Discr4
+/* Продолжает список аргументов, полей или выражение } ERROR;; порядок элементов сохраняется. */
} ERROR;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef union
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Битовое поле Error, ширина 1 бит; ошибка. */
unsigned int Error :1;
+ /* Битовое поле Alarm, ширина 1 бит; данные Alarm. */
unsigned int Alarm :1;
+ /* Битовое поле OverHeat, ширина 1 бит; данные OverHeat. */
unsigned int OverHeat :1;
+ /* Битовое поле SubHeat, ширина 1 бит; данные SubHeat. */
unsigned int SubHeat :1;
+ /* Битовое поле OutHeat, ширина 1 бит; данные OutHeat. */
unsigned int OutHeat :1;
+ /* Битовое поле Test_lamp, ширина 1 бит; данные Test_lamp. */
unsigned int Test_lamp :1;
+ /* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
} bit;
+ /* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
unsigned int all;
+/* Продолжает список аргументов, полей или выражение } FLAG;; порядок элементов сохраняется. */
} FLAG;
+/* Задаёт NOER = 0xE000; данные NOER. */
#define NOER 0xE000//C
+/* Задаёт EROR = 0x01FF; данные EROR. */
#define EROR 0x01FF
-#define READY_FREQ (500.0 * 2)// Ãö
-#define BLINK_FREQ 2 // Ãö
+/* Задаёт READY_FREQ = (500.0 * 2); частота основного такта Timer1 в герцах. */
+#define READY_FREQ (500.0 * 2)// Гц
+/* Задаёт BLINK_FREQ = 2; данные BLINK_FREQ. */
+#define BLINK_FREQ 2 // Гц
+/* Задаёт BLINK_TIME = (READY_FREQ / BLINK_FREQ); данные BLINK_TIME. */
#define BLINK_TIME (READY_FREQ / BLINK_FREQ)
+/* Задаёт CANPOWSE = 20; данные CANPOWSE. */
#define CANPOWSE 20
-#define ADC_FREQ 3750 //3885.0//777//2000//20000 //777 //3885 // Ãö (777*5)
-#define DAC_FREQ 200//5 // Ãö
+/* Задаёт ADC_FREQ = 3750; частота запуска последовательности АЦП в герцах. */
+#define ADC_FREQ 3750 //3885.0//777//2000//20000 //777 //3885 // Гц (777*5)
+/* Задаёт DAC_FREQ = 200; частота обновления тока ЦАП в герцах. */
+#define DAC_FREQ 200//5 // Гц
+/* Задаёт LOAD_TIME = 30; время нарастания тока нагрузки в секундах. */
#define LOAD_TIME 30//15 // sec
+/* Объявляет Caliber_time — данные Caliber_time. Память определена в другом модуле. */
extern unsigned int Caliber_time;
+/* Задаёт SENS_ERR_WAIT = 10; данные SENS_ERR_WAIT. */
#define SENS_ERR_WAIT 10
+/* Задаёт maximum_bright = 10; данные maximum_bright. */
#define maximum_bright 10
+/* Задаёт Pi = 3.1415926535897932384626433832795; данные Pi. */
#define Pi 3.1415926535897932384626433832795
+/* Задаёт Pi_2 = 1.5707963267948966192313216916398; данные Pi_2. */
#define Pi_2 1.5707963267948966192313216916398
+/* Задаёт ZERO = 27; данные ZERO. */
#define ZERO 27
-#define Cooling 5 // (°Ñ) Ãèñòåðåçèñ ïî ñíàòèþ ïåðåãðåâà
+/* Задаёт Cooling = 5; данные Cooling. */
+#define Cooling 5 // (°С) Гистерезис по снатию перегрева
+/* Задаёт COSPi6 = 0.86602540378443864676372317075294; данные COSPi6. */
#define COSPi6 0.86602540378443864676372317075294
+/* Задаёт RADIX2 = 1.4142135623730950488016887242097; данные RADIX2. */
#define RADIX2 1.4142135623730950488016887242097
-#define POWER_380 0 // ïèòàíèå 380Â
-#define POWER_38O 1 // ïèòàíèå 380Â
-#define CURRENT 2 // òîê
-#define VOLTAGE 3 // íàïðàæåíèå
-#define POWER_31 4 // ïèòàíèå 31Â
-#define POWER_27 5 // ïèòàíèå 24Â
-#define POWER_24 6 // ïèòàíèå 24Â
-#define POWER_15 7 // ïèòàíèå 15Â
-#define TERMO_AD 8 // òåðìîäàò÷èê ìåëêîñõåìà
-#define TERMO_RS 9 // òåðìîðåçèñòîð
-#define TRM_OBEH 10 // òåðìîäàò÷èê îâåí
+/* Задаёт POWER_380 = 0; данные POWER_380. */
+#define POWER_380 0 // питание 380В
+/* Задаёт POWER_38O = 1; данные POWER_38O. */
+#define POWER_38O 1 // питание 380В
+/* Задаёт CURRENT = 2; данные CURRENT. */
+#define CURRENT 2 // ток
+/* Задаёт VOLTAGE = 3; данные VOLTAGE. */
+#define VOLTAGE 3 // напражение
+/* Задаёт POWER_31 = 4; данные POWER_31. */
+#define POWER_31 4 // питание 31В
+/* Задаёт POWER_27 = 5; данные POWER_27. */
+#define POWER_27 5 // питание 24В
+/* Задаёт POWER_24 = 6; данные POWER_24. */
+#define POWER_24 6 // питание 24В
+/* Задаёт POWER_15 = 7; данные POWER_15. */
+#define POWER_15 7 // питание 15В
+/* Задаёт TERMO_AD = 8; данные TERMO_AD. */
+#define TERMO_AD 8 // термодатчик мелкосхема
+/* Задаёт TERMO_RS = 9; данные TERMO_RS. */
+#define TERMO_RS 9 // терморезистор
+/* Задаёт TRM_OBEH = 10; данные TRM_OBEH. */
+#define TRM_OBEH 10 // термодатчик овен
+/* Объявляет TPL_CANS — данные TPL_CANS; tpl_cans — данные tpl_cans. Память определена в другом модуле. */
extern int TPL_CANS,tpl_cans;
+/* Объявляет READY — данные READY. Память определена в другом модуле. */
extern int READY;
+/* Объявляет filter — данные filter. Память определена в другом модуле. */
extern FILTERBAT filter[];
+/* Объявляет adc_filter — АЦП filter. Память определена в другом модуле. */
extern FILTERBAT adc_filter[];
+/* Объявляет out_filter — данные out_filter. Память определена в другом модуле. */
extern FILTERBAT out_filter[];
+/* Объявляет sens_type — данные sens_type. Память определена в другом модуле. */
extern int sens_type[];
+/* Объявляет ext_temp — данные ext_temp; ext_diag — данные ext_diag. Память определена в другом модуле. */
extern int ext_temp[], ext_diag[];
+/* Объявляет Lonely — данные Lonely. Память определена в другом модуле. */
extern unsigned long Lonely;
+/* Объявляет CanPowse — CAN Powse; CanGO — CAN GO. Память определена в другом модуле. */
extern unsigned int CanPowse,CanGO;
+/* Объявляет Maska[][8];. Память определена в другом модуле. */
extern unsigned int Maska[][8];
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif //_MEASURE
diff --git a/Source/Internal/Include/message.h b/Source/Internal/Include/message.h
index 350e495..3a16c27 100644
--- a/Source/Internal/Include/message.h
+++ b/Source/Internal/Include/message.h
@@ -1,42 +1,75 @@
+/* Обработка Modbus, заводские параметры и сохранение настроек. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: MESSAGE_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef MESSAGE_H
+/* Определяет защитный символ или переключатель MESSAGE_H для последующей компиляции. */
#define MESSAGE_H
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned char CHAR;
-#define ANSWER_LEN 0x80 //70 // 16+16+16+16+6
-#define REPLY_LEN 0x19
+/* Задаёт ANSWER_LEN = 0x80; данные ANSWER_LEN. */
+#define ANSWER_LEN 0x80 //70 // 16+16+16+16+6
+/* Задаёт REPLY_LEN = 0x19; данные REPLY_LEN. */
+#define REPLY_LEN 0x19
+/* Задаёт byte_hi = byte_1; данные byte_hi. */
#define byte_hi byte_1
+/* Задаёт byte_lo = byte_0; данные byte_lo. */
#define byte_lo byte_0
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef struct
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- unsigned char Address; // Àäðåñ êîíòðîëëåðà
- unsigned char Number; // Íîìåð êîìàíäû
+ /* Объявляет Address — адрес. */
+ unsigned char Address; // Адрес контроллера
+ /* Объявляет Number — данные Number. */
+ unsigned char Number; // Номер команды
+ /* Продолжает список аргументов, полей или выражение BAITE byte0;; порядок элементов сохраняется. */
BAITE byte0;
+ /* Продолжает список аргументов, полей или выражение BAITE byte1;; порядок элементов сохраняется. */
BAITE byte1;
+ /* Продолжает список аргументов, полей или выражение BAITE byte2;; порядок элементов сохраняется. */
BAITE byte2;
+ /* Продолжает список аргументов, полей или выражение BAITE byte3;; порядок элементов сохраняется. */
BAITE byte3;
+ /* Продолжает список аргументов, полей или выражение BAITE byte4;; порядок элементов сохраняется. */
BAITE byte4;
+ /* Продолжает список аргументов, полей или выражение BAITE byte5;; порядок элементов сохраняется. */
BAITE byte5;
+ /* Продолжает список аргументов, полей или выражение BAITE byte6;; порядок элементов сохраняется. */
BAITE byte6;
+ /* Продолжает список аргументов, полей или выражение BAITE byte7;; порядок элементов сохраняется. */
BAITE byte7;
+ /* Объявляет crc_lo — данные crc_lo. */
unsigned char crc_lo;
+ /* Объявляет crc_hi — данные crc_hi. */
unsigned char crc_hi;
+ /* Объявляет add_byte — данные add_byte. */
unsigned char add_byte;
+/* Продолжает список аргументов, полей или выражение } CMD_TO_TMS;; порядок элементов сохраняется. */
} CMD_TO_TMS;
-extern int modbus[];
+/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит. Память определена в другом модуле. */
+extern int modbus[];
+/* Обслуживает чтение регистров FC03 с проверкой адреса, длины и формированием ответа RTU. */
void ReceiveCommandModbus3(RS_DATA *rs_arr);
-void ReceiveCommandModbus6(RS_DATA *rs_arr);
+/* Обслуживает одиночную запись FC06, проверяя доступность регистра и допустимость значения. */
+void ReceiveCommandModbus6(RS_DATA *rs_arr);
+/* Объявляет интерфейс функции SendCommandModbus4; реализация вызывается через этот прототип. */
void SendCommandModbus4(RS_DATA *rs_arr);
-void ReceiveAnswerModbus4(RS_DATA *rs_arr);
+/* Объявляет интерфейс функции ReceiveAnswerModbus4; реализация вызывается через этот прототип. */
+void ReceiveAnswerModbus4(RS_DATA *rs_arr);
+/* Сохраняет технологические регистры в область параметров, отделённую от загрузочного образа EEPROM. */
void Save_params(void);
+/* Читает сохранённые регистры из области параметров EEPROM и применяет настройки платы. */
void Load_params(void);
+/* Заполняет регистры заводскими значениями; тайм-аут CAN нагрузки по умолчанию равен 600 мс. */
void Default_params(void);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif //MESSAGE_H
diff --git a/Source/Internal/Include/package.h b/Source/Internal/Include/package.h
index e90cf33..01ec6f3 100644
--- a/Source/Internal/Include/package.h
+++ b/Source/Internal/Include/package.h
@@ -1,172 +1,300 @@
+/* Адреса устройств, типы плат и псевдонимы технологических регистров. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: PACKAGE ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef PACKAGE
+/* Определяет защитный символ или переключатель PACKAGE для последующей компиляции. */
#define PACKAGE
+/* Задаёт BALSAM = 167; данные BALSAM. */
#define BALSAM 167
+/* Условие компиляции BALSAM == 167: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 167
+/* Задаёт OBOROT = STRAIGHT; данные OBOROT. */
#define OBOROT STRAIGHT
+/* Определяет защитный символ или переключатель CALIB_RS для последующей компиляции. */
#define CALIB_RS
+/* Определяет защитный символ или переключатель OWEN для последующей компиляции. */
#define OWEN
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции BALSAM == 166: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 166
+/* Задаёт OBOROT = REVERSE; данные OBOROT. */
#define OBOROT REVERSE
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции BALSAM == 165: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 165
+/* Задаёт OBOROT = STRAIGHT; данные OBOROT. */
#define OBOROT STRAIGHT
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции BALSAM == 164: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 164
+/* Задаёт OBOROT = REVERSE; данные OBOROT. */
#define OBOROT REVERSE
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Определяет защитный символ или переключатель ONBOARDCALIBER для последующей компиляции. */
#define ONBOARDCALIBER
+/* Задаёт TERMOPAIR = 14; данные TERMOPAIR. */
#define TERMOPAIR 14
+/* Задаёт CURRENTOS = (TERMOPAIR*2); данные CURRENTOS. */
#define CURRENTOS (TERMOPAIR*2)
//-----------------------------------------------
+/* Задаёт adr_TRN1 = 1; данные adr_TRN1. */
#define adr_TRN1 1
+/* Задаёт adr_TRN2 = 2; данные adr_TRN2. */
#define adr_TRN2 2
+/* Задаёт adr_POW1 = 3; данные adr_POW1. */
#define adr_POW1 3
+/* Задаёт adr_POW2 = 4; данные adr_POW2. */
#define adr_POW2 4
+/* Задаёт adr_LOA1 = 5; данные adr_LOA1. */
#define adr_LOA1 5
+/* Задаёт adr_LOA2 = 6; данные adr_LOA2. */
#define adr_LOA2 6
+/* Задаёт adr_ENG1 = 7; данные adr_ENG1. */
#define adr_ENG1 7
+/* Задаёт adr_PULT = 8; данные adr_PULT. */
#define adr_PULT 8
+/* Задаёт adr_SHKF = 9; данные adr_SHKF. */
#define adr_SHKF 9
//-------------------
+/* Задаёт adr_REC1 = 0xff; данные adr_REC1. */
#define adr_REC1 0xff
+/* Задаёт adr_REC2 = 0xff; данные adr_REC2. */
#define adr_REC2 0xff
+/* Задаёт adr_INV1 = 0xff; данные adr_INV1. */
#define adr_INV1 0xff
+/* Задаёт adr_INV2 = 0xff; данные adr_INV2. */
#define adr_INV2 0xff
+/* Задаёт adr_BRK1 = 0xff; данные adr_BRK1. */
#define adr_BRK1 0xff
+/* Задаёт adr_BRK2 = 0xff; данные adr_BRK2. */
#define adr_BRK2 0xff
+/* Задаёт adr_ENG2 = 0xff; данные adr_ENG2. */
#define adr_ENG2 0xff
+/* Задаёт adr_PLT1 = 0xff; данные adr_PLT1. */
#define adr_PLT1 0xff
+/* Задаёт adr_PLT2 = 0xff; данные adr_PLT2. */
#define adr_PLT2 0xff
+/* Задаёт adr_DSTR = 0xff; данные adr_DSTR. */
#define adr_DSTR 0xff
//-----------------------------------------------
+/* Задаёт dsk_COMM = 1; данные dsk_COMM. */
#define dsk_COMM 1
+/* Задаёт dsk_BKSD = 2; данные dsk_BKSD. */
#define dsk_BKSD 2
+/* Задаёт dsk_BKST = 3; данные dsk_BKST. */
#define dsk_BKST 3
+/* Задаёт dsk_EPLT = 4; данные dsk_EPLT. */
#define dsk_EPLT 4
+/* Задаёт dsk_SHKF = 5; данные dsk_SHKF. */
#define dsk_SHKF 5
+/* Задаёт dsk_LOAD = 6; код платы нагрузки. */
#define dsk_LOAD 6
//-----------------------------------------------
//-----------------------------------------------
+/* Задаёт TPL_TRN = 10; данные TPL_TRN. */
#define TPL_TRN 10
+/* Условие компиляции BALSAM == 167: выбранный блок включается в текущий вариант прошивки. */
#if BALSAM == 167
+/* Задаёт TPL_POW = 7; данные TPL_POW. */
#define TPL_POW 7
+/* Задаёт OWEN_DT = 2; данные OWEN_DT. */
#define OWEN_DT 2
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Задаёт TPL_POW = 8; данные TPL_POW. */
#define TPL_POW 8
+/* Задаёт OWEN_DT = 0; данные OWEN_DT. */
#define OWEN_DT 0
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт TPL_ENG = 8; данные TPL_ENG. */
#define TPL_ENG 8
+/* Задаёт TPL_SHK = 15; данные TPL_SHK. */
#define TPL_SHK 15
//-----------------------------------------------
+/* Задаёт Modbus = ((WORDE *)modbus); данные Modbus. */
#define Modbus ((WORDE *)modbus)
+/* Задаёт start_error = 0x00; start ошибка. */
#define start_error 0x00
+/* Задаёт start_data = 0x18; start данные. */
#define start_data 0x18
+/* Задаёт start_hi_edge = 0x30; данные start_hi_edge. */
#define start_hi_edge 0x30
+/* Задаёт start_lo_edge = 0x48; данные start_lo_edge. */
#define start_lo_edge 0x48
+/* Задаёт sens_error = ((ERROR *)(modbus+start_error)); sens ошибка. */
#define sens_error ((ERROR *)(modbus+start_error))
+/* Задаёт sens_data = (modbus+start_data); sens данные. */
#define sens_data (modbus+start_data)
+/* Задаёт sens_hi_edge = (modbus+start_hi_edge); данные sens_hi_edge. */
#define sens_hi_edge (modbus+start_hi_edge)
+/* Задаёт sens_lo_edge = (modbus+start_lo_edge); данные sens_lo_edge. */
#define sens_lo_edge (modbus+start_lo_edge)
+/* Задаёт InputRep0 = Modbus[0].bit.bitA; вход Rep 0. */
#define InputRep0 Modbus[0].bit.bitA
+/* Задаёт InputRep1 = Modbus[0].bit.bitB; вход Rep 1. */
#define InputRep1 Modbus[0].bit.bitB
+/* Задаёт InputRep2 = Modbus[0].bit.bitC; вход Rep 2. */
#define InputRep2 Modbus[0].bit.bitC
+/* Задаёт Inputs = Modbus[0x10]; данные Inputs. */
#define Inputs Modbus[0x10]
+/* Задаёт Buttons = Modbus[0x16]; данные Buttons. */
#define Buttons Modbus[0x16]
+/* Задаёт Jumpers = modbus[0x17]; данные Jumpers. */
#define Jumpers modbus[0x17]
+/* Задаёт bTestLamp = Buttons.bit.bit0; данные bTestLamp. */
#define bTestLamp Buttons.bit.bit0
+/* Задаёт bSecretBt = Buttons.bit.bit1; данные bSecretBt. */
#define bSecretBt Buttons.bit.bit1
+/* Задаёт bTermoCal = Buttons.bit.bit2; данные bTermoCal. */
#define bTermoCal Buttons.bit.bit2
-// Ïðèøëî âðåìà!
-#define DAC_go modbus[0x50] // íà÷àëî çàðàäà
-#define DAC_stop modbus[0x51] // êîíåö çàðàäà
+// Пришло врема!
+/* Задаёт DAC_go = modbus[0x50]; начальный ток нагрузки в мА, технологический регистр 0x50. */
+#define DAC_go modbus[0x50] // начало зарада
+/* Задаёт DAC_stop = modbus[0x51]; конечный ток нагрузки в мА, технологический регистр 0x51. */
+#define DAC_stop modbus[0x51] // конец зарада
/* LOAD-only persistent CAN timeout (ms), read-only status and attempts. */
+/* Задаёт LOAD_CAN_TIMEOUT = modbus[0x52]; сохраняемый тайм-аут свежести напряжения CAN в миллисекундах, регистр 0x52. */
#define LOAD_CAN_TIMEOUT modbus[0x52]
+/* Задаёт LOAD_STATUS = modbus[0x7C]; слово состояния защиты нагрузки для чтения, регистр 0x7C. */
#define LOAD_STATUS modbus[0x7C]
+/* Задаёт LOAD_ATTEMPTS = modbus[0x7D]; число попыток пуска для чтения, регистр 0x7D. */
#define LOAD_ATTEMPTS modbus[0x7D]
-#define Cancount (modbus+0x60) // ïàóçà ìåæäó I ïîñûëêàìè CAN
-#define Bright (modbus+0x62) // àðêîñòü ñèãíàëüíûõ ëàìïî÷åê
-#define Brightness modbus[0x62] // àðêîñòü ñèãíàëüíûõ ëàìïî÷åê
+/* Задаёт Cancount = (modbus+0x60); данные Cancount. */
+#define Cancount (modbus+0x60) // пауза между I посылками CAN
+/* Задаёт Bright = (modbus+0x62); данные Bright. */
+#define Bright (modbus+0x62) // аркость сигнальных лампочек
+/* Задаёт Brightness = modbus[0x62]; данные Brightness. */
+#define Brightness modbus[0x62] // аркость сигнальных лампочек
-#define Owncount modbus[0x63] // ïàóçà ìåæäó îïðîñàìè OWEN
+/* Задаёт Owncount = modbus[0x63]; данные Owncount. */
+#define Owncount modbus[0x63] // пауза между опросами OWEN
+/* Задаёт m_FAST = 0; данные m_FAST. */
#define m_FAST 0
+/* Задаёт m_SLOW = 1; данные m_SLOW. */
#define m_SLOW 1
+/* Задаёт Zero_lev = (modbus+0x70); данные Zero_lev. */
#define Zero_lev (modbus+0x70)
+/* Задаёт DAC_20 = modbus[0x6E]; ЦАП 20. */
#define DAC_20 modbus[0x6E]
+/* Задаёт DAC_04 = modbus[0x6F]; ЦАП 04. */
#define DAC_04 modbus[0x6F]
+/* Задаёт DAC_max = modbus[0x78]; ЦАП max. */
#define DAC_max() modbus[0x78] // 751//0x0000 804
+/* Задаёт DAC_min = modbus[0x79]; ЦАП min. */
#define DAC_min() modbus[0x79] // 2162//0x0FFF 2373
+/* Задаёт DAC_cal = modbus[0x7A]; ЦАП cal. */
#define DAC_cal() modbus[0x7A]
+/* Задаёт Caliber = (modbus+0x74); данные Caliber. */
#define Caliber (modbus+0x74)
+/* Задаёт K380_1 = Caliber[0]; данные K380_1. */
#define K380_1 Caliber[0]
+/* Задаёт K380_2 = Caliber[1]; данные K380_2. */
#define K380_2 Caliber[1]
+/* Задаёт KPOW_1 = Caliber[0]; данные KPOW_1. */
#define KPOW_1 Caliber[0]
+/* Задаёт KPOW_2 = Caliber[1]; данные KPOW_2. */
#define KPOW_2 Caliber[1]
+/* Задаёт KPOW_3 = Caliber[2]; данные KPOW_3. */
#define KPOW_3 Caliber[2]
+/* Задаёт KPOW_4 = Caliber[3]; данные KPOW_4. */
#define KPOW_4 Caliber[3]
+/* Задаёт NormaU = Caliber[8]; данные NormaU. */
#define NormaU Caliber[8]
+/* Задаёт DeltaU = Caliber[9]; данные DeltaU. */
#define DeltaU Caliber[9]
+/* Задаёт TCaliber = (modbus+0x78); данные TCaliber. */
#define TCaliber (modbus+0x78)
+/* Задаёт K300_1 = TCaliber[0]; данные K300_1. */
#define K300_1 TCaliber[0]
+/* Задаёт K300_2 = TCaliber[1]; данные K300_2. */
#define K300_2 TCaliber[1]
+/* Задаёт K400_1 = TCaliber[2]; данные K400_1. */
#define K400_1 TCaliber[2]
+/* Задаёт K400_2 = TCaliber[3]; данные K400_2. */
#define K400_2 TCaliber[3]
+/* Задаёт K100_1 = TCaliber[0]; данные K100_1. */
#define K100_1 TCaliber[0]
+/* Задаёт K100_2 = TCaliber[1]; данные K100_2. */
#define K100_2 TCaliber[1]
+/* Задаёт K150_1 = TCaliber[2]; данные K150_1. */
#define K150_1 TCaliber[2]
+/* Задаёт K150_2 = TCaliber[3]; данные K150_2. */
#define K150_2 TCaliber[3]
+/* Задаёт K100_D = TCaliber[0]; данные K100_D. */
#define K100_D TCaliber[0]
+/* Задаёт K150_D = TCaliber[1]; данные K150_D. */
#define K150_D TCaliber[1]
+/* Задаёт LastMode = Modbus[126].all; последний режим платы, технологический регистр 126. */
#define LastMode Modbus[126].all
+/* Задаёт Commands = Modbus[127].all; слово команд, технологический регистр 127. */
#define Commands Modbus[127].all
+/* Задаёт cTestLamp = Modbus[127].bit.bit0; данные cTestLamp. */
#define cTestLamp Modbus[127].bit.bit0
+/* Задаёт cDefParam = Modbus[127].bit.bit1; данные cDefParam. */
#define cDefParam Modbus[127].bit.bit1
+/* Задаёт cSaveParam = Modbus[127].bit.bit2; данные cSaveParam. */
#define cSaveParam Modbus[127].bit.bit2
+/* Задаёт cLoadParam = Modbus[127].bit.bit3; данные cLoadParam. */
#define cLoadParam Modbus[127].bit.bit3
+/* Задаёт cTermoCal = Modbus[127].bit.bit4; данные cTermoCal. */
#define cTermoCal Modbus[127].bit.bit4
+/* Задаёт cKoefCalc = Modbus[127].bit.bit5; данные cKoefCalc. */
#define cKoefCalc Modbus[127].bit.bit5
+/* Задаёт cUMPreset = Modbus[127].bit.bit6; данные cUMPreset. */
#define cUMPreset Modbus[127].bit.bit6
+/* Задаёт cUMPstart = Modbus[127].bit.bit7; данные cUMPstart. */
#define cUMPstart Modbus[127].bit.bit7
+/* Задаёт cInitDac = Modbus[127].bit.bit8; c Init ЦАП. */
#define cInitDac Modbus[127].bit.bit8
+/* Задаёт cCalibrDac = Modbus[127].bit.bit9; c Calibr ЦАП. */
#define cCalibrDac Modbus[127].bit.bit9
+/* Задаёт cSecretBt = Modbus[127].bit.bitA; данные cSecretBt. */
#define cSecretBt Modbus[127].bit.bitA
+/* Задаёт cLiteFire = Modbus[127].bit.bitB; данные cLiteFire. */
#define cLiteFire Modbus[127].bit.bitB
+/* Задаёт cRawMeat = Modbus[127].bit.bitC; данные cRawMeat. */
#define cRawMeat Modbus[127].bit.bitC
+/* Задаёт cReset = Modbus[127].bit.bitF; c сброс. */
#define cReset Modbus[127].bit.bitF
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif //PACKAGE
diff --git a/Source/Internal/Include/peripher.h b/Source/Internal/Include/peripher.h
index 3d1eecf..a5baef7 100644
--- a/Source/Internal/Include/peripher.h
+++ b/Source/Internal/Include/peripher.h
@@ -1,153 +1,282 @@
+/* Перемычки режима платы, дискретные входы и выходы. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
+/* Объявляет Mode — рабочий адрес или режим платы, выбранный перемычками; Desk — аппаратно определённый тип платы; TermoAD — данные TermoAD; TermoRS — данные TermoRS; TermoSW — данные TermoSW. Память определена в другом модуле. */
extern int Mode,Desk,TermoAD,TermoRS,TermoSW,Kurrent,Kalibro,Owen;
+/* Объявляет интерфейс функции setup_leds_line; реализация вызывается через этот прототип. */
void setup_leds_line(void);
+/* Объявляет интерфейс функции unsetup_leds_line; реализация вызывается через этот прототип. */
void unsetup_leds_line(void);
+/* Задаёт led1_toggle = GpioDataRegs.GPBTOGGLE.bit.GPIO32=1; данные led1_toggle. */
#define led1_toggle() GpioDataRegs.GPBTOGGLE.bit.GPIO32=1
+/* Задаёт led2_toggle = GpioDataRegs.GPBTOGGLE.bit.GPIO48=1; данные led2_toggle. */
#define led2_toggle() GpioDataRegs.GPBTOGGLE.bit.GPIO48=1
+/* Задаёт led1_off = GpioDataRegs.GPBSET.bit.GPIO32=1; данные led1_off. */
#define led1_off() GpioDataRegs.GPBSET.bit.GPIO32=1
+/* Задаёт led2_off = GpioDataRegs.GPBSET.bit.GPIO48=1; данные led2_off. */
#define led2_off() GpioDataRegs.GPBSET.bit.GPIO48=1
+/* Задаёт led1_on = GpioDataRegs.GPBCLEAR.bit.GPIO32=1; данные led1_on. */
#define led1_on() GpioDataRegs.GPBCLEAR.bit.GPIO32=1
+/* Задаёт led2_on = GpioDataRegs.GPBCLEAR.bit.GPIO48=1; данные led2_on. */
#define led2_on() GpioDataRegs.GPBCLEAR.bit.GPIO48=1
// READY ---------------------------------------------------------
+/* Начинает функцию dat_READY; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void dat_READY(int x)
+/* Записывает GpioDataRegs.GPBDAT.bit.GPIO61 значением !x; else; аппаратная линия ввода/вывода GPIO61. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBDAT.bit.GPIO61=!x; else
+ /* Записывает GpioDataRegs.GPBDAT.bit.GPIO59 значением !x; }; аппаратная линия ввода/вывода GPIO59. */
GpioDataRegs.GPBDAT.bit.GPIO59=!x; }
+/* Начинает функцию set_READY; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void set_READY(void)
+/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO61 значением 1; else; аппаратная линия ввода/вывода GPIO61. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBCLEAR.bit.GPIO61=1; else
+ /* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO59 значением 1; }; аппаратная линия ввода/вывода GPIO59. */
GpioDataRegs.GPBCLEAR.bit.GPIO59=1; }
+/* Начинает функцию clear_READY; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void clear_READY(void)
+/* Записывает GpioDataRegs.GPBSET.bit.GPIO61 значением 1; else; аппаратная линия ввода/вывода GPIO61. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBSET.bit.GPIO61=1; else
+ /* Записывает GpioDataRegs.GPBSET.bit.GPIO59 значением 1; }; аппаратная линия ввода/вывода GPIO59. */
GpioDataRegs.GPBSET.bit.GPIO59=1; }
+/* Начинает функцию toggle_READY; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void toggle_READY(void)
+/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO61 значением 1;else; аппаратная линия ввода/вывода GPIO61. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBTOGGLE.bit.GPIO61=1;else
+ /* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO59 значением 1;}; аппаратная линия ввода/вывода GPIO59. */
GpioDataRegs.GPBTOGGLE.bit.GPIO59=1;}
// PULT READY -----------------------------------------------------
+/* Начинает функцию dat_ONLINE; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void dat_ONLINE(int x)
+/* Записывает GpioDataRegs.GPADAT.bit.GPIO0 значением !x; }; аппаратная линия ввода/вывода GPIO0. */
{ GpioDataRegs.GPADAT.bit.GPIO0=!x; }
+/* Начинает функцию set_ONLINE; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void set_ONLINE(void)
+/* Записывает GpioDataRegs.GPASET.bit.GPIO0 значением 1; }; аппаратная линия ввода/вывода GPIO0. */
{ GpioDataRegs.GPASET.bit.GPIO0=1; }
+/* Начинает функцию clear_ONLINE; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void clear_ONLINE(void)
+/* Записывает GpioDataRegs.GPACLEAR.bit.GPIO0 значением 1; }; аппаратная линия ввода/вывода GPIO0. */
{ GpioDataRegs.GPACLEAR.bit.GPIO0=1; }
+/* Начинает функцию toggle_ONLINE; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void toggle_ONLINE(void)
+/* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO0 значением 1; }; аппаратная линия ввода/вывода GPIO0. */
{ GpioDataRegs.GPATOGGLE.bit.GPIO0=1; }
// LED OUT 1 -----------------------------------------------------
+/* Начинает функцию dat_LED_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void dat_LED_OUT_1(int x)
-{ if(Desk==dsk_BKST || Desk==dsk_COMM)
+/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_BKST || Desk==dsk_COMM); порядок элементов сохраняется. */
+{ if(Desk==dsk_BKST || Desk==dsk_COMM)
+ /* Записывает GpioDataRegs.GPBDAT.bit.GPIO60 значением !x; else; аппаратная линия ввода/вывода GPIO60. */
GpioDataRegs.GPBDAT.bit.GPIO60=!x; else
+ /* Проверяет if(Desk==dsk_LOAD) GpioDataRegs.GPADAT.bit.GPIO7=!x; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD) GpioDataRegs.GPADAT.bit.GPIO7=!x; else
+ /* Записывает GpioDataRegs.GPBDAT.bit.GPIO60 значением x; }; аппаратная линия ввода/вывода GPIO60. */
GpioDataRegs.GPBDAT.bit.GPIO60=x; }
+/* Начинает функцию set_LED_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void set_LED_OUT_1(void)
-{ if(Desk==dsk_BKST || Desk==dsk_COMM)
+/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_BKST || Desk==dsk_COMM); порядок элементов сохраняется. */
+{ if(Desk==dsk_BKST || Desk==dsk_COMM)
+ /* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO60 значением 1; else; аппаратная линия ввода/вывода GPIO60. */
GpioDataRegs.GPBCLEAR.bit.GPIO60=1; else
+ /* Проверяет if(Desk==dsk_LOAD) GpioDataRegs.GPACLEAR.bit.GPIO7=1; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD) GpioDataRegs.GPACLEAR.bit.GPIO7=1; else
+ /* Записывает GpioDataRegs.GPBSET.bit.GPIO60 значением 1; }; аппаратная линия ввода/вывода GPIO60. */
GpioDataRegs.GPBSET.bit.GPIO60=1; }
+/* Начинает функцию clear_LED_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void clear_LED_OUT_1(void)
-{ if(Desk==dsk_BKST || Desk==dsk_COMM)
+/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_BKST || Desk==dsk_COMM); порядок элементов сохраняется. */
+{ if(Desk==dsk_BKST || Desk==dsk_COMM)
+ /* Записывает GpioDataRegs.GPBSET.bit.GPIO60 значением 1; else; аппаратная линия ввода/вывода GPIO60. */
GpioDataRegs.GPBSET.bit.GPIO60=1; else
+ /* Проверяет if(Desk==dsk_LOAD) GpioDataRegs.GPASET.bit.GPIO7=1; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD) GpioDataRegs.GPASET.bit.GPIO7=1; else
+ /* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO60 значением 1; }; аппаратная линия ввода/вывода GPIO60. */
GpioDataRegs.GPBCLEAR.bit.GPIO60=1; }
+/* Начинает функцию toggle_LED_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void toggle_LED_OUT_1(void)
+/* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO7 значением 1; else; аппаратная линия ввода/вывода GPIO7. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPATOGGLE.bit.GPIO7=1; else
+ /* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO60 значением 1;}; аппаратная линия ввода/вывода GPIO60. */
GpioDataRegs.GPBTOGGLE.bit.GPIO60=1;}
// LED OUT 2 -----------------------------------------------------
+/* Начинает функцию dat_LED_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void dat_LED_OUT_2(int x)
+/* Записывает GpioDataRegs.GPADAT.bit.GPIO1 значением !x; else; аппаратная линия ввода/вывода GPIO1. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPADAT.bit.GPIO1=!x; else
+ /* Проверяет if(Desk==dsk_BKST) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKST) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else
+ /* Проверяет if(Desk==dsk_COMM) GpioDataRegs.GPBDAT.bit.GPIO63=!x; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM) GpioDataRegs.GPBDAT.bit.GPIO63=!x; else
+ /* Записывает GpioDataRegs.GPBDAT.bit.GPIO63 значением x; }; аппаратная линия ввода/вывода GPIO63. */
GpioDataRegs.GPBDAT.bit.GPIO63=x; }
+/* Начинает функцию set_LED_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void set_LED_OUT_2(void)
+/* Записывает GpioDataRegs.GPACLEAR.bit.GPIO1 значением 1; else; аппаратная линия ввода/вывода GPIO1. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPACLEAR.bit.GPIO1=1; else
+ /* Проверяет if(Desk==dsk_BKST) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKST) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else
+ /* Проверяет if(Desk==dsk_COMM) GpioDataRegs.GPBCLEAR.bit.GPIO63=1; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM) GpioDataRegs.GPBCLEAR.bit.GPIO63=1; else
+ /* Записывает GpioDataRegs.GPBSET.bit.GPIO63 значением 1; }; аппаратная линия ввода/вывода GPIO63. */
GpioDataRegs.GPBSET.bit.GPIO63=1; }
+/* Начинает функцию clear_LED_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void clear_LED_OUT_2(void)
+/* Записывает GpioDataRegs.GPASET.bit.GPIO7 значением 1; else; аппаратная линия ввода/вывода GPIO7. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPASET.bit.GPIO7=1; else
+ /* Проверяет if(Desk==dsk_BKST) GpioDataRegs.GPBSET.bit.GPIO62=1; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKST) GpioDataRegs.GPBSET.bit.GPIO62=1; else
+ /* Проверяет if(Desk==dsk_COMM) GpioDataRegs.GPBSET.bit.GPIO63=1; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM) GpioDataRegs.GPBSET.bit.GPIO63=1; else
+ /* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO63 значением 1; }; аппаратная линия ввода/вывода GPIO63. */
GpioDataRegs.GPBCLEAR.bit.GPIO63=1; }
+/* Начинает функцию toggle_LED_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void toggle_LED_OUT_2(void)
+/* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO1 значением 1; else; аппаратная линия ввода/вывода GPIO1. */
{ if(Desk==dsk_LOAD) GpioDataRegs.GPATOGGLE.bit.GPIO1=1; else
+ /* Проверяет if(Desk==dsk_BKST) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKST) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else
+ /* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO63 значением 1;}; аппаратная линия ввода/вывода GPIO63. */
GpioDataRegs.GPBTOGGLE.bit.GPIO63=1;}
// RES OUT 1 -----------------------------------------------------
+/* Начинает функцию dat_RES_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void dat_RES_OUT_1(int x)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(Desk==dsk_LOAD или Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+ /* Записывает GpioDataRegs.GPADAT.bit.GPIO9 значением !x; else; аппаратная линия ввода/вывода GPIO9. */
GpioDataRegs.GPADAT.bit.GPIO9=!x; else
+ /* Проверяет if(Desk==dsk_BKSD) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKSD) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else
+ /* Записывает GpioDataRegs.GPBDAT.bit.GPIO58 значением !x; }; аппаратная линия ввода/вывода GPIO58. */
GpioDataRegs.GPBDAT.bit.GPIO58=!x; }
+/* Начинает функцию set_RES_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void set_RES_OUT_1(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(Desk==dsk_LOAD или Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+ /* Записывает GpioDataRegs.GPACLEAR.bit.GPIO9 значением 1; else; аппаратная линия ввода/вывода GPIO9. */
GpioDataRegs.GPACLEAR.bit.GPIO9=1; else
+ /* Проверяет if(Desk==dsk_BKSD) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKSD) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else
+ /* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO58 значением 1; }; аппаратная линия ввода/вывода GPIO58. */
GpioDataRegs.GPBCLEAR.bit.GPIO58=1; }
+/* Начинает функцию clear_RES_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void clear_RES_OUT_1(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(Desk==dsk_LOAD или Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+ /* Записывает GpioDataRegs.GPASET.bit.GPIO9 значением 1; else; аппаратная линия ввода/вывода GPIO9. */
GpioDataRegs.GPASET.bit.GPIO9=1; else
+ /* Проверяет if(Desk==dsk_BKSD) GpioDataRegs.GPBSET.bit.GPIO62=1; else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKSD) GpioDataRegs.GPBSET.bit.GPIO62=1; else
+ /* Записывает GpioDataRegs.GPBSET.bit.GPIO58 значением 1; }; аппаратная линия ввода/вывода GPIO58. */
GpioDataRegs.GPBSET.bit.GPIO58=1; }
+/* Начинает функцию toggle_RES_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void toggle_RES_OUT_1(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(Desk==dsk_LOAD или Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+ /* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO9 значением 1; else; аппаратная линия ввода/вывода GPIO9. */
GpioDataRegs.GPATOGGLE.bit.GPIO9=1; else
+ /* Проверяет if(Desk==dsk_BKSD) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKSD) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else
+ /* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO58 значением 1;}; аппаратная линия ввода/вывода GPIO58. */
GpioDataRegs.GPBTOGGLE.bit.GPIO58=1;}
// RES OUT 2 -----------------------------------------------------
+/* Начинает функцию dat_RES_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void dat_RES_OUT_2(int x)
-{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_LOAD || Desk==dsk_EPLT); порядок элементов сохраняется. */
+{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+ /* Записывает GpioDataRegs.GPADAT.bit.GPIO3 значением !x; else; аппаратная линия ввода/вывода GPIO3. */
GpioDataRegs.GPADAT.bit.GPIO3=!x; else
+ /* Записывает GpioDataRegs.GPBDAT.bit.GPIO61 значением x; }; аппаратная линия ввода/вывода GPIO61. */
GpioDataRegs.GPBDAT.bit.GPIO61=x; }
+/* Начинает функцию set_RES_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void set_RES_OUT_2(void)
-{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_LOAD || Desk==dsk_EPLT); порядок элементов сохраняется. */
+{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+ /* Записывает GpioDataRegs.GPACLEAR.bit.GPIO3 значением 1; else; аппаратная линия ввода/вывода GPIO3. */
GpioDataRegs.GPACLEAR.bit.GPIO3=1; else
+ /* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO61 значением 1; }; аппаратная линия ввода/вывода GPIO61. */
GpioDataRegs.GPBCLEAR.bit.GPIO61=1; }
+/* Начинает функцию clear_RES_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void clear_RES_OUT_2(void)
-{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_LOAD || Desk==dsk_EPLT); порядок элементов сохраняется. */
+{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+ /* Записывает GpioDataRegs.GPASET.bit.GPIO3 значением 1; else; аппаратная линия ввода/вывода GPIO3. */
GpioDataRegs.GPASET.bit.GPIO3=1; else
+ /* Записывает GpioDataRegs.GPBSET.bit.GPIO61 значением 1; }; аппаратная линия ввода/вывода GPIO61. */
GpioDataRegs.GPBSET.bit.GPIO61=1; }
+/* Начинает функцию toggle_RES_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void toggle_RES_OUT_2(void)
-{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_LOAD || Desk==dsk_EPLT); порядок элементов сохраняется. */
+{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
+ /* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO3 значением 1; else; аппаратная линия ввода/вывода GPIO3. */
GpioDataRegs.GPATOGGLE.bit.GPIO3=1; else
+ /* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO61 значением 1;}; аппаратная линия ввода/вывода GPIO61. */
GpioDataRegs.GPBTOGGLE.bit.GPIO61=1;}
// START DPTB -----------------------------------------------------
+/* Начинает функцию dat_START_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void dat_START_DPTB(int x)
+/* Записывает GpioDataRegs.GPBDAT.bit.GPIO62 значением x; }; аппаратная линия ввода/вывода GPIO62. */
{ GpioDataRegs.GPBDAT.bit.GPIO62=x; }
+/* Начинает функцию set_START_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void set_START_DPTB(void)
+/* Записывает GpioDataRegs.GPBSET.bit.GPIO62 значением 1; }; аппаратная линия ввода/вывода GPIO62. */
{ GpioDataRegs.GPBSET.bit.GPIO62=1; }
+/* Начинает функцию clear_START_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void clear_START_DPTB(void)
+/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO62 значением 1; }; аппаратная линия ввода/вывода GPIO62. */
{ GpioDataRegs.GPBCLEAR.bit.GPIO62=1; }
+/* Начинает функцию toggle_START_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void toggle_START_DPTB(void)
+/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO62 значением 1;}; аппаратная линия ввода/вывода GPIO62. */
{ GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;}
// STOP DPTB -----------------------------------------------------
+/* Начинает функцию dat_STOP_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void dat_STOP_DPTB(int x)
+/* Записывает GpioDataRegs.GPBDAT.bit.GPIO58 значением x; }; аппаратная линия ввода/вывода GPIO58. */
{ GpioDataRegs.GPBDAT.bit.GPIO58=x; }
+/* Начинает функцию set_STOP_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void set_STOP_DPTB(void)
+/* Записывает GpioDataRegs.GPBSET.bit.GPIO58 значением 1; }; аппаратная линия ввода/вывода GPIO58. */
{ GpioDataRegs.GPBSET.bit.GPIO58=1; }
+/* Начинает функцию clear_STOP_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void clear_STOP_DPTB(void)
+/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO58 значением 1; }; аппаратная линия ввода/вывода GPIO58. */
{ GpioDataRegs.GPBCLEAR.bit.GPIO58=1; }
+/* Начинает функцию toggle_STOP_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
static inline void toggle_STOP_DPTB(void)
+/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO58 значением 1;}; аппаратная линия ввода/вывода GPIO58. */
{ GpioDataRegs.GPBTOGGLE.bit.GPIO58=1;}
+/* Продолжает список аргументов, полей или выражение extern LONGE DigErr;; порядок элементов сохраняется. */
extern LONGE DigErr;
+/* Объявляет интерфейс функции select_tpl_canal; реализация вызывается через этот прототип. */
void select_tpl_canal(int n_tpl);
+/* Объявляет интерфейс функции select_tpl_255; реализация вызывается через этот прототип. */
void select_tpl_255(void);
+/* Определяет адрес и тип платы по аппаратным перемычкам и задаёт рабочий режим. */
void get_Mode(void);
+/* Считывает кнопки, обновляет флаги команд и учитывает текущий тип платы. */
void get_Buttons(void);
diff --git a/Source/Internal/Include/pulto.h b/Source/Internal/Include/pulto.h
index fb41363..26c94b9 100644
--- a/Source/Internal/Include/pulto.h
+++ b/Source/Internal/Include/pulto.h
@@ -1,3 +1,5 @@
+/* Обмен и индикация пульта. Русские пояснения сохранены в UTF-8. */
//void what_is(void);
+/* Обслуживает периодический обмен и индикацию пульта вместо измерительной платы. */
interrupt void cpu_timer1_isr_PULT(void);
diff --git a/Source/Internal/Include/spise2p.h b/Source/Internal/Include/spise2p.h
index c94bba8..07c3380 100644
--- a/Source/Internal/Include/spise2p.h
+++ b/Source/Internal/Include/spise2p.h
@@ -1,132 +1,194 @@
+/* Драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: __SPISE2P_H__ ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef __SPISE2P_H__
-#define __SPISE2P_H__
+/* Определяет защитный символ или переключатель __SPISE2P_H__ для последующей компиляции. */
+#define __SPISE2P_H__
/* Physical EEPROM layout shared with the linker and SETGUI. */
+/* Подключает "eeprom_config.h": выбор профиля физически установленной EEPROM при сборке. */
#include "eeprom_config.h"
+/* Подключает "include/balsam167_eeprom_layout.h": настройки и интерфейс balsam167_eeprom_layout. */
#include "include/balsam167_eeprom_layout.h"
-// ¨ìêîñòü ïàìàòè â áàéòàõ
+// Ёмкость памати в байтах
/* Preserve compact 16-bit arithmetic for the original 32-KiB build.
* Only the large part needs 32-bit word addresses and transfer lengths. */
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned long SE2P_SIZE;
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned int SE2P_SIZE;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Задаёт SEEPROM_LEN = BALSAM167_EEPROM_BYTES; данные SEEPROM_LEN. */
#define SEEPROM_LEN BALSAM167_EEPROM_BYTES
-#define NULL 0
+/* Задаёт NULL = 0; данные NULL. */
+#define NULL 0
+/* Задаёт SIXTEEN_BIT = 15; SIXTEEN бит. */
#define SIXTEEN_BIT 15
+/* Задаёт EIGHT_BIT = 07; EIGHT бит. */
#define EIGHT_BIT 07
-
-/***************************************************************/
-/* Configurable Parameter for SPI bus Serial EEPROM */
-/***************************************************************/
-#define SPISE2P_DATA_WIDTH SIXTEEN_BIT//EIGHT_BIT
-#define SPISE2P_ADDR_WIDTH SIXTEEN_BIT
-#define SPIBAUD_REG_VAL 1//12
-#define SPICLK_PHASE 1
-#define SPICLK_POLARITY 0
+/***************************************************************/
+/* Configurable Parameter for SPI bus Serial EEPROM */
+/***************************************************************/
+/* Задаёт SPISE2P_DATA_WIDTH = SIXTEEN_BIT; 2 P данные WIDTH. */
+#define SPISE2P_DATA_WIDTH SIXTEEN_BIT//EIGHT_BIT
+/* Задаёт SPISE2P_ADDR_WIDTH = SIXTEEN_BIT; данные SPISE2P_ADDR_WIDTH. */
+#define SPISE2P_ADDR_WIDTH SIXTEEN_BIT
+/* Задаёт SPIBAUD_REG_VAL = 1; данные SPIBAUD_REG_VAL. */
+#define SPIBAUD_REG_VAL 1//12
+/* Задаёт SPICLK_PHASE = 1; SPICLK фаза. */
+#define SPICLK_PHASE 1
+/* Задаёт SPICLK_POLARITY = 0; данные SPICLK_POLARITY. */
+#define SPICLK_POLARITY 0
+
+/* Задаёт SPIBAUD_RATE = 100000; данные SPIBAUD_RATE. */
#define SPIBAUD_RATE 100000
//10000000
/**************************************************************/
/**************************************************************/
-
+
/* Serial EEPROM Command words, left justified */
+/* Задаёт SPISE2P_READ_CMD = 0x0300; 2 P чтение CMD. */
#define SPISE2P_READ_CMD 0x0300
+/* Задаёт SPISE2P_WRITE_CMD = 0x0200; 2 P запись CMD. */
#define SPISE2P_WRITE_CMD 0x0200
+/* Задаёт SPISE2P_WRDI_CMD = 0x0400; данные SPISE2P_WRDI_CMD. */
#define SPISE2P_WRDI_CMD 0x0400
+/* Задаёт SPISE2P_WREN_CMD = 0x0600; данные SPISE2P_WREN_CMD. */
#define SPISE2P_WREN_CMD 0x0600
+/* Задаёт SPISE2P_RDSR_CMD = 0x0500; данные SPISE2P_RDSR_CMD. */
#define SPISE2P_RDSR_CMD 0x0500
+/* Задаёт SPISE2P_WRSR_CMD = 0x0100; данные SPISE2P_WRSR_CMD. */
#define SPISE2P_WRSR_CMD 0x0100
+/* Задаёт SPISE2P_RDID_CMD = 0x0A00; данные SPISE2P_RDID_CMD. */
#define SPISE2P_RDID_CMD 0x0A00
-
+
+/* Задаёт SPISE2P_DUMMY_DATA = 0x0000; 2 P DUMMY данные. */
#define SPISE2P_DUMMY_DATA 0x0000
+/* Задаёт SPISE2P_BUSY_MASK = 0x01; 2 P BUSY маска. */
#define SPISE2P_BUSY_MASK 0x01
/* Symbolic constant for SPICCR to transfer 8bit or 16 bit value*/
+/* Задаёт SPISE2P_TFR16BIT = 0x80|(SPICLK_POLARITY<<6)|SIXTEEN_BIT; 2 P 16 бит. */
#define SPISE2P_TFR16BIT 0x80|(SPICLK_POLARITY<<6)|SIXTEEN_BIT
+/* Задаёт SPISE2P_TFR8BIT = 0x80|(SPICLK_POLARITY<<6)|EIGHT_BIT; 2 P 8 бит. */
#define SPISE2P_TFR8BIT 0x80|(SPICLK_POLARITY<<6)|EIGHT_BIT
-
+
/* Status valus */
-#define SPISE2P_WRRQ 1 /* Write Requset */
-#define SPISE2P_RDRQ 2 /* Read request */
-#define SPISE2P_WRIP 4 /* Write in progress */
-#define SPISE2P_RDIP 8 /* Read in progress */
+#define SPISE2P_WRRQ 1 /* Write Requset */ /* Задаёт SPISE2P_WRRQ = 1; данные SPISE2P_WRRQ. */
+#define SPISE2P_RDRQ 2 /* Read request */ /* Задаёт SPISE2P_RDRQ = 2; данные SPISE2P_RDRQ. */
+#define SPISE2P_WRIP 4 /* Write in progress */ /* Задаёт SPISE2P_WRIP = 4; данные SPISE2P_WRIP. */
+#define SPISE2P_RDIP 8 /* Read in progress */ /* Задаёт SPISE2P_RDIP = 8; данные SPISE2P_RDIP. */
/* Message declaration */
-typedef struct {
- unsigned int *dataPtr; /* Data pointer */
- unsigned long nrData; /* number of data */
- unsigned long se2pAddr; /* se2pAddr */
- }SE2P_DATA;
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
+typedef struct {
+ unsigned int *dataPtr; /* Data pointer */ /* Объявляет dataPtr — данные Ptr. Хранит указатель на данные. */
+ unsigned long nrData; /* number of data */ /* Объявляет nrData — nr данные. */
+ unsigned long se2pAddr; /* se2pAddr */ /* Объявляет se2pAddr — данные se2pAddr. */
+ /* Продолжает список аргументов, полей или выражение }SE2P_DATA;; порядок элементов сохраняется. */
+ }SE2P_DATA;
/* Object declaration */
-typedef struct {
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
+typedef struct {
/* Main loop publishes the descriptor before setting csr; Timer2 consumes it.
* Both accesses are volatile so optimization cannot publish the request first. */
+ /* Продолжает список аргументов, полей или выражение SE2P_DATA * volatile msgPtr;; порядок элементов сохраняется. */
SE2P_DATA * volatile msgPtr;
- volatile unsigned int csr; /* control/status register */
- void (*init)(void *);
+ volatile unsigned int csr; /* control/status register */ /* Объявляет csr — данные csr. volatile требует фактического чтения или записи при каждом доступе. */
+ /* Вызывает void с аргументами (*init)(void *) в текущей последовательности операций. */
+ void (*init)(void *);
+ /* Вызывает void с аргументами (*tick)(void *) в текущей последовательности операций. */
void (*tick)(void *);
- void (*csset)(void);
- void (*csclr)(void);
- }SPISE2P_DRV;
-
+ /* Вызывает void с аргументами (*csset)(void) в текущей последовательности операций. */
+ void (*csset)(void);
+ /* Вызывает void с аргументами (*csclr)(void) в текущей последовательности операций. */
+ void (*csclr)(void);
+ /* Продолжает список аргументов, полей или выражение }SPISE2P_DRV;; порядок элементов сохраняется. */
+ }SPISE2P_DRV;
+
+/* Задаёт SPISE2P_DRV_DEFAULTS = { NULL,; данные SPISE2P_DRV_DEFAULTS. */
#define SPISE2P_DRV_DEFAULTS { NULL,\
- 0,\
- (void (*)(void *))SPISE2P_DRV_init,\
- (void (*)(void *))SPISE2P_DRV_tick,\
- (void (*)(void))SPISE2P_DRV_csset,\
- (void (*)(void))SPISE2P_DRV_csclr}
-
+ 0,/* Элемент постоянной таблицы 0,; порядок значений совпадает с порядком индексов потребителя. */ \
+ (void (*)(void *))SPISE2P_DRV_init,/* Продолжает список аргументов, полей или выражение (void (*)(void *))SPISE2P_DRV_init,; порядок элементов сохраняется. */ \
+ (void (*)(void *))SPISE2P_DRV_tick,/* Продолжает список аргументов, полей или выражение (void (*)(void *))SPISE2P_DRV_tick,; порядок элементов сохраняется. */ \
+ (void (*)(void))SPISE2P_DRV_csset,/* Продолжает список аргументов, полей или выражение (void (*)(void))SPISE2P_DRV_csset,; порядок элементов сохраняется. */ \
+ (void (*)(void))SPISE2P_DRV_csclr} /* Продолжает список аргументов, полей или выражение (void (*)(void))SPISE2P_DRV_csclr}; порядок элементов сохраняется. */
+
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef SPISE2P_DRV *SPISE2P_DRV_handle;
-void SPISE2P_DRV_init(SPISE2P_DRV * );
+/* Объявляет интерфейс функции SPISE2P_DRV_init; реализация вызывается через этот прототип. */
+void SPISE2P_DRV_init(SPISE2P_DRV * );
+/* Продвигает неблокирующий автомат SPI EEPROM: команда, адрес, данные и ожидание завершения записи. */
void SPISE2P_DRV_tick(SPISE2P_DRV *);
-void SPISE2P_DRV_csset(void);
+/* Объявляет интерфейс функции SPISE2P_DRV_csset; реализация вызывается через этот прототип. */
+void SPISE2P_DRV_csset(void);
+/* Объявляет интерфейс функции SPISE2P_DRV_csclr; реализация вызывается через этот прототип. */
void SPISE2P_DRV_csclr(void);
+/* Проверяет завершение текущего задания SPI EEPROM перед постановкой следующего. */
unsigned int spiSe2pFree(SPISE2P_DRV *se2p);
+/* Ставит задание записи в SPI-драйвер с учётом состояния занятости EEPROM. */
void spiSe2pWrite(SPISE2P_DRV *se2p, SE2P_DATA *data);
+/* Ставит задание чтения в SPI-драйвер с указателем буфера, длиной и физическим адресом. */
void spiSe2pRead(SPISE2P_DRV *se2p, SE2P_DATA *data);
+/* Условие компиляции (SPISE2P_DATA_WIDTH==SIXTEEN_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_DATA_WIDTH==SIXTEEN_BIT)
+ /* Задаёт PROM_LEN = BALSAM167_EEPROM_WORDS; данные PROM_LEN. */
#define PROM_LEN BALSAM167_EEPROM_WORDS
+ /* Задаёт PAGE_LEN = (BALSAM167_EEPROM_PAGE_BYTES / 2); данные PAGE_LEN. */
#define PAGE_LEN (BALSAM167_EEPROM_PAGE_BYTES / 2)
+ /* Задаёт WORD_LEN = 2; слово LEN. */
#define WORD_LEN 2
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Задаёт PROM_LEN = BALSAM167_EEPROM_BYTES; данные PROM_LEN. */
#define PROM_LEN BALSAM167_EEPROM_BYTES
+ /* Задаёт PAGE_LEN = BALSAM167_EEPROM_PAGE_BYTES; данные PAGE_LEN. */
#define PAGE_LEN BALSAM167_EEPROM_PAGE_BYTES
+ /* Задаёт WORD_LEN = 1; слово LEN. */
#define WORD_LEN 1
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-/* Óñòàíîâêà äðàéâåðà ñåðèàëüíîé EEPROM. **
-** Èíèöèàëèçàöèà SPI è ïðî÷. Òàêæå íàñòðîéêà òàéìåðà. **
-** Äðàéâåð ðàáîòàåò íà ïðåðûâàíèàõ îò òàéìåðà 2! */
+/* Установка драйвера сериальной EEPROM. **
+** Инициализациа SPI и проч. Также настройка таймера. **
+** Драйвер работает на прерываниах от таймера 2! */
+/* Объявляет интерфейс функции InitSeeprom; реализация вызывается через этот прототип. */
void InitSeeprom(void);
-/* Çàïèñü áëîêà â SEEPROM. Ïàðàìåòðû òàêîâû: **
-** adres - àäðåñ â åïðîìêå, êóäà ïèñàòü. **
-** adres = 0..0x8000, åñëè äëèíà ñëîâà 8 áèò **
-** adres = 0..0x4000, åñëè äëèíà ñëîâà 16 áèò **
-** buf - óêàçàòåëü íà ïàìàòü, îòêóäà ïèñàòü. **
-** size - äëèíà áëîêà â áàéòàõ. Ïî-ëþáîìó â áàéòàõ! */
+/* Запись блока в SEEPROM. Параметры таковы: **
+** adres - адрес в епромке, куда писать. **
+** adres = 0..0x8000, если длина слова 8 бит **
+** adres = 0..0x4000, если длина слова 16 бит **
+** buf - указатель на памать, откуда писать. **
+** size - длина блока в байтах. По-любому в байтах! */
+/* Пишет EEPROM с разделением по физическим страницам; область параметров не пересекает образ прошивки. */
void Seeprom_write(SE2P_SIZE adres, unsigned int buf[], SE2P_SIZE size);
-/* ×òåíèå áëîêà èç SEEPROM. Ïàðàìåòðû òàêîâû: **
-** adres - àäðåñ â åïðîìêå, îòêóäà ÷èòàòü. **
-** adres = 0..0x8000, åñëè äëèíà ñëîâà 8 áèò **
-** adres = 0..0x4000, åñëè äëèíà ñëîâà 16 áèò **
-** buf - óêàçàòåëü íà ïàìàòü, êóäà ÷èòàòü. **
-** size - äëèíà áëîêà â áàéòàõ. Ïî-ëþáîìó â áàéòàõ! */
+/* Чтение блока из SEEPROM. Параметры таковы: **
+** adres - адрес в епромке, откуда читать. **
+** adres = 0..0x8000, если длина слова 8 бит **
+** adres = 0..0x4000, если длина слова 16 бит **
+** buf - указатель на памать, куда читать. **
+** size - длина блока в байтах. По-любому в байтах! */
+/* Читает EEPROM порциями; адрес задаётся словами C28x, размер переводится в число передаваемых слов. */
void Seeprom_read(SE2P_SIZE adres, unsigned int buf[], SE2P_SIZE size);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
+
diff --git a/Source/Internal/Include/tools.h b/Source/Internal/Include/tools.h
index 27df89b..4a882b5 100644
--- a/Source/Internal/Include/tools.h
+++ b/Source/Internal/Include/tools.h
@@ -1,7 +1,13 @@
+/* Настройка внешней памяти и служебные задержки. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: TOOLS_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef TOOLS_H
+/* Определяет защитный символ или переключатель TOOLS_H для последующей компиляции. */
#define TOOLS_H
+/* Настраивает временные параметры внешней шины XINTF Zone7 для RAM регистратора. */
void init_zone7(void);
+/* Формирует задержку в микросекундах через калиброванную функцию DSP28x_usDelay. */
void pause_us(unsigned long t);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif //TOOLS_H
diff --git a/Source/Internal/Include/ump_can_protocol.h b/Source/Internal/Include/ump_can_protocol.h
index ef2aaf6..6ef6122 100644
--- a/Source/Internal/Include/ump_can_protocol.h
+++ b/Source/Internal/Include/ump_can_protocol.h
@@ -1,9 +1,18 @@
+/* Настройки и интерфейс ump_can_protocol. Русские пояснения сохранены в UTF-8. */
/* Shared logger protocol; application owns IRQ protection and CAN scheduling. */
+/* Начинает условие: UMP_CAN_PROTOCOL_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef UMP_CAN_PROTOCOL_H
+/* Определяет защитный символ или переключатель UMP_CAN_PROTOCOL_H для последующей компиляции. */
#define UMP_CAN_PROTOCOL_H
+/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "log_to_mem.h"
+/* Подключает "ump_tms28335.h": настройки и интерфейс ump_tms28335. */
#include "ump_tms28335.h"
+/* Задаёт UMP_CAN_MARKER = UMP_MARKER; UMP CAN MARKER. */
#define UMP_CAN_MARKER UMP_MARKER
+/* Задаёт UMP_CAN_MAX_WORDS = UMP_MAX_WORDS; UMP CAN MAX слова. */
#define UMP_CAN_MAX_WORDS UMP_MAX_WORDS
+/* Задаёт ump_can_prepare = ump_tms28335_prepare; ump CAN prepare. */
#define ump_can_prepare ump_tms28335_prepare
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
diff --git a/Source/Internal/RS485.c b/Source/Internal/RS485.c
index 17686b7..58944c3 100644
--- a/Source/Internal/RS485.c
+++ b/Source/Internal/RS485.c
@@ -1,554 +1,929 @@
+/* Приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. Русские пояснения сохранены в UTF-8. */
//#include "big_dsp_module.h"
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h"
+/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "bios_dsp.h": коды и объявления команд последовательного загрузчика. */
#include "bios_dsp.h"
+/* Подключает "cntrl_adr.h": собственный и универсальный адрес устройства. */
#include "cntrl_adr.h"
+/* Подключает "tools.h": настройка внешней памяти и служебные задержки. */
#include "tools.h"
//#include "flash_tools.h"
+/* Объявляет rs_a — данные rs_a; rs_b — данные rs_b. */
RS_DATA rs_a,rs_b;
+/* Объявляет RS_Len — таблица ожидаемых длин команд последовательного протокола. Начальное значение задаётся справа от знака равенства. */
unsigned int RS_Len[70]={0};
-static char size_cmd15=1;
+/* Объявляет size_cmd15 — размер cmd 15. Начальное значение задаётся справа от знака равенства. */
+static char size_cmd15=1;
+/* Разбирает приём SCI; для COM_1 читает FIFO и проверяет ошибки, для COM_2 сохраняет штатный обмен RS485. */
void RS_RX_Handler(RS_DATA *rs_arr);
+/* Продвигает передачу текущего пакета SCI по состоянию UART и счётчику оставшихся данных. */
void RS_TX_Handler(RS_DATA *rs_arr);
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+/* Запускает передачу через FIFO COM_1 после проверки буфера и состояния текущего обмена. */
static int RS_FifoStart(RS_DATA *, unsigned int *, unsigned long, int);
+/* Заполняет TX FIFO доступными байтами, сохраняя длину и положение в передаваемом пакете. */
static void RS_FifoTx(RS_DATA *);
+/* Прерывает ошибочный приём FIFO, очищает аппаратное состояние и включает защитную паузу. */
static void RS_FifoAbort(RS_DATA *);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-/** Îáðàáîò÷èê ïðåðûâàíèé UART - ïðèíàòî */
+/** Обработчик прерываний UART - принато */
+/* Объявляет обработчик RSA_RX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RSA_RX_Handler(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
- PieCtrlRegs.PIEIER9.all &= MG91; // Set "group" priority
- PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG91; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEIER9.all &= MG91; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+ /* Сбрасывает аппаратный сигнал через clear_timer_rs_live(&rs_a);. */
clear_timer_rs_live(&rs_a);
+ /* Вызывает RS_RX_Handler. Разбирает приём SCI; для COM_1 читает FIFO и проверяет ошибки, для COM_2 сохраняет штатный обмен RS485. */
RS_RX_Handler(&rs_a);
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик RSB_RX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RSB_RX_Handler(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
- PieCtrlRegs.PIEIER9.all &= MG93; // Set "group" priority
- PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG93; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEIER9.all &= MG93; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+ /* Сбрасывает аппаратный сигнал через clear_timer_rs_live(&rs_b);. */
clear_timer_rs_live(&rs_b);
+ /* Вызывает RS_RX_Handler. Разбирает приём SCI; для COM_1 читает FIFO и проверяет ошибки, для COM_2 сохраняет штатный обмен RS485. */
RS_RX_Handler(&rs_b);
-
+
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик RSA_TX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RSA_TX_Handler(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
- PieCtrlRegs.PIEIER9.all &= MG92; // Set "group" priority
- PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG92; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEIER9.all &= MG92; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+ /* Сбрасывает аппаратный сигнал через clear_timer_rs_live(&rs_a);. */
clear_timer_rs_live(&rs_a);
+ /* Вызывает RS_TX_Handler. Продвигает передачу текущего пакета SCI по состоянию UART и счётчику оставшихся данных. */
RS_TX_Handler(&rs_a);
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Объявляет обработчик RSB_TX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RSB_TX_Handler(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
- PieCtrlRegs.PIEIER9.all &= MG94; // Set "group" priority
- PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG94; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEIER9.all &= MG94; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
+ PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+ /* Сбрасывает аппаратный сигнал через clear_timer_rs_live(&rs_b);. */
clear_timer_rs_live(&rs_b);
+ /* Вызывает RS_TX_Handler. Продвигает передачу текущего пакета SCI по состоянию UART и счётчику оставшихся данных. */
RS_TX_Handler(&rs_b);
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Îáðàáîò÷èê ïðåðûâàíèé UART - ïðèíàòî */
+/** Обработчик прерываний UART - принато */
+/* Разбирает приём SCI; для COM_1 читает FIFO и проверяет ошибки, для COM_2 сохраняет штатный обмен RS485. */
void RS_RX_Handler(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Rc — данные Rc. */
char Rc;
+ /* Объявляет RS_BytePtr — данные RS_BytePtr. */
char RS_BytePtr;
// led1_on();
- for(;;) // 'goto' ýòî íå îïåðàòîð àçûêà Ñ
- {
+ /* Цикл for(;;); задаёт начальное значение, условие продолжения и шаг перебора. */
+ for(;;) // 'goto' это не оператор азыка С
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+ /* Проверяет if (rs_arr->commnumber == COM_1); последующий оператор выполняется только при истинном условии. */
if (rs_arr->commnumber == COM_1) {
+ /* Объявляет received — данные received. */
unsigned int received;
+ /* Проверяет if (rs_arr->SciRegs->SCIFFRX.bit.RXFFOVF или rs_arr->SciRegs->SCIRXST.bit.RXERROR); последующий оператор выполняется только при истинном условии. */
if (rs_arr->SciRegs->SCIFFRX.bit.RXFFOVF || rs_arr->SciRegs->SCIRXST.bit.RXERROR) {
+ /* Вызывает RS_FifoAbort. Прерывает ошибочный приём FIFO, очищает аппаратное состояние и включает защитную паузу. */
RS_FifoAbort(rs_arr); return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (!rs_arr->SciRegs->SCIFFRX.bit.RXFFST); последующий оператор выполняется только при истинном условии. */
if (!rs_arr->SciRegs->SCIFFRX.bit.RXFFST) {
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFFINTCLR значением 1; данные RXFFINTCLR. */
rs_arr->SciRegs->SCIFFRX.bit.RXFFINTCLR=1;
+ /* Устанавливает биты PieCtrlRegs.PIEACK.bit.ACK9 значением 1; данные ACK9. */
PieCtrlRegs.PIEACK.bit.ACK9 |= 1;
+ /* Завершает RS_RX_Handler без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- received=rs_arr->SciRegs->SCIRXBUF.all; /* one pop, data + FE/PE */
+ received=rs_arr->SciRegs->SCIRXBUF.all; /* one pop, data + FE/PE */ /* Записывает received значением rs_arr->SciRegs->SCIRXBUF.all; данные received. */
+ /* Проверяет if (received & 0xC000U); последующий оператор выполняется только при истинном условии. */
if (received & 0xC000U) { RS_FifoAbort(rs_arr); return; }
+ /* Проверяет if (rs_arr->fifo_rx_guard); последующий оператор выполняется только при истинном условии. */
if (rs_arr->fifo_rx_guard) { rs_arr->fifo_rx_guard=4; continue; }
+ /* Записывает Rc значением received & 255U; данные Rc. */
Rc=received & 255U;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(!rs_arr->SciRegs->SCIRXST.bit.RXRDY); последующий оператор выполняется только при истинном условии. */
if(!rs_arr->SciRegs->SCIRXST.bit.RXRDY) // Receiver ready flag
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Устанавливает биты PieCtrlRegs.PIEACK.bit.ACK9 значением 1; данные ACK9. */
PieCtrlRegs.PIEACK.bit.ACK9 |= 1;
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFFINTCLR значением 1; данные RXFFINTCLR. */
rs_arr->SciRegs->SCIFFRX.bit.RXFFINTCLR=1; // Clear INT flag
- return; // êñòàòè ýòî åäèíñòâåííûé âûõîä èç ïðåðûâàíèà
+ /* Завершает RS_RX_Handler без возвращаемого значения. */
+ return; // кстати это единственный выход из прерываниа
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- Rc = rs_arr->SciRegs->SCIRXBUF.bit.RXDT; // ×èòàåì ñèìâîë â ëþáîì ñëó÷àå
+ /* Записывает Rc значением rs_arr->SciRegs->SCIRXBUF.bit.RXDT; данные Rc. */
+ Rc = rs_arr->SciRegs->SCIRXBUF.bit.RXDT; // Читаем символ в любом случае
+ /* Проверяет if(rs_arr->SciRegs->SCIRXST.bit.RXERROR); последующий оператор выполняется только при истинном условии. */
if(rs_arr->SciRegs->SCIRXST.bit.RXERROR) // Receiver error flag
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rs_arr->SciRegs->SCICTL1.bit.SWRESET значением 0; данные SWRESET. */
rs_arr->SciRegs->SCICTL1.bit.SWRESET=0; // Reset SCI
+ /* Записывает rs_arr->SciRegs->SCICTL1.bit.SWRESET значением 1; данные SWRESET. */
rs_arr->SciRegs->SCICTL1.bit.SWRESET=1; // Relinquish SCI from Reset
+ /* Переходит к следующей итерации ближайшего цикла. */
continue;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- if(rs_arr->RS_DataReady) continue; // Íå çàáðàëè äàííûå
+ /* Проверяет if(rs_arr->RS_DataReady) continue; последующий оператор выполняется только при истинном условии. */
+ if(rs_arr->RS_DataReady) continue; // Не забрали данные
- if (rs_arr->RS_Flag9bit==1) // äëà RS485????????
+ /* Проверяет if (rs_arr->RS_Flag9bit==1); последующий оператор выполняется только при истинном условии. */
+ if (rs_arr->RS_Flag9bit==1) // дла RS485????????
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- // Èíèöèàëèçèðóåì ïåðåìåííûå è ôëàãè
- rs_arr->RS_FlagBegin = true; // Æäåì çàãîëîâîê
+ // Инициализируем переменные и флаги
+ /* Записывает rs_arr->RS_FlagBegin значением true; rs arr RS флаг Begin. */
+ rs_arr->RS_FlagBegin = true; // Ждем заголовок
+ /* Записывает rs_arr->RS_RecvLen значением 0; данные rs_arr->RS_RecvLen. */
rs_arr->RS_RecvLen = 0;
+ /* Записывает rs_arr->RS_FlagSkiping значением false; rs arr RS флаг Skiping. */
rs_arr->RS_FlagSkiping = false;
+ /* Записывает rs_arr->RS_HeaderCnt значением 0; данные rs_arr->RS_HeaderCnt. */
rs_arr->RS_HeaderCnt = 0;
- rs_arr->RS_Cmd = 0;
+ /* Записывает rs_arr->RS_Cmd значением 0; данные rs_arr->RS_Cmd. */
+ rs_arr->RS_Cmd = 0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
- if(rs_arr->RS_FlagSkiping) continue; // Íå íàì
-
- if (rs_arr->RS_FlagBegin) // Çàãîëîâîê
+
+ /* Проверяет if(rs_arr->RS_FlagSkiping) continue; последующий оператор выполняется только при истинном условии. */
+ if(rs_arr->RS_FlagSkiping) continue; // Не нам
+
+ /* Проверяет if (rs_arr->RS_FlagBegin); последующий оператор выполняется только при истинном условии. */
+ if (rs_arr->RS_FlagBegin) // Заголовок
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- if (rs_arr->RS_HeaderCnt==0) // Àäðåñ êîíòðîëëåðà èëè ñòàíäàðòíàà êîìàíäà
- {
- if( (Rc == CNTRL_ADDR_UNIVERSAL) || (Rc == CNTRL_ADDR && CNTRL_ADDR!=0) || ((Rc == rs_arr->addr_answer) && rs_arr->flag_LEADING)
+ /* Проверяет if (rs_arr->RS_HeaderCnt==0); последующий оператор выполняется только при истинном условии. */
+ if (rs_arr->RS_HeaderCnt==0) // Адрес контроллера или стандартнаа команда
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Проверяет if( (Rc == CNTRL_ADDR_UNIVERSAL) или (Rc == CNTRL_ADDR и CNTRL_ADDR!=0) или ((Rc == rs_arr->addr_answer) и rs_arr->flag_LEADING); последующий оператор выполняется только при истинном условии. */
+ if( (Rc == CNTRL_ADDR_UNIVERSAL) || (Rc == CNTRL_ADDR && CNTRL_ADDR!=0) || ((Rc == rs_arr->addr_answer) && rs_arr->flag_LEADING)
+ /* Продолжает список аргументов, полей или выражение || ((Rc == ADDR_FOR_ALL && ADDR_FOR_ALL!=0) && !rs_arr->flag_LEADING)); порядок элементов сохраняется. */
|| ((Rc == ADDR_FOR_ALL && ADDR_FOR_ALL!=0) && !rs_arr->flag_LEADING))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- rs_arr->addr_recive=Rc; // çàïîìíèëè àäðåñ ïî êîòîðîìó íàñ çàïðîñèëè
- rs_arr->RS_Header[rs_arr->RS_HeaderCnt++] = Rc; // Ïåðâûé áàéò
- RS_SetBitMode(rs_arr,8); // ïåðåñòðîèëèñü â 8-áèò ðåæèì
+ /* Записывает rs_arr->addr_recive значением Rc; данные rs_arr->addr_recive. */
+ rs_arr->addr_recive=Rc; // запомнили адрес по которому нас запросили
+ /* Записывает rs_arr->RS_Header[rs_arr->RS_HeaderCnt++] значением Rc; данные rs_arr->RS_Header. */
+ rs_arr->RS_Header[rs_arr->RS_HeaderCnt++] = Rc; // Первый байт
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,8) в текущей последовательности операций. */
+ RS_SetBitMode(rs_arr,8); // перестроились в 8-бит режим
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- else
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- rs_arr->RS_FlagSkiping = true; // Íå íàøåìó êîíòðîëëåðó
- rs_arr->RS_FlagBegin = false; // îñòàëèñü â 9-áèò ðåæèìå
+ /* Записывает rs_arr->RS_FlagSkiping значением true; rs arr RS флаг Skiping. */
+ rs_arr->RS_FlagSkiping = true; // Не нашему контроллеру
+ /* Записывает rs_arr->RS_FlagBegin значением false; rs arr RS флаг Begin. */
+ rs_arr->RS_FlagBegin = false; // остались в 9-бит режиме
// led1_off();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- else
- {
- rs_arr->RS_Header[rs_arr->RS_HeaderCnt++] = Rc; // Âòîðîé áàéò è ò.ä.
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Записывает rs_arr->RS_Header[rs_arr->RS_HeaderCnt++] значением Rc; данные rs_arr->RS_Header. */
+ rs_arr->RS_Header[rs_arr->RS_HeaderCnt++] = Rc; // Второй байт и т.д.
+ /* Проверяет if (rs_arr->RS_HeaderCnt == 7 и rs_arr->RS_Cmd==CMD_MODBUS_16 и !rs_arr->flag_LEADING); последующий оператор выполняется только при истинном условии. */
if (rs_arr->RS_HeaderCnt == 7 && rs_arr->RS_Cmd==CMD_MODBUS_16 && !rs_arr->flag_LEADING)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает RS_Len[CMD_MODBUS_16] значением (10+Rc); таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_MODBUS_16] = (10+Rc);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (rs_arr->RS_HeaderCnt == 3); последующий оператор выполняется только при истинном условии. */
if (rs_arr->RS_HeaderCnt == 3)
+ /* Проверяет if (rs_arr->RS_Cmd == ANS_MODBUS_4); последующий оператор выполняется только при истинном условии. */
if (rs_arr->RS_Cmd == ANS_MODBUS_4)
- {
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Записывает RS_Len[rs_arr->RS_Cmd] значением Rc + 5; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[rs_arr->RS_Cmd] = Rc + 5;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- // åñëè âòîðîé áàéò - ýòî êîìàíäà
+ // если второй байт - это команда
+ /* Проверяет if (rs_arr->RS_HeaderCnt == 2); последующий оператор выполняется только при истинном условии. */
if (rs_arr->RS_HeaderCnt == 2)
- {
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Записывает rs_arr->RS_Cmd значением Rc; данные rs_arr->RS_Cmd. */
rs_arr->RS_Cmd = Rc;
- // Ïðîâåðêà äëèíû ïîñûëêè
- // CMD_LOAD - ìëàäøàà íà äàííûé ìîìåíò
- // CMD_STD_ANS - ñòàðøàà íà äàííûé ìîìåíò
+ // Проверка длины посылки
+ // CMD_LOAD - младшаа на данный момент
+ // CMD_STD_ANS - старшаа на данный момент
+ /* Проверяет if ((rs_arr->RS_Cmd < CMD_MODBUS_3) или (rs_arr->RS_Cmd > CMD_STD_ANS) или (RS_Len[rs_arr->RS_Cmd]<3); последующий оператор выполняется только при истинном условии. */
if ((rs_arr->RS_Cmd < CMD_MODBUS_3) || (rs_arr->RS_Cmd > CMD_STD_ANS) || (RS_Len[rs_arr->RS_Cmd]<3)
+ /* Продолжает список аргументов, полей или выражение || ((rs_arr->RS_Cmd == CMD_LOAD)&&(rs_arr->RS_PrevCmd != CMD_INITLOAD)); порядок элементов сохраняется. */
|| ((rs_arr->RS_Cmd == CMD_LOAD)&&(rs_arr->RS_PrevCmd != CMD_INITLOAD))
+ /* Продолжает список аргументов, полей или выражение ); порядок элементов сохраняется. */
)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- RS_SetBitMode(rs_arr,9); // Ïîëó÷èëè âñå ïåðåñòðîèëèñü â 9-áèò äëà RS485?
- rs_arr->RS_HeaderCnt = 0; // Ïîòîìó ÷òî êîìàíäà íå òà
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
+ RS_SetBitMode(rs_arr,9); // Получили все перестроились в 9-бит дла RS485?
+ /* Записывает rs_arr->RS_HeaderCnt значением 0; данные rs_arr->RS_HeaderCnt. */
+ rs_arr->RS_HeaderCnt = 0; // Потому что команда не та
+ /* Записывает rs_arr->RS_FlagBegin значением true; rs arr RS флаг Begin. */
rs_arr->RS_FlagBegin = true;
+ /* Записывает rs_arr->RS_FlagSkiping значением false; rs arr RS флаг Skiping. */
rs_arr->RS_FlagSkiping = false;
- rs_arr->RS_Cmd=0;
+ /* Записывает rs_arr->RS_Cmd значением 0; данные rs_arr->RS_Cmd. */
+ rs_arr->RS_Cmd=0;
// led1_off();
- continue;
+ /* Переходит к следующей итерации ближайшего цикла. */
+ continue;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- if (rs_arr->RS_Cmd == CMD_LOAD) // Äëà ýòîé êîìàíäû çàãîëîâîê î÷åíü êîðîòêèé
- rs_arr->RS_FlagBegin = false;// äàëüøå èäóò äàííûå
+ /* Проверяет if (rs_arr->RS_Cmd == CMD_LOAD); последующий оператор выполняется только при истинном условии. */
+ if (rs_arr->RS_Cmd == CMD_LOAD) // Дла этой команды заголовок очень короткий
+ /* Записывает rs_arr->RS_FlagBegin значением false; rs arr RS флаг Begin. */
+ rs_arr->RS_FlagBegin = false;// дальше идут данные
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if( (rs_arr->RS_HeaderCnt >= RS_Len[rs_arr->RS_Cmd]) или; последующий оператор выполняется только при истинном условии. */
if( (rs_arr->RS_HeaderCnt >= RS_Len[rs_arr->RS_Cmd]) ||
+ /* Продолжает список аргументов, полей или выражение (rs_arr->RS_HeaderCnt >= sizeof(rs_arr->RS_Header))); порядок элементов сохраняется. */
(rs_arr->RS_HeaderCnt >= sizeof(rs_arr->RS_Header)))
- { // Ïîëó÷èëè çàãîëîâîê
- RS_SetBitMode(rs_arr,9); // Ïîëó÷èëè âñå ïåðåñòðîèëèñü â 9-áèò äëà RS485?
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ { // Получили заголовок
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
+ RS_SetBitMode(rs_arr,9); // Получили все перестроились в 9-бит дла RS485?
+ /* Записывает rs_arr->RS_FlagBegin значением false; rs arr RS флаг Begin. */
rs_arr->RS_FlagBegin = false;
+ /* Записывает rs_arr->RS_FlagSkiping значением true; rs arr RS флаг Skiping. */
rs_arr->RS_FlagSkiping = true;
+ /* Записывает rs_arr->RS_DataReady значением true; rs arr RS данные Ready. */
rs_arr->RS_DataReady = true;
+ /* Записывает rs_arr->RS_Cmd значением 0; данные rs_arr->RS_Cmd. */
rs_arr->RS_Cmd=0;
// led1_off();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} } }
- else // Ïîòîê äàííûõ
- {
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else // Поток данных
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Проверяет if(rs_arr->pRS_RecvPtr<(unsigned int *)Rec_Bloc_Begin или rs_arr->pRS_RecvPtr>(unsigned int *)Rec_Bloc_End); последующий оператор выполняется только при истинном условии. */
if(rs_arr->pRS_RecvPtr<(unsigned int *)Rec_Bloc_Begin || rs_arr->pRS_RecvPtr>(unsigned int *)Rec_Bloc_End)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- rs_arr->pRS_RecvPtr = (unsigned int *)Rec_Bloc_Begin; // Íà ïðîãðàììó íàäåéñà, à ñàì íå ïëîøàé
- rs_arr->pRecvPtr = (unsigned int *)Rec_Bloc_Begin; // Íà ïðîãðàììó íàäåéñà, à ñàì íå ïëîøàé
- }
- if(rs_arr->RS_PrevCmd != CMD_INITLOAD) continue; // Ìû çäåñü îêàçàëèñü ïî êàêîé-òî ÷óäîâèùíîé îøèáêå
-
- if(rs_arr->RS_DataReady) // Åñëè äàííûå â îñíîâíîì öèêëå íå çàáðàíû,
- { // òî ïðîïóñêàåì ñëåäóþùóþ ïîñûëêó
- rs_arr->RS_FlagSkiping = true; // Èãíîðèðóåì äî ñëåäóþùåãî çàãîëîâêà
-// led1_off();
- continue;
+ /* Записывает rs_arr->pRS_RecvPtr значением (unsigned int *)Rec_Bloc_Begin; данные rs_arr->pRS_RecvPtr. */
+ rs_arr->pRS_RecvPtr = (unsigned int *)Rec_Bloc_Begin; // На программу надейса, а сам не плошай
+ /* Записывает rs_arr->pRecvPtr значением (unsigned int *)Rec_Bloc_Begin; данные rs_arr->pRecvPtr. */
+ rs_arr->pRecvPtr = (unsigned int *)Rec_Bloc_Begin; // На программу надейса, а сам не плошай
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(rs_arr->RS_PrevCmd != CMD_INITLOAD) continue; последующий оператор выполняется только при истинном условии. */
+ if(rs_arr->RS_PrevCmd != CMD_INITLOAD) continue; // Мы здесь оказались по какой-то чудовищной ошибке
+
+ /* Проверяет if(rs_arr->RS_DataReady); последующий оператор выполняется только при истинном условии. */
+ if(rs_arr->RS_DataReady) // Если данные в основном цикле не забраны,
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ { // то пропускаем следующую посылку
+ /* Записывает rs_arr->RS_FlagSkiping значением true; rs arr RS флаг Skiping. */
+ rs_arr->RS_FlagSkiping = true; // Игнорируем до следующего заголовка
+// led1_off();
+ /* Переходит к следующей итерации ближайшего цикла. */
+ continue;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Записывает RS_BytePtr значением rs_arr->RS_RecvLen++ % 2; данные RS_BytePtr. */
RS_BytePtr = rs_arr->RS_RecvLen++ % 2;
- if(RS_BytePtr) *rs_arr->pRS_RecvPtr++ |= Rc; // Ïîëó÷èëè ñëîâî
+ /* Проверяет if(RS_BytePtr) *rs_arr->pRS_RecvPtr++ |= Rc; последующий оператор выполняется только при истинном условии. */
+ if(RS_BytePtr) *rs_arr->pRS_RecvPtr++ |= Rc; // Получили слово
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else *rs_arr->pRS_RecvPtr = Rc<<8;
- if(rs_arr->RS_Length <= rs_arr->RS_RecvLen) // Êîíåö ïîñûëêè
+ /* Проверяет if(rs_arr->RS_Length <= rs_arr->RS_RecvLen); последующий оператор выполняется только при истинном условии. */
+ if(rs_arr->RS_Length <= rs_arr->RS_RecvLen) // Конец посылки
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rs_arr->RS_PrevCmd значением rs_arr->RS_Header[1] = CMD_LOAD; данные rs_arr->RS_PrevCmd. */
rs_arr->RS_PrevCmd = rs_arr->RS_Header[1] = CMD_LOAD;
- RS_SetBitMode(rs_arr,9); // Ïîëó÷èëè âñå äàííûå ïåðåñòðîèëèñü â 9-áèò äëà RS485?
- rs_arr->RS_FlagSkiping = true; // Èãíîðèðóåì äî ñëåäóþùåãî çàãîëîâêà
- rs_arr->RS_DataReady = true; // Ôëàã â îñíîâíîé öèêë - äàííûå ïîëó÷åíû
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
+ RS_SetBitMode(rs_arr,9); // Получили все данные перестроились в 9-бит дла RS485?
+ /* Записывает rs_arr->RS_FlagSkiping значением true; rs arr RS флаг Skiping. */
+ rs_arr->RS_FlagSkiping = true; // Игнорируем до следующего заголовка
+ /* Записывает rs_arr->RS_DataReady значением true; rs arr RS данные Ready. */
+ rs_arr->RS_DataReady = true; // Флаг в основной цикл - данные получены
// led1_off();
-} } } }
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+} } } }
-/** Îáðàáîò÷èê ïðåðûâàíèé UART - ïîñëàíî */
+/** Обработчик прерываний UART - послано */
+/* Продвигает передачу текущего пакета SCI по состоянию UART и счётчику оставшихся данных. */
void RS_TX_Handler(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+ /* Проверяет if (rs_arr->commnumber == COM_1); последующий оператор выполняется только при истинном условии. */
if (rs_arr->commnumber == COM_1) { RS_FifoTx(rs_arr); return; }
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Объявляет RS_BytePtr — данные RS_BytePtr. */
char RS_BytePtr;
// unsigned int i;
+ /* Проверяет if(rs_arr->RS_SendBlockMode == BM_CHAR32); последующий оператор выполняется только при истинном условии. */
if(rs_arr->RS_SendBlockMode == BM_CHAR32)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(++rs_arr->RS_SendLen >= rs_arr->RS_SLength); последующий оператор выполняется только при истинном условии. */
if(++rs_arr->RS_SendLen >= rs_arr->RS_SLength)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- enableUARTInt(rs_arr); /* Çàïðåùàåì ïðåðûâàíèà ïî ïåðåäà÷å */
+ enableUARTInt(rs_arr); /* Запрещаем прерываниа по передаче */ /* Вызывает enableUARTInt с аргументами (rs_arr) в текущей последовательности операций. */
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает SCI_send с аргументами (rs_arr,*(rs_arr->pRS_SendPtr++)) в текущей последовательности операций. */
SCI_send(rs_arr,*(rs_arr->pRS_SendPtr++));
-
+
+ /* Проверяет if(rs_arr->RS_SendLen >= rs_arr->RS_SLength); последующий оператор выполняется только при истинном условии. */
if(rs_arr->RS_SendLen >= rs_arr->RS_SLength)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает RS_Wait4OK с аргументами (rs_arr) в текущей последовательности операций. */
RS_Wait4OK(rs_arr);
-// for (i=0; i <= TIME_WAIT_RS_BYTE_OUT; i++){} /* Ïàóçà äëà PC */
- RS_SetBitMode(rs_arr,9); /* Ïåðåäàëè âñå ïåðåñòðîèëèñü â 9-áèò äëà RS485?*/
- RS_Line_to_receive(rs_arr); /* ðåæèì ïðèåìà RS485 */
-
- rs_arr->flag_TIMEOUT_to_Send=false; /* ñáðîñèëè ôëàã îæèäàíèà òàéìàóòà */
+// for (i=0; i <= TIME_WAIT_RS_BYTE_OUT; i++){} /* Пауза дла PC */
+ RS_SetBitMode(rs_arr,9); /* Передали все перестроились в 9-бит дла RS485?*/ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
+ RS_Line_to_receive(rs_arr); /* режим приема RS485 */ /* Вызывает RS_Line_to_receive с аргументами (rs_arr) в текущей последовательности операций. */
+
+ rs_arr->flag_TIMEOUT_to_Send=false; /* сбросили флаг ожиданиа таймаута */ /* Записывает rs_arr->flag_TIMEOUT_to_Send значением false; rs arr флаг TIMEOUT to Send. */
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- else /* BM_PACKED */
+ else /* BM_PACKED */ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает RS_BytePtr значением (rs_arr->RS_SendLen++) % 2; данные RS_BytePtr. */
RS_BytePtr = (rs_arr->RS_SendLen++) % 2;
+ /* Проверяет if(rs_arr->RS_SendLen >= rs_arr->RS_SLength); последующий оператор выполняется только при истинном условии. */
if(rs_arr->RS_SendLen >= rs_arr->RS_SLength)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- enableUARTInt(rs_arr); /* Çàïðåùàåì ïðåðûâàíèà ïî ïåðåäà÷å */
+ enableUARTInt(rs_arr); /* Запрещаем прерываниа по передаче */ /* Вызывает enableUARTInt с аргументами (rs_arr) в текущей последовательности операций. */
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(RS_BytePtr) SCI_send(rs_arr, LOBYTE( *(rs_arr->pRS_SendPtr++) )); последующий оператор выполняется только при истинном условии. */
if(RS_BytePtr) SCI_send(rs_arr, LOBYTE( *(rs_arr->pRS_SendPtr++) ));
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else SCI_send(rs_arr, HIBYTE( *rs_arr->pRS_SendPtr ));
+ /* Проверяет if(rs_arr->RS_SendLen >= rs_arr->RS_SLength); последующий оператор выполняется только при истинном условии. */
if(rs_arr->RS_SendLen >= rs_arr->RS_SLength)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает RS_Wait4OK с аргументами (rs_arr) в текущей последовательности операций. */
RS_Wait4OK(rs_arr);
-// for (i=0; i <= TIME_WAIT_RS_BYTE_OUT; i++){} /* Ïàóçà äëà PC */
-// RS_SetBitMode(rs_arr,9); /* Ïåðåäàëè âñå ïåðåñòðîèëèñü â 9-áèò äëà RS485?*/
-// RS_Line_to_receive(); /* ðåæèì ïðèåìà RS485 */
-
- }
- }
+// for (i=0; i <= TIME_WAIT_RS_BYTE_OUT; i++){} /* Пауза дла PC */
+// RS_SetBitMode(rs_arr,9); /* Передали все перестроились в 9-бит дла RS485?*/
+// RS_Line_to_receive(); /* режим приема RS485 */
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+
+ /* Устанавливает биты PieCtrlRegs.PIEACK.bit.ACK9 значением 1; данные ACK9. */
PieCtrlRegs.PIEACK.bit.ACK9 |= 1;
// rs_arr->SciRegs->SCIFFTX.bit.TXINTCLR=1; // Clear INT flag
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Èíèöèàëèçàöèà ìàññèâà äëèí êîìàíä */
+/** Инициализациа массива длин команд */
+/* Начинает функцию setup_arr_cmd_length; назначение модуля — приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
void setup_arr_cmd_length()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i. */
int i;
-
+
+ /* Цикл for (i=0;i<70;i++) RS_Len[i]=i;; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i=0;i<70;i++) RS_Len[i]=i;
+ /* Записывает RS_Len[CMD_LOAD] значением 12; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_LOAD] = 12;
+ /* Записывает RS_Len[CMD_UPLOAD] значением 12; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_UPLOAD] = 12;
+ /* Записывает RS_Len[CMD_RUN] значением 8; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_RUN] = 8;
+ /* Записывает RS_Len[CMD_XFLASH] значением 9; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_XFLASH] = 9;
+ /* Записывает RS_Len[CMD_TFLASH] значением 16; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_TFLASH] = 16;
+ /* Записывает RS_Len[CMD_PEEK] значением 8; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_PEEK] = 8;
+ /* Записывает RS_Len[CMD_POKE] значением 12; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_POKE] = 12;
+ /* Записывает RS_Len[CMD_INITLOAD] значением 12; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_INITLOAD] = 12;
- RS_Len[CMD_INIT] = 5;
+ /* Записывает RS_Len[CMD_INIT] значением 5; таблица ожидаемых длин команд последовательного протокола. */
+ RS_Len[CMD_INIT] = 5;
+ /* Записывает RS_Len[CMD_VECTOR] значением size_cmd15-2; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_VECTOR] = size_cmd15-2; //sizeof(CMD_TO_TMS)-2;
- RS_Len[CMD_STD] = size_cmd15-1; //sizeof(CMD_TO_TMS)-1;
+ /* Записывает RS_Len[CMD_STD] значением size_cmd15-1; таблица ожидаемых длин команд последовательного протокола. */
+ RS_Len[CMD_STD] = size_cmd15-1; //sizeof(CMD_TO_TMS)-1;
+ /* Записывает RS_Len[CMD_IMPULSE] значением 8; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_IMPULSE] = 8;
+ /* Записывает RS_Len[CMD_MODBUS_3] значением 8; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_MODBUS_3] = 8;
+ /* Записывает RS_Len[ANS_MODBUS_4] значением 3+48*2+2; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[ANS_MODBUS_4] = 3+48*2+2;
+ /* Записывает RS_Len[CMD_MODBUS_6] значением 8; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_MODBUS_6] = 8;
+ /* Записывает RS_Len[CMD_MODBUS_16] значением 13; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_MODBUS_16] = 13;
+ /* Записывает RS_Len[CMD_MODBUS_15] значением 27; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_MODBUS_15] = 27;
+ /* Записывает RS_Len[CMD_EXTEND] значением 18; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[CMD_EXTEND] = 18;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
-/** Íàñòðîéêà ðåæèìà ïðèåìà/ïåðåäà÷è */
+
+/** Настройка режима приема/передачи */
+/* Начинает функцию RS_SetBitMode; назначение модуля — приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
void RS_SetBitMode(RS_DATA *rs_arr,int n)
-{
- if(n == 8)
- {
- RS_SetLineMode(rs_arr,8,'N',1); /* ðåæèì ëèíèè */
- rs_arr->RS_Flag9bit=0;
- }
- if(n == 9)
- {
- RS_SetLineMode(rs_arr,8,'N',1); /* ðåæèì ëèíèè */
- rs_arr->RS_Flag9bit=1;
-} }
-
-/** Ïîñûëêà áëîêà áàéòîâ.
- Ïîñûëàåò ìàññèâà 32-áèòíûõ öåëûõ ÷èñåë ñòàðøèå áèòû äîëæíû áûòü 0.
- @precondition Ðàáîòà ô-öèè çàâèñèò îò ìàêðî RS_TRANSMIT_INTR
- @param buf àäðåñ ìàññèâà
- @param len êîëè÷åñòâî áàéò
- @see RS_BSend, RS_TRANSMIT_INTR */
-int RS_Send(RS_DATA *rs_arr,unsigned int *pBuf,unsigned long len)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(n == 8); последующий оператор выполняется только при истинном условии. */
+ if(n == 8)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ RS_SetLineMode(rs_arr,8,'N',1); /* режим линии */ /* Вызывает RS_SetLineMode с аргументами (rs_arr,8,'N',1) в текущей последовательности операций. */
+ /* Записывает rs_arr->RS_Flag9bit значением 0; rs arr RS флаг 9 бит. */
+ rs_arr->RS_Flag9bit=0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Проверяет if(n == 9); последующий оператор выполняется только при истинном условии. */
+ if(n == 9)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ RS_SetLineMode(rs_arr,8,'N',1); /* режим линии */ /* Вызывает RS_SetLineMode с аргументами (rs_arr,8,'N',1) в текущей последовательности операций. */
+ /* Записывает rs_arr->RS_Flag9bit значением 1; rs arr RS флаг 9 бит. */
+ rs_arr->RS_Flag9bit=1;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+} }
+
+/** Посылка блока байтов.
+ Посылает массива 32-битных целых чисел старшие биты должны быть 0.
+ @precondition Работа ф-ции зависит от макро RS_TRANSMIT_INTR
+ @param buf адрес массива
+ @param len количество байт
+ @see RS_BSend, RS_TRANSMIT_INTR */
+/* Передаёт массив слов через SCI в выбранном режиме упаковки. */
+int RS_Send(RS_DATA *rs_arr,unsigned int *pBuf,unsigned long len)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+ /* Проверяет if (rs_arr->commnumber == COM_1) return RS_FifoStart(rs_arr,pBuf,len,BM_CHAR32); последующий оператор выполняется только при истинном условии. */
if (rs_arr->commnumber == COM_1) return RS_FifoStart(rs_arr,pBuf,len,BM_CHAR32);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Объявляет i — данные i. */
unsigned int i;
- for (i=0; i <= 30000; i++){} /* Ïàóçà äëà PC */
+ for (i=0; i <= 30000; i++){} /* Пауза дла PC */ /* Цикл for (i=0; i <= 30000; i++); задаёт начальное значение, условие продолжения и шаг перебора. */
- RS_Line_to_send(rs_arr); /* ðåæèì ïåðåäà÷è RS485 */
+ RS_Line_to_send(rs_arr); /* режим передачи RS485 */ /* Вызывает RS_Line_to_send с аргументами (rs_arr) в текущей последовательности операций. */
- for (i=0; i <= 10000; i++){} /* Ïàóçà äëà PC */
-
- rs_arr->RS_SLength = len; /* Íàñòðàèâàåì ïåðåìåííûå */
+ for (i=0; i <= 10000; i++){} /* Пауза дла PC */ /* Цикл for (i=0; i <= 10000; i++); задаёт начальное значение, условие продолжения и шаг перебора. */
+
+ rs_arr->RS_SLength = len; /* Настраиваем переменные */ /* Записывает rs_arr->RS_SLength значением len; rs arr RS S длина. */
+ /* Записывает rs_arr->pRS_SendPtr значением pBuf + 1; данные rs_arr->pRS_SendPtr. */
rs_arr->pRS_SendPtr = pBuf + 1;
+ /* Записывает rs_arr->RS_SendBlockMode значением BM_CHAR32; rs arr RS Send Block режим. */
rs_arr->RS_SendBlockMode = BM_CHAR32;
- RS_Wait4OK(rs_arr); /* Äîæèäàåìñà óõîäà */
- RS_SetBitMode(rs_arr,8); /* Îñòàëüíûå â 8-áèò ðåæèìå */
-
- rs_arr->RS_SendLen = 1; /* Äâà áàéòà óæå ïåðåäàëè */
+ RS_Wait4OK(rs_arr); /* Дожидаемса ухода */ /* Вызывает RS_Wait4OK с аргументами (rs_arr) в текущей последовательности операций. */
+ RS_SetBitMode(rs_arr,8); /* Остальные в 8-бит режиме */ /* Вызывает RS_SetBitMode с аргументами (rs_arr,8) в текущей последовательности операций. */
+
+ rs_arr->RS_SendLen = 1; /* Два байта уже передали */ /* Записывает rs_arr->RS_SendLen значением 1; данные rs_arr->RS_SendLen. */
+ /* Проверяет if(len > 1); последующий оператор выполняется только при истинном условии. */
if(len > 1)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- enableUARTIntW(rs_arr); /* Ðàçðåøàåì ïðåðûâàíèà ïî ïåðåäà÷å */
- SCI_send(rs_arr, *pBuf); // Ïåðåäàåì âòîðîé áàéò ïî ïðåðûâàíèþ
+ enableUARTIntW(rs_arr); /* Разрешаем прерываниа по передаче */ /* Вызывает enableUARTIntW с аргументами (rs_arr) в текущей последовательности операций. */
+ /* Вызывает SCI_send с аргументами (rs_arr, *pBuf) в текущей последовательности операций. */
+ SCI_send(rs_arr, *pBuf); // Передаем второй байт по прерыванию
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- SCI_send(rs_arr, *pBuf); // Ïåðåäàåì âòîðîé áàéò ïî ïðåðûâàíèþ
- RS_Wait4OK(rs_arr); /* Äîæèäàåìñà óõîäà áåç ïðåðûâàíèà */
- for (i=0; i <= TIME_WAIT_RS_BYTE_OUT; i++){} /* Ïàóçà äëà PC */
- RS_SetBitMode(rs_arr,9); /* Îáðàòíî â 9-áèò ðåæèì */
- RS_Line_to_receive(rs_arr); /* ðåæèì ïðèåìà RS485 */
+ /* Вызывает SCI_send с аргументами (rs_arr, *pBuf) в текущей последовательности операций. */
+ SCI_send(rs_arr, *pBuf); // Передаем второй байт по прерыванию
+ RS_Wait4OK(rs_arr); /* Дожидаемса ухода без прерываниа */ /* Вызывает RS_Wait4OK с аргументами (rs_arr) в текущей последовательности операций. */
+ for (i=0; i <= TIME_WAIT_RS_BYTE_OUT; i++){} /* Пауза дла PC */ /* Цикл for (i=0; i <= TIME_WAIT_RS_BYTE_OUT; i++); задаёт начальное значение, условие продолжения и шаг перебора. */
+ RS_SetBitMode(rs_arr,9); /* Обратно в 9-бит режим */ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
+ RS_Line_to_receive(rs_arr); /* режим приема RS485 */ /* Вызывает RS_Line_to_receive с аргументами (rs_arr) в текущей последовательности операций. */
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Завершает RS_Send и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-// Ïîñûëêà áëîêà óïàêîâàííûõ áàéòîâ
+// Посылка блока упакованных байтов
+/* Передаёт последовательность 8-битных октетов, упакованных в слова C28x. */
int RS_BSend(RS_DATA *rs_arr,unsigned int *pBuf, unsigned long len)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+ /* Проверяет if (rs_arr->commnumber == COM_1) return RS_FifoStart(rs_arr,pBuf,len,BM_PACKED); последующий оператор выполняется только при истинном условии. */
if (rs_arr->commnumber == COM_1) return RS_FifoStart(rs_arr,pBuf,len,BM_PACKED);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
- RS_Line_to_send(rs_arr); // ðåæèì ïåðåäà÷è RS485
+ /* Вызывает RS_Line_to_send с аргументами (rs_arr) в текущей последовательности операций. */
+ RS_Line_to_send(rs_arr); // режим передачи RS485
- rs_arr->RS_SLength = len; // Íàñòðàèâàåì ïåðåìåííûå
- rs_arr->pRS_SendPtr = pBuf;
+ /* Записывает rs_arr->RS_SLength значением len; rs arr RS S длина. */
+ rs_arr->RS_SLength = len; // Настраиваем переменные
+ /* Записывает rs_arr->pRS_SendPtr значением pBuf; данные rs_arr->pRS_SendPtr. */
+ rs_arr->pRS_SendPtr = pBuf;
+ /* Записывает rs_arr->RS_SendBlockMode значением BM_PACKED; rs arr RS Send Block режим. */
rs_arr->RS_SendBlockMode = BM_PACKED;
- RS_Wait4OK(rs_arr); // Îæèäàåì î÷èñòêè è óõîäà ïîñëåäíåãî áàéòà
- RS_SetBitMode(rs_arr,8); /* Îñòàëüíûå â 8-áèò ðåæèìå */
+ /* Вызывает RS_Wait4OK с аргументами (rs_arr) в текущей последовательности операций. */
+ RS_Wait4OK(rs_arr); // Ожидаем очистки и ухода последнего байта
+ RS_SetBitMode(rs_arr,8); /* Остальные в 8-бит режиме */ /* Вызывает RS_SetBitMode с аргументами (rs_arr,8) в текущей последовательности операций. */
- rs_arr->RS_SendLen = 1; // Îäèí áàéò óæå ïåðåäàëè
+ /* Записывает rs_arr->RS_SendLen значением 1; данные rs_arr->RS_SendLen. */
+ rs_arr->RS_SendLen = 1; // Один байт уже передали
- enableUARTIntW(rs_arr); /* Ðàçðåøàåì ïðåðûâàíèà ïî ïåðåäà÷å */
+ enableUARTIntW(rs_arr); /* Разрешаем прерываниа по передаче */ /* Вызывает enableUARTIntW с аргументами (rs_arr) в текущей последовательности операций. */
- SCI_send(rs_arr,HIBYTE(*pBuf));// Ïåðåäàåì ïåðâûé áàéò
+ /* Вызывает SCI_send с аргументами (rs_arr,HIBYTE(*pBuf)) в текущей последовательности операций. */
+ SCI_send(rs_arr,HIBYTE(*pBuf));// Передаем первый байт
+ /* Завершает RS_BSend и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Óñòàíàâëèâàåò ñêîðîñòü îáìåíà.
- @param speed ñêîðîñòü RS â áîä */
-/** Óñòàíàâëèâàåò ñêîðîñòü îáìåíà.
- @param speed ñêîðîñòü RS â áîä */
+/** Устанавливает скорость обмена.
+ @param speed скорость RS в бод */
+/** Устанавливает скорость обмена.
+ @param speed скорость RS в бод */
+/* Начинает функцию RS_SetLineSpeed; назначение модуля — приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
void RS_SetLineSpeed(RS_DATA *rs_arr,unsigned long speed)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет SciBaud — SCI скорость передачи. */
long SciBaud;
+ /* Записывает SciBaud значением LSPCLK/(speed*8.0); SCI скорость передачи. */
SciBaud = LSPCLK/(speed*8.0);
// if((SciBaud-(unsigned int)SciBaud)>0.5) SciBaud++;
+ /* Записывает rs_arr->SciRegs->SCIHBAUD значением HIBYTE((int)SciBaud); rs arr SCI Regs SCIHBAUD. */
rs_arr->SciRegs->SCIHBAUD = HIBYTE((int)SciBaud);
+ /* Записывает rs_arr->SciRegs->SCILBAUD значением LOBYTE((int)SciBaud); rs arr SCI Regs SCILBAUD. */
rs_arr->SciRegs->SCILBAUD = LOBYTE((int)SciBaud);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Èíèöèàëèçàöèà ïîñëåäîâàòåëüíîãî ïîðòà */
+/** Инициализациа последовательного порта */
+/* Инициализирует структуры обоих SCI и таблицу длин команд. */
void create_uart_vars(char size_cmd15_set)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает size_cmd15 значением size_cmd15_set; размер cmd 15. */
size_cmd15=size_cmd15_set;
+ /* Записывает rs_a.commnumber значением COM_1; данные commnumber. */
rs_a.commnumber=COM_1;
+ /* Записывает rs_b.commnumber значением COM_2; данные commnumber. */
rs_b.commnumber=COM_2;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Èíèöèàëèçàöèà ïîñëåäîâàòåëüíîãî ïîðòà */
+/** Инициализациа последовательного порта */
+/* Настраивает выбранный SCI, скорость и обработчики прерываний. */
void setup_uart(char commnumber, unsigned long speed_baud)
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Продолжает список аргументов, полей или выражение volatile struct SCI_REGS *SciRegs;; порядок элементов сохраняется. */
volatile struct SCI_REGS *SciRegs;
+ /* Объявляет rs_arr — данные rs_arr. Хранит указатель на данные. */
RS_DATA *rs_arr;
+ /* Проверяет if(commnumber==COM_1); последующий оператор выполняется только при истинном условии. */
if(commnumber==COM_1)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rs_a.SciRegs значением &SciaRegs; SCI Regs. */
rs_a.SciRegs = &SciaRegs;
+ /* Записывает rs_arr значением &rs_a; данные rs_arr. */
rs_arr = &rs_a;
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает GpioCtrlRegs.GPAMUX2.bit.GPIO29 значением 1; аппаратная линия ввода/вывода GPIO29. */
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // SCITXDA - SCI-A transmit(O)
+ /* Записывает GpioCtrlRegs.GPAMUX2.bit.GPIO28 значением 1; аппаратная линия ввода/вывода GPIO28. */
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // SCIRXDA - SCI-A receive (I)
-
+
+ /* Записывает PieVectTable.SCIRXINTA значением &RSA_RX_Handler; данные SCIRXINTA. */
PieVectTable.SCIRXINTA = &RSA_RX_Handler;
+ /* Записывает PieVectTable.SCITXINTA значением &RSA_TX_Handler; данные SCITXINTA. */
PieVectTable.SCITXINTA = &RSA_TX_Handler;
+ /* Записывает PieCtrlRegs.PIEIER9.bit.INTx1 значением 1; данные INTx1. */
PieCtrlRegs.PIEIER9.bit.INTx1=1; // PIE Group 9, INT1
+ /* Записывает PieCtrlRegs.PIEIER9.bit.INTx2 значением 1; данные INTx2. */
PieCtrlRegs.PIEIER9.bit.INTx2=1; // PIE Group 9, INT2
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; // Enable CPU INT
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(commnumber==COM_2); последующий оператор выполняется только при истинном условии. */
if(commnumber==COM_2)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rs_b.SciRegs значением &ScibRegs; SCI Regs. */
rs_b.SciRegs = &ScibRegs;
+ /* Записывает rs_arr значением &rs_b; данные rs_arr. */
rs_arr = &rs_b;
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает GpioCtrlRegs.GPAMUX1.bit.GPIO14 значением 2; аппаратная линия ввода/вывода GPIO14. */
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 2; // SCITXDB - SCI-B transmit(O)
+ /* Записывает GpioCtrlRegs.GPAMUX1.bit.GPIO15 значением 2; аппаратная линия ввода/вывода GPIO15. */
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 2; // SCIRXDB - SCI-B receive (I)
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO34 значением 0; аппаратная линия ввода/вывода GPIO34. */
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; // GPIO 34 - general purpose I/O 34 (default)
+ /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO34 значением 1; аппаратная линия ввода/вывода GPIO34. */
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; // Configures the GPIO pin as an output
+ /* Записывает PieVectTable.SCIRXINTB значением &RSB_RX_Handler; данные SCIRXINTB. */
PieVectTable.SCIRXINTB = &RSB_RX_Handler;
+ /* Записывает PieVectTable.SCITXINTB значением &RSB_TX_Handler; данные SCITXINTB. */
PieVectTable.SCITXINTB = &RSB_TX_Handler;
+ /* Записывает PieCtrlRegs.PIEIER9.bit.INTx3 значением 1; данные INTx3. */
PieCtrlRegs.PIEIER9.bit.INTx3=1; // PIE Group 9, INT3
+ /* Записывает PieCtrlRegs.PIEIER9.bit.INTx4 значением 1; данные INTx4. */
PieCtrlRegs.PIEIER9.bit.INTx4=1; // PIE Group 9, INT4
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; // Enable CPU INT
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает rs_arr->commnumber значением commnumber; данные rs_arr->commnumber. */
rs_arr->commnumber = commnumber;
+ /* Записывает SciRegs значением rs_arr->SciRegs; SCI Regs. */
SciRegs = rs_arr->SciRegs;
+ /* Вызывает RS_SetLineMode с аргументами (rs_arr,8,'N',1) в текущей последовательности операций. */
RS_SetLineMode(rs_arr,8,'N',1);
-
-// enable TX, RX, internal SCICLK,
+
+// enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
+ /* Записывает SciRegs->SCIFFCT.bit.ABDCLR значением 1; данные ABDCLR. */
SciRegs->SCIFFCT.bit.ABDCLR=1;
+ /* Записывает SciRegs->SCIFFCT.bit.CDC значением 0; данные CDC. */
SciRegs->SCIFFCT.bit.CDC=0;
+ /* Записывает SciRegs->SCICTL1.bit.RXERRINTENA значением 0; данные RXERRINTENA. */
SciRegs->SCICTL1.bit.RXERRINTENA=0;
+ /* Записывает SciRegs->SCICTL1.bit.SWRESET значением 0; данные SWRESET. */
SciRegs->SCICTL1.bit.SWRESET=0;
+ /* Записывает SciRegs->SCICTL1.bit.TXWAKE значением 0; данные TXWAKE. */
SciRegs->SCICTL1.bit.TXWAKE=0;
+ /* Записывает SciRegs->SCICTL1.bit.SLEEP значением 0; данные SLEEP. */
SciRegs->SCICTL1.bit.SLEEP=0;
+ /* Записывает SciRegs->SCICTL1.bit.TXENA значением 1; данные TXENA. */
SciRegs->SCICTL1.bit.TXENA=1;
+ /* Записывает SciRegs->SCICTL1.bit.RXENA значением 1; данные RXENA. */
SciRegs->SCICTL1.bit.RXENA=1;
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+ /* Проверяет if (commnumber == COM_1); последующий оператор выполняется только при истинном условии. */
if (commnumber == COM_1) {
- SciRegs->SCIFFTX.all=0xC008U; /* enhancement, reset held, TX level 8, IRQ off */
- SciRegs->SCIFFRX.all=0x0061U; /* reset held, RX level 1, IRQ on */
+ SciRegs->SCIFFTX.all=0xC008U; /* enhancement, reset held, TX level 8, IRQ off */ /* Записывает SciRegs->SCIFFTX.all значением 0xC008U; представление регистра целым словом без разбиения на битовые поля. */
+ SciRegs->SCIFFRX.all=0x0061U; /* reset held, RX level 1, IRQ on */ /* Записывает SciRegs->SCIFFRX.all значением 0x0061U; представление регистра целым словом без разбиения на битовые поля. */
+ /* Записывает SciRegs->SCIFFCT.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
SciRegs->SCIFFCT.all=0;
+ /* Записывает SciRegs->SCIFFRX.bit.RXFFOVRCLR значением 1; данные RXFFOVRCLR. */
SciRegs->SCIFFRX.bit.RXFFOVRCLR=1;
+ /* Записывает SciRegs->SCIFFTX.bit.TXFFINTCLR значением 1; данные TXFFINTCLR. */
SciRegs->SCIFFTX.bit.TXFFINTCLR=1;
+ /* Записывает SciRegs->SCIFFTX.bit.TXFIFOXRESET значением 1; данные TXFIFOXRESET. */
SciRegs->SCIFFTX.bit.TXFIFOXRESET=1;
+ /* Записывает SciRegs->SCIFFRX.bit.RXFIFORESET значением 1; данные RXFIFORESET. */
SciRegs->SCIFFRX.bit.RXFIFORESET=1;
+ /* Записывает rs_arr->fifo_tx_active значением rs_arr->fifo_rx_guard=0; данные rs_arr->fifo_tx_active. */
rs_arr->fifo_tx_active=rs_arr->fifo_rx_guard=0;
+ /* Записывает rs_arr->fifo_rx_errors значением rs_arr->fifo_overflows=0; данные rs_arr->fifo_rx_errors. */
rs_arr->fifo_rx_errors=rs_arr->fifo_overflows=0;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Записывает SciRegs->SCIFFTX.bit.SCIFFENA значением 0; данные SCIFFENA. */
SciRegs->SCIFFTX.bit.SCIFFENA=0; // fifo off
- SciRegs->SCIFFRX.bit.RXFFIL=1; // Äëèíà íàèìåíüøåé êîìàíäû
+ /* Записывает SciRegs->SCIFFRX.bit.RXFFIL значением 1; данные RXFFIL. */
+ SciRegs->SCIFFRX.bit.RXFFIL=1; // Длина наименьшей команды
+ /* Вызывает setup_arr_cmd_length с аргументами () в текущей последовательности операций. */
setup_arr_cmd_length();
- RS_SetLineSpeed(rs_arr,speed_baud); // ñêîðîñòü ëèíèè
- RS_Line_to_receive(rs_arr); // ðåæèì ïðèåìà RS485
- enableUARTInt(rs_arr); // ðàçðåøåíèå ïðåðûâàíèé UART
+ /* Вызывает RS_SetLineSpeed с аргументами (rs_arr,speed_baud) в текущей последовательности операций. */
+ RS_SetLineSpeed(rs_arr,speed_baud); // скорость линии
+ /* Вызывает RS_Line_to_receive с аргументами (rs_arr) в текущей последовательности операций. */
+ RS_Line_to_receive(rs_arr); // режим приема RS485
+ /* Вызывает enableUARTInt с аргументами (rs_arr) в текущей последовательности операций. */
+ enableUARTInt(rs_arr); // разрешение прерываний UART
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
RS_SetBitMode(rs_arr,9);
- rs_arr->RS_PrevCmd = 0; // íå áûëî íèêàêèõ êîìàíä
+ /* Записывает rs_arr->RS_PrevCmd значением 0; данные rs_arr->RS_PrevCmd. */
+ rs_arr->RS_PrevCmd = 0; // не было никаких команд
+ /* Записывает rs_arr->flag_TIMEOUT_to_Send значением 0; rs arr флаг TIMEOUT to Send. */
rs_arr->flag_TIMEOUT_to_Send = 0;
+ /* Записывает rs_arr->flag_LEADING значением 0; rs arr флаг LEADING. */
rs_arr->flag_LEADING = 0;
+ /* Записывает SciRegs->SCIFFRX.bit.RXFFINTCLR значением 1; данные RXFFINTCLR. */
SciRegs->SCIFFRX.bit.RXFFINTCLR=1; // Clear INT flag
+ /* Записывает SciRegs->SCICTL1.bit.SWRESET значением 1; данные SWRESET. */
SciRegs->SCICTL1.bit.SWRESET=1; // Relinquish SCI from Reset
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Íàñòðîéêà ðåæèìà ëèíèè.
- @param bit êîëè÷åñòâî áèò äàííûõ
- @param parity ðåæèì ÷åòíîñòè (N,O,E,M,S)
- @param stop êîëè÷åñòâî ñòîïîâûõ áèò */
+/** Настройка режима линии.
+ @param bit количество бит данных
+ @param parity режим четности (N,O,E,M,S)
+ @param stop количество стоповых бит */
+/* Начинает функцию RS_SetLineMode; назначение модуля — приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
void RS_SetLineMode(RS_DATA *rs_arr, int bit, char parity, int stop)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Продолжает список аргументов, полей или выражение volatile struct SCI_REGS *SciRegs;; порядок элементов сохраняется. */
volatile struct SCI_REGS *SciRegs;
/*
-SCICCR - SCI Communication Control Register
+SCICCR - SCI Communication Control Register
Bit Bit Name Designation Functions
2-0 SCI CHAR2-0 SCICHAR Select the character (data) length (one to eight bits).
3 ADDR/IDLE MODE ADDRIDLE_MODE The idle-line mode (0) is usually used for normal communications because the address-bit mode adds an extra bit to the frame. The idle-line mode does not add this extra bit and is compatible with RS-232 type communications.
@@ -556,158 +931,285 @@ Bit Bit Name Designation Functions
5 PARITY ENABLE PARITYENA Enables the parity function if set to 1, or disables the parity function if cleared to 0.
6 EVEN/ODD PARITY PARITY If parity is enabled, selects odd parity if cleared to 0 or even parity if set to 1.
7 STOP BITS STOPBITS Determines the number of stop bits transmitted-one stop bit if cleared to 0 or two stop bits if set to 1.
-*/
+*/
+ /* Записывает SciRegs значением rs_arr->SciRegs; SCI Regs. */
SciRegs = rs_arr->SciRegs;
+ /* Проверяет if(bit>0 и bit<9) SciRegs->SCICCR.bit.SCICHAR = bit-1; последующий оператор выполняется только при истинном условии. */
if(bit>0 && bit<9) SciRegs->SCICCR.bit.SCICHAR = bit-1;
+ /* Вызывает switch с аргументами (parity) в текущей последовательности операций. */
switch(parity)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Ветвь выбора для 'N'; выполняется при совпадении селектора switch. */
case 'N': SciRegs->SCICCR.bit.PARITYENA = 0;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
+ /* Ветвь выбора для 'O'; выполняется при совпадении селектора switch. */
case 'O': SciRegs->SCICCR.bit.PARITYENA = 1;
+ /* Записывает SciRegs->SCICCR.bit.PARITY значением 0; чётность. */
SciRegs->SCICCR.bit.PARITY = 0;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
+ /* Ветвь выбора для 'E'; выполняется при совпадении селектора switch. */
case 'E': SciRegs->SCICCR.bit.PARITYENA = 1;
+ /* Записывает SciRegs->SCICCR.bit.PARITY значением 1; чётность. */
SciRegs->SCICCR.bit.PARITY = 1;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (stop==1) SciRegs->SCICCR.bit.STOPBITS = 0; последующий оператор выполняется только при истинном условии. */
if (stop==1) SciRegs->SCICCR.bit.STOPBITS = 0;
+ /* Проверяет if (stop==2) SciRegs->SCICCR.bit.STOPBITS = 1; последующий оператор выполняется только при истинном условии. */
if (stop==2) SciRegs->SCICCR.bit.STOPBITS = 1;
+ /* Записывает SciRegs->SCICCR.bit.LOOPBKENA значением 0; данные LOOPBKENA. */
SciRegs->SCICCR.bit.LOOPBKENA = 0; //0
+ /* Записывает SciRegs->SCICCR.bit.ADDRIDLE_MODE значением 0; ADDRIDLE режим. */
SciRegs->SCICCR.bit.ADDRIDLE_MODE = 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию clear_timer_rs_live; назначение модуля — приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
void clear_timer_rs_live(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rs_arr->time_wait_rs_out значением 0; данные rs_arr->time_wait_rs_out. */
rs_arr->time_wait_rs_out=0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* ïðîâåðêà íà æèâó÷åñòü RS */
+/* проверка на живучесть RS */
+/* Начинает функцию test_rs_live; назначение модуля — приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
void test_rs_live(RS_DATA *rs_arr)
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
/* if (rs_arr->time_wait_rs_out < RS_TIME_OUT)
rs_arr->time_wait_rs_out++;
else
{
rs_arr->time_wait_rs_out=0;
- RS_Line_to_receive(rs_arr); // ðåæèì ïðèåìà RS485
+ RS_Line_to_receive(rs_arr); // режим приема RS485
RS_SetBitMode(rs_arr,9);
-}*/ }
+}*/ } /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
/* FIFO is exclusively SCI-A / RS232. SCI-B keeps the legacy path. */
+/* Ожидает завершения аппаратной передачи FIFO и сдвигового регистра SCI. */
void RS_FifoWait(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if (rs_arr->commnumber != COM_1); последующий оператор выполняется только при истинном условии. */
if (rs_arr->commnumber != COM_1) {
+ /* Повторяет или ожидает, пока выполняется while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY). */
while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { }
+ /* Завершает RS_FifoWait без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Повторяет или ожидает, пока выполняется while (rs_arr->fifo_tx_active или rs_arr->SciRegs->SCIFFTX.bit.TXFFST или. */
while (rs_arr->fifo_tx_active || rs_arr->SciRegs->SCIFFTX.bit.TXFFST ||
+ /* Продолжает список аргументов, полей или выражение !rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { }; порядок элементов сохраняется. */
!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { }
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Заполняет TX FIFO доступными байтами, сохраняя длину и положение в передаваемом пакете. */
static void RS_FifoTx(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет data — данные. */
unsigned int data;
+ /* Проверяет if (!rs_arr->fifo_tx_active); последующий оператор выполняется только при истинном условии. */
if (!rs_arr->fifo_tx_active) {
+ /* Записывает rs_arr->SciRegs->SCIFFTX.bit.TXFFIENA значением 0; данные TXFFIENA. */
rs_arr->SciRegs->SCIFFTX.bit.TXFFIENA=0;
+ /* Проверяет else if (rs_arr->RS_SendLen == rs_arr->RS_SLength); последующий оператор выполняется только при истинном условии. */
} else if (rs_arr->RS_SendLen == rs_arr->RS_SLength) {
/* Level 0 interrupt: FIFO drained, last symbol may still be shifting.
* Do not finish on TXFFST alone. At most one symbol remains. */
+ /* Проверяет if (rs_arr->SciRegs->SCIFFTX.bit.TXFFST); последующий оператор выполняется только при истинном условии. */
if (rs_arr->SciRegs->SCIFFTX.bit.TXFFST) {
+ /* Записывает rs_arr->SciRegs->SCIFFTX.bit.TXFFINTCLR значением 1; данные TXFFINTCLR. */
rs_arr->SciRegs->SCIFFTX.bit.TXFFINTCLR=1;
+ /* Устанавливает биты PieCtrlRegs.PIEACK.bit.ACK9 значением 1; данные ACK9. */
PieCtrlRegs.PIEACK.bit.ACK9 |= 1;
+ /* Завершает RS_FifoTx без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает rs_arr->SciRegs->SCIFFTX.bit.TXFFIENA значением 0; данные TXFFIENA. */
rs_arr->SciRegs->SCIFFTX.bit.TXFFIENA=0;
+ /* Повторяет или ожидает, пока выполняется while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY). */
while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { }
+ /* Проверяет if (rs_arr->RS_SendBlockMode == BM_CHAR32); последующий оператор выполняется только при истинном условии. */
if (rs_arr->RS_SendBlockMode == BM_CHAR32) {
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
RS_SetBitMode(rs_arr,9);
+ /* Записывает rs_arr->flag_TIMEOUT_to_Send значением false; rs arr флаг TIMEOUT to Send. */
rs_arr->flag_TIMEOUT_to_Send=false;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET значением 0; данные RXFIFORESET. */
rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET=0;
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFFOVRCLR значением 1; данные RXFFOVRCLR. */
rs_arr->SciRegs->SCIFFRX.bit.RXFFOVRCLR=1;
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFFINTCLR значением 1; данные RXFFINTCLR. */
rs_arr->SciRegs->SCIFFRX.bit.RXFFINTCLR=1;
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET значением 1; данные RXFIFORESET. */
rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET=1;
+ /* Вызывает enableUARTInt с аргументами (rs_arr) в текущей последовательности операций. */
enableUARTInt(rs_arr);
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFFIENA значением 1; данные RXFFIENA. */
rs_arr->SciRegs->SCIFFRX.bit.RXFFIENA=1;
+ /* Записывает rs_arr->fifo_tx_active значением 0; данные rs_arr->fifo_tx_active. */
rs_arr->fifo_tx_active=0;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else {
+ /* Повторяет или ожидает, пока выполняется while (rs_arr->RS_SendLen < rs_arr->RS_SLength и. */
while (rs_arr->RS_SendLen < rs_arr->RS_SLength &&
+ /* Продолжает список аргументов, полей или выражение rs_arr->SciRegs->SCIFFTX.bit.TXFFST < 16) {; порядок элементов сохраняется. */
rs_arr->SciRegs->SCIFFTX.bit.TXFFST < 16) {
+ /* Проверяет if (rs_arr->RS_SendBlockMode == BM_CHAR32); последующий оператор выполняется только при истинном условии. */
if (rs_arr->RS_SendBlockMode == BM_CHAR32)
+ /* Записывает data значением *rs_arr->pRS_SendPtr++; данные. */
data=*rs_arr->pRS_SendPtr++;
+ /* Проверяет else if (rs_arr->RS_SendLen & 1U); последующий оператор выполняется только при истинном условии. */
else if (rs_arr->RS_SendLen & 1U)
+ /* Записывает data значением LOBYTE(*rs_arr->pRS_SendPtr++); данные. */
data=LOBYTE(*rs_arr->pRS_SendPtr++);
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else data=HIBYTE(*rs_arr->pRS_SendPtr);
+ /* Вызывает SCI_send с аргументами (rs_arr,data) в текущей последовательности операций. */
SCI_send(rs_arr,data);
+ /* Изменяет счётчик в выражении rs_arr->RS_SendLen++; на один для следующего шага. */
rs_arr->RS_SendLen++;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает rs_arr->SciRegs->SCIFFTX.bit.TXFFIL значением ; данные TXFFIL. */
rs_arr->SciRegs->SCIFFTX.bit.TXFFIL=
+ /* Продолжает список аргументов, полей или выражение rs_arr->RS_SendLen == rs_arr->RS_SLength ? 0 : 8;; порядок элементов сохраняется. */
rs_arr->RS_SendLen == rs_arr->RS_SLength ? 0 : 8;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает rs_arr->SciRegs->SCIFFTX.bit.TXFFINTCLR значением 1; данные TXFFINTCLR. */
rs_arr->SciRegs->SCIFFTX.bit.TXFFINTCLR=1;
+ /* Устанавливает биты PieCtrlRegs.PIEACK.bit.ACK9 значением 1; данные ACK9. */
PieCtrlRegs.PIEACK.bit.ACK9 |= 1;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Запускает передачу через FIFO COM_1 после проверки буфера и состояния текущего обмена. */
static int RS_FifoStart(RS_DATA *rs_arr,unsigned int *buffer,unsigned long count,int mode)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved. */
unsigned int saved;
+ /* Проверяет if (!count) return 0; последующий оператор выполняется только при истинном условии. */
if (!count) return 0;
+ /* Проверяет if (!buffer) return -1; последующий оператор выполняется только при истинном условии. */
if (!buffer) return -1;
- RS_FifoWait(rs_arr); /* before replacing the previous transfer's counters */
+ RS_FifoWait(rs_arr); /* before replacing the previous transfer's counters */ /* Вызывает RS_FifoWait. Ожидает завершения аппаратной передачи FIFO и сдвигового регистра SCI. */
+ /* Записывает saved значением __disable_interrupts(); данные saved. */
saved=__disable_interrupts();
+ /* Записывает rs_arr->SciRegs->SCIFFTX.bit.TXFFIENA значением 0; данные TXFFIENA. */
rs_arr->SciRegs->SCIFFTX.bit.TXFFIENA=0;
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFFIENA значением 0; данные RXFFIENA. */
rs_arr->SciRegs->SCIFFRX.bit.RXFFIENA=0;
+ /* Вызывает enableUARTIntW с аргументами (rs_arr) в текущей последовательности операций. */
enableUARTIntW(rs_arr);
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,8) в текущей последовательности операций. */
RS_SetBitMode(rs_arr,8);
+ /* Записывает rs_arr->pRS_SendPtr значением buffer; данные rs_arr->pRS_SendPtr. */
rs_arr->pRS_SendPtr=buffer;
+ /* Записывает rs_arr->RS_SLength значением count; rs arr RS S длина. */
rs_arr->RS_SLength=count;
+ /* Записывает rs_arr->RS_SendLen значением 0; данные rs_arr->RS_SendLen. */
rs_arr->RS_SendLen=0;
+ /* Записывает rs_arr->RS_SendBlockMode значением mode; rs arr RS Send Block режим. */
rs_arr->RS_SendBlockMode=mode;
+ /* Записывает rs_arr->fifo_tx_active значением 1; данные rs_arr->fifo_tx_active. */
rs_arr->fifo_tx_active=1;
- RS_FifoTx(rs_arr); /* prime before enabling a possibly immediate TX IRQ */
+ RS_FifoTx(rs_arr); /* prime before enabling a possibly immediate TX IRQ */ /* Вызывает RS_FifoTx. Заполняет TX FIFO доступными байтами, сохраняя длину и положение в передаваемом пакете. */
+ /* Записывает rs_arr->SciRegs->SCIFFTX.bit.TXFFIENA значением 1; данные TXFFIENA. */
rs_arr->SciRegs->SCIFFTX.bit.TXFFIENA=1;
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+ /* Проверяет if (count == 1 и mode == BM_CHAR32) RS_FifoWait(rs_arr); последующий оператор выполняется только при истинном условии. */
if (count == 1 && mode == BM_CHAR32) RS_FifoWait(rs_arr);
+ /* Завершает RS_FifoStart и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Прерывает ошибочный приём FIFO, очищает аппаратное состояние и включает защитную паузу. */
static void RS_FifoAbort(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Изменяет счётчик в выражении rs_arr->fifo_rx_errors++; на один для следующего шага. */
rs_arr->fifo_rx_errors++;
+ /* Проверяет if (rs_arr->SciRegs->SCIFFRX.bit.RXFFOVF) rs_arr->fifo_overflows++; последующий оператор выполняется только при истинном условии. */
if (rs_arr->SciRegs->SCIFFRX.bit.RXFFOVF) rs_arr->fifo_overflows++;
+ /* Записывает rs_arr->RS_DataReady значением 0; rs_arr->BS_LoadOK=0; rs arr RS данные Ready. */
rs_arr->RS_DataReady=0; rs_arr->BS_LoadOK=0;
+ /* Записывает rs_arr->RS_PrevCmd значением 0; rs_arr->RS_Cmd=0; данные rs_arr->RS_PrevCmd. */
rs_arr->RS_PrevCmd=0; rs_arr->RS_Cmd=0;
+ /* Записывает rs_arr->RS_Flag9bit значением 0; rs_arr->RS_FlagSkiping=1; rs arr RS флаг 9 бит. */
rs_arr->RS_Flag9bit=0; rs_arr->RS_FlagSkiping=1;
+ /* Записывает rs_arr->fifo_rx_guard значением 4; данные rs_arr->fifo_rx_guard. */
rs_arr->fifo_rx_guard=4;
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET значением 0; данные RXFIFORESET. */
rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET=0;
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFFOVRCLR значением 1; данные RXFFOVRCLR. */
rs_arr->SciRegs->SCIFFRX.bit.RXFFOVRCLR=1;
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFFINTCLR значением 1; данные RXFFINTCLR. */
rs_arr->SciRegs->SCIFFRX.bit.RXFFINTCLR=1;
+ /* Проверяет if (rs_arr->SciRegs->SCIRXST.bit.RXERROR); последующий оператор выполняется только при истинном условии. */
if (rs_arr->SciRegs->SCIRXST.bit.RXERROR) {
+ /* Записывает rs_arr->SciRegs->SCICTL1.bit.SWRESET значением 0; данные SWRESET. */
rs_arr->SciRegs->SCICTL1.bit.SWRESET=0;
+ /* Записывает rs_arr->SciRegs->SCICTL1.bit.SWRESET значением 1; данные SWRESET. */
rs_arr->SciRegs->SCICTL1.bit.SWRESET=1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET значением 1; данные RXFIFORESET. */
rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET=1;
+ /* Устанавливает биты PieCtrlRegs.PIEACK.bit.ACK9 значением 1; данные ACK9. */
PieCtrlRegs.PIEACK.bit.ACK9 |= 1;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Уменьшает защитную паузу RX FIFO по миллисекундному такту. */
void RS_FifoTick1ms(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved. Начальное значение задаётся справа от знака равенства. */
unsigned int saved=__disable_interrupts();
+ /* Объявляет p — данные p; rs_a — данные rs_a. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
RS_DATA *p=&rs_a;
+ /* Проверяет if (p->SciRegs и p->fifo_rx_guard); последующий оператор выполняется только при истинном условии. */
if (p->SciRegs && p->fifo_rx_guard) {
+ /* Проверяет if (p->SciRegs->SCIFFRX.bit.RXFFST) p->fifo_rx_guard=4; последующий оператор выполняется только при истинном условии. */
if (p->SciRegs->SCIFFRX.bit.RXFFST) p->fifo_rx_guard=4;
+ /* Проверяет else if (--p->fifo_rx_guard == 0); последующий оператор выполняется только при истинном условии. */
else if (--p->fifo_rx_guard == 0) {
+ /* Записывает p->RS_HeaderCnt значением 0;p->RS_RecvLen=0; данные p->RS_HeaderCnt. */
p->RS_HeaderCnt=0;p->RS_RecvLen=0;
+ /* Записывает p->RS_FlagBegin значением 1;p->RS_FlagSkiping=0; p RS флаг Begin. */
p->RS_FlagBegin=1;p->RS_FlagSkiping=0;
- RS_SetBitMode(p,9); /* fresh address after 3..4 ms of idle */
+ RS_SetBitMode(p,9); /* fresh address after 3..4 ms of idle */ /* Вызывает RS_SetBitMode с аргументами (p,9) в текущей последовательности операций. */
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
diff --git a/Source/Internal/bios.c b/Source/Internal/bios.c
index eb632d3..89eacd5 100644
--- a/Source/Internal/bios.c
+++ b/Source/Internal/bios.c
@@ -1,119 +1,197 @@
+/* Команды обмена, загрузчика, чтения памяти и EEPROM. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
-#include "bios_dsp.h"
+/* Подключает "bios_dsp.h": коды и объявления команд последовательного загрузчика. */
+#include "bios_dsp.h"
+/* Подключает "crc16.h": таблицы и функции вычисления контрольных сумм CRC. */
#include "crc16.h"
+/* Подключает "spise2p.h": драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
#include "spise2p.h"
+/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "log_to_mem.h"
//#include "flash_tools.h"
//#include "spartan_tools.h"
//#include "big_dsp_module.h"
-
-int flag_DEBUG = false; /* Ôëàã îòëàäî÷íîãî ðåæèìà */
+
+int flag_DEBUG = false; /* Флаг отладочного режима */ /* Объявляет flag_DEBUG — флаг DEBUG; false — данные false. Начальное значение задаётся справа от знака равенства. */
//static unsigned int *RecvPtr;
-//static int BS_LoadOK = false; /** Ôëàã óñïåøíîñòè ïðèåìà áëîêà */
+//static int BS_LoadOK = false; /** Флаг успешности приема блока */
/**********************************************************/
-/* Ïðîòîòèïû ôóíêöèé, èñïîëüçóåìûõ è îïðåäåëåííûõ â ôàéëå */
+/* Прототипы функций, используемых и определенных в файле */
/**********************************************************/
//static int _getbyte(int *addr, int offs);
+/* Начинает функцию read_memory; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
unsigned int read_memory(unsigned long addr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Завершает read_memory и возвращает (*(volatile int *)(addr)). */
return (*(volatile int *)(addr));
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию write_memory; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
void write_memory(unsigned long addr, unsigned int data)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Продолжает список аргументов, полей или выражение (*(volatile int *)( addr )) = data;; порядок элементов сохраняется. */
(*(volatile int *)( addr )) = data;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Âîçâðàùàåò íîìåð êîììàíäû, åñëè åñòü èëè -1 åñëè òðàíçàêöèé íå áûëî */
+/** Возвращает номер комманды, если есть или -1 если транзакций не было */
+/* Начинает функцию get_command; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
int get_command(RS_DATA *rs_arr)
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Объявляет cmd — данные cmd. */
int cmd;
+ /* Объявляет crc — данные crc; rcrc — данные rcrc. */
unsigned int crc, rcrc;
- if(rs_arr->RS_DataReady) // Äàííûå ïî RS ïðèøëè
- {
+ /* Проверяет if(rs_arr->RS_DataReady); последующий оператор выполняется только при истинном условии. */
+ if(rs_arr->RS_DataReady) // Данные по RS пришли
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Записывает rs_arr->RS_DataReady значением false; rs arr RS данные Ready. */
rs_arr->RS_DataReady = false;
- cmd = rs_arr->RS_Header[1]; // Ïðî÷èòàëè íîìåð êîìàíäû
-
- // Ïðîâåðàåì äëèíó êîìàíäû äëà ñ÷èòûâàíèà CRC
+ /* Записывает cmd значением rs_arr->RS_Header[1]; данные cmd. */
+ cmd = rs_arr->RS_Header[1]; // Прочитали номер команды
+
+ // Провераем длину команды дла считываниа CRC
+ /* Проверяет if((RS_Len[cmd]<3) или (RS_Len[cmd]>MAX_RECEIVE_LENGTH)); последующий оператор выполняется только при истинном условии. */
if((RS_Len[cmd]<3) || (RS_Len[cmd]>MAX_RECEIVE_LENGTH))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- RS_Line_to_receive(rs_arr); // ðåæèì ïðèåìà RS485
+ /* Вызывает RS_Line_to_receive с аргументами (rs_arr) в текущей последовательности операций. */
+ RS_Line_to_receive(rs_arr); // режим приема RS485
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
RS_SetBitMode(rs_arr,9);
+ /* Завершает get_command и возвращает -1. */
return -1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- if(cmd == CMD_LOAD) // Åñëè êîìàíäà çàãðóçêè
+ /* Проверяет if(cmd == CMD_LOAD); последующий оператор выполняется только при истинном условии. */
+ if(cmd == CMD_LOAD) // Если команда загрузки
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rs_arr->RS_PrevCmd значением cmd; данные rs_arr->RS_PrevCmd. */
rs_arr->RS_PrevCmd = cmd;
- return cmd; // Íåò ïðîâåðêè crc
+ /* Завершает get_command и возвращает cmd. */
+ return cmd; // Нет проверки crc
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- else // Âñå îñòàëüíûå êîìàíäû
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else // Все остальные команды
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- // Ñ÷èòûâàåì crc èç ïîñûëêè
- crc = (rs_arr->RS_Header[RS_Len[cmd]-1] << 8) |
+ // Считываем crc из посылки
+ /* Записывает crc значением (rs_arr->RS_Header[RS_Len[cmd]-1] << 8) |; данные crc. */
+ crc = (rs_arr->RS_Header[RS_Len[cmd]-1] << 8) |
+ /* Продолжает список аргументов, полей или выражение (rs_arr->RS_Header[RS_Len[cmd]-2]) ;; порядок элементов сохраняется. */
(rs_arr->RS_Header[RS_Len[cmd]-2]) ;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- // Ðàññ÷èòûâàåì crc èç ïîñûëêè
+ // Рассчитываем crc из посылки
+ /* Записывает rcrc значением 0xffff; данные rcrc. */
rcrc = 0xffff;
+ /* Записывает rcrc значением get_crc_16( rcrc, rs_arr->RS_Header, (RS_Len[cmd]-2) ); данные rcrc. */
rcrc = get_crc_16( rcrc, rs_arr->RS_Header, (RS_Len[cmd]-2) );
- if(crc == rcrc) // Ïðîâåðàåì crc
+ /* Проверяет if(crc == rcrc); последующий оператор выполняется только при истинном условии. */
+ if(crc == rcrc) // Провераем crc
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rs_arr->RS_PrevCmd значением cmd; данные rs_arr->RS_PrevCmd. */
rs_arr->RS_PrevCmd = cmd;
+ /* Завершает get_command и возвращает cmd. */
return cmd;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- RS_Line_to_receive(rs_arr); // ðåæèì ïðèåìà RS485
+ /* Вызывает RS_Line_to_receive с аргументами (rs_arr) в текущей последовательности операций. */
+ RS_Line_to_receive(rs_arr); // режим приема RS485
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
RS_SetBitMode(rs_arr,9);
- } }
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ } }
+ /* Завершает get_command и возвращает -1. */
return -1;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Ñòàíäàðòíûé îòâåò, áåç ïàðàìåòðîâ */
+/** Стандартный ответ, без параметров */
+/* Начинает функцию Answer; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
void Answer(RS_DATA *rs_arr,int n)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет crc — данные crc. */
int crc;
- flag_DEBUG = true; // Ôëàã îòëàäî÷íîãî ðåæèìà
+ /* Записывает flag_DEBUG значением true; флаг DEBUG. */
+ flag_DEBUG = true; // Флаг отладочного режима
+ /* Записывает rs_arr->buffer[0] значением rs_arr->addr_recive; rs arr буфер. */
rs_arr->buffer[0] = rs_arr->addr_recive; //CNTRL_ADDR;
+ /* Записывает rs_arr->buffer[1] значением n; rs arr буфер. */
rs_arr->buffer[1] = n;
+ /* Записывает crc значением 0xffff; данные crc. */
crc = 0xffff;
+ /* Записывает crc значением get_crc_16( crc, rs_arr->buffer, 2); данные crc. */
crc = get_crc_16( crc, rs_arr->buffer, 2);
+ /* Записывает rs_arr->buffer[2] значением LOBYTE(crc); rs arr буфер. */
rs_arr->buffer[2] = LOBYTE(crc);
+ /* Записывает rs_arr->buffer[3] значением HIBYTE(crc); rs arr буфер. */
rs_arr->buffer[3] = HIBYTE(crc);
-
+
+ /* Записывает rs_arr->buffer[4] значением 0; rs arr буфер. */
rs_arr->buffer[4] = 0;
+ /* Записывает rs_arr->buffer[5] значением 0; rs arr буфер. */
rs_arr->buffer[5] = 0;
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
RS_Send(rs_arr,rs_arr->buffer, 6);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Âíóòðåííàà ô-öèà */
+/* Внутреннаа ф-циа */
+/* Начинает функцию _getbyte; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
static char _getbyte(unsigned int *addr, int32 offs)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет address — адрес. Хранит указатель на данные. */
unsigned int *address;
+ /* Объявляет byte — данные byte. */
unsigned int byte;
+ /* Записывает address значением addr + offs/2; адрес. */
address = addr + offs/2;
+ /* Записывает byte значением *address; данные byte. */
byte = *address;
+ /* Проверяет if(offs%2) return LOBYTE(byte); последующий оператор выполняется только при истинном условии. */
if(offs%2) return LOBYTE(byte);
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else return HIBYTE(byte);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* íà÷àëüíûå óñòàíîâêè (íå ðàáîòàåò)*/
-void init(RS_DATA *rs_arr)
+/* начальные установки (не работает)*/
+/* Начинает функцию init; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
+void init(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
/*
if(rs_arr->RS_Header[2]==3)
@@ -121,8 +199,8 @@ void init(RS_DATA *rs_arr)
if (rs_arr->curr_baud!=57600)
{ RS_SetLineSpeed(rs_arr,57600);
rs_arr->curr_baud= 57600;
- } }
-
+ } }
+
if(rs_arr->RS_Header[2]==4)
{
if (rs_arr->curr_baud!=115200)
@@ -133,205 +211,325 @@ void init(RS_DATA *rs_arr)
Answer(rs_arr,CMD_INIT);
rs_arr->BS_LoadOK = false;
*/
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/**@name Êîììàíäû
-* Êîììàíäû, âûçûâàåìûå ÷åðåç ïîñëåäîâàòåëüíûé êàíàë
+/**@name Комманды
+* Комманды, вызываемые через последовательный канал
*/
//@{
-/** Èíèöèèðîâàòü çàãðóçêó áëîêà.
- Íàñòðàèâàåò ïðèåì áëîêà äàííûõ */
-void initload(RS_DATA *rs_arr)
+/** Инициировать загрузку блока.
+ Настраивает прием блока данных */
+/* Начинает функцию initload; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
+void initload(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Address — адрес. */
unsigned long Address;
+ /* Записывает Address значением rs_arr->RS_Header[5] & 0xFF; адрес. */
Address = rs_arr->RS_Header[5] & 0xFF;
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[4] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[4] & 0xFF);
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[3] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[3] & 0xFF);
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[2] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[2] & 0xFF);
+ /* Записывает rs_arr->RS_Length значением rs_arr->RS_Header[9] & 0xFF; rs arr RS длина. */
rs_arr->RS_Length = rs_arr->RS_Header[9] & 0xFF;
+ /* Записывает rs_arr->RS_Length значением (rs_arr->RS_Length<<8) | (rs_arr->RS_Header[8] & 0xFF); rs arr RS длина. */
rs_arr->RS_Length = (rs_arr->RS_Length<<8) | (rs_arr->RS_Header[8] & 0xFF);
+ /* Записывает rs_arr->RS_Length значением (rs_arr->RS_Length<<8) | (rs_arr->RS_Header[7] & 0xFF); rs arr RS длина. */
rs_arr->RS_Length = (rs_arr->RS_Length<<8) | (rs_arr->RS_Header[7] & 0xFF);
+ /* Записывает rs_arr->RS_Length значением (rs_arr->RS_Length<<8) | (rs_arr->RS_Header[6] & 0xFF); rs arr RS длина. */
rs_arr->RS_Length = (rs_arr->RS_Length<<8) | (rs_arr->RS_Header[6] & 0xFF);
+ /* Увеличивает rs_arr->RS_Length значением 2; rs arr RS длина. */
rs_arr->RS_Length += 2;
- rs_arr->pRS_RecvPtr = (unsigned int *)Address; //(unsigned int *)Address;
+ /* Записывает rs_arr->pRS_RecvPtr значением (unsigned int *)Address; данные rs_arr->pRS_RecvPtr. */
+ rs_arr->pRS_RecvPtr = (unsigned int *)Address; //(unsigned int *)Address;
+ /* Записывает rs_arr->pRecvPtr значением (unsigned int *)Address; данные rs_arr->pRecvPtr. */
rs_arr->pRecvPtr = (unsigned int *)Address; //(unsigned int *)Address;
+ /* Записывает no_write значением 1; no запись. */
no_write = 1;
+ /* Вызывает Answer с аргументами (rs_arr,CMD_INITLOAD) в текущей последовательности операций. */
Answer(rs_arr,CMD_INITLOAD);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Çàãðóçêà áëîêà.
- Âûçûâàåòñà ïîñëå çàãðóçêè áëîêà ÷åðåç RS */
+/** Загрузка блока.
+ Вызываетса после загрузки блока через RS */
+/* Начинает функцию load; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
void load(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет rcrc — данные rcrc; crc — данные crc. */
unsigned int rcrc, crc;
- crc = (_getbyte(rs_arr->pRecvPtr, rs_arr->RS_Length-1) << 8) +
+ /* Записывает crc значением (_getbyte(rs_arr->pRecvPtr, rs_arr->RS_Length-1) << 8) +; данные crc. */
+ crc = (_getbyte(rs_arr->pRecvPtr, rs_arr->RS_Length-1) << 8) +
+ /* Вызывает _getbyte с аргументами (rs_arr->pRecvPtr, rs_arr->RS_Length-2) в текущей последовательности операций. */
_getbyte(rs_arr->pRecvPtr, rs_arr->RS_Length-2);
+ /* Записывает rs_arr->RS_Header[0] значением rs_arr->addr_recive; данные rs_arr->RS_Header. */
rs_arr->RS_Header[0] = rs_arr->addr_recive;
-
-// CNTRL_ADDR;
+
+// CNTRL_ADDR;
+ /* Записывает rs_arr->RS_Header[1] значением CMD_LOAD; данные rs_arr->RS_Header. */
rs_arr->RS_Header[1]=CMD_LOAD;
+ /* Записывает rcrc значением 0xffff; данные rcrc. */
rcrc = 0xffff;
+ /* Записывает rcrc значением get_crc_16( rcrc, rs_arr->RS_Header, 2); данные rcrc. */
rcrc = get_crc_16( rcrc, rs_arr->RS_Header, 2);
+ /* Записывает rcrc значением get_crc_16b( rcrc, rs_arr->pRecvPtr, rs_arr->RS_Length-2); данные rcrc. */
rcrc = get_crc_16b( rcrc, rs_arr->pRecvPtr, rs_arr->RS_Length-2);
+ /* Проверяет if(rcrc == crc); последующий оператор выполняется только при истинном условии. */
if(rcrc == crc)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает Answer с аргументами (rs_arr,CMD_LOAD) в текущей последовательности операций. */
Answer(rs_arr,CMD_LOAD);
+ /* Записывает rs_arr->BS_LoadOK значением true; данные rs_arr->BS_LoadOK. */
rs_arr->BS_LoadOK = true;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- else
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rs_arr->BS_LoadOK значением false; данные rs_arr->BS_LoadOK. */
rs_arr->BS_LoadOK = false;
- RS_Line_to_receive(rs_arr); // ðåæèì ïðèåìà RS485
+ /* Вызывает RS_Line_to_receive с аргументами (rs_arr) в текущей последовательности операций. */
+ RS_Line_to_receive(rs_arr); // режим приема RS485
+ /* Вызывает RS_SetBitMode с аргументами (rs_arr,9) в текущей последовательности операций. */
RS_SetBitMode(rs_arr,9);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
-/** Âûïîëíèòü ïðîãðàììó â ôîðìàòå Serial Boot.
- @precondition Äîëæíà áûòü ïðîèçâåäåíà çàãðóçêà áëîêà
- Àäðåñ ïðîãðàììû áåðåòñà èç çàãîëîâêà è
- ñðàâíèâàåòñà ñ ïåðåìåííîé RecvPtr, çàïîëíàåìîé â ô-öèè load
+/** Выполнить программу в формате Serial Boot.
+ @precondition Должна быть произведена загрузка блока
+ Адрес программы беретса из заголовка и
+ сравниваетса с переменной RecvPtr, заполнаемой в ф-ции load
@see load */
-void run (RS_DATA *rs_arr)
-{
- return;
+/* Начинает функцию run; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
+void run (RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Завершает run без возвращаемого значения. */
+ return;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Ïðî÷èòàòü à÷åéêó ïàìàòè */
+/** Прочитать ачейку памати */
+/* Начинает функцию peek; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
void peek(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Address — адрес. */
unsigned long Address;
+ /* Объявляет Data — данные; crc — данные crc. */
unsigned int Data, crc;
-
- flag_DEBUG = true; // Ôëàã îòëàäî÷íîãî ðåæèìà
-
+
+ /* Записывает flag_DEBUG значением true; флаг DEBUG. */
+ flag_DEBUG = true; // Флаг отладочного режима
+
+ /* Записывает Address значением rs_arr->RS_Header[5] & 0xFF; адрес. */
Address = rs_arr->RS_Header[5] & 0xFF;
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[4] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[4] & 0xFF);
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[3] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[3] & 0xFF);
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[2] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[2] & 0xFF);
+ /* Проверяет if(Addressbuffer[0] значением rs_arr->addr_recive; rs arr буфер. */
rs_arr->buffer[0] = rs_arr->addr_recive; //CNTRL_ADDR;
+ /* Записывает rs_arr->buffer[1] значением CMD_PEEK; rs arr буфер. */
rs_arr->buffer[1] = CMD_PEEK;
+ /* Записывает rs_arr->buffer[2] значением LOBYTE(Data); rs arr буфер. */
rs_arr->buffer[2] = LOBYTE(Data);
+ /* Записывает rs_arr->buffer[3] значением HIBYTE(Data); rs arr буфер. */
rs_arr->buffer[3] = HIBYTE(Data);
+ /* Записывает rs_arr->buffer[4] значением LOBYTE(CpuTimer2.InterruptCount); rs arr буфер. */
rs_arr->buffer[4] = LOBYTE(CpuTimer2.InterruptCount);
+ /* Записывает rs_arr->buffer[5] значением HIBYTE(CpuTimer2.InterruptCount); rs arr буфер. */
rs_arr->buffer[5] = HIBYTE(CpuTimer2.InterruptCount);
+ /* Записывает crc значением 0xffff; данные crc. */
crc = 0xffff;
+ /* Записывает crc значением get_crc_16(crc, rs_arr->buffer, 6); данные crc. */
crc = get_crc_16(crc, rs_arr->buffer, 6);
+ /* Записывает rs_arr->buffer[6] значением LOBYTE(crc); rs arr буфер. */
rs_arr->buffer[6] = LOBYTE(crc);
+ /* Записывает rs_arr->buffer[7] значением HIBYTE(crc); rs arr буфер. */
rs_arr->buffer[7] = HIBYTE(crc);
- rs_arr->buffer[8] = 0;
- rs_arr->buffer[9] = 0;
-
+ /* Записывает rs_arr->buffer[8] значением 0; rs arr буфер. */
+ rs_arr->buffer[8] = 0;
+ /* Записывает rs_arr->buffer[9] значением 0; rs arr буфер. */
+ rs_arr->buffer[9] = 0;
+
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
RS_Send(rs_arr,rs_arr->buffer, 10);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Çàïèñàòü â à÷åéêó ïàìàòè */
-void poke(RS_DATA *rs_arr)
+/** Записать в ачейку памати */
+/* Начинает функцию poke; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
+void poke(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Address — адрес. */
unsigned long Address;
+ /* Объявляет Data — данные. */
unsigned int Data;
+ /* Записывает Address значением rs_arr->RS_Header[5] & 0xFF; адрес. */
Address = rs_arr->RS_Header[5] & 0xFF;
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[4] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[4] & 0xFF);
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[3] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[3] & 0xFF);
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[2] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[2] & 0xFF);
+ /* Записывает Data значением 0; данные. */
Data = 0;
+ /* Записывает Data значением (Data<<8) | (rs_arr->RS_Header[7] & 0xFF); данные. */
Data = (Data<<8) | (rs_arr->RS_Header[7] & 0xFF);
+ /* Записывает Data значением (Data<<8) | (rs_arr->RS_Header[6] & 0xFF); данные. */
Data = (Data<<8) | (rs_arr->RS_Header[6] & 0xFF);
+ /* Проверяет if(AddressRS_Header[5] & 0xFF; адрес. */
Address = rs_arr->RS_Header[5] & 0xFF;
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[4] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[4] & 0xFF);
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[3] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[3] & 0xFF);
+ /* Записывает Address значением (Address<<8) | (rs_arr->RS_Header[2] & 0xFF); адрес. */
Address = (Address<<8) | (rs_arr->RS_Header[2] & 0xFF);
+ /* Записывает Length значением rs_arr->RS_Header[9] & 0xFF; длина. */
Length = rs_arr->RS_Header[9] & 0xFF;
+ /* Записывает Length значением (Length<<8) | (rs_arr->RS_Header[8] & 0xFF); длина. */
Length = (Length<<8) | (rs_arr->RS_Header[8] & 0xFF);
+ /* Записывает Length значением (Length<<8) | (rs_arr->RS_Header[7] & 0xFF); длина. */
Length = (Length<<8) | (rs_arr->RS_Header[7] & 0xFF);
+ /* Записывает Length значением (Length<<8) | (rs_arr->RS_Header[6] & 0xFF); длина. */
Length = (Length<<8) | (rs_arr->RS_Header[6] & 0xFF);
+ /* Записывает rs_arr->buffer[0] значением rs_arr->addr_recive; rs arr буфер. */
rs_arr->buffer[0] = rs_arr->addr_recive; //CNTRL_ADDR;
+ /* Записывает rs_arr->buffer[1] значением CMD_UPLOAD; rs arr буфер. */
rs_arr->buffer[1] = CMD_UPLOAD;
+ /* Записывает crc значением 0xffff; данные crc. */
crc = 0xffff;
- crc = get_crc_16( crc, rs_arr->buffer, 2);
+ /* Записывает crc значением get_crc_16( crc, rs_arr->buffer, 2); данные crc. */
+ crc = get_crc_16( crc, rs_arr->buffer, 2);
+ /* Записывает crc значением get_crc_16b( crc, (unsigned int *)Address, Length); данные crc. */
crc = get_crc_16b( crc, (unsigned int *)Address, Length);
- RS_Send(rs_arr,rs_arr->buffer, 1); // <=2 áàéò ïî ôëàãó
-
- rs_arr->buffer[0] = CMD_UPLOAD;
- RS_Send(rs_arr,rs_arr->buffer, 1); // <=2 áàéò ïî ôëàãó
-
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
+ RS_Send(rs_arr,rs_arr->buffer, 1); // <=2 байт по флагу
+
+ /* Записывает rs_arr->buffer[0] значением CMD_UPLOAD; rs arr буфер. */
+ rs_arr->buffer[0] = CMD_UPLOAD;
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
+ RS_Send(rs_arr,rs_arr->buffer, 1); // <=2 байт по флагу
+
+ /* Вызывает RS_Wait4OK с аргументами (rs_arr) в текущей последовательности операций. */
RS_Wait4OK(rs_arr);
+ /* Вызывает RS_BSend. Передаёт последовательность 8-битных октетов, упакованных в слова C28x. */
RS_BSend(rs_arr,(unsigned int*)Address, Length);
+ /* Вызывает RS_Wait4OK с аргументами (rs_arr) в текущей последовательности операций. */
RS_Wait4OK(rs_arr);
+ /* Записывает rs_arr->buffer[0] значением LOBYTE(crc); rs arr буфер. */
rs_arr->buffer[0] = LOBYTE(crc);
+ /* Записывает rs_arr->buffer[1] значением HIBYTE(crc); rs arr буфер. */
rs_arr->buffer[1] = HIBYTE(crc);
+ /* Записывает rs_arr->buffer[2] значением 0; rs arr буфер. */
rs_arr->buffer[2] = 0;
+ /* Записывает rs_arr->buffer[3] значением 0; rs arr буфер. */
rs_arr->buffer[3] = 0;
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
RS_Send(rs_arr,rs_arr->buffer, 4+2);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Ïðîøèòü XILINX.
- @precondition Äîëæíà áûòü ïðîèçâåäåíà çàãðóçêà áëîêà
- Àäðåñ è äëèíà ïðîøèâêè áåðåòñà èç çàãîëîâêà è
- ñðàâíèâàåòñà ñ ïåðåìåííûìè RecvPtr è Length, çàïîëíàåìûìè â ô-öèè load,
- òàê æå ñìîòðèò ìàãè÷åñêîå ñëîâî â íà÷àëå ïðîøèâêè
+/** Прошить XILINX.
+ @precondition Должна быть произведена загрузка блока
+ Адрес и длина прошивки беретса из заголовка и
+ сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load,
+ так же смотрит магическое слово в начале прошивки
@see load */
-void xflash(RS_DATA *rs_arr)
+/* Начинает функцию xflash; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
+void xflash(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Завершает xflash без возвращаемого значения. */
return;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Ïðîøèòü TMS.
- @precondition Äîëæíà áûòü ïðîèçâåäåíà çàãðóçêà áëîêà
- Àäðåñ è äëèíà ïðîøèâêè áåðåòñà èç çàãîëîâêà è
- ñðàâíèâàåòñà ñ ïåðåìåííûìè RecvPtr è Length, çàïîëíàåìûìè â ô-öèè load
+/** Прошить TMS.
+ @precondition Должна быть произведена загрузка блока
+ Адрес и длина прошивки беретса из заголовка и
+ сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load
@see load */
-void tflash(RS_DATA *rs_arr)
+/* Начинает функцию tflash; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
+void tflash(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// volatile unsigned long Address1,Address2;
// volatile unsigned long Length, LengthW;
/*
- if(!rs_arr->BS_LoadOK)
+ if(!rs_arr->BS_LoadOK)
{
- RS_Line_to_receive(rs_arr); // ðåæèì ïðèåìà RS485
+ RS_Line_to_receive(rs_arr); // режим приема RS485
RS_SetBitMode(rs_arr,9);
return;
}
@@ -354,9 +552,9 @@ void tflash(RS_DATA *rs_arr)
LengthW = Length/2;
if (LengthW*2 0x180000) || ((Address2+LengthW) > 0x180000) )
+ if( (Address2 < 0x100000) || (Address2 > 0x180000) || ((Address2+LengthW) > 0x180000) )
{
- RS_Line_to_receive(rs_arr); // ðåæèì ïðèåìà RS485
+ RS_Line_to_receive(rs_arr); // режим приема RS485
RS_SetBitMode(rs_arr,9);
return;
}
@@ -364,61 +562,99 @@ void tflash(RS_DATA *rs_arr)
run_flash_data(Address1,Address2, LengthW );
Answer(rs_arr,CMD_TFLASH);
-*/
+*/
+ /* Завершает tflash без возвращаемого значения. */
return;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/** Ïðîøèòü TMS.
- @precondition Äîëæíà áûòü ïðîèçâåäåíà çàãðóçêà áëîêà
- Àäðåñ è äëèíà ïðîøèâêè áåðåòñà èç çàãîëîâêà è
- ñðàâíèâàåòñà ñ ïåðåìåííûìè RecvPtr è Length, çàïîëíàåìûìè â ô-öèè load
+/** Прошить TMS.
+ @precondition Должна быть произведена загрузка блока
+ Адрес и длина прошивки беретса из заголовка и
+ сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load
@see load */
-void extendbios(RS_DATA *rs_arr)
+/* Начинает функцию extendbios; назначение модуля — команды обмена, загрузчика, чтения памяти и EEPROM. */
+void extendbios(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Address1 — адрес 1; Address2 — адрес 2; Length — длина. volatile требует фактического чтения или записи при каждом доступе. */
volatile unsigned long Address1,Address2,Length;
+ /* Объявляет code — данные code. */
unsigned int code;
+ /* Записывает Address1 значением rs_arr->RS_Header[5] & 0xFF; адрес 1. */
Address1 = rs_arr->RS_Header[5] & 0xFF;
+ /* Записывает Address1 значением (Address1<<8) | (rs_arr->RS_Header[4] & 0xFF); адрес 1. */
Address1 = (Address1<<8) | (rs_arr->RS_Header[4] & 0xFF);
+ /* Записывает Address1 значением (Address1<<8) | (rs_arr->RS_Header[3] & 0xFF); адрес 1. */
Address1 = (Address1<<8) | (rs_arr->RS_Header[3] & 0xFF);
+ /* Записывает Address1 значением (Address1<<8) | (rs_arr->RS_Header[2] & 0xFF); адрес 1. */
Address1 = (Address1<<8) | (rs_arr->RS_Header[2] & 0xFF);
+ /* Записывает Address2 значением rs_arr->RS_Header[9] & 0xFF; адрес 2. */
Address2 = rs_arr->RS_Header[9] & 0xFF;
+ /* Записывает Address2 значением (Address2<<8) | (rs_arr->RS_Header[8] & 0xFF); адрес 2. */
Address2 = (Address2<<8) | (rs_arr->RS_Header[8] & 0xFF);
+ /* Записывает Address2 значением (Address2<<8) | (rs_arr->RS_Header[7] & 0xFF); адрес 2. */
Address2 = (Address2<<8) | (rs_arr->RS_Header[7] & 0xFF);
+ /* Записывает Address2 значением (Address2<<8) | (rs_arr->RS_Header[6] & 0xFF); адрес 2. */
Address2 = (Address2<<8) | (rs_arr->RS_Header[6] & 0xFF);
+ /* Записывает Length значением rs_arr->RS_Header[13] & 0xFF; длина. */
Length = rs_arr->RS_Header[13] & 0xFF;
+ /* Записывает Length значением (Length<<8) | (rs_arr->RS_Header[12] & 0xFF); длина. */
Length = (Length<<8) | (rs_arr->RS_Header[12] & 0xFF);
+ /* Записывает Length значением (Length<<8) | (rs_arr->RS_Header[11] & 0xFF); длина. */
Length = (Length<<8) | (rs_arr->RS_Header[11] & 0xFF);
+ /* Записывает Length значением (Length<<8) | (rs_arr->RS_Header[10] & 0xFF); длина. */
Length = (Length<<8) | (rs_arr->RS_Header[10] & 0xFF);
+ /* Записывает code значением rs_arr->RS_Header[14] & 0xFF; данные code. */
code=rs_arr->RS_Header[14] & 0xFF;
-
+
+ /* Вызывает switch с аргументами ( code ) в текущей последовательности операций. */
switch ( code )
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- // Ïðîøèâàåì EPROM Èç RAM
+ // Прошиваем EPROM Из RAM
+ /* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
/* 0x44 is intentionally rejected by old firmware. Conversely this build
* rejects legacy code 4, preventing writes with the wrong GUI profile. */
+ /* Ветвь выбора для 0x44; выполняется при совпадении селектора switch. */
case 0x44:
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Ветвь выбора для 4; выполняется при совпадении селектора switch. */
case 4:
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Проверяет if (!Length или Address1 >= BALSAM167_EEPROM_FIRMWARE_BYTES/2UL или; последующий оператор выполняется только при истинном условии. */
if (!Length || Address1 >= BALSAM167_EEPROM_FIRMWARE_BYTES/2UL ||
+ /* Продолжает список аргументов, полей или выражение Length > BALSAM167_EEPROM_FIRMWARE_BYTES-Address1*2UL) return;; порядок элементов сохраняется. */
Length > BALSAM167_EEPROM_FIRMWARE_BYTES-Address1*2UL) return;
+ /* Вызывает Seeprom_write. Пишет EEPROM с разделением по физическим страницам; область параметров не пересекает образ прошивки. */
Seeprom_write(Address1,(unsigned int*)Address2,Length);
- break;
- // ×èòàåì èç EPROM â RAM
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
+ break;
+ // Читаем из EPROM в RAM
+ /* Ветвь выбора для 5; выполняется при совпадении селектора switch. */
case 5: Seeprom_read(Address1,(unsigned int*)Address2,Length);
- break;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
+ break;
+ /* Обрабатывает значения селектора, для которых нет отдельной ветви case. */
default:
+ /* Завершает extendbios без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает Answer с аргументами (rs_arr,CMD_EXTEND) в текущей последовательности операций. */
Answer(rs_arr,CMD_EXTEND);
+ /* Завершает extendbios без возвращаемого значения. */
return;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//@}
diff --git a/Source/Internal/cntrl_adr.c b/Source/Internal/cntrl_adr.c
index c7c7a96..e124b52 100644
--- a/Source/Internal/cntrl_adr.c
+++ b/Source/Internal/cntrl_adr.c
@@ -1,33 +1,51 @@
+/* Собственный и универсальный адрес устройства. Русские пояснения сохранены в UTF-8. */
+/* Подключает "cntrl_adr.h": собственный и универсальный адрес устройства. */
#include "cntrl_adr.h"
+/* Задаёт ADDR_FOR_ALL_DEF = 10; данные ADDR_FOR_ALL_DEF. */
#define ADDR_FOR_ALL_DEF 10
+/* Задаёт ADDR_ANSWER_DEF = 0x33; данные ADDR_ANSWER_DEF. */
#define ADDR_ANSWER_DEF 0x33
+/* Задаёт ADDR_TERMINAL_DEF = 11; данные ADDR_TERMINAL_DEF. */
#define ADDR_TERMINAL_DEF 11
+/* Задаёт ADDR_UNIVERSAL_DEF = 10; данные ADDR_UNIVERSAL_DEF. */
#define ADDR_UNIVERSAL_DEF 10
-
-/** Óñòàíîâêà àäðåñà êîíòðîëëåðà äëà ïîñûëêè âñåì ÀÈÍàì */
-int ADDR_FOR_ALL = ADDR_FOR_ALL_DEF;
-/** Óñòàíîâêà àäðåñà êîíòðîëëåðà äëà ïîñûëêè îòâåòà */
-const int ADDR_ANSWER = ADDR_ANSWER_DEF;
+/** Установка адреса контроллера дла посылки всем АИНам */
+/* Объявляет ADDR_FOR_ALL — данные ADDR_FOR_ALL; ADDR_FOR_ALL_DEF — данные ADDR_FOR_ALL_DEF. Начальное значение задаётся справа от знака равенства. */
+int ADDR_FOR_ALL = ADDR_FOR_ALL_DEF;
-/** Óñòàíîâêà àäðåñà òåðìèíàëà äëà ïîñûëêè îòâåòà */
-const int ADDR_TERMINAL = ADDR_TERMINAL_DEF;
+/** Установка адреса контроллера дла посылки ответа */
+/* Объявляет ADDR_ANSWER — данные ADDR_ANSWER; ADDR_ANSWER_DEF — данные ADDR_ANSWER_DEF. Начальное значение задаётся справа от знака равенства. */
+const int ADDR_ANSWER = ADDR_ANSWER_DEF;
-/* Óíèâåðñàëüíûé àäðåñ êîíòðîëëåðà */
+/** Установка адреса терминала дла посылки ответа */
+/* Объявляет ADDR_TERMINAL — данные ADDR_TERMINAL; ADDR_TERMINAL_DEF — данные ADDR_TERMINAL_DEF. Начальное значение задаётся справа от знака равенства. */
+const int ADDR_TERMINAL = ADDR_TERMINAL_DEF;
+
+/* Универсальный адрес контроллера */
+/* Объявляет CNTRL_ADDR_UNIVERSAL — данные CNTRL_ADDR_UNIVERSAL; ADDR_UNIVERSAL_DEF — данные ADDR_UNIVERSAL_DEF. Начальное значение задаётся справа от знака равенства. */
const int CNTRL_ADDR_UNIVERSAL=ADDR_UNIVERSAL_DEF;
-
-/* Àäðåñ êîíòðîëëåðà */
+
+/* Адрес контроллера */
+/* Объявляет CNTRL_ADDR — данные CNTRL_ADDR. Начальное значение задаётся справа от знака равенства. */
int CNTRL_ADDR=1;
-
+
+/* Объявляет cntr_addr_c — данные cntr_addr_c. */
int cntr_addr_c;
-int cntr_addr_c_all;
-
-/** Óñòàíîâêà àäðåñà êîíòðîëëåðà äëà ïðîøèâêè */
+/* Объявляет cntr_addr_c_all — данные cntr_addr_c_all. */
+int cntr_addr_c_all;
+
+/** Установка адреса контроллера дла прошивки */
+/* Устанавливает собственный и универсальный адрес для проверки адресованных команд. */
void set_cntrl_addr (int cntrl_addr,int cntrl_addr_for_all)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает CNTRL_ADDR значением cntrl_addr; данные CNTRL_ADDR. */
CNTRL_ADDR = cntrl_addr;
+ /* Записывает ADDR_FOR_ALL значением cntrl_addr_for_all; данные ADDR_FOR_ALL. */
ADDR_FOR_ALL = cntrl_addr_for_all;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/crc16.c b/Source/Internal/crc16.c
index 756fa01..2916619 100644
--- a/Source/Internal/crc16.c
+++ b/Source/Internal/crc16.c
@@ -1,196 +1,353 @@
+/* Таблицы и функции вычисления контрольных сумм CRC. Русские пояснения сохранены в UTF-8. */
+/* Подключает "crc16.h": таблицы и функции вычисления контрольных сумм CRC. */
#include "crc16.h"
-#define MAKE_TABS 0 /* Builds tables below */
-#define FAST_CRC 1 /* If fast CRC should be used */
+#define MAKE_TABS 0 /* Builds tables below */ /* Задаёт MAKE_TABS = 0; данные MAKE_TABS. */
+#define FAST_CRC 1 /* If fast CRC should be used */ /* Задаёт FAST_CRC = 1; данные FAST_CRC. */
+/* Задаёт ONLY_CRC16 = 1; данные ONLY_CRC16. */
#define ONLY_CRC16 1
+/* Задаёт Poln = 0xA001; данные Poln. */
#define Poln 0xA001
+/* Условие компиляции FAST_CRC & !MAKE_TABS: выбранный блок включается в текущий вариант прошивки. */
#if FAST_CRC & !MAKE_TABS
+/* Условие компиляции !ONLY_CRC16: выбранный блок включается в текущий вариант прошивки. */
#if !ONLY_CRC16
+/* Продолжает список аргументов, полей или выражение static WORD crc_ccitt_tab[] = {; порядок элементов сохраняется. */
static WORD crc_ccitt_tab[] = {
+ /* Элемент постоянной таблицы 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,; порядок значений совпадает с порядком индексов потребителя. */
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
+ /* Элемент постоянной таблицы 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,; порядок значений совпадает с порядком индексов потребителя. */
0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
+ /* Элемент постоянной таблицы 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,; порядок значений совпадает с порядком индексов потребителя. */
0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
+ /* Элемент постоянной таблицы 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,; порядок значений совпадает с порядком индексов потребителя. */
0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
+ /* Элемент постоянной таблицы 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,; порядок значений совпадает с порядком индексов потребителя. */
0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
+ /* Элемент постоянной таблицы 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,; порядок значений совпадает с порядком индексов потребителя. */
0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
+ /* Элемент постоянной таблицы 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,; порядок значений совпадает с порядком индексов потребителя. */
0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
+ /* Элемент постоянной таблицы 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,; порядок значений совпадает с порядком индексов потребителя. */
0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
+ /* Элемент постоянной таблицы 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,; порядок значений совпадает с порядком индексов потребителя. */
0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
+ /* Элемент постоянной таблицы 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,; порядок значений совпадает с порядком индексов потребителя. */
0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
+ /* Элемент постоянной таблицы 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,; порядок значений совпадает с порядком индексов потребителя. */
0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
+ /* Элемент постоянной таблицы 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,; порядок значений совпадает с порядком индексов потребителя. */
0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
+ /* Элемент постоянной таблицы 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,; порядок значений совпадает с порядком индексов потребителя. */
0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
+ /* Элемент постоянной таблицы 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,; порядок значений совпадает с порядком индексов потребителя. */
0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
+ /* Элемент постоянной таблицы 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,; порядок значений совпадает с порядком индексов потребителя. */
0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
+ /* Элемент постоянной таблицы 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,; порядок значений совпадает с порядком индексов потребителя. */
0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
+ /* Элемент постоянной таблицы 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,; порядок значений совпадает с порядком индексов потребителя. */
0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
+ /* Элемент постоянной таблицы 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,; порядок значений совпадает с порядком индексов потребителя. */
0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
+ /* Элемент постоянной таблицы 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,; порядок значений совпадает с порядком индексов потребителя. */
0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
+ /* Элемент постоянной таблицы 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,; порядок значений совпадает с порядком индексов потребителя. */
0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
+ /* Элемент постоянной таблицы 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,; порядок значений совпадает с порядком индексов потребителя. */
0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
+ /* Элемент постоянной таблицы 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,; порядок значений совпадает с порядком индексов потребителя. */
0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
+ /* Элемент постоянной таблицы 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,; порядок значений совпадает с порядком индексов потребителя. */
0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
+ /* Элемент постоянной таблицы 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,; порядок значений совпадает с порядком индексов потребителя. */
0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
+ /* Элемент постоянной таблицы 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,; порядок значений совпадает с порядком индексов потребителя. */
0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
+ /* Элемент постоянной таблицы 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,; порядок значений совпадает с порядком индексов потребителя. */
0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
+ /* Элемент постоянной таблицы 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,; порядок значений совпадает с порядком индексов потребителя. */
0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
+ /* Элемент постоянной таблицы 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,; порядок значений совпадает с порядком индексов потребителя. */
0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
+ /* Элемент постоянной таблицы 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,; порядок значений совпадает с порядком индексов потребителя. */
0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
+ /* Элемент постоянной таблицы 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,; порядок значений совпадает с порядком индексов потребителя. */
0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
+ /* Элемент постоянной таблицы 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,; порядок значений совпадает с порядком индексов потребителя. */
0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
+ /* Элемент постоянной таблицы 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0; порядок значений совпадает с порядком индексов потребителя. */
0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Продолжает список аргументов, полей или выражение WORD crc_16_tab[] = {; порядок элементов сохраняется. */
WORD crc_16_tab[] = {
+ /* Элемент постоянной таблицы 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241,; порядок значений совпадает с порядком индексов потребителя. */
0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241,
+ /* Элемент постоянной таблицы 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440,; порядок значений совпадает с порядком индексов потребителя. */
0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440,
+ /* Элемент постоянной таблицы 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40,; порядок значений совпадает с порядком индексов потребителя. */
0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40,
+ /* Элемент постоянной таблицы 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841,; порядок значений совпадает с порядком индексов потребителя. */
0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841,
+ /* Элемент постоянной таблицы 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40,; порядок значений совпадает с порядком индексов потребителя. */
0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40,
+ /* Элемент постоянной таблицы 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41,; порядок значений совпадает с порядком индексов потребителя. */
0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41,
+ /* Элемент постоянной таблицы 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641,; порядок значений совпадает с порядком индексов потребителя. */
0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641,
+ /* Элемент постоянной таблицы 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040,; порядок значений совпадает с порядком индексов потребителя. */
0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040,
+ /* Элемент постоянной таблицы 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240,; порядок значений совпадает с порядком индексов потребителя. */
0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240,
+ /* Элемент постоянной таблицы 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441,; порядок значений совпадает с порядком индексов потребителя. */
0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441,
+ /* Элемент постоянной таблицы 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41,; порядок значений совпадает с порядком индексов потребителя. */
0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41,
+ /* Элемент постоянной таблицы 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840,; порядок значений совпадает с порядком индексов потребителя. */
0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840,
+ /* Элемент постоянной таблицы 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41,; порядок значений совпадает с порядком индексов потребителя. */
0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41,
+ /* Элемент постоянной таблицы 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40,; порядок значений совпадает с порядком индексов потребителя. */
0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40,
+ /* Элемент постоянной таблицы 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640,; порядок значений совпадает с порядком индексов потребителя. */
0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640,
+ /* Элемент постоянной таблицы 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041,; порядок значений совпадает с порядком индексов потребителя. */
0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041,
+ /* Элемент постоянной таблицы 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240,; порядок значений совпадает с порядком индексов потребителя. */
0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240,
+ /* Элемент постоянной таблицы 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441,; порядок значений совпадает с порядком индексов потребителя. */
0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441,
+ /* Элемент постоянной таблицы 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41,; порядок значений совпадает с порядком индексов потребителя. */
0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41,
+ /* Элемент постоянной таблицы 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840,; порядок значений совпадает с порядком индексов потребителя. */
0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840,
+ /* Элемент постоянной таблицы 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41,; порядок значений совпадает с порядком индексов потребителя. */
0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41,
+ /* Элемент постоянной таблицы 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40,; порядок значений совпадает с порядком индексов потребителя. */
0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40,
+ /* Элемент постоянной таблицы 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640,; порядок значений совпадает с порядком индексов потребителя. */
0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640,
+ /* Элемент постоянной таблицы 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041,; порядок значений совпадает с порядком индексов потребителя. */
0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041,
+ /* Элемент постоянной таблицы 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241,; порядок значений совпадает с порядком индексов потребителя. */
0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241,
+ /* Элемент постоянной таблицы 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440,; порядок значений совпадает с порядком индексов потребителя. */
0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440,
+ /* Элемент постоянной таблицы 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40,; порядок значений совпадает с порядком индексов потребителя. */
0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40,
+ /* Элемент постоянной таблицы 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841,; порядок значений совпадает с порядком индексов потребителя. */
0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841,
+ /* Элемент постоянной таблицы 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40,; порядок значений совпадает с порядком индексов потребителя. */
0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40,
+ /* Элемент постоянной таблицы 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41,; порядок значений совпадает с порядком индексов потребителя. */
0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41,
+ /* Элемент постоянной таблицы 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641,; порядок значений совпадает с порядком индексов потребителя. */
0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641,
+ /* Элемент постоянной таблицы 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040; порядок значений совпадает с порядком индексов потребителя. */
0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции !ONLY_CRC16: выбранный блок включается в текущий вариант прошивки. */
#if !ONLY_CRC16
/* CRC-CCITT is based on the polynomial x^16 + x^12 + x^5 + 1. Bits */
/* are sent MSB to LSB. */
+/* Начинает функцию get_crc_ccitt; назначение модуля — таблицы и функции вычисления контрольных сумм CRC. */
unsigned int get_crc_ccitt(unsigned int crc,unsigned int *buf,unsigned long size )
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Условие компиляции !(FAST_CRC & !MAKE_TABS): выбранный блок включается в текущий вариант прошивки. */
#if !(FAST_CRC & !MAKE_TABS)
+ /* Продолжает список аргументов, полей или выражение register int i;; порядок элементов сохраняется. */
register int i;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Повторяет или ожидает, пока выполняется while (size--). */
while (size--) {
+/* Условие компиляции FAST_CRC & !MAKE_TABS: выбранный блок включается в текущий вариант прошивки. */
#if FAST_CRC & !MAKE_TABS
+ /* Записывает crc значением (crc << 8) ^ crc_ccitt_tab[ (crc >> 8) ^ *buf++ ]; данные crc. */
crc = (crc << 8) ^ crc_ccitt_tab[ (crc >> 8) ^ *buf++ ];
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Инвертирует биты crc значением (WORD)(*buf++) << 8; данные crc. */
crc ^= (WORD)(*buf++) << 8;
+ /* Цикл for (i = 0; i < 8; i++) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 8; i++) {
+ /* Проверяет if (crc & 0x8000); последующий оператор выполняется только при истинном условии. */
if (crc & 0x8000)
+ /* Записывает crc значением (crc << 1) ^ 0x1021; данные crc. */
crc = (crc << 1) ^ 0x1021;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Продолжает список аргументов, полей или выражение crc <<= 1;; порядок элементов сохраняется. */
crc <<= 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение } return crc;; порядок элементов сохраняется. */
} return crc;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/* CRC-16 is based on the polynomial x^16 + x^15 + x^2 + 1. Bits are */
/* sent LSB to MSB. */
+/* Начинает функцию get_crc_16; назначение модуля — таблицы и функции вычисления контрольных сумм CRC. */
unsigned int get_crc_16(unsigned int crc,unsigned int *buf,unsigned long size )
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Условие компиляции !(FAST_CRC & !MAKE_TABS): выбранный блок включается в текущий вариант прошивки. */
#if !(FAST_CRC & !MAKE_TABS)
+ /* Продолжает список аргументов, полей или выражение register unsigned int i;; порядок элементов сохраняется. */
register unsigned int i;
+ /* Продолжает список аргументов, полей или выражение register unsigned int ch;; порядок элементов сохраняется. */
register unsigned int ch;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Повторяет или ожидает, пока выполняется while (size--). */
while (size--) {
+/* Условие компиляции FAST_CRC & !MAKE_TABS: выбранный блок включается в текущий вариант прошивки. */
#if FAST_CRC & !MAKE_TABS
+ /* Записывает crc значением (crc >> 8) ^ crc_16_tab[ (crc ^ *buf++) & 0xff ]; данные crc. */
crc = (crc >> 8) ^ crc_16_tab[ (crc ^ *buf++) & 0xff ];
+ /* Записывает crc значением crc & 0xffff; данные crc. */
crc = crc & 0xffff;
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Записывает ch значением *buf++; данные ch. */
ch = *buf++;
+ /* Цикл for (i = 0; i < 8; i++) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 8; i++) {
+ /* Проверяет if ((crc ^ ch) & 1); последующий оператор выполняется только при истинном условии. */
if ((crc ^ ch) & 1)
+ /* Записывает crc значением (crc >> 1) ^ 0xa001; данные crc. */
crc = (crc >> 1) ^ 0xa001;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Продолжает список аргументов, полей или выражение crc >>= 1;; порядок элементов сохраняется. */
crc >>= 1;
+ /* Продолжает список аргументов, полей или выражение ch >>= 1;; порядок элементов сохраняется. */
ch >>= 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Продолжает список аргументов, полей или выражение } return (crc & 0xffff);; порядок элементов сохраняется. */
} return (crc & 0xffff);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию get_crc_16b; назначение модуля — таблицы и функции вычисления контрольных сумм CRC. */
unsigned int get_crc_16b(unsigned int crc,unsigned int *buf,unsigned long size )
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
-
+
+/* Объявляет x — данные x; dword — данные dword; byte — данные byte. */
unsigned int x, dword, byte;
+/* Объявляет i — данные i. */
unsigned long i;
- for (i = 0; i < size; i++)
+ /* Цикл for (i = 0; i < size; i++); задаёт начальное значение, условие продолжения и шаг перебора. */
+ for (i = 0; i < size; i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает x значением i % 2; данные x. */
x = i % 2;
-
- dword = buf[i/2];
-// dword = *buf;
-
- if (x == 0)
+ /* Записывает dword значением buf[i/2]; данные dword. */
+ dword = buf[i/2];
+// dword = *buf;
+
+
+ /* Проверяет if (x == 0); последующий оператор выполняется только при истинном условии. */
+ if (x == 0)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает byte значением ((dword >> 8)&0xFF); данные byte. */
byte = ((dword >> 8)&0xFF);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- if (x == 1)
+ /* Проверяет if (x == 1); последующий оператор выполняется только при истинном условии. */
+ if (x == 1)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает byte значением (dword & 0xFF); данные byte. */
byte = (dword & 0xFF);
- }
-
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+
+ /* Записывает crc значением (crc >> 8) ^ crc_16_tab[ (crc ^ (byte) ) & 0xff ]; данные crc. */
crc = (crc >> 8) ^ crc_16_tab[ (crc ^ (byte) ) & 0xff ];
+ /* Записывает crc значением crc & 0xffff; данные crc. */
crc = crc & 0xffff;
-
+
// crc = crc + ((byte) & 0xff);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
+
+ /* Завершает get_crc_16b и возвращает (crc & 0xffff). */
return (crc & 0xffff);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию get_crc16; назначение модуля — таблицы и функции вычисления контрольных сумм CRC. */
int get_crc16(unsigned int *buf, int size )
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Объявляет crc16 — данные crc16; i — данные i; j — данные j. */
int crc16,i,j;
-
+
+ /* Записывает crc16 значением 0xFFFF; данные crc16. */
crc16=0xFFFF;
+ /* Цикл for(i=0;i>1)^Poln; последующий оператор выполняется только при истинном условии. */
if(crc16&1) crc16=(crc16>>1)^Poln;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else crc16=crc16>>1;
+ /* Записывает crc16 значением crc16^((buf[i]>>8)&0xFF); данные crc16. */
crc16=crc16^((buf[i]>>8)&0xFF);
+ /* Цикл for (j=0;j<8;j++); задаёт начальное значение, условие продолжения и шаг перебора. */
for (j=0;j<8;j++)
+ /* Проверяет if(crc16&1) crc16=(crc16>>1)^Poln; последующий оператор выполняется только при истинном условии. */
if(crc16&1) crc16=(crc16>>1)^Poln;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else crc16=crc16>>1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Завершает get_crc16 и возвращает crc16. */
return crc16;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/ecan.c b/Source/Internal/ecan.c
index 8fe4a4e..f61ba4f 100644
--- a/Source/Internal/ecan.c
+++ b/Source/Internal/ecan.c
@@ -1,294 +1,490 @@
+/* Штатный eCAN и отдельный служебный обмен УМП/GAS. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h" // DSP281x Headerfile Include File
+/* Подключает "ecan.h": штатный eCAN и отдельный служебный обмен УМП/GAS. */
#include "ecan.h" // DSP281x Headerfile Include File
+/* Подключает "tools.h": настройка внешней памяти и служебные задержки. */
#include "tools.h" // DSP281x Headerfile Include File
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
#include "message.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "log_to_mem.h"
+/* Подключает "DAC.h": выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
#include "DAC.h"
+/* Подключает "ump_can_protocol.h": настройки и интерфейс ump_can_protocol. */
#include "ump_can_protocol.h"
+/* Подключает "gas167.h": дополнительная карта GAS 167/v1 только для новой EEPROM M95M02. */
#include "gas167.h"
// Prototype statements for functions found within this file.
+/* Принимает CAN в прерывании, разбирает служебный запрос или передаёт данные штатному протоколу. */
interrupt void CANa_handler(void);
+/* Объявляет интерфейс функции CANa_reset_err; реализация вызывается через этот прототип. */
interrupt void CANa_reset_err(void);
// Global variable for this example
+/* Объявляет ErrorCount — ошибка число. */
Uint32 ErrorCount;
+/* Объявляет MessageReceivedCount — Message Received число. */
Uint32 MessageReceivedCount;
+/* Объявляет MessageTransivedCount — Message Transived число. Начальное значение задаётся справа от знака равенства. */
Uint32 MessageTransivedCount=0;
+/* Объявляет TestMbox1 — данные TestMbox1. Начальное значение задаётся справа от знака равенства. */
Uint32 TestMbox1 = 0;
+/* Объявляет TestMbox2 — данные TestMbox2. Начальное значение задаётся справа от знака равенства. */
Uint32 TestMbox2 = 0;
+/* Объявляет TestMbox3 — данные TestMbox3. Начальное значение задаётся справа от знака равенства. */
Uint32 TestMbox3 = 0;
+/* Объявляет CanTimeOutErrorTR — CAN Time Out ошибка TR. Начальное значение задаётся справа от знака равенства. */
int CanTimeOutErrorTR = 0;
+/* Объявляет wait — данные wait. Начальное значение задаётся справа от знака равенства. */
int wait=0;
-/* MBOX2 âûäåëåí ïîä îòâåòû ðåãèñòðàòîðà; øòàòíûé MBOX0 ïðîäîëæàåò
- * ïåðåäàâàòü òåõíîëîãè÷åñêèå äàííûå íåçàâèñèìî. ISR òîëüêî ñòàâèò çàïðîñ,
- * à ñíèìîê è îòïðàâêà êîðîòêèìè øàãàìè âûïîëíÿþòñÿ â îñíîâíîì öèêëå. */
+/* MBOX2 выделен под ответы регистратора; штатный MBOX0 продолжает
+ * передавать технологические данные независимо. ISR только ставит запрос,
+ * а снимок и отправка короткими шагами выполняются в основном цикле. */
+/* Объявляет ump_can_pending — флаг ожидающего запроса служебного CAN между ISR и главным циклом. volatile требует фактического чтения или записи при каждом доступе. */
static volatile unsigned int ump_can_pending;
+/* Объявляет ump_can_tag — ump CAN tag; ump_can_address — ump CAN адрес; ump_can_value — ump CAN value. volatile требует фактического чтения или записи при каждом доступе. */
static volatile unsigned int ump_can_tag, ump_can_address, ump_can_value;
+/* Объявляет ump_can_reply — замороженные слова ответа служебного CAN. */
static unsigned int ump_can_reply[UMP_CAN_MAX_WORDS];
+/* Объявляет ump_can_length — ump CAN длина; ump_can_index — ump CAN index; ump_can_reply_tag — ump CAN reply tag. */
static unsigned int ump_can_length, ump_can_index, ump_can_reply_tag;
+/* Объявляет ump_can_waiting — ump CAN waiting. */
static unsigned int ump_can_waiting;
+/* Объявляет ump_can_sent_at — время последней передачи фрагмента ответа CAN. */
static unsigned long ump_can_sent_at;
+/* Настраивает eCAN, скорость, почтовые ящики и маршрутизацию прерываний для выбранного режима платы. */
void InitCan(int Port, int DevNum)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- struct ECAN_REGS ECanShadow;
+ /* Описывает структуру ECAN_REGS ECanShadow;; порядок полей определяет расположение данных. */
+ struct ECAN_REGS ECanShadow;
+ /* Продолжает список аргументов, полей или выражение volatile struct ECAN_REGS * ECanRegs;; порядок элементов сохраняется. */
volatile struct ECAN_REGS * ECanRegs;
+ /* Продолжает список аргументов, полей или выражение volatile struct ECAN_MBOXES * ECanMboxes;; порядок элементов сохраняется. */
volatile struct ECAN_MBOXES * ECanMboxes;
+ /* Продолжает список аргументов, полей или выражение volatile struct MOTO_REGS * ECanMOTORegs;; порядок элементов сохраняется. */
volatile struct MOTO_REGS * ECanMOTORegs;
+ /* Объявляет id — данные id. Начальное значение задаётся справа от знака равенства. */
long id = 0x80BA0000;
+ /* Изменяет счётчик в выражении DevNum--; на один для следующего шага. */
DevNum--;
+ /* Проверяет if(DevNum<0)DevNum=0; последующий оператор выполняется только при истинном условии. */
if(DevNum<0)DevNum=0;
+ /* Проверяет if(DevNum>15)DevNum=15; последующий оператор выполняется только при истинном условии. */
if(DevNum>15)DevNum=15;
-
+
// Configure CAN pins using GPIO regs here
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает ECanRegs значением &ECanaRegs; E CAN Regs. */
ECanRegs = &ECanaRegs;
+ /* Записывает ECanMboxes значением &ECanaMboxes; E CAN Mboxes. */
ECanMboxes = &ECanaMboxes;
+ /* Записывает ECanMOTORegs значением &ECanaMOTORegs; E CAN MOTO Regs. */
ECanMOTORegs = &ECanaMOTORegs;
+ /* Записывает GpioCtrlRegs.GPAMUX2.bit.GPIO30 значением 1; аппаратная линия ввода/вывода GPIO30. */
GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1;
+ /* Записывает GpioCtrlRegs.GPAMUX2.bit.GPIO31 значением 1; аппаратная линия ввода/вывода GPIO31. */
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1;
// Configure the eCAN RX and TX pins for eCAN transmissions
+ /* Записывает ECanRegs->CANTIOC.all значением 8; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANTIOC.all = 8; // only 3rd bit, TXFUNC, is significant
+ /* Записывает ECanRegs->CANRIOC.all значением 8; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANRIOC.all = 8; // only 3rd bit, RXFUNC, is significant
// Specify that 8 bits will be sent/received
+ /* Записывает ECanMboxes->MBOX0.MSGCTRL.all значением 0x00000008; представление регистра целым словом без разбиения на битовые поля. */
ECanMboxes->MBOX0.MSGCTRL.all = 0x00000008;
+ /* Записывает ECanMboxes->MBOX1.MSGCTRL.all значением 0x00000008; представление регистра целым словом без разбиения на битовые поля. */
ECanMboxes->MBOX1.MSGCTRL.all = 0x00000008;
+ /* Записывает ECanMboxes->MBOX2.MSGCTRL.all значением 0x00000008; представление регистра целым словом без разбиения на битовые поля. */
ECanMboxes->MBOX2.MSGCTRL.all = 0x00000008;
-
+
// Disable all Mailboxes
// Required before writing the MSGIDs
+ /* Записывает ECanRegs->CANME.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANME.all = 0;
-// çàäàåì àäðåñ 0 àùèêa íà ïåðåäà÷ó
- ECanMboxes->MBOX0.MSGID.all = id + 0x10 + DevNum;
+// задаем адрес 0 ащикa на передачу
+ /* Записывает ECanMboxes->MBOX0.MSGID.all значением id + 0x10 + DevNum; представление регистра целым словом без разбиения на битовые поля. */
+ ECanMboxes->MBOX0.MSGID.all = id + 0x10 + DevNum;
-// çàäàåì àäðåñ 1 àùèêa íà ïðèåì
- ECanMboxes->MBOX1.MSGID.all = id + DevNum; //ïîìåíàòü!!!! 1 è 0!!!
+// задаем адрес 1 ащикa на прием
+ /* Записывает ECanMboxes->MBOX1.MSGID.all значением id + DevNum; представление регистра целым словом без разбиения на битовые поля. */
+ ECanMboxes->MBOX1.MSGID.all = id + DevNum; //поменать!!!! 1 и 0!!!
-// MBOX0 è MBOX2 ïåðåäàþò äàííûå; MBOX1 ïðèíèìàåò êîìàíäû.
+// MBOX0 и MBOX2 передают данные; MBOX1 принимает команды.
+ /* Записывает ECanMboxes->MBOX2.MSGID.all значением id + 0x20 + DevNum; представление регистра целым словом без разбиения на битовые поля. */
ECanMboxes->MBOX2.MSGID.all = id + 0x20 + DevNum;
+ /* Записывает ECanRegs->CANMD.all значением 0xFFFFFFFA; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANMD.all = 0xFFFFFFFA;
-
-// Âêëþ÷àåì òðè mailbox: òåëåìåòðèÿ, êîìàíäû è îòâåòû ëîããåðà.
+
+// Включаем три mailbox: телеметрия, команды и ответы логгера.
+ /* Записывает ECanRegs->CANME.all значением 0x00000007; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANME.all = 0x00000007;
// Clear all TAn bits
+ /* Записывает ECanRegs->CANTA.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANTA.all = 0xFFFFFFFF;
// Clear all RMPn bits
+ /* Записывает ECanRegs->CANRMP.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANRMP.all = 0xFFFFFFFF;
// Clear all interrupt flag bits
+ /* Записывает ECanRegs->CANGIF0.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANGIF0.all = 0xFFFFFFFF;
+ /* Записывает ECanRegs->CANGIF1.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANGIF1.all = 0xFFFFFFFF;
// Clear all error and status bits
+ /* Записывает ECanRegs->CANES.all значением 0xffffffff; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANES.all=0xffffffff;
// Request permission to change the configuration registers
+ /* Записывает ECanShadow.CANMC.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
ECanShadow.CANMC.all = 0;
+ /* Записывает ECanShadow.CANMC.bit.MBCC значением 1; данные MBCC. */
ECanShadow.CANMC.bit.MBCC = 1; // Mailbox timestamp counter clear bit
+ /* Записывает ECanShadow.CANMC.bit.TCC значением 1; данные TCC. */
ECanShadow.CANMC.bit.TCC = 1; // Time stamp counter MSB clear bit
+ /* Записывает ECanShadow.CANMC.bit.SCB значением 1; данные SCB. */
ECanShadow.CANMC.bit.SCB = 1; // eCAN mode (reqd to access 32 mailboxes)
+ /* Записывает ECanShadow.CANMC.bit.WUBA значением 1; данные WUBA. */
ECanShadow.CANMC.bit.WUBA = 1; // Wake up on bus activity
+ /* Записывает ECanShadow.CANMC.bit.ABO значением 1; данные ABO. */
ECanShadow.CANMC.bit.ABO = 1; // Auto bus on
- ECanShadow.CANMC.bit.CCR = 1;
+ /* Записывает ECanShadow.CANMC.bit.CCR значением 1; данные CCR. */
+ ECanShadow.CANMC.bit.CCR = 1;
// ECanShadow.CANMC.bit.STM = 1; // self-test loop-back
+ /* Записывает ECanRegs->CANMC.all значением ECanShadow.CANMC.all; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANMC.all = ECanShadow.CANMC.all;
+ /* Повторяет или ожидает, пока выполняется while(!ECanRegs->CANES.bit.CCE);. */
while(!ECanRegs->CANES.bit.CCE); // Wait for CCE bit to be set..
-
-// íàñòðèâàåì ñêîðîñòü CAN
+
+// настриваем скорость CAN
+ /* Записывает ECanShadow.CANBTC.all значением ECanRegs->CANBTC.all; представление регистра целым словом без разбиения на битовые поля. */
ECanShadow.CANBTC.all = ECanRegs->CANBTC.all;
+ /* Записывает ECanShadow.CANBTC.bit.SJWREG значением 1; данные SJWREG. */
ECanShadow.CANBTC.bit.SJWREG=1;
+ /* Записывает ECanShadow.CANBTC.bit.BRPREG значением (CLKMULT * 3) - 1; данные BRPREG. */
ECanShadow.CANBTC.bit.BRPREG = (CLKMULT * 3) - 1;
+ /* Записывает ECanShadow.CANBTC.bit.TSEG1REG значением 15; данные TSEG1REG. */
ECanShadow.CANBTC.bit.TSEG1REG = 15;
+ /* Записывает ECanShadow.CANBTC.bit.TSEG2REG значением 2; данные TSEG2REG. */
ECanShadow.CANBTC.bit.TSEG2REG = 2;
+ /* Записывает ECanRegs->CANBTC.all значением ECanShadow.CANBTC.all; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANBTC.all = ECanShadow.CANBTC.all;
+ /* Записывает ECanShadow.CANMC.bit.CCR значением 0; данные CCR. */
ECanShadow.CANMC.bit.CCR = 0; // Set CCR = 0
+ /* Записывает ECanRegs->CANMC.all значением ECanShadow.CANMC.all; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANMC.all = ECanShadow.CANMC.all;
+ /* Повторяет или ожидает, пока выполняется while(ECanRegs->CANES.bit.CCE);. */
while(ECanRegs->CANES.bit.CCE); // Wait for CCE bit to be cleared..
-// çàäàåì òàéìàóòû äëà îæèäàíèà îòïðàâêè ïîëó÷åíèà ïîñûëêè
+// задаем таймауты дла ожиданиа отправки получениа посылки
+ /* Записывает ECanMOTORegs->MOTO0 значением 550000; E CAN MOTO Regs 0. */
ECanMOTORegs->MOTO0 = 550000;
+ /* Записывает ECanMOTORegs->MOTO1 значением 550000; E CAN MOTO Regs 1. */
ECanMOTORegs->MOTO1 = 550000;
+ /* Записывает ECanRegs->CANTOC.all значением 1; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANTOC.all = 1;
+ /* Записывает ECanRegs->CANTOS.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANTOS.all = 0; // clear all time-out flags
+ /* Записывает ECanRegs->CANTSC значением 0; E CAN Regs CANTSC. */
ECanRegs->CANTSC = 0; // clear time-out counter
+ /* Записывает ECanShadow.CANGIM.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
ECanShadow.CANGIM.all = 0;
+ /* Записывает ECanRegs->CANMIM.all значением 2; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANMIM.all = 2; // Enable interrupts of box 1
+ /* Записывает ECanRegs->CANMIL.all значением 0x00000000; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANMIL.all = 0x00000000; // All mailbox interrupts are generated on interrupt line 0.
+ /* Записывает ECanShadow.CANGIM.bit.I0EN значением 1; данные I0EN. */
ECanShadow.CANGIM.bit.I0EN = 1;
+ /* Записывает ECanShadow.CANGIM.bit.MTOM значением 1; данные MTOM. */
ECanShadow.CANGIM.bit.MTOM = 1;
+ /* Записывает ECanShadow.CANGIM.bit.I1EN значением 1; данные I1EN. */
ECanShadow.CANGIM.bit.I1EN = 1;
+ /* Записывает ECanShadow.CANGIM.bit.GIL значением 1; данные GIL. */
ECanShadow.CANGIM.bit.GIL = 1;
+ /* Записывает ECanRegs->CANGIM.all значением ECanShadow.CANGIM.all; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANGIM.all = ECanShadow.CANGIM.all;
+ /* Записывает PieVectTable.ECAN0INTA значением &CANa_handler; данные ECAN0INTA. */
PieVectTable.ECAN0INTA = &CANa_handler;
+ /* Записывает PieCtrlRegs.PIEIER9.bit.INTx5 значением 1; данные INTx5. */
PieCtrlRegs.PIEIER9.bit.INTx5=1; // PIE Group 9, INT6
+ /* Записывает PieVectTable.ECAN1INTA значением &CANa_reset_err; данные ECAN1INTA. */
PieVectTable.ECAN1INTA = &CANa_reset_err;
+ /* Записывает PieCtrlRegs.PIEIER9.bit.INTx6 значением 1; данные INTx6. */
PieCtrlRegs.PIEIER9.bit.INTx6=1; // PIE Group 9, INT6
-
+
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; // Enable CPU INT
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
-// çàâåðøèëè íàñòðîéêó CAN àùèêîâ
+// завершили настройку CAN ащиков
+ /* Записывает MessageReceivedCount значением 0; Message Received число. */
MessageReceivedCount = 0;
+ /* Записывает ErrorCount значением 0; ошибка число. */
ErrorCount = 0;
+ /* Записывает CanTimeOutErrorTR значением 0; CAN Time Out ошибка TR. */
CanTimeOutErrorTR=0;
+ /* Записывает MessageTransivedCount значением 0; Message Transived число. */
MessageTransivedCount=0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Упаковывает адрес и технологические слова в штатный CAN-кадр и запускает передачу mailbox. */
void CAN_send(int Port, int data[], int Addr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет hiword — данные hiword; loword — данные loword. */
unsigned long hiword,loword;
+ /* Продолжает список аргументов, полей или выражение volatile struct ECAN_REGS * ECanRegs;; порядок элементов сохраняется. */
volatile struct ECAN_REGS * ECanRegs;
+ /* Продолжает список аргументов, полей или выражение volatile struct ECAN_MBOXES * ECanMboxes;; порядок элементов сохраняется. */
volatile struct ECAN_MBOXES * ECanMboxes;
+ /* Записывает ECanRegs значением &ECanaRegs; E CAN Regs. */
ECanRegs = &ECanaRegs;
+ /* Записывает ECanMboxes значением &ECanaMboxes; E CAN Mboxes. */
ECanMboxes = &ECanaMboxes;
+ /* Проверяет if(wait); последующий оператор выполняется только при истинном условии. */
if(wait)
+ /* Проверяет if(!(ECanRegs->CANTA.all & 1)); последующий оператор выполняется только при истинном условии. */
if(!(ECanRegs->CANTA.all & 1))
+ /* Проверяет if(!(ECanRegs->CANAA.all & 1)); последующий оператор выполняется только при истинном условии. */
if(!(ECanRegs->CANAA.all & 1))
+ /* Завершает CAN_send без возвращаемого значения. */
return;
+ /* Записывает ECanRegs->CANTA.all значением 1; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANTA.all = 1;
+ /* Записывает ECanRegs->CANAA.all значением 1; представление регистра целым словом без разбиения на битовые поля. */
ECanRegs->CANAA.all = 1;
+ /* Записывает hiword значением ((((Uint32) Addr ) & 0xffff)<<16)| 0xE0000000 |; данные hiword. */
hiword= ((((Uint32) Addr ) & 0xffff)<<16)| 0xE0000000 |
+ /* Продолжает список аргументов, полей или выражение ((((Uint32)data[Addr ]) & 0xffff) );; порядок элементов сохраняется. */
((((Uint32)data[Addr ]) & 0xffff) );
+ /* Записывает loword значением ((((Uint32)data[Addr+1]) & 0xffff)<<16)|; данные loword. */
loword= ((((Uint32)data[Addr+1]) & 0xffff)<<16)|
+ /* Продолжает список аргументов, полей или выражение ((((Uint32)data[Addr+2]) & 0xffff) );; порядок элементов сохраняется. */
((((Uint32)data[Addr+2]) & 0xffff) );
+ /* Записывает ECanMboxes->MBOX0.MDH.all значением hiword; представление регистра целым словом без разбиения на битовые поля. */
ECanMboxes->MBOX0.MDH.all = hiword;
+ /* Записывает ECanMboxes->MBOX0.MDL.all значением loword; представление регистра целым словом без разбиения на битовые поля. */
ECanMboxes->MBOX0.MDL.all = loword;
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает ECanRegs->CANTSC значением 0; E CAN Regs CANTSC. */
ECanRegs->CANTSC = 0; // clear time-out counter
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
- ECanRegs->CANTRS.all = 1; // çàïóñòèòü ïåðåäà÷ó
-
+ /* Записывает ECanRegs->CANTRS.all значением 1; представление регистра целым словом без разбиения на битовые поля. */
+ ECanRegs->CANTRS.all = 1; // запустить передачу
+
+ /* Записывает wait значением 1; данные wait. */
wait=1;
+ /* Вызывает led1_toggle с аргументами () в текущей последовательности операций. */
led1_toggle();
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию Handlai; назначение модуля — штатный eCAN и отдельный служебный обмен УМП/GAS. */
void Handlai(volatile struct ECAN_MBOXES * ECanMboxes)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет adr — данные adr. */
unsigned int adr;
+ /* Объявляет bit — представление регистра отдельными битовыми полями. */
unsigned int bit[3];
+ /* Объявляет hiword — данные hiword; loword — данные loword. */
unsigned long hiword,loword;
+ /* Объявляет Data — данные. */
int Data[3];
+ /* Записывает Lonely значением 0; данные Lonely. */
Lonely=0;
+ /* Записывает hiword значением ECanMboxes->MBOX1.MDH.all; данные hiword. */
hiword = ECanMboxes->MBOX1.MDH.all;
+ /* Записывает loword значением ECanMboxes->MBOX1.MDL.all; данные loword. */
loword = ECanMboxes->MBOX1.MDL.all;
- /* Ñëóæåáíûé çàïðîñ ëîããåðà íå ÿâëÿåòñÿ êîìàíäîé ÓÌÏ è ñàì íå äîëæåí
- * çàïîëíÿòü æóðíàë CAN-ñîáûòèÿìè ïðè îíëàéí-÷òåíèè. Êîðîòêèå êàäðû
- * îòáðàñûâàþòñÿ: íåçàïîëíåííûå áàéòû mailbox ìîãëè îñòàòüñÿ îò ïðîøëîãî. */
+ /* Служебный запрос логгера не является командой УМП и сам не должен
+ * заполнять журнал CAN-событиями при онлайн-чтении. Короткие кадры
+ * отбрасываются: незаполненные байты mailbox могли остаться от прошлого. */
+ /* Проверяет if ((unsigned int)(hiword >> 16) == UMP_CAN_MARKER); последующий оператор выполняется только при истинном условии. */
if ((unsigned int)(hiword >> 16) == UMP_CAN_MARKER) {
+ /* Проверяет if (ECanMboxes->MBOX1.MSGCTRL.bit.DLC == 8 и (hiword & 0xFF00UL)); последующий оператор выполняется только при истинном условии. */
if (ECanMboxes->MBOX1.MSGCTRL.bit.DLC == 8 && (hiword & 0xFF00UL)) {
+ /* Записывает ump_can_tag значением (unsigned int)hiword; ump CAN tag. */
ump_can_tag = (unsigned int)hiword;
+ /* Записывает ump_can_address значением (unsigned int)(loword >> 16); ump CAN адрес. */
ump_can_address = (unsigned int)(loword >> 16);
+ /* Записывает ump_can_value значением (unsigned int)loword; ump CAN value. */
ump_can_value = (unsigned int)loword;
+ /* Записывает ump_can_pending значением 1; флаг ожидающего запроса служебного CAN между ISR и главным циклом. */
ump_can_pending = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Завершает Handlai без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает adr значением (hiword >> 16); данные adr. */
adr = (hiword >> 16);
+ /* Записывает bit[0] значением adr & 0x8000; представление регистра отдельными битовыми полями. */
bit[0] = adr & 0x8000;
+ /* Записывает bit[1] значением adr & 0x4000; представление регистра отдельными битовыми полями. */
bit[1] = adr & 0x4000;
+ /* Записывает bit[2] значением adr & 0x2000; представление регистра отдельными битовыми полями. */
bit[2] = adr & 0x2000;
+ /* Оставляет биты маски adr значением 0x1fff; данные adr. */
adr &= 0x1fff;
+ /* Записывает Data[0] значением (hiword ) & 0xffff; данные. */
Data[0] = (hiword ) & 0xffff;
+ /* Записывает Data[1] значением (loword>>16) & 0xffff; данные. */
Data[1] = (loword>>16) & 0xffff;
+ /* Записывает Data[2] значением (loword ) & 0xffff; данные. */
Data[2] = (loword ) & 0xffff;
-
+
+ /* Проверяет if(bit[0]) if(adr < ANSWER_LEN и; последующий оператор выполняется только при истинном условии. */
if(bit[0]) if(adr < ANSWER_LEN &&
+ /* Записывает modbus[adr] значением Data[0]; adr++; массив технологических регистров; слово int на C28x занимает 16 бит. */
!(Desk == dsk_LOAD && (adr == 0x7CU || adr == 0x7DU))) modbus[adr] = Data[0]; adr++;
+ /* Проверяет if(bit[1]) if(adr < ANSWER_LEN и; последующий оператор выполняется только при истинном условии. */
if(bit[1]) if(adr < ANSWER_LEN &&
+ /* Записывает modbus[adr] значением Data[1]; adr++; массив технологических регистров; слово int на C28x занимает 16 бит. */
!(Desk == dsk_LOAD && (adr == 0x7CU || adr == 0x7DU))) modbus[adr] = Data[1]; adr++;
+ /* Проверяет if(bit[2]) if(adr < ANSWER_LEN и; последующий оператор выполняется только при истинном условии. */
if(bit[2]) if(adr < ANSWER_LEN &&
+ /* Записывает modbus[adr] значением Data[2]; массив технологических регистров; слово int на C28x занимает 16 бит. */
!(Desk == dsk_LOAD && (adr == 0x7CU || adr == 0x7DU))) modbus[adr] = Data[2];
- /* Ôèêñèðóåì ïðèìåí¸ííóþ êîìàíäó äî âûõîäà èç îáðàáîò÷èêà CAN. */
+ /* Фиксируем применённую команду до выхода из обработчика CAN. */
/* A short frame cannot confirm voltage freshness. Service frames
* UMP_MARKER return above and do not refresh this timeout. */
+ /* Проверяет if (ECanMboxes->MBOX1.MSGCTRL.bit.DLC == 8); последующий оператор выполняется только при истинном условии. */
if (ECanMboxes->MBOX1.MSGCTRL.bit.DLC == 8)
+ /* Вызывает Load_voltage_can. Принимает напряжение выбранной нагрузки из достоверных слов CAN и сбрасывает возраст только нужного измерения. */
Load_voltage_can((unsigned int)(hiword >> 16), Data[0], Data[1], Data[2]);
+ /* Вызывает ump_log_can. Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
ump_log_can((unsigned int)(hiword >> 16), Data[0], Data[1], Data[2]);
+ /* Вызывает led2_toggle с аргументами () в текущей последовательности операций. */
led2_toggle();
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Принимает CAN в прерывании, разбирает служебный запрос или передаёт данные штатному протоколу. */
interrupt void CANa_handler(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG95; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG95; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+ /* Вызывает Handlai с аргументами (&ECanaMboxes) в текущей последовательности операций. */
Handlai(&ECanaMboxes);
+ /* Записывает ECanaRegs.CANRMP.all значением 2; представление регистра целым словом без разбиения на битовые поля. */
ECanaRegs.CANRMP.all = 2;
+ /* Устанавливает биты PieCtrlRegs.PIEACK.bit.ACK9 значением 1; данные ACK9. */
PieCtrlRegs.PIEACK.bit.ACK9 |= 1;
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию CANa_reset_err; назначение модуля — штатный eCAN и отдельный служебный обмен УМП/GAS. */
interrupt void CANa_reset_err(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Set interrupt priority:
+ /* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
+ /* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9;
+ /* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority
+ /* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG96; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG96; // Set "group" priority
+ /* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+ /* Записывает ECanaRegs.CANTRR.all значением 1; представление регистра целым словом без разбиения на битовые поля. */
ECanaRegs.CANTRR.all = 1;
+ /* Изменяет счётчик в выражении CanTimeOutErrorTR++; на один для следующего шага. */
CanTimeOutErrorTR++;
+ /* Устанавливает биты PieCtrlRegs.PIEACK.bit.ACK9 значением 1; данные ACK9. */
PieCtrlRegs.PIEACK.bit.ACK9 |= 1;
// Restore registers saved:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================
@@ -296,59 +492,106 @@ interrupt void CANa_reset_err(void)
//===========================================================================
-/* Îäèí âûçîâ îáñëóæèâàåò ìàêñèìóì îäèí êàäð è íèêîãäà íå æä¸ò ACK â öèêëå.
- * Ñíèìîê ôèêñèðóåòñÿ îäèí ðàç íà çàïðîñ: CAN-ôðàãìåíòû íå ñìåøèâàþò
- * çíà÷åíèÿ äî/ïîñëå ïåðåêëþ÷åíèÿ êîëüöåâîãî áàíêà. Íîâûå çàïðîñû çàáèðàåì
- * ïîñëå çàâåðøåíèÿ ïðåäûäóùåãî îòâåòà. GUI äåðæèò òîëüêî îäèí çàïðîñ. */
+/* Один вызов обслуживает максимум один кадр и никогда не ждёт ACK в цикле.
+ * Снимок фиксируется один раз на запрос: CAN-фрагменты не смешивают
+ * значения до/после переключения кольцевого банка. Новые запросы забираем
+ * после завершения предыдущего ответа. GUI держит только один запрос. */
+/* В главном цикле готовит замороженный ответ служебного CAN и отправляет его двухсловными фрагментами. */
void UMP_CAN_service(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved; tag — данные tag; address — адрес; value — данные value; error — ошибка. */
unsigned int saved, tag, address, value, error;
+ /* Объявляет hiword — данные hiword; loword — данные loword. */
uint32_t hiword, loword;
+ /* Проверяет if (ump_can_waiting); последующий оператор выполняется только при истинном условии. */
if (ump_can_waiting) {
+ /* Проверяет if (ECanaRegs.CANTA.all & 4UL); последующий оператор выполняется только при истинном условии. */
if (ECanaRegs.CANTA.all & 4UL) {
+ /* Записывает ECanaRegs.CANTA.all значением 4UL; представление регистра целым словом без разбиения на битовые поля. */
ECanaRegs.CANTA.all = 4UL;
+ /* Записывает ump_can_waiting значением 0; ump CAN waiting. */
ump_can_waiting = 0;
+ /* Проверяет else if ((ECanaRegs.CANAA.all & 4UL) или; последующий оператор выполняется только при истинном условии. */
} else if ((ECanaRegs.CANAA.all & 4UL) ||
+ /* Продолжает список аргументов, полей или выражение ((unsigned long)CpuTimer1.InterruptCount - ump_can_sent_at > 250UL)) {; порядок элементов сохраняется. */
((unsigned long)CpuTimer1.InterruptCount - ump_can_sent_at > 250UL)) {
- /* Íåò ïîäòâåðæäåíèÿ øèíû: îòìåíÿåì òîëüêî ñëóæåáíûé mailbox.
- * GUI îáíàðóæèò íåïîëíûé îòâåò ïî òàéì-àóòó; óïðàâëåíèå MBOX0
- * è ïðè¸ì êîìàíä MBOX1 ïðîäîëæàþòñÿ. */
+ /* Нет подтверждения шины: отменяем только служебный mailbox.
+ * GUI обнаружит неполный ответ по тайм-ауту; управление MBOX0
+ * и приём команд MBOX1 продолжаются. */
+ /* Записывает ECanaRegs.CANTRR.all значением 4UL; представление регистра целым словом без разбиения на битовые поля. */
ECanaRegs.CANTRR.all = 4UL;
- /* Äî ôàêòè÷åñêîãî çàâåðøåíèÿ îòìåíû mailbox íå ïåðåèñïîëüçóåì. */
+ /* До фактического завершения отмены mailbox не переиспользуем. */
+ /* Проверяет if (!(ECanaRegs.CANAA.all & 4UL)) return; последующий оператор выполняется только при истинном условии. */
if (!(ECanaRegs.CANAA.all & 4UL)) return;
+ /* Записывает ECanaRegs.CANAA.all значением 4UL; представление регистра целым словом без разбиения на битовые поля. */
ECanaRegs.CANAA.all = 4UL;
+ /* Записывает ump_can_waiting значением 0; ump CAN waiting. */
ump_can_waiting = 0;
+ /* Записывает ump_can_length значением 0; ump CAN длина. */
ump_can_length = 0;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (ump_can_index >= ump_can_length и ump_can_pending); последующий оператор выполняется только при истинном условии. */
if (ump_can_index >= ump_can_length && ump_can_pending) {
+ /* Записывает saved значением __disable_interrupts(); данные saved. */
saved = __disable_interrupts();
+ /* Записывает tag значением ump_can_tag; address = ump_can_address; value = ump_can_value; данные tag. */
tag = ump_can_tag; address = ump_can_address; value = ump_can_value;
+ /* Записывает ump_can_pending значением 0; флаг ожидающего запроса служебного CAN между ISR и главным циклом. */
ump_can_pending = 0;
+ /* Проверяет if (address >= 0x1300U и address < 0x1308U); последующий оператор выполняется только при истинном условии. */
if (address >= 0x1300U && address < 0x1308U)
+ /* Записывает ump_can_length значением Load_protection_prepare(tag & 0xFF, address, value, ump_can_reply, &error); ump CAN длина. */
ump_can_length = Load_protection_prepare(tag & 0xFF, address, value, ump_can_reply, &error);
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+ /* Проверяет else if (gas167_contains(address)); последующий оператор выполняется только при истинном условии. */
else if (gas167_contains(address))
+ /* Записывает ump_can_length значением gas167_prepare(tag & 0xFF, address, value, 1, ump_can_reply, &error); ump CAN длина. */
ump_can_length = gas167_prepare(tag & 0xFF, address, value, 1, ump_can_reply, &error);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else ump_can_length = ump_can_prepare(tag & 0xFF, address, value, ump_can_reply, &error);
+ /* Записывает ump_can_reply_tag значением (tag & 0xFF00) | error; ump CAN reply tag. */
ump_can_reply_tag = (tag & 0xFF00) | error;
+ /* Записывает ump_can_index значением 0; ump CAN index. */
ump_can_index = 0;
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (ump_can_index >= ump_can_length) return; последующий оператор выполняется только при истинном условии. */
if (ump_can_index >= ump_can_length) return;
- /* Ïåðåä ñëåäóþùèì ôðàãìåíòîì óñòóïàåì øòàòíîé òåëåìåòðèè MBOX0. */
+ /* Перед следующим фрагментом уступаем штатной телеметрии MBOX0. */
+ /* Проверяет if (ECanaRegs.CANTRS.all & 1UL) return; последующий оператор выполняется только при истинном условии. */
if (ECanaRegs.CANTRS.all & 1UL) return;
+ /* Проверяет if (!ump_tms28335_fragment(ump_can_reply, ump_can_length, ump_can_index/2,; последующий оператор выполняется только при истинном условии. */
if (!ump_tms28335_fragment(ump_can_reply, ump_can_length, ump_can_index/2,
+ /* Продолжает список аргументов, полей или выражение ump_can_reply_tag >> 8, ump_can_reply_tag & 255U, &loword, &hiword)) {; порядок элементов сохраняется. */
ump_can_reply_tag >> 8, ump_can_reply_tag & 255U, &loword, &hiword)) {
+ /* Записывает ump_can_length значением 0; ump CAN длина. */
ump_can_length = 0;
+ /* Завершает UMP_CAN_service без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает ECanaRegs.CANTA.all значением 4UL; ECanaRegs.CANAA.all = 4UL; представление регистра целым словом без разбиения на битовые поля. */
ECanaRegs.CANTA.all = 4UL; ECanaRegs.CANAA.all = 4UL;
+ /* Записывает ECanaMboxes.MBOX2.MDH.all значением hiword; представление регистра целым словом без разбиения на битовые поля. */
ECanaMboxes.MBOX2.MDH.all = hiword;
+ /* Записывает ECanaMboxes.MBOX2.MDL.all значением loword; представление регистра целым словом без разбиения на битовые поля. */
ECanaMboxes.MBOX2.MDL.all = loword;
+ /* Записывает ump_can_sent_at значением CpuTimer1.InterruptCount; время последней передачи фрагмента ответа CAN. */
ump_can_sent_at = CpuTimer1.InterruptCount;
+ /* Записывает ECanaRegs.CANTRS.all значением 4UL; представление регистра целым словом без разбиения на битовые поля. */
ECanaRegs.CANTRS.all = 4UL;
+ /* Записывает ump_can_waiting значением 1; ump CAN waiting. */
ump_can_waiting = 1;
+ /* Увеличивает ump_can_index значением 2; ump CAN index. */
ump_can_index += 2;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/filter_bat2.c b/Source/Internal/filter_bat2.c
index a577836..85e3f13 100644
--- a/Source/Internal/filter_bat2.c
+++ b/Source/Internal/filter_bat2.c
@@ -1,18 +1,31 @@
+/* Накопительный фильтр измерительных каналов. Русские пояснения сохранены в UTF-8. */
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Обновляет скользящий фильтр измерительного канала и его накопленные значения. */
float filterbat(FILTERBAT *b, float InpVarCurr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет y — данные y. */
float y;
- y = (b->k_0 * (InpVarCurr + (b->i_0*2) + b->i_1)) +
+ /* Записывает y значением (b->k_0 * (InpVarCurr + (b->i_0*2) + b->i_1)) +; данные y. */
+ y = (b->k_0 * (InpVarCurr + (b->i_0*2) + b->i_1)) +
+ /* Продолжает список аргументов, полей или выражение (b->k_1 * b->u_0) + (b->k_2 * b->u_1);; порядок элементов сохраняется. */
(b->k_1 * b->u_0) + (b->k_2 * b->u_1);
+ /* Записывает b->u_1 значением b->u_0; данные b->u_1. */
b->u_1=b->u_0;
+ /* Записывает b->u_0 значением y; данные b->u_0. */
b->u_0=y;
+ /* Записывает b->i_1 значением b->i_0; данные b->i_1. */
b->i_1=b->i_0;
+ /* Записывает b->i_0 значением InpVarCurr; данные b->i_0. */
b->i_0=InpVarCurr;
-
+
+ /* Завершает filterbat и возвращает y. */
return y;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/gas167.c b/Source/Internal/gas167.c
index 0404dfc..f9b4846 100644
--- a/Source/Internal/gas167.c
+++ b/Source/Internal/gas167.c
@@ -1,63 +1,117 @@
+/* Дополнительная карта GAS 167/v1 только для новой EEPROM M95M02. Русские пояснения сохранены в UTF-8. */
+/* Подключает границы GAS и общий выбор EEPROM; при профиле 0 интерфейс GAS исключён. */
#include "gas167.h"
+/* Весь дополнительный код включается только для физически установленной M95M02; вариант AT25256B не растёт. */
#if EEPROM_M95M02
+/* Подключает тип платы dsk_LOAD и псевдонимы регистров, чтобы сохранять правила обычного Modbus. */
#include "package.h"
+/* Использует существующие технологические регистры без копии массива и без добавления RAM. */
extern int modbus[];
+/* Тип платы нужен для ограничений записи статусов и тайм-аута нагрузки. */
extern int Desk;
+/* Вызывает штатную регистрацию изменения команды; нового регистратора GAS не создаёт. */
extern void ump_log_rs(void);
+/* Постоянный дескриптор из восьми слов описывает карту 167/v1; область 0x5F00..0x5F07 доступна только для чтения. */
static const uint16_t gas167_info[GAS167_INFO_WORDS] = {
+ /* Слова 0..3: сигнатура GA/S1, версия профиля и номер проекта 167. */
0x4741U, 0x5331U, GAS167_PROFILE_VERSION, 167U,
+ /* Слова 4..7: начало 0x5000, длина 128 слов, возможности RTU/CAN/FC06 и размер адресной единицы в словах. */
GAS167_REG_BASE, GAS167_REG_COUNT, GAS167_CAPABILITIES, 1U
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Проверяет одиночный адрес в двух непересекающихся диапазонах; весь блок дополнительно проверяет gas167_prepare. */
int gas167_contains(uint16_t address)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Беззнаковое 16-битное смещение проверяет 0x5000..0x507F: адрес ниже начала даёт большое смещение. */
return (uint16_t)(address - GAS167_REG_BASE) < GAS167_REG_COUNT ||
+ /* Аналогично проверяет 0x5F00..0x5F07; промежуток между диапазонами остаётся недоступным. */
(uint16_t)(address - GAS167_INFO_BASE) < GAS167_INFO_WORDS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Записывает технологическое слово с теми же ограничениями, что и штатная функция Modbus FC06. */
static unsigned gas167_write(uint16_t offset, uint16_t value)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- /* Match the existing native Modbus write policy. These status words
- * cannot be overwritten and an invalid timeout cannot bypass protection. */
+ /* Правила записи совпадают со штатным Modbus: статусы защиты нельзя
+ * перезаписать, а недопустимый тайм-аут не позволяет обойти защиту. */
+ /* На плате LOAD состояния 0x7C/0x7D принадлежат защите; запись отклоняется кодом неверного адреса 2. */
if (Desk == dsk_LOAD && (offset == 0x7CU || offset == 0x7DU)) return 2;
+ /* Для сохраняемого тайм-аута CAN нагрузки применяется проверка диапазона независимо от транспорта. */
if (Desk == dsk_LOAD && offset == 0x52U &&
+ /* Значение 0 или больше 60000 мс недопустимо и возвращает код 3; защиту нельзя отключить такой записью. */
(value == 0U || value > 60000U)) return 3;
- /* C28x int is one register word; reads always expose the raw uint16_t. */
+ /* int C28x занимает одно слово регистра; чтение возвращает исходный uint16_t. */
+ /* Сохраняет 16-битный рисунок регистра: знаковый int C28x занимает ровно одно слово, чтение вернёт uint16_t. */
modbus[offset] = (int)value;
+ /* Запись слова команд 127 вызывает существующий хук регистратора, как обычный Modbus. */
if (offset == 127U) ump_log_rs();
+ /* Возвращает успех записи; исходное правило ошибок Modbus сохраняется. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Готовит FC03/FC06: value — число слов чтения или значение записи, address — глобальный словный адрес. */
unsigned gas167_prepare(unsigned function, uint16_t address, uint16_t value,
+ /* can включает парное чтение CAN; reply вмещает 124 слова, error получает код Modbus; вызывающий код удерживает краткую блокировку IRQ. */
int can, uint16_t *reply, unsigned *error)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Смещение адреса внутри выбранной области; uint16_t задаёт правила вычисления на границах 0xFFFF. */
uint16_t offset;
+ /* Индекс копирования и число доступных слов в выбранной области — 128 или 8. */
unsigned i, available;
+ /* Признак обращения к постоянному дескриптору вместо технологических регистров. */
int info;
+ /* Не разыменовывает отсутствующие выходные буферы; ответ сформировать нельзя. */
if (!reply || !error) return 0;
+ /* Сначала считает запрос успешным; последующие проверки задают конкретный код ошибки. */
*error = 0;
+ /* Выбирает дескриптор только для его восьми допустимых стартовых адресов. */
info = (uint16_t)(address - GAS167_INFO_BASE) < GAS167_INFO_WORDS;
+ /* Переводит глобальный адрес в индекс выбранной области без изменения штатных адресов Modbus. */
offset = (uint16_t)(address - (info ? GAS167_INFO_BASE : GAS167_REG_BASE));
+ /* Определяет границу выбранной области, чтобы следующий запрос не пересёк её конец. */
available = info ? GAS167_INFO_WORDS : GAS167_REG_COUNT;
+ /* GAS поддерживает только чтение FC03 и одиночную запись FC06; остальные функции возвращают исключение 1. */
if (function != 3U && function != 6U) *error = 1;
+ /* Отклоняет адрес вне выбранной области до любого чтения массива; исключение 2. */
else if (offset >= available) *error = 2;
+ /* Для FC06 длина не проверяется: value содержит записываемое слово. */
else if (function == 6U) {
+ /* Дескриптор запрещён для записи; технологическая область проходит проверку прав и тайм-аута. */
*error = info ? 2U : gas167_write(offset, value);
+ /* Чтение RTU допускает 1..124 слова; служебный CAN передаёт пары и поэтому требует чётную ненулевую длину. */
} else if (!value || value > GAS167_MAX_WORDS || (can && (value & 1U))) {
+ /* Неверная длина чтения получает исключение Modbus 3 без частичного ответа. */
*error = 3;
+ /* Проверяет остаток области через вычитание: запрос не выходит за границу, не оборачивается и не читает скрытый modbus[128]. */
} else if (value > available - offset) {
+ /* Пересечение конца области получает исключение Modbus 2; данные ещё не копировались. */
*error = 2;
+ /* Только полностью проверенный запрос попадает в ветвь копирования снимка. */
} else {
- /* Validate the entire block before reading. A block cannot cross a
- * region boundary, wrap at 0xFFFF, or leak the hidden parameter word. */
+ /* Проверяется весь блок до чтения: нельзя пересечь конец области,
+ * перейти через 0xFFFF или получить скрытое слово параметров. */
+ /* Копирует точно запрошенное число слов, не выполняя EEPROM I/O и не выделяя память. */
for (i = 0; i < value; ++i)
+ /* Берёт постоянное слово дескриптора либо сырой 16-битный регистр; согласованность обеспечена блокировкой вызывающего транспорта. */
reply[i] = info ? gas167_info[offset+i] : (uint16_t)modbus[offset+i];
+ /* Для успешного чтения возвращает фактическое число слов; транспорт сам строит RTU или CAN-кадры. */
return value;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Для записи либо ошибки сохраняет исходный адрес, используемый транспортом при формировании ответа. */
reply[0] = address;
+ /* Сохраняет исходное значение или длину рядом с адресом; массив ответа содержит два слова. */
reply[1] = value;
+ /* Возвращает двухсловный результат записи/ошибки; конкретный код ошибки остаётся в error. */
return 2;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Завершает код GAS, доступный только при EEPROM_M95M02=1. */
#endif
diff --git a/Source/Internal/kanal.c b/Source/Internal/kanal.c
index c719f08..1aa3e45 100644
--- a/Source/Internal/kanal.c
+++ b/Source/Internal/kanal.c
@@ -1,183 +1,337 @@
+/* Последовательный вывод данных канала индикации. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
-#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
+#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
#include "message.h"
+/* Подключает "kanal.h": последовательный вывод данных канала индикации. */
#include "kanal.h"
+/* Подключает "pulto.h": обмен и индикация пульта. */
#include "pulto.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "tools.h": настройка внешней памяти и служебные задержки. */
#include "tools.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Объявляет digits — данные digits. Начальное значение задаётся справа от знака равенства. */
int digits[16] = {63,6,91,79,102,109,125,7,127,111,64,0,0,0,121,0};
+/* Объявляет readr — данные readr. Начальное значение задаётся справа от знака равенства. */
int readr[5] = {0x08,0x0C,0x10,0x00,0x04};
+/* Начинает функцию DCLK; назначение модуля — последовательный вывод данных канала индикации. */
void DCLK(int x)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(x) GpioDataRegs.GPASET.bit.GPIO6=1; последующий оператор выполняется только при истинном условии. */
if(x) GpioDataRegs.GPASET.bit.GPIO6=1;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else GpioDataRegs.GPACLEAR.bit.GPIO6=1;
-}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+/* Начинает функцию DOUT; назначение модуля — последовательный вывод данных канала индикации. */
void DOUT(int x)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(x) GpioDataRegs.GPASET.bit.GPIO8=1; последующий оператор выполняется только при истинном условии. */
if(x) GpioDataRegs.GPASET.bit.GPIO8=1;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else GpioDataRegs.GPACLEAR.bit.GPIO8=1;
-}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+/* Условие компиляции CLKMULT==1: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT==1
+/* Задаёт POWS0 = 0L; данные POWS0. */
#define POWS0 0L
+/* Задаёт POWS1 = 10L; данные POWS1. */
#define POWS1 10L
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции CLKMULT==2: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT==2
+/* Задаёт POWS0 = 0L; данные POWS0. */
#define POWS0 0L
+/* Задаёт POWS1 = 30L; данные POWS1. */
#define POWS1 30L
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции CLKMULT==3: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT==3
+/* Задаёт POWS0 = 1L; данные POWS0. */
#define POWS0 1L
+/* Задаёт POWS1 = 50L; данные POWS1. */
#define POWS1 50L
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции CLKMULT==4: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT==4
+/* Задаёт POWS0 = 2L; данные POWS0. */
#define POWS0 2L
+/* Задаёт POWS1 = 60L; данные POWS1. */
#define POWS1 60L
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Условие компиляции CLKMULT==5: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT==5
+/* Задаёт POWS0 = 4L; данные POWS0. */
#define POWS0 4L
+/* Задаёт POWS1 = 80L; данные POWS1. */
#define POWS1 80L
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Начинает функцию RESET; назначение модуля — последовательный вывод данных канала индикации. */
void RESET()
-{
- DCLK(0);
-#if POWS1>0
- DSP28x_usDelay(POWS1);
-#endif
- DOUT(1);
-#if POWS1>0
- DSP28x_usDelay(POWS1);
-#endif
- DOUT(0);
-#if POWS1>0
- DSP28x_usDelay(POWS1);
-#endif
-}
-
-void SENDBIT(int x)
-{
- DOUT(x); DCLK(1);
-#if POWS0>0
- DSP28x_usDelay(POWS0);
-#endif
- DOUT(0);
- DSP28x_usDelay(POWS0+1);
- DCLK(0);
-#if POWS1>0
- DSP28x_usDelay(POWS1);
-#endif
-}
-
-void kanal_Send(int adr, long dat, int dot)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает DCLK с аргументами (0) в текущей последовательности операций. */
+ DCLK(0);
+/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
+#if POWS1>0
+ /* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
+ DSP28x_usDelay(POWS1);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+ /* Вызывает DOUT с аргументами (1) в текущей последовательности операций. */
+ DOUT(1);
+/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
+#if POWS1>0
+ /* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
+ DSP28x_usDelay(POWS1);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+ /* Вызывает DOUT с аргументами (0) в текущей последовательности операций. */
+ DOUT(0);
+/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
+#if POWS1>0
+ /* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
+ DSP28x_usDelay(POWS1);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+
+/* Начинает функцию SENDBIT; назначение модуля — последовательный вывод данных канала индикации. */
+void SENDBIT(int x)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Вызывает DOUT с аргументами (x); DCLK(1) в текущей последовательности операций. */
+ DOUT(x); DCLK(1);
+/* Условие компиляции POWS0>0: выбранный блок включается в текущий вариант прошивки. */
+#if POWS0>0
+ /* Вызывает DSP28x_usDelay с аргументами (POWS0) в текущей последовательности операций. */
+ DSP28x_usDelay(POWS0);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+ /* Вызывает DOUT с аргументами (0) в текущей последовательности операций. */
+ DOUT(0);
+ /* Вызывает DSP28x_usDelay с аргументами (POWS0+1) в текущей последовательности операций. */
+ DSP28x_usDelay(POWS0+1);
+ /* Вызывает DCLK с аргументами (0) в текущей последовательности операций. */
+ DCLK(0);
+/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
+#if POWS1>0
+ /* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
+ DSP28x_usDelay(POWS1);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+
+/* Начинает функцию kanal_Send; назначение модуля — последовательный вывод данных канала индикации. */
+void kanal_Send(int adr, long dat, int dot)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Объявляет Word — слово; data — данные; aliq_part — данные aliq_part; dg — данные dg. */
long Word,data,aliq_part,dg[4];
+ /* Объявляет i — данные i; j — данные j; bit — представление регистра отдельными битовыми полями; byt — данные byt; addr — данные addr. Начальное значение задаётся справа от знака равенства. */
int i,j,bit,byt,addr,sgn=0,punkt=0,aliq_len=0,full_len, isdot=0;
- if(adr>1) // Ëàìïî÷êè
+ /* Проверяет if(adr>1); последующий оператор выполняется только при истинном условии. */
+ if(adr>1) // Лампочки
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает Word значением dat; слово. */
Word =dat;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(dat<0) sgn=1; последующий оператор выполняется только при истинном условии. */
if(dat<0) sgn=1;
+ /* Записывает data значением labs(dat); данные. */
data = labs(dat);
+ /* Проверяет if(dot>=0 и dot<4) isdot = 1; последующий оператор выполняется только при истинном условии. */
if(dot>=0 && dot<4) isdot = 1;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else dot=0;
+ /* Записывает aliq_part значением data; данные aliq_part. */
aliq_part = data;
+ /* Цикл for(i=0;i0). */
while(dat>0)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Делит dat значением 10; данные dat. */
aliq_len++; dat/=10;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает dat значением data; данные dat. */
dat = data;
-
+
+ /* Записывает full_len значением aliq_len+sgn; данные full_len. */
full_len = aliq_len+sgn;
+ /* Проверяет if(full_len==0) full_len=1; последующий оператор выполняется только при истинном условии. */
if(full_len==0) full_len=1;
+ /* Увеличивает full_len значением dot; данные full_len. */
full_len += dot;
-
+
+ /* Цикл for(i=0; i<(full_len-4);i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0; i<(full_len-4);i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Начинает цикл с проверкой условия после тела: первый проход выполняется всегда. */
dot--; dat/=10;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(dot<0) dot=0; последующий оператор выполняется только при истинном условии. */
if(dot<0) dot=0;
+ /* Записывает punkt значением 1<0;i--); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=3;i>0;i--)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if((dg[i]==0) и (i!=dot)); последующий оператор выполняется только при истинном условии. */
if((dg[i]==0)&&(i!=dot))
- dg[i]=0xF; // Ýòî çíà÷èò ïóñòî
+ /* Записывает dg[i] значением 0xF; данные dg. */
+ dg[i]=0xF; // Это значит пусто
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else break;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
+
+ /* Проверяет if(sgn); последующий оператор выполняется только при истинном условии. */
if(sgn)
+ /* Цикл for(i=1;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=1;i<4;i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if( (dg[i]==0xF) или (i==3)); последующий оператор выполняется только при истинном условии. */
if( (dg[i]==0xF)||(i==3))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- dg[i]=0xA; // Ýòî çíà÷èò ìèíóñ
+ /* Записывает dg[i] значением 0xA; данные dg. */
+ dg[i]=0xA; // Это значит минус
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+ /* Цикл for(i=0;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<4;i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает dg[i] значением digits[dg[i]]; данные dg. */
dg[i] = digits[dg[i]];
+ /* Проверяет if((punkt>>i)&1) dg[i]+= 128; последующий оператор выполняется только при истинном условии. */
if((punkt>>i)&1) dg[i]+= 128;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает Word значением ((dg[0] ) & 0x000000FF) | ((dg[1]<<8 ) & 0x0000FF00) |; слово. */
Word = ((dg[0] ) & 0x000000FF) | ((dg[1]<<8 ) & 0x0000FF00) |
+ /* Продолжает список аргументов, полей или выражение ((dg[2]<<16) & 0x00FF0000) | ((dg[3]<<24) & 0xFF000000);; порядок элементов сохраняется. */
((dg[2]<<16) & 0x00FF0000) | ((dg[3]<<24) & 0xFF000000);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает addr значением readr[adr]; данные addr. */
addr = readr[adr];
+ /* Цикл for (i=0;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for (i=0;i<4;i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(addr>0x10) break; последующий оператор выполняется только при истинном условии. */
if(addr>0x10) break;
+ /* Цикл for (j=0;j<8;j++); задаёт начальное значение, условие продолжения и шаг перебора. */
for (j=0;j<8;j++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает bit значением Word & 1; Word >>= 1; представление регистра отдельными битовыми полями. */
bit = Word & 1; Word >>= 1;
+ /* Вызывает SENDBIT с аргументами (bit) в текущей последовательности операций. */
SENDBIT(bit);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- byt = addr;
+ /* Записывает byt значением addr; данные byt. */
+ byt = addr;
+ /* Цикл for (j=0;j<6;j++); задаёт начальное значение, условие продолжения и шаг перебора. */
for (j=0;j<6;j++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает bit значением byt & 1; byt >>= 1; представление регистра отдельными битовыми полями. */
bit = byt & 1; byt >>= 1;
+ /* Вызывает SENDBIT с аргументами (bit) в текущей последовательности операций. */
SENDBIT(bit);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Изменяет счётчик в выражении addr++; на один для следующего шага. */
addr++;
+ /* Вызывает RESET с аргументами () в текущей последовательности операций. */
RESET();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/log_to_mem.c b/Source/Internal/log_to_mem.c
index b491ddd..f03268a 100644
--- a/Source/Internal/log_to_mem.c
+++ b/Source/Internal/log_to_mem.c
@@ -1,296 +1,533 @@
+/* Двухбанковый регистратор событий нагрузки во внешней RAM. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h"
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
#include "message.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Подключает "DAC.h": выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
#include "DAC.h"
+/* Подключает "ADC.h": настройка АЦП, обработка преобразований и первичная фильтрация измерений. */
#include "ADC.h"
+/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "log_to_mem.h"
+/* Объявляет no_write — no запись. Начальное значение задаётся справа от знака равенства. */
int no_write = 0,
- never_write = 0; // Ôëàãè, ÷òîáû íå ïèñàòü (åñëè ÷òî)
+ /* Записывает never_write значением 0; never запись. */
+ never_write = 0; // Флаги, чтобы не писать (если что)
+/* Указание компилятору DATA_SECTION(logs_block,".logg");: размещение данных или настройка обработки объявлений. */
#pragma DATA_SECTION(logs_block,".logg");
+/* Объявляет logs_block — выделенный массив внешней RAM для двух банков регистратора. */
unsigned int logs_block[0xFA00];
+/* Объявляет Log — данные Log. */
LOG Log;
+/* Объявляет flog — данные flog. Начальное значение задаётся справа от знака равенства. */
unsigned int flog=0;
-// Î÷èùåíèå ïàìàòè, ãäå ëîãè ëåæàò
+// Очищение памати, где логи лежат
+/* Обнуляет выделенный диапазон внешней RAM журнала и задаёт границы кольцевого буфера. */
void clear_mem()
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Объявляет i — данные i. */
unsigned long i;
-
+
+ /* Записывает Log.Start значением LOG_PAGE_START; данные Start. */
Log.Start = LOG_PAGE_START;
+ /* Записывает Log.Finis значением LOG_PAGE_START + LOG_PAGE_LEN; данные Finis. */
Log.Finis = LOG_PAGE_START + LOG_PAGE_LEN;
+ /* Записывает Log.Adres значением Log.Start; данные Adres. */
Log.Adres = Log.Start;
+ /* Записывает Log.Circl значением 0; данные Circl. */
Log.Circl = 0;
-
+
+ /* Цикл for (i=Log.Start; i= UMP_LOG_CAPACITY - UMP_POST_POINTS); последующий оператор выполняется только при истинном условии. */
if (ump_count >= UMP_LOG_CAPACITY - UMP_POST_POINTS)
+ /* Записывает ump_count значением UMP_LOG_CAPACITY - UMP_POST_POINTS - 1; число сохранённых точек в активном банке. */
ump_count = UMP_LOG_CAPACITY - UMP_POST_POINTS - 1;
+ /* Записывает ump_post значением UMP_POST_POINTS; данные ump_post. */
ump_post = UMP_POST_POINTS;
+ /* Устанавливает биты reason значением 0x100; данные reason. */
reason |= 0x100;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает ump_prev_commands значением commands; ump_prev_inputs = inputs; ump_prev_outputs = outputs; данные ump_prev_commands. */
ump_prev_commands = commands; ump_prev_inputs = inputs; ump_prev_outputs = outputs;
/* Every stored point counts, including CAN and I/O, except the trigger. */
+ /* Проверяет if (ump_post и !(reason & 0x100) и --ump_post == 0) reason = 5; последующий оператор выполняется только при истинном условии. */
if (ump_post && !(reason & 0x100) && --ump_post == 0) reason = 5;
+ /* Записывает p значением logs_block + ((unsigned long)ump_bank * UMP_LOG_CAPACITY + ump_next) * UMP_LOG_WORDS; данные p. */
p = logs_block + ((unsigned long)ump_bank * UMP_LOG_CAPACITY + ump_next) * UMP_LOG_WORDS;
+ /* Записывает p[0] значением (unsigned int)ump_time; p[1] = (unsigned int)(ump_time >> 16); данные p. */
p[0] = (unsigned int)ump_time; p[1] = (unsigned int)(ump_time >> 16);
+ /* Записывает p[2] значением reason; p[3] = commands; данные p. */
p[2] = reason; p[3] = commands;
+ /* Записывает p[4] значением inputs; p[5] = outputs; данные p. */
p[4] = inputs; p[5] = outputs;
+ /* Записывает p[6] значением (unsigned int)IMPowse; p[7] = (unsigned int)WAKEpowse; данные p. */
p[6] = (unsigned int)IMPowse; p[7] = (unsigned int)WAKEpowse;
+ /* Записывает p[8] значением modbus[0x7B]; p[9] = modbus[0x1C]; данные p. */
p[8] = modbus[0x7B]; p[9] = modbus[0x1C];
+ /* Цикл for (i = 0; i < 4; i++) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 4; i++) { p[10+i] = sens_data[i]; p[14+i] = modbus[i]; }
+ /* Записывает p[18] значением ump_can_header; данные p. */
p[18] = ump_can_header;
+ /* Записывает p[19] значением ump_can_data[0]; p[20] = ump_can_data[1]; p[21] = ump_can_data[2]; данные p. */
p[19] = ump_can_data[0]; p[20] = ump_can_data[1]; p[21] = ump_can_data[2];
+ /* Записывает p[22] значением ump_can_count; p[23] = CanTimeOutErrorTR; данные p. */
p[22] = ump_can_count; p[23] = CanTimeOutErrorTR;
- /* Èñõîäíûå óñòàâêè — ìÀ; ýôôåêòèâíûå óñòàâêè ïîñëå îãðàíè÷åíèé — 0.1 ìÀ.
- * p[8] — îòïðàâëåííûé êîä, à p[9] — ðàñ÷¸òíîå çàäàíèå, ÍÅ èçìåðåíèå òîêà. */
+ /* Исходные уставки — мА; эффективные уставки после ограничений — 0.1 мА.
+ * p[8] — отправленный код, а p[9] — расчётное задание, НЕ измерение тока. */
+ /* Записывает p[24] значением DAC_go; p[25] = DAC_stop; данные p. */
p[24] = DAC_go; p[25] = DAC_stop;
+ /* Записывает p[26] значением DAC_min(); p[27] = DAC_max(); p[28] = DAC_cal(); данные p. */
p[26] = DAC_min(); p[27] = DAC_max(); p[28] = DAC_cal();
+ /* Записывает p[29] значением DAC_04; p[30] = DAC_20; данные p. */
p[29] = DAC_04; p[30] = DAC_20;
+ /* Записывает p[31] значением ump_dac_ramp; p[32] = ump_dac_duration; данные p. */
p[31] = ump_dac_ramp; p[32] = ump_dac_duration;
+ /* Записывает p[33] значением ump_dac_go10; p[34] = ump_dac_stop10; p[35] = ump_dac_position; данные p. */
p[33] = ump_dac_go10; p[34] = ump_dac_stop10; p[35] = ump_dac_position;
+ /* Цикл for (i = 0; i < 4; i++) p[36+i] = ADC_table[i];; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 4; i++) p[36+i] = ADC_table[i];
+ /* Записывает p[40] значением ump_pm67_voltage[0]; p[41] = ump_pm67_voltage[1]; данные p. */
p[40] = ump_pm67_voltage[0]; p[41] = ump_pm67_voltage[1];
+ /* Изменяет счётчик в выражении ump_next++; на один для следующего шага. */
ump_next++;
+ /* Проверяет if (ump_next == UMP_LOG_CAPACITY) ump_next = 0; последующий оператор выполняется только при истинном условии. */
if (ump_next == UMP_LOG_CAPACITY) ump_next = 0;
+ /* Проверяет if (ump_count < UMP_LOG_CAPACITY) ump_count++; последующий оператор выполняется только при истинном условии. */
if (ump_count < UMP_LOG_CAPACITY) ump_count++;
+ /* Изменяет счётчик в выражении ump_sequence++; на один для следующего шага. */
ump_sequence++;
+ /* Проверяет if (reason == 5) ump_freeze(); последующий оператор выполняется только при истинном условии. */
if (reason == 5) ump_freeze();
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Çàâåðø¸ííûé áàíê áîëüøå íå èçìåíÿåòñÿ äî ñëåäóþùåãî îòêëþ÷åíèÿ.
- * Íîìåð ïîêîëåíèÿ ïîçâîëÿåò GUI îáíàðóæèòü çàìåíó àðõèâà âî âðåìÿ ÷òåíèÿ. */
+/* Завершённый банк больше не изменяется до следующего отключения.
+ * Номер поколения позволяет GUI обнаружить замену архива во время чтения. */
+/* Замораживает заполненный банк и переключает рабочий банк, сохраняя доступный архив. */
static void ump_freeze(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает ump_archive_bank значением ump_bank; индекс замороженного банка, доступного для чтения. */
ump_archive_bank = ump_bank;
+ /* Записывает ump_archive_count значением ump_count; ump_archive_next = ump_next; ump archive число. */
ump_archive_count = ump_count; ump_archive_next = ump_next;
+ /* Изменяет счётчик в выражении ump_generation++; на один для следующего шага. */
ump_generation++;
+ /* Инвертирует биты ump_bank значением 1; индекс активного банка регистратора. */
ump_bank ^= 1;
+ /* Записывает ump_count значением 0; ump_next = 0; ump_post = 0; число сохранённых точек в активном банке. */
ump_count = 0; ump_next = 0; ump_post = 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Продвигает время регистратора в Timer1 и снимает записи с заданным периодом. */
void ump_log_tick(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved. Начальное значение задаётся справа от знака равенства. */
unsigned int saved = __disable_interrupts();
+ /* Проверяет if (ump_state == 1); последующий оператор выполняется только при истинном условии. */
if (ump_state == 1) {
+ /* Изменяет счётчик в выражении ump_time++; на один для следующего шага. */
ump_time++;
+ /* Проверяет if (++ump_divider >= ump_period); последующий оператор выполняется только при истинном условии. */
if (++ump_divider >= ump_period) { ump_divider = 0; ump_capture(1); }
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Äîïîëíèòåëüíûé ñíèìîê òîëüêî ïðè èçìåíåíèè êîìàíä, âõîäîâ èëè âûõîäîâ.
- * Ýòî íå çàìåíÿåò ïåðèîäè÷åñêóþ çàïèñü àíàëîãîâûõ âåëè÷èí â òàéìåðå. */
+/* Дополнительный снимок только при изменении команд, входов или выходов.
+ * Это не заменяет периодическую запись аналоговых величин в таймере. */
+/* Обслуживает изменения дискретных входов и выходов из главного цикла. */
void ump_log_io(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved. */
unsigned int saved;
+ /* Проверяет if (ump_state != 1 или Desk != dsk_LOAD) return; последующий оператор выполняется только при истинном условии. */
if (ump_state != 1 || Desk != dsk_LOAD) return;
+ /* Записывает saved значением __disable_interrupts(); данные saved. */
saved = __disable_interrupts();
+ /* Проверяет if (Commands != ump_prev_commands или ump_inputs() != ump_prev_inputs или; последующий оператор выполняется только при истинном условии. */
if (Commands != ump_prev_commands || ump_inputs() != ump_prev_inputs ||
+ /* Вызывает ump_outputs. Собирает фактические состояния GPIO выходов START/STOP/разрешения нагрузки. */
ump_outputs() != ump_prev_outputs) ump_capture(3);
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Âûçûâàåòñÿ ïîñëå ïðèìåíåíèÿ ñëîâ ïðèíÿòîãî CAN-êàäðà: ñíèìîê ñîäåðæèò
- * íîâûå êîìàíäû, à òàêæå èñõîäíûé àäðåñ/ìàñêó è âñå òðè ñëîâà êàäðà. */
+/* Вызывается после применения слов принятого CAN-кадра: снимок содержит
+ * новые команды, а также исходный адрес/маску и все три слова кадра. */
+/* Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
void ump_log_can(unsigned int header, unsigned int a, unsigned int b, unsigned int c)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved; i — данные i; address — адрес; mask — маска; data — данные. */
unsigned int saved, i, address, mask, data[3];
+ /* Проверяет if (Desk != dsk_LOAD) return; последующий оператор выполняется только при истинном условии. */
if (Desk != dsk_LOAD) return;
+ /* Записывает saved значением __disable_interrupts(); данные saved. */
saved = __disable_interrupts();
+ /* Записывает data[0] значением a; data[1] = b; data[2] = c; данные. */
data[0] = a; data[1] = b; data[2] = c;
+ /* Записывает address значением header & 0x1FFFU; адрес. */
address = header & 0x1FFFU;
+ /* Записывает mask значением 0x8000U; маска. */
mask = 0x8000U;
/* Track reception even while recording is stopped. Each mask bit
* refers to its own address, including disabled words in between. */
+ /* Цикл for (i = 0; i < 3; i++, address++, mask >>= 1) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 3; i++, address++, mask >>= 1) {
+ /* Проверяет if (!(header & mask)) continue; последующий оператор выполняется только при истинном условии. */
if (!(header & mask)) continue;
+ /* Проверяет if (address == 305U) ump_pm67_voltage[0] = data[i]; последующий оператор выполняется только при истинном условии. */
if (address == 305U) ump_pm67_voltage[0] = data[i];
+ /* Проверяет if (address == 8U) ump_pm67_voltage[1] = data[i]; последующий оператор выполняется только при истинном условии. */
if (address == 8U) ump_pm67_voltage[1] = data[i];
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (ump_state != 1); последующий оператор выполняется только при истинном условии. */
if (ump_state != 1) { __restore_interrupts(saved); return; }
+ /* Записывает ump_can_header значением header; ump CAN header. */
ump_can_header = header;
+ /* Записывает ump_can_data[0] значением a; ump_can_data[1] = b; ump_can_data[2] = c; ump CAN данные. */
ump_can_data[0] = a; ump_can_data[1] = b; ump_can_data[2] = c;
+ /* Изменяет счётчик в выражении ump_can_count++; на один для следующего шага. */
ump_can_count++;
+ /* Вызывает ump_capture. Создаёт одну запись состояния: входы, выходы, команды, напряжения и параметры тока нагрузки. */
ump_capture(2);
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Регистрирует изменение слова команд после записи по последовательному интерфейсу. */
void ump_log_rs(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved. Начальное значение задаётся справа от знака равенства. */
unsigned int saved = __disable_interrupts();
+ /* Вызывает ump_capture. Создаёт одну запись состояния: входы, выходы, команды, напряжения и параметры тока нагрузки. */
ump_capture(4);
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Óïðàâëåíèå æóðíàëîì îòäåëåíî îò òåõíîëîãè÷åñêèõ êîìàíä: íà÷àëî çàïèñè
- * ÍÅ çàïóñêàåò ÓÌÏ. Âûáîð àðõèâà íå îñòàíàâëèâàåò òåêóùóþ çàïèñü. */
+/* Управление журналом отделено от технологических команд: начало записи
+ * НЕ запускает УМП. Выбор архива не останавливает текущую запись. */
+/* Применяет допустимые команды управления регистратором, сохраняя ограничения адресов. */
int ump_log_write(unsigned int address, unsigned int value)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет saved — данные saved; valid — данные valid. Начальное значение задаётся справа от знака равенства. */
unsigned int saved, valid = 1;
+ /* Записывает saved значением __disable_interrupts(); данные saved. */
saved = __disable_interrupts();
+ /* Проверяет if (address == UMP_LOG_BASE и value == 0); последующий оператор выполняется только при истинном условии. */
if (address == UMP_LOG_BASE && value == 0) {
+ /* Записывает ump_state значением 3; ump_post = 0; данные ump_state. */
ump_state = 3; ump_post = 0;
+ /* Проверяет else if (address == UMP_LOG_BASE и value == 1 и Desk == dsk_LOAD и READY и ump_state != 1); последующий оператор выполняется только при истинном условии. */
} else if (address == UMP_LOG_BASE && value == 1 && Desk == dsk_LOAD && READY && ump_state != 1) {
+ /* Записывает ump_count значением 0; ump_next = 0; ump_cursor = 0; ump_divider = 0; ump_post = 0; число сохранённых точек в активном банке. */
ump_count = 0; ump_next = 0; ump_cursor = 0; ump_divider = 0; ump_post = 0;
+ /* Записывает ump_source значением 0; данные ump_source. */
ump_source = 0;
+ /* Записывает ump_prev_commands значением Commands; данные ump_prev_commands. */
ump_prev_commands = Commands;
+ /* Записывает ump_prev_inputs значением ump_inputs(); ump_prev_outputs = ump_outputs(); данные ump_prev_inputs. */
ump_prev_inputs = ump_inputs(); ump_prev_outputs = ump_outputs();
+ /* Записывает no_write значением 0; never_write = 0; no запись. */
no_write = 0; never_write = 0;
+ /* Записывает ump_state значением 1; данные ump_state. */
ump_state = 1;
+ /* Вызывает ump_capture. Создаёт одну запись состояния: входы, выходы, команды, напряжения и параметры тока нагрузки. */
ump_capture(1);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет else if (address == UMP_LOG_BASE+1 и ump_state != 1 и value >= 1 и value <= 1000); последующий оператор выполняется только при истинном условии. */
else if (address == UMP_LOG_BASE+1 && ump_state != 1 && value >= 1 && value <= 1000)
+ /* Записывает ump_period значением value; период записи регистратора в миллисекундных тактах. */
ump_period = value;
+ /* Проверяет else if (address == UMP_LOG_BASE+2 и value < UMP_LOG_CAPACITY); последующий оператор выполняется только при истинном условии. */
else if (address == UMP_LOG_BASE+2 && value < UMP_LOG_CAPACITY)
+ /* Записывает ump_cursor значением value; данные ump_cursor. */
ump_cursor = value;
+ /* Проверяет else if (address == UMP_LOG_BASE+3 и value <= 1) ump_source = value; последующий оператор выполняется только при истинном условии. */
else if (address == UMP_LOG_BASE+3 && value <= 1) ump_source = value;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else valid = 0;
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+ /* Завершает ump_log_write и возвращает valid. */
return valid;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Ïðåîáðàçîâàíèå õðîíîëîãè÷åñêîãî èíäåêñà â ôèçè÷åñêóþ ïîçèöèþ êîëüöà.
- * Äëÿ àðõèâà ñîõðàíåíû ñîáñòâåííûå count/next, íåçàâèñèìûå îò æèâîãî áàíêà. */
+/* Преобразование хронологического индекса в физическую позицию кольца.
+ * Для архива сохранены собственные count/next, независимые от живого банка. */
+/* Начинает функцию ump_word; назначение модуля — двухбанковый регистратор событий нагрузки во внешней RAM. */
static unsigned int ump_word(unsigned int archived, unsigned int record, unsigned int word)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет count — число; ump_count — число сохранённых точек в активном банке. Начальное значение задаётся справа от знака равенства. */
unsigned int count = archived ? ump_archive_count : ump_count;
+ /* Объявляет next — данные next; ump_next — данные ump_next. Начальное значение задаётся справа от знака равенства. */
unsigned int next = archived ? ump_archive_next : ump_next;
+ /* Объявляет bank — данные bank; ump_bank — индекс активного банка регистратора. Начальное значение задаётся справа от знака равенства. */
unsigned int bank = archived ? ump_archive_bank : ump_bank;
+ /* Объявляет slot — данные slot. */
unsigned int slot;
+ /* Проверяет if (record >= count) return 0; последующий оператор выполняется только при истинном условии. */
if (record >= count) return 0;
+ /* Записывает slot значением next + UMP_LOG_CAPACITY - count + record; данные slot. */
slot = next + UMP_LOG_CAPACITY - count + record;
+ /* Повторяет или ожидает, пока выполняется while (slot >= UMP_LOG_CAPACITY) slot -= UMP_LOG_CAPACITY;. */
while (slot >= UMP_LOG_CAPACITY) slot -= UMP_LOG_CAPACITY;
+ /* Завершает ump_word и возвращает logs_block[((unsigned long)bank * UMP_LOG_CAPACITY + slot) * UMP_LOG_WORDS + word]. */
return logs_block[((unsigned long)bank * UMP_LOG_CAPACITY + slot) * UMP_LOG_WORDS + word];
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Âåñü Modbus-áëîê ÷èòàåòñÿ âûçûâàþùèì êîäîì ïîä îäíîé áëîêèðîâêîé IRQ.
- * Ïîýòîìó timestamp/äàííûå è çàãîëîâîê îíëàéí-áëîêà îòíîñÿòñÿ ê îäíîìó
- * ñîñòîÿíèþ êîëüöà, äàæå åñëè â ýòîò ìîìåíò ïðèõîäèò íîâàÿ CAN-êîìàíäà. */
+/* Весь Modbus-блок читается вызывающим кодом под одной блокировкой IRQ.
+ * Поэтому timestamp/данные и заголовок онлайн-блока относятся к одному
+ * состоянию кольца, даже если в этот момент приходит новая CAN-команда. */
+/* Проверяет область чтения регистратора и возвращает слова состояния либо архивной записи. */
unsigned int ump_log_read(unsigned int address)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет offset — данные offset; count — число. */
unsigned int offset, count;
+ /* Объявляет first — данные first. */
unsigned long first;
+ /* Вызывает switch с аргументами (address) { в текущей последовательности операций. */
switch (address) {
+ /* Ветвь выбора для UMP_LOG_BASE; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE: return 0x554D;
+ /* Ветвь выбора для UMP_LOG_BASE+1; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+1: return 3;
+ /* Ветвь выбора для UMP_LOG_BASE+2; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+2: return ump_source ? 3 : ump_state;
+ /* Ветвь выбора для UMP_LOG_BASE+3; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+3: return ump_source ? ump_archive_count : ump_count;
+ /* Ветвь выбора для UMP_LOG_BASE+4; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+4: return UMP_LOG_WORDS;
+ /* Ветвь выбора для UMP_LOG_BASE+5; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+5: return UMP_LOG_CAPACITY;
+ /* Ветвь выбора для UMP_LOG_BASE+6; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+6: return ump_period;
+ /* Ветвь выбора для UMP_LOG_BASE+7; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+7: return (unsigned int)ump_time;
+ /* Ветвь выбора для UMP_LOG_BASE+8; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+8: return (unsigned int)(ump_time >> 16);
+ /* Ветвь выбора для UMP_LOG_BASE+9; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+9: return Desk;
+ /* Ветвь выбора для UMP_LOG_BASE+10; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+10: return Mode;
+ /* Ветвь выбора для UMP_LOG_BASE+11; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+11: return (unsigned int)READY_FREQ;
+ /* Ветвь выбора для UMP_LOG_BASE+12; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+12: return ump_generation;
+ /* Ветвь выбора для UMP_LOG_BASE+13; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+13: return ump_archive_count;
/* Preserve the legacy millisecond status field as an upper estimate.
* Additional event records may finish the post interval sooner. */
+ /* Ветвь выбора для UMP_LOG_BASE+14; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+14:
+ /* Записывает first значением (unsigned long)ump_post * ump_period; данные first. */
first = (unsigned long)ump_post * ump_period;
+ /* Завершает ump_log_read и возвращает first > 65535UL ? 65535U : (unsigned int)first. */
return first > 65535UL ? 65535U : (unsigned int)first;
+ /* Ветвь выбора для UMP_LOG_BASE+15; выполняется при совпадении селектора switch. */
case UMP_LOG_BASE+15: return ump_state;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (address >= UMP_LOG_DATA и address < UMP_LOG_DATA+120 и (ump_source или ump_state != 1)); последующий оператор выполняется только при истинном условии. */
if (address >= UMP_LOG_DATA && address < UMP_LOG_DATA+120 && (ump_source || ump_state != 1)) {
+ /* Записывает offset значением address - UMP_LOG_DATA; данные offset. */
offset = address - UMP_LOG_DATA;
+ /* Завершает ump_log_read и возвращает ump_word(ump_source, ump_cursor + offset / UMP_LOG_WORDS, offset % UMP_LOG_WORDS). */
return ump_word(ump_source, ump_cursor + offset / UMP_LOG_WORDS, offset % UMP_LOG_WORDS);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- /* Ïîñëåäíèå òðè çàïèñè äëÿ îíëàéí-ãðàôèêà, áåç îñòàíîâêè è áåç
- * èçìåíåíèÿ êóðñîðà àðõèâíîãî ÷òåíèÿ. Ïåðâûå äâà ñëîâà — èõ íîìåð. */
+ /* Последние три записи для онлайн-графика, без остановки и без
+ * изменения курсора архивного чтения. Первые два слова — их номер. */
+ /* Проверяет if (address >= UMP_LOG_LIVE и address < UMP_LOG_LIVE+124); последующий оператор выполняется только при истинном условии. */
if (address >= UMP_LOG_LIVE && address < UMP_LOG_LIVE+124) {
+ /* Записывает count значением ump_count < UMP_LOG_LIVE_RECORDS ? ump_count : UMP_LOG_LIVE_RECORDS; число. */
count = ump_count < UMP_LOG_LIVE_RECORDS ? ump_count : UMP_LOG_LIVE_RECORDS;
+ /* Записывает first значением ump_sequence - count; данные first. */
first = ump_sequence - count;
+ /* Записывает offset значением address - UMP_LOG_LIVE; данные offset. */
offset = address - UMP_LOG_LIVE;
+ /* Проверяет if (offset == 0) return (unsigned int)first; последующий оператор выполняется только при истинном условии. */
if (offset == 0) return (unsigned int)first;
+ /* Проверяет if (offset == 1) return (unsigned int)(first >> 16); последующий оператор выполняется только при истинном условии. */
if (offset == 1) return (unsigned int)(first >> 16);
+ /* Проверяет if (offset == 2) return count; последующий оператор выполняется только при истинном условии. */
if (offset == 2) return count;
+ /* Проверяет if (offset == 3) return ump_generation; последующий оператор выполняется только при истинном условии. */
if (offset == 3) return ump_generation;
+ /* Уменьшает offset значением 4; данные offset. */
offset -= 4;
+ /* Проверяет if (offset / UMP_LOG_WORDS < count); последующий оператор выполняется только при истинном условии. */
if (offset / UMP_LOG_WORDS < count)
+ /* Завершает ump_log_read и возвращает ump_word(0, ump_count - count + offset / UMP_LOG_WORDS, offset % UMP_LOG_WORDS). */
return ump_word(0, ump_count - count + offset / UMP_LOG_WORDS, offset % UMP_LOG_WORDS);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Завершает ump_log_read и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/main.c b/Source/Internal/main.c
index e731770..261f77e 100644
--- a/Source/Internal/main.c
+++ b/Source/Internal/main.c
@@ -1,217 +1,384 @@
+/* Порядок запуска периферии и обслуживание команд в главном цикле. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "cntrl_adr.h": собственный и универсальный адрес устройства. */
#include "cntrl_adr.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "BIOS_DSP.h": настройки и интерфейс BIOS_DSP. */
#include "BIOS_DSP.h"
+/* Подключает "Message.h": настройки и интерфейс Message. */
#include "Message.h"
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "spise2p.h": драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
#include "spise2p.h"
+/* Подключает "tools.h": настройка внешней памяти и служебные задержки. */
#include "tools.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Подключает "ADC.h": настройка АЦП, обработка преобразований и первичная фильтрация измерений. */
#include "ADC.h"
+/* Подключает "DAC.h": выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
#include "DAC.h"
+/* Подключает "ecan.h": штатный eCAN и отдельный служебный обмен УМП/GAS. */
#include "ecan.h"
+/* Подключает "kanal.h": последовательный вывод данных канала индикации. */
#include "kanal.h"
+/* Подключает "pulto.h": обмен и индикация пульта. */
#include "pulto.h"
+/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "log_to_mem.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Объявляет интерфейс функции DSP28x_usDelay; реализация вызывается через этот прототип. */
extern void DSP28x_usDelay(Uint32 Count);
+/* Назначает обработчик Timer1 по типу платы и задаёт период основного такта. */
void timer_Init()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW; // This is needed to write to EALLOW protected registers
+ /* Проверяет if(Desk==dsk_EPLT) PieVectTable.XINT13 = &cpu_timer1_isr_PULT; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_EPLT) PieVectTable.XINT13 = &cpu_timer1_isr_PULT;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else PieVectTable.XINT13 = &cpu_timer1_isr_SENS;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS; // This is needed to disable write to EALLOW protected registers
+ /* Вызывает ConfigCpuTimer с аргументами (&CpuTimer1, SYSCLKOUT/1000000, 1000000/READY_FREQ) в текущей последовательности операций. */
ConfigCpuTimer(&CpuTimer1, SYSCLKOUT/1000000, 1000000/READY_FREQ);
+ /* Записывает CpuTimer1Regs.TCR.all значением 0x4020; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer1Regs.TCR.all = 0x4020; // Use write-only instruction to set TSS bit = 0
+ /* Устанавливает биты IER значением M_INT13; регистр разрешения прерываний ядра C28x. */
IER |= M_INT13;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Точка входа: настраивает периферию, загружает параметры и обслуживает команды в главном цикле. */
void main()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i; j — данные j; mask — маска. */
int i,j,mask;
+ /* Объявляет cancount — данные cancount; cancell — данные cancell; rscount — данные rscount. */
static unsigned int cancount[2], cancell[2], rscount;
+ /* Объявляет rs — данные rs. Хранит указатель на данные. */
RS_DATA * rs;
+ /* Объявляет presbyt — данные presbyt. Начальное значение задаётся справа от знака равенства. */
int presbyt=0;
+ /* Инициализирует модуль вызовом InitSysCtrl(); перед его дальнейшим использованием. */
InitSysCtrl();
// Disable CPU interrupts and clear all CPU interrupt flags:
+ /* Запрет маскируемых прерываний ядра. */
DINT;
+ /* Инициализирует модуль вызовом InitPieCtrl(); перед его дальнейшим использованием. */
InitPieCtrl();
+ /* Записывает IER значением 0x0000; регистр разрешения прерываний ядра C28x. */
IER = 0x0000;
+ /* Записывает IFR значением 0x0000; регистр ожидающих прерываний ядра C28x. */
IFR = 0x0000;
+ /* Инициализирует модуль вызовом InitPieVectTable(); перед его дальнейшим использованием. */
InitPieVectTable();
+ /* Вызывает init_zone7. Настраивает временные параметры внешней шины XINTF Zone7 для RAM регистратора. */
init_zone7();
+ /* Вызывает get_Mode. Определяет адрес и тип платы по аппаратным перемычкам и задаёт рабочий режим. */
get_Mode();
+ /* Вызывает InitCan. Настраивает eCAN, скорость, почтовые ящики и маршрутизацию прерываний для выбранного режима платы. */
InitCan(0,Mode);
+ /* Вызывает create_uart_vars. Инициализирует структуры обоих SCI и таблицу длин команд. */
create_uart_vars(sizeof(CMD_TO_TMS));
+ /* Вызывает setup_uart. Настраивает выбранный SCI, скорость и обработчики прерываний. */
setup_uart(COM_1,115200);
+ /* Проверяет if(Owen)setup_uart(COM_2,57600); последующий оператор выполняется только при истинном условии. */
if(Owen)setup_uart(COM_2,57600);
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else setup_uart(COM_2,115200);
+ /* Инициализирует модуль вызовом InitSeeprom(); перед его дальнейшим использованием. */
InitSeeprom();
+ /* Вызывает setup_leds_line с аргументами () в текущей последовательности операций. */
setup_leds_line();
+ /* Вызывает led1_on с аргументами () в текущей последовательности операций. */
led1_on();
+ /* Вызывает led2_off с аргументами () в текущей последовательности операций. */
led2_off();
+ /* Цикл for (i=0;i<10;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for (i=0;i<10;i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает pause_us. Формирует задержку в микросекундах через калиброванную функцию DSP28x_usDelay. */
pause_us(50000);
+ /* Вызывает led2_toggle с аргументами () в текущей последовательности операций. */
led2_toggle();
+ /* Вызывает led1_toggle с аргументами () в текущей последовательности операций. */
led1_toggle();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает led1_off с аргументами () в текущей последовательности операций. */
led1_off();
+ /* Вызывает led2_off с аргументами () в текущей последовательности операций. */
led2_off();
+ /* Вызывает unsetup_leds_line с аргументами () в текущей последовательности операций. */
unsetup_leds_line();
+ /* Вызывает clear_mem. Обнуляет выделенный диапазон внешней RAM журнала и задаёт границы кольцевого буфера. */
clear_mem();
+ /* Вызывает ump_log_init. Явно инициализирует оба банка регистратора до включения IRQ; повторный старт записи архив не стирает. */
ump_log_init();
- Load_control_init(); /* Explicit initialization before IRQ. */
+ Load_control_init(); /* Explicit initialization before IRQ. */ /* Вызывает Load_control_init. Сбрасывает все переменные автомата нагрузки до разрешения прерываний; COFF не обнуляет всю .ebss. */
+ /* Вызывает set_cntrl_addr. Устанавливает собственный и универсальный адрес для проверки адресованных команд. */
set_cntrl_addr(Mode,16);
+ /* Вызывает timer_Init. Назначает обработчик Timer1 по типу платы и задаёт период основного такта. */
timer_Init();
+ /* Вызывает EnableInterrupts с аргументами () в текущей последовательности операций. */
EnableInterrupts();
+ /* Проверяет if(Desk!=dsk_EPLT); последующий оператор выполняется только при истинном условии. */
if(Desk!=dsk_EPLT)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает setup_adc. Настраивает каналы, последовательность преобразований и запуск АЦП. */
setup_adc();
+ /* Инициализирует модуль вызовом Init_sensors(); перед его дальнейшим использованием. */
Init_sensors();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Инициализирует модуль вызовом Init_packMask(); перед его дальнейшим использованием. */
Init_packMask();
+ /* Вызывает Load_params. Читает сохранённые регистры из области параметров EEPROM и применяет настройки платы. */
Load_params();
+ /* Инициализирует модуль вызовом Init_sensors_more(); перед его дальнейшим использованием. */
Init_sensors_more();
+ /* Проверяет if(Desk==dsk_LOAD); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD)
+ /* Вызывает Setup_DAC_time. Вычисляет такты ЦАП; для недопустимого сохранённого тайм-аута CAN возвращает 600 мс. */
Setup_DAC_time();
+ /* Записывает LastMode значением Mode; последний режим платы, технологический регистр 126. */
LastMode = Mode;
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает SysCtrlRegs.WDCR значением 0x2F; данные WDCR. */
SysCtrlRegs.WDCR= 0x2F;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+ /* Записывает READY значением 1; данные READY. */
READY=1;
+ /* Повторяет или ожидает, пока выполняется while(1). */
while(1)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- /* ×òåíèå ëîããåðà ïî CAN íå áëîêèðóåò öèêë óïðàâëåíèÿ. */
+ /* Чтение логгера по CAN не блокирует цикл управления. */
+ /* Вызывает UMP_CAN_service. В главном цикле готовит замороженный ответ служебного CAN и отправляет его двухсловными фрагментами. */
UMP_CAN_service();
+ /* Проверяет if(CanGO); последующий оператор выполняется только при истинном условии. */
if(CanGO)
- {
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Записывает CanGO значением 0; CAN GO. */
CanGO=0;
+ /* Проверяет if(Owncount); последующий оператор выполняется только при истинном условии. */
if(Owncount)
+ /* Проверяет if(++rscount>=Owncount); последующий оператор выполняется только при истинном условии. */
if(++rscount>=Owncount)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает rscount значением 0; данные rscount. */
rscount=0;
+ /* Вызывает SendCommandModbus4 с аргументами (&rs_b) в текущей последовательности операций. */
SendCommandModbus4(&rs_b);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Цикл for(i=0;i<2;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<2;i++)
- if(++cancount[i] >= Cancount[i])
+ /* Проверяет if(++cancount[i] >= Cancount[i]); последующий оператор выполняется только при истинном условии. */
+ if(++cancount[i] >= Cancount[i])
+ /* Проверяет if(Cancount[i] и cancount[0]); последующий оператор выполняется только при истинном условии. */
if(Cancount[i] && cancount[0])
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- cancount[i] = 0;
+ /* Записывает cancount[i] значением 0; данные cancount. */
+ cancount[i] = 0;
+ /* Повторяет или ожидает, пока выполняется while(1). */
while(1)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(cancell[i] >= 0x80) cancell[i]=0; последующий оператор выполняется только при истинном условии. */
if(cancell[i] >= 0x80) cancell[i]=0;
+ /* Записывает mask значением Maska[i][cancell[i]/16] >> (cancell[i]%16); маска. */
mask = Maska[i][cancell[i]/16] >> (cancell[i]%16);
+ /* Проверяет if(!mask) cancell[i] = (cancell[i] + 0x10) & 0xFFF0; последующий оператор выполняется только при истинном условии. */
if(!mask) cancell[i] = (cancell[i] + 0x10) & 0xFFF0;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Повторяет или ожидает, пока выполняется while(!(mask & 1)). */
while(!(mask & 1))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Изменяет счётчик в выражении cancell[i]++; mask >>= 1; на один для следующего шага. */
cancell[i]++; mask >>= 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+ /* Вызывает CAN_send. Упаковывает адрес и технологические слова в штатный CAN-кадр и запускает передачу mailbox. */
CAN_send(0,modbus,cancell[i]);
- cancell[i]+=3;
+ /* Увеличивает cancell[i] значением 3; данные cancell. */
+ cancell[i]+=3;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+ /* Проверяет if(cDefParam); последующий оператор выполняется только при истинном условии. */
if(cDefParam)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает cDefParam значением 0; данные cDefParam. */
cDefParam=0;
+ /* Вызывает Default_params. Заполняет регистры заводскими значениями; тайм-аут CAN нагрузки по умолчанию равен 600 мс. */
Default_params();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(cSaveParam); последующий оператор выполняется только при истинном условии. */
if(cSaveParam)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает cSaveParam значением 0; данные cSaveParam. */
cSaveParam=0;
+ /* Вызывает Save_params. Сохраняет технологические регистры в область параметров, отделённую от загрузочного образа EEPROM. */
Save_params();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(cLoadParam); последующий оператор выполняется только при истинном условии. */
if(cLoadParam)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает cLoadParam значением 0; данные cLoadParam. */
cLoadParam=0;
+ /* Вызывает Load_params. Читает сохранённые регистры из области параметров EEPROM и применяет настройки платы. */
Load_params();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(cKoefCalc); последующий оператор выполняется только при истинном условии. */
if(cKoefCalc)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает cKoefCalc значением 0; данные cKoefCalc. */
cKoefCalc=0;
+ /* Вызывает calc_sensor_koef с аргументами () в текущей последовательности операций. */
calc_sensor_koef();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает get_Buttons. Считывает кнопки, обновляет флаги команд и учитывает текущий тип платы. */
get_Buttons();
+ /* Проверяет if(Desk==dsk_COMM); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(!bTermoCal & presbyt) cSaveParam=1; последующий оператор выполняется только при истинном условии. */
if(!bTermoCal & presbyt) cSaveParam=1;
+ /* Записывает presbyt значением bTermoCal; данные presbyt. */
presbyt = bTermoCal;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/* Timer1 owns START/STOP/permission and the DAC ramp together.
* Main must not re-enable the output during a protected reload. */
- /* Ñíèìîê ïîñëå îáíîâëåíèÿ âõîäîâ è ôîðìèðîâàíèÿ ïóñêîâûõ âûõîäîâ. */
+ /* Снимок после обновления входов и формирования пусковых выходов. */
+ /* Вызывает ump_log_io. Обслуживает изменения дискретных входов и выходов из главного цикла. */
ump_log_io();
+ /* Цикл for(i=0;i<2;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<2;i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(i) rs = &rs_a; последующий оператор выполняется только при истинном условии. */
if(i) rs = &rs_a;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else rs = &rs_b;
+ /* Записывает j значением get_command(rs); данные j. */
j = get_command(rs);
+ /* Проверяет if(j!=-1); последующий оператор выполняется только при истинном условии. */
if(j!=-1)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает Lonely значением 0; данные Lonely. */
Lonely=0;
+ /* Вызывает led2_toggle с аргументами () в текущей последовательности операций. */
led2_toggle();
+ /* Вызывает switch с аргументами (j) в текущей последовательности операций. */
switch(j)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- case CMD_INIT: init(rs); break; // íà÷àëüíûå óñòàíîâêè
- case CMD_INITLOAD: initload(rs); break; // íàñòðîéêà çàãðóçêè
- case CMD_RUN: run(rs); break; // çàãðóçèòü áëîê
- case CMD_LOAD: load(rs); break; // çàãðóçèòü áëîê
- case CMD_PEEK: peek(rs); break; // ïðî÷èòàòü à÷åéêó ïàìàòè
- case CMD_POKE: poke(rs); break; // çàïèñàòü â à÷åéêó ïàìàòè
- case CMD_UPLOAD: upload(rs); break; // ïåðåäàòü áëîê ïàìàòè
- case CMD_EXTEND: extendbios(rs); break; // ðàñøèðåííûå êîìàíäû äëà áèîñà
-
- case CMD_TFLASH: tflash(rs); break; // ïðîøèòü TMS
+ /* Ветвь выбора для CMD_INIT; выполняется при совпадении селектора switch. */
+ case CMD_INIT: init(rs); break; // начальные установки
+ /* Ветвь выбора для CMD_INITLOAD; выполняется при совпадении селектора switch. */
+ case CMD_INITLOAD: initload(rs); break; // настройка загрузки
+ /* Ветвь выбора для CMD_RUN; выполняется при совпадении селектора switch. */
+ case CMD_RUN: run(rs); break; // загрузить блок
+ /* Ветвь выбора для CMD_LOAD; выполняется при совпадении селектора switch. */
+ case CMD_LOAD: load(rs); break; // загрузить блок
+ /* Ветвь выбора для CMD_PEEK; выполняется при совпадении селектора switch. */
+ case CMD_PEEK: peek(rs); break; // прочитать ачейку памати
+ /* Ветвь выбора для CMD_POKE; выполняется при совпадении селектора switch. */
+ case CMD_POKE: poke(rs); break; // записать в ачейку памати
+ /* Ветвь выбора для CMD_UPLOAD; выполняется при совпадении селектора switch. */
+ case CMD_UPLOAD: upload(rs); break; // передать блок памати
+ /* Ветвь выбора для CMD_EXTEND; выполняется при совпадении селектора switch. */
+ case CMD_EXTEND: extendbios(rs); break; // расширенные команды дла биоса
+ /* Ветвь выбора для CMD_TFLASH; выполняется при совпадении селектора switch. */
+ case CMD_TFLASH: tflash(rs); break; // прошить TMS
+
+ /* Ветвь выбора для CMD_MODBUS_3; выполняется при совпадении селектора switch. */
case CMD_MODBUS_3: ReceiveCommandModbus3(rs); break;
+ /* Ветвь выбора для CMD_MODBUS_6; выполняется при совпадении селектора switch. */
case CMD_MODBUS_6: ReceiveCommandModbus6(rs); break;
+ /* Ветвь выбора для ANS_MODBUS_4; выполняется при совпадении селектора switch. */
case ANS_MODBUS_4: ReceiveAnswerModbus4(rs); break;
+ /* Обрабатывает значения селектора, для которых нет отдельной ветви case. */
default: break;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} } } } }
diff --git a/Source/Internal/measure.c b/Source/Internal/measure.c
index 3dfa276..c8a41f1 100644
--- a/Source/Internal/measure.c
+++ b/Source/Internal/measure.c
@@ -1,489 +1,872 @@
+/* Обработка датчиков, вычисление величин и миллисекундный такт системы. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
-#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
+#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Подключает "ADC.h": настройка АЦП, обработка преобразований и первичная фильтрация измерений. */
#include "ADC.h"
+/* Подключает "DAC.h": выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
#include "DAC.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
#include "message.h"
+/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "log_to_mem.h"
-#include // Ýòî ÷òîáû ìåðèòü àìïëèòóäó! sqrt áåç ýòîãî áóäåò êðèâ!!!
+/* Подключает : настройки и интерфейс math. */
+#include // Это чтобы мерить амплитуду! sqrt без этого будет крив!!!
+/* Объявляет CanPowse — CAN Powse; CANPOWSE — данные CANPOWSE; CanGO — CAN GO. Начальное значение задаётся справа от знака равенства. */
unsigned int CanPowse=CANPOWSE,CanGO=0;
-unsigned int Maska[2][8];
+/* Объявляет Maska[2][8];. */
+unsigned int Maska[2][8];
-int READY=0; // Âñå çàãðóçèëîñ
+/* Объявляет READY — данные READY. Начальное значение задаётся справа от знака равенства. */
+int READY=0; // Все загрузилос
-int TPL_CANS=0; // Êîëè÷åñòâî òåìïåðàòóðíûõ êàíàëîâ
-int tpl_cans=0; // Êîëè÷åñòâî òåìïåðàòóðíûõ äàò÷èêîâ
-int cal_addr=0; // Íà÷àëî êàëèáðîâî÷íûõ äàò÷èêîâ
-int pow_addr=0; // Íà÷àëî äàò÷èêîâ íàïðàæåíèà\òîêà
+/* Объявляет TPL_CANS — данные TPL_CANS. Начальное значение задаётся справа от знака равенства. */
+int TPL_CANS=0; // Количество температурных каналов
+/* Объявляет tpl_cans — данные tpl_cans. Начальное значение задаётся справа от знака равенства. */
+int tpl_cans=0; // Количество температурных датчиков
+/* Объявляет cal_addr — данные cal_addr. Начальное значение задаётся справа от знака равенства. */
+int cal_addr=0; // Начало калибровочных датчиков
+/* Объявляет pow_addr — данные pow_addr. Начальное значение задаётся справа от знака равенства. */
+int pow_addr=0; // Начало датчиков напражениа\тока
+/* Объявляет period_ready — период ready; period_blink — период blink. */
int period_ready, period_blink;
+/* Объявляет chk — данные chk; sig — данные sig. */
FLAG chk,sig;
+/* Объявляет time_1_5sec — данные time_1_5sec; time_5msec — данные time_5msec; time_3sec — данные time_3sec; time_5sec — данные time_5sec. */
unsigned int time_1_5sec, time_5msec, time_3sec, time_5sec;
+/* Объявляет low_count — low число. Начальное значение задаётся справа от знака равенства. */
unsigned int low_count[2] = {0,0};
+/* Объявляет err_count — err число. */
unsigned int err_count[6];
+/* Объявляет lev_count — lev число. */
int lev_count[6];
+/* Объявляет lev_quadr — данные lev_quadr. */
float lev_quadr[6];
+/* Объявляет zer_count — zer число. */
float zer_count[4];
+/* Объявляет sens_type — данные sens_type. */
int sens_type[24];
+/* Объявляет sens_pair — данные sens_pair. */
int sens_pair[24];
+/* Объявляет din_count — din число. */
unsigned int din_count[32];
+/* Объявляет ext_temp — данные ext_temp. */
int ext_temp[8];
+/* Объявляет ext_diag — данные ext_diag. */
int ext_diag[8];
+/* Объявляет Caliber_time — данные Caliber_time. Начальное значение задаётся справа от знака равенства. */
unsigned int Caliber_time = 0;
+/* Объявляет Curr_Edge — данные Curr_Edge. */
int Curr_Edge;
+/* Объявляет okay — данные okay. */
ERROR okay;
-float powK[] =
+/* Объявляет powK — данные powK. Начальное значение задаётся справа от знака равенства. */
+float powK[] =
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- 0.127, // ïèòàíèå 380Â
- 0.127, // ïèòàíèå 380Â
+ /* Элемент постоянной таблицы 0.127,; порядок значений совпадает с порядком индексов потребителя. */
+ 0.127, // питание 380В
+ /* Элемент постоянной таблицы 0.127,; порядок значений совпадает с порядком индексов потребителя. */
+ 0.127, // питание 380В
- 1.000, // òîê
- 1.000, // íàïðàæåíèå
+ /* Элемент постоянной таблицы 1.000,; порядок значений совпадает с порядком индексов потребителя. */
+ 1.000, // ток
+ /* Элемент постоянной таблицы 1.000,; порядок значений совпадает с порядком индексов потребителя. */
+ 1.000, // напражение
- 0.0076, // ïèòàíèå 31Â
- 0.0076, // ïèòàíèå 24Â
- 0.0076, // ïèòàíèå 24Â
- 0.0076, // ïèòàíèå 15Â
- 1.0000, // òåðìîäàò÷èê ìåëêîñõåìà
+ /* Элемент постоянной таблицы 0.0076,; порядок значений совпадает с порядком индексов потребителя. */
+ 0.0076, // питание 31В
+ /* Элемент постоянной таблицы 0.0076,; порядок значений совпадает с порядком индексов потребителя. */
+ 0.0076, // питание 24В
+ /* Элемент постоянной таблицы 0.0076,; порядок значений совпадает с порядком индексов потребителя. */
+ 0.0076, // питание 24В
+ /* Элемент постоянной таблицы 0.0076,; порядок значений совпадает с порядком индексов потребителя. */
+ 0.0076, // питание 15В
+ /* Элемент постоянной таблицы 1.0000,; порядок значений совпадает с порядком индексов потребителя. */
+ 1.0000, // термодатчик мелкосхема
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
+/* Объявляет def_FILTERBAT — данные def_FILTERBAT; DEF_FILTERBAT — данные DEF_FILTERBAT. Начальное значение задаётся справа от знака равенства. */
FILTERBAT def_FILTERBAT = DEF_FILTERBAT;
-FILTERBAT adc_filter[20+4]; // ìàêñ.TPL*2 + 4 êàëèáð
-FILTERBAT out_filter[20+4]; // ìàêñ.TPL*2 + 4 íàïðàæ
-FILTERBAT zer_filter[4]; // 4 íàïðàæ
+/* Объявляет adc_filter — АЦП filter. */
+FILTERBAT adc_filter[20+4]; // макс.TPL*2 + 4 калибр
+/* Объявляет out_filter — данные out_filter. */
+FILTERBAT out_filter[20+4]; // макс.TPL*2 + 4 напраж
+/* Объявляет zer_filter — данные zer_filter. */
+FILTERBAT zer_filter[4]; // 4 напраж
+/* Объявляет sens_count — sens число. */
long sens_count[24+4];
+/* Объявляет K100 — данные K100; K_50 — данные K_50. */
float K100,K_50;
+/* Объявляет K_T1 — данные K_T1; K_T2 — данные K_T2. */
float K_T1,K_T2;
+/* Выполняет миллисекундный такт датчиков, таймеров связи, регистратора и защиты нагрузки. */
interrupt void cpu_timer1_isr_SENS(void);
-/********************************************************************/
-/* Ðàñ÷åò ìîäóëà òîêà èç ïîêàçàíèé äâóõ ôàç */
/********************************************************************/
+/* Расчет модула тока из показаний двух фаз */
+/********************************************************************/
+/* Начинает функцию im_calc; назначение модуля — обработка датчиков, вычисление величин и миллисекундный такт системы. */
float im_calc(float ia,float ib)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет isa — данные isa; isb — данные isb. */
float isa,isb;
-
+
+ /* Записывает isa значением - 1.5 * (ia + ib); данные isa. */
isa = - 1.5 * (ia + ib);
+ /* Записывает isb значением COSPi6 * (ia - ib); данные isb. */
isb = COSPi6 * (ia - ib);
+ /* Завершает im_calc и возвращает (2*sqrt(isa*isa+isb*isb)/3). */
return (2*sqrt(isa*isa+isb*isb)/3);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию calc_sensor_koef; назначение модуля — обработка датчиков, вычисление величин и миллисекундный такт системы. */
void calc_sensor_koef()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i. */
int i;
+ /* Объявляет K — данные K. */
float K;
+ /* Проверяет if(TermoRS); последующий оператор выполняется только при истинном условии. */
if(TermoRS)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- K100 = 129.0/(K150_D - K100_D);
+ /* Записывает K100 значением 129.0/(K150_D - K100_D); данные K100. */
+ K100 = 129.0/(K150_D - K100_D);
+ /* Записывает K_50 значением 261.8/(K150_D - K100_D); данные K_50. */
K_50 = 261.8/(K150_D - K100_D);
- K_T1 = 129.0/(K150_1 - K100_1);
- K_T2 = 129.0/(K150_2 - K100_2);
+ /* Записывает K_T1 значением 129.0/(K150_1 - K100_1); данные K_T1. */
+ K_T1 = 129.0/(K150_1 - K100_1);
+ /* Записывает K_T2 значением 129.0/(K150_2 - K100_2); данные K_T2. */
+ K_T2 = 129.0/(K150_2 - K100_2);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(TermoAD); последующий оператор выполняется только при истинном условии. */
if(TermoAD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает K_T1 значением 100.0/(K400_1 - K300_1); данные K_T1. */
K_T1 = 100.0/(K400_1 - K300_1);
+ /* Записывает K_T2 значением 100.0/(K400_2 - K300_2); данные K_T2. */
K_T2 = 100.0/(K400_2 - K300_2);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
// if(Kurrent)
+ /* Цикл for(i=0;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<4;i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает K значением Caliber[i]; данные K. */
K = Caliber[i];
+ /* Проверяет if(sens_type[i]==CURRENT) K/=1000.0; последующий оператор выполняется только при истинном условии. */
if(sens_type[i]==CURRENT) K/=1000.0;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else K/=10000.0;
+ /* Записывает powK[i] значением K; данные powK. */
powK[i] = K;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+/* Выполняет миллисекундный такт датчиков, таймеров связи, регистратора и защиты нагрузки. */
interrupt void cpu_timer1_isr_SENS(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет . */
static unsigned int
- count_blink=0, count_bright=0, count_mode,
+ /* Записывает count_blink значением 0, count_bright=0, count_mode,; число blink. */
+ count_blink=0, count_bright=0, count_mode,
+ /* Продолжает список аргументов, полей или выражение blink_over, blink_alarm, work_lamp, heat_lamp, power_lamp;; порядок элементов сохраняется. */
blink_over, blink_alarm, work_lamp, heat_lamp, power_lamp;
+ /* Объявляет preTest — данные preTest. */
static int preTest;
+ /* Объявляет TST — данные TST. */
int TST;
-#define err_lamp work_lamp // ýòî äëà øêàïà,
-#define alm_lamp heat_lamp // ÷òîá áûëî ïîíàòíåå
+/* Задаёт err_lamp = work_lamp; данные err_lamp. */
+#define err_lamp work_lamp // это дла шкапа,
+/* Задаёт alm_lamp = heat_lamp; данные alm_lamp. */
+#define alm_lamp heat_lamp // чтоб было понатнее
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Изменяет счётчик в выражении CpuTimer1.InterruptCount++; на один для следующего шага. */
CpuTimer1.InterruptCount++;
+/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
#if RS232_USE_FIFO
+ /* Вызывает RS_FifoTick1ms. Уменьшает защитную паузу RX FIFO по миллисекундному такту. */
RS_FifoTick1ms();
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Устанавливает биты IER значением M_INT13; регистр разрешения прерываний ядра C28x. */
IER |= M_INT13; // Set "global" priority
+ /* Оставляет биты маски IER значением MINT13; регистр разрешения прерываний ядра C28x. */
IER &= MINT13; // Set "global" priority
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS; // This is needed to disable write to EALLOW protected registers
+ /* Проверяет if(!cReset) ServiceDog(); последующий оператор выполняется только при истинном условии. */
if(!cReset) ServiceDog();
+ /* Проверяет if(++CanPowse >= CANPOWSE); последующий оператор выполняется только при истинном условии. */
if(++CanPowse >= CANPOWSE)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает CanPowse значением 0; CAN Powse. */
CanPowse = 0;
+ /* Записывает CanGO значением 1; CAN GO. */
CanGO = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает TST значением cTestLamp|bTestLamp; данные TST. */
TST = cTestLamp|bTestLamp;
+ /* Проверяет if(!sig.bit.Error|TST) toggle_READY(); последующий оператор выполняется только при истинном условии. */
if(!sig.bit.Error|TST) toggle_READY();
- else clear_READY();
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else clear_READY();
+ /* Проверяет if(Desk==dsk_LOAD); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает Load_runner. В такте Timer1 проверяет команды, напряжение и давность CAN; управляет STOP, повторным пуском и током ЦАП. */
Load_runner();
- /* Áàçà âðåìåíè 1 ìñ; ñíèìîê ñîäåðæèò ðåçóëüòàò òåêóùåãî øàãà ÖÀÏ. */
+ /* База времени 1 мс; снимок содержит результат текущего шага ЦАП. */
+ /* Вызывает ump_log_tick. Продвигает время регистратора в Timer1 и снимает записи с заданным периодом. */
ump_log_tick();
+ /* Завершает cpu_timer1_isr_SENS без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
+
+ /* Проверяет if(++count_bright == maximum_bright); последующий оператор выполняется только при истинном условии. */
if(++count_bright == maximum_bright)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает count_bright значением 0 ; число bright. */
count_bright = 0 ;
- if( ((Desk==dsk_SHKF) && power_lamp) ||
+ /* Проверяет if( ((Desk==dsk_SHKF) и power_lamp) или; последующий оператор выполняется только при истинном условии. */
+ if( ((Desk==dsk_SHKF) && power_lamp) ||
+ /* Продолжает список аргументов, полей или выражение ((Desk==dsk_COMM) && heat_lamp) ) set_RES_OUT_1();; порядок элементов сохраняется. */
((Desk==dsk_COMM) && heat_lamp) ) set_RES_OUT_1();
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else clear_RES_OUT_1();
-
- if(work_lamp) set_LED_OUT_1(); // Îíà æå err_lamp äëà øêàïà
+
+ /* Проверяет if(work_lamp) set_LED_OUT_1(); последующий оператор выполняется только при истинном условии. */
+ if(work_lamp) set_LED_OUT_1(); // Она же err_lamp дла шкапа
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else clear_LED_OUT_1();
- if(heat_lamp) set_LED_OUT_2(); // Îíà æå alm_lamp äëà øêàïà
+ /* Проверяет if(heat_lamp) set_LED_OUT_2(); последующий оператор выполняется только при истинном условии. */
+ if(heat_lamp) set_LED_OUT_2(); // Она же alm_lamp дла шкапа
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else clear_LED_OUT_2();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(!TST); последующий оператор выполняется только при истинном условии. */
if(!TST)
+ /* Проверяет if(count_bright == Brightness); последующий оператор выполняется только при истинном условии. */
if(count_bright == Brightness)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Сбрасывает аппаратный сигнал через clear_LED_OUT_1();. */
clear_LED_OUT_1();
+ /* Сбрасывает аппаратный сигнал через clear_LED_OUT_2();. */
clear_LED_OUT_2();
+ /* Сбрасывает аппаратный сигнал через clear_RES_OUT_1();. */
clear_RES_OUT_1();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- if(TST & !preTest)
+ /* Проверяет if(TST & !preTest); последующий оператор выполняется только при истинном условии. */
+ if(TST & !preTest)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- count_blink = BLINK_TIME;
+ /* Записывает count_blink значением BLINK_TIME; число blink. */
+ count_blink = BLINK_TIME;
+ /* Записывает count_mode значением 0; число режим. */
count_mode = 0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает preTest значением TST; данные preTest. */
preTest = TST;
+ /* Проверяет if(++count_blink >= BLINK_TIME); последующий оператор выполняется только при истинном условии. */
if(++count_blink >= BLINK_TIME)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает count_blink значением 0; число blink. */
count_blink=0;
+ /* Изменяет счётчик в выражении count_mode++; на один для следующего шага. */
count_mode++;
+ /* Записывает blink_over значением (count_mode & 1)?1:0; данные blink_over. */
blink_over = (count_mode & 1)?1:0;
+ /* Записывает blink_alarm значением (count_mode & 7)?1:0; данные blink_alarm. */
blink_alarm = (count_mode & 7)?1:0;
+ /* Проверяет if(TST); последующий оператор выполняется только при истинном условии. */
if(TST)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает heat_lamp значением blink_over; данные heat_lamp. */
heat_lamp = blink_over;
+ /* Записывает work_lamp значением blink_over; данные work_lamp. */
work_lamp = blink_over;
+ /* Записывает power_lamp значением blink_over; данные power_lamp. */
power_lamp= blink_over;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(Mode==adr_SHKF); последующий оператор выполняется только при истинном условии. */
if(Mode==adr_SHKF)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает power_lamp значением 1; данные power_lamp. */
power_lamp= 1;
+ /* Проверяет if(sig.bit.Alarm); последующий оператор выполняется только при истинном условии. */
if(sig.bit.Alarm){// power_lamp= blink_alarm;
+ /* Записывает alm_lamp значением blink_over; }; данные alm_lamp. */
alm_lamp = blink_over; }
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else alm_lamp = 0;
+ /* Проверяет if(sig.bit.Error); последующий оператор выполняется только при истинном условии. */
if(sig.bit.Error){ power_lamp= blink_over;
+ /* Записывает err_lamp значением blink_over; }; данные err_lamp. */
err_lamp = blink_over; }
- else err_lamp = 0;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else err_lamp = 0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// if(sig.bit.Error) work_lamp = blink_over;
// else if(sig.bit.Alarm) work_lamp = blink_alarm;
-// else
+// else
+ /* Записывает work_lamp значением 1; данные work_lamp. */
work_lamp = 1;
+ /* Проверяет if(bSecretBt|cSecretBt) work_lamp = blink_alarm; последующий оператор выполняется только при истинном условии. */
if(bSecretBt|cSecretBt) work_lamp = blink_alarm;
+ /* Проверяет if(sig.bit.OverHeat) heat_lamp = 1; последующий оператор выполняется только при истинном условии. */
if(sig.bit.OverHeat) heat_lamp = 1;
+ /* Проверяет else if(sig.bit.SubHeat) heat_lamp = blink_over; последующий оператор выполняется только при истинном условии. */
else if(sig.bit.SubHeat) heat_lamp = blink_over;
+ /* Проверяет else if(sig.bit.OutHeat) heat_lamp = !blink_alarm; последующий оператор выполняется только при истинном условии. */
else if(sig.bit.OutHeat) heat_lamp = !blink_alarm;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else heat_lamp = 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} } } }
+/* Начинает функцию Init_sensors; назначение модуля — обработка датчиков, вычисление величин и миллисекундный такт системы. */
void Init_sensors()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i. */
int i;
-
+
+ /* Записывает TPL_CANS значением tpl_cans = cal_addr = 0; данные TPL_CANS. */
TPL_CANS = tpl_cans = cal_addr = 0;
+ /* Вызывает switch с аргументами (Mode) в текущей последовательности операций. */
switch(Mode)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Ветвь выбора для adr_TRN1; выполняется при совпадении селектора switch. */
case adr_TRN1:
- case adr_TRN2:
+ /* Ветвь выбора для adr_TRN2; выполняется при совпадении селектора switch. */
+ case adr_TRN2:
+ /* Записывает TPL_CANS значением TPL_TRN; tpl_cans = TPL_TRN*2; cal_addr = tpl_cans; break; данные TPL_CANS. */
TPL_CANS = TPL_TRN; tpl_cans = TPL_TRN*2; cal_addr = tpl_cans; break;
+ /* Ветвь выбора для adr_POW1; выполняется при совпадении селектора switch. */
case adr_POW1:
- case adr_POW2:
+ /* Ветвь выбора для adr_POW2; выполняется при совпадении селектора switch. */
+ case adr_POW2:
+ /* Записывает TPL_CANS значением TPL_POW; tpl_cans = TPL_POW*2; cal_addr = tpl_cans; break; данные TPL_CANS. */
TPL_CANS = TPL_POW; tpl_cans = TPL_POW*2; cal_addr = tpl_cans; break;
- case adr_ENG1:
+ /* Ветвь выбора для adr_ENG1; выполняется при совпадении селектора switch. */
+ case adr_ENG1:
+ /* Записывает TPL_CANS значением TPL_ENG; tpl_cans = TPL_ENG; cal_addr = tpl_cans; break; данные TPL_CANS. */
TPL_CANS = TPL_ENG; tpl_cans = TPL_ENG; cal_addr = tpl_cans; break;
+ /* Ветвь выбора для adr_SHKF; выполняется при совпадении селектора switch. */
case adr_SHKF: tpl_cans = TPL_SHK; cal_addr = tpl_cans-2; break;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает pow_addr значением tpl_cans + Owen; данные pow_addr. */
pow_addr = tpl_cans + Owen;
+ /* Цикл for(i=0;i<24;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<24;i++)
- {
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Записывает sens_type[i] значением 0; данные sens_type. */
sens_type[i]=0;
+ /* Записывает sens_pair[i] значением i; данные sens_pair. */
sens_pair[i]=i;
+ /* Записывает adc_filter[i] значением def_FILTERBAT; АЦП filter. */
adc_filter[i] = def_FILTERBAT;
+ /* Записывает out_filter[i] значением def_FILTERBAT; данные out_filter. */
out_filter[i] = def_FILTERBAT;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(TermoSW); последующий оператор выполняется только при истинном условии. */
if(TermoSW)
+ /* Цикл for(i=0;i=edge) return 1;
- (*count)++; return pre;
- }
- if( (*count) == 0 ) return 0;
- (*count)--; return pre;
-}
-
-void reset_errs(int sens, ERROR err)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if (term); последующий оператор выполняется только при истинном условии. */
+ if (term)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Проверяет if((*count)>=edge) return 1; последующий оператор выполняется только при истинном условии. */
+ if((*count)>=edge) return 1;
+ /* Изменяет счётчик в выражении (*count)++; return pre; на один для следующего шага. */
+ (*count)++; return pre;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Проверяет if( (*count) == 0 ) return 0; последующий оператор выполняется только при истинном условии. */
+ if( (*count) == 0 ) return 0;
+ /* Изменяет счётчик в выражении (*count)--; return pre; на один для следующего шага. */
+ (*count)--; return pre;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+}
+
+/* Начинает функцию reset_errs; назначение модуля — обработка датчиков, вычисление величин и миллисекундный такт системы. */
+void reset_errs(int sens, ERROR err)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Объявляет set — установка. */
ERROR set;
+ /* Записывает set.all значением (sens_error[sens].all & NOER) | err.all; представление регистра целым словом без разбиения на битовые поля. */
set.all = (sens_error[sens].all & NOER) | err.all;
+ /* Устанавливает биты chk.bit.Error значением set.bit.Stop; ошибка. */
chk.bit.Error|= set.bit.Stop;
+ /* Записывает set.bit.Ready значением !set.bit.Stop; данные Ready. */
set.bit.Ready = !set.bit.Stop;
+ /* Записывает sens_error[sens] значением set; sens ошибка. */
sens_error[sens] = set;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию Current_count; назначение модуля — обработка датчиков, вычисление величин и миллисекундный такт системы. */
void Current_count(int chan)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Numb — данные Numb; Zer — данные Zer; Current — данные Current; Level — данные Level. */
float Numb,Zer,Current,Level;
+ /* Объявляет aCurrent — данные aCurrent; Amplitude — данные Amplitude. */
static float aCurrent,Amplitude;
+ /* Объявляет ignor — данные ignor; sens — данные sens; pair — данные pair; ist — данные ist; thrd — данные thrd. */
int ignor, sens, pair, ist, thrd, fazz, feed;
+ /* Объявляет error — ошибка. */
ERROR error;
+ /* Проверяет if(Desk == dsk_LOAD); последующий оператор выполняется только при истинном условии. */
if(Desk == dsk_LOAD)
+ /* Проверяет if(!chan); последующий оператор выполняется только при истинном условии. */
if(!chan)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает sig.all значением chk.all; представление регистра целым словом без разбиения на битовые поля. */
sig.all = chk.all;
+ /* Записывает chk.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
chk.all = 0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает sens значением pow_addr + chan; данные sens. */
sens = pow_addr + chan;
+ /* Записывает pair значением sens_pair[chan]; данные pair. */
pair = sens_pair[chan];
+ /* Записывает ist значением !(chan & 1); данные ist. */
ist = !(chan & 1);
+ /* Записывает feed значением (chan >>1); данные feed. */
feed = (chan >>1);
+ /* Записывает fazz значением feed*3; данные fazz. */
fazz = feed*3;
+ /* Записывает thrd значением feed+4; данные thrd. */
thrd = feed+4;
+ /* Проверяет if(sens_error[sens].bit.Bypas); последующий оператор выполняется только при истинном условии. */
if(sens_error[sens].bit.Bypas)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- sens_error[sens].all = 0;
+ /* Записывает sens_error[sens].all значением 0; представление регистра целым словом без разбиения на битовые поля. */
+ sens_error[sens].all = 0;
+ /* Записывает sens_error[sens].bit.Bypas значением 1; данные Bypas. */
sens_error[sens].bit.Bypas = 1;
+ /* Записывает sens_data[sens] значением 0; sens данные. */
sens_data[sens] = 0;
+ /* Завершает Current_count без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает Numb значением adc_table_lem[chan]; данные Numb. */
Numb = adc_table_lem[chan];
+ /* Записывает modbus[0x64+chan] значением Numb; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[0x64+chan] = Numb;
-// Ñðåäíèé (îí æå íóëåâîé) óðîâåíü ïîêàçàíèé ÀÖÏ
+// Средний (он же нулевой) уровень показаний АЦП
+ /* Увеличивает zer_count[chan] значением (Numb-zer_count[chan])/(5.0 * ADC_FREQ); zer число. */
zer_count[chan] += (Numb-zer_count[chan])/(5.0 * ADC_FREQ);
+ /* Записывает Zer значением (int)(filterbat(&zer_filter[chan],zer_count[chan])); данные Zer. */
Zer = (int)(filterbat(&zer_filter[chan],zer_count[chan]));
+ /* Проверяет if(WAKE < (WAKE_TIME /2)) Zero_lev[chan] = Zer; последующий оператор выполняется только при истинном условии. */
if(WAKE < (WAKE_TIME /2)) Zero_lev[chan] = Zer;
/*
Test_mem_limit(12);
@@ -491,41 +874,65 @@ Log_to_mem((int)adc_table_lem[chan]);
Log_to_mem((int)zer_count[chan]);
Log_to_mem((int)Zero_lev[chan]);
*/
-// Ìãíîâåííîå çíà÷åíèå ôàçû
+// Мгновенное значение фазы
+ /* Записывает Current значением (Numb - Zero_lev[chan]) * powK[chan]; данные Current. */
Current = (Numb - Zero_lev[chan]) * powK[chan];
-// Äåéñòâóþùåå (ñðåäíåêâàäðàòè÷íîå) çíà÷åíèå ôàçû
+// Действующее (среднеквадратичное) значение фазы
+ /* Увеличивает lev_quadr[chan] значением ((Current*Current)-lev_quadr[chan])/(1.0 * ADC_FREQ); данные lev_quadr. */
lev_quadr[chan] += ((Current*Current)-lev_quadr[chan])/(1.0 * ADC_FREQ);
+ /* Записывает lev_count[chan] значением sqrt(lev_quadr[chan]); lev число. */
lev_count[chan] = sqrt(lev_quadr[chan]);
-// Çàïîìíèì
- if(ist)
+// Запомним
+ /* Проверяет if(ist); последующий оператор выполняется только при истинном условии. */
+ if(ist)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(Desk==dsk_COMM) aCurrent =-Current; последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM) aCurrent =-Current;
- else aCurrent = Current; // Çàïîìíèëè ìãíîâåííîå çíà÷åíèå - äëà àìïëèòóäû
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else aCurrent = Current; // Запомнили мгновенное значение - дла амплитуды
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- else
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
-// Âû÷èñëåíèå àìïëèòóäû
+// Вычисление амплитуды
+ /* Записывает Amplitude значением filterbat(&out_filter[sens], im_calc(Current,aCurrent)); данные Amplitude. */
Amplitude = filterbat(&out_filter[sens], im_calc(Current,aCurrent));
+ /* Проверяет if(sens_type[sens]==VOLTAGE); последующий оператор выполняется только при истинном условии. */
if(sens_type[sens]==VOLTAGE)
+ /* Проверяет if(Amplitude<20) Amplitude = 0; последующий оператор выполняется только при истинном условии. */
if(Amplitude<20) Amplitude = 0;
+ /* Проверяет if(sens_type[sens]==CURRENT); последующий оператор выполняется только при истинном условии. */
if(sens_type[sens]==CURRENT)
+ /* Проверяет if(Amplitude<75) Amplitude = 0; последующий оператор выполняется только при истинном условии. */
if(Amplitude<75) Amplitude = 0;
+ /* Записывает Level значением Amplitude / RADIX2; данные Level. */
Level = Amplitude / RADIX2;
-
+
+ /* Проверяет if(!WAKE); последующий оператор выполняется только при истинном условии. */
if(!WAKE)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает sens_data[sens ] значением Amplitude; sens данные. */
sens_data[sens ] = Amplitude;
+ /* Записывает sens_data[sens-1] значением Level; sens данные. */
sens_data[sens-1] = Level;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-// Äåéñòâóþùåå (ñðåäíåêâàäðàòè÷íîå) çíà÷åíèå òðåòüåé ôàçû
+// Действующее (среднеквадратичное) значение третьей фазы
+ /* Записывает Numb значением -Current-aCurrent; данные Numb. */
Numb =-Current-aCurrent;
+ /* Увеличивает lev_quadr[thrd] значением (Numb*Numb-lev_quadr[thrd])/(1.0 * ADC_FREQ); данные lev_quadr. */
lev_quadr[thrd] += (Numb*Numb-lev_quadr[thrd])/(1.0 * ADC_FREQ);
+ /* Записывает lev_count[thrd] значением sqrt(lev_quadr[thrd]); lev число. */
lev_count[thrd] = sqrt(lev_quadr[thrd]);
/*
if(!no_write)
@@ -544,57 +951,99 @@ Log_to_mem(Amplitude);
Log_to_mem(Level);
}
*/
+/* Записывает modbus[0x68+fazz ] значением lev_count[pair]; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[0x68+fazz ] = lev_count[pair];
+/* Записывает modbus[0x68+fazz+1] значением lev_count[chan]; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[0x68+fazz+1] = lev_count[chan];
+/* Записывает modbus[0x68+fazz+2] значением lev_count[thrd]; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[0x68+fazz+2] = lev_count[thrd];
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-// Ýòî ìàêñèìàëüíîå
+// Это максимальное
+ /* Записывает Numb значением lev_count[chan]; данные Numb. */
Numb = lev_count[chan];
+ /* Проверяет if(Numb 0.3) и (Numb>Curr_Edge),; последующий оператор выполняется только при истинном условии. */
if(er_anal( ((Numb-lev_count[chan])/Numb > 0.3) && (Numb>Curr_Edge),
+ /* Продолжает список аргументов, полей или выражение &err_count[chan],time_3sec,0)); порядок элементов сохраняется. */
&err_count[chan],time_3sec,0))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Wry значением 1; данные Wry. */
error.bit.Wry = 1;
+ /* Записывает error.bit.Stop значением !ignor; данные Stop. */
error.bit.Stop = !ignor;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(er_anal( ((Numb-lev_count[thrd])/Numb > 0.3) и (Numb>Curr_Edge),; последующий оператор выполняется только при истинном условии. */
if(er_anal( ((Numb-lev_count[thrd])/Numb > 0.3) && (Numb>Curr_Edge),
+ /* Продолжает список аргументов, полей или выражение &err_count[thrd],time_3sec,0)); порядок элементов сохраняется. */
&err_count[thrd],time_3sec,0))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Wry значением 1; данные Wry. */
error.bit.Wry = 1;
+ /* Записывает error.bit.Stop значением !ignor; данные Stop. */
error.bit.Stop = !ignor;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk == dsk_LOAD); последующий оператор выполняется только при истинном условии. */
if(Desk == dsk_LOAD)
+ /* Проверяет if(!ist); последующий оператор выполняется только при истинном условии. */
if(!ist)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(Level > sens_hi_edge[sens]); последующий оператор выполняется только при истинном условии. */
if(Level > sens_hi_edge[sens])
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Hyper значением 1; данные Hyper. */
error.bit.Hyper = 1;
+ /* Записывает error.bit.Stop значением !ignor; данные Stop. */
error.bit.Stop = !ignor;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(sens_type[sens]==VOLTAGE); последующий оператор выполняется только при истинном условии. */
if(sens_type[sens]==VOLTAGE)
-
- if(er_anal( (Level < sens_lo_edge[sens]),
+
+ /* Проверяет if(er_anal( (Level < sens_lo_edge[sens]),; последующий оператор выполняется только при истинном условии. */
+ if(er_anal( (Level < sens_lo_edge[sens]),
+ /* Продолжает список аргументов, полей или выражение &low_count[feed],time_3sec,0)); порядок элементов сохраняется. */
&low_count[feed],time_3sec,0))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Out значением 1; данные Out. */
error.bit.Out = 1;
+ /* Записывает error.bit.Stop значением !ignor; данные Stop. */
error.bit.Stop = !ignor;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(sens_type[sens]==CURRENT); последующий оператор выполняется только при истинном условии. */
if(sens_type[sens]==CURRENT)
+ /* Проверяет if(Level > sens_lo_edge[sens]); последующий оператор выполняется только при истинном условии. */
if(Level > sens_lo_edge[sens])
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Over значением 1; данные Over. */
error.bit.Over = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/*
if((chan==1)||(chan==3))
@@ -616,233 +1065,409 @@ Log_to_mem(error.all);
Log_to_mem(WAKE);
}
*/
+ /* Метка fin для перехода внутри функции. */
fin:
+ /* Вызывает reset_errs с аргументами (sens,error) в текущей последовательности операций. */
reset_errs(sens,error);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию Temper_count; назначение модуля — обработка датчиков, вычисление величин и миллисекундный такт системы. */
void Temper_count(int chan, int own)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Numb — данные Numb. */
float Numb;
+ /* Объявляет Temper — данные Temper. */
static int Temper;
+ /* Объявляет i — данные i; j — данные j; kun — данные kun. */
int i,j, kun;
+ /* Объявляет s — данные s. */
long s;
+ /* Объявляет error — ошибка. */
ERROR error;
+ /* Объявляет ovn — данные ovn. */
int ovn;
+ /* Проверяет if(!chan); последующий оператор выполняется только при истинном условии. */
if(!chan)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает sig.all значением chk.all; представление регистра целым словом без разбиения на битовые поля. */
sig.all = chk.all;
+ /* Записывает chk.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
chk.all = 0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(sens_error[chan].bit.Bypas); последующий оператор выполняется только при истинном условии. */
if(sens_error[chan].bit.Bypas)
+ /* Проверяет if(chan2200) kun|=2; последующий оператор выполняется только при истинном условии. */
if(Numb>2200) kun|=2;
+ /* Проверяет if(kun>=0); последующий оператор выполняется только при истинном условии. */
if(kun>=0)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает TCaliber[kun] значением Numb; данные TCaliber. */
TCaliber[kun] = Numb;
+ /* Вызывает calc_sensor_koef с аргументами () в текущей последовательности операций. */
calc_sensor_koef();
+ /* Завершает Temper_count без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+ /* Проверяет if(chan>=tpl_cans) return; последующий оператор выполняется только при истинном условии. */
if(chan>=tpl_cans) return;
-// Kun èìåííî ÷òîá ñêîìïåíñèðîâàòü íå÷åòíîñòü
+// Kun именно чтоб скомпенсировать нечетность
+ /* Проверяет if(kun&1) Numb = (Numb-K300_2)*K_T2+ZERO; последующий оператор выполняется только при истинном условии. */
if(kun&1) Numb = (Numb-K300_2)*K_T2+ZERO;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else Numb = (Numb-K300_1)*K_T1+ZERO;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(TermoRS); последующий оператор выполняется только при истинном условии. */
if(TermoRS)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(kun>=0); последующий оператор выполняется только при истинном условии. */
if(kun>=0)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(WAKE) out_filter[chan] = adc_filter[chan]; последующий оператор выполняется только при истинном условии. */
if(WAKE) out_filter[chan] = adc_filter[chan];
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
-// Êàëèáðîâêó îòôèëüòðóåì âòîðûì ñëîåì
+// Калибровку отфильтруем вторым слоем
+ /* Записывает Numb значением filterbat(&out_filter[chan],Numb); данные Numb. */
Numb = filterbat(&out_filter[chan],Numb);
+ /* Записывает TCaliber[kun] значением Numb; данные TCaliber. */
TCaliber[kun] = Numb;
+ /* Вызывает calc_sensor_koef с аргументами () в текущей последовательности операций. */
calc_sensor_koef();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Завершает Temper_count без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_BKSD); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKSD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Записывает sens_data[chan+8] значением ADC_table[chan]; sens данные. */
sens_data[chan+8] = ADC_table[chan];
+ /* Проверяет if(chan<6) Numb = (Numb-K100_D)*K100; последующий оператор выполняется только при истинном условии. */
if(chan<6) Numb = (Numb-K100_D)*K100;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else Numb = (Numb-K100_D)*K_50;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(chan&1) Numb = (Numb-K100_2)*K_T2; последующий оператор выполняется только при истинном условии. */
if(chan&1) Numb = (Numb-K100_2)*K_T2;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else Numb = (Numb-K100_1)*K_T1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+ /* Проверяет if(Numb < -20) Numb = -20; последующий оператор выполняется только при истинном условии. */
if(Numb < -20) Numb = -20;
+ /* Проверяет if(Numb > 200) Numb = 200; последующий оператор выполняется только при истинном условии. */
if(Numb > 200) Numb = 200;
+ /* Проверяет if(bSecretBt|cSecretBt) Numb = 40.0; последующий оператор выполняется только при истинном условии. */
if(bSecretBt|cSecretBt) Numb = 40.0;
+ /* Записывает sens_data[chan] значением Numb*10; sens данные. */
sens_data[chan] = Numb*10;
+ /* Записывает Temper значением Numb; данные Temper. */
Temper = Numb;
+ /* Записывает error.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
error.all = 0;
+ /* Проверяет if(WAKE или sens_error[chan].bit.Ignor) goto fin; последующий оператор выполняется только при истинном условии. */
if(WAKE || sens_error[chan].bit.Ignor) goto fin;
-// Îáðûâ èëè íåèñïðàâíîñòü
+// Обрыв или неисправность
+ /* Проверяет if(Temper<=-20 или Temper>=200); последующий оператор выполняется только при истинном условии. */
if(Temper<=-20 || Temper>=200)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Tear значением 1; данные Tear. */
error.bit.Tear = 1;
+ /* Записывает chk.bit.OutHeat значением 1; данные OutHeat. */
chk.bit.OutHeat = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
-// Ïåðåãðåâ
+// Перегрев
+ /* Проверяет if(((Temper>sens_hi_edge[chan]-Cooling) и (sens_error[chan].bit.Hyper)) или; последующий оператор выполняется только при истинном условии. */
if(((Temper>sens_hi_edge[chan]-Cooling) && (sens_error[chan].bit.Hyper)) ||
+ /* Продолжает список аргументов, полей или выражение (Temper>sens_hi_edge[chan]) ); порядок элементов сохраняется. */
(Temper>sens_hi_edge[chan]) )
- {
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Записывает error.bit.Hyper значением 1; данные Hyper. */
error.bit.Hyper = 1;
+ /* Записывает error.bit.Stop значением 1; данные Stop. */
error.bit.Stop = 1;
+ /* Записывает chk.bit.OverHeat значением 1; данные OverHeat. */
chk.bit.OverHeat= 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
-// Ïðåäóïðåæäåíèå ïî òåìïåðàòóðå
+// Предупреждение по температуре
+ /* Проверяет if(Temper>sens_lo_edge[chan]); последующий оператор выполняется только при истинном условии. */
if(Temper>sens_lo_edge[chan])
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Over значением 1; данные Over. */
error.bit.Over = 1;
+ /* Записывает chk.bit.SubHeat значением 1; данные SubHeat. */
chk.bit.SubHeat = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Метка fin для перехода внутри функции. */
fin:
+ /* Вызывает reset_errs с аргументами (chan,error) в текущей последовательности операций. */
reset_errs(chan,error);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию Power_count; назначение модуля — обработка датчиков, вычисление величин и миллисекундный такт системы. */
void Power_count(int chan)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Numb — данные Numb. */
float Numb;
+ /* Объявляет Power — данные Power; bitt — данные bitt. */
int Power,bitt;
+ /* Объявляет error — ошибка. */
ERROR error;
+ /* Проверяет if(!chan); последующий оператор выполняется только при истинном условии. */
if(!chan)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает sig.all значением chk.all; представление регистра целым словом без разбиения на битовые поля. */
sig.all = chk.all;
+ /* Записывает chk.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
chk.all = 0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(sens_error[chan].bit.Bypas); последующий оператор выполняется только при истинном условии. */
if(sens_error[chan].bit.Bypas)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- sens_error[chan].all = 0;
+ /* Записывает sens_error[chan].all значением 0; представление регистра целым словом без разбиения на битовые поля. */
+ sens_error[chan].all = 0;
+ /* Записывает sens_error[chan].bit.Bypas значением 1; данные Bypas. */
sens_error[chan].bit.Bypas = 1;
+ /* Записывает sens_data[chan] значением 0; sens данные. */
sens_data[chan] = 0;
+ /* Завершает Power_count без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает Numb значением ADC_table[chan]; данные Numb. */
Numb = ADC_table[chan];
+ /* Проверяет if(cRawMeat); последующий оператор выполняется только при истинном условии. */
if(cRawMeat)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает sens_data[chan] значением Numb; sens данные. */
sens_data[chan] = Numb;
+ /* Завершает Power_count без возвращаемого значения. */
return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает Power значением Numb * powK[sens_type[chan]]; данные Power. */
Power = Numb * powK[sens_type[chan]];
+ /* Записывает sens_data[chan] значением Power; sens данные. */
sens_data[chan] = Power;
+ /* Записывает error.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
error.all = 0;
-
+
+ /* Проверяет if(WAKE или sens_error[chan].bit.Ignor) goto fin; последующий оператор выполняется только при истинном условии. */
if(WAKE || sens_error[chan].bit.Ignor) goto fin;
-// Äèñêðåòíûå êàíàëû
+// Дискретные каналы
+ /* Записывает bitt значением chan*2; данные bitt. */
bitt = chan*2;
+ /* Проверяет if(chan!=7); последующий оператор выполняется только при истинном условии. */
if(chan!=7)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Discr1 значением er_anal(((DigErr.all>>bitt)&1), &din_count[bitt], 1000, 0); bitt++; данные Discr1. */
error.bit.Discr1 = er_anal(((DigErr.all>>bitt)&1), &din_count[bitt], 1000, 0); bitt++;
+ /* Записывает error.bit.Discr2 значением er_anal(((DigErr.all>>bitt)&1), &din_count[bitt], 1000, 0); bitt++; данные Discr2. */
error.bit.Discr2 = er_anal(((DigErr.all>>bitt)&1), &din_count[bitt], 1000, 0); bitt++;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(chan==6); последующий оператор выполняется только при истинном условии. */
if(chan==6)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает error.bit.Discr3 значением er_anal(((DigErr.all>>bitt)&1), &din_count[bitt], 1000, 0); bitt++; данные Discr3. */
error.bit.Discr3 = er_anal(((DigErr.all>>bitt)&1), &din_count[bitt], 1000, 0); bitt++;
+ /* Записывает error.bit.Discr4 значением er_anal(((DigErr.all>>bitt)&1), &din_count[bitt], 1000, 0); bitt++; данные Discr4. */
error.bit.Discr4 = er_anal(((DigErr.all>>bitt)&1), &din_count[bitt], 1000, 0); bitt++;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает error.bit.Contr значением error.bit.Discr1 | error.bit.Discr2 | error.bit.Discr3 | error.bit.Discr4; данные Contr. */
error.bit.Contr = error.bit.Discr1 | error.bit.Discr2 | error.bit.Discr3 | error.bit.Discr4;
-// Ïîíèæåííîå íàïðàæåíèå
+// Пониженное напражение
+ /* Проверяет if(Power sens_hi_edge[chan])
- {
+ {
error.bit.Hyper = 1;
error.bit.Stop = 1;
}
*/
- if(error.all)
+ /* Проверяет if(error.all); последующий оператор выполняется только при истинном условии. */
+ if(error.all)
+ /* Записывает chk.bit.Alarm значением 1; данные Alarm. */
chk.bit.Alarm = 1;
-
+
+ /* Метка fin для перехода внутри функции. */
fin:
+ /* Вызывает reset_errs с аргументами (chan,error) в текущей последовательности операций. */
reset_errs(chan,error);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/message.c b/Source/Internal/message.c
index 86d76f7..fff2907 100644
--- a/Source/Internal/message.c
+++ b/Source/Internal/message.c
@@ -1,391 +1,680 @@
+/* Обработка Modbus, заводские параметры и сохранение настроек. Русские пояснения сохранены в UTF-8. */
+/* Подключает "eeprom_config.h": выбор профиля физически установленной EEPROM при сборке. */
#include "eeprom_config.h"
+/* Подключает "include/balsam167_eeprom_block.h": настройки и интерфейс balsam167_eeprom_block. */
#include "include/balsam167_eeprom_block.h"
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "crc16.h": таблицы и функции вычисления контрольных сумм CRC. */
#include "crc16.h"
+/* Подключает "cntrl_adr.h": собственный и универсальный адрес устройства. */
#include "cntrl_adr.h"
-#include "bios_dsp.h"
+/* Подключает "bios_dsp.h": коды и объявления команд последовательного загрузчика. */
+#include "bios_dsp.h"
+/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
#include "message.h"
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "ADC.h": настройка АЦП, обработка преобразований и первичная фильтрация измерений. */
#include "ADC.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Подключает "ecan.h": штатный eCAN и отдельный служебный обмен УМП/GAS. */
#include "ecan.h"
+/* Подключает "pulto.h": обмен и индикация пульта. */
#include "pulto.h"
+/* Подключает "spise2p.h": драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
#include "spise2p.h"
+/* Подключает "caliber.h": заводские калибровочные значения датчиков. */
#include "caliber.h"
+/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "log_to_mem.h"
+/* Подключает "DAC.h": выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
#include "DAC.h"
+/* Подключает "ump_tms28335.h": настройки и интерфейс ump_tms28335. */
#include "ump_tms28335.h"
+/* Подключает "gas167.h": дополнительная карта GAS 167/v1 только для новой EEPROM M95M02. */
#include "gas167.h"
+/* Подключает "include/balsam167_eeprom_layout.h": настройки и интерфейс balsam167_eeprom_layout. */
#include "include/balsam167_eeprom_layout.h"
+/* Условие компиляции (ANSWER_LEN + 1) != BALSAM167_EEPROM_PARAM_WORDS: выбранный блок включается в текущий вариант прошивки. */
#if (ANSWER_LEN + 1) != BALSAM167_EEPROM_PARAM_WORDS
+/* Останавливает сборку при недопустимой конфигурации: EEPROM_parameter_reservation_must_match_ANSWER_LEN. */
#error EEPROM_parameter_reservation_must_match_ANSWER_LEN
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит. */
int modbus[ANSWER_LEN+1];
+/* Объявляет param — данные param. */
unsigned int param[ANSWER_LEN+1];
+/* Заполняет регистры заводскими значениями; тайм-аут CAN нагрузки по умолчанию равен 600 мс. */
void Default_params()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i; def — данные def. */
unsigned int i,def;
+ /* Объявляет shkf_lo_edge — данные shkf_lo_edge. Начальное значение задаётся справа от знака равенства. */
int shkf_lo_edge[] = {300, // 380
+ /* Элемент постоянной таблицы 300,; порядок значений совпадает с порядком индексов потребителя. */
300, // 38O
+ /* Элемент постоянной таблицы 0,; порядок значений совпадает с порядком индексов потребителя. */
0, // 0
+ /* Элемент постоянной таблицы 0,; порядок значений совпадает с порядком индексов потребителя. */
0, // 0
- 15, // 31
+ /* Элемент постоянной таблицы 15,; порядок значений совпадает с порядком индексов потребителя. */
+ 15, // 31
+ /* Элемент постоянной таблицы 22,; порядок значений совпадает с порядком индексов потребителя. */
22, // 27
+ /* Элемент постоянной таблицы 20,; порядок значений совпадает с порядком индексов потребителя. */
20, // 24
+ /* Элемент постоянной таблицы 10,; порядок значений совпадает с порядком индексов потребителя. */
10, // 15
+ /* Элемент постоянной таблицы 60};; порядок значений совпадает с порядком индексов потребителя. */
60}; // AD
+ /* Объявляет bright — данные bright. Начальное значение задаётся справа от знака равенства. */
int bright[] = {10,8,6,8,6,8};
+ /* Цикл for(i=0;iadr_PULT) def--; последующий оператор выполняется только при истинном условии. */
if(Mode>adr_PULT) def--;
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Записывает def значением Mode-3; данные def. */
def = Mode-3;
+ /* Проверяет if(Mode==adr_SHKF) def=4; последующий оператор выполняется только при истинном условии. */
if(Mode==adr_SHKF) def=4;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Цикл for(i=0;i<8;i++) Caliber[i] = def_cal[def][i];; задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<8;i++) Caliber[i] = def_cal[def][i];
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
+
+ /* Проверяет if(Desk == dsk_COMM); последующий оператор выполняется только при истинном условии. */
if(Desk == dsk_COMM)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Цикл for(i=0;ibuffer[0] значением CNTRL_ADDR; rs arr буфер. */
rs_arr->buffer[0] = CNTRL_ADDR;
+ /* Записывает rs_arr->buffer[1] значением function | 0x80; rs arr буфер. */
rs_arr->buffer[1] = function | 0x80;
+ /* Записывает rs_arr->buffer[2] значением error; rs arr буфер. */
rs_arr->buffer[2] = error;
+ /* Записывает crc значением get_crc_16(0xFFFF, rs_arr->buffer, 3); данные crc. */
crc = get_crc_16(0xFFFF, rs_arr->buffer, 3);
+ /* Записывает rs_arr->buffer[3] значением LOBYTE(crc); rs_arr->buffer[4] = HIBYTE(crc); rs arr буфер. */
rs_arr->buffer[3] = LOBYTE(crc); rs_arr->buffer[4] = HIBYTE(crc);
+ /* Записывает rs_arr->flag_TIMEOUT_to_Send значением true; rs arr флаг TIMEOUT to Send. */
rs_arr->flag_TIMEOUT_to_Send = true;
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
RS_Send(rs_arr, rs_arr->buffer, 5);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/* UART parser has already validated CRC and accepted the device address. */
+/* Выбирает GAS либо существующее адресное пространство УМП и снимает согласованный ответ под краткой блокировкой IRQ. */
static int receive_ump(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет address — адрес; value — данные value; saved — данные saved; length — длина; count — число. */
unsigned int address, value, saved, length, count, error;
/* Main-loop only; encoded into the UART buffer before the next request.
* Keep the 124-word snapshot off the shared interrupt stack. */
+ /* Объявляет words — слова. */
static uint16_t words[UMP_MAX_WORDS];
+ /* Записывает address значением (rs_arr->RS_Header[2] << 8) | rs_arr->RS_Header[3]; адрес. */
address = (rs_arr->RS_Header[2] << 8) | rs_arr->RS_Header[3];
+ /* Проверяет if (address < UMP_BASE) return 0; последующий оператор выполняется только при истинном условии. */
if (address < UMP_BASE) return 0;
+ /* Записывает value значением (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5]; данные value. */
value = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5];
/* SPI driver advances in Timer2 ISR: NEVER mask interrupts here.
* Reuse the existing snapshot buffer; the main loop owns this transaction.
* The shared validator rejects writes, wraparound and out-of-device reads. */
+ /* Проверяет if (address >= 0x1300U и address < 0x1308U); последующий оператор выполняется только при истинном условии. */
if (address >= 0x1300U && address < 0x1308U) {
+ /* Записывает count значением Load_protection_prepare(rs_arr->RS_Header[1], address, value, words, &error); число. */
count = Load_protection_prepare(rs_arr->RS_Header[1], address, value, words, &error);
+ /* Проверяет else if (address >= BALSAM167_EEPROM_RTU_BASE); последующий оператор выполняется только при истинном условии. */
} else if (address >= BALSAM167_EEPROM_RTU_BASE) {
+ /* Записывает error значением 2; ошибка. */
error = 2;
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
/* Exception 3 prevents old AT-profile clients from falling back to
* legacy PEEK after a profile mismatch. No SPI transaction is issued. */
+ /* Проверяет if (!(value & BALSAM167_EEPROM_M95_MARKER)) error = 3; последующий оператор выполняется только при истинном условии. */
if (!(value & BALSAM167_EEPROM_M95_MARKER)) error = 3;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Записывает count значением 0; число. */
count = 0;
+ /* Проверяет if (balsam167_eeprom_block_valid(rs_arr->RS_Header[1], address, value)); последующий оператор выполняется только при истинном условии. */
if (balsam167_eeprom_block_valid(rs_arr->RS_Header[1], address, value)) {
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+ /* Записывает count значением value & 255U; число. */
count = value & 255U;
+ /* Вызывает Seeprom_read. Читает EEPROM порциями; адрес задаётся словами C28x, размер переводится в число передаваемых слов. */
Seeprom_read(balsam167_eeprom_block_word(address, value), words, count * 2);
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Записывает count значением value; число. */
count = value;
+ /* Вызывает Seeprom_read. Читает EEPROM порциями; адрес задаётся словами C28x, размер переводится в число передаваемых слов. */
Seeprom_read(address - BALSAM167_EEPROM_RTU_BASE, words, count * 2);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Записывает error значением 0; ошибка. */
error = 0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else {
+ /* Записывает saved значением __disable_interrupts(); данные saved. */
saved = __disable_interrupts();
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+ /* Проверяет if (gas167_contains(address)); последующий оператор выполняется только при истинном условии. */
if (gas167_contains(address))
+ /* Записывает count значением gas167_prepare(rs_arr->RS_Header[1], address, value, 0, words, &error); число. */
count = gas167_prepare(rs_arr->RS_Header[1], address, value, 0, words, &error);
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Записывает count значением ump_tms28335_capture(rs_arr->RS_Header[1], address, value, words, &error); число. */
count = ump_tms28335_capture(rs_arr->RS_Header[1], address, value, words, &error);
+ /* Вызывает __restore_interrupts с аргументами (saved) в текущей последовательности операций. */
__restore_interrupts(saved);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает length значением ump_rtu_encode(CNTRL_ADDR, rs_arr->RS_Header[1], error,; длина. */
length = ump_rtu_encode(CNTRL_ADDR, rs_arr->RS_Header[1], error,
+ /* Продолжает список аргументов, полей или выражение words, count, rs_arr->buffer, MAX_SEND_LENGTH);; порядок элементов сохраняется. */
words, count, rs_arr->buffer, MAX_SEND_LENGTH);
+ /* Проверяет if (length); последующий оператор выполняется только при истинном условии. */
if (length) {
+ /* Записывает rs_arr->flag_TIMEOUT_to_Send значением true; rs arr флаг TIMEOUT to Send. */
rs_arr->flag_TIMEOUT_to_Send = true;
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
RS_Send(rs_arr, rs_arr->buffer, length);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Завершает receive_ump и возвращает 1. */
return 1;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Обслуживает чтение регистров FC03 с проверкой адреса, длины и формированием ответа RTU. */
void ReceiveCommandModbus3(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет crc — данные crc; Address_MB — адрес MB; Length_MB — длина MB; i — данные i; value — данные value. */
unsigned int crc, Address_MB, Length_MB, i, value;
+ /* Проверяет if (receive_ump(rs_arr)) return; последующий оператор выполняется только при истинном условии. */
if (receive_ump(rs_arr)) return;
-// ïîëó÷èëè íà÷àëüíûé àäðåñ ÷òåíèà
+// получили начальный адрес чтениа
+ /* Записывает Address_MB значением (rs_arr->RS_Header[2] << 8) | rs_arr->RS_Header[3]; адрес MB. */
Address_MB = (rs_arr->RS_Header[2] << 8) | rs_arr->RS_Header[3];
-// ïîëó÷èëè êîëè÷åñòâî ñëîâ äàííûõ
+// получили количество слов данных
+ /* Записывает Length_MB значением (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5]; длина MB. */
Length_MB = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5];
+ /* Проверяет if (!Length_MB или Length_MB > 125 или; последующий оператор выполняется только при истинном условии. */
if (!Length_MB || Length_MB > 125 ||
+ /* Продолжает список аргументов, полей или выражение !(Address_MB < ANSWER_LEN && Length_MB <= ANSWER_LEN-Address_MB)) {; порядок элементов сохраняется. */
!(Address_MB < ANSWER_LEN && Length_MB <= ANSWER_LEN-Address_MB)) {
+ /* Вызывает modbus_exception. Формирует ответ Modbus с установленным старшим битом функции и кодом исключения. */
modbus_exception(rs_arr, CMD_MODBUS_3, 2); return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/////////////////////////////////////////////////
- // Îòñûëêà
- /* Ïîñ÷èòàëè êîíòðîëüíóþ ñóììó ïåðåä ñàìîé ïîñûëêîé */
+ // Отсылка
+ /* Посчитали контрольную сумму перед самой посылкой */
+ /* Записывает rs_arr->buffer[0] значением CNTRL_ADDR; rs arr буфер. */
rs_arr->buffer[0] = CNTRL_ADDR;
+ /* Записывает rs_arr->buffer[1] значением CMD_MODBUS_3; rs arr буфер. */
rs_arr->buffer[1] = CMD_MODBUS_3;
+ /* Записывает rs_arr->buffer[2] значением Length_MB*2; rs arr буфер. */
rs_arr->buffer[2] = Length_MB*2;
- /* Çàùèùàåì öåëîñòíîñòü îäíîãî ñíèìêà/áëîêà; ïåðåäà÷à UART èä¸ò óæå
- * ñ ðàçðåø¸ííûìè ïðåðûâàíèÿìè è íå çàäåðæèâàåò èçìåðåíèå/óïðàâëåíèå. */
+ /* Защищаем целостность одного снимка/блока; передача UART идёт уже
+ * с разрешёнными прерываниями и не задерживает измерение/управление. */
+ /* Цикл for (i=0;ibuffer[3+i*2] значением (value >> 8) & 0xFF; rs arr буфер. */
rs_arr->buffer[3+i*2] = (value >> 8) & 0xFF;
+ /* Записывает rs_arr->buffer[3+i*2+1] значением value & 0xFF; rs arr буфер. */
rs_arr->buffer[3+i*2+1] = value & 0xFF;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает crc значением 0xffff; данные crc. */
crc = 0xffff;
+ /* Записывает crc значением get_crc_16(crc, rs_arr->buffer, Length_MB*2+3); данные crc. */
crc = get_crc_16(crc, rs_arr->buffer, Length_MB*2+3);
+ /* Записывает rs_arr->buffer[Length_MB*2+3] значением LOBYTE(crc); rs arr буфер. */
rs_arr->buffer[Length_MB*2+3] = LOBYTE(crc);
+ /* Записывает rs_arr->buffer[Length_MB*2+4] значением HIBYTE(crc); rs arr буфер. */
rs_arr->buffer[Length_MB*2+4] = HIBYTE(crc);
-
- rs_arr->buffer[Length_MB*2+5] = 0;
- rs_arr->buffer[Length_MB*2+6] = 0;
- rs_arr->buffer[Length_MB*2+7] = 0;
- rs_arr->buffer[Length_MB*2+8] = 0;
+ /* Записывает rs_arr->buffer[Length_MB*2+5] значением 0; rs arr буфер. */
+ rs_arr->buffer[Length_MB*2+5] = 0;
+ /* Записывает rs_arr->buffer[Length_MB*2+6] значением 0; rs arr буфер. */
+ rs_arr->buffer[Length_MB*2+6] = 0;
+ /* Записывает rs_arr->buffer[Length_MB*2+7] значением 0; rs arr буфер. */
+ rs_arr->buffer[Length_MB*2+7] = 0;
+ /* Записывает rs_arr->buffer[Length_MB*2+8] значением 0; rs arr буфер. */
+ rs_arr->buffer[Length_MB*2+8] = 0;
+
+ /* Записывает rs_arr->flag_TIMEOUT_to_Send значением true; rs arr флаг TIMEOUT to Send. */
rs_arr->flag_TIMEOUT_to_Send=true;
- /* Ðàñøèðåíèå ëîããåðà îòâå÷àåò òî÷íûì êàäðîì Modbus áåç õâîñòîâûõ
- * íóëåé: îíè èíà÷å ïîïàëè áû â íà÷àëî îòâåòà ñëåäóþùåãî áëîêà GUI.
- * Èñòîðè÷åñêèé ôîðìàò òåõíîëîãè÷åñêèõ ðåãèñòðîâ îñòàâëåí ïðåæíèì. */
+ /* Расширение логгера отвечает точным кадром Modbus без хвостовых
+ * нулей: они иначе попали бы в начало ответа следующего блока GUI.
+ * Исторический формат технологических регистров оставлен прежним. */
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
RS_Send(rs_arr, rs_arr->buffer, Length_MB*2+8);
+ /* Завершает ReceiveCommandModbus3 без возвращаемого значения. */
return;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Обслуживает одиночную запись FC06, проверяя доступность регистра и допустимость значения. */
void ReceiveCommandModbus6(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет Address_MB — адрес MB; Data_MB — данные MB; i — данные i. */
unsigned int Address_MB, Data_MB, i;
+ /* Проверяет if (receive_ump(rs_arr)) return; последующий оператор выполняется только при истинном условии. */
if (receive_ump(rs_arr)) return;
/////////////////////////////////////////////////
- // Îòñûëêà
- /* Îòïðàâëàåì íàçàä òî æå ñàìîå */
+ // Отсылка
+ /* Отправлаем назад то же самое */
+ /* Цикл for (i=0;i<8;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for (i=0;i<8;i++)
+ /* Записывает rs_arr->buffer[i] значением rs_arr->RS_Header[i]; rs arr буфер. */
rs_arr->buffer[i] = rs_arr->RS_Header[i];
-// ïîëó÷èëè íà÷àëüíûé àäðåñ çàïèñè
+// получили начальный адрес записи
+ /* Записывает Address_MB значением (rs_arr->RS_Header[2] << 8) | rs_arr->RS_Header[3]; адрес MB. */
Address_MB = (rs_arr->RS_Header[2] << 8) | rs_arr->RS_Header[3];
-// ïîëó÷èëè ñëîâî äàííûõ
+// получили слово данных
+ /* Записывает Data_MB значением (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5]; данные MB. */
Data_MB = (rs_arr->RS_Header[4] << 8) | rs_arr->RS_Header[5];
+ /* Проверяет if (Desk == dsk_LOAD и (Address_MB == 0x7CU или Address_MB == 0x7DU)); последующий оператор выполняется только при истинном условии. */
if (Desk == dsk_LOAD && (Address_MB == 0x7CU || Address_MB == 0x7DU)) {
+ /* Вызывает modbus_exception. Формирует ответ Modbus с установленным старшим битом функции и кодом исключения. */
modbus_exception(rs_arr, CMD_MODBUS_6, 2); return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (Desk == dsk_LOAD и Address_MB == 0x52U и; последующий оператор выполняется только при истинном условии. */
if (Desk == dsk_LOAD && Address_MB == 0x52U &&
+ /* Продолжает список аргументов, полей или выражение (Data_MB == 0U || Data_MB > 60000U)) {; порядок элементов сохраняется. */
(Data_MB == 0U || Data_MB > 60000U)) {
+ /* Вызывает modbus_exception. Формирует ответ Modbus с установленным старшим битом функции и кодом исключения. */
modbus_exception(rs_arr, CMD_MODBUS_6, 3); return;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if (Address_MB < ANSWER_LEN); последующий оператор выполняется только при истинном условии. */
if (Address_MB < ANSWER_LEN) {
+ /* Записывает Modbus[Address_MB].all значением Data_MB; представление регистра целым словом без разбиения на битовые поля. */
Modbus[Address_MB].all = Data_MB;
+ /* Проверяет if (Address_MB == 127) ump_log_rs(); последующий оператор выполняется только при истинном условии. */
if (Address_MB == 127) ump_log_rs();
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
} else { modbus_exception(rs_arr, CMD_MODBUS_6, 2); return; }
+ /* Записывает rs_arr->flag_TIMEOUT_to_Send значением true; rs arr флаг TIMEOUT to Send. */
rs_arr->flag_TIMEOUT_to_Send=true;
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
RS_Send(rs_arr, rs_arr->buffer, 10);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию SendCommandModbus4; назначение модуля — обработка Modbus, заводские параметры и сохранение настроек. */
void SendCommandModbus4(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет crc — данные crc. */
unsigned int crc;
/////////////////////////////////////////////////
- // Îòñûëêà
+ // Отсылка
+ /* Записывает rs_arr->buffer[0] значением 16; rs arr буфер. */
rs_arr->buffer[0] = 16;
+ /* Записывает rs_arr->buffer[1] значением 4; rs arr буфер. */
rs_arr->buffer[1] = 4;
+ /* Записывает rs_arr->buffer[2] значением 0; rs arr буфер. */
rs_arr->buffer[2] = 0;
+ /* Записывает rs_arr->buffer[3] значением 0; rs arr буфер. */
rs_arr->buffer[3] = 0;
+ /* Записывает rs_arr->buffer[4] значением 0; rs arr буфер. */
rs_arr->buffer[4] = 0;
+ /* Записывает rs_arr->buffer[5] значением 48; rs arr буфер. */
rs_arr->buffer[5] = 48;
+ /* Записывает crc значением 0xffff; данные crc. */
crc = 0xffff;
+ /* Записывает crc значением get_crc_16(crc, rs_arr->buffer, 6); данные crc. */
crc = get_crc_16(crc, rs_arr->buffer, 6);
+ /* Записывает rs_arr->buffer[6] значением LOBYTE(crc); rs arr буфер. */
rs_arr->buffer[6] = LOBYTE(crc);
+ /* Записывает rs_arr->buffer[7] значением HIBYTE(crc); rs arr буфер. */
rs_arr->buffer[7] = HIBYTE(crc);
//rs_arr->buffer[8] = 0;
//rs_arr->buffer[9] = 0;
//rs_arr->buffer[10] = 0;
-
+
+ /* Записывает rs_arr->flag_TIMEOUT_to_Send значением true; rs arr флаг TIMEOUT to Send. */
rs_arr->flag_TIMEOUT_to_Send=true;
+ /* Вызывает RS_Send. Передаёт массив слов через SCI в выбранном режиме упаковки. */
RS_Send(rs_arr, rs_arr->buffer, 8);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию ReceiveAnswerModbus4; назначение модуля — обработка Modbus, заводские параметры и сохранение настроек. */
void ReceiveAnswerModbus4(RS_DATA *rs_arr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i. */
unsigned int i;
/////////////////////////////////////////////////
- // Îòñûëêà
+ // Отсылка
+ /* Цикл for (i=0;i<8;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for (i=0;i<8;i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает ext_temp[i] значением ( rs_arr->RS_Header[5+i*12] << 8) +; данные ext_temp. */
ext_temp[i] = ( rs_arr->RS_Header[5+i*12] << 8) +
+ /* Продолжает список аргументов, полей или выражение rs_arr->RS_Header[6+i*12];; порядок элементов сохраняется. */
rs_arr->RS_Header[6+i*12];
+ /* Записывает ext_diag[i] значением ( rs_arr->RS_Header[7+i*12] |; данные ext_diag. */
ext_diag[i] = ( rs_arr->RS_Header[7+i*12] |
+ /* Продолжает список аргументов, полей или выражение rs_arr->RS_Header[8+i*12] ) != 0;; порядок элементов сохраняется. */
rs_arr->RS_Header[8+i*12] ) != 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
diff --git a/Source/Internal/peripher.c b/Source/Internal/peripher.c
index bba30e2..7b2ddc2 100644
--- a/Source/Internal/peripher.c
+++ b/Source/Internal/peripher.c
@@ -1,291 +1,519 @@
+/* Перемычки режима платы, дискретные входы и выходы. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
#include "message.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "pulto.h": обмен и индикация пульта. */
#include "pulto.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Подключает "GPIO_table.h": таблица назначения GPIO и макросы аппаратных сигналов платы. */
#include "GPIO_table.h"
+/* Объявляет Mode — рабочий адрес или режим платы, выбранный перемычками; Desk — аппаратно определённый тип платы; TermoAD — данные TermoAD; TermoRS — данные TermoRS; TermoSW — данные TermoSW. Начальное значение задаётся справа от знака равенства. */
int Mode,Desk,TermoAD=0,TermoRS=0,TermoSW=0,Kurrent=0,Kalibro=0,Owen=0;
+/* Объявляет INcount0 — данные INcount0; INcount1 — данные INcount1. Начальное значение задаётся справа от знака равенства. */
unsigned int INcount0=0,INcount1=0;
+/* Продолжает список аргументов, полей или выражение LONGE DigErr;; порядок элементов сохраняется. */
LONGE DigErr;
+/* Объявляет MUX_GPIO32 — выбор функции вывода 32; MUX_GPIO48 — выбор функции вывода 48; DIR_GPIO32 — данные DIR_GPIO32; DIR_GPIO48 — данные DIR_GPIO48. */
int MUX_GPIO32,MUX_GPIO48,DIR_GPIO32,DIR_GPIO48;
+/* Начинает функцию setup_leds_line; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
void setup_leds_line()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает MUX_GPIO32 значением GpioCtrlRegs.GPBMUX1.bit.GPIO32; выбор функции вывода 32. */
MUX_GPIO32 = GpioCtrlRegs.GPBMUX1.bit.GPIO32;
+ /* Записывает MUX_GPIO48 значением GpioCtrlRegs.GPBMUX2.bit.GPIO48; выбор функции вывода 48. */
MUX_GPIO48 = GpioCtrlRegs.GPBMUX2.bit.GPIO48;
+ /* Записывает DIR_GPIO32 значением GpioCtrlRegs.GPBDIR.bit.GPIO32; данные DIR_GPIO32. */
DIR_GPIO32 = GpioCtrlRegs.GPBDIR.bit.GPIO32;
+ /* Записывает DIR_GPIO48 значением GpioCtrlRegs.GPBDIR.bit.GPIO48; данные DIR_GPIO48. */
DIR_GPIO48 = GpioCtrlRegs.GPBDIR.bit.GPIO48;
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO32 значением 0; аппаратная линия ввода/вывода GPIO32. */
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0;
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO48 значением 0; аппаратная линия ввода/вывода GPIO48. */
GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 0;
+ /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO32 значением 1; аппаратная линия ввода/вывода GPIO32. */
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1;
+ /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO48 значением 1; аппаратная линия ввода/вывода GPIO48. */
GpioCtrlRegs.GPBDIR.bit.GPIO48 = 1;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию unsetup_leds_line; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
void unsetup_leds_line()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO32 значением MUX_GPIO32; аппаратная линия ввода/вывода GPIO32. */
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = MUX_GPIO32;
+ /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO48 значением MUX_GPIO48; аппаратная линия ввода/вывода GPIO48. */
GpioCtrlRegs.GPBMUX2.bit.GPIO48 = MUX_GPIO48;
+ /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO32 значением DIR_GPIO32; аппаратная линия ввода/вывода GPIO32. */
GpioCtrlRegs.GPBDIR.bit.GPIO32 = DIR_GPIO32;
+ /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO48 значением DIR_GPIO48; аппаратная линия ввода/вывода GPIO48. */
GpioCtrlRegs.GPBDIR.bit.GPIO48 = DIR_GPIO48;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Определяет адрес и тип платы по аппаратным перемычкам и задаёт рабочий режим. */
void get_Mode()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
- GpioCtrlRegs.GPAMUX1.all &= 0xFF000000; // 00—11
- GpioCtrlRegs.GPAMUX2.all &= 0xFF00003F; // 19—27
- GpioCtrlRegs.GPBMUX1.all &= 0xFFFFFFC0; // 32—34
- GpioCtrlRegs.GPBMUX2.all &= 0x000FF000; // 48—53, 58—63
+ /* Оставляет биты маски GpioCtrlRegs.GPAMUX1.all значением 0xFF000000; представление регистра целым словом без разбиения на битовые поля. */
+ GpioCtrlRegs.GPAMUX1.all &= 0xFF000000; // 00—11
+ /* Оставляет биты маски GpioCtrlRegs.GPAMUX2.all значением 0xFF00003F; представление регистра целым словом без разбиения на битовые поля. */
+ GpioCtrlRegs.GPAMUX2.all &= 0xFF00003F; // 19—27
+ /* Оставляет биты маски GpioCtrlRegs.GPBMUX1.all значением 0xFFFFFFC0; представление регистра целым словом без разбиения на битовые поля. */
+ GpioCtrlRegs.GPBMUX1.all &= 0xFFFFFFC0; // 32—34
+ /* Оставляет биты маски GpioCtrlRegs.GPBMUX2.all значением 0x000FF000; представление регистра целым словом без разбиения на битовые поля. */
+ GpioCtrlRegs.GPBMUX2.all &= 0x000FF000; // 48—53, 58—63
+ /* Записывает GpioCtrlRegs.GPADIR.bit.GPIO20 значением 0; аппаратная линия ввода/вывода GPIO20. */
GpioCtrlRegs.GPADIR.bit.GPIO20 = 0;
+ /* Записывает GpioCtrlRegs.GPADIR.bit.GPIO21 значением 0; аппаратная линия ввода/вывода GPIO21. */
GpioCtrlRegs.GPADIR.bit.GPIO21 = 0;
+ /* Записывает GpioCtrlRegs.GPADIR.bit.GPIO22 значением 0; аппаратная линия ввода/вывода GPIO22. */
GpioCtrlRegs.GPADIR.bit.GPIO22 = 0;
+ /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO51 значением 0; аппаратная линия ввода/вывода GPIO51. */
GpioCtrlRegs.GPBDIR.bit.GPIO51 = 0;
- EDIS;
+ /* Закрытие доступа к защищённым регистрам периферии. */
+ EDIS;
+ /* Записывает Mode значением 1; рабочий адрес или режим платы, выбранный перемычками. */
Mode = 1;
+ /* Увеличивает Mode значением 1 * !GpioDataRegs.GPADAT.bit.GPIO21; рабочий адрес или режим платы, выбранный перемычками. */
Mode += 1 * !GpioDataRegs.GPADAT.bit.GPIO21;
+ /* Увеличивает Mode значением 2 * !GpioDataRegs.GPADAT.bit.GPIO20; рабочий адрес или режим платы, выбранный перемычками. */
Mode += 2 * !GpioDataRegs.GPADAT.bit.GPIO20;
+ /* Увеличивает Mode значением 4 * !GpioDataRegs.GPADAT.bit.GPIO22; рабочий адрес или режим платы, выбранный перемычками. */
Mode += 4 * !GpioDataRegs.GPADAT.bit.GPIO22;
+ /* Увеличивает Mode значением 8 * !GpioDataRegs.GPBDAT.bit.GPIO51; рабочий адрес или режим платы, выбранный перемычками. */
Mode += 8 * !GpioDataRegs.GPBDAT.bit.GPIO51;
+ /* Проверяет if( (Mode==adr_POW1) или (Mode==adr_POW2)) Desk = dsk_COMM; последующий оператор выполняется только при истинном условии. */
if( (Mode==adr_POW1)||(Mode==adr_POW2)) Desk = dsk_COMM;
+ /* Проверяет if( (Mode==adr_TRN1) или (Mode==adr_TRN2)) Desk = dsk_BKST; последующий оператор выполняется только при истинном условии. */
if( (Mode==adr_TRN1)||(Mode==adr_TRN2)) Desk = dsk_BKST;
+ /* Проверяет if( (Mode==adr_LOA1) или (Mode==adr_LOA2)) Desk = dsk_LOAD; последующий оператор выполняется только при истинном условии. */
if( (Mode==adr_LOA1)||(Mode==adr_LOA2)) Desk = dsk_LOAD;
+ /* Проверяет if (Mode==adr_ENG1) Desk = dsk_BKSD; последующий оператор выполняется только при истинном условии. */
if (Mode==adr_ENG1) Desk = dsk_BKSD;
+ /* Проверяет if (Mode==adr_PULT) Desk = dsk_EPLT; последующий оператор выполняется только при истинном условии. */
if (Mode==adr_PULT) Desk = dsk_EPLT;
+ /* Проверяет if (Mode==adr_SHKF) Desk = dsk_SHKF; последующий оператор выполняется только при истинном условии. */
if (Mode==adr_SHKF) Desk = dsk_SHKF;
+ /* Проверяет if( (Desk==dsk_COMM) или (Desk==dsk_LOAD)) Kurrent = 1; последующий оператор выполняется только при истинном условии. */
if( (Desk==dsk_COMM)||(Desk==dsk_LOAD)) Kurrent = 1;
+ /* Проверяет if( (Desk==dsk_BKSD) или (Desk==dsk_BKST)) TermoRS = 1; последующий оператор выполняется только при истинном условии. */
if( (Desk==dsk_BKSD)||(Desk==dsk_BKST)) TermoRS = 1;
+ /* Проверяет if( (Desk==dsk_COMM) или (Desk==dsk_SHKF)) TermoAD = 1; последующий оператор выполняется только при истинном условии. */
if( (Desk==dsk_COMM)||(Desk==dsk_SHKF)) TermoAD = 1;
+ /* Проверяет if( (Desk==dsk_COMM) или (Desk==dsk_BKST)) TermoSW = 2; последующий оператор выполняется только при истинном условии. */
if( (Desk==dsk_COMM)||(Desk==dsk_BKST)) TermoSW = 2;
+ /* Проверяет if (Desk==dsk_BKSD) TermoSW = 1; последующий оператор выполняется только при истинном условии. */
if (Desk==dsk_BKSD) TermoSW = 1;
-#ifdef CALIB_RS
+/* Включает следующий блок только при определённом символе CALIB_RS. */
+#ifdef CALIB_RS
+ /* Проверяет if (Desk!=dsk_EPLT) Kalibro = 1; последующий оператор выполняется только при истинном условии. */
if (Desk!=dsk_EPLT) Kalibro = 1;
-#else
+/* Выбирает альтернативный блок текущего условия компиляции. */
+#else
+ /* Проверяет if( (Desk==dsk_COMM) или (Desk==dsk_SHKF) или; последующий оператор выполняется только при истинном условии. */
if( (Desk==dsk_COMM)||(Desk==dsk_SHKF)||
+ /* Записывает Kalibro значением 1; данные Kalibro. */
(Desk==dsk_LOAD) ) Kalibro = 1;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+/* Включает следующий блок только при определённом символе OWEN. */
#ifdef OWEN
+ /* Проверяет if (Desk==dsk_COMM) Owen = OWEN_DT; последующий оператор выполняется только при истинном условии. */
if (Desk==dsk_COMM) Owen = OWEN_DT;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Сбрасывает аппаратный сигнал через clear_LED_OUT_1();. */
clear_LED_OUT_1();
+ /* Сбрасывает аппаратный сигнал через clear_LED_OUT_2();. */
clear_LED_OUT_2();
+ /* Сбрасывает аппаратный сигнал через clear_RES_OUT_1();. */
clear_RES_OUT_1();
+ /* Сбрасывает аппаратный сигнал через clear_RES_OUT_2();. */
clear_RES_OUT_2();
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Вызывает switch с аргументами (Desk) в текущей последовательности операций. */
switch(Desk)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Ветвь выбора для dsk_COMM; выполняется при совпадении селектора switch. */
case dsk_COMM: GpioCtrlRegs.GPADIR.all = COMM_GPADIR;
+ /* Записывает GpioCtrlRegs.GPBDIR.all значением COMM_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */
GpioCtrlRegs.GPBDIR.all = COMM_GPBDIR; break;
+ /* Ветвь выбора для dsk_BKSD; выполняется при совпадении селектора switch. */
case dsk_BKSD: GpioCtrlRegs.GPADIR.all = BKSD_GPADIR;
+ /* Записывает GpioCtrlRegs.GPBDIR.all значением BKSD_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */
GpioCtrlRegs.GPBDIR.all = BKSD_GPBDIR; break;
+ /* Ветвь выбора для dsk_BKST; выполняется при совпадении селектора switch. */
case dsk_BKST: GpioCtrlRegs.GPADIR.all = BKST_GPADIR;
+ /* Записывает GpioCtrlRegs.GPBDIR.all значением BKST_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */
GpioCtrlRegs.GPBDIR.all = BKST_GPBDIR; break;
-
+
+ /* Ветвь выбора для dsk_EPLT; выполняется при совпадении селектора switch. */
case dsk_EPLT: GpioCtrlRegs.GPADIR.all = PLT2_GPADIR;
+ /* Записывает GpioCtrlRegs.GPBDIR.all значением PLT2_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */
GpioCtrlRegs.GPBDIR.all = PLT2_GPBDIR; break;
+ /* Ветвь выбора для dsk_LOAD; выполняется при совпадении селектора switch. */
case dsk_LOAD: GpioCtrlRegs.GPADIR.all = LOAD_GPADIR;
- GpioCtrlRegs.GPBDIR.all = LOAD_GPBDIR;
+ /* Записывает GpioCtrlRegs.GPBDIR.all значением LOAD_GPBDIR; представление регистра целым словом без разбиения на битовые поля. */
+ GpioCtrlRegs.GPBDIR.all = LOAD_GPBDIR;
+ /* Записывает GpioDataRegs.GPASET.bit.GPIO3 значением 1; break; аппаратная линия ввода/вывода GPIO3. */
GpioDataRegs.GPASET.bit.GPIO3=1; break;
+ /* Ветвь выбора для dsk_SHKF; выполняется при совпадении селектора switch. */
case dsk_SHKF: GpioCtrlRegs.GPADIR.all = SHKF_GPADIR;
+ /* Записывает GpioCtrlRegs.GPBDIR.all значением SHKF_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */
GpioCtrlRegs.GPBDIR.all = SHKF_GPBDIR; break;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию select_tpl_255; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
void select_tpl_255(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(Desk==dsk_BKSD); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKSD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Задаёт BKSD_A_tpl_255 = ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3)); данные BKSD_A_tpl_255. */
#define BKSD_A_tpl_255 ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3))
+ /* Записывает GpioDataRegs.GPACLEAR.all значением BKSD_A_tpl_255; представление регистра целым словом без разбиения на битовые поля. */
GpioDataRegs.GPACLEAR.all = BKSD_A_tpl_255;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_COMM); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Задаёт COMM_A_tpl_255 = ((1L<<27) + (1L<<24) + (1L<<25)); данные COMM_A_tpl_255. */
#define COMM_A_tpl_255 ((1L<<27) + (1L<<24) + (1L<<25))
+/* Задаёт COMM_B_tpl_255 = ((1L<<(49-32)) + (1L<<(52-32))); данные COMM_B_tpl_255. */
#define COMM_B_tpl_255 ((1L<<(49-32)) + (1L<<(52-32)))
+ /* Записывает GpioDataRegs.GPASET.all значением COMM_A_tpl_255; представление регистра целым словом без разбиения на битовые поля. */
GpioDataRegs.GPASET.all = COMM_A_tpl_255;
+ /* Записывает GpioDataRegs.GPBSET.all значением COMM_B_tpl_255; представление регистра целым словом без разбиения на битовые поля. */
GpioDataRegs.GPBSET.all = COMM_B_tpl_255;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_BKST); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKST)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Задаёт BKST_A_tpl_zero = ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3) + (1L<<1) + (1L<<8) + (1L<<6) + (1L<<0) + (1L<<27) + (1L<<24)); данные BKST_A_tpl_zero. */
#define BKST_A_tpl_zero ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3) + (1L<<1) + (1L<<8) + (1L<<6) + (1L<<0) + (1L<<27) + (1L<<24))
+/* Задаёт BKST_B_tpl_zero = ((1L<<(53-32)) + (1L<<(50-32))); данные BKST_B_tpl_zero. */
#define BKST_B_tpl_zero ((1L<<(53-32)) + (1L<<(50-32)))
+ /* Записывает GpioDataRegs.GPASET.all значением BKST_A_tpl_zero; представление регистра целым словом без разбиения на битовые поля. */
GpioDataRegs.GPASET.all = BKST_A_tpl_zero;
+ /* Записывает GpioDataRegs.GPBSET.all значением BKST_B_tpl_zero; представление регистра целым словом без разбиения на битовые поля. */
GpioDataRegs.GPBSET.all = BKST_B_tpl_zero;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+/* Начинает функцию select_tpl_canal; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
void select_tpl_canal(int n_tpl)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет GPIO_A_tpl_set — аппаратная линия ввода/вывода GPIO_A_tpl_set. Начальное значение задаётся справа от знака равенства. */
unsigned long GPIO_A_tpl_set = 0;
+ /* Объявляет GPIO_B_tpl_set — аппаратная линия ввода/вывода GPIO_B_tpl_set. Начальное значение задаётся справа от знака равенства. */
unsigned long GPIO_B_tpl_set = 0;
+ /* Проверяет if(Desk==dsk_BKSD); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKSD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<11); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<11);
+ /* Проверяет if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<9); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<9);
+ /* Проверяет if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<7); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<7);
+ /* Проверяет if(!(n_tpl&0x08)) GPIO_A_tpl_set|=(1L<<3); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x08)) GPIO_A_tpl_set|=(1L<<3);
+ /* Записывает GpioDataRegs.GPASET.all значением GPIO_A_tpl_set; представление регистра целым словом без разбиения на битовые поля. */
GpioDataRegs.GPASET.all = GPIO_A_tpl_set;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_BKST); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKST)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(n_tpl==0) GpioDataRegs.GPACLEAR.bit.GPIO11=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==0) GpioDataRegs.GPACLEAR.bit.GPIO11=1;
+ /* Проверяет if(n_tpl==1) GpioDataRegs.GPACLEAR.bit.GPIO9=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==1) GpioDataRegs.GPACLEAR.bit.GPIO9=1;
+ /* Проверяет if(n_tpl==2) GpioDataRegs.GPACLEAR.bit.GPIO7=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==2) GpioDataRegs.GPACLEAR.bit.GPIO7=1;
+ /* Проверяет if(n_tpl==3) GpioDataRegs.GPACLEAR.bit.GPIO3=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==3) GpioDataRegs.GPACLEAR.bit.GPIO3=1;
+ /* Проверяет if(n_tpl==4) GpioDataRegs.GPACLEAR.bit.GPIO1=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==4) GpioDataRegs.GPACLEAR.bit.GPIO1=1;
+ /* Проверяет if(n_tpl==5) GpioDataRegs.GPACLEAR.bit.GPIO8=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==5) GpioDataRegs.GPACLEAR.bit.GPIO8=1;
+ /* Проверяет if(n_tpl==6) GpioDataRegs.GPACLEAR.bit.GPIO6=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==6) GpioDataRegs.GPACLEAR.bit.GPIO6=1;
+ /* Проверяет if(n_tpl==7) GpioDataRegs.GPACLEAR.bit.GPIO0=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==7) GpioDataRegs.GPACLEAR.bit.GPIO0=1;
+ /* Проверяет if(n_tpl==8) GpioDataRegs.GPACLEAR.bit.GPIO27=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==8) GpioDataRegs.GPACLEAR.bit.GPIO27=1;
+ /* Проверяет if(n_tpl==9) GpioDataRegs.GPACLEAR.bit.GPIO24=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==9) GpioDataRegs.GPACLEAR.bit.GPIO24=1;
+ /* Проверяет if(n_tpl==10) GpioDataRegs.GPBCLEAR.bit.GPIO53=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==10) GpioDataRegs.GPBCLEAR.bit.GPIO53=1;
+ /* Проверяет if(n_tpl==11) GpioDataRegs.GPBCLEAR.bit.GPIO50=1; последующий оператор выполняется только при истинном условии. */
if(n_tpl==11) GpioDataRegs.GPBCLEAR.bit.GPIO50=1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_COMM); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<27); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<27);
+ /* Проверяет if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<24); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<24);
+ /* Проверяет if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<25); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<25);
+ /* Проверяет if(!(n_tpl&0x08)) GPIO_B_tpl_set|=(1L<<(49-32)); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x08)) GPIO_B_tpl_set|=(1L<<(49-32));
+ /* Проверяет if(!(n_tpl&0x10)) GPIO_B_tpl_set|=(1L<<(52-32)); последующий оператор выполняется только при истинном условии. */
if(!(n_tpl&0x10)) GPIO_B_tpl_set|=(1L<<(52-32));
+ /* Записывает GpioDataRegs.GPACLEAR.all значением GPIO_A_tpl_set; представление регистра целым словом без разбиения на битовые поля. */
GpioDataRegs.GPACLEAR.all = GPIO_A_tpl_set;
+ /* Записывает GpioDataRegs.GPBCLEAR.all значением GPIO_B_tpl_set; представление регистра целым словом без разбиения на битовые поля. */
GpioDataRegs.GPBCLEAR.all = GPIO_B_tpl_set;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+/* Считывает кнопки, обновляет флаги команд и учитывает текущий тип платы. */
void get_Buttons()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет butt — данные butt. Начальное значение задаётся справа от знака равенства. */
unsigned long butt =0;
+ /* Объявляет fluf — данные fluf. Начальное значение задаётся справа от знака равенства. */
unsigned long fluf =0;
+ /* Проверяет if(Desk==dsk_BKSD); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_BKSD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает bTestLamp значением !GpioDataRegs.GPBDAT.bit.GPIO50; данные bTestLamp. */
bTestLamp = !GpioDataRegs.GPBDAT.bit.GPIO50;
+ /* Записывает bSecretBt значением !GpioDataRegs.GPBDAT.bit.GPIO49; данные bSecretBt. */
bSecretBt = !GpioDataRegs.GPBDAT.bit.GPIO49;
+ /* Записывает InputRep0 значением bTestLamp; вход Rep 0. */
InputRep0 = bTestLamp;
+ /* Записывает InputRep1 значением bSecretBt; вход Rep 1. */
InputRep1 = bSecretBt;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO0) butt +=0x0001; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO0) butt +=0x0001;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO2) butt +=0x0002; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO2) butt +=0x0002;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO10)butt +=0x0004; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO10)butt +=0x0004;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO4) butt +=0x0008; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO4) butt +=0x0008;
+ /* Записывает Inputs.all значением butt; представление регистра целым словом без разбиения на битовые поля. */
Inputs.all = butt;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-/* Íè÷åãî òàêîãî â äåéñòâèòåëüíîñòè íåò
+/* Ничего такого в действительности нет
if(Desk==dsk_BKST)
{ bSecretBt = !GpioDataRegs.GPBDAT.bit.GPIO63;
InputRep1 = bSecretBt;
return;
} */
+ /* Проверяет if(Desk==dsk_COMM); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_COMM)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает bSecretBt значением !GpioDataRegs.GPBDAT.bit.GPIO53; данные bSecretBt. */
bSecretBt = !GpioDataRegs.GPBDAT.bit.GPIO53;
+ /* Записывает bTermoCal значением er_anal(!GpioDataRegs.GPBDAT.bit.GPIO50, &INcount0, 0xFFFF, 0); данные bTermoCal. */
bTermoCal = er_anal(!GpioDataRegs.GPBDAT.bit.GPIO50, &INcount0, 0xFFFF, 0);
+ /* Записывает InputRep1 значением bSecretBt; вход Rep 1. */
InputRep1 = bSecretBt;
+ /* Записывает InputRep2 значением bTermoCal; вход Rep 2. */
InputRep2 = bTermoCal;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_EPLT)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает bTestLamp значением er_anal(GpioDataRegs.GPADAT.bit.GPIO26, &INcount0, 1000, 0); данные bTestLamp. */
bTestLamp = er_anal(GpioDataRegs.GPADAT.bit.GPIO26, &INcount0, 1000, 0);
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO27) butt +=0x0001; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO27) butt +=0x0001;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO24) butt +=0x0002; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO24) butt +=0x0002;
+ /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO53) butt +=0x0004; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPBDAT.bit.GPIO53) butt +=0x0004;
+ /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO50) butt +=0x0008; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPBDAT.bit.GPIO50) butt +=0x0008;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO26) butt +=0x0010; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO26) butt +=0x0010;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO23) butt +=0x0020; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO23) butt +=0x0020;
+ /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO52) butt +=0x0040; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPBDAT.bit.GPIO52) butt +=0x0040;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO4 ) butt +=0x0080; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO4 ) butt +=0x0080;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO25) butt +=0x0100; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO25) butt +=0x0100;
+ /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO49) butt +=0x0200; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPBDAT.bit.GPIO49) butt +=0x0200;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO11) butt +=0x0400; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO11) butt +=0x0400;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO5 ) butt +=0x0800; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPADAT.bit.GPIO5 ) butt +=0x0800;
+ /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO48) butt +=0x1000; последующий оператор выполняется только при истинном условии. */
if(GpioDataRegs.GPBDAT.bit.GPIO48) butt +=0x1000;
- if(GpioDataRegs.GPADAT.bit.GPIO10) butt +=0x2000; // Ñåêðåòíûé âõîä
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO10) butt +=0x2000; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO10) butt +=0x2000; // Секретный вход
+ /* Записывает Inputs.all значением butt; представление регистра целым словом без разбиения на битовые поля. */
Inputs.all = butt;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_LOAD); последующий оператор выполняется только при истинном условии. */
if(Desk==dsk_LOAD)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(!GpioDataRegs.GPADAT.bit.GPIO6) butt +=0x0001; последующий оператор выполняется только при истинном условии. */
if(!GpioDataRegs.GPADAT.bit.GPIO6) butt +=0x0001; // OMEGA
+ /* Проверяет if(!GpioDataRegs.GPADAT.bit.GPIO8) butt +=0x0002; последующий оператор выполняется только при истинном условии. */
if(!GpioDataRegs.GPADAT.bit.GPIO8) butt +=0x0002; // Start_1
+ /* Проверяет if(!GpioDataRegs.GPADAT.bit.GPIO11) butt +=0x0004; последующий оператор выполняется только при истинном условии. */
if(!GpioDataRegs.GPADAT.bit.GPIO11) butt +=0x0004; // Res_in
+ /* Записывает Inputs.all значением butt; представление регистра целым словом без разбиения на битовые поля. */
Inputs.all = butt;
- }
-
- if(Desk==dsk_SHKF)
- {
-
- if(GpioDataRegs.GPBDAT.bit.GPIO53) fluf += 0x0000010; else butt += 0x0001;
- if(GpioDataRegs.GPBDAT.bit.GPIO52) fluf += 0x0000040; else butt += 0x0002;
-
- if(GpioDataRegs.GPADAT.bit.GPIO2) fluf += 0x0001000; else butt += 0x0004;
- if(GpioDataRegs.GPADAT.bit.GPIO4) fluf += 0x0002000; else butt += 0x0008;
- if(GpioDataRegs.GPADAT.bit.GPIO6) fluf += 0x0004000; else butt += 0x0010;
- if(GpioDataRegs.GPADAT.bit.GPIO0) fluf += 0x0008000; else butt += 0x0020;
-
- if(GpioDataRegs.GPADAT.bit.GPIO8) fluf += 0x0010000; else butt += 0x0040;
- if(GpioDataRegs.GPADAT.bit.GPIO10) fluf += 0x0020000; else butt += 0x0080;
- if(GpioDataRegs.GPADAT.bit.GPIO3) fluf += 0x0040000; else butt += 0x0100;
- if(GpioDataRegs.GPADAT.bit.GPIO5) fluf += 0x0080000; else butt += 0x0200;
- if(GpioDataRegs.GPADAT.bit.GPIO7) fluf += 0x0100000; else butt += 0x0400;
- if(GpioDataRegs.GPADAT.bit.GPIO1) fluf += 0x0200000; else butt += 0x0800;
- if(GpioDataRegs.GPADAT.bit.GPIO11) fluf += 0x0400000; else butt += 0x1000;
- if(GpioDataRegs.GPADAT.bit.GPIO9) fluf += 0x0800000; else butt += 0x2000;
-
- DigErr.all = fluf;
- Inputs.all = butt;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Проверяет if(Desk==dsk_SHKF); последующий оператор выполняется только при истинном условии. */
+ if(Desk==dsk_SHKF)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+
+ /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO53) fluf += 0x0000010; else butt += 0x0001; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPBDAT.bit.GPIO53) fluf += 0x0000010; else butt += 0x0001;
+ /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO52) fluf += 0x0000040; else butt += 0x0002; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPBDAT.bit.GPIO52) fluf += 0x0000040; else butt += 0x0002;
+
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO2) fluf += 0x0001000; else butt += 0x0004; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO2) fluf += 0x0001000; else butt += 0x0004;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO4) fluf += 0x0002000; else butt += 0x0008; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO4) fluf += 0x0002000; else butt += 0x0008;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO6) fluf += 0x0004000; else butt += 0x0010; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO6) fluf += 0x0004000; else butt += 0x0010;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO0) fluf += 0x0008000; else butt += 0x0020; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO0) fluf += 0x0008000; else butt += 0x0020;
+
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO8) fluf += 0x0010000; else butt += 0x0040; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO8) fluf += 0x0010000; else butt += 0x0040;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO10) fluf += 0x0020000; else butt += 0x0080; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO10) fluf += 0x0020000; else butt += 0x0080;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO3) fluf += 0x0040000; else butt += 0x0100; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO3) fluf += 0x0040000; else butt += 0x0100;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO5) fluf += 0x0080000; else butt += 0x0200; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO5) fluf += 0x0080000; else butt += 0x0200;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO7) fluf += 0x0100000; else butt += 0x0400; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO7) fluf += 0x0100000; else butt += 0x0400;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO1) fluf += 0x0200000; else butt += 0x0800; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO1) fluf += 0x0200000; else butt += 0x0800;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO11) fluf += 0x0400000; else butt += 0x1000; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO11) fluf += 0x0400000; else butt += 0x1000;
+ /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO9) fluf += 0x0800000; else butt += 0x2000; последующий оператор выполняется только при истинном условии. */
+ if(GpioDataRegs.GPADAT.bit.GPIO9) fluf += 0x0800000; else butt += 0x2000;
+
+ /* Записывает DigErr.all значением fluf; представление регистра целым словом без разбиения на битовые поля. */
+ DigErr.all = fluf;
+ /* Записывает Inputs.all значением butt; представление регистра целым словом без разбиения на битовые поля. */
+ Inputs.all = butt;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+
+ /* Записывает butt значением 1 * !GpioDataRegs.GPADAT.bit.GPIO21; данные butt. */
butt = 1 * !GpioDataRegs.GPADAT.bit.GPIO21;
+ /* Увеличивает butt значением 2 * !GpioDataRegs.GPADAT.bit.GPIO20; данные butt. */
butt += 2 * !GpioDataRegs.GPADAT.bit.GPIO20;
+ /* Увеличивает butt значением 4 * !GpioDataRegs.GPADAT.bit.GPIO22; данные butt. */
butt += 4 * !GpioDataRegs.GPADAT.bit.GPIO22;
+ /* Увеличивает butt значением 8 * !GpioDataRegs.GPBDAT.bit.GPIO51; данные butt. */
butt += 8 * !GpioDataRegs.GPBDAT.bit.GPIO51;
+ /* Записывает Jumpers значением butt; данные Jumpers. */
Jumpers = butt;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/pulto.c b/Source/Internal/pulto.c
index 2efd425..e880d61 100644
--- a/Source/Internal/pulto.c
+++ b/Source/Internal/pulto.c
@@ -1,107 +1,196 @@
+/* Обмен и индикация пульта. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
-#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
+#include "DSP2833x_SWPrioritizedIsrLevels.h"
+/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
#include "RS485.h"
+/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
#include "message.h"
+/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
#include "filter_bat2.h"
+/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
#include "measure.h"
+/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
#include "package.h"
+/* Подключает "pulto.h": обмен и индикация пульта. */
#include "pulto.h"
+/* Подключает "kanal.h": последовательный вывод данных канала индикации. */
#include "kanal.h"
+/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
#include "peripher.h"
+/* Объявляет isMask — is маска. */
unsigned long isMask;
+/* Объявляет isNumb — данные isNumb. */
int isNumb;
+/* Объявляет quaLamp — данные quaLamp. Начальное значение задаётся справа от знака равенства. */
int quaLamp = 6;
+/* Объявляет Lonely — данные Lonely. Начальное значение задаётся справа от знака равенства. */
unsigned long Lonely=0;
+/* Начинает функцию what_is; назначение модуля — обмен и индикация пульта. */
void what_is()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет count_blink — число blink. */
static unsigned int count_blink;
+ /* Объявляет numb — данные numb. Начальное значение задаётся справа от знака равенства. */
static int numb=0;
+ /* Проверяет if(++count_blink >= BLINK_TIME); последующий оператор выполняется только при истинном условии. */
if(++count_blink >= BLINK_TIME)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает count_blink значением 0; число blink. */
count_blink=0;
+ /* Записывает numb значением 0; данные numb. */
numb++; if(numb==10) numb=0;
+ /* Записывает isNumb значением numb*1000 + numb*100 + numb*10 +numb; данные isNumb. */
isNumb = numb*1000 + numb*100 + numb*10 +numb;
+ /* Проверяет if(isMask) isMask = 0; последующий оператор выполняется только при истинном условии. */
if(isMask) isMask = 0;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else isMask = 0xFFFFFFFF;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
+/* Обслуживает периодический обмен и индикацию пульта вместо измерительной платы. */
interrupt void cpu_timer1_isr_PULT(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет cownt — данные cownt; count_bright — число bright. Начальное значение задаётся справа от знака равенства. */
static int cownt=0,count_bright;
+ /* Объявляет light — данные light; i — данные i. Начальное значение задаётся справа от знака равенства. */
unsigned int light=0, i;
+ /* Объявляет Alone — данные Alone; READY_FREQ — частота основного такта Timer1 в герцах. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
unsigned int Alone = 20*READY_FREQ;
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Изменяет счётчик в выражении CpuTimer1.InterruptCount++; на один для следующего шага. */
CpuTimer1.InterruptCount++;
+ /* Устанавливает биты IER значением MINT13; регистр разрешения прерываний ядра C28x. */
IER |= MINT13; // Set "global" priority
+ /* Разрешение маскируемых прерываний ядра. */
EINT;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS; // This is needed to disable write to EALLOW protected registers
+ /* Проверяет if(!cReset) ServiceDog(); последующий оператор выполняется только при истинном условии. */
if(!cReset) ServiceDog();
+ /* Проверяет if(++CanPowse >= CANPOWSE); последующий оператор выполняется только при истинном условии. */
if(++CanPowse >= CANPOWSE)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает CanPowse значением 0; CAN Powse. */
CanPowse = 0;
+ /* Записывает CanGO значением 1; CAN GO. */
CanGO = 1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- toggle_ONLINE(); // ñòðîá äëà ÏËÈÑ
- toggle_RES_OUT_1(); // òèïà ýòî ãîòîâíîñòü
- toggle_RES_OUT_2(); // íà âñàêèé
+ /* Переключает аппаратный сигнал через toggle_ONLINE();. */
+ toggle_ONLINE(); // строб дла ПЛИС
+ /* Переключает аппаратный сигнал через toggle_RES_OUT_1();. */
+ toggle_RES_OUT_1(); // типа это готовность
+ /* Переключает аппаратный сигнал через toggle_RES_OUT_2();. */
+ toggle_RES_OUT_2(); // на всакий
+ /* Проверяет if(++Lonely > Alone) Lonely = Alone; последующий оператор выполняется только при истинном условии. */
if(++Lonely > Alone) Lonely = Alone;
+ /* Проверяет if(++count_bright >= maximum_bright) count_bright = 0; последующий оператор выполняется только при истинном условии. */
if(++count_bright >= maximum_bright) count_bright = 0 ;
+ /* Цикл for(i=0; i2) cownt=0; последующий оператор выполняется только при истинном условии. */
if(++cownt>2) cownt=0;
+ /* Проверяет if(cTestLamp|bTestLamp); последующий оператор выполняется только при истинном условии. */
if(cTestLamp|bTestLamp)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает what_is с аргументами () в текущей последовательности операций. */
what_is();
+ /* Проверяет if(cownt == 0) kanal_Send(0,isNumb,4); последующий оператор выполняется только при истинном условии. */
if(cownt == 0) kanal_Send(0,isNumb,4);
+ /* Проверяет if(cownt == 1) kanal_Send(1,isNumb,4); последующий оператор выполняется только при истинном условии. */
if(cownt == 1) kanal_Send(1,isNumb,4);
+ /* Вызывает kanal_Send с аргументами (2,isMask,0) в текущей последовательности операций. */
kanal_Send(2,isMask,0);
+ /* Проверяет if(cownt == 2) kanal_Send(3,isMask,0); последующий оператор выполняется только при истинном условии. */
if(cownt == 2) kanal_Send(3,isMask,0);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Проверяет if(cLiteFire); последующий оператор выполняется только при истинном условии. */
if(cLiteFire)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(cownt == 0) kanal_Send(0,8888,1); последующий оператор выполняется только при истинном условии. */
if(cownt == 0) kanal_Send(0,8888,1);
+ /* Проверяет if(cownt == 1) kanal_Send(1,8888,1); последующий оператор выполняется только при истинном условии. */
if(cownt == 1) kanal_Send(1,8888,1);
+ /* Вызывает kanal_Send с аргументами (2,0xFFFF & light,0) в текущей последовательности операций. */
kanal_Send(2,0xFFFF & light,0);
+ /* Проверяет if(cownt == 2) kanal_Send(3,0xFFFF,0); последующий оператор выполняется только при истинном условии. */
if(cownt == 2) kanal_Send(3,0xFFFF,0);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Проверяет if((Lonely >= Alone)); последующий оператор выполняется только при истинном условии. */
if((Lonely >= Alone))
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(cownt == 0) kanal_Send(0,0,0); последующий оператор выполняется только при истинном условии. */
if(cownt == 0) kanal_Send(0,0,0);
+ /* Проверяет if(cownt == 1) kanal_Send(1,0,0); последующий оператор выполняется только при истинном условии. */
if(cownt == 1) kanal_Send(1,0,0);
+ /* Вызывает kanal_Send с аргументами (2,0,0) в текущей последовательности операций. */
kanal_Send(2,0,0);
+ /* Проверяет if(cownt == 2) kanal_Send(3,0,0); последующий оператор выполняется только при истинном условии. */
if(cownt == 2) kanal_Send(3,0,0);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Условие компиляции OBOROT == STRAIGHT: выбранный блок включается в текущий вариант прошивки. */
#if OBOROT == STRAIGHT
+ /* Проверяет if(cownt == 0) kanal_Send(0,modbus[0],1); последующий оператор выполняется только при истинном условии. */
if(cownt == 0) kanal_Send(0,modbus[0],1);
+ /* Проверяет if(cownt == 1) kanal_Send(1,modbus[1],1); последующий оператор выполняется только при истинном условии. */
if(cownt == 1) kanal_Send(1,modbus[1],1);
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Проверяет if(cownt == 0) kanal_Send(0,modbus[1],1); последующий оператор выполняется только при истинном условии. */
if(cownt == 0) kanal_Send(0,modbus[1],1);
+ /* Проверяет if(cownt == 1) kanal_Send(1,modbus[0],1); последующий оператор выполняется только при истинном условии. */
if(cownt == 1) kanal_Send(1,modbus[0],1);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Вызывает kanal_Send с аргументами (2,modbus[2] & light,0) в текущей последовательности операций. */
kanal_Send(2,modbus[2] & light,0);
+ /* Проверяет if(cownt == 2) kanal_Send(3,modbus[3],0); последующий оператор выполняется только при истинном условии. */
if(cownt == 2) kanal_Send(3,modbus[3],0);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
diff --git a/Source/Internal/shared_ump.c b/Source/Internal/shared_ump.c
index 2c67289..0b363f7 100644
--- a/Source/Internal/shared_ump.c
+++ b/Source/Internal/shared_ump.c
@@ -1,7 +1,12 @@
+/* Подключение общей реализации УМП и паспорта прошивки из соседнего репозитория. Русские пояснения сохранены в UTF-8. */
/* Build the canonical sources directly; do not copy their implementations. */
+/* Подключает "../firmware-info/src/firmware_info_static.c": настройки и интерфейс firmware_info_static. */
#include "../firmware-info/src/firmware_info_static.c"
/* Bind only this PM35 application's identity. The shared transport still owns
* range checks, read-only access, CRC and CAN fragment packing. */
+/* Задаёт UMP_FIRMWARE_INFO_READ = firmware_info_static_read; UMP FIRMWARE INFO чтение. */
#define UMP_FIRMWARE_INFO_READ firmware_info_static_read
+/* Подключает "src/ump_protocol.c": настройки и интерфейс ump_protocol. */
#include "src/ump_protocol.c"
+/* Подключает "ports/tms320f28335/ump_tms28335.c": настройки и интерфейс ump_tms28335. */
#include "ports/tms320f28335/ump_tms28335.c"
diff --git a/Source/Internal/spise2p.c b/Source/Internal/spise2p.c
index 57784fe..e84baf0 100644
--- a/Source/Internal/spise2p.c
+++ b/Source/Internal/spise2p.c
@@ -1,480 +1,781 @@
+/* Драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
+/* Подключает "spise2p.h": драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
#include "spise2p.h"
-/* Instance the SPI bus serial EEPROM driver */
-static SPISE2P_DRV se2p=SPISE2P_DRV_DEFAULTS;
+/* Instance the SPI bus serial EEPROM driver */
+/* Объявляет se2p — данные se2p; SPISE2P_DRV_DEFAULTS — данные SPISE2P_DRV_DEFAULTS. Начальное значение задаётся справа от знака равенства. */
+static SPISE2P_DRV se2p=SPISE2P_DRV_DEFAULTS;
/* Instance serial EEPROm data transfer structure */
+/* Продолжает список аргументов, полей или выражение static SE2P_DATA writeData, readData;; порядок элементов сохраняется. */
static SE2P_DATA writeData, readData;
// Prototype statements for functions found within this file.
+/* Объявляет интерфейс функции PRD_TICK; реализация вызывается через этот прототип. */
interrupt void PRD_TICK(void);
+/* Продвигает SPI EEPROM по Timer2 и подтверждает прерывание таймера. */
interrupt void cpu_timer2_isr(void);
+/* Объявляет ccc — данные ccc. Начальное значение задаётся справа от знака равенства. */
int ccc=0;
/********************************************************************/
-/******* SPI bus Serial EEPROM driver Initialization routine ********/
+/******* SPI bus Serial EEPROM driver Initialization routine ********/
/********************************************************************/
+/* Пишет EEPROM с разделением по физическим страницам; область параметров не пересекает образ прошивки. */
void Seeprom_write( SE2P_SIZE adres,
+ /* Объявляет buf — данные buf. */
unsigned int buf[],
+ /* Объявляет size). */
SE2P_SIZE size)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет len — данные len. */
unsigned int len;
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
/* Bound physical accesses before byte-to-word rounding. Legacy 32-KiB
* callers retain their compact driver; EXTEND is checked independently. */
+ /* Проверяет if (adres >= PROM_LEN или !size или size > (PROM_LEN-adres)*2) return; последующий оператор выполняется только при истинном условии. */
if (adres >= PROM_LEN || !size || size > (PROM_LEN-adres)*2) return;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Записывает CpuTimer2.InterruptCount значением 0; прерывание число. */
CpuTimer2.InterruptCount=0;
+ /* Записывает CpuTimer2Regs.TCR.all значением 0x4020; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.TCR.all = 0x4020; // Use write-only instruction to set TSS bit = 0
+ /* Повторяет или ожидает, пока выполняется while(!spiSe2pFree(&se2p));. */
while(!spiSe2pFree(&se2p));
+ /* Записывает size значением (size / WORD_LEN) + (size % WORD_LEN); размер. */
size = (size / WORD_LEN) + (size % WORD_LEN);
+ /* Повторяет или ожидает, пока выполняется while(size). */
while(size)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает len значением PAGE_LEN - (adres % PAGE_LEN); данные len. */
len = PAGE_LEN - (adres % PAGE_LEN);
+ /* Проверяет if(len > size) len=size; последующий оператор выполняется только при истинном условии. */
if(len > size) len=size;
+ /* Записывает writeData.dataPtr значением buf; данные Ptr. */
writeData.dataPtr = buf;
+ /* Записывает writeData.nrData значением len; nr данные. */
writeData.nrData = len;
+ /* Записывает writeData.se2pAddr значением adres * WORD_LEN; данные se2pAddr. */
writeData.se2pAddr = adres * WORD_LEN;
-
+
+ /* Вызывает spiSe2pWrite. Ставит задание записи в SPI-драйвер с учётом состояния занятости EEPROM. */
spiSe2pWrite(&se2p, &writeData);
+ /* Повторяет или ожидает, пока выполняется while(!spiSe2pFree(&se2p));. */
while(!spiSe2pFree(&se2p));
+ /* Увеличивает buf значением len; данные buf. */
buf += len;
+ /* Увеличивает adres значением len; данные adres. */
adres += len;
+ /* Уменьшает size значением len; размер. */
size -= len;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает CpuTimer2Regs.TCR.all значением 0x4010; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.TCR.all = 0x4010; // Use write-only instruction to set TSS bit = 1
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Читает EEPROM порциями; адрес задаётся словами C28x, размер переводится в число передаваемых слов. */
void Seeprom_read( SE2P_SIZE adres,
+ /* Объявляет buf — данные buf. */
unsigned int buf[],
+ /* Объявляет size). */
SE2P_SIZE size)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет len — данные len. */
unsigned int len;
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
/* Bound physical accesses before byte-to-word rounding. Legacy 32-KiB
* callers retain their compact driver; EXTEND is checked independently. */
+ /* Проверяет if (adres >= PROM_LEN или !size или size > (PROM_LEN-adres)*2) return; последующий оператор выполняется только при истинном условии. */
if (adres >= PROM_LEN || !size || size > (PROM_LEN-adres)*2) return;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Записывает CpuTimer2.InterruptCount значением 0; прерывание число. */
CpuTimer2.InterruptCount=0;
+ /* Записывает CpuTimer2Regs.TCR.all значением 0x4020; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.TCR.all = 0x4020; // Use write-only instruction to set TSS bit = 0
+ /* Повторяет или ожидает, пока выполняется while(!spiSe2pFree(&se2p));. */
while(!spiSe2pFree(&se2p));
+ /* Записывает size значением (size / WORD_LEN) + (size % WORD_LEN); размер. */
size = (size / WORD_LEN) + (size % WORD_LEN);
+ /* Повторяет или ожидает, пока выполняется while(size). */
while(size)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает len значением PAGE_LEN - (adres % PAGE_LEN); данные len. */
len = PAGE_LEN - (adres % PAGE_LEN);
+ /* Проверяет if(len > size) len=size; последующий оператор выполняется только при истинном условии. */
if(len > size) len=size;
+ /* Записывает readData.dataPtr значением buf; данные Ptr. */
readData.dataPtr = buf;
+ /* Записывает readData.nrData значением len; nr данные. */
readData.nrData = len;
+ /* Записывает readData.se2pAddr значением adres * WORD_LEN; данные se2pAddr. */
readData.se2pAddr = adres * WORD_LEN;
+ /* Вызывает spiSe2pRead. Ставит задание чтения в SPI-драйвер с указателем буфера, длиной и физическим адресом. */
spiSe2pRead(&se2p, &readData);
+ /* Повторяет или ожидает, пока выполняется while(!spiSe2pFree(&se2p));. */
while(!spiSe2pFree(&se2p));
+ /* Увеличивает buf значением len; данные buf. */
buf += len;
+ /* Увеличивает adres значением len; данные adres. */
adres += len;
+ /* Уменьшает size значением len; размер. */
size -= len;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает CpuTimer2Regs.TCR.all значением 0x4010; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.TCR.all = 0x4010; // Use write-only instruction to set TSS bit = 1
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию InitSeeprom; назначение модуля — драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
void InitSeeprom()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- se2p.init(&se2p);
+ /* Продолжает список аргументов, полей или выражение se2p.init(&se2p);; порядок элементов сохраняется. */
+ se2p.init(&se2p);
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW; // This is needed to write to EALLOW protected registers
+ /* Записывает PieVectTable.TINT2 значением &cpu_timer2_isr; данные TINT2. */
PieVectTable.TINT2 = &cpu_timer2_isr;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS; // This is needed to disable write to EALLOW protected registers
+ /* Инициализирует модуль вызовом InitCpuTimers(); перед его дальнейшим использованием. */
InitCpuTimers(); // For this example, only initialize the Cpu Timers
+ /* Вызывает ConfigCpuTimer с аргументами (&CpuTimer2, (SYSCLKOUT/1000000), 100) в текущей последовательности операций. */
ConfigCpuTimer(&CpuTimer2, (SYSCLKOUT/1000000), 100);
+ /* Устанавливает биты IER значением M_INT14; регистр разрешения прерываний ядра C28x. */
IER |= M_INT14;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию SPISE2P_DRV_init; назначение модуля — драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
void SPISE2P_DRV_init(SPISE2P_DRV *eeprom)
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
/* Configure SPI-A pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be SPI functional pins.
// Comment out other unwanted lines.
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
+ /* Записывает GpioCtrlRegs.GPAMUX2.bit.GPIO16 значением 1; аппаратная линия ввода/вывода GPIO16. */
GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; // Configure GPIO16 as SPISIMOA
+ /* Записывает GpioCtrlRegs.GPAMUX2.bit.GPIO17 значением 1; аппаратная линия ввода/вывода GPIO17. */
GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; // Configure GPIO17 as SPISOMIA
+ /* Записывает GpioCtrlRegs.GPAMUX2.bit.GPIO18 значением 1; аппаратная линия ввода/вывода GPIO18. */
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // Configure GPIO18 as SPICLKA
+ /* Записывает GpioCtrlRegs.GPAMUX2.bit.GPIO19 значением 0; аппаратная линия ввода/вывода GPIO19. */
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0; // General purpose I/O 19 (default) (I/O)
+ /* Записывает GpioCtrlRegs.GPADIR.bit.GPIO19 значением 1; аппаратная линия ввода/вывода GPIO19. */
GpioCtrlRegs.GPADIR.bit.GPIO19 = 1; // Configures the GPIO pin as an output
+ /* Записывает GpioDataRegs.GPADAT.bit.GPIO19 значением 0; аппаратная линия ввода/вывода GPIO19. */
GpioDataRegs.GPADAT.bit.GPIO19 = 0;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
/* Configure the SPI: 8-bit, Rising edge with delay */
+ /* Записывает SpiaRegs.SPICCR.all значением 0x0007; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=0x0007;
+ /* Записывает SpiaRegs.SPICTL.all значением 0x001F; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICTL.all=0x001F;
+ /* Записывает SpiaRegs.SPISTS.all значением 0x00; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPISTS.all=0x00;
+ /* Записывает SpiaRegs.SPIBRR значением CLKMULT * 6 + 1; данные SPIBRR. */
SpiaRegs.SPIBRR = CLKMULT * 6 + 1;
+ /* Записывает SpiaRegs.SPIFFTX.all значением 0x8000; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPIFFTX.all=0x8000;
+ /* Записывает SpiaRegs.SPIFFRX.all значением 0x0000; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPIFFRX.all=0x0000;
+ /* Записывает SpiaRegs.SPIFFCT.all значением 0x00; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPIFFCT.all=0x00;
+ /* Записывает SpiaRegs.SPIPRI.all значением 0x0010; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPIPRI.all=0x0010;
-
+
/* Disable Chip Select of Serial EEPROM */
+ /* Записывает eeprom->csr значением 0; данные eeprom->csr. */
eeprom->csr=0;
+ /* Записывает eeprom->msgPtr значением 0; данные eeprom->msgPtr. */
eeprom->msgPtr=0;
+ /* Записывает SpiaRegs.SPICCR.bit.SPISWRESET значением 1; данные SPISWRESET. */
SpiaRegs.SPICCR.bit.SPISWRESET=1; // Enable SCI
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию SPISE2P_DRV_csset; назначение модуля — драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
void SPISE2P_DRV_csset()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает GpioDataRegs.GPADAT.bit.GPIO19 значением 1; аппаратная линия ввода/вывода GPIO19. */
GpioDataRegs.GPADAT.bit.GPIO19 = 1;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию SPISE2P_DRV_csclr; назначение модуля — драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
void SPISE2P_DRV_csclr()
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает GpioDataRegs.GPADAT.bit.GPIO19 значением 0; аппаратная линия ввода/вывода GPIO19. */
GpioDataRegs.GPADAT.bit.GPIO19 = 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Проверяет завершение текущего задания SPI EEPROM перед постановкой следующего. */
unsigned int spiSe2pFree(SPISE2P_DRV *se2p)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Проверяет if(se2p->csr&0x3) return(0); последующий оператор выполняется только при истинном условии. */
if(se2p->csr&0x3) return(0);
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else return(1);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Ставит задание записи в SPI-драйвер с учётом состояния занятости EEPROM. */
void spiSe2pWrite(SPISE2P_DRV *se2p, SE2P_DATA *msgPtr)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает se2p->msgPtr значением msgPtr; данные se2p->msgPtr. */
se2p->msgPtr=msgPtr;
+ /* Устанавливает биты se2p->csr значением 0x1; данные se2p->csr. */
se2p->csr|=0x1;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Ставит задание чтения в SPI-драйвер с указателем буфера, длиной и физическим адресом. */
void spiSe2pRead(SPISE2P_DRV *se2p, SE2P_DATA *msgPtr)
-{
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+{
+ /* Записывает se2p->msgPtr значением msgPtr; данные se2p->msgPtr. */
se2p->msgPtr=msgPtr;
+ /* Устанавливает биты se2p->csr значением 0x2; данные se2p->csr. */
se2p->csr|=0x2;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/********************************************************************/
-/******* SPI bus Serial EEPROM driver Tick function *****************/
+/******* SPI bus Serial EEPROM driver Tick function *****************/
/********************************************************************/
+/* Продвигает SPI EEPROM по Timer2 и подтверждает прерывание таймера. */
interrupt void cpu_timer2_isr(void)
+/* Продолжает список аргументов, полей или выражение { EALLOW;; порядок элементов сохраняется. */
{ EALLOW;
+ /* Изменяет счётчик в выражении CpuTimer2.InterruptCount++; на один для следующего шага. */
CpuTimer2.InterruptCount++;
- se2p.tick(&se2p);
+ /* Продолжает список аргументов, полей или выражение se2p.tick(&se2p);; порядок элементов сохраняется. */
+ se2p.tick(&se2p);
// The CPU acknowledges the interrupt.
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
+
+/* Продвигает неблокирующий автомат SPI EEPROM: команда, адрес, данные и ожидание завершения записи. */
void SPISE2P_DRV_tick(SPISE2P_DRV *eeprom)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет step — данные step. Начальное значение задаётся справа от знака равенства. */
static unsigned int step=0;
+ /* Объявляет dataCount — данные число. Начальное значение задаётся справа от знака равенства. */
static unsigned int dataCount=0;
+ /* Объявляет dummy — данные dummy. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
static volatile unsigned int dummy=0;
-
+
+ /* Вызывает switch с аргументами (step) в текущей последовательности операций. */
switch(step)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
- case 0:
- /* If write request is SET, then trigger the Write operation
+ /* Ветвь выбора для 0; выполняется при совпадении селектора switch. */
+ case 0:
+ /* If write request is SET, then trigger the Write operation
If read request is SET, then trigger the Read operation
If Read request is also not SET, then continue to poll */
-
+
+ /* Проверяет if(eeprom->csr&SPISE2P_WRRQ); последующий оператор выполняется только при истинном условии. */
if(eeprom->csr&SPISE2P_WRRQ)
+ /* Записывает step значением 1; данные step. */
{ step=1;
- eeprom->csr|=SPISE2P_WRIP; /* Set Write in progress*/
+ eeprom->csr|=SPISE2P_WRIP; /* Set Write in progress*/ /* Устанавливает биты eeprom->csr значением SPISE2P_WRIP; данные eeprom->csr. */
+ /* Продолжает список аргументов, полей или выражение eeprom->csclr();; порядок элементов сохраняется. */
eeprom->csclr();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
-
+
+ /* Проверяет if(eeprom->csr&SPISE2P_RDRQ); последующий оператор выполняется только при истинном условии. */
if(eeprom->csr&SPISE2P_RDRQ)
+ /* Записывает step значением 13; данные step. */
{ step=13;
- eeprom->csr|=SPISE2P_RDIP; /* Set Read in progress */
+ eeprom->csr|=SPISE2P_RDIP; /* Set Read in progress */ /* Устанавливает биты eeprom->csr значением SPISE2P_RDIP; данные eeprom->csr. */
+ /* Продолжает список аргументов, полей или выражение eeprom->csclr();; порядок элементов сохраняется. */
eeprom->csclr();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
-
+
+ /* Ветвь выбора для 1; выполняется при совпадении селектора switch. */
case 1:
- /************************************************************
+ /************************************************************
*********** SPI bus EEPROM Write Starts from here ***********
*************************************************************
- Prier to any attempt to write data to SPI serial EEPROM
+ Prier to any attempt to write data to SPI serial EEPROM
Write Enable Latch must be set by issuing the WREN command */
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением SPISE2P_WREN_CMD; данные SPITXBUF. */
SpiaRegs.SPITXBUF=SPISE2P_WREN_CMD;
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1;
+ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1;
+ /* Записывает step значением 2; данные step. */
step=2;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 2:
- /* Wait for VSPI State machine to send the WREN command and
+ /* Ветвь выбора для 2; выполняется при совпадении селектора switch. */
+ case 2:
+ /* Wait for VSPI State machine to send the WREN command and
serial EEPROM Chip Select must be brought to HIGH to set
the WREN latch */
-
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- {
- dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */
+
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
+ /* Продолжает список аргументов, полей или выражение eeprom->csset();; порядок элементов сохраняется. */
eeprom->csset();
+ /* Записывает step значением 3; данные step. */
step=3;
- }
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 3:
- /* Assert CS of Serial EEPROM and send WRITE command */
+ /* Ветвь выбора для 3; выполняется при совпадении селектора switch. */
+ case 3:
+ /* Assert CS of Serial EEPROM and send WRITE command */
- eeprom->csclr();
+ /* Продолжает список аргументов, полей или выражение eeprom->csclr();; порядок элементов сохраняется. */
+ eeprom->csclr();
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением SPISE2P_WRITE_CMD; данные SPITXBUF. */
SpiaRegs.SPITXBUF=SPISE2P_WRITE_CMD;
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1;
+ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1;
+ /* Записывает step значением 4; данные step. */
step=4;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
-
- case 4:
- /* Wait for VSPI State machine to send the WRITE command */
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */
+ /* Ветвь выбора для 4; выполняется при совпадении селектора switch. */
+ case 4:
+ /* Wait for VSPI State machine to send the WRITE command */
+
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
+ /* Записывает step значением 5; данные step. */
step=5;
- }
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 5:
+ /* Ветвь выбора для 5; выполняется при совпадении селектора switch. */
+ case 5:
/* Send Address */
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением (unsigned int)(eeprom->msgPtr->se2pAddr >> 16) << 8; данные SPITXBUF. */
SpiaRegs.SPITXBUF=(unsigned int)(eeprom->msgPtr->se2pAddr >> 16) << 8;
+ /* Записывает step значением 20; данные step. */
step=20;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
+ /* Ветвь выбора для 20; выполняется при совпадении селектора switch. */
case 20:
+ /* Проверяет if (!SpiaRegs.SPISTS.bit.INT_FLAG) break; последующий оператор выполняется только при истинном условии. */
if (!SpiaRegs.SPISTS.bit.INT_FLAG) break;
+ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
dummy=SpiaRegs.SPIRXBUF;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (SPISE2P_ADDR_WIDTH==SIXTEEN_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_ADDR_WIDTH==SIXTEEN_BIT)
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR16BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all= SPISE2P_TFR16BIT;
- SpiaRegs.SPITXBUF=eeprom->msgPtr->se2pAddr;
+ /* Записывает SpiaRegs.SPITXBUF значением eeprom->msgPtr->se2pAddr; данные SPITXBUF. */
+ SpiaRegs.SPITXBUF=eeprom->msgPtr->se2pAddr;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (SPISE2P_ADDR_WIDTH==EIGHT_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_ADDR_WIDTH==EIGHT_BIT)
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all= SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением eeprom->msgPtr->se2pAddr<<8; данные SPITXBUF. */
SpiaRegs.SPITXBUF=eeprom->msgPtr->se2pAddr<<8;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */
- step=6;
- break;
-
- case 6:
- /* Wait for VSPI State machine to send the Address */
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */
- step=7;
- }
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ /* Записывает step значением 6; данные step. */
+ step=6;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
-
- case 7:
+
+ /* Ветвь выбора для 6; выполняется при совпадении селектора switch. */
+ case 6:
+ /* Wait for VSPI State machine to send the Address */
+
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
+ /* Записывает step значением 7; данные step. */
+ step=7;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
+ break;
+
+ /* Ветвь выбора для 7; выполняется при совпадении селектора switch. */
+ case 7:
/* Send Data */
+ /* Условие компиляции (SPISE2P_DATA_WIDTH==SIXTEEN_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_DATA_WIDTH==SIXTEEN_BIT)
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR16BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=SPISE2P_TFR16BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением *(eeprom->msgPtr->dataPtr+dataCount); данные SPITXBUF. */
SpiaRegs.SPITXBUF=*(eeprom->msgPtr->dataPtr+dataCount);
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
+
+ /* Условие компиляции (SPISE2P_DATA_WIDTH==EIGHT_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_DATA_WIDTH==EIGHT_BIT)
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=SPISE2P_TFR8BIT;
- SpiaRegs.SPITXBUF=*(eeprom->msgPtr->dataPtr+dataCount)<<8;
+ /* Записывает SpiaRegs.SPITXBUF значением *(eeprom->msgPtr->dataPtr+dataCount)<<8; данные SPITXBUF. */
+ SpiaRegs.SPITXBUF=*(eeprom->msgPtr->dataPtr+dataCount)<<8;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
+
+ /* Изменяет счётчик в выражении dataCount++; на один для следующего шага. */
dataCount++;
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ /* Записывает step значением 8; данные step. */
step=8;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 8:
+ /* Ветвь выбора для 8; выполняется при совпадении селектора switch. */
+ case 8:
/* Wait for VSPI State machine to send the Data.
- If all the data are sent, then set the CS pin to HIGH
+ If all the data are sent, then set the CS pin to HIGH
to program or write the data in EEPROM array */
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
+ /* Проверяет if (dataCount==eeprom->msgPtr->nrData); последующий оператор выполняется только при истинном условии. */
if (dataCount==eeprom->msgPtr->nrData)
+ /* Продолжает список аргументов, полей или выражение { eeprom->csset();; порядок элементов сохраняется. */
{ eeprom->csset();
+ /* Записывает step значением 9;}; данные step. */
step=9;}
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
- step=7; /* Write next data */
+ step=7; /* Write next data */ /* Записывает step значением 7; данные step. */
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 9:
- /* Read the EEPROM status register to check whether the
+ /* Ветвь выбора для 9; выполняется при совпадении селектора switch. */
+ case 9:
+ /* Read the EEPROM status register to check whether the
data sent are indeed programmed to the EEPROM array.
Hence, send RDSR command to EEPROM to read status reg. */
+ /* Продолжает список аргументов, полей или выражение eeprom->csclr();; порядок элементов сохраняется. */
eeprom->csclr();
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением SPISE2P_RDSR_CMD; данные SPITXBUF. */
SpiaRegs.SPITXBUF=SPISE2P_RDSR_CMD;
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ /* Записывает step значением 10; данные step. */
step=10;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 10:
+ /* Ветвь выбора для 10; выполняется при совпадении селектора switch. */
+ case 10:
/* Wait for VSPI State machine to send RDSR command */
-
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */
+
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
+ /* Записывает step значением 11; данные step. */
step=11;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- break;
-
- case 11:
- /* Send dummy Data to read Status reg. */
-
- SpiaRegs.SPITXBUF=SPISE2P_DUMMY_DATA;
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */
- step=12;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 12:
+ /* Ветвь выбора для 11; выполняется при совпадении селектора switch. */
+ case 11:
+ /* Send dummy Data to read Status reg. */
+
+ /* Записывает SpiaRegs.SPITXBUF значением SPISE2P_DUMMY_DATA; данные SPITXBUF. */
+ SpiaRegs.SPITXBUF=SPISE2P_DUMMY_DATA;
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ /* Записывает step значением 12; данные step. */
+ step=12;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
+ break;
+
+ /* Ветвь выбора для 12; выполняется при совпадении селектора switch. */
+ case 12:
/* Wait for VSPI State machine to clock out status reg.
Check, whether the data are written to the EEPROM array,
- If written, then reset the WRIP(write in progress) and
+ If written, then reset the WRIP(write in progress) and
WRRQ(Write request bit) and go back to STATE0 */
-
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- { eeprom->csset();
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ /* Продолжает список аргументов, полей или выражение { eeprom->csset();; порядок элементов сохраняется. */
+ { eeprom->csset();
+
+ /* Проверяет if (SpiaRegs.SPIRXBUF & SPISE2P_BUSY_MASK ); последующий оператор выполняется только при истинном условии. */
if (SpiaRegs.SPIRXBUF & SPISE2P_BUSY_MASK )
+ /* Записывает step значением 9; данные step. */
step=9;
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else
+ /* Оставляет биты маски eeprom->csr значением (~SPISE2P_WRIP); данные eeprom->csr. */
{ eeprom->csr&=(~SPISE2P_WRIP);
+ /* Оставляет биты маски eeprom->csr значением (~SPISE2P_WRRQ); данные eeprom->csr. */
eeprom->csr&=(~SPISE2P_WRRQ);
+ /* Записывает step значением 0; данные step. */
step=0;
+ /* Записывает dataCount значением 0; данные число. */
dataCount=0;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
-
- case 13:
- /************************************************************
+
+ /* Ветвь выбора для 13; выполняется при совпадении селектора switch. */
+ case 13:
+ /************************************************************
*********** SPI bus EEPROM Read Starts from here ***********
*************************************************************
Send READ Command to SPI bus serail EEPROM */
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением SPISE2P_READ_CMD; данные SPITXBUF. */
SpiaRegs.SPITXBUF=SPISE2P_READ_CMD;
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ /* Записывает step значением 14; данные step. */
step=14;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
-
- case 14:
- /* Wait for VSPI State machine to send READ command */
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */
+ /* Ветвь выбора для 14; выполняется при совпадении селектора switch. */
+ case 14:
+ /* Wait for VSPI State machine to send READ command */
+
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
+ /* Записывает step значением 15; данные step. */
step=15;
- }
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 15:
+ /* Ветвь выбора для 15; выполняется при совпадении селектора switch. */
+ case 15:
/* Send Address */
+ /* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all=SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением (unsigned int)(eeprom->msgPtr->se2pAddr >> 16) << 8; данные SPITXBUF. */
SpiaRegs.SPITXBUF=(unsigned int)(eeprom->msgPtr->se2pAddr >> 16) << 8;
+ /* Записывает step значением 21; данные step. */
step=21;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
+ /* Ветвь выбора для 21; выполняется при совпадении селектора switch. */
case 21:
+ /* Проверяет if (!SpiaRegs.SPISTS.bit.INT_FLAG) break; последующий оператор выполняется только при истинном условии. */
if (!SpiaRegs.SPISTS.bit.INT_FLAG) break;
+ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
dummy=SpiaRegs.SPIRXBUF;
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (SPISE2P_ADDR_WIDTH==SIXTEEN_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_ADDR_WIDTH==SIXTEEN_BIT)
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR16BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all= SPISE2P_TFR16BIT;
- SpiaRegs.SPITXBUF=eeprom->msgPtr->se2pAddr;
+ /* Записывает SpiaRegs.SPITXBUF значением eeprom->msgPtr->se2pAddr; данные SPITXBUF. */
+ SpiaRegs.SPITXBUF=eeprom->msgPtr->se2pAddr;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Условие компиляции (SPISE2P_ADDR_WIDTH==EIGHT_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_ADDR_WIDTH==EIGHT_BIT)
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all= SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением eeprom->msgPtr->se2pAddr<<8; данные SPITXBUF. */
SpiaRegs.SPITXBUF=eeprom->msgPtr->se2pAddr<<8;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */
- step=16;
- break;
-
- case 16:
- /* Wait for VSPI State machine to send Address */
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */
- step=17;
- }
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ /* Записывает step значением 16; данные step. */
+ step=16;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
-
- case 17:
+
+ /* Ветвь выбора для 16; выполняется при совпадении селектора switch. */
+ case 16:
+ /* Wait for VSPI State machine to send Address */
+
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ { dummy=SpiaRegs.SPIRXBUF; /* Reset SPI INT FLAG */ /* Записывает dummy значением SpiaRegs.SPIRXBUF; данные dummy. */
+ /* Записывает step значением 17; данные step. */
+ step=17;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
+ break;
+
+ /* Ветвь выбора для 17; выполняется при совпадении селектора switch. */
+ case 17:
/* Send Dummy value to clock out data from serial EEPROM */
+ /* Условие компиляции (SPISE2P_DATA_WIDTH==SIXTEEN_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_DATA_WIDTH==SIXTEEN_BIT)
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR16BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all= SPISE2P_TFR16BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением SPISE2P_DUMMY_DATA; данные SPITXBUF. */
SpiaRegs.SPITXBUF=SPISE2P_DUMMY_DATA;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
- #if(SPISE2P_DATA_WIDTH==EIGHT_BIT)
+
+ /* Условие компиляции (SPISE2P_DATA_WIDTH==EIGHT_BIT): выбранный блок включается в текущий вариант прошивки. */
+ #if(SPISE2P_DATA_WIDTH==EIGHT_BIT)
+ /* Записывает SpiaRegs.SPICCR.all значением SPISE2P_TFR8BIT; представление регистра целым словом без разбиения на битовые поля. */
SpiaRegs.SPICCR.all= SPISE2P_TFR8BIT;
+ /* Записывает SpiaRegs.SPITXBUF значением SPISE2P_DUMMY_DATA<<8; данные SPITXBUF. */
SpiaRegs.SPITXBUF=SPISE2P_DUMMY_DATA<<8;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
- SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */
+
+ SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1; /* Set TXBUF FULL FLAG */ /* Записывает SpiaRegs.SPISTS.bit.BUFFULL_FLAG значением 1; BUFFULL флаг. */
+ /* Записывает step значением 18; данные step. */
step=18;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
- case 18:
+ /* Ветвь выбора для 18; выполняется при совпадении селектора switch. */
+ case 18:
/* Wait for VSPI State machine to clk out data from EEPROM */
- if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */
- {
+ if(SpiaRegs.SPISTS.bit.INT_FLAG) /* Check SPI INT FLAG */ /* Проверяет if(SpiaRegs.SPISTS.bit.INT_FLAG); последующий оператор выполняется только при истинном условии. */
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
+ {
+ /* Условие компиляции (SPISE2P_DATA_WIDTH==SIXTEEN_BIT): выбранный блок включается в текущий вариант прошивки. */
#if(SPISE2P_DATA_WIDTH==SIXTEEN_BIT)
- *(eeprom->msgPtr->dataPtr+dataCount)=SpiaRegs.SPIRXBUF;
+ /* Продолжает список аргументов, полей или выражение *(eeprom->msgPtr->dataPtr+dataCount)=SpiaRegs.SPIRXBUF;; порядок элементов сохраняется. */
+ *(eeprom->msgPtr->dataPtr+dataCount)=SpiaRegs.SPIRXBUF;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-
- #if(SPISE2P_DATA_WIDTH==EIGHT_BIT)
+
+ /* Условие компиляции (SPISE2P_DATA_WIDTH==EIGHT_BIT): выбранный блок включается в текущий вариант прошивки. */
+ #if(SPISE2P_DATA_WIDTH==EIGHT_BIT)
+ /* Продолжает список аргументов, полей или выражение *(eeprom->msgPtr->dataPtr+dataCount)=SpiaRegs.SPIRXBUF&0xFF;; порядок элементов сохраняется. */
*(eeprom->msgPtr->dataPtr+dataCount)=SpiaRegs.SPIRXBUF&0xFF;
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Изменяет счётчик в выражении dataCount++; на один для следующего шага. */
dataCount++;
+ /* Записывает step значением 19; данные step. */
step=19;
- }
- break;
-
- case 19:
- /* If all the data are read, terminate the read operation by
- rising the CS. Then reset the RDIP (Read in progress) bit
- and reset the RDRQ(Read request) bit and go back to STATE0 */
-
- if (dataCount==eeprom->msgPtr->nrData)
- { eeprom->csset();
- step=0;
- dataCount=0;
- eeprom->csr&=(~SPISE2P_RDIP);
- eeprom->csr&=(~SPISE2P_RDRQ);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
- else
- step=17;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
break;
+
+ /* Ветвь выбора для 19; выполняется при совпадении селектора switch. */
+ case 19:
+ /* If all the data are read, terminate the read operation by
+ rising the CS. Then reset the RDIP (Read in progress) bit
+ and reset the RDRQ(Read request) bit and go back to STATE0 */
+
+ /* Проверяет if (dataCount==eeprom->msgPtr->nrData); последующий оператор выполняется только при истинном условии. */
+ if (dataCount==eeprom->msgPtr->nrData)
+ /* Продолжает список аргументов, полей или выражение { eeprom->csset();; порядок элементов сохраняется. */
+ { eeprom->csset();
+ /* Записывает step значением 0; данные step. */
+ step=0;
+ /* Записывает dataCount значением 0; данные число. */
+ dataCount=0;
+ /* Оставляет биты маски eeprom->csr значением (~SPISE2P_RDIP); данные eeprom->csr. */
+ eeprom->csr&=(~SPISE2P_RDIP);
+ /* Оставляет биты маски eeprom->csr значением (~SPISE2P_RDRQ); данные eeprom->csr. */
+ eeprom->csr&=(~SPISE2P_RDRQ);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
+ }
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
+ else
+ /* Записывает step значением 17; данные step. */
+ step=17;
+ /* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
+ break;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/Source/Internal/tools.c b/Source/Internal/tools.c
index 382de8b..b9b08a3 100644
--- a/Source/Internal/tools.c
+++ b/Source/Internal/tools.c
@@ -1,3 +1,5 @@
+/* Настройка внешней памяти и служебные задержки. Русские пояснения сохранены в UTF-8. */
+/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
// Configure the timing paramaters for Zone 7.
@@ -5,64 +7,94 @@
// This function should not be executed from XINTF
// Adjust the timing based on the data manual and
// external device requirements.
+/* Настраивает временные параметры внешней шины XINTF Zone7 для RAM регистратора. */
void init_zone7(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
// Make sure the XINTF clock is enabled
+ /* Записывает SysCtrlRegs.PCLKCR3.bit.XINTFENCLK значением 1; данные XINTFENCLK. */
SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1;
// Configure the GPIO for XINTF with a 16-bit data bus
// This function is in DSP2833x_Xintf.c
+ /* Инициализирует модуль вызовом InitXintf16Gpio(); перед его дальнейшим использованием. */
InitXintf16Gpio();
+ /* Разрешение записи в защищённые регистры периферии. */
EALLOW;
// All Zones---------------------------------
// Timing for all zones based on XTIMCLK = SYSCLKOUT
+ /* Записывает XintfRegs.XINTCNF2.bit.XTIMCLK значением 0; данные XTIMCLK. */
XintfRegs.XINTCNF2.bit.XTIMCLK = 0;
// Buffer up to 3 writes
+ /* Записывает XintfRegs.XINTCNF2.bit.WRBUFF значением 3; данные WRBUFF. */
XintfRegs.XINTCNF2.bit.WRBUFF = 3;
// XCLKOUT is enabled
+ /* Записывает XintfRegs.XINTCNF2.bit.CLKOFF значением 0; данные CLKOFF. */
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// XCLKOUT = XTIMCLK
+ /* Записывает XintfRegs.XINTCNF2.bit.CLKMODE значением 0; данные CLKMODE. */
XintfRegs.XINTCNF2.bit.CLKMODE = 0;
// Zone 7------------------------------------
// When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater
// Zone write timing
+ /* Записывает XintfRegs.XTIMING7.bit.XWRLEAD значением 1; данные XWRLEAD. */
XintfRegs.XTIMING7.bit.XWRLEAD = 1;
+ /* Записывает XintfRegs.XTIMING7.bit.XWRACTIVE значением 2; данные XWRACTIVE. */
XintfRegs.XTIMING7.bit.XWRACTIVE = 2;
+ /* Записывает XintfRegs.XTIMING7.bit.XWRTRAIL значением 1; данные XWRTRAIL. */
XintfRegs.XTIMING7.bit.XWRTRAIL = 1;
// Zone read timing
+ /* Записывает XintfRegs.XTIMING7.bit.XRDLEAD значением 1; данные XRDLEAD. */
XintfRegs.XTIMING7.bit.XRDLEAD = 1;
+ /* Записывает XintfRegs.XTIMING7.bit.XRDACTIVE значением 3; данные XRDACTIVE. */
XintfRegs.XTIMING7.bit.XRDACTIVE = 3;
+ /* Записывает XintfRegs.XTIMING7.bit.XRDTRAIL значением 0; данные XRDTRAIL. */
XintfRegs.XTIMING7.bit.XRDTRAIL = 0;
// don't double all Zone read/write lead/active/trail timing
+ /* Записывает XintfRegs.XTIMING7.bit.X2TIMING значением 0; данные X2TIMING. */
XintfRegs.XTIMING7.bit.X2TIMING = 0;
// Zone will not sample XREADY signal
+ /* Записывает XintfRegs.XTIMING7.bit.USEREADY значением 0; данные USEREADY. */
XintfRegs.XTIMING7.bit.USEREADY = 0;
+ /* Записывает XintfRegs.XTIMING7.bit.READYMODE значением 0; данные READYMODE. */
XintfRegs.XTIMING7.bit.READYMODE = 0;
// 1,1 = x16 data bus
// 0,1 = x32 data bus
// other values are reserved
+ /* Записывает XintfRegs.XTIMING7.bit.XSIZE значением 3; данные XSIZE. */
XintfRegs.XTIMING7.bit.XSIZE = 3;
+ /* Закрытие доступа к защищённым регистрам периферии. */
EDIS;
//Force a pipeline flush to ensure that the write to
//the last register configured occurs before returning.
+ /* Вызывает asm с аргументами (" RPT #7 || NOP") в текущей последовательности операций. */
asm(" RPT #7 || NOP");
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Формирует задержку в микросекундах через калиброванную функцию DSP28x_usDelay. */
void pause_us(unsigned long t)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i. */
unsigned long i;
+ /* Записывает t значением t >> 1; данные t. */
t = t >> 1;
+ /* Цикл for (i = 0; i < t; i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < t; i++)
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает DSP28x_usDelay с аргументами (CLKMULT*8L) в текущей последовательности операций. */
DSP28x_usDelay(CLKMULT*8L);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
diff --git a/UKSSTMS320F28335/.ccsproject b/UKSSTMS320F28335/.ccsproject
index ff17ec1..67fb17f 100644
--- a/UKSSTMS320F28335/.ccsproject
+++ b/UKSSTMS320F28335/.ccsproject
@@ -1,13 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/UKSSTMS320F28335/.cproject b/UKSSTMS320F28335/.cproject
index 162d211..3e21595 100644
--- a/UKSSTMS320F28335/.cproject
+++ b/UKSSTMS320F28335/.cproject
@@ -1,384 +1,766 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
+
diff --git a/UKSSTMS320F28335/.gitignore b/UKSSTMS320F28335/.gitignore
index c744cf6..82f4496 100644
--- a/UKSSTMS320F28335/.gitignore
+++ b/UKSSTMS320F28335/.gitignore
@@ -1,6 +1,12 @@
+# Исключает из Git артефакты по шаблону ниже.
/Debug/
+# Исключает из Git артефакты по шаблону ниже.
/Source/
+# Исключает из Git артефакты по шаблону ниже.
/.launches/
+# Исключает из Git артефакты по шаблону ниже.
/targetConfigs/
+# Исключает из Git артефакты по шаблону ниже.
/project.log
+# Исключает из Git артефакты по шаблону ниже.
/Release/
diff --git a/UKSSTMS320F28335/.project b/UKSSTMS320F28335/.project
index 2414266..ee06cfe 100644
--- a/UKSSTMS320F28335/.project
+++ b/UKSSTMS320F28335/.project
@@ -1,224 +1,447 @@
+
+
Balsam_167
+
+
+
+
+
+
org.eclipse.cdt.managedbuilder.core.genmakebuilder
+
+
+
+
+
org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+
full,incremental,
+
+
+
+
+
+
com.ti.ccstudio.core.ccsNature
+
org.eclipse.cdt.core.cnature
+
org.eclipse.cdt.core.ccnature
+
org.eclipse.cdt.managedbuilder.core.managedBuildNature
+
org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
+
+
F28335.cmd
+
1
+
SRC_ROOT1/F28335.cmd
+
+
+
UKSSTMS320F28335.pjt
+
1
+
SRC_ROOT1/UKSSTMS320F28335.pjt
+
+
+
Debug/UKSSTMS320F28335.out
+
1
+
EXTERNAL_BUILD_ARTIFACT
+
+
+
Libraries/rts2800_fpu32.lib
+
1
+
SRC_ROOT1/Libraries/rts2800_fpu32.lib
+
+
+
Source/Internal/ADC.c
+
1
+
SRC_ROOT1/Source/Internal/ADC.c
+
+
+
Source/Internal/DAC.c
+
1
+
SRC_ROOT1/Source/Internal/DAC.c
+
+
+
Source/Internal/RS485.c
+
1
+
SRC_ROOT1/Source/Internal/RS485.c
+
+
+
Source/Internal/bios.c
+
1
+
SRC_ROOT1/Source/Internal/bios.c
+
+
+
Source/Internal/cntrl_adr.c
+
1
+
SRC_ROOT1/Source/Internal/cntrl_adr.c
+
+
+
Source/Internal/crc16.c
+
1
+
SRC_ROOT1/Source/Internal/crc16.c
+
+
+
Source/Internal/ecan.c
+
1
+
SRC_ROOT1/Source/Internal/ecan.c
+
+
+
Source/Internal/filter_bat2.c
+
1
+
SRC_ROOT1/Source/Internal/filter_bat2.c
+
+
+
Source/Internal/kanal.c
+
1
+
SRC_ROOT1/Source/Internal/kanal.c
+
+
+
Source/Internal/log_to_mem.c
+
1
+
SRC_ROOT1/Source/Internal/log_to_mem.c
+
+
+
Source/Internal/main.c
+
1
+
SRC_ROOT1/Source/Internal/main.c
+
+
+
Source/Internal/measure.c
+
1
+
SRC_ROOT1/Source/Internal/measure.c
+
+
+
Source/Internal/shared_ump.c
+
1
+
SRC_ROOT1/Source/Internal/shared_ump.c
+
+
+
Source/Internal/message.c
+
1
+
SRC_ROOT1/Source/Internal/message.c
+
+
+
Source/Internal/peripher.c
+
1
+
SRC_ROOT1/Source/Internal/peripher.c
+
+
+
Source/Internal/pulto.c
+
1
+
SRC_ROOT1/Source/Internal/pulto.c
+
+
+
Source/Internal/spise2p.c
+
1
+
SRC_ROOT1/Source/Internal/spise2p.c
+
+
+
Source/Internal/tools.c
+
1
+
SRC_ROOT1/Source/Internal/tools.c
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_ADC_cal.asm
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_ADC_cal.asm
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_CpuTimers.c
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_CpuTimers.c
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_PieCtrl.c
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_PieCtrl.c
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedDefaultIsr.c
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedDefaultIsr.c
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedPieVect.c
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_SWPrioritizedPieVect.c
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c
+
+
+
Source/External/v120/DSP2833x_common/source/DSP2833x_usDelay.asm
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/source/DSP2833x_usDelay.asm
+
+
+
Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_nonBIOS.cmd
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_headers/cmd/DSP2833x_Headers_nonBIOS.cmd
+
+
+
Source/External/v120/DSP2833x_headers/source/DSP2833x_GlobalVariableDefs.c
+
1
+
SRC_ROOT1/Source/External/v120/DSP2833x_headers/source/DSP2833x_GlobalVariableDefs.c
+
+
+
Source/Internal/Include
+
2
+
SRC_ROOT1/Source/Internal/Include
+
+
+
Source/External/v120/DSP2833x_headers/include
+
2
+
SRC_ROOT1/Source/External/v120/DSP2833x_headers/include
+
+
+
Source/External/v120/DSP2833x_common/include
+
2
+
SRC_ROOT1/Source/External/v120/DSP2833x_common/include
+
+
+
Source/Internal/gas167.c
+
1
+
SRC_ROOT1/Source/Internal/gas167.c
+
+
+
+
+
SRC_ROOT
+
$%7BPARENT-1-PROJECT_LOC%7D
+
+
+
SRC_ROOT1
+
$%7BPARENT-1-PROJECT_LOC%7D
+
+
+
diff --git a/UKSSTMS320F28335/.settings/org.eclipse.cdt.codan.core.prefs b/UKSSTMS320F28335/.settings/org.eclipse.cdt.codan.core.prefs
index f653028..595c4a4 100644
--- a/UKSSTMS320F28335/.settings/org.eclipse.cdt.codan.core.prefs
+++ b/UKSSTMS320F28335/.settings/org.eclipse.cdt.codan.core.prefs
@@ -1,3 +1,6 @@
+# Настройка Eclipse/CCS: eclipse.preferences.version.
eclipse.preferences.version=1
+# Настройка Eclipse/CCS: inEditor.
inEditor=false
+# Настройка Eclipse/CCS: onBuild.
onBuild=false
diff --git a/UKSSTMS320F28335/.settings/org.eclipse.cdt.debug.core.prefs b/UKSSTMS320F28335/.settings/org.eclipse.cdt.debug.core.prefs
index 2adc7b1..fe93a4a 100644
--- a/UKSSTMS320F28335/.settings/org.eclipse.cdt.debug.core.prefs
+++ b/UKSSTMS320F28335/.settings/org.eclipse.cdt.debug.core.prefs
@@ -1,2 +1,4 @@
+# Настройка Eclipse/CCS: eclipse.preferences.version.
eclipse.preferences.version=1
+# Настройка Eclipse/CCS: org.eclipse.cdt.debug.core.toggleBreakpointModel.
org.eclipse.cdt.debug.core.toggleBreakpointModel=com.ti.ccstudio.debug.CCSBreakpointMarker
diff --git a/UKSSTMS320F28335/.settings/org.eclipse.core.resources.prefs b/UKSSTMS320F28335/.settings/org.eclipse.core.resources.prefs
index abcaf1d..1be5656 100644
--- a/UKSSTMS320F28335/.settings/org.eclipse.core.resources.prefs
+++ b/UKSSTMS320F28335/.settings/org.eclipse.core.resources.prefs
@@ -1,106 +1,214 @@
+# Настройка Eclipse/CCS: eclipse.preferences.version.
eclipse.preferences.version=1
+# Настройка Eclipse/CCS: encoding//Debug/Libraries/subdir_rules.mk.
encoding//Debug/Libraries/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Libraries/subdir_vars.mk.
encoding//Debug/Libraries/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Source/External/v120/DSP2833x_common/source/subdir_rules.mk.
encoding//Debug/Source/External/v120/DSP2833x_common/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Source/External/v120/DSP2833x_common/source/subdir_vars.mk.
encoding//Debug/Source/External/v120/DSP2833x_common/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk.
encoding//Debug/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk.
encoding//Debug/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk.
encoding//Debug/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk.
encoding//Debug/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Source/Internal/subdir_rules.mk.
encoding//Debug/Source/Internal/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/Source/Internal/subdir_vars.mk.
encoding//Debug/Source/Internal/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/makefile.
encoding//Debug/makefile=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/objects.mk.
encoding//Debug/objects.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Libraries/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Libraries/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Libraries/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Libraries/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_common/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_common/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_common/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_common/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/Internal/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/Internal/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/Internal/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/Source/Internal/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/makefile.
encoding//Debug/optimizerAssistant/opt_for_speed__0/makefile=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/objects.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/objects.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/sources.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/sources.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__0/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__0/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Libraries/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Libraries/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Libraries/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Libraries/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_common/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_common/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_common/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_common/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/Internal/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/Internal/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/Internal/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/Source/Internal/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/makefile.
encoding//Debug/optimizerAssistant/opt_for_speed__1/makefile=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/objects.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/objects.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/sources.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/sources.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__1/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__1/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Libraries/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Libraries/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Libraries/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Libraries/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_common/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_common/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_common/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_common/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/Internal/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/Internal/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/Internal/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/Source/Internal/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/makefile.
encoding//Debug/optimizerAssistant/opt_for_speed__2/makefile=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/objects.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/objects.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/sources.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/sources.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__2/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__2/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Libraries/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Libraries/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Libraries/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Libraries/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_common/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_common/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_common/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_common/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/Internal/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/Internal/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/Internal/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/Source/Internal/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/makefile.
encoding//Debug/optimizerAssistant/opt_for_speed__3/makefile=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/objects.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/objects.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/sources.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/sources.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__3/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__3/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Libraries/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Libraries/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Libraries/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Libraries/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_common/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_common/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_common/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_common/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/Internal/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/Internal/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/Internal/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/Source/Internal/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/makefile.
encoding//Debug/optimizerAssistant/opt_for_speed__4/makefile=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/objects.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/objects.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/sources.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/sources.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__4/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__4/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Libraries/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Libraries/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Libraries/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Libraries/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_common/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_common/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_common/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_common/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_headers/cmd/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_headers/cmd/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_headers/source/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/External/v120/DSP2833x_headers/source/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/Internal/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/Internal/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/Internal/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/Source/Internal/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/makefile.
encoding//Debug/optimizerAssistant/opt_for_speed__5/makefile=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/objects.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/objects.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/sources.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/sources.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/subdir_rules.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/optimizerAssistant/opt_for_speed__5/subdir_vars.mk.
encoding//Debug/optimizerAssistant/opt_for_speed__5/subdir_vars.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/sources.mk.
encoding//Debug/sources.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/subdir_rules.mk.
encoding//Debug/subdir_rules.mk=UTF-8
+# Настройка Eclipse/CCS: encoding//Debug/subdir_vars.mk.
encoding//Debug/subdir_vars.mk=UTF-8
+# Кодировка всего проекта, включая связанные исходники.
+encoding/=UTF-8
diff --git a/UKSSTMS320F28335/28335_RAM_lnk.cmd b/UKSSTMS320F28335/28335_RAM_lnk.cmd
index 0db663f..14ad6e9 100644
--- a/UKSSTMS320F28335/28335_RAM_lnk.cmd
+++ b/UKSSTMS320F28335/28335_RAM_lnk.cmd
@@ -1,3 +1,4 @@
+/* Распределение секций программы и данных по RAM контроллера. Русские пояснения сохранены в UTF-8. */
/*
// TI File $Revision: /main/11 $
// Checkin $Date: April 15, 2009 09:57:28 $
@@ -78,69 +79,109 @@
*/
+/* Начинает описание физических блоков памяти для линкера. */
MEMORY
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+/* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
PAGE 0 :
/* BEGIN is used for the "boot to SARAM" bootloader mode */
- BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */
+ BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */ /* Записывает origin значением 0x000000, length = 0x000002; данные origin. */
+ /* Записывает origin значением 0x000050, length = 0x0003B0; данные origin. */
RAMM0 : origin = 0x000050, length = 0x0003B0
+ /* Записывает origin значением 0x008000, length = 0x001000; данные origin. */
RAML0 : origin = 0x008000, length = 0x001000
+ /* Записывает origin значением 0x009000, length = 0x001000; данные origin. */
RAML1 : origin = 0x009000, length = 0x001000
+ /* Записывает origin значением 0x00A000, length = 0x001000; данные origin. */
RAML2 : origin = 0x00A000, length = 0x001000
+ /* Записывает origin значением 0x00B000, length = 0x001000; данные origin. */
RAML3 : origin = 0x00B000, length = 0x001000
- ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */
- CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
- CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
+ ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */ /* Записывает origin значением 0x200000, length = 0x00FC00; данные origin. */
+ CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ /* Записывает origin значением 0x33FF80, length = 0x000076; данные origin. */
+ CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ /* Записывает origin значением 0x33FFF8, length = 0x000008; данные origin. */
+ /* Записывает origin значением 0x380080, length = 0x000009; данные origin. */
ADC_CAL : origin = 0x380080, length = 0x000009
+ /* Записывает origin значением 0x3FFFC0, length = 0x000002; данные origin. */
RESET : origin = 0x3FFFC0, length = 0x000002
+ /* Записывает origin значением 0x3FE000, length = 0x000b50; данные origin. */
IQTABLES : origin = 0x3FE000, length = 0x000b50
+ /* Записывает origin значением 0x3FEB50, length = 0x00008c; данные origin. */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c
+ /* Записывает origin значением 0x3FEBDC, length = 0x0006A0; данные origin. */
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0
+ /* Записывает origin значением 0x3FF27C, length = 0x000D44; данные origin. */
BOOTROM : origin = 0x3FF27C, length = 0x000D44
+/* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
PAGE 1 :
/* BOOT_RSVD is used by the boot ROM for stack. */
/* This section is only reserved to keep the BOOT ROM from */
/* corrupting this area during the debug process */
- BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
- RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
+ BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */ /* Записывает origin значением 0x000002, length = 0x00004E; данные origin. */
+ RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ /* Записывает origin значением 0x000400, length = 0x000400; данные origin. */
+ /* Записывает origin значением 0x00C000, length = 0x001000; данные origin. */
RAML4 : origin = 0x00C000, length = 0x001000
+ /* Записывает origin значением 0x00D000, length = 0x001000; данные origin. */
RAML5 : origin = 0x00D000, length = 0x001000
+ /* Записывает origin значением 0x00E000, length = 0x001000; данные origin. */
RAML6 : origin = 0x00E000, length = 0x001000
+ /* Записывает origin значением 0x00F000, length = 0x001000; данные origin. */
RAML7 : origin = 0x00F000, length = 0x001000
- ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */
+ ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ /* Записывает origin значением 0x20FC00, length = 0x000400; данные origin. */
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает описание размещения секций объектных файлов для линкера. */
SECTIONS
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
/* Setup for "boot to SARAM" mode:
The codestart section (found in DSP28_CodeStartBranch.asm)
re-directs execution to the start of user code. */
+ /* Записывает PAGE значением 0; данные PAGE. */
codestart : > BEGIN, PAGE = 0
-
+
+/* Включает следующий блок только при определённом символе __TI_COMPILER_VERSION__. */
#ifdef __TI_COMPILER_VERSION__
+ /* Условие компиляции __TI_COMPILER_VERSION__ >= 15009000: выбранный блок включается в текущий вариант прошивки. */
#if __TI_COMPILER_VERSION__ >= 15009000
+ /* Записывает PAGE значением 0; данные PAGE. */
.TI.ramfunc : {} > RAML0, PAGE = 0
+ /* Выбирает альтернативный блок текущего условия компиляции. */
#else
- ramfuncs : > RAML0, PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
+ ramfuncs : > RAML0, PAGE = 0
+ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
-#endif
-
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
+#endif
+
+ /* Записывает PAGE значением 0; данные PAGE. */
.text : > RAML1, PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
.cinit : > RAML0, PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
.pinit : > RAML0, PAGE = 0
+ /* Записывает PAGE значением 0; данные PAGE. */
.switch : > RAML0, PAGE = 0
+ /* Записывает PAGE значением 1; данные PAGE. */
.stack : > RAMM1, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
.ebss : > RAML4, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
.econst : > RAML5, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
.esysmem : > RAMM1, PAGE = 1
+ /* Записывает PAGE значением 0; данные PAGE. */
IQmath : > RAML1, PAGE = 0
+ /* Записывает PAGE значением 0, TYPE = NOLOAD; данные PAGE. */
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
/* Uncomment the section below if calling the IQNexp() or IQexp()
@@ -159,26 +200,34 @@ SECTIONS
}
*/
+ /* Записывает PAGE значением 0, TYPE = NOLOAD; данные PAGE. */
FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
+ /* Записывает PAGE значением 1; данные PAGE. */
DMARAML4 : > RAML4, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
DMARAML5 : > RAML5, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
DMARAML6 : > RAML6, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
DMARAML7 : > RAML7, PAGE = 1
+ /* Записывает PAGE значением 1; данные PAGE. */
ZONE7DATA : > ZONE7B, PAGE = 1
- .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used */
- csm_rsvd : > CSM_RSVD PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
- csmpasswds : > CSM_PWL PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
+ .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used */ /* Записывает PAGE значением 0, TYPE = DSECT; данные PAGE. */
+ csm_rsvd : > CSM_RSVD PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ /* Записывает PAGE значением 0, TYPE = DSECT; данные PAGE. */
+ csmpasswds : > CSM_PWL PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ /* Записывает PAGE значением 0, TYPE = DSECT; данные PAGE. */
/* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
+ /* Записывает load значением ADC_CAL, PAGE = 0, TYPE = NOLOAD; данные load. */
.adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/*
//===========================================================================
// End of file.
//===========================================================================
-*/
\ No newline at end of file
+*/
diff --git a/UKSSTMS320F28335/README.md b/UKSSTMS320F28335/README.md
index 4dd7c97..5f754d6 100644
--- a/UKSSTMS320F28335/README.md
+++ b/UKSSTMS320F28335/README.md
@@ -1,55 +1,59 @@
-## Номер выпуска
+# Сборка Бальзам-167
-Меняйте `FIRMWARE_VERSION_MAJOR`, `FIRMWARE_VERSION_MINOR` и
-`FIRMWARE_VERSION_PATCH` в `firmware_version.h` в корне проекта CCS.
-Например, `0U`, `1U`, `2U` задают версию 0.1.2. Сохраните файл и
-выполните Rebuild. После обновления настроек закройте/откройте проект и
-выполните Clean/Rebuild.
+Проект CCS использует TMS320F28335, модель памяти large и ABI COFF.
+Исходники и русские комментарии сохранены в UTF-8 без BOM. Кодировка проекта
+задана в .settings/org.eclipse.core.resources.prefs, правило редактора — в
+../.editorconfig. Подробная проверка покрытия: [COMMENT_AUDIT.md](../Doc/COMMENT_AUDIT.md).
-Debug и Release запускают `prepare_identity.py`: он читает номер из заголовка
-и передаёт его общему генератору. `firmware_identity.json` содержит только
-product/target; номер выпуска в нём редактировать не нужно.
-`${BuildDirectory}/generated/firmware_identity.h` и JSON-паспорт создаются
-автоматически; вручную их не меняйте. Диапазоны: major/minor 0..255,
-patch 0..999. Неверный номер останавливает генерацию.
-# Результаты сборки
+## Версия и паспорт прошивки
-Версия 0.1.1 возвращает паспорт прошивки и блочное чтение EEPROM поверх
-подтверждённой на плате базы `c6c9128`. COM_1 остаётся на 115200; исходники
-`main.c`, `RS485.c`, `RS485.h` и настройки PLL не менялись относительно этой базы.
-Не используйте 250000/256000 для проверки этой сборки. FIFO остаётся включённым,
-как в рабочей базе; диагностический вариант без FIFO здесь не используется.
-Блочное чтение, проверка размера и host-тесты проверяются программно;
-после загрузки сначала проверьте чтение версии 0.1.1, затем 256 байт EEPROM.
+Текущий номер 1.1.2 задаётся в firmware_version.h: major/minor 0..255,
+patch 0..999. Меняйте только три числовых определения версии и выполняйте
+Clean/Rebuild. firmware_identity.json хранит product/target.
-Debug post-build CCS12 также копирует проверенный BIN и сопутствующие
-`.manifest.json`/`.sha256` в
-`../newProject/SETGUI/..periph_28335/firmware/periph28335/bal`.
-Папка создаётся автоматически; имя BIN с Git commit сохраняется.
-Копирование выполняет `copy_bin_to_setgui.ps1` после успешной проверки образа
-и создания паспорта. Пути определяются относительно репозитория, не cwd CCS.
-Для ручного копирования: `./copy_bin_to_setgui.ps1 -Path ./Bin/<имя>.bin`.
+Debug и Release вызывают prepare_identity.py. Он читает номер версии и передаёт
+его общему генератору паспорта. generated/firmware_identity.h и JSON создаются
+в каталоге сборки; вручную их редактировать не нужно. Паспорт включает исходный
+коммит, признак незакоммиченных изменений и время UTC. Порядок проверки
+приведён в [FIRMWARE_IDENTITY.md](../Doc/FIRMWARE_IDENTITY.md).
-Версия работающей прошивки, SHA-256 BIN и паспорт сборки описаны в
-[инструкции для 167](../Doc/FIRMWARE_IDENTITY.md). Перед компиляцией запускается
-`preBuildStep.bat`; требуются Python 3.10+ и Git в PATH CCS. Debug post-build
-создаёт рядом с BIN файлы `.manifest.json` и `.sha256`.
+## Зависимости и настройки CCS
-Для сборки требуется общий UMP-протокол из соседнего репозитория:
-`../newProject/SETGUI/third_party/templates/c/set-protocol` (от корня этого
-репозитория). Пути к заголовкам заданы в `.cproject` для Debug и Release;
-`Source/Internal/shared_ump.c` подключён в `.project` и компилирует общую
-реализацию протокола и порт TMS320F28335. При другом расположении зависимости
-обновите оба пути Include Options в нужной конфигурации CCS.
+Для текущих конфигураций нужны Python, Git и TI C2000 22.6 LTS.
+Общая реализация УМП и порт TMS320F28335 подключаются из
+../newProject/SETGUI/third_party/templates/c/set-protocol относительно корня
+репозитория. shared_ump.c включает эту реализацию и модуль паспорта.
-После сборки Debug в `Bin` создаётся файл
-`UKSSTMS320F28335_.bin`, где `` — короткий хеш текущего
-коммита Git (не менее 8 символов). HEX сохраняет прежнее имя.
+В .cproject обе конфигурации используют генератор и post-build из
+K:/git_project/newProject/templates. При переносе проекта проверьте этот путь,
+пути Include Options к общей реализации и каталог назначения BIN. Генератор
+исходников и post-build сейчас находятся в соседнем репозитории; старые
+локальные build_bin.bat/preBuildStep.bat больше не входят в этот проект.
-BIN создаётся скриптом `build_bin.bat`; Git должен быть доступен в `PATH`
-процесса CCS. Если определить коммит не удалось, сборка завершается ошибкой.
-При наличии незакоммиченных правок хеш обозначает HEAD и не описывает эти правки.
+Post-build вызывает tools/firmware-build/ccs/postcompile.bat: формирует загрузочный
+образ, проверяет границы, создаёт паспорт и SHA-256. Текущий каталог копирования
+задан в .cproject:
+K:/git_project/newProject/SETGUI/..periph_28335/firmware/periph28335/balzam167.
-## GAS для новой EEPROM
+COM_1 работает на 115200 с FIFO. COM_2 использует 57600 для OWEN либо 115200
+для другого режима. Эти скорости задаются в main.c.
-При EEPROM_M95M02=1 доступен профиль GAS 167/v1 через Modbus и служебный CAN УМП. Карта, проверки и измеренные размеры: [GAS_167_M95M02.md](../Doc/GAS_167_M95M02.md). В сборке AT25256B GAS исключён; её загрузочный BIN не увеличивается. После обновления проекта выполнить Clean/Rebuild: новый gas167.c зарегистрирован в .project.
+## Профиль EEPROM и GAS
+
+В Source/Internal/Include/eeprom_config.h значение EEPROM_M95M02=0 выбирает
+AT25256B 32 КиБ; значение 1 — M95M02-DR 256 КиБ. Выбор обязан соответствовать
+микросхеме на плате. После изменения нужен Clean/Rebuild. При отдельной сборке
+определение должно совпадать у компилятора и у препроцессора линкера.
+
+GAS включается только при значении 1: технологические слова 0x5000..0x507F и
+дескриптор только для чтения 0x5F00..0x5F07. Транспорты — Modbus RTU и служебный
+CAN УМП. Карта и измеренные размеры: [GAS_167_M95M02.md](../Doc/GAS_167_M95M02.md).
+Подробное назначение модулей: [SOURCE_GUIDE.md](../Doc/SOURCE_GUIDE.md).
+
+## Проверки
+
+Запускайте из корня репозитория Python-скрипты tests/comments/run_test.py,
+tests/gas167/run_test.py, tests/eeprom_profiles/run_test.py,
+tests/load_control/run_test.py и проверки регистратора в tests/ump_logger.
+Проверка FIFO: tests/rs232_fifo/run_test.py --cc <путь к GCC>.
+Для MinGW каталог исполняемых файлов GCC должен присутствовать в PATH.
diff --git a/UKSSTMS320F28335/firmware_version.h b/UKSSTMS320F28335/firmware_version.h
index c6a5b44..972a395 100644
--- a/UKSSTMS320F28335/firmware_version.h
+++ b/UKSSTMS320F28335/firmware_version.h
@@ -1,9 +1,16 @@
+/* Настройки и интерфейс firmware_version. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: BALSAM_FIRMWARE_VERSION_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef BALSAM_FIRMWARE_VERSION_H
+/* Определяет защитный символ или переключатель BALSAM_FIRMWARE_VERSION_H для последующей компиляции. */
#define BALSAM_FIRMWARE_VERSION_H
/* Edit these numbers before releasing firmware, then rebuild. */
+/* Задаёт FIRMWARE_VERSION_MAJOR = 1U; данные FIRMWARE_VERSION_MAJOR. */
#define FIRMWARE_VERSION_MAJOR 1U
+/* Задаёт FIRMWARE_VERSION_MINOR = 1U; данные FIRMWARE_VERSION_MINOR. */
#define FIRMWARE_VERSION_MINOR 1U
+/* Задаёт FIRMWARE_VERSION_PATCH = 2U; данные FIRMWARE_VERSION_PATCH. */
#define FIRMWARE_VERSION_PATCH 2U
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
diff --git a/UKSSTMS320F28335/postBuildStep_Debug.old b/UKSSTMS320F28335/postBuildStep_Debug.old
index d7027dd..dc309db 100644
--- a/UKSSTMS320F28335/postBuildStep_Debug.old
+++ b/UKSSTMS320F28335/postBuildStep_Debug.old
@@ -1,35 +1,63 @@
+@rem Выполняет команду старого служебного сценария: @echo off.
@echo off
+@rem Выполняет команду старого служебного сценария: pushd ..\..\.
pushd ..\..\
+@rem Выполняет команду старого служебного сценария: setlocal.
setlocal
+@rem Метка перехода process_arg.
:process_arg
+@rem Выполняет команду старого служебного сценария: if "%1"=="" goto end_process_arg.
if "%1"=="" goto end_process_arg
+@rem Выполняет команду старого служебного сценария: set name=%1.
set name=%1
+@rem Выполняет команду старого служебного сценария: set value=.
set value=
+@rem Метка перехода process_arg_value.
:process_arg_value
+@rem Выполняет команду старого служебного сценария: if NOT "%value%"=="" set value=%value% %2.
if NOT "%value%"=="" set value=%value% %2
+@rem Выполняет команду старого служебного сценария: if "%value%"=="" set value=%2.
if "%value%"=="" set value=%2
+@rem Выполняет команду старого служебного сценария: shift.
shift
+@rem Выполняет команду старого служебного сценария: if "%2"=="!" goto set_arg.
if "%2"=="!" goto set_arg
+@rem Выполняет команду старого служебного сценария: if "%2"=="" goto set_arg.
if "%2"=="" goto set_arg
+@rem Выполняет команду старого служебного сценария: goto process_arg_value.
goto process_arg_value
+@rem Метка перехода set_arg.
:set_arg
+@rem Выполняет команду старого служебного сценария: set %name%=%value%.
set %name%=%value%
+@rem Выполняет команду старого служебного сценария: shift.
shift
+@rem Выполняет команду старого служебного сценария: shift.
shift
+@rem Выполняет команду старого служебного сценария: goto process_arg.
goto process_arg
+@rem Метка перехода end_process_arg.
:end_process_arg
+@rem Выполняет команду старого служебного сценария: echo. > temp_postBuildStep_Debug.bat.
echo. > temp_postBuildStep_Debug.bat
+@rem Выполняет команду старого служебного сценария: echo E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\hex2000.exe E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.out -boot -sci8 -map E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.map -o E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.hex -i >> temp_postBuildStep_Debug.bat.
echo E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\hex2000.exe E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.out -boot -sci8 -map E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.map -o E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.hex -i >> temp_postBuildStep_Debug.bat
+@rem Выполняет команду старого служебного сценария: echo E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\hex2000.exe E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.out -boot -sci8 -map E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.map -o E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.bin -b >> temp_postBuildStep_Debug.bat.
echo E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\hex2000.exe E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.out -boot -sci8 -map E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.map -o E:\workspace\setcorp\set506\git_project\ukssDimaCccs12\Bin\UKSSTMS320F28335.bin -b >> temp_postBuildStep_Debug.bat
+@rem Выполняет команду старого служебного сценария: call temp_postBuildStep_Debug.bat.
call temp_postBuildStep_Debug.bat
+@rem Выполняет команду старого служебного сценария: del temp_postBuildStep_Debug.bat.
del temp_postBuildStep_Debug.bat
+@rem Выполняет команду старого служебного сценария: PAUSE.
PAUSE
+@rem Выполняет команду старого служебного сценария: endlocal.
endlocal
+@rem Выполняет команду старого служебного сценария: popd.
popd
diff --git a/UKSSTMS320F28335/prepare_identity.py b/UKSSTMS320F28335/prepare_identity.py
index cff4b2d..565b51e 100644
--- a/UKSSTMS320F28335/prepare_identity.py
+++ b/UKSSTMS320F28335/prepare_identity.py
@@ -1,48 +1,90 @@
+# Настройки и интерфейс prepare_identity. Комментарии и исходный текст в UTF-8.
+# Продолжает текущий вызов, список или выражение: """Generate build identity using the release version from firmware_version.h."""; порядок аргументов сохраняется.
"""Generate build identity using the release version from firmware_version.h."""
+# Подключает модуль argparse для этой проверки или подготовки сборки.
import argparse
+# Подключает модуль importlib.util для этой проверки или подготовки сборки.
import importlib.util
+# Подключает модуль json для этой проверки или подготовки сборки.
import json
+# Импортирует необходимые имена: from pathlib import Path.
from pathlib import Path
+# Подключает модуль re для этой проверки или подготовки сборки.
import re
+# Подключает модуль tempfile для этой проверки или подготовки сборки.
import tempfile
+# Объявляет функцию read_version и её входные параметры.
def read_version(header):
+ # Читает исходный файл или образ для последующей проверки и разбора.
text = header.read_text(encoding="utf-8-sig")
+ # Задаёт text по выражению справа; значение используется последующими операциями.
text = re.sub(r"/\*.*?\*/|//[^\n]*", "", text, flags=re.S)
+ # Задаёт version по выражению справа; значение используется последующими операциями.
version = []
+ # Перебирает part, limit in (("MAJOR", 255), ("MINOR", 255), ("PATCH", 999)) в указанном порядке.
for part, limit in (("MAJOR", 255), ("MINOR", 255), ("PATCH", 999)):
+ # Задаёт name по выражению справа; значение используется последующими операциями.
name = "FIRMWARE_VERSION_" + part
+ # Задаёт definitions по выражению справа; значение используется последующими операциями.
definitions = re.findall(r"^\s*#\s*define\s+" + name + r"\b([^\n]*)", text, re.M)
+ # Проверяет условие if len(definitions) != 1 перед выполнением следующего блока.
if len(definitions) != 1:
+ # Останавливает текущую операцию с исключением ValueError(f"{header}: define {name} exactly once").
raise ValueError(f"{header}: define {name} exactly once")
+ # Задаёт value по выражению справа; значение используется последующими операциями.
value = definitions[0].strip()
+ # Проверяет условие if not re.fullmatch(r"(?:0|[1-9][0-9]*)[uU]?", value) перед выполнением следующего блока.
if not re.fullmatch(r"(?:0|[1-9][0-9]*)[uU]?", value):
+ # Останавливает текущую операцию с исключением ValueError(f"{header}: {name} must be a decimal integer").
raise ValueError(f"{header}: {name} must be a decimal integer")
+ # Задаёт number по выражению справа; значение используется последующими операциями.
number = int(value.rstrip("uU"))
+ # Проверяет условие if not 0 <= number <= limit перед выполнением следующего блока.
if not 0 <= number <= limit:
+ # Останавливает текущую операцию с исключением ValueError(f"{header}: {name} must be in 0..{limit}").
raise ValueError(f"{header}: {name} must be in 0..{limit}")
+ # Продолжает текущий вызов, список или выражение: version.append(number); порядок аргументов сохраняется.
version.append(number)
+ # Возвращает version вызывающему коду и завершает функцию.
return version
+# Объявляет функцию prepare и её входные параметры.
def prepare(project, templates, output):
+ # Читает исходный файл или образ для последующей проверки и разбора.
settings = json.loads((project / "firmware_identity.json").read_text(encoding="utf-8-sig"))
+ # Задаёт settings["version"] по выражению справа; значение используется последующими операциями.
settings["version"] = read_version(project / "firmware_version.h")
+ # Задаёт spec по выражению справа; значение используется последующими операциями.
spec = importlib.util.spec_from_file_location("shared_firmware_identity", templates / "c/firmware-info/tools/identity.py")
+ # Задаёт identity по выражению справа; значение используется последующими операциями.
identity = importlib.util.module_from_spec(spec)
+ # Продолжает текущий вызов, список или выражение: spec.loader.exec_module(identity); порядок аргументов сохраняется.
spec.loader.exec_module(identity)
# The source header owns SemVer; retain the shared generator and manifest format.
+ # Открывает управляемый ресурс tempfile.TemporaryDirectory(prefix="balsam-identity-") as directory с автоматическим освобождением.
with tempfile.TemporaryDirectory(prefix="balsam-identity-") as directory:
+ # Задаёт config по выражению справа; значение используется последующими операциями.
config = Path(directory) / "config.json"
+ # Сохраняет подготовленный файл в указанном формате для следующего шага.
config.write_text(json.dumps(settings), encoding="utf-8")
+ # Возвращает identity.prepare(project, templates, config, output) вызывающему коду и завершает функцию.
return identity.prepare(project, templates, config, output)
+# Проверяет условие if __name__ == "__main__" перед выполнением следующего блока.
if __name__ == "__main__":
+ # Задаёт parser по выражению справа; значение используется последующими операциями.
parser = argparse.ArgumentParser(description=__doc__)
+ # Задаёт parser.add_argument("--project", type по выражению справа; значение используется последующими операциями.
parser.add_argument("--project", type=Path, required=True)
+ # Задаёт parser.add_argument("--templates", type по выражению справа; значение используется последующими операциями.
parser.add_argument("--templates", type=Path, required=True)
+ # Задаёт parser.add_argument("--output", type по выражению справа; значение используется последующими операциями.
parser.add_argument("--output", type=Path, required=True)
+ # Задаёт args по выражению справа; значение используется последующими операциями.
args = parser.parse_args()
+ # Продолжает текущий вызов, список или выражение: print(json.dumps(prepare(args.project, args.templates, args.output))); порядок аргументов сохраняется.
print(json.dumps(prepare(args.project, args.templates, args.output)))
diff --git a/fixya.bat b/fixya.bat
index 9f8c871..f1dc503 100644
--- a/fixya.bat
+++ b/fixya.bat
@@ -1,3 +1,5 @@
+@rem Выполняет команду старого служебного сценария: fuckya.exe *.c.
fuckya.exe *.c
+@rem Выполняет команду старого служебного сценария: fuckya.exe *.h.
fuckya.exe *.h
diff --git a/tests/comments/run_test.py b/tests/comments/run_test.py
new file mode 100644
index 0000000..7a8381c
--- /dev/null
+++ b/tests/comments/run_test.py
@@ -0,0 +1,262 @@
+# Проверка comments на модели пк. Комментарии и исходный текст в UTF-8.
+# Продолжает текущий вызов, список или выражение: """Проверка UTF-8 и русских пояснений к каждой строке исходного кода."""; порядок аргументов сохраняется.
+"""Проверка UTF-8 и русских пояснений к каждой строке исходного кода."""
+# Подключает модуль argparse для этой проверки или подготовки сборки.
+import argparse
+# Подключает модуль io для этой проверки или подготовки сборки.
+import io
+# Импортирует необходимые имена: from pathlib import Path.
+from pathlib import Path
+# Подключает модуль re для этой проверки или подготовки сборки.
+import re
+# Подключает модуль subprocess для этой проверки или подготовки сборки.
+import subprocess
+# Подключает модуль tokenize для этой проверки или подготовки сборки.
+import tokenize
+
+# Задаёт ROOT по выражению справа; значение используется последующими операциями.
+ROOT = Path(__file__).resolve().parents[2]
+# Задаёт RUSSIAN по выражению справа; значение используется последующими операциями.
+RUSSIAN = re.compile("[А-Яа-яЁё]")
+# Задаёт C_SUFFIXES по выражению справа; значение используется последующими операциями.
+C_SUFFIXES = {".c", ".h", ".cmd", ".inc"}
+# Задаёт TEXT_SUFFIXES по выражению справа; значение используется последующими операциями.
+TEXT_SUFFIXES = C_SUFFIXES | {".asm", ".py", ".md", ".bat", ".old", ".prefs", ".json", ".pjt", ".lkf"}
+# Задаёт TEXT_NAMES по выражению справа; значение используется последующими операциями.
+TEXT_NAMES = {".project", ".cproject", ".ccsproject", ".gitignore", ".editorconfig"}
+
+# Объявляет функцию c_code_lines и её входные параметры.
+def c_code_lines(text):
+ # Задаёт block по выражению справа; значение используется последующими операциями.
+ block = False
+ # Перебирает line in text.splitlines() в указанном порядке.
+ for line in text.splitlines():
+ # Задаёт out по выражению справа; значение используется последующими операциями.
+ out = []
+ # Задаёт i по выражению справа; значение используется последующими операциями.
+ i = 0
+ # Задаёт quote по выражению справа; значение используется последующими операциями.
+ quote = None
+ # Повторяет блок при выполнении i < len(line).
+ while i < len(line):
+ # Проверяет условие if block перед выполнением следующего блока.
+ if block:
+ # Задаёт end по выражению справа; значение используется последующими операциями.
+ end = line.find("*/", i)
+ # Проверяет условие if end < 0 перед выполнением следующего блока.
+ if end < 0:
+ # Продолжает текущий вызов, список или выражение: break; порядок аргументов сохраняется.
+ break
+ # Задаёт block по выражению справа; значение используется последующими операциями.
+ block = False
+ # Задаёт i по выражению справа; значение используется последующими операциями.
+ i = end + 2
+ # Продолжает текущий вызов, список или выражение: out.append(" "); порядок аргументов сохраняется.
+ out.append(" ")
+ # Продолжает текущий вызов, список или выражение: continue; порядок аргументов сохраняется.
+ continue
+ # Задаёт c по выражению справа; значение используется последующими операциями.
+ c = line[i]
+ # Проверяет условие if quote перед выполнением следующего блока.
+ if quote:
+ # Продолжает текущий вызов, список или выражение: out.append(c); порядок аргументов сохраняется.
+ out.append(c)
+ # Проверяет условие if c == "\\" and i + 1 < len(line) перед выполнением следующего блока.
+ if c == "\\" and i + 1 < len(line):
+ # Задаёт i + по выражению справа; значение используется последующими операциями.
+ i += 1
+ # Продолжает текущий вызов, список или выражение: out.append(line[i]); порядок аргументов сохраняется.
+ out.append(line[i])
+ # Проверяет условие elif c == quote перед выполнением следующего блока.
+ elif c == quote:
+ # Задаёт quote по выражению справа; значение используется последующими операциями.
+ quote = None
+ # Задаёт i + по выражению справа; значение используется последующими операциями.
+ i += 1
+ # Продолжает текущий вызов, список или выражение: continue; порядок аргументов сохраняется.
+ continue
+ # Проверяет условие if line.startswith("//", i) перед выполнением следующего блока.
+ if line.startswith("//", i):
+ # Продолжает текущий вызов, список или выражение: break; порядок аргументов сохраняется.
+ break
+ # Проверяет условие if line.startswith("/*", i) перед выполнением следующего блока.
+ if line.startswith("/*", i):
+ # Задаёт block по выражению справа; значение используется последующими операциями.
+ block = True
+ # Задаёт i + по выражению справа; значение используется последующими операциями.
+ i += 2
+ # Продолжает текущий вызов, список или выражение: out.append(" "); порядок аргументов сохраняется.
+ out.append(" ")
+ # Продолжает текущий вызов, список или выражение: continue; порядок аргументов сохраняется.
+ continue
+ # Проверяет условие if c in "\"'" перед выполнением следующего блока.
+ if c in "\"'":
+ # Задаёт quote по выражению справа; значение используется последующими операциями.
+ quote = c
+ # Продолжает текущий вызов, список или выражение: out.append(c); порядок аргументов сохраняется.
+ out.append(c)
+ # Задаёт i + по выражению справа; значение используется последующими операциями.
+ i += 1
+ # Продолжает текущий вызов, список или выражение: yield "".join(out).strip(); порядок аргументов сохраняется.
+ yield "".join(out).strip()
+
+# Объявляет функцию python_code_lines и её входные параметры.
+def python_code_lines(text):
+ # Задаёт active по выражению справа; значение используется последующими операциями.
+ active = set()
+ # Задаёт strings по выражению справа; значение используется последующими операциями.
+ strings = set()
+ # Перебирает token in tokenize.generate_tokens(io.StringIO(text).readline) в указанном порядке.
+ for token in tokenize.generate_tokens(io.StringIO(text).readline):
+ # Проверяет условие if token.type == tokenize.STRING and token.end[0] > token.start[0] перед выполнением следующего блока.
+ if token.type == tokenize.STRING and token.end[0] > token.start[0]:
+ # Продолжает текущий вызов, список или выражение: strings.update(range(token.start[0] + 1, token.end[0] + 1)); порядок аргументов сохраняется.
+ strings.update(range(token.start[0] + 1, token.end[0] + 1))
+ # Проверяет условие if token.type not in {tokenize.COMMENT, tokenize.NL, tokenize.NEWLINE, tokenize.INDENT, tokenize.DEDENT, tokenize.ENDMARKER} перед выполнением следующего блока.
+ if token.type not in {tokenize.COMMENT, tokenize.NL, tokenize.NEWLINE, tokenize.INDENT, tokenize.DEDENT, tokenize.ENDMARKER}:
+ # Продолжает текущий вызов, список или выражение: active.add(token.start[0]); порядок аргументов сохраняется.
+ active.add(token.start[0])
+ # Задаёт lines по выражению справа; значение используется последующими операциями.
+ lines = text.splitlines()
+ # Возвращает [line.strip() if n in active and n not in strings else "" for n, line in enumerate(lines, 1)] вызывающему коду и завершает функцию.
+ return [line.strip() if n in active and n not in strings else "" for n, line in enumerate(lines, 1)]
+
+# Объявляет функцию audit и её входные параметры.
+def audit(path, text):
+ # Задаёт lines по выражению справа; значение используется последующими операциями.
+ lines = text.splitlines()
+ # Проверяет условие if path.suffix in C_SUFFIXES перед выполнением следующего блока.
+ if path.suffix in C_SUFFIXES:
+ # Задаёт code по выражению справа; значение используется последующими операциями.
+ code = list(c_code_lines(text))
+ # Проверяет условие elif path.suffix == ".asm" перед выполнением следующего блока.
+ elif path.suffix == ".asm":
+ # Задаёт code по выражению справа; значение используется последующими операциями.
+ code = [line.split(";")[0].strip() for line in lines]
+ # Проверяет условие elif path.suffix == ".py" перед выполнением следующего блока.
+ elif path.suffix == ".py":
+ # Задаёт code по выражению справа; значение используется последующими операциями.
+ code = python_code_lines(text)
+ # Обрабатывает альтернативу предыдущего условия.
+ else:
+ # Возвращает 0, [] вызывающему коду и завершает функцию.
+ return 0, []
+ # Задаёт missing по выражению справа; значение используется последующими операциями.
+ missing = []
+ # Задаёт count по выражению справа; значение используется последующими операциями.
+ count = 0
+ # Перебирает i, value in enumerate(code) в указанном порядке.
+ for i, value in enumerate(code):
+ # Проверяет условие if not value перед выполнением следующего блока.
+ if not value:
+ # Продолжает текущий вызов, список или выражение: continue; порядок аргументов сохраняется.
+ continue
+ # Задаёт count + по выражению справа; значение используется последующими операциями.
+ count += 1
+ # Проверяет условие if RUSSIAN.search(lines[i]) or (i and RUSSIAN.search(lines[i-1])) перед выполнением следующего блока.
+ if RUSSIAN.search(lines[i]) or (i and RUSSIAN.search(lines[i-1])):
+ # Продолжает текущий вызов, список или выражение: continue; порядок аргументов сохраняется.
+ continue
+ # Явное продолжение Python-выражения относится к пояснённой начальной строке.
+ # Проверяет условие if path.suffix == ".py" and i and lines[i-1].rstrip().endswith("\\") перед выполнением следующего блока.
+ if path.suffix == ".py" and i and lines[i-1].rstrip().endswith("\\"):
+ # Продолжает текущий вызов, список или выражение: continue; порядок аргументов сохраняется.
+ continue
+ # Продолжает текущий вызов, список или выражение: missing.append(i+1); порядок аргументов сохраняется.
+ missing.append(i+1)
+ # Возвращает count, missing вызывающему коду и завершает функцию.
+ return count, missing
+
+# Объявляет функцию main и её входные параметры.
+def main():
+ # Задаёт parser по выражению справа; значение используется последующими операциями.
+ parser = argparse.ArgumentParser(description=__doc__)
+ # Задаёт parser.add_argument("--report", type по выражению справа; значение используется последующими операциями.
+ parser.add_argument("--report", type=Path, help="Сохранить таблицу покрытия в Markdown")
+ # Задаёт args по выражению справа; значение используется последующими операциями.
+ args = parser.parse_args()
+ # Задаёт names по выражению справа; значение используется последующими операциями.
+ names = subprocess.check_output(["git", "ls-files", "-z"], cwd=ROOT).decode("utf-8").split("\0")
+ # Задаёт names по выражению справа; значение используется последующими операциями.
+ names = sorted(set(filter(None, names)) | {"tests/comments/run_test.py", ".editorconfig"})
+ # Задаёт rows по выражению справа; значение используется последующими операциями.
+ rows = []
+ # Задаёт errors по выражению справа; значение используется последующими операциями.
+ errors = []
+ # Задаёт checked по выражению справа; значение используется последующими операциями.
+ checked = 0
+ # Перебирает name in names в указанном порядке.
+ for name in names:
+ # Задаёт path по выражению справа; значение используется последующими операциями.
+ path = ROOT / name
+ # Проверяет условие if path.suffix.lower() not in TEXT_SUFFIXES and path.name not in TEXT_NAMES перед выполнением следующего блока.
+ if path.suffix.lower() not in TEXT_SUFFIXES and path.name not in TEXT_NAMES:
+ # Продолжает текущий вызов, список или выражение: continue; порядок аргументов сохраняется.
+ continue
+ # Начинает блок обработки возможной ошибки.
+ try:
+ # Читает исходный файл или образ для последующей проверки и разбора.
+ text = path.read_text(encoding="utf-8")
+ # Перехватывает указанный тип ошибки и выполняет обработку.
+ except UnicodeError as error:
+ # Продолжает текущий вызов, список или выражение: errors.append(f"{name}: неверная кодировка UTF-8: {error}"); порядок аргументов сохраняется.
+ errors.append(f"{name}: неверная кодировка UTF-8: {error}")
+ # Продолжает текущий вызов, список или выражение: continue; порядок аргументов сохраняется.
+ continue
+ # Задаёт checked + по выражению справа; значение используется последующими операциями.
+ checked += 1
+ # Задаёт count, missing по выражению справа; значение используется последующими операциями.
+ count, missing = audit(path, text)
+ # Проверяет условие if missing перед выполнением следующего блока.
+ if missing:
+ # Продолжает текущий вызов, список или выражение: errors.append(f"{name}: нет русского пояснения, строки {missing[:20]}"); порядок аргументов сохраняется.
+ errors.append(f"{name}: нет русского пояснения, строки {missing[:20]}")
+ # Проверяет условие if path.suffix in C_SUFFIXES or path.suffix in {".asm", ".py"} перед выполнением следующего блока.
+ if path.suffix in C_SUFFIXES or path.suffix in {".asm", ".py"}:
+ # Продолжает текущий вызов, список или выражение: rows.append((name, count, count-len(missing))); порядок аргументов сохраняется.
+ rows.append((name, count, count-len(missing)))
+ # Проверяет условие if args.report перед выполнением следующего блока.
+ if args.report:
+ # Задаёт report по выражению справа; значение используется последующими операциями.
+ report = [
+ # Продолжает текущий вызов, список или выражение: "# Проверка комментариев и кодировки",; порядок аргументов сохраняется.
+ "# Проверка комментариев и кодировки",
+ # Продолжает текущий вызов, список или выражение: "",; порядок аргументов сохраняется.
+ "",
+ # Продолжает текущий вызов, список или выражение: "Проверка относится к редактируемым исходникам C/H, ASM, CMD, тестовым INC и Python.",; порядок аргументов сохраняется.
+ "Проверка относится к редактируемым исходникам C/H, ASM, CMD, тестовым INC и Python.",
+ # Продолжает текущий вызов, список или выражение: "Каждая непустая строка кода имеет русское пояснение перед ней или на ней. Пустые строки,",; порядок аргументов сохраняется.
+ "Каждая непустая строка кода имеет русское пояснение перед ней или на ней. Пустые строки,",
+ # Продолжает текущий вызов, список или выражение: "текст существующих комментариев и содержимое многострочных строк данных не считаются кодом.",; порядок аргументов сохраняется.
+ "текст существующих комментариев и содержимое многострочных строк данных не считаются кодом.",
+ # Продолжает текущий вызов, список или выражение: "Исходные уведомления TI сохранены. JSON-паспорта, индексы IDE, таблицы XLS и двоичные",; порядок аргументов сохраняется.
+ "Исходные уведомления TI сохранены. JSON-паспорта, индексы IDE, таблицы XLS и двоичные",
+ # Продолжает текущий вызов, список или выражение: "результаты сборки не допускают исходных комментариев; их назначение описано в документации.",; порядок аргументов сохраняется.
+ "результаты сборки не допускают исходных комментариев; их назначение описано в документации.",
+ # Продолжает текущий вызов, список или выражение: "",; порядок аргументов сохраняется.
+ "",
+ # Продолжает текущий вызов, список или выражение: f"UTF-8 проверен в {checked} текстовых файлах. Строк кода: {sum(r[1] for r in rows)}.",; порядок аргументов сохраняется.
+ f"UTF-8 проверен в {checked} текстовых файлах. Строк кода: {sum(r[1] for r in rows)}.",
+ # Продолжает текущий вызов, список или выражение: "",; порядок аргументов сохраняется.
+ "",
+ # Продолжает текущий вызов, список или выражение: "| Файл | Строк кода | С русским пояснением |",; порядок аргументов сохраняется.
+ "| Файл | Строк кода | С русским пояснением |",
+ # Продолжает текущий вызов, список или выражение: "| --- | ---: | ---: |",; порядок аргументов сохраняется.
+ "| --- | ---: | ---: |",
+ # Продолжает текущий вызов, список или выражение: ]; порядок аргументов сохраняется.
+ ]
+ # Задаёт report + по выражению справа; значение используется последующими операциями.
+ report += [f"| {name} | {count} | {covered} |" for name,count,covered in rows]
+ # Сохраняет подготовленный файл в указанном формате для следующего шага.
+ args.report.write_text("\n".join(report)+"\n", encoding="utf-8")
+ # Проверяет условие if errors перед выполнением следующего блока.
+ if errors:
+ # Останавливает текущую операцию с исключением SystemExit("\n".join(errors)).
+ raise SystemExit("\n".join(errors))
+ # Продолжает текущий вызов, список или выражение: print(f"PASS UTF-8: {checked} files; Russian comments: {len(rows)} source files, {sum(r[1] for r in rows)} code lines"); порядок аргументов сохраняется.
+ print(f"PASS UTF-8: {checked} files; Russian comments: {len(rows)} source files, {sum(r[1] for r in rows)} code lines")
+
+# Проверяет условие if __name__ == "__main__" перед выполнением следующего блока.
+if __name__ == "__main__":
+ # Продолжает текущий вызов, список или выражение: main(); порядок аргументов сохраняется.
+ main()
diff --git a/tests/eeprom_profiles/run_test.py b/tests/eeprom_profiles/run_test.py
index 8759d98..894d05a 100644
--- a/tests/eeprom_profiles/run_test.py
+++ b/tests/eeprom_profiles/run_test.py
@@ -1,21 +1,42 @@
+# Проверка eeprom_profiles на модели пк. Комментарии и исходный текст в UTF-8.
+# Продолжает текущий вызов, список или выражение: """Check SPI wire address widths for both production EEPROM configurations."""; порядок аргументов сохраняется.
"""Check SPI wire address widths for both production EEPROM configurations."""
+# Импортирует необходимые имена: from pathlib import Path.
from pathlib import Path
+# Подключает модуль subprocess для этой проверки или подготовки сборки.
import subprocess
+# Подключает модуль os для этой проверки или подготовки сборки.
import os
+# Подключает модуль shutil для этой проверки или подготовки сборки.
import shutil
+# Подключает модуль tempfile для этой проверки или подготовки сборки.
import tempfile
+# Задаёт root по выражению справа; значение используется последующими операциями.
root = Path(__file__).resolve().parents[2]
+# Задаёт protocol по выражению справа; значение используется последующими операциями.
protocol = root.parent / 'newProject/SETGUI/third_party/templates/c/set-protocol'
+# Задаёт compiler по выражению справа; значение используется последующими операциями.
compiler = os.environ.get('CC') or shutil.which('gcc') or 'C:/msys64/mingw64/bin/gcc.exe'
+# Задаёт os.environ['PATH'] по выражению справа; значение используется последующими операциями.
os.environ['PATH'] = str(Path(compiler).resolve().parent) + os.pathsep + os.environ['PATH']
+# Открывает управляемый ресурс tempfile.TemporaryDirectory() as folder с автоматическим освобождением.
with tempfile.TemporaryDirectory() as folder:
+ # Перебирает profile in (0, 1) в указанном порядке.
for profile in (0, 1):
+ # Задаёт exe по выражению справа; значение используется последующими операциями.
exe = Path(folder) / f'spi{profile}.exe'
+ # Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([compiler, '-std=c99',
+ # Задаёт f'-DEEPROM_M95M02 по выражению справа; значение используется последующими операциями.
f'-DEEPROM_M95M02={profile}', '-Itests/eeprom_profiles/stubs',
+ # Продолжает текущий вызов, список или выражение: '-ISource/Internal/Include', '-I' + str(protocol),; порядок аргументов сохраняется.
'-ISource/Internal/Include', '-I' + str(protocol),
+ # Продолжает текущий вызов, список или выражение: 'tests/eeprom_profiles/spi_test.c', '-o', str(exe)],; порядок аргументов сохраняется.
'tests/eeprom_profiles/spi_test.c', '-o', str(exe)],
+ # Задаёт cwd по выражению справа; значение используется последующими операциями.
cwd=root, check=True)
+ # Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([str(exe)], check=True, timeout=10)
+ # Продолжает текущий вызов, список или выражение: print(f'PASS SPI profile {profile}'); порядок аргументов сохраняется.
print(f'PASS SPI profile {profile}')
diff --git a/tests/eeprom_profiles/spi_test.c b/tests/eeprom_profiles/spi_test.c
index c0c876e..30efc8f 100644
--- a/tests/eeprom_profiles/spi_test.c
+++ b/tests/eeprom_profiles/spi_test.c
@@ -1,47 +1,93 @@
+/* Проверка eeprom_profiles на модели ПК. Русские пояснения сохранены в UTF-8. */
/* Exercise the production Timer2 SPI state machine; no hardware writes. */
+/* Подключает : настройки и интерфейс assert. */
#include
+/* Подключает "../../Source/Internal/spise2p.c": драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. */
#include "../../Source/Internal/spise2p.c"
+/* Продолжает список аргументов, полей или выражение static unsigned trace[300], widths[300], used;; порядок элементов сохраняется. */
static unsigned trace[300], widths[300], used;
+/* Начинает функцию transfer; назначение модуля — проверка eeprom_profiles на модели ПК. */
static void transfer(unsigned long address, int write)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает buf[2] значением {0x1234,0x5678}, i; данные buf. */
unsigned buf[2]={0x1234,0x5678}, i;
+ /* Записывает message значением {buf,2,address}; данные message. */
SE2P_DATA message={buf,2,address};
+ /* Записывает used значением 0; данные used. */
used=0;
+ /* Проверяет if(write) spiSe2pWrite(&se2p,&message); else spiSe2pRead(&se2p,&message); последующий оператор выполняется только при истинном условии. */
if(write) spiSe2pWrite(&se2p,&message); else spiSe2pRead(&se2p,&message);
+ /* Цикл for(i=0;i<100 && !spiSe2pFree(&se2p);i++) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0;i<100 && !spiSe2pFree(&se2p);i++) {
+ /* Записывает SpiaRegs.SPITXBUF значением 0xdead; данные SPITXBUF. */
SpiaRegs.SPITXBUF=0xdead;
- SpiaRegs.SPIRXBUF=0; /* WIP clear for write, deterministic read data. */
+ SpiaRegs.SPIRXBUF=0; /* WIP clear for write, deterministic read data. */ /* Записывает SpiaRegs.SPIRXBUF значением 0; данные SPIRXBUF. */
+ /* Записывает SpiaRegs.SPISTS.bit.INT_FLAG значением 1; INT флаг. */
SpiaRegs.SPISTS.bit.INT_FLAG=1;
+ /* Вызывает SPISE2P_DRV_tick. Продвигает неблокирующий автомат SPI EEPROM: команда, адрес, данные и ожидание завершения записи. */
SPISE2P_DRV_tick(&se2p);
+ /* Проверяет if(SpiaRegs.SPITXBUF!=0xdead); последующий оператор выполняется только при истинном условии. */
if(SpiaRegs.SPITXBUF!=0xdead) {
+ /* Вызывает assert с аргументами (GpioDataRegs.GPADAT.bit.GPIO19==0) в текущей последовательности операций. */
assert(GpioDataRegs.GPADAT.bit.GPIO19==0);
+ /* Записывает trace[used] значением SpiaRegs.SPITXBUF; данные trace. */
trace[used]=SpiaRegs.SPITXBUF;
+ /* Записывает widths[used++] значением (SpiaRegs.SPICCR.all&15)+1; данные widths. */
widths[used++]=(SpiaRegs.SPICCR.all&15)+1;
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает assert с аргументами (spiSe2pFree(&se2p) && GpioDataRegs.GPADAT.bit.GPIO19==1) в текущей последовательности операций. */
assert(spiSe2pFree(&se2p) && GpioDataRegs.GPADAT.bit.GPIO19==1);
+ /* Записывает i значением 0; данные i. */
i=0;
+ /* Проверяет if(write); последующий оператор выполняется только при истинном условии. */
if(write) { assert(trace[i]==0x0600 && widths[i++]==8); }
+ /* Вызывает assert с аргументами (trace[i]==(write ? 0x0200 : 0x0300) && widths[i++]==8) в текущей последовательности операций. */
assert(trace[i]==(write ? 0x0200 : 0x0300) && widths[i++]==8);
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+ /* Вызывает assert с аргументами (trace[i]==((address>>16)<<8) && widths[i++]==8) в текущей последовательности операций. */
assert(trace[i]==((address>>16)<<8) && widths[i++]==8);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Вызывает assert с аргументами (trace[i]==(address&65535) && widths[i++]==16) в текущей последовательности операций. */
assert(trace[i]==(address&65535) && widths[i++]==16);
+ /* Вызывает assert с аргументами (trace[i]==(write ? 0x1234 : 0) && widths[i++]==16) в текущей последовательности операций. */
assert(trace[i]==(write ? 0x1234 : 0) && widths[i++]==16);
+ /* Вызывает assert с аргументами (trace[i]==(write ? 0x5678 : 0) && widths[i++]==16) в текущей последовательности операций. */
assert(trace[i]==(write ? 0x5678 : 0) && widths[i++]==16);
+ /* Проверяет if(write); последующий оператор выполняется только при истинном условии. */
if(write) { assert(trace[i]==0x0500 && widths[i++]==8); assert(trace[i++]==0); }
+ /* Вызывает assert с аргументами (i==used) в текущей последовательности операций. */
assert(i==used);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Точка входа: настраивает периферию, загружает параметры и обслуживает команды в главном цикле. */
int main(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает SPISE2P_DRV_init с аргументами (&se2p) в текущей последовательности операций. */
SPISE2P_DRV_init(&se2p);
+ /* Вызывает transfer с аргументами (0x7ffc,0); transfer(0x7ffc,1) в текущей последовательности операций. */
transfer(0x7ffc,0); transfer(0x7ffc,1);
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+ /* Вызывает assert с аргументами (BALSAM167_EEPROM_FIRMWARE_BYTES==261884UL) в текущей последовательности операций. */
assert(BALSAM167_EEPROM_FIRMWARE_BYTES==261884UL);
+ /* Вызывает transfer с аргументами (0xfffe,0); transfer(0x10000,0) в текущей последовательности операций. */
transfer(0xfffe,0); transfer(0x10000,0);
+ /* Вызывает transfer с аргументами (0x20000,1); transfer(0x3fffc,0); transfer(0x3fffc,1) в текущей последовательности операций. */
transfer(0x20000,1); transfer(0x3fffc,0); transfer(0x3fffc,1);
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Вызывает assert с аргументами (BALSAM167_EEPROM_FIRMWARE_BYTES==32508) в текущей последовательности операций. */
assert(BALSAM167_EEPROM_FIRMWARE_BYTES==32508);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Завершает main и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/tests/eeprom_profiles/stubs/DSP2833x_Device.h b/tests/eeprom_profiles/stubs/DSP2833x_Device.h
index f0d64db..58aaa61 100644
--- a/tests/eeprom_profiles/stubs/DSP2833x_Device.h
+++ b/tests/eeprom_profiles/stubs/DSP2833x_Device.h
@@ -1,22 +1,45 @@
+/* Проверка eeprom_profiles/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: EEPROM_TEST_DEVICE_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef EEPROM_TEST_DEVICE_H
+/* Определяет защитный символ или переключатель EEPROM_TEST_DEVICE_H для последующей компиляции. */
#define EEPROM_TEST_DEVICE_H
+/* Подключает : настройки и интерфейс stdint. */
#include
+/* Определяет защитный символ или переключатель interrupt для последующей компиляции. */
#define interrupt
+/* Определяет защитный символ или переключатель EALLOW для последующей компиляции. */
#define EALLOW
+/* Определяет защитный символ или переключатель EDIS для последующей компиляции. */
#define EDIS
+/* Задаёт CLKMULT = 2; данные CLKMULT. */
#define CLKMULT 2
+/* Задаёт SYSCLKOUT = 60000000UL; данные SYSCLKOUT. */
#define SYSCLKOUT 60000000UL
+/* Задаёт M_INT14 = 0x2000; данные M_INT14. */
#define M_INT14 0x2000
+/* Продолжает список аргументов, полей или выражение static unsigned IER;; порядок элементов сохраняется. */
static unsigned IER;
+/* Описывает структуру bits; порядок полей определяет расположение данных. */
struct bits { unsigned GPIO16,GPIO17,GPIO18,GPIO19,SPISWRESET,BUFFULL_FLAG,INT_FLAG; };
+/* Описывает структуру reg; порядок полей определяет расположение данных. */
struct reg { unsigned all; struct bits bit; };
+/* Продолжает список аргументов, полей или выражение static struct { struct reg GPAMUX2,GPADIR; } GpioCtrlRegs;; порядок элементов сохраняется. */
static struct { struct reg GPAMUX2,GPADIR; } GpioCtrlRegs;
+/* Продолжает список аргументов, полей или выражение static struct { struct reg GPADAT; } GpioDataRegs;; порядок элементов сохраняется. */
static struct { struct reg GPADAT; } GpioDataRegs;
+/* Продолжает список аргументов, полей или выражение static struct { void (*TINT2)(void); } PieVectTable;; порядок элементов сохраняется. */
static struct { void (*TINT2)(void); } PieVectTable;
+/* Продолжает список аргументов, полей или выражение static struct { unsigned InterruptCount; } CpuTimer2;; порядок элементов сохраняется. */
static struct { unsigned InterruptCount; } CpuTimer2;
+/* Продолжает список аргументов, полей или выражение static struct { struct reg TCR; } CpuTimer2Regs;; порядок элементов сохраняется. */
static struct { struct reg TCR; } CpuTimer2Regs;
+/* Продолжает список аргументов, полей или выражение static struct { struct reg SPICCR,SPICTL,SPISTS,SPIFFTX,SPIFFRX,SPIFFCT,SPIPRI;; порядок элементов сохраняется. */
static struct { struct reg SPICCR,SPICTL,SPISTS,SPIFFTX,SPIFFRX,SPIFFCT,SPIPRI;
+ /* Продолжает список аргументов, полей или выражение unsigned SPIBRR; uint16_t SPITXBUF,SPIRXBUF; } SpiaRegs;; порядок элементов сохраняется. */
unsigned SPIBRR; uint16_t SPITXBUF,SPIRXBUF; } SpiaRegs;
+/* Начинает функцию InitCpuTimers; назначение модуля — проверка eeprom_profiles/stubs на модели ПК. */
static void InitCpuTimers(void) {}
+/* Начинает функцию ConfigCpuTimer; назначение модуля — проверка eeprom_profiles/stubs на модели ПК. */
static void ConfigCpuTimer(void *p, unsigned long f, unsigned t) {(void)p;(void)f;(void)t;}
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
diff --git a/tests/firmware_identity/check_build.py b/tests/firmware_identity/check_build.py
index ac160c7..2879d98 100644
--- a/tests/firmware_identity/check_build.py
+++ b/tests/firmware_identity/check_build.py
@@ -1,3 +1,5 @@
+# Проверка firmware_identity на модели пк. Комментарии и исходный текст в UTF-8.
+# Продолжает текущий вызов, список или выражение: """Independent test oracle: does this built SCI8 file contain its manifest identity?; порядок аргументов сохраняется.
"""Independent test oracle: does this built SCI8 file contain its manifest identity?
This is a build test, not a second production protocol codec. The 12-word vector
@@ -5,38 +7,72 @@ is deliberately constructed independently of the C implementation to detect a
stale compilation unit, incorrect byte order or a mismatched pre-build JSON.
Usage: python tests/firmware_identity/check_build.py path/to/firmware.bin
"""
+# Импортирует необходимые имена: from datetime import datetime.
from datetime import datetime
+# Подключает модуль hashlib для этой проверки или подготовки сборки.
import hashlib
+# Подключает модуль json для этой проверки или подготовки сборки.
import json
+# Импортирует необходимые имена: from pathlib import Path.
from pathlib import Path
+# Подключает модуль struct для этой проверки или подготовки сборки.
import struct
+# Подключает модуль sys для этой проверки или подготовки сборки.
import sys
+# Задаёт image по выражению справа; значение используется последующими операциями.
image = Path(sys.argv[1])
+# Читает исходный файл или образ для последующей проверки и разбора.
data = image.read_bytes()
-meta = json.loads(image.with_suffix(image.suffix + '.manifest.json').read_text())
+# Читает исходный файл или образ для последующей проверки и разбора.
+meta = json.loads(image.with_suffix(image.suffix + '.manifest.json').read_text(encoding="utf-8"))
+# Проверяет обязательное условие hashlib.sha256(data).hexdigest() == meta['sha256'], 'Wrong file hash'; нарушение делает тест неуспешным.
assert hashlib.sha256(data).hexdigest() == meta['sha256'], 'Wrong file hash'
+# Проверяет обязательное условие len(data) == meta['size_bytes'], 'Wrong image size'; нарушение делает тест неуспешным.
assert len(data) == meta['size_bytes'], 'Wrong image size'
+# Задаёт stamp по выражению справа; значение используется последующими операциями.
stamp = datetime.fromisoformat(meta['built_at_utc'])
+# Задаёт build_id по выражению справа; значение используется последующими операциями.
build_id = meta['build_id']
+# Задаёт words по выражению справа; значение используется последующими операциями.
words = [1, *meta['version'], stamp.year, stamp.month * 256 + stamp.day,
+ # Продолжает текущий вызов, список или выражение: stamp.hour * 256 + stamp.minute, stamp.second]; порядок аргументов сохраняется.
stamp.hour * 256 + stamp.minute, stamp.second]
+# Задаёт words + по выражению справа; значение используется последующими операциями.
words += [ord(build_id[i]) * 256 + ord(build_id[i+1]) for i in range(0, 8, 2)]
+# Задаёт expected по выражению справа; значение используется последующими операциями.
expected = struct.pack('<12H', *words)
+# Проверяет обязательное условие data[:2] == b'\xaa\x08', 'Not SCI8'; нарушение делает тест неуспешным.
assert data[:2] == b'\xaa\x08', 'Not SCI8'
+# Задаёт offset по выражению справа; значение используется последующими операциями.
offset = 22
+# Задаёт found по выражению справа; значение используется последующими операциями.
found = 0
+# Повторяет блок при выполнении True.
while True:
+ # Задаёт count, по выражению справа; значение используется последующими операциями.
count, = struct.unpack_from(': настройки и интерфейс assert. */
#include
+/* Продолжает список аргументов, полей или выражение static unsigned logger_reads, logger_writes;; порядок элементов сохраняется. */
static unsigned logger_reads, logger_writes;
+/* Проверяет область чтения регистратора и возвращает слова состояния либо архивной записи. */
unsigned int ump_log_read(unsigned int address)
+/* Изменяет счётчик в выражении { (void)address; ++logger_reads; return 0x554dU; } на один для следующего шага. */
{ (void)address; ++logger_reads; return 0x554dU; }
+/* Применяет допустимые команды управления регистратором, сохраняя ограничения адресов. */
int ump_log_write(unsigned int address, unsigned int value)
+/* Изменяет счётчик в выражении { (void)address; (void)value; ++logger_writes; return 1; } на один для следующего шага. */
{ (void)address; (void)value; ++logger_writes; return 1; }
+/* Точка входа: настраивает периферию, загружает параметры и обслуживает команды в главном цикле. */
int main(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет words — слова. */
uint16_t words[UMP_MAX_WORDS];
+ /* Продолжает список аргументов, полей или выражение ump_octet wire[UMP_RTU_CAPACITY];; порядок элементов сохраняется. */
ump_octet wire[UMP_RTU_CAPACITY];
+ /* Продолжает список аргументов, полей или выражение unsigned error, i;; порядок элементов сохраняется. */
unsigned error, i;
+ /* Вызывает assert с аргументами (ump_tms28335_prepare(3, UMP_FIRMWARE_INFO, 12, words, &error) == 12 && !error) в текущей последовательности операций. */
assert(ump_tms28335_prepare(3, UMP_FIRMWARE_INFO, 12, words, &error) == 12 && !error);
+ /* Вызывает assert с аргументами (words[0] == 1 && words[1] == FIRMWARE_VERSION_MAJOR) в текущей последовательности операций. */
assert(words[0] == 1 && words[1] == FIRMWARE_VERSION_MAJOR);
+ /* Вызывает assert с аргументами (words[2] == FIRMWARE_VERSION_MINOR && words[3] == FIRMWARE_VERSION_PATCH) в текущей последовательности операций. */
assert(words[2] == FIRMWARE_VERSION_MINOR && words[3] == FIRMWARE_VERSION_PATCH);
+ /* Вызывает assert с аргументами (words[4] == FI_YEAR && words[5] == FI_PAIR(FI_MONTH, FI_DAY)) в текущей последовательности операций. */
assert(words[4] == FI_YEAR && words[5] == FI_PAIR(FI_MONTH, FI_DAY));
+ /* Вызывает assert с аргументами (words[8] == FI_PAIR(FI_ID_0, FI_ID_1)) в текущей последовательности операций. */
assert(words[8] == FI_PAIR(FI_ID_0, FI_ID_1));
+ /* Вызывает assert с аргументами (logger_reads == 0) в текущей последовательности операций. */
assert(logger_reads == 0);
+ /* Вызывает assert с аргументами (ump_tms28335_rtu(1,3,UMP_FIRMWARE_INFO,12,wire,UMP_RTU_CAPACITY) == 29) в текущей последовательности операций. */
assert(ump_tms28335_rtu(1,3,UMP_FIRMWARE_INFO,12,wire,UMP_RTU_CAPACITY) == 29);
+ /* Цикл for (i=0; i<12; ++i) assert(((wire[3+i*2]<<8) | wire[4+i*2]) == words[i]);; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i=0; i<12; ++i) assert(((wire[3+i*2]<<8) | wire[4+i*2]) == words[i]);
+ /* Вызывает assert с аргументами (ump_crc(wire,29) == 0) в текущей последовательности операций. */
assert(ump_crc(wire,29) == 0);
+ /* Вызывает ump_tms28335_prepare с аргументами (6,UMP_FIRMWARE_INFO,123,words,&error) в текущей последовательности операций. */
ump_tms28335_prepare(6,UMP_FIRMWARE_INFO,123,words,&error);
+ /* Вызывает assert с аргументами (error == 2 && logger_writes == 0) в текущей последовательности операций. */
assert(error == 2 && logger_writes == 0);
/* Firmware reads must not steal the existing logger window. */
+ /* Вызывает assert с аргументами (ump_tms28335_prepare(3,UMP_BASE,16,words,&error) == 16 && !error) в текущей последовательности операций. */
assert(ump_tms28335_prepare(3,UMP_BASE,16,words,&error) == 16 && !error);
+ /* Вызывает assert с аргументами (logger_reads == 16 && words[0] == 0x554dU) в текущей последовательности операций. */
assert(logger_reads == 16 && words[0] == 0x554dU);
+ /* Завершает main и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/tests/gas167/check_image.py b/tests/gas167/check_image.py
index fb03cb2..989d0f2 100644
--- a/tests/gas167/check_image.py
+++ b/tests/gas167/check_image.py
@@ -1,48 +1,93 @@
+# Проверка gas167 на модели пк. Комментарии и исходный текст в UTF-8.
+# Продолжает текущий вызов, список или выражение: """Validate the PM35 RAM-load SCI8 image against the selected EEPROM profile."""; порядок аргументов сохраняется.
"""Validate the PM35 RAM-load SCI8 image against the selected EEPROM profile."""
+# Подключает модуль argparse для этой проверки или подготовки сборки.
import argparse
+# Импортирует необходимые имена: from pathlib import Path.
from pathlib import Path
+# Подключает модуль struct для этой проверки или подготовки сборки.
import struct
+# Объявляет функцию check_image и её входные параметры.
def check_image(path, eeprom):
+ # Читает исходный файл или образ для последующей проверки и разбора.
data = path.read_bytes()
+ # Задаёт limit по выражению справа; значение используется последующими операциями.
limit = {"AT25256B": 32508, "M95M02": 261884}[eeprom]
+ # Проверяет условие if not 24 <= len(data) <= limit перед выполнением следующего блока.
if not 24 <= len(data) <= limit:
+ # Останавливает текущую операцию с исключением ValueError(f"Image size {len(data)} outside 24..{limit}").
raise ValueError(f"Image size {len(data)} outside 24..{limit}")
+ # Проверяет условие if struct.unpack_from(" len(data) перед выполнением следующего блока.
if position + 2 > len(data):
+ # Останавливает текущую операцию с исключением ValueError("Missing boot terminator").
raise ValueError("Missing boot terminator")
+ # Задаёт words по выражению справа; значение используется последующими операциями.
words = struct.unpack_from(" len(data) перед выполнением следующего блока.
if position + 4 + words * 2 > len(data):
+ # Останавливает текущую операцию с исключением ValueError("Truncated boot block").
raise ValueError("Truncated boot block")
+ # Задаёт high, low по выражению справа; значение используется последующими операциями.
high, low = struct.unpack_from(": настройки и интерфейс assert. */
#include
+/* Подключает : настройки и интерфейс stdbool. */
#include
+/* Подключает : настройки и интерфейс stdint. */
#include
+/* Подключает : настройки и интерфейс stdio. */
#include
+/* Подключает : настройки и интерфейс string. */
#include
+/* Подключает "gas167.h": дополнительная карта GAS 167/v1 только для новой EEPROM M95M02. */
#include "gas167.h"
+/* Подключает "ump_protocol.h": настройки и интерфейс ump_protocol. */
#include "ump_protocol.h"
+/* Подключает "ump_tms28335.h": настройки и интерфейс ump_tms28335. */
#include "ump_tms28335.h"
+/* Подключает "include/balsam167_eeprom_block.h": настройки и интерфейс balsam167_eeprom_block. */
#include "include/balsam167_eeprom_block.h"
+/* Задаёт ANSWER_LEN = 128U; данные ANSWER_LEN. */
#define ANSWER_LEN 128U
+/* Задаёт MAX_SEND_LENGTH = 400U; MAX SEND длина. */
#define MAX_SEND_LENGTH 400U
+/* Задаёт CNTRL_ADDR = 16U; данные CNTRL_ADDR. */
#define CNTRL_ADDR 16U
+/* Задаёт CMD_MODBUS_3 = 3U; данные CMD_MODBUS_3. */
#define CMD_MODBUS_3 3U
+/* Задаёт CMD_MODBUS_6 = 6U; данные CMD_MODBUS_6. */
#define CMD_MODBUS_6 6U
+/* Задаёт dsk_LOAD = 6; код платы нагрузки. */
#define dsk_LOAD 6
+/* Задаёт LOBYTE = ((v) & 255U); данные LOBYTE. */
#define LOBYTE(v) ((v) & 255U)
+/* Задаёт HIBYTE = (((v) >> 8) & 255U); данные HIBYTE. */
#define HIBYTE(v) (((v) >> 8) & 255U)
+/* Задаёт UMP_CAN_MAX_WORDS = UMP_MAX_WORDS; UMP CAN MAX слова. */
#define UMP_CAN_MAX_WORDS UMP_MAX_WORDS
+/* Задаёт ump_can_prepare = ump_tms28335_prepare; ump CAN prepare. */
#define ump_can_prepare ump_tms28335_prepare
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef struct { int all; } WORDE;
+/* Задаёт Modbus = ((WORDE *)modbus); данные Modbus. */
#define Modbus ((WORDE *)modbus)
+/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef struct {
+ /* Объявляет RS_Header — данные RS_Header; buffer — буфер. */
uint16_t RS_Header[8], buffer[MAX_SEND_LENGTH];
+ /* Продолжает список аргументов, полей или выражение unsigned flag_TIMEOUT_to_Send;; порядок элементов сохраняется. */
unsigned flag_TIMEOUT_to_Send;
+/* Продолжает список аргументов, полей или выражение } RS_DATA;; порядок элементов сохраняется. */
} RS_DATA;
+/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит; Desk — аппаратно определённый тип платы; dsk_LOAD — код платы нагрузки. Начальное значение задаётся справа от знака равенства. */
int modbus[129], Desk = dsk_LOAD;
+/* Продолжает список аргументов, полей или выражение static unsigned captures, spi_reads, sent, irq_depth, legacy_reads;; порядок элементов сохраняется. */
static unsigned captures, spi_reads, sent, irq_depth, legacy_reads;
+/* Начинает функцию __disable_interrupts; назначение модуля — проверка gas167 на модели ПК. */
static unsigned __disable_interrupts(void) {
+ /* Записывает saved значением irq_depth; данные saved. */
unsigned saved = irq_depth;
+ /* Изменяет счётчик в выражении ++irq_depth; на один для следующего шага. */
++irq_depth;
+ /* Завершает __disable_interrupts и возвращает saved. */
return saved;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию __restore_interrupts; назначение модуля — проверка gas167 на модели ПК. */
static void __restore_interrupts(unsigned saved) { irq_depth = saved; }
+/* Регистрирует изменение слова команд после записи по последовательному интерфейсу. */
void ump_log_rs(void) { ++captures; }
+/* Проверяет область чтения регистратора и возвращает слова состояния либо архивной записи. */
unsigned int ump_log_read(unsigned int address) { ++legacy_reads; return address; }
+/* Применяет допустимые команды управления регистратором, сохраняя ограничения адресов. */
int ump_log_write(unsigned int address, unsigned int value) { return 1; }
+/* Начинает функцию get_crc_16; назначение модуля — проверка gas167 на модели ПК. */
static unsigned get_crc_16(unsigned seed, const uint16_t *data, unsigned size) {
+ /* Вызывает assert с аргументами (seed == 0xFFFFU) в текущей последовательности операций. */
assert(seed == 0xFFFFU);
+ /* Завершает get_crc_16 и возвращает ump_crc(data, size). */
return ump_crc(data, size);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Передаёт массив слов через SCI в выбранном режиме упаковки. */
static void RS_Send(RS_DATA *rs, uint16_t *data, unsigned size) {
+ /* Вызывает assert с аргументами (irq_depth == 0) в текущей последовательности операций. */
assert(irq_depth == 0);
+ /* Записывает sent значением size; данные sent. */
sent = size;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Читает EEPROM порциями; адрес задаётся словами C28x, размер переводится в число передаваемых слов. */
static void Seeprom_read(unsigned long word, uint16_t *data, unsigned bytes) {
+ /* Продолжает список аргументов, полей или выражение unsigned i;; порядок элементов сохраняется. */
unsigned i;
- assert(irq_depth == 0); /* The Timer2 SPI driver must retain interrupts. */
+ assert(irq_depth == 0); /* The Timer2 SPI driver must retain interrupts. */ /* Вызывает assert с аргументами (irq_depth == 0) в текущей последовательности операций. */
+ /* Изменяет счётчик в выражении ++spi_reads; на один для следующего шага. */
++spi_reads;
+ /* Цикл for (i = 0; i < bytes/2; ++i) data[i] = (uint16_t)(0xBEEFU+i);; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < bytes/2; ++i) data[i] = (uint16_t)(0xBEEFU+i);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
static unsigned Load_protection_prepare(unsigned fn, unsigned a, unsigned n,
+ /* Объявляет out — данные out. Хранит указатель на данные. */
uint16_t *out, unsigned *error) {
+ /* Записывает out[0] значением (uint16_t)a; out[1] = (uint16_t)n; *error = 0; данные out. */
out[0] = (uint16_t)a; out[1] = (uint16_t)n; *error = 0;
+ /* Завершает Load_protection_prepare и возвращает 2. */
return 2;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Описывает структуру mock_reg; порядок полей определяет расположение данных. */
struct mock_reg { uint32_t all; };
+/* Продолжает список аргументов, полей или выражение static struct {; порядок элементов сохраняется. */
static struct {
+ /* Описывает структуру mock_reg CANTA, CANAA, CANTRR, CANTRS;; порядок полей определяет расположение данных. */
struct mock_reg CANTA, CANAA, CANTRR, CANTRS;
+/* Продолжает список аргументов, полей или выражение } ECanaRegs;; порядок элементов сохраняется. */
} ECanaRegs;
+/* Продолжает список аргументов, полей или выражение static struct {; порядок элементов сохраняется. */
static struct {
+ /* Описывает структуру ; порядок полей определяет расположение данных. */
struct { struct mock_reg MDH, MDL; } MBOX2;
+/* Продолжает список аргументов, полей или выражение } ECanaMboxes;; порядок элементов сохраняется. */
} ECanaMboxes;
+/* Продолжает список аргументов, полей или выражение static struct { unsigned long InterruptCount; } CpuTimer1;; порядок элементов сохраняется. */
static struct { unsigned long InterruptCount; } CpuTimer1;
+/* Подключает "production_routes.inc": настройки и интерфейс production_routes. */
#include "production_routes.inc"
+/* Начинает функцию request; назначение модуля — проверка gas167 на модели ПК. */
static void request(RS_DATA *rs, unsigned fn, unsigned a, unsigned n) {
+ /* Продолжает список аргументов, полей или выражение unsigned crc;; порядок элементов сохраняется. */
unsigned crc;
+ /* Вызывает memset с аргументами (rs, 0, sizeof(*rs)) в текущей последовательности операций. */
memset(rs, 0, sizeof(*rs));
+ /* Записывает rs->RS_Header[0] значением CNTRL_ADDR; rs->RS_Header[1] = fn; данные rs->RS_Header. */
rs->RS_Header[0] = CNTRL_ADDR; rs->RS_Header[1] = fn;
+ /* Записывает rs->RS_Header[2] значением a >> 8; rs->RS_Header[3] = a & 255U; данные rs->RS_Header. */
rs->RS_Header[2] = a >> 8; rs->RS_Header[3] = a & 255U;
+ /* Записывает rs->RS_Header[4] значением n >> 8; rs->RS_Header[5] = n & 255U; данные rs->RS_Header. */
rs->RS_Header[4] = n >> 8; rs->RS_Header[5] = n & 255U;
+ /* Записывает crc значением ump_crc(rs->RS_Header, 6); данные crc. */
crc = ump_crc(rs->RS_Header, 6);
+ /* Записывает rs->RS_Header[6] значением crc & 255U; rs->RS_Header[7] = crc >> 8; данные rs->RS_Header. */
rs->RS_Header[6] = crc & 255U; rs->RS_Header[7] = crc >> 8;
+ /* Записывает sent значением 0; данные sent. */
sent = 0;
+ /* Проверяет if (fn == 3) ReceiveCommandModbus3(rs); последующий оператор выполняется только при истинном условии. */
if (fn == 3) ReceiveCommandModbus3(rs);
+ /* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else ReceiveCommandModbus6(rs);
+ /* Вызывает assert с аргументами (irq_depth == 0 && rs->flag_TIMEOUT_to_Send) в текущей последовательности операций. */
assert(irq_depth == 0 && rs->flag_TIMEOUT_to_Send);
+ /* Вызывает assert с аргументами (ump_crc(rs->buffer, rs->buffer[1] & 128U ? 5 : в текущей последовательности операций. */
assert(ump_crc(rs->buffer, rs->buffer[1] & 128U ? 5 :
+ /* Продолжает список аргументов, полей или выражение (fn == 6 ? 8 : 5+rs->buffer[2])) == 0);; порядок элементов сохраняется. */
(fn == 6 ? 8 : 5+rs->buffer[2])) == 0);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию can_request; назначение модуля — проверка gas167 на модели ПК. */
static void can_request(unsigned fn, unsigned a, unsigned n) {
+ /* Вызывает memset с аргументами (&ECanaRegs, 0, sizeof(ECanaRegs)) в текущей последовательности операций. */
memset(&ECanaRegs, 0, sizeof(ECanaRegs));
+ /* Вызывает memset с аргументами (&ECanaMboxes, 0, sizeof(ECanaMboxes)) в текущей последовательности операций. */
memset(&ECanaMboxes, 0, sizeof(ECanaMboxes));
+ /* Записывает ump_can_waiting значением 0; ump_can_length = 0; ump_can_index = 0; ump CAN waiting. */
ump_can_waiting = 0; ump_can_length = 0; ump_can_index = 0;
+ /* Записывает ump_can_pending значением 1; ump_can_tag = 0x0100U | fn; флаг ожидающего запроса служебного CAN между ISR и главным циклом. */
ump_can_pending = 1; ump_can_tag = 0x0100U | fn;
+ /* Записывает ump_can_address значением a; ump_can_value = n; ump CAN адрес. */
ump_can_address = a; ump_can_value = n;
+ /* Вызывает UMP_CAN_service. В главном цикле готовит замороженный ответ служебного CAN и отправляет его двухсловными фрагментами. */
UMP_CAN_service();
+ /* Вызывает assert с аргументами (irq_depth == 0 && !ump_can_pending) в текущей последовательности операций. */
assert(irq_depth == 0 && !ump_can_pending);
+ /* Вызывает assert с аргументами (ECanaRegs.CANTRS.all == 4U) в текущей последовательности операций. */
assert(ECanaRegs.CANTRS.all == 4U);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Точка входа: настраивает периферию, загружает параметры и обслуживает команды в главном цикле. */
int main(void) {
+ /* Объявляет rs — данные rs. */
RS_DATA rs;
+ /* Продолжает список аргументов, полей или выражение unsigned i;; порядок элементов сохраняется. */
unsigned i;
+ /* Цикл for (i = 0; i < 129; ++i) modbus[i] = (int)i;; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 129; ++i) modbus[i] = (int)i;
+ /* Записывает modbus[128] значением 0xD00D; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[128] = 0xD00D;
/* Exercise the real native handlers in both builds. */
+ /* Вызывает request с аргументами (&rs, 6, 1, 0xFEDC) в текущей последовательности операций. */
request(&rs, 6, 1, 0xFEDC);
+ /* Вызывает assert с аргументами (modbus[1] == 0xFEDC && sent == 10) в текущей последовательности операций. */
assert(modbus[1] == 0xFEDC && sent == 10);
+ /* Вызывает request с аргументами (&rs, 3, 0, 2) в текущей последовательности операций. */
request(&rs, 3, 0, 2);
+ /* Вызывает assert с аргументами (rs.buffer[2] == 4 && rs.buffer[5] == 0xFE && rs.buffer[6] == 0xDC) в текущей последовательности операций. */
assert(rs.buffer[2] == 4 && rs.buffer[5] == 0xFE && rs.buffer[6] == 0xDC);
+ /* Вызывает request с аргументами (&rs, 6, 0x52, 0) в текущей последовательности операций. */
request(&rs, 6, 0x52, 0);
+ /* Вызывает assert с аргументами (rs.buffer[1] == 0x86 && rs.buffer[2] == 3 && modbus[0x52] == 0x52) в текущей последовательности операций. */
assert(rs.buffer[1] == 0x86 && rs.buffer[2] == 3 && modbus[0x52] == 0x52);
+ /* Вызывает request с аргументами (&rs, 6, 0x7C, 9) в текущей последовательности операций. */
request(&rs, 6, 0x7C, 9);
+ /* Вызывает assert с аргументами (rs.buffer[2] == 2 && modbus[0x7C] == 0x7C) в текущей последовательности операций. */
assert(rs.buffer[2] == 2 && modbus[0x7C] == 0x7C);
/* Existing UMP and protection routing must still work. */
+ /* Вызывает request с аргументами (&rs, 3, 0x1000, 2) в текущей последовательности операций. */
request(&rs, 3, 0x1000, 2);
+ /* Вызывает assert с аргументами (rs.buffer[1] == 3 && rs.buffer[3] == 0x10 && legacy_reads == 2) в текущей последовательности операций. */
assert(rs.buffer[1] == 3 && rs.buffer[3] == 0x10 && legacy_reads == 2);
+ /* Вызывает request с аргументами (&rs, 3, 0x1300, 2) в текущей последовательности операций. */
request(&rs, 3, 0x1300, 2);
+ /* Вызывает assert с аргументами (rs.buffer[1] == 3 && rs.buffer[3] == 0x13) в текущей последовательности операций. */
assert(rs.buffer[1] == 3 && rs.buffer[3] == 0x13);
+/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
#if EEPROM_M95M02
+ /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет out — данные out. */
uint16_t out[124];
+ /* Продолжает список аргументов, полей или выражение unsigned error, count;; порядок элементов сохраняется. */
unsigned error, count;
+ /* Цикл for (i = 0; i < 65536U; ++i); задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 65536U; ++i)
+ /* Вызывает assert с аргументами (gas167_contains((uint16_t)i) == в текущей последовательности операций. */
assert(gas167_contains((uint16_t)i) ==
+ /* Продолжает список аргументов, полей или выражение ((i >= 0x5000U && i <= 0x507FU) || (i >= 0x5F00U && i <= 0x5F07U)));; порядок элементов сохраняется. */
((i >= 0x5000U && i <= 0x507FU) || (i >= 0x5F00U && i <= 0x5F07U)));
+ /* Вызывает assert с аргументами (gas167_prepare(3, 0x5000, 124, 0, out, &error) == 124 && !error) в текущей последовательности операций. */
assert(gas167_prepare(3, 0x5000, 124, 0, out, &error) == 124 && !error);
+ /* Вызывает assert с аргументами (out[1] == 0xFEDC && out[123] == 123) в текущей последовательности операций. */
assert(out[1] == 0xFEDC && out[123] == 123);
+ /* Записывает count значением gas167_prepare(3, 0x507F, 2, 0, out, &error); число. */
count = gas167_prepare(3, 0x507F, 2, 0, out, &error);
+ /* Вызывает assert с аргументами (count == 2 && error == 2 && modbus[128] == 0xD00D) в текущей последовательности операций. */
assert(count == 2 && error == 2 && modbus[128] == 0xD00D);
+ /* Вызывает assert с аргументами (gas167_prepare(3, 0x5000, 0, 0, out, &error) == 2 && error == 3) в текущей последовательности операций. */
assert(gas167_prepare(3, 0x5000, 0, 0, out, &error) == 2 && error == 3);
+ /* Вызывает assert с аргументами (gas167_prepare(3, 0x5000, 125, 0, out, &error) == 2 && error == 3) в текущей последовательности операций. */
assert(gas167_prepare(3, 0x5000, 125, 0, out, &error) == 2 && error == 3);
+ /* Вызывает assert с аргументами (gas167_prepare(3, 0x5000, 1, 1, out, &error) == 2 && error == 3) в текущей последовательности операций. */
assert(gas167_prepare(3, 0x5000, 1, 1, out, &error) == 2 && error == 3);
+ /* Вызывает assert с аргументами (gas167_prepare(3, 0xFFFF, 2, 0, out, &error) == 2 && error == 2) в текущей последовательности операций. */
assert(gas167_prepare(3, 0xFFFF, 2, 0, out, &error) == 2 && error == 2);
+ /* Вызывает assert с аргументами (gas167_prepare(16, 0x5000, 1, 0, out, &error) == 2 && error == 1) в текущей последовательности операций. */
assert(gas167_prepare(16, 0x5000, 1, 0, out, &error) == 2 && error == 1);
+ /* Вызывает assert с аргументами (gas167_prepare(6, 0x5080, 7, 0, out, &error) == 2 && error == 2) в текущей последовательности операций. */
assert(gas167_prepare(6, 0x5080, 7, 0, out, &error) == 2 && error == 2);
+ /* Вызывает assert с аргументами (gas167_prepare(6, 0x5052, 60001, 0, out, &error) == 2 && error == 3) в текущей последовательности операций. */
assert(gas167_prepare(6, 0x5052, 60001, 0, out, &error) == 2 && error == 3);
+ /* Вызывает assert с аргументами (gas167_prepare(6, 0x5052, 60000, 0, out, &error) == 2 && !error) в текущей последовательности операций. */
assert(gas167_prepare(6, 0x5052, 60000, 0, out, &error) == 2 && !error);
+ /* Вызывает assert с аргументами (modbus[0x52] == 60000) в текущей последовательности операций. */
assert(modbus[0x52] == 60000);
+ /* Вызывает assert с аргументами (gas167_prepare(3, 0x5000, 1, 0, 0, &error) == 0) в текущей последовательности операций. */
assert(gas167_prepare(3, 0x5000, 1, 0, 0, &error) == 0);
+ /* Вызывает assert с аргументами (gas167_prepare(6, 0x5000, 1, 0, out, 0) == 0 && modbus[0] == 0) в текущей последовательности операций. */
assert(gas167_prepare(6, 0x5000, 1, 0, out, 0) == 0 && modbus[0] == 0);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает request с аргументами (&rs, 3, 0x5000, 2) в текущей последовательности операций. */
request(&rs, 3, 0x5000, 2);
+ /* Вызывает assert с аргументами (sent == 9 && rs.buffer[5] == 0xFE && rs.buffer[6] == 0xDC) в текущей последовательности операций. */
assert(sent == 9 && rs.buffer[5] == 0xFE && rs.buffer[6] == 0xDC);
+ /* Вызывает request с аргументами (&rs, 3, 0x5000, 124) в текущей последовательности операций. */
request(&rs, 3, 0x5000, 124);
+ /* Вызывает assert с аргументами (sent == 253 && rs.buffer[2] == 248) в текущей последовательности операций. */
assert(sent == 253 && rs.buffer[2] == 248);
+ /* Вызывает request с аргументами (&rs, 3, 0x5F00, 8) в текущей последовательности операций. */
request(&rs, 3, 0x5F00, 8);
+ /* Вызывает assert с аргументами (sent == 21 && rs.buffer[3] == 0x47 && rs.buffer[4] == 0x41) в текущей последовательности операций. */
assert(sent == 21 && rs.buffer[3] == 0x47 && rs.buffer[4] == 0x41);
+ /* Вызывает assert с аргументами (rs.buffer[5] == 0x53 && rs.buffer[6] == 0x31) в текущей последовательности операций. */
assert(rs.buffer[5] == 0x53 && rs.buffer[6] == 0x31);
+ /* Вызывает assert с аргументами (rs.buffer[10] == 167 && rs.buffer[18] == 1) в текущей последовательности операций. */
assert(rs.buffer[10] == 167 && rs.buffer[18] == 1);
+ /* Вызывает request с аргументами (&rs, 6, 0x5F00, 0) в текущей последовательности операций. */
request(&rs, 6, 0x5F00, 0);
+ /* Вызывает assert с аргументами (sent == 5 && rs.buffer[2] == 2) в текущей последовательности операций. */
assert(sent == 5 && rs.buffer[2] == 2);
+ /* Вызывает request с аргументами (&rs, 3, 0x5F07, 2) в текущей последовательности операций. */
request(&rs, 3, 0x5F07, 2);
+ /* Вызывает assert с аргументами (rs.buffer[2] == 2) в текущей последовательности операций. */
assert(rs.buffer[2] == 2);
+ /* Вызывает request с аргументами (&rs, 6, 0x5052, 0) в текущей последовательности операций. */
request(&rs, 6, 0x5052, 0);
+ /* Вызывает assert с аргументами (rs.buffer[2] == 3 && modbus[0x52] == 60000) в текущей последовательности операций. */
assert(rs.buffer[2] == 3 && modbus[0x52] == 60000);
+ /* Вызывает request с аргументами (&rs, 6, 0x507D, 9) в текущей последовательности операций. */
request(&rs, 6, 0x507D, 9);
+ /* Вызывает assert с аргументами (rs.buffer[2] == 2 && modbus[0x7D] == 0x7D) в текущей последовательности операций. */
assert(rs.buffer[2] == 2 && modbus[0x7D] == 0x7D);
+ /* Вызывает request с аргументами (&rs, 6, 0x507F, 0x80) в текущей последовательности операций. */
request(&rs, 6, 0x507F, 0x80);
+ /* Вызывает assert с аргументами (sent == 8 && rs.buffer[2] == 0x50 && rs.buffer[3] == 0x7F) в текущей последовательности операций. */
assert(sent == 8 && rs.buffer[2] == 0x50 && rs.buffer[3] == 0x7F);
+ /* Вызывает assert с аргументами (captures == 1 && modbus[127] == 0x80) в текущей последовательности операций. */
assert(captures == 1 && modbus[127] == 0x80);
+ /* Вызывает can_request с аргументами (6, 0x5001, 0xFEDC) в текущей последовательности операций. */
can_request(6, 0x5001, 0xFEDC);
+ /* Вызывает assert с аргументами (modbus[1] == 0xFEDC && ECanaMboxes.MBOX2.MDL.all == 0x5001FEDCUL) в текущей последовательности операций. */
assert(modbus[1] == 0xFEDC && ECanaMboxes.MBOX2.MDL.all == 0x5001FEDCUL);
+ /* Вызывает assert с аргументами (ECanaMboxes.MBOX2.MDH.all == 0x1F000100UL) в текущей последовательности операций. */
assert(ECanaMboxes.MBOX2.MDH.all == 0x1F000100UL);
+ /* Вызывает can_request с аргументами (3, 0x5001, 2) в текущей последовательности операций. */
can_request(3, 0x5001, 2);
+ /* Вызывает assert с аргументами (ECanaMboxes.MBOX2.MDL.all == 0xFEDC0002UL) в текущей последовательности операций. */
assert(ECanaMboxes.MBOX2.MDL.all == 0xFEDC0002UL);
+ /* Вызывает can_request с аргументами (3, 0x5000, 124) в текущей последовательности операций. */
can_request(3, 0x5000, 124);
+ /* Вызывает assert с аргументами (ump_can_length == 124 && ump_can_index == 2) в текущей последовательности операций. */
assert(ump_can_length == 124 && ump_can_index == 2);
- modbus[2] = 777; /* All fragments must retain the original snapshot. */
+ modbus[2] = 777; /* All fragments must retain the original snapshot. */ /* Записывает modbus[2] значением 777; массив технологических регистров; слово int на C28x занимает 16 бит. */
+ /* Цикл for (i = 1; i < 62; ++i) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 1; i < 62; ++i) {
+ /* Записывает ECanaRegs.CANTA.all значением 4; представление регистра целым словом без разбиения на битовые поля. */
ECanaRegs.CANTA.all = 4;
+ /* Вызывает UMP_CAN_service. В главном цикле готовит замороженный ответ служебного CAN и отправляет его двухсловными фрагментами. */
UMP_CAN_service();
+ /* Вызывает assert с аргументами (ump_can_index == 2*(i+1)) в текущей последовательности операций. */
assert(ump_can_index == 2*(i+1));
+ /* Проверяет if (i == 1) assert(ECanaMboxes.MBOX2.MDL.all == 0x00020003UL); последующий оператор выполняется только при истинном условии. */
if (i == 1) assert(ECanaMboxes.MBOX2.MDL.all == 0x00020003UL);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Записывает modbus[2] значением 2; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[2] = 2;
+ /* Вызывает can_request с аргументами (3, 0x5000, 3) в текущей последовательности операций. */
can_request(3, 0x5000, 3);
+ /* Вызывает assert с аргументами (ECanaMboxes.MBOX2.MDH.all == 0x1F000103UL) в текущей последовательности операций. */
assert(ECanaMboxes.MBOX2.MDH.all == 0x1F000103UL);
+ /* Вызывает can_request с аргументами (6, 0x507C, 9) в текущей последовательности операций. */
can_request(6, 0x507C, 9);
+ /* Вызывает assert с аргументами ((ECanaMboxes.MBOX2.MDH.all & 255U) == 2 && modbus[0x7C] == 0x7C) в текущей последовательности операций. */
assert((ECanaMboxes.MBOX2.MDH.all & 255U) == 2 && modbus[0x7C] == 0x7C);
+ /* Вызывает can_request с аргументами (6, 0x507F, 0x40) в текущей последовательности операций. */
can_request(6, 0x507F, 0x40);
+ /* Вызывает assert с аргументами (captures == 2 && modbus[127] == 0x40) в текущей последовательности операций. */
assert(captures == 2 && modbus[127] == 0x40);
+ /* Вызывает can_request с аргументами (6, 0x5F00, 9) в текущей последовательности операций. */
can_request(6, 0x5F00, 9);
+ /* Вызывает assert с аргументами ((ECanaMboxes.MBOX2.MDH.all & 255U) == 2) в текущей последовательности операций. */
assert((ECanaMboxes.MBOX2.MDH.all & 255U) == 2);
+ /* Вызывает request с аргументами (&rs, 3, 0x8000, 0x8001) в текущей последовательности операций. */
request(&rs, 3, 0x8000, 0x8001);
+/* Выбирает альтернативный блок текущего условия компиляции. */
#else
+ /* Вызывает request с аргументами (&rs, 3, 0x5000, 2) в текущей последовательности операций. */
request(&rs, 3, 0x5000, 2);
+ /* Вызывает assert с аргументами (sent == 5 && rs.buffer[2] == 2) в текущей последовательности операций. */
assert(sent == 5 && rs.buffer[2] == 2);
+ /* Вызывает request с аргументами (&rs, 6, 0x5001, 9) в текущей последовательности операций. */
request(&rs, 6, 0x5001, 9);
+ /* Вызывает assert с аргументами (rs.buffer[2] == 2 && modbus[1] == 0xFEDC) в текущей последовательности операций. */
assert(rs.buffer[2] == 2 && modbus[1] == 0xFEDC);
+ /* Вызывает request с аргументами (&rs, 3, 0x5000, 124) в текущей последовательности операций. */
request(&rs, 3, 0x5000, 124);
+ /* Вызывает assert с аргументами (sent == 5 && rs.buffer[2] == 2) в текущей последовательности операций. */
assert(sent == 5 && rs.buffer[2] == 2);
+ /* Вызывает request с аргументами (&rs, 3, 0x5F00, 8) в текущей последовательности операций. */
request(&rs, 3, 0x5F00, 8);
+ /* Вызывает assert с аргументами (rs.buffer[2] == 2) в текущей последовательности операций. */
assert(rs.buffer[2] == 2);
+ /* Вызывает can_request с аргументами (6, 0x5001, 9) в текущей последовательности операций. */
can_request(6, 0x5001, 9);
+ /* Вызывает assert с аргументами ((ECanaMboxes.MBOX2.MDH.all & 255U) == 2 && modbus[1] == 0xFEDC) в текущей последовательности операций. */
assert((ECanaMboxes.MBOX2.MDH.all & 255U) == 2 && modbus[1] == 0xFEDC);
+ /* Вызывает assert с аргументами (captures == 0) в текущей последовательности операций. */
assert(captures == 0);
+ /* Вызывает request с аргументами (&rs, 3, 0x8000, 1) в текущей последовательности операций. */
request(&rs, 3, 0x8000, 1);
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
+ /* Вызывает assert с аргументами (spi_reads == 1 && rs.buffer[3] == 0xBE && rs.buffer[4] == 0xEF) в текущей последовательности операций. */
assert(spi_reads == 1 && rs.buffer[3] == 0xBE && rs.buffer[4] == 0xEF);
+ /* Вызывает assert с аргументами (modbus[128] == 0xD00D) в текущей последовательности операций. */
assert(modbus[128] == 0xD00D);
+ /* Вызывает printf с аргументами ("PASS GAS167 profile %d: production RTU/CAN routes, guards, CRC and legacy services\n", EEPROM_M95M02) в текущей последовательности операций. */
printf("PASS GAS167 profile %d: production RTU/CAN routes, guards, CRC and legacy services\n", EEPROM_M95M02);
+ /* Завершает main и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/tests/gas167/run_test.py b/tests/gas167/run_test.py
index 9b569a9..784d08c 100644
--- a/tests/gas167/run_test.py
+++ b/tests/gas167/run_test.py
@@ -1,51 +1,97 @@
+# Проверка gas167 на модели пк. Комментарии и исходный текст в UTF-8.
+# Продолжает текущий вызов, список или выражение: """Exercise the production GAS provider and extracted production RTU/CAN routes."""; порядок аргументов сохраняется.
"""Exercise the production GAS provider and extracted production RTU/CAN routes."""
+# Подключает модуль os для этой проверки или подготовки сборки.
import os
+# Импортирует необходимые имена: from pathlib import Path.
from pathlib import Path
+# Подключает модуль re для этой проверки или подготовки сборки.
import re
+# Подключает модуль shutil для этой проверки или подготовки сборки.
import shutil
+# Подключает модуль subprocess для этой проверки или подготовки сборки.
import subprocess
+# Подключает модуль tempfile для этой проверки или подготовки сборки.
import tempfile
+# Задаёт root по выражению справа; значение используется последующими операциями.
root = Path(__file__).resolve().parents[2]
+# Задаёт templates по выражению справа; значение используется последующими операциями.
templates = Path(os.environ.get("TEMPLATES_ROOT", root.parent / "newProject/SETGUI/third_party/templates"))
+# Задаёт protocol по выражению справа; значение используется последующими операциями.
protocol = templates / "c/set-protocol"
+# Задаёт compiler по выражению справа; значение используется последующими операциями.
compiler = os.environ.get("CC") or shutil.which("gcc") or "C:/msys64/mingw64/bin/gcc.exe"
+# Задаёт os.environ["PATH"] по выражению справа; значение используется последующими операциями.
os.environ["PATH"] = str(Path(compiler).resolve().parent) + os.pathsep + os.environ["PATH"]
+# Объявляет функцию function и её входные параметры.
def function(text, name):
+ # Задаёт match по выражению справа; значение используется последующими операциями.
match = re.search(r"^(?:static )?(?:void|int) " + name + r"\(", text, re.M)
+ # Проверяет условие if not match перед выполнением следующего блока.
if not match:
+ # Останавливает текущую операцию с исключением ValueError(f"Production function {name} missing").
raise ValueError(f"Production function {name} missing")
+ # Задаёт end по выражению справа; значение используется последующими операциями.
end = re.search(r"^}", text[match.start():], re.M)
+ # Проверяет условие if not end перед выполнением следующего блока.
if not end:
+ # Останавливает текущую операцию с исключением ValueError(f"Production function {name} incomplete").
raise ValueError(f"Production function {name} incomplete")
+ # Возвращает text[match.start():match.start() + end.end()] + "\n" вызывающему коду и завершает функцию.
return text[match.start():match.start() + end.end()] + "\n"
-message = (root / "Source/Internal/message.c").read_text(encoding="cp1251")
-ecan = (root / "Source/Internal/ecan.c").read_text(encoding="cp1251")
+# Читает исходный файл или образ для последующей проверки и разбора.
+message = (root / "Source/Internal/message.c").read_text(encoding="utf-8")
+# Читает исходный файл или образ для последующей проверки и разбора.
+ecan = (root / "Source/Internal/ecan.c").read_text(encoding="utf-8")
+# Задаёт can_globals по выражению справа; значение используется последующими операциями.
can_globals = ecan[ecan.index("static volatile unsigned int ump_can_pending;"):
+ # Продолжает текущий вызов, список или выражение: ecan.index("static unsigned long ump_can_sent_at;") + len("static unsigned long ump_can_sent_at;")]; порядок аргументов сохраняется.
ecan.index("static unsigned long ump_can_sent_at;") + len("static unsigned long ump_can_sent_at;")]
# On C28x unsigned int is uint16_t. Preserve that target word layout on GCC.
+# Задаёт can_globals по выражению справа; значение используется последующими операциями.
can_globals = can_globals.replace("static unsigned int ump_can_reply[",
+ # Продолжает текущий вызов, список или выражение: "static uint16_t ump_can_reply["); порядок аргументов сохраняется.
"static uint16_t ump_can_reply[")
+# Задаёт routes по выражению справа; значение используется последующими операциями.
routes = can_globals + "\n" + "".join(function(message, name) for name in
+ # Продолжает текущий вызов, список или выражение: ("modbus_exception", "receive_ump", "ReceiveCommandModbus3", "ReceiveCommandModbus6")); порядок аргументов сохраняется.
("modbus_exception", "receive_ump", "ReceiveCommandModbus3", "ReceiveCommandModbus6"))
+# Задаёт routes + по выражению справа; значение используется последующими операциями.
routes += function(ecan, "UMP_CAN_service")
+# Открывает управляемый ресурс tempfile.TemporaryDirectory(prefix="gas167-test-") as tmp с автоматическим освобождением.
with tempfile.TemporaryDirectory(prefix="gas167-test-") as tmp:
+ # Задаёт directory по выражению справа; значение используется последующими операциями.
directory = Path(tmp)
+ # Сохраняет подготовленный файл в указанном формате для следующего шага.
(directory / "production_routes.inc").write_text(routes, encoding="utf-8")
+ # Перебирает profile in (0, 1) в указанном порядке.
for profile in (0, 1):
+ # Задаёт exe по выражению справа; значение используется последующими операциями.
exe = directory / f"gas167_{profile}.exe"
+ # Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([compiler, "-std=c99", "-Wall", "-Wextra",
+ # Продолжает текущий вызов, список или выражение: "-Wno-unused-function", "-Wno-unused-parameter",; порядок аргументов сохраняется.
"-Wno-unused-function", "-Wno-unused-parameter",
+ # Задаёт f"-DEEPROM_M95M02 по выражению справа; значение используется последующими операциями.
f"-DEEPROM_M95M02={profile}", "-I" + str(directory),
+ # Продолжает текущий вызов, список или выражение: "-ISource/Internal/Include", "-I" + str(protocol),; порядок аргументов сохраняется.
"-ISource/Internal/Include", "-I" + str(protocol),
+ # Продолжает текущий вызов, список или выражение: "-I" + str(protocol / "include"),; порядок аргументов сохраняется.
"-I" + str(protocol / "include"),
+ # Продолжает текущий вызов, список или выражение: "-I" + str(protocol / "ports/tms320f28335"),; порядок аргументов сохраняется.
"-I" + str(protocol / "ports/tms320f28335"),
+ # Продолжает текущий вызов, список или выражение: "tests/gas167/gas167_test.c", "Source/Internal/gas167.c",; порядок аргументов сохраняется.
"tests/gas167/gas167_test.c", "Source/Internal/gas167.c",
+ # Продолжает текущий вызов, список или выражение: str(protocol / "src/ump_protocol.c"),; порядок аргументов сохраняется.
str(protocol / "src/ump_protocol.c"),
+ # Продолжает текущий вызов, список или выражение: str(protocol / "ports/tms320f28335/ump_tms28335.c"),; порядок аргументов сохраняется.
str(protocol / "ports/tms320f28335/ump_tms28335.c"),
+ # Задаёт "-o", str(exe)], cwd по выражению справа; значение используется последующими операциями.
"-o", str(exe)], cwd=root, check=True)
+ # Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([str(exe)], check=True, timeout=10)
diff --git a/tests/load_control/load_control_test.c b/tests/load_control/load_control_test.c
index 222d0a2..7b05e6a 100644
--- a/tests/load_control/load_control_test.c
+++ b/tests/load_control/load_control_test.c
@@ -1,103 +1,197 @@
+/* Проверка load_control на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Подключает : настройки и интерфейс stdio. */
#include
+/* Подключает : настройки и интерфейс string. */
#include
+/* Подключает "../../Source/Internal/DAC.c": выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. */
#include "../../Source/Internal/DAC.c"
+/* Объявляет READY — данные READY; Desk — аппаратно определённый тип платы; Mode — рабочий адрес или режим платы, выбранный перемычками. Начальное значение задаётся справа от знака равенства. */
int READY = 1, Desk = 6, Mode = 5;
+/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит. */
int modbus[128];
+/* Объявляет test_start — данные test_start; test_stop — данные test_stop; test_permission — данные test_permission; test_tick — данные test_tick. */
unsigned int test_start, test_stop, test_permission, test_tick;
+/* Объявляет test_starts — данные test_starts; test_last_stop_tick — данные test_last_stop_tick; test_last_start_tick — данные test_last_start_tick; test_init_dac — test init ЦАП. */
unsigned int test_starts, test_last_stop_tick, test_last_start_tick, test_init_dac;
+/* Объявляет test_bad_order — данные test_bad_order. */
int test_bad_order;
+/* Объявляет ump_dac_ramp — ump ЦАП ramp; ump_dac_duration — ump ЦАП duration; ump_dac_go10 — ump ЦАП go 10; ump_dac_stop10 — ump ЦАП stop 10; ump_dac_position — ump ЦАП position. */
unsigned int ump_dac_ramp, ump_dac_duration, ump_dac_go10, ump_dac_stop10, ump_dac_position;
+/* Задаёт CHECK = do { if (!(x)) { printf("FAIL line %d: %s\n", __LINE__, #x); return 1; } } while (0); данные CHECK. */
#define CHECK(x) do { if (!(x)) { printf("FAIL line %d: %s\n", __LINE__, #x); return 1; } } while (0)
+/* Начинает функцию setup; назначение модуля — проверка load_control на модели ПК. */
static void setup(int mode) {
+ /* Записывает Mode значением mode; READY = 1; рабочий адрес или режим платы, выбранный перемычками. */
memset(modbus, 0, sizeof(modbus)); Mode = mode; READY = 1;
+ /* Записывает test_start значением test_stop = test_permission = test_tick = test_starts = 0; данные test_start. */
test_start = test_stop = test_permission = test_tick = test_starts = 0;
+ /* Записывает test_bad_order значением test_init_dac = 0; данные test_bad_order. */
test_bad_order = test_init_dac = 0;
+ /* Записывает WAKEpowse значением 0; данные WAKEpowse. */
Load_control_init(); Setup_DAC_time(); WAKEpowse = 0;
+ /* Записывает DAC_go значением 4; DAC_stop = 16; DAC_min() = 100; DAC_max() = 3000; начальный ток нагрузки в мА, технологический регистр 0x50. */
DAC_go = 4; DAC_stop = 16; DAC_min() = 100; DAC_max() = 3000;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию tick; назначение модуля — проверка load_control на модели ПК. */
static void tick(unsigned int n, int exchange, unsigned int volts) {
+ /* Повторяет или ожидает, пока выполняется while (n--). */
while (n--) {
+ /* Проверяет if (exchange) Load_voltage_can(0x8000U | (Mode == 5 ? 305U : 8U), volts, 0, 0); последующий оператор выполняется только при истинном условии. */
if (exchange) Load_voltage_can(0x8000U | (Mode == 5 ? 305U : 8U), volts, 0, 0);
+ /* Изменяет счётчик в выражении test_tick++; Load_runner(); на один для следующего шага. */
test_tick++; Load_runner();
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Точка входа: настраивает периферию, загружает параметры и обслуживает команды в главном цикле. */
int main(void) {
+ /* Объявляет out — данные out; error — ошибка; count — число; ramp — данные ramp; code — данные code. */
unsigned int out[8], error, count, ramp, code, stopped_at;
+ /* Вызывает setup с аргументами (5) в текущей последовательности операций. */
setup(5);
/* Boot ISR before parameters: no divide-by-zero and no GPIO start. */
+ /* Записывает Commands значением 0x80; tick(10, 1, 0); CHECK(!test_starts); слово команд, технологический регистр 127. */
Load_control_init(); Commands = 0x80; tick(10, 1, 0); CHECK(!test_starts);
+ /* Записывает WAKEpowse значением 0; данные WAKEpowse. */
Setup_DAC_time(); WAKEpowse = 0;
+ /* Вызывает tick с аргументами (10, 0, 0); CHECK(test_starts == 1 && test_permission) в текущей последовательности операций. */
tick(10, 0, 0); CHECK(test_starts == 1 && test_permission);
+ /* Вызывает CHECK с аргументами (LOAD_CAN_TIMEOUT == 600) в текущей последовательности операций. */
CHECK(LOAD_CAN_TIMEOUT == 600);
/* Wrong ZPT and masked slots never confirm freshness. */
+ /* Записывает Commands значением 0x80; слово команд, технологический регистр 127. */
setup(5); Commands = 0x80;
+ /* Вызывает Load_voltage_can. Принимает напряжение выбранной нагрузки из достоверных слов CAN и сбрасывает возраст только нужного измерения. */
Load_voltage_can(0x8000U | 8U, 200, 0, 0);
+ /* Вызывает Load_voltage_can. Принимает напряжение выбранной нагрузки из достоверных слов CAN и сбрасывает возраст только нужного измерения. */
Load_voltage_can(305U, 200, 0, 0); tick(10, 0, 0);
+ /* Вызывает CHECK с аргументами (!test_starts && (LOAD_STATUS & 2)) в текущей последовательности операций. */
CHECK(!test_starts && (LOAD_STATUS & 2));
+ /* Вызывает Load_voltage_can. Принимает напряжение выбранной нагрузки из достоверных слов CAN и сбрасывает возраст только нужного измерения. */
Load_voltage_can(0x2000U | 303U, 0, 0, 30);
+ /* Вызывает tick с аргументами (1, 0, 0); CHECK(test_starts == 1) в текущей последовательности операций. */
tick(1, 0, 0); CHECK(test_starts == 1);
/* Freeze current and code at timeout; unrelated exchange cannot unfreeze. */
+ /* Вызывает tick с аргументами (1000, 1, 30); tick(600, 0, 0) в текущей последовательности операций. */
tick(1000, 1, 30); tick(600, 0, 0);
+ /* Записывает ramp значением ump_dac_ramp; code = modbus[123]; данные ramp. */
ramp = ump_dac_ramp; code = modbus[123];
+ /* Вызывает tick с аргументами (2000, 0, 0); CHECK(ump_dac_ramp == ramp && (unsigned int)modbus[123] == code) в текущей последовательности операций. */
tick(2000, 0, 0); CHECK(ump_dac_ramp == ramp && (unsigned int)modbus[123] == code);
+ /* Вызывает CHECK с аргументами (test_permission && !test_stop && (LOAD_STATUS & 2)) в текущей последовательности операций. */
CHECK(test_permission && !test_stop && (LOAD_STATUS & 2));
+ /* Вызывает Load_voltage_can. Принимает напряжение выбранной нагрузки из достоверных слов CAN и сбрасывает возраст только нужного измерения. */
Load_voltage_can(0x8000U | 8U, 200, 0, 0); tick(10, 0, 0);
+ /* Вызывает CHECK с аргументами (ump_dac_ramp == ramp) в текущей последовательности операций. */
CHECK(ump_dac_ramp == ramp);
+ /* Вызывает tick с аргументами (10, 1, 30); CHECK(ump_dac_ramp > ramp) в текущей последовательности операций. */
tick(10, 1, 30); CHECK(ump_dac_ramp > ramp);
/* Exactly 30 V permits growth; 29 V fails strictly above 6 mA. */
+ /* Записывает Commands значением 0x80; tick(10, 1, 30); слово команд, технологический регистр 127. */
setup(6); Commands = 0x80; tick(10, 1, 30);
+ /* Записывает load_count_ramp значением time_dac / 6; tick(5, 1, 30); load число ramp. */
load_count_ramp = time_dac / 6; tick(5, 1, 30);
+ /* Вызывает CHECK с аргументами (load_state == LOAD_RUN && modbus[0x1C] >= 60) в текущей последовательности операций. */
CHECK(load_state == LOAD_RUN && modbus[0x1C] >= 60);
+ /* Вызывает tick с аргументами (5, 1, 29); CHECK(load_state == LOAD_RELOAD && test_stop && !test_permission) в текущей последовательности операций. */
tick(5, 1, 29); CHECK(load_state == LOAD_RELOAD && test_stop && !test_permission);
+ /* Вызывает CHECK с аргументами (!test_start && ump_dac_ramp == 0 && modbus[0x1C] == 40) в текущей последовательности операций. */
CHECK(!test_start && ump_dac_ramp == 0 && modbus[0x1C] == 40);
+ /* Записывает stopped_at значением test_last_stop_tick; данные stopped_at. */
CHECK(modbus[123] == DAC_min()); stopped_at = test_last_stop_tick;
+ /* Вызывает tick с аргументами (999, 1, 0); CHECK(test_starts == 1 && test_stop) в текущей последовательности операций. */
tick(999, 1, 0); CHECK(test_starts == 1 && test_stop);
+ /* Вызывает tick с аргументами (1, 1, 0); CHECK(test_starts == 2 && test_last_start_tick-stopped_at == 1000) в текущей последовательности операций. */
tick(1, 1, 0); CHECK(test_starts == 2 && test_last_start_tick-stopped_at == 1000);
+ /* Вызывает CHECK с аргументами (!test_stop && test_permission && !test_bad_order) в текущей последовательности операций. */
CHECK(!test_stop && test_permission && !test_bad_order);
/* Five total attempts, then a persistent fault; no sixth start. */
+ /* Повторяет или ожидает, пока выполняется while (load_state != LOAD_FAULT). */
while (load_state != LOAD_FAULT) {
+ /* Записывает load_count_ramp значением time_dac / 6; tick(5, 1, 0); load число ramp. */
load_count_ramp = time_dac / 6; tick(5, 1, 0);
+ /* Проверяет if (load_state == LOAD_RELOAD) tick(1000, 1, 0); последующий оператор выполняется только при истинном условии. */
if (load_state == LOAD_RELOAD) tick(1000, 1, 0);
+ /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+ /* Вызывает CHECK с аргументами (test_starts == 5 && LOAD_ATTEMPTS == 5 && (LOAD_STATUS & 1)) в текущей последовательности операций. */
CHECK(test_starts == 5 && LOAD_ATTEMPTS == 5 && (LOAD_STATUS & 1));
+ /* Вызывает tick с аргументами (3000, 1, 200); CHECK(test_starts == 5 && test_stop && !test_permission) в текущей последовательности операций. */
tick(3000, 1, 200); CHECK(test_starts == 5 && test_stop && !test_permission);
+ /* Записывает Commands значением 0xC0; tick(10, 1, 200); CHECK(load_state == LOAD_FAULT); слово команд, технологический регистр 127. */
Commands = 0xC0; tick(10, 1, 200); CHECK(load_state == LOAD_FAULT);
+ /* Записывает Commands значением 0; tick(1000, 1, 200); CHECK(!(LOAD_STATUS & 1)); слово команд, технологический регистр 127. */
Commands = 0; tick(1000, 1, 200); CHECK(!(LOAD_STATUS & 1));
+ /* Записывает Commands значением 0x80; test_starts = 0; tick(10, 1, 200); CHECK(LOAD_ATTEMPTS == 1); слово команд, технологический регистр 127. */
Commands = 0x80; test_starts = 0; tick(10, 1, 200); CHECK(LOAD_ATTEMPTS == 1);
/* Manual reset dominates START; releasing it alone cannot start again. */
+ /* Записывает Commands значением 0xC0; tick(1, 1, 200); CHECK(test_stop && !test_permission); слово команд, технологический регистр 127. */
Commands = 0xC0; tick(1, 1, 200); CHECK(test_stop && !test_permission);
+ /* Записывает Commands значением 0x80; tick(1500, 1, 200); CHECK(test_starts == 1); слово команд, технологический регистр 127. */
Commands = 0x80; tick(1500, 1, 200); CHECK(test_starts == 1);
/* Versioned simulation writes are bounded, read-only fields reject writes. */
+ /* Записывает count значением Load_protection_prepare(3, 0x1300, 8, out, &error); число. */
count = Load_protection_prepare(3, 0x1300, 8, out, &error);
+ /* Вызывает CHECK с аргументами (count == 8 && !error && out[0] == 0x5550 && out[1] == 1) в текущей последовательности операций. */
CHECK(count == 8 && !error && out[0] == 0x5550 && out[1] == 1);
+ /* Вызывает Load_protection_prepare. Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
Load_protection_prepare(6, 0x1303, 0, out, &error); CHECK(error == 3);
+ /* Вызывает Load_protection_prepare. Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
Load_protection_prepare(6, 0x1304, 0, out, &error); CHECK(error == 2);
+ /* Вызывает Load_protection_prepare. Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
Load_protection_prepare(6, 0x1302, 4, out, &error); CHECK(error == 3);
+ /* Записывает Commands значением 0x80; tick(10, 1, 200); слово команд, технологический регистр 127. */
setup(5); Commands = 0x80; tick(10, 1, 200);
+ /* Вызывает Load_protection_prepare. Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
Load_protection_prepare(6, 0x1303, 20, out, &error); CHECK(!error);
+ /* Вызывает Load_protection_prepare. Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
Load_protection_prepare(6, 0x1302, 1, out, &error); CHECK(!error);
+ /* Вызывает tick с аргументами (30, 1, 200); CHECK(LOAD_STATUS & 2) в текущей последовательности операций. */
tick(30, 1, 200); CHECK(LOAD_STATUS & 2);
+ /* Записывает ramp значением ump_dac_ramp; tick(100, 1, 200); CHECK(ump_dac_ramp == ramp); данные ramp. */
ramp = ump_dac_ramp; tick(100, 1, 200); CHECK(ump_dac_ramp == ramp);
+ /* Вызывает Load_protection_prepare. Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
Load_protection_prepare(6, 0x1302, 0, out, &error);
+ /* Вызывает tick с аргументами (10, 1, 200); CHECK(!(LOAD_STATUS & 2) && ump_dac_ramp > ramp) в текущей последовательности операций. */
tick(10, 1, 200); CHECK(!(LOAD_STATUS & 2) && ump_dac_ramp > ramp);
+ /* Вызывает Load_protection_prepare. Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
Load_protection_prepare(6, 0x1302, 2, out, &error);
+ /* Записывает load_count_ramp значением time_dac / 6; tick(5, 1, 200); CHECK(load_state == LOAD_RELOAD); load число ramp. */
load_count_ramp = time_dac / 6; tick(5, 1, 200); CHECK(load_state == LOAD_RELOAD);
/* Calibration must not replace the forced 4 mA output during reload. */
+ /* Устанавливает биты Commands значением 0x200; DAC_cal() = 4095; tick(5, 1, 200); слово команд, технологический регистр 127. */
Commands |= 0x200; DAC_cal() = 4095; tick(5, 1, 200);
+ /* Вызывает CHECK с аргументами (modbus[123] == DAC_min() && modbus[0x1C] == 40) в текущей последовательности операций. */
CHECK(modbus[123] == DAC_min() && modbus[0x1C] == 40);
/* A calibration code preceding START must be replaced by 4 mA first. */
+ /* Записывает Commands значением 0x200; DAC_cal() = 4095; слово команд, технологический регистр 127. */
setup(5); Commands = 0x200; DAC_cal() = 4095;
+ /* Вызывает tick с аргументами (10, 1, 200); CHECK(modbus[123] == 4095 && !load_zero_sent) в текущей последовательности операций. */
tick(10, 1, 200); CHECK(modbus[123] == 4095 && !load_zero_sent);
+ /* Записывает Commands значением 0x280; tick(1, 1, 200); CHECK(!test_starts); слово команд, технологический регистр 127. */
Commands = 0x280; tick(1, 1, 200); CHECK(!test_starts);
+ /* Вызывает tick с аргументами (4, 1, 200); CHECK(!test_starts && modbus[123] == DAC_min()) в текущей последовательности операций. */
tick(4, 1, 200); CHECK(!test_starts && modbus[123] == DAC_min());
+ /* Вызывает tick с аргументами (1, 1, 200); CHECK(test_starts == 1) в текущей последовательности операций. */
tick(1, 1, 200); CHECK(test_starts == 1);
/* Timeout while STOP is held cannot initiate the pending retry. */
+ /* Записывает Commands значением 0x80; tick(10, 1, 0); слово команд, технологический регистр 127. */
setup(5); Commands = 0x80; tick(10, 1, 0);
+ /* Записывает load_count_ramp значением time_dac / 6; tick(5, 1, 0); load число ramp. */
load_count_ramp = time_dac / 6; tick(5, 1, 0);
+ /* Вызывает CHECK с аргументами (load_state == LOAD_RELOAD) в текущей последовательности операций. */
CHECK(load_state == LOAD_RELOAD);
+ /* Вызывает tick с аргументами (1500, 0, 0); CHECK(test_starts == 1 && test_stop) в текущей последовательности операций. */
tick(1500, 0, 0); CHECK(test_starts == 1 && test_stop);
+ /* Вызывает tick с аргументами (1, 1, 0); CHECK(test_starts == 2 && !test_stop) в текущей последовательности операций. */
tick(1, 1, 0); CHECK(test_starts == 2 && !test_stop);
+ /* Вызывает Load_control_init. Сбрасывает все переменные автомата нагрузки до разрешения прерываний; COFF не обнуляет всю .ebss. */
Load_control_init(); CHECK(!load_simulation);
+ /* Вызывает puts с аргументами ("PASS: production DAC control, timeout, CAN slots, STOP ordering, five attempts, simulation") в текущей последовательности операций. */
puts("PASS: production DAC control, timeout, CAN slots, STOP ordering, five attempts, simulation");
+ /* Завершает main и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/tests/load_control/run_test.py b/tests/load_control/run_test.py
index 41fa105..ab98efa 100644
--- a/tests/load_control/run_test.py
+++ b/tests/load_control/run_test.py
@@ -1,16 +1,32 @@
+# Проверка load_control на модели пк. Комментарии и исходный текст в UTF-8.
+# Продолжает текущий вызов, список или выражение: """Compile the production DAC.c against GPIO/IRQ mocks; no hardware writes."""; порядок аргументов сохраняется.
"""Compile the production DAC.c against GPIO/IRQ mocks; no hardware writes."""
+# Подключает модуль os для этой проверки или подготовки сборки.
import os
+# Импортирует необходимые имена: from pathlib import Path.
from pathlib import Path
+# Подключает модуль shutil для этой проверки или подготовки сборки.
import shutil
+# Подключает модуль subprocess для этой проверки или подготовки сборки.
import subprocess
+# Подключает модуль tempfile для этой проверки или подготовки сборки.
import tempfile
+# Задаёт root по выражению справа; значение используется последующими операциями.
root = Path(__file__).resolve().parents[2]
+# Задаёт compiler по выражению справа; значение используется последующими операциями.
compiler = os.environ.get('CC') or shutil.which('gcc') or 'C:/msys64/mingw64/bin/gcc.exe'
+# Задаёт os.environ['PATH'] по выражению справа; значение используется последующими операциями.
os.environ['PATH'] = str(Path(compiler).resolve().parent) + os.pathsep + os.environ['PATH']
+# Открывает управляемый ресурс tempfile.TemporaryDirectory(prefix='load-control-') as tmp с автоматическим освобождением.
with tempfile.TemporaryDirectory(prefix='load-control-') as tmp:
+ # Задаёт exe по выражению справа; значение используется последующими операциями.
exe = Path(tmp) / 'test.exe'
+ # Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([compiler, '-Wall', '-Wextra', '-std=c99',
+ # Продолжает текущий вызов, список или выражение: '-Itests/load_control/stubs', '-ISource/Internal/Include',; порядок аргументов сохраняется.
'-Itests/load_control/stubs', '-ISource/Internal/Include',
+ # Задаёт 'tests/load_control/load_control_test.c', '-o', str(exe)], cwd по выражению справа; значение используется последующими операциями.
'tests/load_control/load_control_test.c', '-o', str(exe)], cwd=root, check=True)
+ # Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([str(exe)], check=True, timeout=10)
diff --git a/tests/load_control/stubs/DSP2833x_Device.h b/tests/load_control/stubs/DSP2833x_Device.h
index 2807eba..cb903ee 100644
--- a/tests/load_control/stubs/DSP2833x_Device.h
+++ b/tests/load_control/stubs/DSP2833x_Device.h
@@ -1,9 +1,19 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Начинает условие: TEST_DEVICE_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef TEST_DEVICE_H
+/* Определяет защитный символ или переключатель TEST_DEVICE_H для последующей компиляции. */
#define TEST_DEVICE_H
+/* Описывает структуру bits; порядок полей определяет расположение данных. */
struct bits { unsigned int GPIO59, GPIO60, GPIO63; };
+/* Описывает структуру reg; порядок полей определяет расположение данных. */
struct reg { struct bits bit; };
+/* Продолжает список аргументов, полей или выражение static struct { struct reg GPBSET, GPBCLEAR; } GpioDataRegs;; порядок элементов сохраняется. */
static struct { struct reg GPBSET, GPBCLEAR; } GpioDataRegs;
+/* Начинает функцию __disable_interrupts; назначение модуля — проверка load_control/stubs на модели ПК. */
static unsigned int __disable_interrupts(void) { return 0; }
+/* Начинает функцию __restore_interrupts; назначение модуля — проверка load_control/stubs на модели ПК. */
static void __restore_interrupts(unsigned int saved) { (void)saved; }
+/* Начинает функцию DSP28x_usDelay; назначение модуля — проверка load_control/stubs на модели ПК. */
static void DSP28x_usDelay(unsigned long n) { (void)n; }
+/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
diff --git a/tests/load_control/stubs/DSP2833x_SWPrioritizedIsrLevels.h b/tests/load_control/stubs/DSP2833x_SWPrioritizedIsrLevels.h
index 1fd1a88..f978ab2 100644
--- a/tests/load_control/stubs/DSP2833x_SWPrioritizedIsrLevels.h
+++ b/tests/load_control/stubs/DSP2833x_SWPrioritizedIsrLevels.h
@@ -1 +1,2 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
/* No IRQ registers needed in the host test. */
diff --git a/tests/load_control/stubs/RS485.h b/tests/load_control/stubs/RS485.h
index 570fb8d..bc7aa53 100644
--- a/tests/load_control/stubs/RS485.h
+++ b/tests/load_control/stubs/RS485.h
@@ -1 +1,2 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
/* No serial dependencies in the host test. */
diff --git a/tests/load_control/stubs/filter_bat2.h b/tests/load_control/stubs/filter_bat2.h
index 7cbd46b..5cfb910 100644
--- a/tests/load_control/stubs/filter_bat2.h
+++ b/tests/load_control/stubs/filter_bat2.h
@@ -1 +1,2 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
/* No filter dependencies in the host test. */
diff --git a/tests/load_control/stubs/measure.h b/tests/load_control/stubs/measure.h
index f76a6e2..b68b6fd 100644
--- a/tests/load_control/stubs/measure.h
+++ b/tests/load_control/stubs/measure.h
@@ -1,4 +1,9 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Задаёт READY_FREQ = 1000; частота основного такта Timer1 в герцах. */
#define READY_FREQ 1000
+/* Задаёт DAC_FREQ = 200; частота обновления тока ЦАП в герцах. */
#define DAC_FREQ 200
+/* Задаёт LOAD_TIME = 30; время нарастания тока нагрузки в секундах. */
#define LOAD_TIME 30
+/* Объявляет READY — данные READY. Память определена в другом модуле. */
extern int READY;
diff --git a/tests/load_control/stubs/message.h b/tests/load_control/stubs/message.h
index 8a4d817..1baca7c 100644
--- a/tests/load_control/stubs/message.h
+++ b/tests/load_control/stubs/message.h
@@ -1 +1,3 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит. Память определена в другом модуле. */
extern int modbus[128];
diff --git a/tests/load_control/stubs/package.h b/tests/load_control/stubs/package.h
index f35b080..987f908 100644
--- a/tests/load_control/stubs/package.h
+++ b/tests/load_control/stubs/package.h
@@ -1,17 +1,35 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Задаёт dsk_LOAD = 6; код платы нагрузки. */
#define dsk_LOAD 6
+/* Задаёт adr_LOA1 = 5; данные adr_LOA1. */
#define adr_LOA1 5
+/* Задаёт adr_LOA2 = 6; данные adr_LOA2. */
#define adr_LOA2 6
+/* Задаёт Commands = modbus[127]; слово команд, технологический регистр 127. */
#define Commands modbus[127]
+/* Задаёт cUMPstart = (Commands & 0x80); данные cUMPstart. */
#define cUMPstart (Commands & 0x80)
+/* Задаёт cUMPreset = (Commands & 0x40); данные cUMPreset. */
#define cUMPreset (Commands & 0x40)
+/* Объявляет test_init_dac — test init ЦАП. Память определена в другом модуле. */
extern unsigned int test_init_dac;
+/* Задаёт cInitDac = test_init_dac; c Init ЦАП. */
#define cInitDac test_init_dac
+/* Задаёт cCalibrDac = (Commands & 0x200); c Calibr ЦАП. */
#define cCalibrDac (Commands & 0x200)
+/* Задаёт DAC_go = modbus[0x50]; начальный ток нагрузки в мА, технологический регистр 0x50. */
#define DAC_go modbus[0x50]
+/* Задаёт DAC_stop = modbus[0x51]; конечный ток нагрузки в мА, технологический регистр 0x51. */
#define DAC_stop modbus[0x51]
+/* Задаёт LOAD_CAN_TIMEOUT = modbus[0x52]; сохраняемый тайм-аут свежести напряжения CAN в миллисекундах, регистр 0x52. */
#define LOAD_CAN_TIMEOUT modbus[0x52]
+/* Задаёт LOAD_STATUS = modbus[0x7C]; слово состояния защиты нагрузки для чтения, регистр 0x7C. */
#define LOAD_STATUS modbus[0x7C]
+/* Задаёт LOAD_ATTEMPTS = modbus[0x7D]; число попыток пуска для чтения, регистр 0x7D. */
#define LOAD_ATTEMPTS modbus[0x7D]
+/* Задаёт DAC_min = modbus[0x79]; ЦАП min. */
#define DAC_min() modbus[0x79]
+/* Задаёт DAC_max = modbus[0x78]; ЦАП max. */
#define DAC_max() modbus[0x78]
+/* Задаёт DAC_cal = modbus[0x7A]; ЦАП cal. */
#define DAC_cal() modbus[0x7A]
diff --git a/tests/load_control/stubs/peripher.h b/tests/load_control/stubs/peripher.h
index d9d0e3f..460f27a 100644
--- a/tests/load_control/stubs/peripher.h
+++ b/tests/load_control/stubs/peripher.h
@@ -1,14 +1,29 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Объявляет Desk — аппаратно определённый тип платы; Mode — рабочий адрес или режим платы, выбранный перемычками. Память определена в другом модуле. */
extern int Desk, Mode;
+/* Объявляет test_start — данные test_start; test_stop — данные test_stop; test_permission — данные test_permission; test_tick — данные test_tick. Память определена в другом модуле. */
extern unsigned int test_start, test_stop, test_permission, test_tick;
+/* Объявляет test_starts — данные test_starts; test_last_stop_tick — данные test_last_stop_tick; test_last_start_tick — данные test_last_start_tick. Память определена в другом модуле. */
extern unsigned int test_starts, test_last_stop_tick, test_last_start_tick;
+/* Объявляет test_bad_order — данные test_bad_order. Память определена в другом модуле. */
extern int test_bad_order;
+/* Начинает функцию clear_START_DPTB; назначение модуля — проверка load_control/stubs на модели ПК. */
static void clear_START_DPTB(void) { test_start = 0; }
+/* Начинает функцию set_START_DPTB; назначение модуля — проверка load_control/stubs на модели ПК. */
static void set_START_DPTB(void) {
+ /* Проверяет if (test_stop или (test_starts и test_tick-test_last_stop_tick < 1000)) test_bad_order = 1; последующий оператор выполняется только при истинном условии. */
if (test_stop || (test_starts && test_tick-test_last_stop_tick < 1000)) test_bad_order = 1;
+ /* Записывает test_start значением 1; test_last_start_tick = test_tick; test_starts++; данные test_start. */
test_start = 1; test_last_start_tick = test_tick; test_starts++;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию set_STOP_DPTB; назначение модуля — проверка load_control/stubs на модели ПК. */
static void set_STOP_DPTB(void) { test_stop = 1; test_last_stop_tick = test_tick; }
+/* Начинает функцию clear_STOP_DPTB; назначение модуля — проверка load_control/stubs на модели ПК. */
static void clear_STOP_DPTB(void) { test_stop = 0; }
+/* Начинает функцию clear_RES_OUT_2; назначение модуля — проверка load_control/stubs на модели ПК. */
static void clear_RES_OUT_2(void) { test_permission = 0; }
+/* Начинает функцию set_RES_OUT_2; назначение модуля — проверка load_control/stubs на модели ПК. */
static void set_RES_OUT_2(void) { if (!test_start || test_stop) test_bad_order = 1; test_permission = 1; }
+/* Начинает функцию toggle_RES_OUT_1; назначение модуля — проверка load_control/stubs на модели ПК. */
static void toggle_RES_OUT_1(void) {}
diff --git a/tests/load_control/stubs/tools.h b/tests/load_control/stubs/tools.h
index 0309add..7111716 100644
--- a/tests/load_control/stubs/tools.h
+++ b/tests/load_control/stubs/tools.h
@@ -1 +1,2 @@
+/* Проверка load_control/stubs на модели ПК. Русские пояснения сохранены в UTF-8. */
/* Delay provided by the device stub. */
diff --git a/tests/rs232_fifo/model.inc b/tests/rs232_fifo/model.inc
index f12fe42..7ff54aa 100644
--- a/tests/rs232_fifo/model.inc
+++ b/tests/rs232_fifo/model.inc
@@ -1,118 +1,229 @@
+/* Проверка rs232_fifo на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Продолжает список аргументов, полей или выражение volatile struct SCI_REGS SciaRegs,ScibRegs;; порядок элементов сохраняется. */
volatile struct SCI_REGS SciaRegs,ScibRegs;
+/* Описывает структуру ; порядок полей определяет расположение данных. */
struct { struct { struct { unsigned ACK9; } bit; } PIEACK; } PieCtrlRegs;
+/* Описывает структуру ; порядок полей определяет расположение данных. */
struct { struct { struct { unsigned GPIO34; } bit; } GPBDAT; } GpioDataRegs;
+/* Объявляет rs_a — данные rs_a; rs_b — данные rs_b. */
RS_DATA rs_a,rs_b;
+/* Объявляет RS_Len — таблица ожидаемых длин команд последовательного протокола; irq — данные irq. */
unsigned int RS_Len[70],irq;
+/* Объявляет load_memory — данные load_memory. */
static unsigned int load_memory[4100];
+/* Начинает функцию __disable_interrupts; назначение модуля — проверка rs232_fifo на модели ПК. */
static unsigned int __disable_interrupts(void) { unsigned old=irq;irq=1;return old; }
+/* Начинает функцию __restore_interrupts; назначение модуля — проверка rs232_fifo на модели ПК. */
static void __restore_interrupts(unsigned state) { irq=state; }
+/* Начинает функцию RS_SetLineMode; назначение модуля — проверка rs232_fifo на модели ПК. */
void RS_SetLineMode(RS_DATA *p,int bits,char parity,int stop)
+/* Продолжает список аргументов, полей или выражение { (void)p;(void)bits;(void)parity;(void)stop; }; порядок элементов сохраняется. */
{ (void)p;(void)bits;(void)parity;(void)stop; }
+/* Объявляет length — длина; wire_count — wire число. */
static unsigned int queue[2][16],length[2],wire[2][20000],wire_count[2];
+/* Объявляет rx_count — rx число; rx_pos — данные rx_pos; shift_pending — данные shift_pending; shift_checks — данные shift_checks. */
static unsigned int rx[2][16],rx_count[2],rx_pos[2],shift_pending[2],shift_checks;
+/* Начинает функцию port; назначение модуля — проверка rs232_fifo на модели ПК. */
static unsigned int port(RS_DATA *p) {return p->commnumber-1;}
+/* Начинает функцию model_interrupts; назначение модуля — проверка rs232_fifo на модели ПК. */
static void model_interrupts(RS_DATA *p,unsigned tx)
+/* Записывает p->SciRegs->SCICTL2.bit.TXINTENA значением tx;p->SciRegs->SCICTL2.bit.RXBKINTENA=!tx; }; данные TXINTENA. */
{ p->SciRegs->SCICTL2.bit.TXINTENA=tx;p->SciRegs->SCICTL2.bit.RXBKINTENA=!tx; }
+/* Начинает функцию model_flush; назначение модуля — проверка rs232_fifo на модели ПК. */
static void model_flush(RS_DATA *p)
+/* Записывает i значением port(p);rx_count[i]=rx_pos[i]=0;p->SciRegs->SCIFFRX.bit.RXFFST=0;p->SciRegs->SCIFFRX.bit.RXFFOVF=0; }; данные i. */
{ unsigned i=port(p);rx_count[i]=rx_pos[i]=0;p->SciRegs->SCIFFRX.bit.RXFFST=0;p->SciRegs->SCIFFRX.bit.RXFFOVF=0; }
+/* Начинает функцию model_pop; назначение модуля — проверка rs232_fifo на модели ПК. */
static unsigned int model_pop(RS_DATA *p)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает i значением port(p),v;assert(rx_pos[i]SciRegs->SCIFFRX.bit.RXFFST значением rx_count[i]-rx_pos[i]; данные RXFFST. */
p->SciRegs->SCIFFRX.bit.RXFFST=rx_count[i]-rx_pos[i];
+ /* Записывает p->SciRegs->SCIRXST.bit.RXRDY значением rx_pos[i]SciRegs->SCIRXST.bit.RXRDY=rx_pos[i]SciRegs->SCIFFTX.bit.TXFFST=length[i]; последующий оператор выполняется только при истинном условии. */
if(i==0)p->SciRegs->SCIFFTX.bit.TXFFST=length[i];
+ /* Записывает p->SciRegs->SCICTL2.bit.TXEMPTY значением 0; данные TXEMPTY. */
p->SciRegs->SCICTL2.bit.TXEMPTY=0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию model_shift; назначение модуля — проверка rs232_fifo на модели ПК. */
static void model_shift(RS_DATA *p)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает i значением port(p);assert(length[i]==0); данные i. */
unsigned i=port(p);assert(length[i]==0);
- if(i==0)assert(p->fifo_tx_active); /* last symbol cannot finish early */
+ if(i==0)assert(p->fifo_tx_active); /* last symbol cannot finish early */ /* Проверяет if(i==0)assert(p->fifo_tx_active); последующий оператор выполняется только при истинном условии. */
+ /* Записывает shift_pending[i] значением 0;p->SciRegs->SCICTL2.bit.TXEMPTY=1;shift_checks++; данные shift_pending. */
shift_pending[i]=0;p->SciRegs->SCICTL2.bit.TXEMPTY=1;shift_checks++;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию model_step; назначение модуля — проверка rs232_fifo на модели ПК. */
static void model_step(RS_DATA *p)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает i значением port(p),j; данные i. */
unsigned i=port(p),j;
+ /* Проверяет if(length[i]); последующий оператор выполняется только при истинном условии. */
if(length[i]) {
+ /* Изменяет счётчик в выражении wire[i][wire_count[i]++]=queue[i][0]; на один для следующего шага. */
wire[i][wire_count[i]++]=queue[i][0];
+ /* Цикл for(j=1;jSciRegs->SCIFFTX.bit.TXFFST=length[i]; последующий оператор выполняется только при истинном условии. */
if(i==0)p->SciRegs->SCIFFTX.bit.TXFFST=length[i];
+ /* Проверяет else if(shift_pending[i]) model_shift(p); последующий оператор выполняется только при истинном условии. */
} else if(shift_pending[i]) model_shift(p);
+ /* Проверяет if(i==0 и p->SciRegs->SCIFFTX.bit.TXFFIENA и; последующий оператор выполняется только при истинном условии. */
if(i==0 && p->SciRegs->SCIFFTX.bit.TXFFIENA &&
+ /* Продолжает список аргументов, полей или выражение length[i]<=p->SciRegs->SCIFFTX.bit.TXFFIL) RS_TX_Handler(p);; порядок элементов сохраняется. */
length[i]<=p->SciRegs->SCIFFTX.bit.TXFFIL) RS_TX_Handler(p);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию reset; назначение модуля — проверка rs232_fifo на модели ПК. */
static void reset(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Вызывает memset с аргументами (&rs_a,0,sizeof(rs_a));memset(&rs_b,0,sizeof(rs_b)) в текущей последовательности операций. */
memset(&rs_a,0,sizeof(rs_a));memset(&rs_b,0,sizeof(rs_b));
+ /* Вызывает memset с аргументами ((void *)&SciaRegs,0,sizeof(SciaRegs));memset((void *)&ScibRegs,0,sizeof(ScibRegs)) в текущей последовательности операций. */
memset((void *)&SciaRegs,0,sizeof(SciaRegs));memset((void *)&ScibRegs,0,sizeof(ScibRegs));
+ /* Вызывает memset с аргументами (length,0,sizeof(length));memset(wire_count,0,sizeof(wire_count)) в текущей последовательности операций. */
memset(length,0,sizeof(length));memset(wire_count,0,sizeof(wire_count));
+ /* Вызывает memset с аргументами (rx_count,0,sizeof(rx_count));memset(rx_pos,0,sizeof(rx_pos)) в текущей последовательности операций. */
memset(rx_count,0,sizeof(rx_count));memset(rx_pos,0,sizeof(rx_pos));
+ /* Вызывает memset с аргументами (shift_pending,0,sizeof(shift_pending)) в текущей последовательности операций. */
memset(shift_pending,0,sizeof(shift_pending));
+ /* Записывает rs_a.commnumber значением 1;rs_b.commnumber=2;rs_a.SciRegs=&SciaRegs;rs_b.SciRegs=&ScibRegs; данные commnumber. */
rs_a.commnumber=1;rs_b.commnumber=2;rs_a.SciRegs=&SciaRegs;rs_b.SciRegs=&ScibRegs;
+ /* Записывает SciaRegs.SCICTL2.bit.TXEMPTY значением ScibRegs.SCICTL2.bit.TXEMPTY=1; данные TXEMPTY. */
SciaRegs.SCICTL2.bit.TXEMPTY=ScibRegs.SCICTL2.bit.TXEMPTY=1;
+ /* Записывает rs_a.RS_Flag9bit значением rs_b.RS_Flag9bit=1; RS флаг 9 бит. */
rs_a.RS_Flag9bit=rs_b.RS_Flag9bit=1;
+ /* Записывает RS_Len[3] значением 8;RS_Len[6]=8;RS_Len[16]=13;RS_Len[51]=12; таблица ожидаемых длин команд последовательного протокола. */
RS_Len[3]=8;RS_Len[6]=8;RS_Len[16]=13;RS_Len[51]=12;
+ /* Записывает GpioDataRegs.GPBDAT.bit.GPIO34 значением 1;irq=0; аппаратная линия ввода/вывода GPIO34. */
GpioDataRegs.GPBDAT.bit.GPIO34=1;irq=0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
+/* Начинает функцию feed; назначение модуля — проверка rs232_fifo на модели ПК. */
static void feed(RS_DATA *p,const unsigned *bytes,unsigned n)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Записывает i значением port(p),j;assert(n<=16);rx_pos[i]=0;rx_count[i]=n; данные i. */
unsigned i=port(p),j;assert(n<=16);rx_pos[i]=0;rx_count[i]=n;
+ /* Цикл for(j=0;jSciRegs->SCIFFRX.bit.RXFFST значением n;p->SciRegs->SCIRXST.bit.RXRDY=n!=0; данные RXFFST. */
p->SciRegs->SCIFFRX.bit.RXFFST=n;p->SciRegs->SCIRXST.bit.RXRDY=n!=0;
+ /* Вызывает RS_RX_Handler. Разбирает приём SCI; для COM_1 читает FIFO и проверяет ошибки, для COM_2 сохраняет штатный обмен RS485. */
RS_RX_Handler(p);
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/* HANDLERS */
+/* Точка входа: настраивает периферию, загружает параметры и обслуживает команды в главном цикле. */
int main(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Продолжает список аргументов, полей или выражение unsigned data[4200],sizes[]={0,1,2,7,8,15,16,17,31,120,253,400,8194};; порядок элементов сохраняется. */
unsigned data[4200],sizes[]={0,1,2,7,8,15,16,17,31,120,253,400,8194};
+ /* Продолжает список аргументов, полей или выражение unsigned a,n,i,mode;unsigned request[]={16,3,0x10,0,0,16,0,0};; порядок элементов сохраняется. */
unsigned a,n,i,mode;unsigned request[]={16,3,0x10,0,0,16,0,0};
+ /* Цикл for(mode=0;mode<2;mode++)for(a=0;a4200)continue; последующий оператор выполняется только при истинном условии. */
if(mode==0 && n>4200)continue;
+ /* Вызывает assert с аргументами ((mode ? RS_BSend(&rs_a,data,n):RS_Send(&rs_a,data,n))==0) в текущей последовательности операций. */
assert((mode ? RS_BSend(&rs_a,data,n):RS_Send(&rs_a,data,n))==0);
+ /* Проверяет if(n и rs_a.fifo_tx_active)assert(rs_a.RS_Flag9bit==0); последующий оператор выполняется только при истинном условии. */
if(n && rs_a.fifo_tx_active)assert(rs_a.RS_Flag9bit==0);
+ /* Вызывает RS_FifoWait. Ожидает завершения аппаратной передачи FIFO и сдвигового регистра SCI. */
RS_FifoWait(&rs_a);assert(!rs_a.fifo_tx_active && wire_count[0]==n);
+ /* Цикл for(i=0;i0) в текущей последовательности операций. */
assert(shift_checks>0);
+ /* Вызывает reset с аргументами ();feed(&rs_a,request,8);assert(rs_a.RS_DataReady && rs_a.RS_HeaderCnt==8) в текущей последовательности операций. */
reset();feed(&rs_a,request,8);assert(rs_a.RS_DataReady && rs_a.RS_HeaderCnt==8);
+ /* Вызывает reset с аргументами ();feed(&rs_a,request,3);feed(&rs_a,request+3,5);assert(rs_a.RS_DataReady) в текущей последовательности операций. */
reset();feed(&rs_a,request,3);feed(&rs_a,request+3,5);assert(rs_a.RS_DataReady);
/* LOAD payload, including a short final chunk: nothing waits for byte 8. */
+ /* Записывает rs_a.RS_PrevCmd значением CMD_INITLOAD;rs_a.RS_Length=8194; данные RS_PrevCmd. */
reset();rs_a.RS_PrevCmd=CMD_INITLOAD;rs_a.RS_Length=8194;
+ /* Записывает rs_a.pRS_RecvPtr значением rs_a.pRecvPtr=load_memory; данные pRS_RecvPtr. */
rs_a.pRS_RecvPtr=rs_a.pRecvPtr=load_memory;
+ /* Записывает data[0] значением 16;data[1]=CMD_LOAD;feed(&rs_a,data,2); данные. */
data[0]=16;data[1]=CMD_LOAD;feed(&rs_a,data,2);
+ /* Цикл for(a=0;a<8194;a+=n) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for(a=0;a<8194;a+=n) {
+ /* Записывает n значением 8194-a;n=n<16?n:16; данные n. */
n=8194-a;n=n<16?n:16;
+ /* Цикл for(i=0;iSciRegs->SCIRXBUF.all;', 'received=model_pop(rs_arr);')
+# Задаёт body по выражению справа; значение используется последующими операциями.
body=body.replace('Rc = rs_arr->SciRegs->SCIRXBUF.bit.RXDT;', 'Rc=model_pop(rs_arr);')
+# Задаёт body по выражению справа; значение используется последующими операциями.
body=body.replace('rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET=0;',
+ # Задаёт 'model_flush(rs_arr);rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET по выражению справа; значение используется последующими операциями.
'model_flush(rs_arr);rs_arr->SciRegs->SCIFFRX.bit.RXFIFORESET=0;')
+# Задаёт body по выражению справа; значение используется последующими операциями.
body=body.replace('rs_arr->SciRegs->SCICTL1.bit.SWRESET=1;',
+ # Задаёт 'rs_arr->SciRegs->SCIRXST.all по выражению справа; значение используется последующими операциями.
'rs_arr->SciRegs->SCIRXST.all=0;rs_arr->SciRegs->SCICTL1.bit.SWRESET=1;')
+# Задаёт body по выражению справа; значение используется последующими операциями.
body=body.replace('while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { }',
+ # Продолжает текущий вызов, список или выражение: 'while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { model_step(rs_arr); }',1); порядок аргументов сохраняется.
'while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { model_step(rs_arr); }',1)
+# Задаёт body по выражению справа; значение используется последующими операциями.
body=body.replace('while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { }',
+ # Продолжает текущий вызов, список или выражение: 'while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { model_shift(rs_arr); }'); порядок аргументов сохраняется.
'while (!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { model_shift(rs_arr); }')
+# Задаёт body по выражению справа; значение используется последующими операциями.
body=body.replace('!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { }',
+ # Продолжает текущий вызов, список или выражение: '!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { model_step(rs_arr); }'); порядок аргументов сохраняется.
'!rs_arr->SciRegs->SCICTL2.bit.TXEMPTY) { model_step(rs_arr); }')
+# Задаёт header по выражению справа; значение используется последующими операциями.
header=read(root/'Source/Internal/Include/RS485.h')
+# Задаёт header по выражению справа; значение используется последующими операциями.
header=re.sub(r'#define SCI_send\(x,y\)[^\n]*', '#define SCI_send(x,y) model_push(x,y)',header)
+# Задаёт header по выражению справа; значение используется последующими операциями.
header=re.sub(r'#define enableUARTInt\(x\)[^\n]*', '#define enableUARTInt(x) model_interrupts(x,0)',header)
+# Задаёт header по выражению справа; значение используется последующими операциями.
header=re.sub(r'#define enableUARTIntW\(x\)[^\n]*', '#define enableUARTIntW(x) model_interrupts(x,1)',header)
+# Задаёт header по выражению справа; значение используется последующими операциями.
header=re.sub(r'#define Rec_Bloc_Begin[^\n]*', '#define Rec_Bloc_Begin ((uintptr_t)load_memory)',header)
+# Задаёт header по выражению справа; значение используется последующими операциями.
header=re.sub(r'#define Rec_Bloc_End[^\n]*', '#define Rec_Bloc_End ((uintptr_t)(load_memory+4100))',header)
+# Задаёт registers по выражению справа; значение используется последующими операциями.
registers=read(root/'Source/External/v120/DSP2833x_headers/include/DSP2833x_Sci.h')
+# Задаёт defines по выражению справа; значение используется последующими операциями.
defines='''
#include
#include
@@ -62,12 +107,21 @@ typedef unsigned short Uint16;
enum {CMD_MODBUS_3=3,ANS_MODBUS_4=4,CMD_MODBUS_6=6,CMD_MODBUS_16=16,
CMD_LOAD=51,CMD_INITLOAD=58,CMD_STD_ANS=66};
'''
-harness=(Path(__file__).with_name('model.inc')).read_text()
+# Читает исходный файл или образ для последующей проверки и разбора.
+harness=(Path(__file__).with_name('model.inc')).read_text(encoding="utf-8")
+# Задаёт before,after по выражению справа; значение используется последующими операциями.
before,after=harness.split('/* HANDLERS */')
+# Задаёт parser по выражению справа; значение используется последующими операциями.
parser=argparse.ArgumentParser();parser.add_argument('--cc',required=True);args=parser.parse_args()
+# Задаёт env по выражению справа; значение используется последующими операциями.
env=dict(os.environ);env['PATH']=str(Path(args.cc).parent)+os.pathsep+env.get('PATH','')
+# Открывает управляемый ресурс tempfile.TemporaryDirectory(prefix='pm35-fifo-') as directory с автоматическим освобождением.
with tempfile.TemporaryDirectory(prefix='pm35-fifo-') as directory:
+ # Задаёт path по выражению справа; значение используется последующими операциями.
path=Path(directory);c=path/'model.c';exe=path/'model.exe'
- c.write_text(defines+registers+header+'\n'.join(prototypes)+before+body+after)
+ # Сохраняет подготовленный файл в указанном формате для следующего шага.
+ c.write_text(defines+registers+header+'\n'.join(prototypes)+before+body+after, encoding="utf-8")
+ # Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([args.cc,'-std=c99','-O1','-Werror=implicit-function-declaration',str(c),'-o',str(exe)],check=True,env=env)
+ # Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([str(exe)],check=True,env=env,timeout=20)
diff --git a/tests/ump_logger/init_test.c b/tests/ump_logger/init_test.c
index 21d47c9..b7af4e2 100644
--- a/tests/ump_logger/init_test.c
+++ b/tests/ump_logger/init_test.c
@@ -1,56 +1,109 @@
+/* Проверка ump_logger на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Подключает "../../Source/Internal/log_to_mem.c": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "../../Source/Internal/log_to_mem.c"
+/* Описывает структуру mock_gpio GpioDataRegs;; порядок полей определяет расположение данных. */
struct mock_gpio GpioDataRegs;
+/* Объявляет READY — данные READY; Desk — аппаратно определённый тип платы; Mode — рабочий адрес или режим платы, выбранный перемычками. Начальное значение задаётся справа от знака равенства. */
int READY = 1, Desk = 6, Mode = 5;
+/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит; CanTimeOutErrorTR — CAN Time Out ошибка TR. */
int modbus[128], CanTimeOutErrorTR;
+/* Объявляет IMPowse — данные IMPowse; WAKEpowse — данные WAKEpowse. */
unsigned long IMPowse, WAKEpowse;
+/* Объявляет ADC_table — АЦП table. */
unsigned int ADC_table[4];
+/* Задаёт CHECK = if (!(x)) return __LINE__; данные CHECK. */
#define CHECK(x) if (!(x)) return __LINE__
+/* Точка входа: настраивает периферию, загружает параметры и обслуживает команды в главном цикле. */
int main(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i. */
unsigned int i;
/* Simulate COFF boot with dirty RAM, including a stale active bank. */
+ /* Записывает ump_state значением ump_count = ump_cursor = ump_next = 0xA5A5; данные ump_state. */
ump_state = ump_count = ump_cursor = ump_next = 0xA5A5;
+ /* Записывает ump_period значением ump_divider = 0xA5A5; период записи регистратора в миллисекундных тактах. */
ump_period = ump_divider = 0xA5A5;
+ /* Записывает ump_time значением ump_sequence = 0xA5A5A5A5UL; миллисекундное время регистратора. */
ump_time = ump_sequence = 0xA5A5A5A5UL;
+ /* Записывает ump_bank значением ump_archive_bank = 0xA5A5; индекс активного банка регистратора. */
ump_bank = ump_archive_bank = 0xA5A5;
+ /* Записывает ump_archive_count значением ump_archive_next = ump_generation = 0xA5A5; ump archive число. */
ump_archive_count = ump_archive_next = ump_generation = 0xA5A5;
+ /* Записывает ump_source значением ump_post = 0xA5A5; данные ump_source. */
ump_source = ump_post = 0xA5A5;
+ /* Записывает ump_can_header значением ump_can_count = 0xA5A5; ump CAN header. */
ump_can_header = ump_can_count = 0xA5A5;
+ /* Цикл for (i = 0; i < 3; i++) ump_can_data[i] = 0xA5A5;; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 3; i++) ump_can_data[i] = 0xA5A5;
+ /* Цикл for (i = 0; i < 2; i++) ump_pm67_voltage[i] = 0xA5A5;; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 2; i++) ump_pm67_voltage[i] = 0xA5A5;
+ /* Записывает ump_prev_commands значением ump_prev_inputs = ump_prev_outputs = 0xA5A5; данные ump_prev_commands. */
ump_prev_commands = ump_prev_inputs = ump_prev_outputs = 0xA5A5;
+ /* Записывает ump_dac_ramp значением ump_dac_duration = ump_dac_go10 = 0xA5A5; ump ЦАП ramp. */
ump_dac_ramp = ump_dac_duration = ump_dac_go10 = 0xA5A5;
+ /* Записывает ump_dac_stop10 значением ump_dac_position = 0xA5A5; ump ЦАП stop 10. */
ump_dac_stop10 = ump_dac_position = 0xA5A5;
+ /* Вызывает ump_log_init. Явно инициализирует оба банка регистратора до включения IRQ; повторный старт записи архив не стирает. */
ump_log_init();
+ /* Вызывает CHECK с аргументами (ump_log_read(UMP_LOG_BASE) == 0x554D) в текущей последовательности операций. */
CHECK(ump_log_read(UMP_LOG_BASE) == 0x554D);
+ /* Вызывает CHECK с аргументами (ump_log_read(UMP_LOG_BASE+1) == 3) в текущей последовательности операций. */
CHECK(ump_log_read(UMP_LOG_BASE+1) == 3);
+ /* Вызывает CHECK с аргументами (ump_log_read(UMP_LOG_BASE+2) == 0) в текущей последовательности операций. */
CHECK(ump_log_read(UMP_LOG_BASE+2) == 0);
+ /* Вызывает CHECK с аргументами (ump_log_read(UMP_LOG_BASE+3) == 0) в текущей последовательности операций. */
CHECK(ump_log_read(UMP_LOG_BASE+3) == 0);
+ /* Вызывает CHECK с аргументами (ump_log_read(UMP_LOG_BASE+6) == 20) в текущей последовательности операций. */
CHECK(ump_log_read(UMP_LOG_BASE+6) == 20);
+ /* Цикл for (i = 7; i <= 8; i++) CHECK(ump_log_read(UMP_LOG_BASE+i) == 0);; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 7; i <= 8; i++) CHECK(ump_log_read(UMP_LOG_BASE+i) == 0);
+ /* Цикл for (i = 12; i <= 15; i++) CHECK(ump_log_read(UMP_LOG_BASE+i) == 0);; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 12; i <= 15; i++) CHECK(ump_log_read(UMP_LOG_BASE+i) == 0);
+ /* Вызывает CHECK с аргументами (ump_bank == 0 && ump_archive_bank == 1) в текущей последовательности операций. */
CHECK(ump_bank == 0 && ump_archive_bank == 1);
+ /* Вызывает CHECK с аргументами (ump_cursor == 0 && ump_next == 0 && ump_archive_next == 0) в текущей последовательности операций. */
CHECK(ump_cursor == 0 && ump_next == 0 && ump_archive_next == 0);
+ /* Вызывает CHECK с аргументами (ump_divider == 0 && ump_sequence == 0 && ump_post == 0) в текущей последовательности операций. */
CHECK(ump_divider == 0 && ump_sequence == 0 && ump_post == 0);
+ /* Вызывает CHECK с аргументами (ump_can_header == 0 && ump_can_count == 0) в текущей последовательности операций. */
CHECK(ump_can_header == 0 && ump_can_count == 0);
+ /* Цикл for (i = 0; i < 3; i++) CHECK(ump_can_data[i] == 0);; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 3; i++) CHECK(ump_can_data[i] == 0);
+ /* Цикл for (i = 0; i < 2; i++) CHECK(ump_pm67_voltage[i] == 0);; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i = 0; i < 2; i++) CHECK(ump_pm67_voltage[i] == 0);
+ /* Вызывает CHECK с аргументами (ump_prev_commands == 0 && ump_prev_inputs == 0 && ump_prev_outputs == 0) в текущей последовательности операций. */
CHECK(ump_prev_commands == 0 && ump_prev_inputs == 0 && ump_prev_outputs == 0);
+ /* Вызывает CHECK с аргументами (ump_dac_ramp == 0 && ump_dac_duration == 0 && ump_dac_go10 == 0) в текущей последовательности операций. */
CHECK(ump_dac_ramp == 0 && ump_dac_duration == 0 && ump_dac_go10 == 0);
+ /* Вызывает CHECK с аргументами (ump_dac_stop10 == 0 && ump_dac_position == 0) в текущей последовательности операций. */
CHECK(ump_dac_stop10 == 0 && ump_dac_position == 0);
+ /* Вызывает CHECK с аргументами (ump_log_write(UMP_LOG_BASE+1, 20)) в текущей последовательности операций. */
CHECK(ump_log_write(UMP_LOG_BASE+1, 20));
+ /* Вызывает CHECK с аргументами (ump_log_write(UMP_LOG_BASE, 1)) в текущей последовательности операций. */
CHECK(ump_log_write(UMP_LOG_BASE, 1));
+ /* Вызывает CHECK с аргументами (ump_state == 1 && ump_count == 1) в текущей последовательности операций. */
CHECK(ump_state == 1 && ump_count == 1);
+ /* Вызывает ump_log_tick. Продвигает время регистратора в Timer1 и снимает записи с заданным периодом. */
ump_log_tick();
+ /* Вызывает CHECK с аргументами (ump_time == 1) в текущей последовательности операций. */
CHECK(ump_time == 1);
+ /* Вызывает CHECK с аргументами (ump_log_write(UMP_LOG_BASE, 0)) в текущей последовательности операций. */
CHECK(ump_log_write(UMP_LOG_BASE, 0));
+ /* Записывает ump_archive_count значением 7; ump_generation = 2; ump archive число. */
ump_archive_count = 7; ump_generation = 2;
+ /* Записывает ump_pm67_voltage[0] значением 123; данные ump_pm67_voltage. */
ump_pm67_voltage[0] = 123;
+ /* Вызывает CHECK с аргументами (ump_log_write(UMP_LOG_BASE, 1)) в текущей последовательности операций. */
CHECK(ump_log_write(UMP_LOG_BASE, 1));
+ /* Вызывает CHECK с аргументами (ump_time == 1 && ump_archive_count == 7 && ump_generation == 2) в текущей последовательности операций. */
CHECK(ump_time == 1 && ump_archive_count == 7 && ump_generation == 2);
+ /* Вызывает CHECK с аргументами (ump_word(0, 0, 40) == 123) в текущей последовательности операций. */
CHECK(ump_word(0, 0, 40) == 123);
+ /* Завершает main и возвращает 0. */
return 0;
+/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
diff --git a/tests/ump_logger/recorder_test.c b/tests/ump_logger/recorder_test.c
index 03efb2c..bb78315 100644
--- a/tests/ump_logger/recorder_test.c
+++ b/tests/ump_logger/recorder_test.c
@@ -1,163 +1,311 @@
+/* Проверка ump_logger на модели ПК. Русские пояснения сохранены в UTF-8. */
+/* Подключает "../../Source/Internal/log_to_mem.c": двухбанковый регистратор событий нагрузки во внешней RAM. */
#include "../../Source/Internal/log_to_mem.c"
+/* Подключает "../../Source/Internal/Include/ump_can_protocol.h": настройки и интерфейс ump_can_protocol. */
#include "../../Source/Internal/Include/ump_can_protocol.h"
+/* Описывает структуру mock_gpio GpioDataRegs;; порядок полей определяет расположение данных. */
struct mock_gpio GpioDataRegs;
+/* Объявляет READY — данные READY; Desk — аппаратно определённый тип платы; Mode — рабочий адрес или режим платы, выбранный перемычками. Начальное значение задаётся справа от знака равенства. */
int READY = 1, Desk = 6, Mode = 5;
+/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит. */
int modbus[128];
+/* Объявляет CanTimeOutErrorTR — CAN Time Out ошибка TR. */
int CanTimeOutErrorTR;
+/* Объявляет IMPowse — данные IMPowse; WAKEpowse — данные WAKEpowse. */
unsigned long IMPowse, WAKEpowse;
+/* Объявляет ADC_table — АЦП table. */
unsigned int ADC_table[4];
+/* Задаёт CHECK = if (!(x)) return __LINE__; данные CHECK. */
#define CHECK(x) if (!(x)) return __LINE__
/* Возвращаем номер строки при ошибке, ноль при успехе; CRT не требуется. */
+/* Вызывает __declspec с аргументами (dllexport) int run_tests(void) в текущей последовательности операций. */
__declspec(dllexport) int run_tests(void)
+/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
+ /* Объявляет i — данные i; generation — данные generation; archived — данные archived; error — ошибка; length — длина. */
unsigned int i, generation, archived, error, length;
+ /* Объявляет reply — данные reply. */
uint16_t reply[UMP_CAN_MAX_WORDS];
+ /* Объявляет sequence — последовательность. */
unsigned long sequence;
+ /* Вызывает ump_log_init. Явно инициализирует оба банка регистратора до включения IRQ; повторный старт записи архив не стирает. */
ump_log_init();
+ /* Вызывает CHECK с аргументами (!ump_log_write(UMP_LOG_BASE+1, 0)) в текущей последовательности операций. */
CHECK(!ump_log_write(UMP_LOG_BASE+1, 0));
+ /* Вызывает CHECK с аргументами (!ump_log_write(UMP_LOG_BASE+1, 1001)) в текущей последовательности операций. */
CHECK(!ump_log_write(UMP_LOG_BASE+1, 1001));
+ /* Вызывает CHECK с аргументами (ump_log_write(UMP_LOG_BASE+1, 1)) в текущей последовательности операций. */
CHECK(ump_log_write(UMP_LOG_BASE+1, 1));
+ /* Записывает modbus[127] значением 0x80; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[127] = 0x80;
+ /* Записывает modbus[0x50] значением 6; modbus[0x51] = 16; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[0x50] = 6; modbus[0x51] = 16;
+ /* Записывает modbus[0x7B] значением 1234; modbus[0x1C] = 160; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[0x7B] = 1234; modbus[0x1C] = 160;
/* PM67 reception is independent of recording; all three CAN slots work. */
+ /* Вызывает ump_log_can. Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
ump_log_can(0x8000U | 305U, 0xFEDCU, 0, 0);
+ /* Вызывает ump_log_can. Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
ump_log_can(0x4000U | 7U, 0, 456, 0);
+ /* Вызывает CHECK с аргументами (ump_pm67_voltage[0] == 0xFEDCU && ump_pm67_voltage[1] == 456) в текущей последовательности операций. */
CHECK(ump_pm67_voltage[0] == 0xFEDCU && ump_pm67_voltage[1] == 456);
- ump_log_can(305U, 1, 2, 3); /* Masked-out word must not overwrite. */
+ ump_log_can(305U, 1, 2, 3); /* Masked-out word must not overwrite. */ /* Вызывает ump_log_can. Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
+ /* Вызывает ump_log_can. Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
ump_log_can(0x2000U | 303U, 0, 0, 123);
+ /* Вызывает ump_log_can. Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
ump_log_can(0x2000U | 6U, 0, 0, 789);
+ /* Вызывает CHECK с аргументами (ump_pm67_voltage[0] == 123 && ump_pm67_voltage[1] == 789) в текущей последовательности операций. */
CHECK(ump_pm67_voltage[0] == 123 && ump_pm67_voltage[1] == 789);
- ump_log_can(0x8000U | 306U, 999, 0, 0); /* Not a one-based CAN address. */
+ ump_log_can(0x8000U | 306U, 999, 0, 0); /* Not a one-based CAN address. */ /* Вызывает ump_log_can. Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
+ /* Вызывает CHECK с аргументами (ump_log_write(UMP_LOG_BASE, 1)) в текущей последовательности операций. */
CHECK(ump_log_write(UMP_LOG_BASE, 1));
+ /* Вызывает CHECK с аргументами (ump_word(0, 0, 40) == 123 && ump_word(0, 0, 41) == 789) в текущей последовательности операций. */
CHECK(ump_word(0, 0, 40) == 123 && ump_word(0, 0, 41) == 789);
+ /* Вызывает CHECK с аргументами (2UL * UMP_LOG_CAPACITY * UMP_LOG_WORDS <= LOG_PAGE_LEN) в текущей последовательности операций. */
CHECK(2UL * UMP_LOG_CAPACITY * UMP_LOG_WORDS <= LOG_PAGE_LEN);
+ /* Вызывает CHECK с аргументами (!ump_log_write(UMP_LOG_BASE, 1)) в текущей последовательности операций. */
CHECK(!ump_log_write(UMP_LOG_BASE, 1));
+ /* Вызывает CHECK с аргументами (!ump_log_write(UMP_LOG_BASE+1, 20)) в текущей последовательности операций. */
CHECK(!ump_log_write(UMP_LOG_BASE+1, 20));
+ /* Цикл for (i=0; i<900; i++) ump_log_tick();; задаёт начальное значение, условие продолжения и шаг перебора. */
for (i=0; i<900; i++) ump_log_tick();
+ /* Вызывает CHECK с аргументами (ump_count == UMP_LOG_CAPACITY) в текущей последовательности операций. */
CHECK(ump_count == UMP_LOG_CAPACITY);
+ /* Вызывает CHECK с аргументами (ump_word(0, 0, 0) == 901-UMP_LOG_CAPACITY) в текущей последовательности операций. */
CHECK(ump_word(0, 0, 0) == 901-UMP_LOG_CAPACITY);
+ /* Вызывает CHECK с аргументами (ump_word(0, UMP_LOG_CAPACITY-1, 0) == 900) в текущей последовательности операций. */
CHECK(ump_word(0, UMP_LOG_CAPACITY-1, 0) == 900);
+ /* Вызывает CHECK с аргументами (ump_word(0, 0, 8) == 1234) в текущей последовательности операций. */
CHECK(ump_word(0, 0, 8) == 1234);
+ /* Вызывает CHECK с аргументами (ump_word(0, 0, 24) == 6) в текущей последовательности операций. */
CHECK(ump_word(0, 0, 24) == 6);
/* Короткая CAN-команда должна остаться отдельным событием. */
+ /* Записывает modbus[127] значением 0x40; массив технологических регистров; слово int на C28x занимает 16 бит. */
modbus[127] = 0x40;
+ /* Вызывает ump_log_can. Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
ump_log_can(0x807F, 0x40, 0, 0);
- CHECK(ump_post == 0); /* A command alone is not an output transition. */
+ CHECK(ump_post == 0); /* A command alone is not an output transition. */ /* Вызывает CHECK с аргументами (ump_post == 0) в текущей последовательности операций. */
+ /* Записывает GpioDataRegs.GPBDAT.bit.GPIO58 значением 1; аппаратная линия ввода/вывода GPIO58. */
GpioDataRegs.GPBDAT.bit.GPIO58 = 1;
- ump_log_io(); /* STOP may be sampled before RES_OUT_2 is cleared. */
+ ump_log_io(); /* STOP may be sampled before RES_OUT_2 is cleared. */ /* Вызывает ump_log_io. Обслуживает изменения дискретных входов и выходов из главного цикла. */
+ /* Вызывает CHECK с аргументами (ump_post == 0) в текущей последовательности операций. */
CHECK(ump_post == 0);
+ /* Записывает GpioDataRegs.GPADAT.bit.GPIO3 значением 1; аппаратная линия ввода/вывода GPIO3. */
GpioDataRegs.GPADAT.bit.GPIO3 = 1;
+ /* Вызывает ump_log_io. Обслуживает изменения дискретных входов и выходов из главного цикла. */
ump_log_io();
+ /* Вызывает CHECK с аргументами (ump_post == UMP_POST_POINTS) в текущей последовательности операций. */
CHECK(ump_post == UMP_POST_POINTS);
+ /* Вызывает CHECK с аргументами (ump_word(0, ump_count-1, 2) == 0x103) в текущей последовательности операций. */
CHECK(ump_word(0, ump_count-1, 2) == 0x103);
+ /* Вызывает CHECK с аргументами (ump_word(0, ump_count-1, 18) == 0x807F) в текущей последовательности операций. */
CHECK(ump_word(0, ump_count-1, 18) == 0x807F);
+ /* Цикл for (i=0; i