1 Commits
167 ... master

Author SHA1 Message Date
9b15d9837a Испр. опечатку dac_stop 2026-09-22 07:52:36 +03:00
164 changed files with 3187 additions and 27867 deletions

View File

@@ -1,6 +0,0 @@
# Общая кодировка редактируемых файлов проекта.
root = true
# Русские комментарии сохраняются без BOM в UTF-8.
[*]
charset = utf-8

58
.gitignore vendored
View File

@@ -1,60 +1,2 @@
# Исключает из 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
# Кэш Python восстанавливается автоматически и не относится к исходникам прошивки.
**/__pycache__/
# Загруженные локальные инструменты документации не нужны для хранения изменений проекта.
/Doc/.tools/
# HTML-документация и диагностические журналы Doxygen создаются из исходных документов.
/Doc/build/
# Объекты компиляции восстанавливаются скриптами сборки и зависят от локальных инструментов TI.
/Bin/**/obj/
# Паспорт и заголовок конкретной сборки генерируются перед компиляцией из версии и состояния Git.
/Bin/**/generated/
# Исполняемые образы TI в экспериментальных каталогах являются результатом компиляции.
/Bin/**/*.out
# Карты новых сборок воспроизводятся линкером; ранее отслеживаемые карты остаются в Git.
/Bin/**/*.map
# HEX новых сборок дублирует локальные OUT/BIN; уже отслеживаемые образы сохраняются в истории.
/Bin/**/*.hex
# Листинги TI создаются из OUT для проверки порядка машинных инструкций EEPROM.
/Bin/**/*disassembly*.txt
# Кандидат SCI8 предназначен для проверки перед выпуском окончательного образа.
/Bin/**/*.candidate
# Локальные загрузочные образы пересоздаются из исходников и скриптов соответствующей сборки.
/Bin/**/*.bin
# Манифест конкретного образа содержит время и состояние локальной сборки.
/Bin/**/*.bin.manifest.json
# Контрольная сумма создаётся вместе с локальным загрузочным образом.
/Bin/**/*.bin.sha256
# Журналы компиляции и диагностики зависят от локального запуска инструментов.
/Bin/**/*.log
# Копии паспорта в каталогах с отметкой времени дублируют генерируемые метаданные сборки.
/Bin/**/firmware_identity.json
# Снимки интерфейса, использованные для проверки состава каналов, являются локальными артефактами.
/Bin/**/logger_channels.png
# Снимки предпросмотра защиты используются только при визуальной проверке интерфейса.
/Bin/**/gui_preview.png

1
Bin/.gitignore vendored
View File

@@ -1,2 +1 @@
# Исключает из Git артефакты по шаблону ниже.
/UKSSTMS320F28335.out

Binary file not shown.

Binary file not shown.

View File

@@ -2,7 +2,7 @@
TMS320C2000 Hex Converter v5.2.7
********************************************************************************
INPUT FILE NAME: <UKSSTMS320F28335.out>
INPUT FILE NAME: <C:\Dima\Project\Balsam_167\Bin\UKSSTMS320F28335.out>
OUTPUT FORMAT: Binary
PHYSICAL MEMORY PARAMETERS
@@ -12,20 +12,20 @@ PHYSICAL MEMORY PARAMETERS
BOOT LOADER PARAMETERS
Table Type: SERIAL PORT (SCI 8 bit Mode)
Entry Point: 0x0000a8d1
Entry Point: 0x0000b198
OUTPUT TRANSLATION MAP
--------------------------------------------------------------------------------
00000000..003fffff Page=0 Memory Width=8 ROM Width=8
--------------------------------------------------------------------------------
OUTPUT FILES: UKSSTMS320F28335_c6c91282.bin.pending [b0..b7]
OUTPUT FILES: C:\Dima\Project\Balsam_167\Bin\UKSSTMS320F28335.bin [b0..b7]
CONTENTS: 00000000..00007ffb BOOT TABLE
.cinit : dest=0000c000 size=00000273 width=00000002
.text : dest=00008000 size=00003bfc width=00000002
.econst : dest=0000c274 size=0000012b width=00000002
.switch : dest=0000c3a0 size=0000004c width=00000002
CONTENTS: 00000000..00006e67 BOOT TABLE
.cinit : dest=0000b35f size=00000283 width=00000002
.text : dest=00008000 size=0000335f width=00000002
.econst : dest=0000c000 size=00000112 width=00000002
.switch : dest=0000c112 size=00000028 width=00000002
--------------------------------------------------------------------------------
00000000..003fffff Page=1 Memory Width=8 ROM Width=8 "*DEFAULT PAGE 1*"

Binary file not shown.

View File

@@ -1,140 +0,0 @@
# Проверка комментариев и кодировки
Проверка относится к редактируемым исходникам C/H, ASM, CMD, тестовым INC и Python.
Для каждой непустой строки кода проверяется русский текст на ней или непосредственно перед ней.
Пустые строки, текст комментариев и содержимое многострочных строк данных не считаются кодом.
Качество и достоверность пояснений этой проверкой не устанавливаются; совпадение возможно и в строковом литерале.
Охват: исходники из Git-индекса. Сгенерированные файлы и подключённые соседние библиотеки проверяются отдельно.
Исходные уведомления TI сохранены. JSON-паспорта, индексы IDE, таблицы XLS и двоичные
результаты сборки не допускают исходных комментариев; их назначение описано в документации.
UTF-8 проверен в 157 текстовых файлах. Строк кода: 18866.
| Файл | Строк кода | С русским текстом рядом |
| --- | ---: | ---: |
| Bin/EepromPublishFix/rebuild.py | 41 | 41 |
| Bin/StartupWait3s/rebuild.py | 41 | 41 |
| Bin/UartColdStart/rebuild.py | 41 | 41 |
| 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 | 253 | 253 |
| 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 | 36 | 36 |
| Source/Internal/Include/measure.h | 90 | 90 |
| Source/Internal/Include/message.h | 32 | 32 |
| Source/Internal/Include/package.h | 128 | 128 |
| 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 | 534 | 534 |
| Source/Internal/bios.c | 236 | 236 |
| Source/Internal/cntrl_adr.c | 17 | 17 |
| Source/Internal/crc16.c | 158 | 158 |
| Source/Internal/ecan.c | 236 | 236 |
| Source/Internal/filter_bat2.c | 12 | 12 |
| Source/Internal/gas167.c | 54 | 54 |
| Source/Internal/kanal.c | 153 | 153 |
| Source/Internal/log_to_mem.c | 217 | 217 |
| Source/Internal/main.c | 167 | 167 |
| Source/Internal/measure.c | 625 | 625 |
| Source/Internal/message.c | 293 | 293 |
| 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 | 129 | 129 |
| tests/eeprom_profiles/check_publication.py | 18 | 18 |
| 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 | 213 | 213 |
| tests/gas167/run_test.py | 49 | 49 |
| tests/load_control/load_control_test.c | 170 | 170 |
| 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 | 18 | 18 |
| tests/load_control/stubs/peripher.h | 14 | 14 |
| tests/load_control/stubs/tools.h | 0 | 0 |
| tests/rs232_fifo/model.inc | 122 | 122 |
| tests/rs232_fifo/run_test.py | 53 | 53 |
| tests/ump_logger/init_test.c | 44 | 44 |
| tests/ump_logger/recorder_test.c | 152 | 152 |
| 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 |

View File

@@ -1,288 +0,0 @@
# SPI и управление ЦАП в Бальзам 167
Дата анализа: 23.09.2026. Рассмотрена текущая рабочая копия проекта `167`.
Документ описывает существующий код и предложения; прошивка в рамках этого анализа не изменялась.
## 1. Как устроено сейчас
ЦАП обслуживает **программный SPI через GPIO**, реализованный в `DAC.c`.
Аппаратный SPI-A используется отдельно для EEPROM в `spise2p.c`.
Изменение `SpiaRegs.SPIBRR` не меняет скорость передачи в ЦАП.
| Сигнал ЦАП | Вывод DSP | Имя в таблице платы | Действие |
|---|---|---|---|
| CS | GPIO59 | csdac, 1:13B | 0 на время кадра, затем 1 |
| DIN / MOSI | GPIO60 | didac, 1:13A | данные от DSP к ЦАП |
| SCLK | GPIO63 | clkdac, 1:14A | 16 тактов на слово |
Обозначения контактов взяты из комментариев `GPIO_table.h`, а не из проверенной схемы.
MISO в драйвере отсутствует: код отправляет команды, но не читает подтверждение или статус ЦАП.
Для платы нагрузки `get_Mode()` выбирает обычные GPIO и выходные направления этих линий.
Цепочка работы:
```text
CPU Timer1: 1000 Гц, период 1 мс
→ cpu_timer1_isr_SENS(), только Desk == dsk_LOAD
→ Load_runner()
→ каждые 5 вызовов: расчёт задания / инициализация
→ Anal_output(kod, time_dac)
→ dSEND(16-битное слово)
→ GPIO59, GPIO60, GPIO63
→ ump_log_tick()
```
`READY_FREQ=1000`, `DAC_FREQ=200`, поэтому `period_dac=5`.
200 Гц — частота обновления задания, **не частота SCLK**.
`LOAD_TIME=30`, `time_dac=6000` — количество шагов, используемое в расчёте разгона.
Вызов `dSEND` синхронный: обработчик таймера занят, пока не выставлены все биты.
## 2. Что происходит внутри одного SPI-кадра
Функция `dSEND(word)` выполняет:
1. Опускает CS и вызывает `DSP28x_usDelay(1L)`.
2. Повторяет 16 раз: SCLK=1 → DIN=старший бит → сдвиг слова влево → задержка → SCLK=0 → задержка.
3. Поднимает CS.
Передача начинается со старшего бита: D15 … D0. После кадра SCLK остаётся в 0,
DIN — в состоянии последнего бита. Между кадрами CS остаётся в 1.
Перед первым кадром `dSEND` отдельно не устанавливает исходное состояние SCLK.
Последовательность одного бита:
```text
SCLK ↑ → выставить DIN → выдержать время → SCLK ↓ → выдержать время
```
Новый бит устанавливается **после восходящего фронта**, но до нисходящего.
Следовательно, код рассчитан на чтение данных по нисходящему фронту; это
вывод из последовательности операций, а не подтверждение режима конкретной микросхемы.
При SCLK idle=0 такое поведение соответствует замыслу SPI mode 1.
Если приёмник читает по восходящему фронту, нужного setup-time здесь нет.
Нельзя менять фронты по привычному примеру SPI mode 0 без проверки схемы и паспорта ЦАП.
Из исходников установлены такие слова:
| Вызов | Передаваемое слово |
|---|---|
| `Init_DAC()` | `0x9002` |
| Обычное обновление | `0x8000 | (out & 0x0FFF)` |
| Ручная калибровка | `0x8000 | (DAC_cal() & 0x0FFF)` |
Локальная переменная `x` в `Anal_output()` каждый раз получает 0. Ветка отправки
без `0x8000` сейчас не выполняется. Точный смысл командных битов, номера канала,
режима питания и `0x9002` нельзя достоверно назвать: маркировка ЦАП в исследованных
исходниках не указана. Нужны схема или название установленной микросхемы.
После отправки `0x9002` функция `Init_DAC()` также переключает `RES_OUT_1` —
для платы нагрузки это GPIO9. Это отдельная линия с неизвестным здесь
электрическим назначением; считать её аппаратным RESET или LDAC без схемы нельзя.
## 3. Задержки и влияние прерываний
`DSP28x_usDelay(1L)` **не задаёт 1 мкс**. Ассемблерная функция принимает счётчик
циклов своего внутреннего цикла. Для микросекунд библиотека предоставляет макрос
`DELAY_US`, который предварительно пересчитывает время.
В комментарии самой ассемблерной функции приведена модель `9 + 5 × LoopCount`
тактов процессора. Она применима с оговорками о памяти без wait-state; вызовы,
GPIO-записи, цикл C и прерывания дополнительно влияют на реальную длительность.
Поэтому по числу `1L` нельзя вычислять частоту SCLK как 500 кГц или 1 МГц.
В проекте `XCLKIN=30 МГц`, `CLKMULT=2`, PLL множитель 4, делитель 2:
расчётная частота SYSCLKOUT — **60 МГц**, если входной генератор соответствует
константе. При этом `CPU_RATE` для макроса `DELAY_US` остался `6.667 нс`
(150 МГц). Это несоответствие не участвует в прямом вызове `DSP28x_usDelay(1L)`,
но помешает простой замене на `DELAY_US(1)`: сначала надо согласовать CPU_RATE
с фактической частотой. При 60 МГц период такта примерно 16.667 нс.
В таймерном ISR выполняется `EINT` после настройки `IER/MINT13`.
В текущей таблице приоритетов Group9 имеет уровень 1, Timer1 — 4;
разрешённые прерывания CAN/UART могут удлинять части SPI-кадра.
Сам `dSEND` не запрещает прерывания и не имеет защиты от повторного входа.
В найденных вызовах передача ЦАП идёт из `Load_runner`; добавлять второго
вызывающего без организации единого владельца передачи нельзя.
Это не доказывает потерю данных: некоторые ЦАП допускают произвольное растяжение
SCLK. Следует проверить паспортные ограничения и измерить минимальные и
максимальные времена под нагрузкой CAN/RS. Полный запрет прерываний на кадр
может уменьшить разброс, но увеличит задержку обработки связи.
## 4. Инициализация и расчёт аналогового выхода
`Setup_DAC_time()` задаёт `WAKEpowse=601`. Счётчик уменьшается с частотой 200 Гц.
Во время примерно трёхсекундной стартовой фазы `Init_DAC()` вызывается шесть раз,
при остатках 600, 500, 400, 300, 200, 100. После этого начинается обычный вывод.
Команда `cInitDac` вызывает повторную инициализацию; на этом шаге слово задания
не отправляется. При остановленном УМП счётчик `x` в `Load_runner` также вызывает
периодическую инициализацию примерно раз в 5.12 с. Это другая переменная `x`,
не связанная с постоянным нулём в `Anal_output`.
Расчёт кода:
```text
out = DAC_min + vrot × DAC_max / maxx − vrot × DAC_min / maxx
при cCalibrDac: out = DAC_cal
затем out &= 0x0FFF
```
Два деления здесь целочисленные. Их нельзя без проверки заменить одним:
`DAC_min + vrot × (DAC_max − DAC_min) / maxx` может дать другое округление.
Сначала нужно определить требуемое округление и допустимость изменения результата.
В `modbus[0x7B]` сохраняется отправленный 12-битный код, а в `modbus[0x1C]` —
расчётное задание в десятых долях мА. Это **не измерение выходного тока**.
В режиме `cCalibrDac` эти значения могут описывать разные вещи: в ЦАП уходит
ручной код, а `0x1C` остаётся результатом формулы разгона.
## 5. Что стоит исправить в первую очередь
### 5.1. Порядок запуска таймера — высокий приоритет
В `main()` выполняются `timer_Init(); EnableInterrupts();`, а затем загрузка
параметров и только после неё `Setup_DAC_time()`.
В `cpu_timer1_isr_SENS` перед `Load_runner()` нет проверки `READY`.
До настройки глобальные `period_dac`, `time_dac`, `WAKEpowse` нулевые.
Если в этом промежутке сработает Timer1 на плате нагрузки, условие счётчика
проходит при нулевом `period_dac`, стартовая задержка отсутствует, и путь может
дойти до `Anal_output(..., 0)` — деления на ноль. Это найденный путь выполнения,
не результат воспроизведения на железе.
Предложение: до допуска обслуживания ЦАП настроить GPIO в известное состояние,
загрузить/проверить параметры и выполнить `Setup_DAC_time`. Для этого можно
отдельно разрешать ветку ЦАП флагом готовности или запускать Timer1 позднее.
Нельзя просто отключить все прерывания на время загрузки: EEPROM использует Timer2.
Дополнительно проверять `maxx > 0` и допустимость `period_dac` перед расчётом.
### 5.2. Ошибка ограничения уставки
В `Load_runner` есть строка:
```c
if (dac_stop > 16) dac_go = 16;
```
При превышении конечной уставки меняется начальная. Вероятное намерение —
ограничивать `dac_stop`, но это надо подтвердить требованиями к разгонной
характеристике. Ранее `dac_go` ограничивается диапазоном 0..5, а эта строка
может сразу заменить его на 16. Следующая проверка способна поднять `dac_stop`
до 17. Это влияет на ток независимо от исправности SPI.
Предложение: описать допустимые пары начальной/конечной уставок в мА,
проверять их совместно и протестировать границы. Внутри алгоритма из обеих
уставок вычитается 4 мА; ограничения должны учитывать это смещение.
### 5.3. Маскирование вместо насыщения
`out & 0xFFF` обрезает старшие биты, но не ограничивает числовое значение:
4096 превращается в 0, −1 — в 4095. При ошибочной калибровке или выходе
за диапазон это создаёт скачок кода.
Предложение: сначала проверить входные данные и ограничить результат
диапазоном 0..4095, затем сформировать командное слово. Для ошибочных параметров
явно определить поведение: отказ, удержание предыдущего кода или заданное
проектом аварийное значение. Не выбирать «0» автоматически: код и ток связаны
калибровкой и внешней схемой.
### 5.4. Реальная длительность разгона
После половины диапазона `count_load` увеличивается дважды за шаг:
один раз в `if(count_load > time_dac/2)`, второй — в `++count_load`.
Поэтому достижение конца при `LOAD_TIME=30` занимает примерно **22.5 с**,
а не 30 с, без учёта начальной фазы и задержек исполнения.
Это может быть намеренной двухступенчатой характеристикой.
Предложение: явно описать её либо перейти к расчёту по прошедшему времени,
если требование действительно состоит в линейном разгоне за 30 с.
## 6. Улучшения непосредственно SPI
| Изменение | Польза | Что проверить |
|---|---|---|
| Явный `dac_bus_init`: CS=1, SCLK в idle, DIN определён; затем включение выходов | Предсказуемый первый кадр | Схема, подтяжки, активные уровни |
| Именованные задержки setup/hold/high/low/CS-high | Понятные временные ограничения | Паспорт ЦАП и фактическая частота DSP |
| Имена констант вместо `0x9002`, `0x8000`, `0xFFF` | Ясный смысл команд | Сначала установить модель ЦАП |
| Один владелец передачи и флаг занятости | Исключает наложение двух кадров | Все вызывающие и разрешённые ISR |
| Отдельные функции расчёта кода и отправки слова | Проверка алгоритма без железа | Сохранение округления и масштаба |
| Диагностика отправок/максимальной длительности | Показывает нагрузку и задержки | Счётчик отправок не считать ACK от ЦАП |
| Удаление неиспользуемого `wast()` и недостижимой ветки `x` | Упрощает чтение | Не затронуть другой `x` в Load_runner |
Не следует повышать DAC_FREQ ради ускорения SPI: меняется алгоритм обновления,
число шагов и стартовые интервалы. Для других частот проверить целочисленность
отношения READY_FREQ/DAC_FREQ и диапазон 16-битного `time_dac` на C28x.
Текущие 6000 шагов помещаются; будущие LOAD_TIME/DAC_FREQ могут вызвать переполнение.
Вариант без переделки платы: сохранить GPIO-передачу, нормировать её тайминги,
измерить длительность кадра и только затем решать, нужна ли короткая критическая секция.
Не переносить отправку в основной цикл без анализа задержек: в проекте есть
блокирующие операции EEPROM. Если переносить — использовать явную очередь/последнее
задание с оговорённым временем обслуживания и отдельными командами инициализации.
## 7. Можно ли перейти на аппаратный SPI
У F28335 один SPI-A. Его выводы могут быть GPIO16/17/18/19 или GPIO54/55/56/57.
GPIO60 и GPIO63 не имеют функции SPISIMOA/SPICLKA, поэтому текущие DIN/SCLK
не переводятся на SPI-A одной настройкой mux. Нужны изменения соединений.
Это подтверждается [таблицами выводов TI, SPRS439Q](https://www.ti.com/lit/ds/symlink/tms320f28335.pdf).
В данном проекте SPI-A уже обслуживает EEPROM на GPIO16/17/18 и CS=GPIO19.
Вариант общей шины требует подключения ЦАП к тем же MOSI/SCLK и отдельного CS,
проверки электрической совместимости и последовательного доступа к SPI-A.
Если меняются длина слова/фаза/частота, переключать настройки можно только
после завершения предыдущей операции. Текущий автомат EEPROM работает через
Timer2 и сам меняет формат слова: потребуется общий владелец шины.
Сначала достаточно рассмотреть один 16-битный аппаратный кадр с ограниченным
ожиданием либо прерыванием завершения. FIFO/DMA усложнят короткую передачу;
их необходимость следует обосновывать измерениями. CS надо отпускать после
фактического окончания сдвига последнего бита, а не сразу после записи TXBUF.
Возможность DMA именно для выбранного периферийного блока отдельно проверять
по TRM, не переносить механически решение STM32.
Для будущего порта STM32 можно сохранить общий расчёт и формат слова,
а отправку реализовать аппаратным SPI на выводах конкретной платы. Нынешний
эмулятор лишь генерирует поля ЦАП в журнале; он не подтверждает физические
SPI-фронты и выходной ток устройства.
## 8. Практический порядок работ и проверка
1. Установить модель ЦАП, назначение GPIO9, схемные инверсии и требования timing.
2. Исправить порядок готовности ЦАП при запуске и защитить деление на ноль.
3. Согласовать диапазоны уставок, исправить ограничение и обрезание кода.
4. Снять текущие CS/SCLK/DIN при запуске, рабочем разгоне и нагрузке CAN/RS.
5. Нормировать программные задержки; аппаратный SPI выбирать по результатам измерений.
Логический анализатор подключить к CS, SCLK, DIN и общей земле; при необходимости
добавить GPIO9. Записать 16 бит каждого кадра, порядок битов, `0x9002`,
минимум/середину/максимум кода, setup/hold DIN, CS setup/hold, SCLK high/low,
длину кадра и интервал обновления. Отдельно проверить первый кадр после сброса.
Частоту дискретизации анализатора выбрать по измеренному SCLK с запасом.
Осциллографом проверить форму фронтов и выбросы, внешним измерителем — ток.
После правок проверить граничные и ошибочные уставки, `maxx=0`, калибровку,
разгон/останов, cInitDac, сохранение параметров EEPROM одновременно с CAN/RS.
Тесты расчёта должны фиксировать требуемое округление и поведение вне диапазона;
программная трасса GPIO — количество фронтов и порядок данных. Проверка GPIO
на компьютере не заменяет измерение времён на собранной плате.
## 9. Основания анализа
Факты о текущем поведении взяты из следующих файлов; номера строк относятся
к рабочей копии на дату анализа:
- [Формирование кадра, инициализация, расчёт выхода и разгон](C:/setcorp/git/tms_periph_28335/167/Source/Internal/DAC.c:45).
- [Запуск таймера и порядок инициализации](C:/setcorp/git/tms_periph_28335/167/Source/Internal/main.c:26).
- [Вызов Load_runner из ISR](C:/setcorp/git/tms_periph_28335/167/Source/Internal/measure.c:119).
- [Частоты и время разгона](C:/setcorp/git/tms_periph_28335/167/Source/Internal/Include/measure.h:73).
- [Назначение линий платы](C:/setcorp/git/tms_periph_28335/167/Source/Internal/Include/GPIO_table.h:294).
- [Mux и направления GPIO](C:/setcorp/git/tms_periph_28335/167/Source/Internal/peripher.c:44).
- [Аппаратный SPI EEPROM](C:/setcorp/git/tms_periph_28335/167/Source/Internal/spise2p.c:98).
- [Счётчик ассемблерной задержки](C:/setcorp/git/tms_periph_28335/167/Source/External/v120/DSP2833x_common/source/DSP2833x_usDelay.asm:62).
- [Настройки PLL и CPU_RATE](C:/setcorp/git/tms_periph_28335/167/Source/External/v120/DSP2833x_common/include/DSP2833x_Examples.h:66).
- [Приоритеты прерываний](C:/setcorp/git/tms_periph_28335/167/Source/External/v120/DSP2833x_common/include/DSP2833x_SWPrioritizedIsrLevels.h:61).
Модель ЦАП и электрическая схема не установлены. Режим выборки, назначение
командных битов и допустимые длительности нельзя считать подтверждёнными
до сверки с документацией конкретной микросхемы. Сборка/прошивка и стендовые
измерения в рамках подготовки этого документа не выполнялись.

View File

@@ -1,136 +0,0 @@
# EEPROM 167: выбор AT25256B / M95M02
Маркировка платы `ATMLH516 5EBL` определяет AT25256B: **256 Кбит**, то есть
**32 768 байт**. Расшифровка и характеристики приведены в
[даташите Microchip](https://ww1.microchip.com/downloads/aemDocuments/documents/MPD/ProductDocuments/DataSheets/AT25128B-AT25256B-128-256-Kbit-SPI-Serial-EEPROM-Industrial-Grade-Data-Sheet-DS20006193.pdf).
Константы общей разметки находятся в
[templates/include/balsam167_eeprom_layout.h](../../newProject/SETGUI/third_party/templates/c/set-protocol/include/balsam167_eeprom_layout.h).
`spise2p.h` использует их для физического размера, количества слов и длины
страницы. `message.c` — для адреса параметров. Размер массива параметров
проверяется относительно `ANSWER_LEN` на этапе компиляции.
`F28335.cmd` включает тот же заголовок и экспортирует символы `_EEPROM_*` в
`.map`. Путь к templates/c/set-protocol добавлен в search path линкера CLI и CCS.
EEPROM не стала секцией CPU MEMORY: SPI-образ загружается в RAM загрузчиком.
Расположение `.text`, `.cinit`, `.econst`, `.switch` не менялось.
| Область | Начало, байт | Конец, исключая | Размер |
|---|---:|---:|---:|
| Прошивка SCI8 | `0x0000` | `0x7EFC` | 32 508 |
| Параметры | `0x7EFC` | `0x7FFE` | 258 |
| Неиспользуемое слово | `0x7FFE` | `0x8000` | 2 |
`check_firmware.ps1` получает размер и резерв из общего заголовка и сверяет
резерв с `ANSWER_LEN`. При нестандартном checkout передайте `-TemplatesRoot`;
`build_logger.ps1` делает это автоматически. Исторические параметры не перенесены.
Чтение с платы, единицы адресов, порядок байтов и сохранение дампа описаны в
[руководстве SETGUI](../../newProject/SETGUI/docs/BALSAM167_EEPROM.md).
Для старой прошивки reader использует CMD_PEEK (2 байта за запрос).
Версия 0.1.1 также поддерживает блочное чтение FC03, регистры 0x8000..0xBFFF,
до 120 слов (240 байт) за запрос. Полный дамп требует 137 запросов.
Границы и формат заданы в templates, GUI использует тонкий Python-порт.
Блочное чтение выполняется с разрешёнными прерываниями для работы SPI Timer2.
Запись через это окно запрещена; параметры и их расположение не изменяются.
Размер каждого нового BIN проверяется при сборке; прежний вариант с одним
PEEK занимал 32 286 байт. Точный размер новой сборки указан в её manifest.
Для реального увеличения памяти потребовались бы другая микросхема, проверка
SPI-загрузчика и драйвера, а не только правка линкера.
## Выбор типа памяти (прошивка 0.1.2)
По умолчанию остаётся AT25256B. Автоматического определения ёмкости нет:
контрольные записи для определения типа не выполняются. Выбранный тип должен
совпадать с физической микросхемой до запуска программы и чтения параметров.
### CCS12
Откройте `Source/Internal/Include/eeprom_config.h`:
```c
#define EEPROM_M95M02 0 /* AT25256B, 32 КиБ */
/* Для установленной M95M02 измените значение на 1. */
```
После изменения выполните **Project → Clean**, затем **Rebuild**. Этот файл
читают драйвер, обработчик команд и F28335.cmd; post-build использует тот же
выбор. Не задавайте противоречащий ему отдельный define только компилятору CCS:
тогда компилятор, линкер и проверка BIN могут получить разные настройки.
### Сборка скриптом
```powershell
./build_logger.ps1 -Eeprom AT25256B -OutputDirectory ./Bin/EepromProfiles/AT25256B -ImageName UKSSTMS320F28335_AT25256B
./build_logger.ps1 -Eeprom M95M02 -OutputDirectory ./Bin/EepromProfiles/M95M02 -ImageName UKSSTMS320F28335_M95M02
```
Параметр скрипта передаётся компилятору, линкеру и проверке размера; исходный
config не меняется. Скрипт по умолчанию собирает AT25256B. Рядом с BIN создаются
manifest и SHA-256; поле `eeprom` в manifest различает аппаратные варианты.
UART остаётся 115200; алгоритм UART и FIFO не изменялся.
| Параметр | AT25256B | M95M02-DR |
|---|---:|---:|
| Ёмкость, байт | 32768 | 262144 |
| Адрес SPI | 2 байта | 3 байта |
| Страница записи, байт | 64 | 256 |
| Начало параметров, байт | 0x7EFC | 0x3FEFC |
| Начало параметров, слова | 0x3F7E | 0x1FF7E |
| Конец параметров, исключая | 0x7FFE | 0x3FFFE |
| Максимальная область BIN | 32508 | 261884 |
Последние два байта не используются. У M95M02 старшие адресные биты передаются
отдельным восьмибитным тактом, затем младшие 16 бит. Адреса и длины драйвера
расширены до 32 бит только в сборке M95M02. Запись делится по физическим страницам;
готовность определяется WIP в регистре состояния. На плате с новым чипом ещё
нужна проверка записи/считывания и холодного SPI boot; тесты на ПК не заменяют её.
### SETGUI
На вкладках **EEPROM 167** и **Загрузка / запуск / прошивка** есть синхронный
чекбокс **M95M02 · 256 КиБ**. Снято — AT25256B · 32 КиБ. Он выбирает протокол
и допустимый диапазон ПК, но не перепрограммирует тип EEPROM работающей платы.
Во время чтения/загрузки переключатель блокируется.
Для полного дампа нажмите «Вся EEPROM»: 32768 либо 262144 байта. Длина блока
остаётся 240 байт. M95M02 требует блочного чтения; автоматический переход на
PEEK запрещён. Неподходящая прошивка должна отклонить запрос, а не вернуть
повторяющиеся первые 32 КиБ как полный дамп. Дамп можно передать кнопкой
«Сравнить с файлом…» напрямую в сравнение BIN.
При загрузке BIN проверяется поле `eeprom`, если оно присутствует в manifest.
Старые файлы без этого поля не позволяют проверить тип. Команда «В SEEPROM»
использует отдельный подкод M95M02; старая прошивка его не исполняет. Операция
может завершиться таймаутом при несовпадении типа; это не успешная запись.
GUI ограничивает отдельную загрузку в RAM существующим пределом 199993 байт:
ёмкость EEPROM 256 КиБ сама по себе не увеличивает буфер загрузки или RAM CPU.
### Замена микросхемы и параметры
Сначала сохраните полный дамп старой EEPROM и настройки платы. После установки
M95M02 запустите её сборку через CCS, запишите соответствующий BIN и сохраните
параметры штатной командой Save. Параметры автоматически не мигрируют с 0x7EFC
на 0x3FEFC. Простое копирование старого полного дампа в начало новой памяти
не переносит настройки в их новую область и оставляет старый вариант прошивки.
### Общий протокол templates
Реализация и границы: `balsam167_eeprom_layout.h`, `balsam167_eeprom_block.h`,
`periph28335.c`. Публичные функции `*_profile` получают 0 (AT25256B) или 1
(M95M02); старые функции и структура reader из четырёх uint32_t сохранены.
Python — тонкий ctypes-порт. Профили ПМ67/2812 и STM этим выбором не изменяются.
Для M95M02 используется частное расширение окна FC03: адрес 0x8000…0xFFFF,
quantity = 0x8000 | (bank << 8) | word_count, bank 0…3, word_count 1…120.
Каждый запрос содержит свой банк 64 КиБ; общего переключаемого банкового
регистра нет. Блок не пересекает границу банка. Это не стандартное количество
регистров Modbus — пользоваться следует общим API templates.
Подкод EXTEND записи: 4 для AT25256B, 0x44 для M95M02. Адрес назначения в словах,
размер в байтах. Обе стороны проверяют границу области прошивки.
Проверки: C-тест полного дампа 256 КиБ с нечётного адреса, все переходы банков,
CRC и выход за границы; Qt-тесты выбора и запрета fallback; host-тест реального
SPI-автомата `python tests/eeprom_profiles/run_test.py`; сборка обоих вариантов TI.

View File

@@ -1,167 +0,0 @@
# 167: версия работающей прошивки, SHA-256 и выпуск
## Что подключено
167 использует общий `templates/c/firmware-info`, а не копию Climate.
Работающий ПМ35 отдаёт 12 регистров версии через RS и служебный CAN.
После сборки на компьютере создаются SHA-256 BIN и JSON-паспорт.
Общая подробная инструкция, включая перенос на TMS320F2812 и STM32:
[BUILD_IDENTITY.md](../../newProject/SETGUI/third_party/templates/c/firmware-info/BUILD_IDENTITY.md).
| Файл проекта | Роль |
|---|---|
| `UKSSTMS320F28335/firmware_version.h` | Редактируемый номер выпуска: FIRMWARE_VERSION_MAJOR/MINOR/PATCH |
| `UKSSTMS320F28335/firmware_identity.json` | Product и target; версия берётся из C-заголовка |
| `Source/Internal/shared_ump.c` | Подключение общей таблицы версии и привязка к UMP ПМ35 |
| `UKSSTMS320F28335/prepare_identity.py` | Генерация идентичности из C-заголовка перед CCS Debug/Release |
| `build_logger.ps1` | Полный CLI build: prepare, compile, link, SCI8, size check, seal |
| `build_bin.bat` | Debug post-build: проверка SCI8 и паспорт конечного BIN |
| `tests/firmware_identity/port_test.c` | Host-проверка привязки версии к реальному порту 167 |
Номер `0.1.0` — начальная версия разработки этого механизма; он не выдаётся за
историческую версию предыдущих BIN. Назначайте release-номер вручную перед выпуском.
## Сборка из PowerShell
Из корня 167:
```powershell
./build_logger.ps1 -OutputDirectory "$PWD/Bin/FirmwareIdentity" `
-ImageName UKSSTMS320F28335
```
По умолчанию применяется `-O2 --opt_for_speed=0`. Результаты:
```text
Bin/FirmwareIdentity/UKSSTMS320F28335.bin
Bin/FirmwareIdentity/UKSSTMS320F28335.bin.manifest.json
Bin/FirmwareIdentity/UKSSTMS320F28335.bin.sha256
Bin/FirmwareIdentity/generated/firmware_identity.h
Bin/FirmwareIdentity/generated/firmware_identity.json
```
Проверка файла перед передачей:
```powershell
python ../newProject/SETGUI/third_party/templates/c/firmware-info/tools/identity.py verify `
--image Bin/FirmwareIdentity/UKSSTMS320F28335.bin `
--manifest Bin/FirmwareIdentity/UKSSTMS320F28335.bin.manifest.json
```
CLI принимает `-TemplatesRoot`, если общий checkout расположен иначе. Все
исходники общего механизма собираются непосредственно из этого checkout.
## Сборка CCS
В `.cproject` добавлены pre-build и include paths `${BuildDirectory}/generated` и
`templates/c/firmware-info/include`. После изменения настроек закройте/откройте
проект в IDE, затем выполните Clean/Rebuild.
Pre-build требует Python 3.10+ и Git в PATH процесса CCS. `Generated` принадлежит
этому проекту: не запускайте Debug/Release одновременно. Для параллельных
сборок используйте CLI с разными output-каталогами.
Штатный Debug post-build создаёт в `Bin`:
```text
UKSSTMS320F28335_<commit>.bin
UKSSTMS320F28335_<commit>.bin.manifest.json
UKSSTMS320F28335_<commit>.bin.sha256
```
Имя BIN исторически содержит HEAD без dirty-суффикса; достоверные признаки dirty
находятся внутри ответа версии и паспорта. Не определяйте чистоту только по имени.
Release-конфигурация получает embedded identity через pre-build, но её старый
проект не имел автоматического BIN post-build. Для готового проверенного BIN с
паспортом используйте описанный CLI либо настройте release-конверсию по общей
инструкции; нельзя запускать Debug `build_bin.bat` на Release и ожидать другой `.out`.
Если CCS пишет `Error ... (ignored)`, сборка не считается успешной: убедитесь,
что последняя проверка и `seal` завершились без ошибок. Старый BIN с таким же
именем может оставаться на диске после неудачной сборки.
## Как прочитать версию
По прямому RS232/RS485: Modbus **03**, адрес начала **4608 (`0x1200`)**, **12 слов**.
Это zero-based адрес в запросе, а не обозначение `4xxxx` в интерфейсе терминала.
Адрес ведомого остаётся текущим `CNTRL_ADDR`. Возвращается стандартный RTU-ответ
с 24 байтами данных и CRC; дополнительного legacy padding в этом окне нет.
| Адрес | Содержимое |
|---|---|
| `0x1200` | Версия формата = 1 |
| `0x1201..0x1203` | Major, minor, patch |
| `0x1204` | Год UTC |
| `0x1205` | Месяц:день, старший:младший октет |
| `0x1206` | Час:минута UTC |
| `0x1207` | Секунда |
| `0x1208..0x120B` | 8 ASCII-символов Build ID, по два на слово |
По служебному CAN ПМ35: запрос UMP функции 03, `0x1200`, 12 слов; ответ состоит
из шести фрагментов. Используется выбранный Mode и существующий token запроса.
CAN ПМ67 не переназначается. Запись функции 06 в окно версии запрещена.
Старый образ может вернуть исключение или неизвестный контракт. Это не следует
заменять «ожидаемой» версией выбранного BIN. После прошивки переподключитесь или
явно обновите чтение: ответ должен поступить с устройства, а не из кэша GUI.
## Что сравнивать после заливки
Сравните SemVer, все поля UTC и Build ID с паспортом именно загруженного BIN.
`+` означает локальные изменения приложения **или templates**; полный Git SHA
и состояние обоих деревьев записаны в JSON. Проверка SHA на ПК подтверждает
целостность файла, но не заменяет проверку программатором записанной памяти.
В контракте нет аппаратного product ID и хеша всей памяти. Подключённый профиль
должен оставаться ПМ35/167, а файл — `product=Balsam-167-PM35`,
`target=TMS320F28335`. Не переносите файл на ПМ67 только по похожему имени.
## Влияние на память и параметры
С проверенными настройками текущий образ занимает **32 286 байт**, предел —
**32 508**, запас **222 байта**. Механизм добавил 116 байт относительно сборки
без него. Это результат конкретной сборки, не обещание для следующих изменений.
Таблица версии — часть `.econst` прошивки. Её не сохраняют в область параметров;
старые настройки не могут подменить версию после обновления. Размер буфера лога
и размещение EEPROM-параметров не менялись. Дата не разбирается на MCU, SHA-256
не вычисляется на MCU. Проверка размера `check_firmware.ps1` остаётся обязательной.
## Проверки и ограничения
Проверка соответствия паспорта **реально встроенной** таблице в собранном SCI8:
```powershell
python tests/firmware_identity/check_build.py Bin/FirmwareIdentity/UKSSTMS320F28335.bin
```
Этот независимый тест также сверяет SHA и размер, проходит boot-блоки и ищет
точное 12-словное представление версии. Он обнаружит старый объект версии или
паспорт другой сборки. Это тест для 167, не транспортный код для GUI.
Host-тест реального порта (GCC должен быть в PATH):
```powershell
$templates = '../newProject/SETGUI/third_party/templates'
gcc -std=c99 -Wall -Wextra -Werror `
"-I$templates/c/firmware-info/include" -IBin/FirmwareIdentity/generated `
"-I$templates/c/set-protocol" "-I$templates/c/set-protocol/ports/tms320f28335" `
tests/firmware_identity/port_test.c Source/Internal/shared_ump.c `
-o Bin/FirmwareIdentity/port_test.exe
./Bin/FirmwareIdentity/port_test.exe
python tests/ump_logger/test_firmware_image.py
python tests/ump_logger/run_test.py
python tests/ump_logger/run_init_test.py
```
Проверены полный TI build 167, формат SCI8, host-тесты протокола и регистратора,
общие тесты identity/SHA, компиляция общего C-кода TI C28x без FPU и ARM Cortex-M4.
Это не аппаратная проверка TMS2812/STM32 и не полноценная сборка другого проекта.
Физическое чтение нового окна версии и проверку после загрузки нужно выполнить
на стенде. В SETGUI на вкладке «Загрузка / запуск / прошивка» доступны
«Прочитать версию с платы» и «Проверить файл»: показаны SemVer, дата UTC,
Build ID и сравнение с выбранным BIN. Для проверки файла держите рядом его
`.bin.manifest.json`; GUI проверяет product/target, размер и SHA-256 и повторяет
проверку перед передачей. BIN без паспорта отмечается как непроверенный старый
образ; неверный паспорт блокирует загрузку. После RESET прочитайте версию снова.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,119 +0,0 @@
# periph_28335: общая панель RS/CAN и регистратор УМП
## Где находятся панели
В верхнем ряду вкладок, рядом с **Altera Logic**, появилась **periph_28335**.
Внутри неё:
- **Dima / CAN terminal** — существующий CAN-терминал, его проекты, узлы и настройки адаптера;
- **rs232_periph_28335** — существующие операции RS232/485, Modbus и настройки COM;
- **Логгер УМП** — единая панель графиков и архива для обоих транспортов.
В общей группе CAN остались «Шина CAN / мост» и «DevBoard_V1».
В общей группе RS232/485 остался RS_TERMINAL_2812.
Терминалы сохраняют свои соединения: перенос вкладок не создаёт новые порты.
## Онлайн и чтение по CAN
1. Откройте **periph_28335 → Dima / CAN terminal → Настройки**.
2. Выберите Candle/gs_usb либо SLCAN/Lawicel и канал адаптера.
Для штатной прошивки Бальзам 167 используется CAN 250000 бит/с.
Нажмите «Подключить».
3. Перейдите в соседнюю вкладку **Логгер УМП**.
4. В строке **Связь логгера** выберите **CAN · адаптер Dima**.
5. Укажите **CAN-плата (Mode)**: физический номер платы в прошивке, 1..16.
Платы нагрузки Бальзам 167 имеют номера 5/6; выбирайте фактически подключённую.
Это не RS-адрес 16 и не индекс строки таблицы Dima. Выбор проекта в Dima
не меняет CAN-адрес регистратора: он явно определяется этим полем.
6. Нажмите **Начать запись** или **Онлайн**, если запись на плате уже идёт.
Остальные действия, флажки, легенда, единицы мА и CSV одинаковы для RS и CAN.
7. После команды отключения и секунды постинтервала нажмите
**Прочитать отключение**. Запись текущего банка на плате продолжается.
Кнопка **Настройки связи** открывает настройки выбранного транспорта.
Состояние адаптера/порта и адреса CAN постоянно отображаются над графиком.
**Прервать обмен** останавливает чтение GUI, не посылая команду остановки
регистратора или УМП. При переключении канала/платы незавершённые запросы
отменяются, поздние ответы не продолжают старую цепочку.
Для RS выберите **RS232/485** и настройте COM в соседней RS-панели:
обычно 115200, адрес 16. Сообщения «не подключён» и «занят запросом» разделены.
Отключение RS-порта не останавливает CAN-просмотр. CAN-разрыв не мешает RS.
Демо, если оно включено в сборке, по-прежнему работает без физической платы.
## Изменения прошивки
Для CAN требуется новая прошивка этой ветки. Предыдущая версия регистратора
умела отдавать данные только через Modbus. Старая плата игнорирует новые
служебные запросы; GUI сообщает о тайм-ауте без изменения команд УМП.
- MBOX0: прежняя передача технологических данных, ID 0xBA0010 + Mode - 1.
- MBOX1: прежний приём команд, ID 0xBA0000 + Mode - 1; дополнительно
распознаётся служебный заголовок 0x1F00 и длина ровно 8 байт.
- MBOX2: отдельные ответы регистратора, ID 0xBA0020 + Mode - 1.
Биты маски записи регистров у служебного запроса равны нулю. Обработчик
перехватывает его до изменения modbus[] и до журналирования CAN-команд:
опрос собственного журнала не заполняет журнал.
Запрос ставится в очередь из ISR. Основной цикл формирует целый снимок
под короткой блокировкой IRQ и отправляет максимум один кадр за вызов
UMP_CAN_service(). Ожидания передачи в цикле нет. Перед следующим
фрагментом приоритет отдаётся ожидающей штатной телеметрии MBOX0.
Если ACK служебного mailbox не приходит 250 тиков таймера, передача
отменяется. При этом штатные CAN-команды и MBOX0 не отменяются.
По CAN доступны те же расширенные адреса 0x1000 / 0x1010 / 0x1100,
состав записи и версия снимка 2. Новый протокол не даёт писать через
служебный запрос в технологические адреса 0..127.
## Формат кадров
CAN 2.0B, расширенный ID, 8 байт данных. Порядок соответствует существующей
прошивке: MDL (слова 1,2), затем MDH (заголовок, слово 0). Каждое слово
содержит сначала старший байт.
Запрос: `[адрес BE16, значение/длина BE16, 0x1F00 BE16, token:function BE16]`.
Функция 3 — чтение, 6 — запись; token — номер запроса 1..255.
Ответ: `[данные0 BE16, данные1 BE16, (0x1F00+индекс) BE16, token:error BE16]`.
Номер фрагмента 0..61, в нём два слова снимка. Ошибка 0 означает успех,
1 — неизвестная функция, 2 — неверный адрес/диапазон, 3 — запрещённое значение.
У записи успешный ответ содержит эхо адреса и значения.
Пример: Mode=5, token=7, чтение статуса 16 слов.
Запрос ID `0x00BA0004`, данные `10 00 00 10 1F 00 07 03`.
Ответы ID `0x00BA0024`, восемь фрагментов по два слова.
Онлайн-снимок из 124 слов передаётся 62 фрагментами.
GUI принимает только ответ выбранной платы с номером текущего запроса,
восстанавливает порядок фрагментов, игнорирует одинаковые дубликаты и
отклоняет противоречащие. Неполный снимок не попадает на график.
После потери подтверждения записи GUI прямо сообщает, что команда могла
выполниться; автоматического повторного старта регистратора нет.
Онлайн показывает последние три записи из полного снимка. При высокой
нагрузке шины/низкой скорости возможны пропуски онлайн-отображения;
они считаются существующим счётчиком. Архив читается целиком по блокам.
Предполагается один активный читатель архива: его курсор общий для RS/CAN.
Одновременное управление архивным курсором из двух независимых программ
не поддерживается.
## Проверки и ограничения
Пройдены тесты протокола, сборки всех 62 фрагментов, неверного адреса/токена,
пропущенных и повторных фрагментов, ACK и ошибок, отмены при смене канала,
иерархии вкладок и сохранения RS/демо. Набор тестов выполнен на Qt 6 и Qt 5.
В прошивке проверен настоящий код формирования ответов через host-тест;
изменённые C-файлы прошли проверку синтаксиса Clang с исходными заголовками.
Сборка TI/CCS, проверка MAP и испытание CAN на реальной плате ещё требуются.
Особенно проверить тайминги IRQ и приоритет штатной телеметрии на нагруженной
шине. Файлы прошивки Bin/*.out/hex не заменены. Архив остаётся в ОЗУ:
команда отключения фиксирует его, пропадание питания стирает.
## Общее ядро templates
Сервер CAN/RS логгера подключён через `Source/Internal/shared_ump.c`.
Для сборки требуется соседний `../../templates`. Контракт и порты:
`templates/c/set-protocol/docs/UMP_PROTOCOL.md`.

View File

@@ -1,97 +0,0 @@
# RS232 FIFO для ПМ35 / TMS320F28335
Ветка `pm35-uart-fifo`. FIFO включён **только SCI-A / COM_1 / RS232**.
SCI-B / COM_2 / RS485 сохраняет прежние настройки и обработчики без FIFO.
Скорости портов не менялись: RS232 115200; RS485 — прежние 57600/115200.
`Source/Internal/Include/RS485.h`: `RS232_USE_FIFO=1` по умолчанию.
Для сборки прежнего пути передачи определить `RS232_USE_FIFO=0`.
## Работа
- TX заполняет до 16 байт, пополняет при остатке не более 8.
- После постановки последнего байта порог переключается на 0. Следующее
прерывание завершает передачу только после пустого FIFO и `TXEMPTY`.
Ожидание внутри завершающего ISR ограничено остатком последнего символа;
передача всего FIFO внутри ISR не ожидается.
- Первый блок ставится в FIFO до разрешения TX-прерывания, под короткой
IRQ-блокировкой с восстановлением прежнего состояния.
- Убраны программные задержки перед передачей именно для SCI-A. Данные
`BM_CHAR32` и упакованный поток `BM_PACKED` сохраняют прежний порядок байтов.
Нулевая длина не обращается к указателю и не включает передатчик.
- RX читает накопленные байты из FIFO. Порог 1 сохраняет немедленный приём
коротких команд и остатка блока. `SCIRXBUF` читается один раз вместе с FE/PE.
- Ошибка/переполнение аннулирует пакет и `BS_LoadOK`, очищает FIFO. После
3–4 мс тишины обработчик таймера 1 мс возвращает SCI-A к ожиданию адреса.
Продолжающийся повреждённый поток продлевает ожидание. CMD_LOAD после
ошибки требует нового CMD_INITLOAD. Расчёт паузы предназначен для 115200.
- Счётчики отладчика: `rs_a.fifo_rx_errors`, `rs_a.fifo_overflows`.
## Расчёт скорости и диагностика приёма
FIFO остаётся включённым. Для SCI используется формула TI SPRUI07:
`baud = LSPCLK / (8 * (BRR + 1))`. Функция `RS_SetLineSpeed` округляет
отношение `LSPCLK / (8 * baud)` и вычитает единицу перед записью BRR.
При LSPCLK 60 МГц и заданных 115200 бод регистры должны содержать
`SCIHBAUD=0`, `SCILBAUD=64` (`0x40`). Реальная скорость — 115384,6 бод,
отклонение +0,16 %. Прежнее значение 65 давало 113636,4 бод; сама по себе
эта разница не доказывает причину наблюдавшегося отказа на плате.
GPIO28 настраивается как асинхронный вход SCI-A с подтяжкой к уровню покоя.
Прерывание RXERROR разрешается во время приёма: BREAK при пустом FIFO
не может вызвать прерывание по порогу RXFFIL. Во время передачи оно
отключается вместе с RX FIFO, чтобы ошибка RX не сбрасывала активный TX.
Для просмотра в CCS добавлены поля в RAM:
| Поле `rs_a` | Назначение |
|---|---|
| `fifo_rx_bytes` | Количество прочитанных из FIFO байтов, включая повреждённые |
| `fifo_rx_last_word` | Последнее слово SCIRXBUF; данные в битах 7:0, FE/PE в битах 15:14 |
| `fifo_rx_last_status` | SCIRXST последней ошибки до сброса; BREAK/FE/OE/PE в битах 5/4/3/2 |
| `fifo_rx_last_error_word` | Повреждённое слово FE/PE либо ноль при общей ошибке до чтения FIFO |
Смотрите эти поля и отдельные регистры управления. Чтение SCIRXBUF в Watch
изменяет состояние приёмника; для просмотра данных TI предусматривает
SCIRXEMU. Описание регистров: [TI SPRUI07](https://www.ti.com/lit/ug/sprui07/sprui07.pdf).
Это UART-оптимизация. Она не меняет команды/формат логгера УМП и не подключает
экспериментальный GAS-логгер. Размеры блоков чтения УМП остаются прежними.
## Проверка
```powershell
python tests/rs232_fifo/run_test.py --cc C:/msys64/mingw64/bin/gcc.exe
```
Тест извлекает рабочие функции из `RS485.c`; заменяется только поведение
аппаратных регистров, ожидание продвижения UART и модель 16-битного char C28x.
Проверены TX-длины 0/1/2/7/8/15/16/17/31/120/253/400, упакованный блок 8194,
приём короткого/разделённого пакета и LOAD 8194, FIFO overflow, FE/PE,
восстановление после тишины, остаток сдвигового регистра и независимость SCI-B.
Полная сборка TI C2000 22.6.0.LTS:
```powershell
./build_logger.ps1 -OptimizeForSize -Rs232Fifo 1 `
-OutputDirectory "$PWD/Bin/Rs232FifoTest" -ImageName PM35_167_rs232_fifo
./build_logger.ps1 -OptimizeForSize -Rs232Fifo 0 `
-OutputDirectory "$PWD/Bin/Rs232NoFifoTest" -ImageName PM35_167_rs232_no_fifo
```
| Образ | Размер | Запас до параметров EEPROM |
|---|---:|---:|
| FIFO, `-O2 --opt_for_speed=0` | 32158 байт | 350 байт |
| Без FIFO, те же параметры оптимизации | 31234 байта | 1274 байта |
Оба BIN прошли проверку структуры SCI8 и лимита 32508 байт существующим
`check_firmware.ps1`. Старые `-O1 --opt_for_speed=3` с FIFO превышают лимит;
для этого варианта обязателен `-OptimizeForSize`. Проверка запрещает выпуск
слишком большого BIN и не даёт затронуть сохранённые параметры.
Оптимизация размера применяется ко всей сборке, поэтому временные
характеристики приложения нужно проверить на стенде.
На плату образы не загружены. Пока подтверждены сборка и тесты модели;
ускорение чтения логгера и устойчивость физического RS232 не измерены.
Для стенда сравнить одно и то же чтение архива на двух образах, проверить
CMD_LOAD/UPLOAD и параллельный RS485. FIFO не увеличивает baud rate.

View File

@@ -1,112 +0,0 @@
# Назначение исходников Бальзам-167
Все редактируемые исходники C/H, ASM, CMD и Python используют UTF-8 без BOM.
Русский текст найден рядом с каждой строкой исходников из Git-индекса, однако
часть пояснений шаблонная и требует содержательной доработки. Существующие уведомления 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 мс; заводское значение 2000 мс устанавливается Default_params.
Setup_DAC_time исправляет недопустимое сохранённое значение на 600 мс.
Load_runner дополнительно использует 600 мс для локальной страховки при
недопустимом значении. LOAD_STATUS=0x7C доступен только для чтения.
LOAD_MAX_ATTEMPTS=0x7D — сохраняемый лимит 1..65535 пусков, по умолчанию 5;
ноль при записи отклоняется. Текущий счётчик остаётся в слове 5 блока
FC03(0x1300, 8), а подготовка тактов ЦАП не обнуляет настроенный лимит.
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 и соседних шаблонах.

View File

@@ -1,269 +0,0 @@
# Логгер запуска и отключения УМП: прошивка Бальзам 167 и SetGUI
## Назначение и работа оператора
В SetGUI открыть ПМ35 → Настройки, выбрать COM, скорость (обычно 115200)
и адрес контроллера (для рассматриваемого УМП — 5). Затем открыть вкладку **Логгер УМП**.
Подключение используется существующее: прямой RS232/RS485 Modbus RTU.
CAN-команды от управляющего контроллера фиксируются самой платой нагрузки.
1. **Начать запись** включает только регистратор, не пуск УМП.
Период снимков по умолчанию 20 мс, диапазон 1–1000 мс.
2. Левые флажки выбирают отображаемые сигналы. Аналоги рисуются линиями,
дискретные сигналы — отдельными дорожками. Выбор не меняет состав
записи на плате: скрытую кривую можно включить после захвата.
3. **Онлайн** подключает график к уже идущей записи, в том числе после
восстановления соединения. Тайм-аут не посылает плате команду останова.
4. Фактическое включение STOP при переходе работающей нагрузки к снятому
разрешению запускает фиксацию отключения. Постинтервал содержит 10%
банка — 76 последующих точек, включая события CAN и I/O. Повторные
STOP при уже остановленной нагрузке архив не заменяют.
5. **Прочитать отключение** загружает архив, не останавливая запись на плате.
На время чтения и просмотра архива онлайн-график приостанавливается;
вернуться к нему можно кнопкой **Онлайн**.
6. **Остановить и прочитать** останавливает только регистратор и читает
текущий банк. При этом существующий архив отключения остаётся доступным.
7. **Сохранить CSV** сохраняет поля загруженного/онлайн-буфера, выбранные
правыми флажками «Запись в лог», а также время и код события. Выбор
не зависит от видимости кривой. Множители графика не изменяют значения CSV.
**Буфер GUI** задаёт число последних точек: от 800 до 100000, по умолчанию
10000. Это отдельный буфер ПК, не ёмкость банка платы и не непрерывная
запись на диск. **Сохранить график из GUI** позволяет выгрузить накопленную
онлайн-историю после чтения архива платы.
При разрыве связи журнал на плате продолжает работать. Архив хранится в ОЗУ
до следующей фиксации отключения либо перезагрузки/пропадания питания.
EEPROM не используется: под отключением в этой задаче понимается команда
управляющего контроллера, а не потеря питания.
## Память и точность
Использована существующая секция `.logg` по адресу 0x200000: 64000
16-битных слов. Два банка по 760 записей × 12 слов занимают 18240 слов.
Ёмкость в точках сохранена; сокращённая запись освобождает оставшуюся часть
выделенного массива. При триггере сохраняются до 683 предыдущих точек,
событие отключения и 76 последующих точек. При периоде 20 мс и отсутствии
дополнительных событий постинтервал составляет примерно 1,52 секунды.
События CAN и дискретов сокращают его временную длительность, но не число
зарезервированных точек. Архив после заполнения постинтервала фиксируется,
а запись продолжается в другом банке.
Время — 32-битный счётчик миллисекунд записи. Он идёт только при включённом
регистраторе и не является абсолютным временем. События в одном тике имеют
одинаковую отметку; порядок сохраняется порядком записей. На перезапуске
регистратора счётчик продолжает прежнюю шкалу, при перезагрузке платы — 0.
Онлайн-опрос возвращает до десяти последних записей каждые 40 мс. Он не гарантирует
передачу каждого события при высоком CAN-трафике, медленном UART или паузах
GUI. Номера записей позволяют убрать дубликаты и явно показать пропуски.
Полный сохранившийся фрагмент следует читать кнопкой архива. Частота 20 мс
выбрана с учётом размера кадра; на низких скоростях нужна большая пауза
снимков и подходящий тайм-аут RS.
Все писатели и чтение одного Modbus-блока используют короткие критические
секции с восстановлением прежнего состояния IRQ. Внутри нет ожидания UART,
EEPROM, выделения памяти или копирования целого банка. Реальную задержку
прерываний и длительность критических секций нужно измерить на F28335.
## Состав записи v4: 12 слов
Из прошивки и списка графиков удалены 32 неотмеченных канала с двух
скриншотов: остатки импульса/инициализации, код и калибровки ЦАП,
измерения, ошибки, сырые CAN-слова/счётчики, маска команд, параметры
разгона и каналы АЦП. Рабочие калибровочные регистры и сами измерения
для управления платой продолжают использоваться по назначению.
В интерфейсе осталось 15 каналов:
| Группа | Каналы |
|---|---|
| Ток и уставки | Расчётное задание тока, начальная уставка, конечная уставка — мА |
| Напряжения | ЗПТ1: U1 + U2 (ПМ67, рег. 306); ЗПТ2: U3 + U4 (ПМ67, рег. 9) — В |
| Команды | Пуск УМП, сброс УМП |
| Входы | OMEGA, Start_1, Res_in |
| Выходы | START_DPTB, STOP_DPTB, RES_OUT_2 |
| События | Событие отключения, усечение постинтервала |
«Усечение постинтервала» оставлено для чтения прежних журналов; текущая
прошивка v4 бит 9 события не устанавливает. Расчётное задание тока —
команда аналоговому выходу, а не измеренный физический ток петли.
Для отображения физических единиц у пяти аналоговых каналов нужен
множитель ×1,000. Сохранённые пользовательские множители восстанавливаются
при запуске GUI; например, ×94,000 меняет только высоту кривой, не ток платы.
| Слова | Данные | Единицы/смысл |
|---|---|---|
| 0–1 | Время, младшее/старшее слово | мс записи |
| 2 | Событие | 1 — период, 2 — CAN, 3 — I/O, 4 — RS, 5 — конец постинтервала |
| 2, бит 8 | Событие отключения | флаг поверх причины |
| 2, бит 9 | Усечение постинтервала | совместимость со старыми журналами; в текущем v4 равен 0 |
| 3 | Команды пуска и сброса | только биты 7 и 6; отдельной кривой маски команд больше нет |
| 4 | Входы OMEGA, Start_1, Res_in | биты 0, 1, 2 |
| 5 | Выходы START_DPTB, STOP_DPTB, RES_OUT_2 | биты 0, 1, 2 |
| 6 | Расчётное задание тока | 0,1 мА; GUI/CSV показывает мА |
| 7–8 | Начальная/конечная уставки | целые мА |
| 9–10 | ЗПТ1/ЗПТ2 | беззнаковые слова, масштаб 1 В/ед. |
| 11 | Нулевой резерв | чётная длина для передачи CAN парами слов |
Напряжения принимаются из технологических CAN-кадров с нулевыми индексами
305 и 8. Учитываются все три позиции и биты маски 0x8000/0x4000/0x2000.
Они хранятся отдельно от массива modbus[0..127], обновляются и при выключенном
логгере. Запись содержит последние принятые значения; до первого приёма — 0.
При потере связи остаётся последнее значение: отдельного признака свежести нет.
Клиент не преобразует напряжения в знаковые измерения. Свежесть выбранного
ЗПТ и защита роста напряжения описаны отдельно в `UMP_VOLTAGE_PROTECTION.md`.
При штатных 6 мА пуск сначала передаёт это задание и получает 3 секунды
на рост ЗПТ до 30 В; после этого работает прежняя защита и лимит попыток.
## Протокол расширения Modbus
Технологические адреса 0..127 сохранены. Новая область использует полный
16-битный адрес; исходная реализация игнорировала старший байт.
Сначала GUI читает 16 слов 0x1000 и проверяет сигнатуру, версию, размер записи
и тип платы. До успешной проверки расширенные записи запрещены.
Обычный ответ расширения не содержит исторических хвостовых нулей.
Между ответом и следующим запросом GUI выдерживает паузу RTU.
FC03, 0x1000, 16 слов:
| Смещение | Значение |
|---|---|
| 0,1 | 0x554D, версия 4 |
| 2,3 | состояние и число записей выбранного источника |
| 4,5 | 12 слов в записи, 760 записей в банке |
| 6 | период периодических снимков, мс |
| 7,8 | счётчик времени, младшее/старшее слово |
| 9,10 | Desk (требуется 6 / dsk_LOAD), Mode |
| 11 | частота временной базы, 1000 Гц |
| 12 | поколение архива, mod 65536 |
| 13 | число записей архива |
| 14 | верхняя оценка оставшихся миллисекунд: число точек × период, до 65535 |
| 15 | состояние текущего регистратора независимо от выбора источника |
Состояния: 0 — ещё не запущен, 1 — запись, 3 — остановлен/архив.
FC06:
- 0x1000: 1 — новый текущий журнал, 0 — остановить его;
- 0x1001: период 1..1000, менять только при остановленном журнале;
- 0x1002: хронологический индекс первой записи окна 0..759;
- 0x1003: источник окна, 0 — текущий остановленный банк, 1 — архив отключения.
FC03, 0x1010, до 120 слов: окно от установленного индекса; для целых записей v4 читать 12, 24, …, 120 слов.
CAN допускает кратные 12 до 120 слов и прежние размеры v2/v3; RTU допускает 1..120 слов.
Чтение текущего банка этим окном во время записи не выдаёт изменяющиеся
данные. GUI сначала останавливает его; архив можно читать при работающем
текущем банке. После всех блоков GUI повторно проверяет поколение архива;
при замене во время чтения результат не подменяет предыдущий график.
FC03, 0x1100, ровно 124 слова: онлайн-блок. Слова 0,1 — 32-битный номер
первой записи, 2 — число записей 0..10, 3 — поколение архива, далее до десяти
записей по 12 слов. Неиспользованные слова равны нулю. Окно онлайн не
зависит от курсора/выбора архива. Разделение 0x1010 и 0x1100 предотвращает
пересечение двух окон.
Недопустимые диапазоны и значения возвращают исключения Modbus 2/3.
CRC и разбор стандартного ответа GUI используют существующее общее ядро.
SetGUI распознаёт v2 (40 слов, 800 записей), v3 (42 слова, 760 записей)
и v4 (12 слов, 760 записей). Для v2 ЗПТ недоступны (NaN). Старые архивы
декодируются по прежним индексам, но удалённые каналы в панели и CSV больше
не создаются. Валидаторы RTU/CAN поддерживают компактные размеры записи.
Исходники протокола подключаются к прошивке из templates/c/set-protocol.
## Проверка и запуск
Текущая проверенная сборка с пуском 3 секунды и сокращённым журналом:
`Bin/StartupWait3s/UKSSTMS320F28335_startup_3s_378e06a+.bin`.
Размер — 32180 байт; для AT25256B допустимы 32508 байт, запас — 328 байт.
Рядом находятся OUT, MAP, манифест и SHA-256. Для чтения v4 используйте
обновлённый SETGUI и перезапустите приложение после изменения исходников.
Воспроизводимая сборка из корня проекта: `python Bin/StartupWait3s/rebuild.py`.
Скрипт использует установленный TI C2000 22.6, ABI COFF, `-O2`,
`--opt_for_speed=0` и секции функций. Все модули пересобираются в отдельный
каталог; до формирования готового BIN проверяются профиль AT25256B,
граница 32508 байт, блоки RAM и точка входа SCI8. Сохраняются паспорт и SHA-256.
Из CCS используется та же карта памяти и настройки проекта. В include-path
нужны каталоги общего `c/set-protocol`, его порта `ports/tms320f28335`
и сгенерированного паспорта. Обе используемые копии библиотеки поддерживают v4:
`../newProject/templates` и `../newProject/SETGUI/third_party/templates`.
При загрузке `main()` вызывает `ump_log_init()` до включения прерываний.
Это обязательно для TI COFF: стартовый код не обнуляет неинициализированные
переменные `.ebss`. Без явной инициализации состояние, счётчики и номера
банков могут содержать остаточные значения RAM. Очистка `.logg` функцией
`clear_mem()` эти переменные не затрагивает. Повторный запуск записи через
FC06 не вызывает загрузочную инициализацию и сохраняет архив и шкалу времени.
Регрессия `python tests/ump_logger/run_init_test.py` (GCC в PATH) проверяет
запуск с ненулевой RAM и отрицательный контроль без инициализации;
внешняя библиотека `templates/c/set-protocol` для этого теста не нужна.
Изменены исходники прошивки и SetGUI; новый образ собран в отдельном каталоге.
Проверены TI-компиляция, линковка и формат SCI8 для AT25256B. Физические
уровни GPIO и ток после загрузки образа проверяются на плате.
Автотест C в tests/ump_logger компилирует непосредственно log_to_mem.c
с подменой GPIO/IRQ. Проверяет кольцо, граничные адреса, обе команды
отключения, защиту триггера от переполнения, переключение банков,
сохранность архива во время дальнейшей записи, токовое задание и оба ЗПТ.
Это проверка алгоритма на компьютере, не проверка таймингов и 16-битной ABI
TI. Отдельно выполнена синтаксическая проверка изменённых C-файлов Clang
с исходными заголовками и декларациями TI-интринсиков.
Проверенный набор SetGUI: `tests/test_ump_logger.py`,
`tests/test_ump_logger_can.py`, `tests/test_ump_voltage_protection.py` — 93 теста.
Они проверяют единицы мА, битовые сигналы, временные метки, несовместимую
прошивку, порядок команд, архив при активной записи, замену поколения,
дубликаты/пропуски онлайн, потерю связи и флажки графиков.
Проверка на стенде: включить запись → подать CAN-пуск → изменить уставку →
подать откл. → дождаться заполнения 76 точек постинтервала → прочитать
архив и сверить задание, внешний ток и дискретные уровни; затем повторить
с разрывом RS.
Период 1 мс проверить отдельно под максимальной CAN-нагрузкой.
Исторически для сборки v3 требовался templates/main начиная с коммита c0ee7c4
(поддержка CAN-чтения 42/84 слов и порт TMS320F28335).
## Пересечение образа 34a95bc5 с параметрами EEPROM
Образ `UKSSTMS320F28335_34a95bc5.bin` имеет размер 32518 байт.
`Save_params` записывает 129 слов с адреса `0x3FFF-(128+1)`;
драйвер EEPROM умножает адрес на 2. Параметры начинаются с байта 32508.
Последние 10 байт BIN пересекаются с параметрами: два последних адреса
таблицы переходов `ump_log_read` (регистры 0x100E/0x100F) и завершающее
нулевое слово загрузочной таблицы. Сохранение параметров повреждает эту
часть образа для последующей загрузки. Это установленный дефект образа;
причину таймаута на конкретной плате нужно подтвердить повторной проверкой.
В исправлении временный снимок RS перенесён со стека в статический буфер:
обработчики RS вызываются последовательно из main, а перед возвратом
снимок полностью кодируется в собственный буфер UART. CAN имеет свой буфер.
Сборка `build_logger.ps1` использует параметры CCS Debug (-O1, speed=3)
и создаёт отдельный `Bin/LoggerEepromFix/UKSSTMS320F28335_logger_eeprom_fix.bin`.
Проверенный размер — 32494 байта, запас до параметров — 14 байт.
Оба сценария сборки вызывают `check_firmware.ps1` до публикации BIN.
Проверяются размер, формат SCI8, полнота блоков и конец загрузочной таблицы.
При превышении границы остаётся только файл `.pending`; готовый BIN
не публикуется. Проверка: `python tests/ump_logger/test_firmware_image.py`.
После перепрошивки требуется проверка на плате; проверка на ПК её не заменяет.
## Исправление ожидания EEPROM при запуске через CCS
В сборке CCS с O3 подтверждён перенос записей полей `readData` и `writeData`
за цикл ожидания `spiSe2pFree()`. Указатель `msgPtr` и флаг `csr` были volatile,
но содержимое дескриптора — нет. Timer2 получал запрос с незаполненными
адресом, длиной и указателем буфера, поэтому `Load_params()` мог не завершиться,
хотя UART уже принял команду. Все три поля `SE2P_DATA` теперь volatile.
В дизассемблере исправленного OUT записи всех полей предшествуют флагу запроса.
Для проверки старой AT25256B подготовлен
`Bin/EepromPublishFix/UKSSTMS320F28335_eeprom_fix.out` и одноимённый BIN с build_id.
Сборка `python Bin/EepromPublishFix/rebuild.py` явно задаёт `EEPROM_M95M02=0`
и O3; размер проверенного BIN — 32074 байта, запас до параметров — 434 байта.
Проверка порядка инструкций:
`python tests/eeprom_profiles/check_publication.py Bin/EepromPublishFix/disassembly.txt`.
На листинге прежнего OUT эта проверка падает, на исправленном проходит для чтения
и записи. Пройдены модели обоих профилей EEPROM и UART. Запуск на плате
после загрузки исправленного OUT ещё требует подтверждения.

View File

@@ -1,146 +0,0 @@
# Контроль роста ЗПТ при пуске УМП
УМП с адресом 5 (`Mode=5`) контролирует ЗПТ1 — CAN-индекс 305
(регистр ПМ67 306). УМП 6 контролирует ЗПТ2 — CAN-индекс 8
(регистр ПМ67 9). Масштаб исходного слова: 1 единица = 1 В.
## Условия и последовательность
Начальный безопасный код задания соответствует 4 мА по `DAC_min()`.
Рост напряжения считается достаточным при ЗПТ **не меньше 30 В**.
Проверяется расчётное задание ЦАП, а не измеренный выходной ток.
Ручная калибровка не подменяет задание при активной команде пуска
или удерживаемом STOP.
Если очередной шаг рампы требует **строго больше 6 мА**, а свежее
CAN-напряжение меньше 30 В и в текущей попытке ещё не достигало порога,
в ЦАП сначала передаётся задание **6 мА**. Положение рампы удерживается.
УМП получает **3 секунды** на рост ЗПТ до 30 В: это 600 отправленных
токовых кадров при 200 Гц. Отсчёт начинается с первой отправки 6 мА;
команда инициализации ЦАП не расходует выдержку. До достижения порога
даже начальная уставка выше 6 мА ограничивается этим током. Уставки
ниже 6 мА сначала проходят обычный разгон до указанной границы.
При свежем ЗПТ **не меньше 30 В** разгон продолжается с сохранённого
положения без нового START. После подтверждённого роста напряжения
рабочая защита снова действует сразу: шаг выше 6 мА при ЗПТ ниже 30 В
не передаётся в ЦАП и не получает повторной стартовой выдержки.
Если за 3 секунды свежего обмена ЗПТ не достигло 30 В либо напряжение
упало после успешного пуска, вместо повышенного задания выполняется:
1. Снимается START, включается STOP, снимается разрешение RES_OUT_2.
2. Положение рампы обнуляется, передаётся код 4 мА без подмены калибровкой.
3. STOP остаётся включённым **1000 мс от момента его установки**.
4. Когда код 4 мА отправлен, прошла секунда и есть свежее ЗПТ,
снимается STOP, сразу выставляется START, затем разрешение.
5. Новая рампа начинается с нулевого положения с исходными уставками
`DAC_go`/`DAC_stop`; новая попытка получает собственные 3 секунды
ожидания при 6 мА, если ЗПТ ещё не достигло 30 В.
Первый START входит в настраиваемый лимит регистра **0x7D**: по умолчанию
**всего 5 попыток**, не 5 дополнительных. Через FC06 или штатный CAN можно
записать **1…65535**; ноль отклоняется без изменения предыдущей настройки.
После последней разрешённой неудачи удерживаются STOP и 4 мА, разрешение
снято, дополнительный START не выдаётся. Ошибка снимается командой `cUMPstart=0`;
затем можно подать новый пуск. Изменение лимита само по себе не снимает
ошибку и не выдаёт START. Уменьшение лимита во время STOP проверяется перед
следующей попыткой. Команда RESET имеет приоритет перед START.
Для задания пяти пусков используйте `FC06(0x007D, 5)` либо `FC06(0x507D, 5)`
в GAS-профиле M95M02. Чтение `0x7D` возвращает лимит; текущий счётчик остаётся
в слове 5 диагностического блока `FC03(0x1300, 8)`. Настройка сохраняется
штатной командой **Save**. Ноль из старой EEPROM заменяется на 5 при запуске;
ненулевое сохранённое значение трактуется как лимит.
Отпускание RESET с оставшимся START=1 само по себе не перезапускает УМП.
Выходами и рампой управляет один обработчик Timer1 (1 мс). Основной цикл
больше не формирует независимые фронты START/STOP. Расчёт/отправка ЦАП
остались с периодом 5 мс. Импульс START длится до 1000 мс, но защита
или RESET прекращают его раньше.
## Отсутствие CAN
Заводской таймаут из `Default_params` — **2000 мс**, диапазон настройки **1…60000 мс**. Если сохранённый параметр недопустим, `Setup_DAC_time` применяет **600 мс**; такой же запасной таймаут используется локально в `Load_runner`.
Свежесть подтверждается только получением нужного ЗПТ в полном
технологическом CAN-кадре с соответствующим битом маски. Другое
напряжение, сервисные запросы, команды и произвольные CAN-пакеты
таймаут не сбрасывают. До первого значения напряжение считается неизвестным.
При таймауте работающая рампа удерживает последнее положение и отправленный
код. Стартовая выдержка при 6 мА также приостанавливается и возобновляется
после нового выбранного ЗПТ. Попытка не считается неудачной, STOP по одному
таймауту не включается.
После свежего ЗПТ рост продолжается; если оно меньше 30 В при задании
больше 6 мА, выполняется защитный STOP. Если обмен исчез во время
сброса, STOP держится и после секунды — до свежего напряжения.
Первый пуск также ждёт свежего значения.
Настройка хранится в технологическом регистре `0x52` платы нагрузки.
Значение 0 в старом EEPROM заменяется на 600 мс при запуске.
Для сохранения изменения используйте штатную команду сохранения параметров.
## Диагностика и эмуляция в GUI
Во вкладке **Логгер УМП** добавлены:
- **Защита ЗПТ: прочитать** — состояние защиты, число попыток, напряжение.
- **Эмуляция: нет CAN** — получение своего ЗПТ игнорируется платой;
после заданного таймаута рампа удерживается.
- **Эмуляция: ЗПТ не растёт** — для проверки защиты используется 0 В,
хотя настоящие кадры продолжают поступать. Реальные напряжения в
журнале не подменяются. Этот режим действительно вызывает STOP/пуски.
- **Задать таймаут** — запись значения в плату с обязательным чтением обратно.
Кнопки эмуляции включаются после проверки сигнатуры прошивки. Их положение
меняется только после подтверждённого чтения обратно. Два режима можно
включать независимо; при отсутствии свежести проверка роста приостановлена.
Эмуляция живёт только в RAM, не сохраняется в EEPROM и выключена после
перезагрузки. GUI показывает активную эмуляцию отдельно от реального ЗПТ.
При онлайн-чтении GUI опрашивает защиту каждые 500 мс и показывает
**«НЕИСПРАВНОСТЬ: ЗПТ не достигло 30 В за 5 попыток»**.
Старые прошивки без блока защиты продолжают обычное онлайн-чтение;
эмуляция для них недоступна.
Технологический регистр `0x7C` — статус только для чтения;
`0x7D` — записываемый сохраняемый лимит попыток. Оба включены в быстрый CAN-цикл.
Статус: бит 0 — ошибка исчерпания настроенного лимита, бит 1 — нет свежего ЗПТ,
бит 2 — сброс перед повтором, бит 3 — работа рампы,
биты 4/5 — активная эмуляция отсутствия CAN/роста ЗПТ.
Локальный блок RTU и служебного CAN: FC03 `0x1300`, ровно 8 слов:
| Смещение | Значение |
|---|---|
| 0 | Сигнатура `0x5550` |
| 1 | Версия 1 |
| 2 | Эмуляция: бит 0 — нет CAN, бит 1 — нет роста |
| 3 | Таймаут, мс |
| 4 | Статус защиты |
| 5 | Число попыток |
| 6 | Последнее реальное CAN-напряжение, В |
| 7 | Возраст значения, мс; 65535 до первого значения |
FC06 допускает запись только `0x1302` (0…3) и `0x1303` (1…60000).
Диагностический обмен не обновляет возраст технологического напряжения.
## Проверки
`python tests/load_control/run_test.py` компилирует непосредственно
`DAC.c` с подменой GPIO/IRQ. Проверяются выбор ЗПТ, маски CAN, таймаут,
удержание кода, граница 30 В, порядок STOP/START, точная пауза 1000 мс,
лимиты 1, 2, 5, 7 и 65535 пусков, изменение лимита во время STOP, RESET, эмуляция и невозможность подмены 4 мА калибровкой.
Стартовые регрессии для адресов 5 и 6 проверяют отправку 6 мА вместо
мгновенного сброса, границу выдержки 3000 мс, успешный рост ЗПТ во время
ожидания, немедленную защиту после успешного пуска, повышенную начальную
уставку, паузу CAN и пропуск отсчёта при инициализации ЦАП.
GUI: `tests/test_ump_voltage_protection.py` в SETGUI плюс регрессии логгера.
Сборка: `build_logger.ps1 -OutputDirectory Bin/VoltageProtection
-ImageName UKSSTMS320F28335_voltage_protection`. Размер проверяется до
публикации BIN; для AT25256B предел — 32508 байт. В режиме оптимизации
функции разнесены по секциям, чтобы линкер удалял неиспользуемые функции.
Это проверки на компьютере. Физический ток 4 мА, уровни разрешения,
STOP и интервал 1 с нужно проверить на стенде с установленной прошивкой.

View File

@@ -1,4 +1,3 @@
/* Распределение памяти линкером и абсолютные границы загрузочного образа EEPROM. Русские пояснения сохранены в UTF-8. */
/*
// TI File $Revision: /main/10 $
// Checkin $Date: July 9, 2008 13:43:56 $
@@ -17,24 +16,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 <base>\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 */
@@ -44,209 +43,159 @@
/* -l DSP2833x_Headers_BIOS.cmd */
/* 2) In your project add the path to <base>\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.
*/
/* Serial EEPROM is NOT CPU-addressable RAM/Flash. Do not add a fake MEMORY
* 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 */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
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. */
ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */
RAML0 : origin = 0x008000, length = 0x004000 /* on-chip RAM block L0 */
/* 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 */ /* Записывает origin значением 0x00C000, length = 0x001000; данные origin. */
RAML4 : origin = 0x00C000, length = 0x001000 /* on-chip RAM block L1 */
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. */
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 */
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 — данные. */
PAGE 1 : /* Data Memory */
/* 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 */ /* Записывает 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. */
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 */
/* 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 */ /* Записывает 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. */
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
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 */
}
/* 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. */
.cinit : > RAML0 PAGE = 0
.pinit : > RAML0 PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */
.text : > RAML0 PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */
codestart : > BEGIN PAGE = 0
/* Записывает LOAD значением RAML4,; данные LOAD. */
ramfuncs : LOAD = RAML4,
/* Записывает RUN значением RAML4,; данные RUN. */
RUN = RAML4,
/* Вызывает LOAD_START с аргументами (_RamfuncsLoadStart), в текущей последовательности операций. */
ramfuncs : LOAD = RAML4,
RUN = RAML4,
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
/* Записывает PAGE значением 0; данные PAGE. */
.switch : > RAML4 PAGE = 0
.switch : > RAML4 PAGE = 0
/* Allocate IQ math areas: */
IQmath : > FLASHC PAGE = 0 /* Math Code */ /* Записывает PAGE значением 0; данные PAGE. */
/* Записывает PAGE значением 0, TYPE = NOLOAD; данные PAGE. */
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
IQmath : > FLASHC PAGE = 0 /* Math Code */
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<IQNexpTable.obj> (IQmathTablesRam)
}
*/
/* Записывает PAGE значением 0, TYPE = NOLOAD; данные PAGE. */
FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
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 */
/* Записывает PAGE значением 0, TYPE = DSECT; данные PAGE. */
/* DSECT */
.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
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
/*

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание DefaultIsr для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:45:37 $
//###########################################################################
@@ -12,223 +11,135 @@
// $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:
/* Объявляет обработчик I2CINT1A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
// Group 8 PIE Interrupt Service Routines:
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 11 PIE Interrupt Service Routines:
// Group 12 PIE Interrupt Service Routines:
/* Объявляет обработчик XINT3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
// Group 12 PIE Interrupt Service Routines:
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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Dma_defines для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: August 14, 2007 16:32:29 $
//###########################################################################
@@ -12,112 +11,69 @@
// $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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание EPwm_defines для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:45:39 $
//###########################################################################
@@ -6,212 +5,135 @@
// 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
@@ -219,33 +141,22 @@ 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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Examples для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/9 $
// Checkin $Date: July 2, 2008 14:31:12 $
//###########################################################################
@@ -12,17 +11,12 @@
// $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
@@ -31,11 +25,9 @@ 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
@@ -82,7 +74,6 @@ 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)
@@ -102,19 +93,12 @@ 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
@@ -122,52 +106,35 @@ 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

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание GlobalPrototypes для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/11 $
// Checkin $Date: May 12, 2008 14:30:08 $
//###########################################################################
@@ -12,320 +11,174 @@
// $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);
@@ -334,28 +187,19 @@ 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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание I2c_defines для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: April 16, 2008 17:16:47 $
//###########################################################################
@@ -12,9 +11,7 @@
// $Release Date: August 1, 2008 $
//###########################################################################
/* Начинает условие: DSP2833x_I2C_DEFINES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_I2C_DEFINES_H
/* Определяет защитный символ или переключатель DSP2833x_I2C_DEFINES_H для последующей компиляции. */
#define DSP2833x_I2C_DEFINES_H
//--------------------------------------------
@@ -22,115 +19,68 @@
//--------------------------------------------
// 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
@@ -139,9 +89,7 @@
//--------------------------------------------
// 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,
@@ -152,23 +100,16 @@ 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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Настройки и интерфейс DSP28x_Project. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: April 22, 2008 14:35:56 $
@@ -13,16 +12,11 @@
// $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

View File

@@ -1,4 +1,3 @@
; Поставляемое ti описание adc_cal для семейства c2833x. Пояснения в UTF-8.
;; TI File $Revision: /main/1 $
;; Checkin $Date: July 30, 2007 10:29:23 $
;;###########################################################################
@@ -9,7 +8,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:
;;
;;###########################################################################
@@ -17,35 +16,27 @@
;; $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 ----------

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Adc для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: October 23, 2007 13:34:09 $
//###########################################################################
@@ -12,12 +11,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
/* Задаёт ADC_usDELAY = 5000L; АЦП us DELAY. */
#define ADC_usDELAY 5000L
//---------------------------------------------------------------------------
@@ -25,11 +21,8 @@
//---------------------------------------------------------------------------
// This function initializes ADC to a known state.
//
/* Начинает функцию InitAdc; назначение модуля — поставляемое TI описание Adc для семейства C2833x. */
void InitAdc(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
/* Объявляет интерфейс функции DSP28x_usDelay; реализация вызывается через этот прототип. */
extern void DSP28x_usDelay(Uint32 Count);
@@ -43,13 +36,9 @@ 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;
@@ -64,14 +53,10 @@ 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);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание CpuTimers для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/3 $
// Checkin $Date: March 16, 2007 08:37:30 $
//###########################################################################
@@ -19,18 +18,13 @@
// $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;
//---------------------------------------------------------------------------
@@ -38,30 +32,21 @@ 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;
@@ -70,41 +55,26 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//---------------------------------------------------------------------------
@@ -115,45 +85,29 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание PieCtrl для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:46:35 $
//###########################################################################
@@ -12,107 +11,70 @@
// $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.PIEIER4.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.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.PIEIFR4.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR3.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;
// Enables PIE to drive a pulse into the CPU
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF;
// Enable Interrupts at the CPU level
/* Разрешение маскируемых прерываний ядра. */
// Enable Interrupts at the CPU level
EINT;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание PieVect для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:46:38 $
//###########################################################################
@@ -12,335 +11,192 @@
// $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,; порядок элементов сохраняется. */
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
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
// 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,; порядок элементов сохраняется. */
SEQ1INT_ISR, // 1.1 ADC
/* Продолжает список аргументов, полей или выражение SEQ2INT_ISR,; порядок элементов сохраняется. */
SEQ2INT_ISR, // 1.2 ADC
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
SEQ1INT_ISR, // 1.1 ADC
SEQ2INT_ISR, // 1.2 ADC
rsvd_ISR, // 1.3
/* Продолжает список аргументов, полей или выражение XINT1_ISR,; порядок элементов сохраняется. */
XINT1_ISR, // 1.4
/* Продолжает список аргументов, полей или выражение XINT2_ISR,; порядок элементов сохраняется. */
XINT1_ISR, // 1.4
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,; порядок элементов сохраняется. */
EPWM6_TZINT_ISR, // 2.6 EPWM-6 Trip Zone
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
EPWM6_TZINT_ISR, // 2.6 EPWM-6 Trip Zone
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,; порядок элементов сохраняется. */
EPWM6_INT_ISR, // 3.6 EPWM-6 Interrupt
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
EPWM6_INT_ISR, // 3.6 EPWM-6 Interrupt
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,; порядок элементов сохраняется. */
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
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
// 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,; порядок элементов сохраняется. */
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
rsvd_ISR, // 5.3
rsvd_ISR, // 5.4
rsvd_ISR, // 5.5
rsvd_ISR, // 5.6
rsvd_ISR, // 5.7
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,; порядок элементов сохраняется. */
rsvd_ISR, // 6.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 6.8
rsvd_ISR, // 6.7
rsvd_ISR, // 6.8
// Group 7 PIE Vectors
/* Продолжает список аргументов, полей или выражение DINTCH1_ISR,; порядок элементов сохраняется. */
DINTCH1_ISR, // 7.1 DMA channel 1
/* Продолжает список аргументов, полей или выражение DINTCH2_ISR,; порядок элементов сохраняется. */
DINTCH1_ISR, // 7.1 DMA channel 1
DINTCH2_ISR, // 7.2 DMA channel 2
/* Продолжает список аргументов, полей или выражение 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
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
// Group 8 PIE Vectors
/* Продолжает список аргументов, полей или выражение I2CINT1A_ISR,; порядок элементов сохраняется. */
I2CINT1A_ISR, // 8.1 I2C
/* Продолжает список аргументов, полей или выражение I2CINT2A_ISR,; порядок элементов сохраняется. */
I2CINT1A_ISR, // 8.1 I2C
I2CINT2A_ISR, // 8.2 I2C
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 8.3
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 8.4
/* Продолжает список аргументов, полей или выражение SCIRXINTC_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 8.3
rsvd_ISR, // 8.4
SCIRXINTC_ISR, // 8.5 SCI-C
/* Продолжает список аргументов, полей или выражение 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,; порядок элементов сохраняется. */
SCITXINTC_ISR, // 8.6 SCI-C
rsvd_ISR, // 8.7
rsvd_ISR, // 8.8
// Group 9 PIE Vectors
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,; порядок элементов сохраняется. */
rsvd_ISR, // 10.1
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 10.1
rsvd_ISR, // 10.2
/* Продолжает список аргументов, полей или выражение 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
rsvd_ISR, // 10.3
rsvd_ISR, // 10.4
rsvd_ISR, // 10.5
rsvd_ISR, // 10.6
rsvd_ISR, // 10.7
rsvd_ISR, // 10.8
// Group 11 PIE Vectors
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 11.1
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 11.1
rsvd_ISR, // 11.2
/* Продолжает список аргументов, полей или выражение 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.3
rsvd_ISR, // 11.4
rsvd_ISR, // 11.5
rsvd_ISR, // 11.6
rsvd_ISR, // 11.7
rsvd_ISR, // 11.8
// Group 12 PIE Vectors
/* Продолжает список аргументов, полей или выражение XINT3_ISR,; порядок элементов сохраняется. */
XINT3_ISR, // 12.1
/* Продолжает список аргументов, полей или выражение XINT4_ISR,; порядок элементов сохраняется. */
XINT3_ISR, // 12.1
XINT4_ISR, // 12.2
/* Продолжает список аргументов, полей или выражение 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
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
XINT5_ISR, // 12.3
XINT6_ISR, // 12.4
XINT7_ISR, // 12.5
rsvd_ISR, // 12.6
LVF_ISR, // 12.7
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;
/* Цикл for(i=0; i < 128; i++); задаёт начальное значение, условие продолжения и шаг перебора. */
EALLOW;
for(i=0; i < 128; i++)
/* Изменяет счётчик в выражении *Dest++ = *Source++; на один для следующего шага. */
*Dest++ = *Source++;
/* Закрытие доступа к защищённым регистрам периферии. */
*Dest++ = *Source++;
EDIS;
// Enable the PIE Vector Table
/* Записывает PieCtrlRegs.PIECTRL.bit.ENPIE значением 1; данные ENPIE. */
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
}
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание SWPrioritizedDefaultIsr для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: January 14, 2008 11:28:12 $
//###########################################################################
@@ -14,388 +13,259 @@
//###########################################################################
/* Подключает "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(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
@@ -404,65 +274,41 @@ 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.......
@@ -471,78 +317,50 @@ 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.......
@@ -550,143 +368,92 @@ 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
@@ -695,247 +462,157 @@ 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
@@ -945,247 +622,157 @@ 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
@@ -1195,249 +782,159 @@ 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
@@ -1447,87 +944,57 @@ 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
// -----------------------------------------------------------
@@ -1535,250 +1002,160 @@ 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
@@ -1787,250 +1164,160 @@ 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
@@ -2039,167 +1326,107 @@ 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
// -----------------------------------------------------------
@@ -2207,332 +1434,212 @@ 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
// -----------------------------------------------------------
@@ -2546,291 +1653,186 @@ 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
@@ -2838,37 +1840,22 @@ 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(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание SWPrioritizedPieVect для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: April 4, 2007 14:25:31 $
//###########################################################################
@@ -8,895 +7,503 @@
// 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
/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
#include "DSP2833x_SWPrioritizedIsrLevels.h"
#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,; порядок элементов сохраняется. */
SEQ2INT_ISR, // ADC
/* Выбирает альтернативный блок текущего условия компиляции. */
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,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
/* Условие компиляции (G85PL != 0): выбранный блок включается в текущий вариант прошивки. */
rsvd_ISR,
rsvd_ISR,
#if (G85PL != 0)
/* Продолжает список аргументов, полей или выражение SCIRXINTC_ISR,; порядок элементов сохраняется. */
SCIRXINTC_ISR, // SCI-C
/* Выбирает альтернативный блок текущего условия компиляции. */
#else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/* Условие компиляции (G86PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL != 0)
/* Продолжает список аргументов, полей или выражение SCITXINTC_ISR,; порядок элементов сохраняется. */
SCITXINTC_ISR, // SCI-C
/* Выбирает альтернативный блок текущего условия компиляции. */
#else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
/* Продолжает список аргументов, полей или выражение 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,
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,
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
/* Выбирает альтернативный блок текущего условия компиляции. */
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
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
#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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание SysCtrl для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/7 $
// Checkin $Date: September 20, 2007 13:30:31 $
//###########################################################################
@@ -17,9 +16,7 @@
//###########################################################################
/* Подключает "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"
@@ -29,7 +26,6 @@
// 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");
//---------------------------------------------------------------------------
@@ -41,27 +37,20 @@
// - 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();
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
@@ -74,67 +63,48 @@ 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");
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
@@ -144,27 +114,16 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
@@ -173,17 +132,11 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//---------------------------------------------------------------------------
@@ -191,60 +144,40 @@ 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.
@@ -265,74 +198,47 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//--------------------------------------------------------------------------
@@ -346,86 +252,52 @@ 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
/* Условие компиляции CLKMULT == 1: выбранный блок включается в текущий вариант прошивки. */
#endif
#if CLKMULT == 1
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0000; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0000;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/* Условие компиляции CLKMULT == 2: выбранный блок включается в текущий вариант прошивки. */
#endif
#if CLKMULT == 2
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0001; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0001;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/* Условие компиляции CLKMULT == 3: выбранный блок включается в текущий вариант прошивки. */
#endif
#if CLKMULT == 3
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0002; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0002;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/* Условие компиляции CLKMULT == 4: выбранный блок включается в текущий вариант прошивки. */
#endif
#if CLKMULT == 4
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0002; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0002;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif
/* Условие компиляции CLKMULT == 5: выбранный блок включается в текущий вариант прошивки. */
#endif
#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.
@@ -437,7 +309,6 @@ 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*
@@ -450,80 +321,46 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//---------------------------------------------------------------------------
@@ -532,70 +369,44 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Xintf для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: August 16, 2007 11:06:26 $
//###########################################################################
@@ -19,9 +18,7 @@
// $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
//---------------------------------------------------------------------------
@@ -33,9 +30,7 @@
// 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.
@@ -49,18 +44,13 @@ 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;
@@ -68,68 +58,48 @@ 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;
@@ -137,229 +107,135 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
//===========================================================================

View File

@@ -1,4 +1,3 @@
; Поставляемое ti описание usdelay для семейства c2833x. Пояснения в UTF-8.
;// TI File $Revision: /main/4 $
;// Checkin $Date: July 30, 2007 10:28:57 $
;//###########################################################################
@@ -8,38 +7,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
@@ -54,23 +53,16 @@
;//###########################################################################
;// $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

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Headers_BIOS для семейства C2833x. Русские пояснения сохранены в UTF-8. */
/*
// TI File $Revision: /main/9 $
// Checkin $Date: August 8, 2008 11:09:25 $
@@ -6,18 +5,18 @@
//
// FILE: DSP2833x_Headers_BIOS.cmd
//
// TITLE: DSP2833x Peripheral registers linker command file
//
// DESCRIPTION:
// TITLE: DSP2833x Peripheral registers linker command file
//
// 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.
//
//#####################################################################
@@ -26,210 +25,154 @@
//#####################################################################
*/
/* Начинает описание физических блоков памяти для линкера. */
MEMORY
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
PAGE 0: /* Program Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
PAGE 0: /* Program Memory */
PAGE 1: /* Data 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 */
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. */
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)*/
ADC_MIRROR : origin = 0x000B00, length = 0x000010 /* ADC Results register mirror */ /* Записывает origin значением 0x000B00, length = 0x000010; данные origin. */
PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */
XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */ /* Записывает origin значением 0x000B20, length = 0x000020; данные origin. */
DMA : origin = 0x001000, length = 0x000200 /* DMA 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. */
MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */
MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */
PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */ /* Записывает origin значением 0x000CE0, length = 0x000020; данные 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 */
DMA : origin = 0x001000, length = 0x000200 /* DMA registers */ /* Записывает origin значением 0x001000, length = 0x000200; данные 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 */
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. */
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 */
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. */
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 */
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. */
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 */
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. */
ADC : origin = 0x007100, length = 0x000020 /* ADC 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. */
SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */
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. */
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. */
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. */
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */
}
/* Начинает описание размещения секций объектных файлов для линкера. */
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
/* Записывает PAGE значением 1; данные PAGE. */
AdcMirrorFile : > ADC_MIRROR, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
AdcMirrorFile : > ADC_MIRROR, PAGE = 1
XintfRegsFile : > XINTF, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CpuTimer1RegsFile : > CPU_TIMER1, 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
CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
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
/* Записывает PAGE значением 1; данные PAGE. */
ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
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
/* Записывает PAGE значением 1; данные PAGE. */
ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
ECanbMboxesFile : > ECANB_MBOX PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTORegsFile : > ECANB_MOTO 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. */
EPwm1RegsFile : > EPWM1 PAGE = 1
EPwm2RegsFile : > EPWM2 PAGE = 1
EPwm3RegsFile : > EPWM3 PAGE = 1
EPwm4RegsFile : > EPWM4 PAGE = 1
EPwm5RegsFile : > EPWM5 PAGE = 1
EPwm6RegsFile : > EPWM6 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. */
ECap1RegsFile : > ECAP1 PAGE = 1
ECap2RegsFile : > ECAP2 PAGE = 1
ECap3RegsFile : > ECAP3 PAGE = 1
ECap4RegsFile : > ECAP4 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap5RegsFile : > ECAP5 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap5RegsFile : > ECAP5 PAGE = 1
ECap6RegsFile : > ECAP6 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EQep1RegsFile : > EQEP1 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EQep2RegsFile : > EQEP2 PAGE = 1
EQep1RegsFile : > EQEP1 PAGE = 1
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
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}
@@ -237,4 +180,4 @@ SECTIONS
//===========================================================================
// End of file.
//===========================================================================
*/
*/

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Headers_nonBIOS для семейства C2833x. Русские пояснения сохранены в UTF-8. */
/*
// TI File $Revision: /main/8 $
// Checkin $Date: June 2, 2008 11:12:24 $
@@ -6,13 +5,13 @@
//
// FILE: DSP2833x_Headers_nonBIOS.cmd
//
// TITLE: DSP2833x Peripheral registers linker command file
//
// DESCRIPTION:
// TITLE: DSP2833x Peripheral registers linker command file
//
// 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.
//
@@ -26,210 +25,154 @@
//###########################################################################
*/
/* Начинает описание физических блоков памяти для линкера. */
MEMORY
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{
PAGE 0: /* Program Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
PAGE 0: /* Program Memory */
PAGE 1: /* Data 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 */
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. */
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)*/
ADC_MIRROR : origin = 0x000B00, length = 0x000010 /* ADC Results register mirror */ /* Записывает origin значением 0x000B00, length = 0x000010; данные origin. */
PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */
PIE_VECT : origin = 0x000D00, length = 0x000100 /* PIE Vector Table */
XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */ /* Записывает origin значением 0x000B20, length = 0x000020; данные origin. */
DMA : origin = 0x001000, length = 0x000200 /* DMA 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. */
MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */
MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */
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. */
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 */
DMA : origin = 0x001000, length = 0x000200 /* DMA registers */ /* Записывает origin значением 0x001000, length = 0x000200; данные 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 */
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. */
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 */
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. */
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 */
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. */
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 */
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. */
ADC : origin = 0x007100, length = 0x000020 /* ADC 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. */
SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */
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. */
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. */
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. */
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */
}
/* Начинает описание размещения секций объектных файлов для линкера. */
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
/* Записывает PAGE значением 1; данные PAGE. */
AdcMirrorFile : > ADC_MIRROR, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
AdcMirrorFile : > ADC_MIRROR, PAGE = 1
XintfRegsFile : > XINTF, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CpuTimer1RegsFile : > CPU_TIMER1, 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
CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
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
/* Записывает PAGE значением 1; данные PAGE. */
ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
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
/* Записывает PAGE значением 1; данные PAGE. */
ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
ECanbMboxesFile : > ECANB_MBOX PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTORegsFile : > ECANB_MOTO 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. */
EPwm1RegsFile : > EPWM1 PAGE = 1
EPwm2RegsFile : > EPWM2 PAGE = 1
EPwm3RegsFile : > EPWM3 PAGE = 1
EPwm4RegsFile : > EPWM4 PAGE = 1
EPwm5RegsFile : > EPWM5 PAGE = 1
EPwm6RegsFile : > EPWM6 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. */
ECap1RegsFile : > ECAP1 PAGE = 1
ECap2RegsFile : > ECAP2 PAGE = 1
ECap3RegsFile : > ECAP3 PAGE = 1
ECap4RegsFile : > ECAP4 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap5RegsFile : > ECAP5 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap5RegsFile : > ECAP5 PAGE = 1
ECap6RegsFile : > ECAP6 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EQep1RegsFile : > EQEP1 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EQep2RegsFile : > EQEP2 PAGE = 1
EQep1RegsFile : > EQEP1 PAGE = 1
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
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Adc для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:51:50 $
//###########################################################################
@@ -12,452 +11,252 @@
// $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
/* Битовое поле SEQ_OVRD, ширина 1 бит; данные SEQ_OVRD. */
Uint16 SEQ_OVRD:1; // 5 Sequencer override
/* Битовое поле CONT_RUN, ширина 1 бит; данные CONT_RUN. */
Uint16 SEQ_OVRD:1; // 5 Sequencer override
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
/* Битовое поле RST_SEQ1, ширина 1 бит; данные RST_SEQ1. */
Uint16 RST_SEQ1:1; // 14 Restart sequencer 1
/* Битовое поле EPWM_SOCB_SEQ, ширина 1 бит; данные EPWM_SOCB_SEQ. */
Uint16 RST_SEQ1:1; // 14 Restart sequencer 1
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
/* Битовое поле SEQ_CNTR, ширина 4 бит; данные SEQ_CNTR. */
Uint16 SEQ_CNTR:4; // 11:8 Sequencing counter status
/* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 15:12 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
Uint16 SEQ_CNTR:4; // 11:8 Sequencing counter status
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
/* Битовое поле MAX_CONV2, ширина 3 бит; данные MAX_CONV2. */
Uint16 MAX_CONV2:3; // 6:4 Max number of conversions
/* Битовое поле rsvd1, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:9; // 15:7 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
Uint16 MAX_CONV2:3; // 6:4 Max number of conversions
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
/* Битовое поле INT_SEQ1, ширина 1 бит; данные INT_SEQ1. */
Uint16 INT_SEQ1:1; // 0 SEQ1 Interrupt flag
/* Битовое поле INT_SEQ2, ширина 1 бит; данные INT_SEQ2. */
Uint16 INT_SEQ1:1; // 0 SEQ1 Interrupt flag
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
/* Битовое поле rsvd1, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:14; // 13:0 reserved
/* Битовое поле REF_SEL, ширина 2 бит; данные REF_SEL. */
Uint16 rsvd1:14; // 13:0 reserved
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;; порядок элементов сохраняется. */
int16 OFFSET_TRIM:9; // 8:0 Offset Trim
/* Битовое поле rsvd1, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
int16 OFFSET_TRIM:9; // 8:0 Offset Trim
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
/* Объединяет несколько представлений ADCTRL3_REG ADCTRL3; в одной области памяти. */
union ADCTRL3_REG ADCTRL3; // ADC Control 3
/* Объединяет несколько представлений ADCST_REG ADCST; в одной области памяти. */
union ADCTRL3_REG ADCTRL3; // ADC Control 3
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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание CpuTimers для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/4 $
// Checkin $Date: March 20, 2007 15:33:42 $
//###########################################################################
@@ -21,16 +20,11 @@
// $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
//---------------------------------------------------------------------------
@@ -38,195 +32,121 @@ 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
@@ -237,44 +157,31 @@ 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

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание DMA для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/11 $
// Checkin $Date: June 23, 2008 11:34:15 $
//###########################################################################
@@ -12,24 +11,17 @@
// $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
@@ -62,191 +54,127 @@ 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
@@ -255,9 +183,7 @@ 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
@@ -266,170 +192,102 @@ 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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание DevEmu для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/3 $
// Checkin $Date: June 2, 2008 11:12:30 $
//###########################################################################
@@ -12,122 +11,71 @@
// $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
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -135,18 +83,13 @@ 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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Device для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $
// Checkin $Date: January 22, 2008 16:55:35 $
//###########################################################################
@@ -12,30 +11,21 @@
// $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
@@ -43,90 +33,49 @@ 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
@@ -136,517 +85,281 @@ 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

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание ECan для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $
// Checkin $Date: May 7, 2007 16:05:39 $
//###########################################################################
@@ -12,17 +11,12 @@
// $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
@@ -31,1577 +25,854 @@ 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
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
/* --------------------------------------------------- */
@@ -1609,247 +880,143 @@ 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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -1858,250 +1025,135 @@ 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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание ECap для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:07 $
//###########################################################################
@@ -12,232 +11,139 @@
// $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 */
/* Описывает структуру ECCTL1_BITS; порядок полей определяет расположение данных. */
// Capture control register 1 bit definitions */
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 */
/* Описывает структуру ECCTL2_BITS; порядок полей определяет расположение данных. */
// Capture control register 2 bit definitions */
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
/* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 15:11
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
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 */
/* Описывает структуру ECEINT_BITS; порядок полей определяет расположение данных. */
// ECAP interrupt enable register bit definitions */
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
/* Битовое поле CEVT4, ширина 1 бит; данные CEVT4. */
Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Enable
/* Битовое поле CTROVF, ширина 1 бит; данные CTROVF. */
Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Enable
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 */
/* Описывает структуру ECFLG_BITS; порядок полей определяет расположение данных. */
// ECAP interrupt flag register bit definitions */
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
/* Битовое поле CEVT4, ширина 1 бит; данные CEVT4. */
Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Flag
/* Битовое поле CTROVF, ширина 1 бит; данные CTROVF. */
Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Flag
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 {
/* Объявляет TSCTR — данные TSCTR. */
Uint32 TSCTR; // Time stamp counter
/* Объявляет CTRPHS — данные CTRPHS. */
Uint32 TSCTR; // Time stamp counter
Uint32 CTRPHS; // Counter phase
/* Объявляет 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 — зарезервированные биты для сохранения аппаратного расположения. */
Uint32 CAP1; // Capture 1
Uint32 CAP2; // Capture 2
Uint32 CAP3; // Capture 3
Uint32 CAP4; // Capture 4
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
/* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2[6]; // reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
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
//===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание EPwm для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:10 $
//###########################################################################
@@ -12,190 +11,111 @@
// $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 */
/* Описывает структуру TBCTL_BITS; порядок полей определяет расположение данных. */
// Time base control register bit definitions */
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
/* Битовое поле FREE_SOFT, ширина 2 бит; данные FREE_SOFT. */
Uint16 FREE_SOFT:2; // 15:14 Emulation mode
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
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 */
/* Описывает структуру TBSTS_BITS; порядок полей определяет расположение данных. */
// Time base status register bit definitions */
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 */
/* Описывает структуру CMPCTL_BITS; порядок полей определяет расположение данных. */
// Compare control register bit definitions */
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 */
/* Описывает структуру AQCTL_BITS; порядок полей определяет расположение данных. */
// Action qualifier register bit definitions */
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 */
/* Описывает структуру AQSFRC_BITS; порядок полей определяет расположение данных. */
// Action qualifier SW force register bit definitions */
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 */
/* Описывает структуру AQCSFRC_BITS; порядок полей определяет расположение данных. */
// Action qualifier continuous SW force register bit definitions */
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;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
};
@@ -205,514 +125,297 @@ union AQCSFRC_REG {
// This corresponds to changes in silicon as of F2833x devices
// Rev A silicon.
//----------------------------------------------------
// Dead-band generator control register bit definitions
/* Описывает структуру DBCTL_BITS; порядок полей определяет расположение данных. */
// Dead-band generator control register bit definitions
struct DBCTL_BITS { // bits description
/* Битовое поле 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 OUT_MODE:2; // 1:0 Dead Band Output Mode Control
Uint16 POLSEL:2; // 3:2 Polarity Select Control
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
/* Описывает структуру TZSEL_BITS; порядок полей определяет расположение данных. */
// Trip zone select register bit definitions
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
/* Битовое поле 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 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
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 */
/* Описывает структуру TZCTL_BITS; порядок полей определяет расположение данных. */
// Trip zone control register bit definitions */
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 */
/* Описывает структуру TZEINT_BITS; порядок полей определяет расположение данных. */
// Trip zone control register bit definitions */
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 */
/* Описывает структуру TZFLG_BITS; порядок полей определяет расположение данных. */
// Trip zone flag register bit definitions */
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 */
/* Описывает структуру TZCLR_BITS; порядок полей определяет расположение данных. */
// Trip zone flag clear register bit definitions */
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 */
/* Описывает структуру TZFRC_BITS; порядок полей определяет расположение данных. */
// Trip zone flag force register bit definitions */
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 */
/* Описывает структуру ETSEL_BITS; порядок полей определяет расположение данных. */
// Event trigger select register bit definitions */
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 */
/* Описывает структуру ETPS_BITS; порядок полей определяет расположение данных. */
// Event trigger pre-scale register bit definitions */
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 */
/* Описывает структуру ETFLG_BITS; порядок полей определяет расположение данных. */
// Event trigger Flag register bit definitions */
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 */
/* Описывает структуру ETCLR_BITS; порядок полей определяет расположение данных. */
// Event trigger Clear register bit definitions */
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 */
/* Описывает структуру ETFRC_BITS; порядок полей определяет расположение данных. */
// Event trigger Force register bit definitions */
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 */
/* Описывает структуру PCCTL_BITS; порядок полей определяет расположение данных. */
// PWM chopper control register bit definitions */
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 {
/* Объединяет несколько представлений TBCTL_REG TBCTL; в одной области памяти. */
union TBCTL_REG TBCTL; //
/* Объединяет несколько представлений TBSTS_REG TBSTS; в одной области памяти. */
union TBSTS_REG TBSTS; //
/* Объединяет несколько представлений TBPHS_HRPWM_GROUP TBPHS; в одной области памяти. */
union TBCTL_REG TBCTL; //
union TBSTS_REG TBSTS; //
union TBPHS_HRPWM_GROUP TBPHS; // Union of TBPHS:TBPHSHR
/* Объявляет TBCTR — данные TBCTR. */
Uint16 TBCTR; // Counter
/* Объявляет TBPRD — данные TBPRD. */
Uint16 TBPRD; // Period register set
/* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; //
/* Объединяет несколько представлений CMPCTL_REG CMPCTL; в одной области памяти. */
Uint16 TBPRD; // Period register set
Uint16 rsvd1; //
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
/* Объединяет несколько представлений AQCSFRC_REG AQCSFRC; в одной области памяти. */
union AQCSFRC_REG AQCSFRC; // Action qualifier continuous SW force
/* Объединяет несколько представлений DBCTL_REG DBCTL; в одной области памяти. */
union AQCSFRC_REG AQCSFRC; // Action qualifier continuous SW force
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
/* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2;
/* Объединяет несколько представлений TZCTL_REG TZCTL; в одной области памяти. */
Uint16 rsvd2;
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
/* Объединяет несколько представлений TZCLR_REG TZCLR; в одной области памяти. */
union TZCLR_REG TZCLR; // Trip zone clear
/* Объединяет несколько представлений TZFRC_REG TZFRC; в одной области памяти. */
union TZCLR_REG TZCLR; // Trip zone clear
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
/* Объединяет несколько представлений ETCLR_REG ETCLR; в одной области памяти. */
union ETCLR_REG ETCLR; // Event trigger clear
/* Объединяет несколько представлений ETFRC_REG ETFRC; в одной области памяти. */
union ETCLR_REG ETCLR; // Event trigger clear
union ETFRC_REG ETFRC; // Event trigger force
/* Объединяет несколько представлений PCCTL_REG PCCTL; в одной области памяти. */
union PCCTL_REG PCCTL; // PWM chopper control
/* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3; //
/* Объединяет несколько представлений HRCNFG_REG HRCNFG; в одной области памяти. */
Uint16 rsvd3; //
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
//===========================================================================

View File

@@ -1,11 +1,10 @@
/* Поставляемое 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.
//
//###########################################################################
@@ -13,393 +12,229 @@
// $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 */
/* Описывает структуру QDECCTL_BITS; порядок полей определяет расположение данных. */
// Capture decoder control register bit definitions */
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 */
/* Описывает структуру QEPCTL_BITS; порядок полей определяет расположение данных. */
// QEP control register bit definitions */
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 */
/* Описывает структуру QCAPCTL_BITS; порядок полей определяет расположение данных. */
// Quadrature capture control register bit definitions */
struct QCAPCTL_BITS { // bits description
/* Битовое поле UPPS, ширина 4 бит; данные UPPS. */
Uint16 UPPS:4; // 3:0 Unit position pre-scale
/* Битовое поле CCPS, ширина 3 бит; данные CCPS. */
Uint16 UPPS:4; // 3:0 Unit position pre-scale
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 */
/* Описывает структуру QPOSCTL_BITS; порядок полей определяет расположение данных. */
// Position compare control register bit definitions */
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 */
/* Описывает структуру QEINT_BITS; порядок полей определяет расположение данных. */
// QEP interrupt control register bit definitions */
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 */
/* Описывает структуру QFLG_BITS; порядок полей определяет расположение данных. */
// QEP interrupt status register bit definitions */
struct QFLG_BITS { // bits description
/* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 Global interrupt
/* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 INT:1; // 0 Global interrupt
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 */
/* Описывает структуру QFRC_BITS; порядок полей определяет расположение данных. */
// QEP interrupt force register bit definitions */
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 */
/* Описывает структуру QEPSTS_BITS; порядок полей определяет расположение данных. */
// QEP status register bit definitions */
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 {
/* Объявляет QPOSCNT — данные QPOSCNT. */
Uint32 QPOSCNT; // Position counter
/* Объявляет QPOSINIT — данные QPOSINIT. */
Uint32 QPOSCNT; // Position counter
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
/* Объединяет несколько представлений QEPCTL_REG QEPCTL; в одной области памяти. */
union QEPCTL_REG QEPCTL; // QEP control
/* Объединяет несколько представлений QCAPCTL_REG QCAPCTL; в одной области памяти. */
union QCAPCTL_REG QCAPCTL; // Quadrature capture control
/* Объединяет несколько представлений QPOSCTL_REG QPOSCTL; в одной области памяти. */
union QEPCTL_REG QEPCTL; // QEP control
union QCAPCTL_REG QCAPCTL; // Quadrature capture control
union QPOSCTL_REG QPOSCTL; // Position compare control
/* Объединяет несколько представлений QEINT_REG QEINT; в одной области памяти. */
union QEINT_REG QEINT; // QEP interrupt control
/* Объединяет несколько представлений QFLG_REG QFLG; в одной области памяти. */
union QEINT_REG QEINT; // QEP interrupt control
union QFLG_REG QFLG; // QEP interrupt flag
/* Объединяет несколько представлений QFLG_REG QCLR; в одной области памяти. */
union QFLG_REG QCLR; // QEP interrupt clear
/* Объединяет несколько представлений QFRC_REG QFRC; в одной области памяти. */
union QFRC_REG QFRC; // QEP interrupt force
/* Объединяет несколько представлений QEPSTS_REG QEPSTS; в одной области памяти. */
union QFLG_REG QCLR; // QEP interrupt clear
union QFRC_REG QFRC; // QEP interrupt force
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
//===========================================================================

Some files were not shown because too many files have changed in this diff Show More