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/ /Debug/
# Исключает из Git артефакты по шаблону ниже.
/UKSSTMS320F28335.CS_/ /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 /UKSSTMS320F28335.out

Binary file not shown.

Binary file not shown.

View File

@@ -2,7 +2,7 @@
TMS320C2000 Hex Converter v5.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 OUTPUT FORMAT: Binary
PHYSICAL MEMORY PARAMETERS PHYSICAL MEMORY PARAMETERS
@@ -12,20 +12,20 @@ PHYSICAL MEMORY PARAMETERS
BOOT LOADER PARAMETERS BOOT LOADER PARAMETERS
Table Type: SERIAL PORT (SCI 8 bit Mode) Table Type: SERIAL PORT (SCI 8 bit Mode)
Entry Point: 0x0000a8d1 Entry Point: 0x0000b198
OUTPUT TRANSLATION MAP OUTPUT TRANSLATION MAP
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
00000000..003fffff Page=0 Memory Width=8 ROM Width=8 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 CONTENTS: 00000000..00006e67 BOOT TABLE
.cinit : dest=0000c000 size=00000273 width=00000002 .cinit : dest=0000b35f size=00000283 width=00000002
.text : dest=00008000 size=00003bfc width=00000002 .text : dest=00008000 size=0000335f width=00000002
.econst : dest=0000c274 size=0000012b width=00000002 .econst : dest=0000c000 size=00000112 width=00000002
.switch : dest=0000c3a0 size=0000004c width=00000002 .switch : dest=0000c112 size=00000028 width=00000002
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
00000000..003fffff Page=1 Memory Width=8 ROM Width=8 "*DEFAULT PAGE 1*" 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 $ // TI File $Revision: /main/10 $
// Checkin $Date: July 9, 2008 13:43:56 $ // Checkin $Date: July 9, 2008 13:43:56 $
@@ -17,24 +16,24 @@
/* ====================================================== /* ======================================================
// For Code Composer Studio V2.2 and later // For Code Composer Studio V2.2 and later
// --------------------------------------- // ---------------------------------------
// In addition to this memory linker command file, // In addition to this memory linker command file,
// add the header linker command file directly to the project. // add the header linker command file directly to the project.
// The header linker command file is required to link the // 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 memory map.
// //
// The header linker files are found in <base>\DSP2833x_Headers\cmd // The header linker files are found in <base>\DSP2833x_Headers\cmd
// //
// For BIOS applications add: DSP2833x_Headers_BIOS.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 // 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 // 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 */ // locations within the memory map */
/* Uncomment this line to include file only for non-BIOS applications */ /* Uncomment this line to include file only for non-BIOS applications */
@@ -44,209 +43,159 @@
/* -l DSP2833x_Headers_BIOS.cmd */ /* -l DSP2833x_Headers_BIOS.cmd */
/* 2) In your project add the path to <base>\DSP2833x_headers\cmd to the /* 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). 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 0 will be used to organize program sections
PAGE 1 will be used to organize data sections PAGE 1 will be used to organize data sections
Notes: Notes:
Memory blocks on F28335 are uniform (ie same 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 That is the same memory region should not be
defined for both PAGE 0 and PAGE 1. defined for both PAGE 0 and PAGE 1.
Doing so will result in corruption of program Doing so will result in corruption of program
and/or data. and/or data.
L0/L1/L2 and L3 memory blocks are mirrored - that is L0/L1/L2 and L3 memory blocks are mirrored - that is
they can be accessed in high memory or low memory. they can be accessed in high memory or low memory.
For simplicity only one instance is used in this For simplicity only one instance is used in this
linker file. linker file.
Contiguous SARAM memory blocks can be combined Contiguous SARAM memory blocks can be combined
if required to create a larger memory block. 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 MEMORY
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
PAGE 0: /* Program Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */ PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */ /* 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. */ ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */
RAML0 : origin = 0x008000, length = 0x004000 /* on-chip RAM block L0 */ /* Записывает origin значением 0x008000, length = 0x004000; данные origin. */ RAML0 : origin = 0x008000, length = 0x004000 /* on-chip RAM block L0 */
/* RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */ /* RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */
/* RAML2 : origin = 0x00A000, length = 0x001000 /* on-chip RAM block L2 */ /* RAML2 : origin = 0x00A000, length = 0x001000 /* on-chip RAM block L2 */
// RAML3 : origin = 0x00B000, length = 0x001000 /* on-chip RAM block L3 */ // 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. */ ZONE6 : origin = 0x0100000, length = 0x100000 /* XINTF zone 6 */
FLASHH : origin = 0x300000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x300000, length = 0x008000; данные origin. */ FLASHH : origin = 0x300000, length = 0x008000 /* on-chip FLASH */
FLASHG : origin = 0x308000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x308000, length = 0x008000; данные origin. */ FLASHG : origin = 0x308000, length = 0x008000 /* on-chip FLASH */
FLASHF : origin = 0x310000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x310000, length = 0x008000; данные origin. */ FLASHF : origin = 0x310000, length = 0x008000 /* on-chip FLASH */
FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x318000, length = 0x008000; данные origin. */ FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */
FLASHD : origin = 0x320000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x320000, length = 0x008000; данные origin. */ FLASHD : origin = 0x320000, length = 0x008000 /* on-chip FLASH */
FLASHC : origin = 0x328000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x328000, length = 0x008000; данные origin. */ FLASHC : origin = 0x328000, length = 0x008000 /* on-chip FLASH */
FLASHA : origin = 0x338000, length = 0x007F80 /* on-chip FLASH */ /* Записывает origin значением 0x338000, length = 0x007F80; данные origin. */ 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. */ /* Записывает origin значением 0x33FF80, length = 0x000076; данные origin. */ 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. */ /* Записывает origin значением 0x33FFF6, length = 0x000002; данные origin. */ 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 */ /* Записывает origin значением 0x33FFF8, length = 0x000008; данные origin. */ CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */ /* Записывает origin значением 0x380400, length = 0x000400; данные origin. */ OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */
ADC_CAL : origin = 0x380080, length = 0x000009 /* ADC_cal function in Reserved memory */ /* Записывает origin значением 0x380080, length = 0x000009; данные origin. */ 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. */ PAGE 1 : /* Data Memory */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */ /* Записывает origin значением 0x3FEB50, length = 0x00008c; данные origin. */
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */ /* Записывает origin значением 0x3FEBDC, length = 0x0006A0; данные origin. */
ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */ /* Записывает origin значением 0x3FF27C, length = 0x000D44; данные origin. */
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */ /* Записывает origin значением 0x3FFFC0, length = 0x000002; данные origin. */
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */ /* Записывает origin значением 0x3FFFC2, length = 0x00003E; данные origin. */
PAGE 1 : /* Data Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */ /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
/* Registers remain on PAGE1 */ /* 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. */ 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 */ /* Записывает origin значением 0x000050, length = 0x0003B0; данные origin. */ RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ /* Записывает origin значением 0x000400, length = 0x000400; данные origin. */ RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
RAML5 : origin = 0x00D000, length = 0x003000 /* on-chip RAM block L1 */ /* Записывает origin значением 0x00D000, length = 0x003000; данные origin. */ RAML5 : origin = 0x00D000, length = 0x003000 /* on-chip RAM block L1 */
/* RAML6 : origin = 0x00E000, length = 0x001000 /* 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 */ /* 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. */ ZONE7A : origin = 0x0200000, length = 0x00FC00 /* XINTF zone 7 - program space */
ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ /* Записывает origin значением 0x20FC00, length = 0x000400; данные origin. */ ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */
FLASHB : origin = 0x330000, length = 0x008000 /* on-chip FLASH */ /* Записывает origin значением 0x330000, length = 0x008000; данные origin. */ FLASHB : origin = 0x330000, length = 0x008000 /* on-chip FLASH */
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Allocate sections to memory blocks. /* Allocate sections to memory blocks.
Note: 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 execution when booting to flash
ramfuncs user defined section to store functions that will be copied from Flash into RAM ramfuncs user defined section to store functions that will be copied from Flash into RAM
*/ */
/* Начинает описание размещения секций объектных файлов для линкера. */
SECTIONS SECTIONS
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Allocate program areas: */ /* Allocate program areas: */
/* Keep initialization tables out of the code RAM block. */ .cinit : > RAML0 PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */
.cinit : > RAML4 PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */
.pinit : > RAML0 PAGE = 0 .pinit : > RAML0 PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */
.text : > RAML0 PAGE = 0 .text : > RAML0 PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */
codestart : > BEGIN PAGE = 0 codestart : > BEGIN PAGE = 0
/* Записывает LOAD значением RAML4,; данные LOAD. */ ramfuncs : LOAD = RAML4,
ramfuncs : LOAD = RAML4, RUN = RAML4,
/* Записывает RUN значением RAML4,; данные RUN. */
RUN = RAML4,
/* Вызывает LOAD_START с аргументами (_RamfuncsLoadStart), в текущей последовательности операций. */
LOAD_START(_RamfuncsLoadStart), LOAD_START(_RamfuncsLoadStart),
/* Вызывает LOAD_END с аргументами (_RamfuncsLoadEnd), в текущей последовательности операций. */
LOAD_END(_RamfuncsLoadEnd), LOAD_END(_RamfuncsLoadEnd),
/* Вызывает RUN_START с аргументами (_RamfuncsRunStart), в текущей последовательности операций. */
RUN_START(_RamfuncsRunStart), RUN_START(_RamfuncsRunStart),
/* Записывает PAGE значением 0; данные PAGE. */
PAGE = 0 PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */
csmpasswds : > CSM_PWL PAGE = 0 csmpasswds : > CSM_PWL PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */
csm_rsvd : > CSM_RSVD PAGE = 0 csm_rsvd : > CSM_RSVD PAGE = 0
/* Allocate uninitalized data sections: */ /* Allocate uninitalized data sections: */
/* Записывает PAGE значением 1; данные PAGE. */
.stack : > RAMM1 PAGE = 1 .stack : > RAMM1 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
.ebss : > RAML5 PAGE = 1 .ebss : > RAML5 PAGE = 1
/* Записывает PAGE значением 0; данные PAGE. */
.esysmem : > RAML0 PAGE = 0 .esysmem : > RAML0 PAGE = 0
/* Записывает PAGE значением 1; данные PAGE. */
.logg : > ZONE7A PAGE = 1 .logg : > ZONE7A PAGE = 1
/* Initalized sections go in Flash */ /* Initalized sections go in Flash */
/* For SDFlash to program these, they must be allocated to page 0 */ /* For SDFlash to program these, they must be allocated to page 0 */
/* Записывает PAGE значением 0; данные PAGE. */
.econst : > RAML4 PAGE = 0 .econst : > RAML4 PAGE = 0
/* Записывает PAGE значением 0; данные PAGE. */ .switch : > RAML4 PAGE = 0
.switch : > RAML4 PAGE = 0
/* Allocate IQ math areas: */ /* Allocate IQ math areas: */
IQmath : > FLASHC PAGE = 0 /* Math Code */ /* Записывает PAGE значением 0; данные PAGE. */ IQmath : > FLASHC PAGE = 0 /* Math Code */
/* Записывает PAGE значением 0, TYPE = NOLOAD; данные PAGE. */ IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
/* Uncomment the section below if calling the IQNexp() or IQexp() /* Uncomment the section below if calling the IQNexp() or IQexp()
functions from the IQMath.lib library in order to utilize the functions from the IQMath.lib library in order to utilize the
relevant IQ Math table in Boot ROM (This saves space and Boot ROM relevant IQ Math table in Boot ROM (This saves space and Boot ROM
is 1 wait-state). If this section is not uncommented, IQmathTables2 is 1 wait-state). If this section is not uncommented, IQmathTables2
will be loaded into other memory (SARAM, Flash, etc.) and will take will be loaded into other memory (SARAM, Flash, etc.) and will take
up space, but 0 wait-state is possible. 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) 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: * / /* Allocate DMA-accessible RAM sections: * /
DMARAML4 : > RAML4, PAGE = 1 DMARAML4 : > RAML4, PAGE = 1
DMARAML5 : > RAML5, PAGE = 1 DMARAML5 : > RAML5, PAGE = 1
/* DMARAML6 : > RAML6, PAGE = 1 /* DMARAML6 : > RAML6, PAGE = 1
DMARAML7 : > RAML7, PAGE = 1 DMARAML7 : > RAML7, PAGE = 1
*/ */
/* Allocate 0x400 of XINTF Zone 7 to storing data */ /* Allocate 0x400 of XINTF Zone 7 to storing data */
/* Записывает PAGE значением 1; данные PAGE. */
ZONE7DATA : > ZONE7B, PAGE = 1 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. /* /* the address of the start of _c_int00 for C Code. /*
/* When using the boot ROM this section and the CPU vector */ /* When using the boot ROM this section and the CPU vector */
/* table is not needed. Thus the default type is set here to */ /* table is not needed. Thus the default type is set here to */
/* DSECT */ /* DSECT */
/* Записывает PAGE значением 0, TYPE = DSECT; данные PAGE. */
.reset : > RESET, PAGE = 0, TYPE = DSECT .reset : > RESET, PAGE = 0, TYPE = DSECT
/* Записывает PAGE значением 0, TYPE = DSECT; данные PAGE. */
vectors : > VECTORS PAGE = 0, TYPE = DSECT vectors : > VECTORS PAGE = 0, TYPE = DSECT
/* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */ /* 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 .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 $ // TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:45:37 $ // Checkin $Date: August 18, 2006 13:45:37 $
//########################################################################### //###########################################################################
@@ -12,223 +11,135 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_DEFAULT_ISR_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DEFAULT_ISR_H #ifndef DSP2833x_DEFAULT_ISR_H
/* Определяет защитный символ или переключатель DSP2833x_DEFAULT_ISR_H для последующей компиляции. */
#define DSP2833x_DEFAULT_ISR_H #define DSP2833x_DEFAULT_ISR_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Default Interrupt Service Routine Declarations: // 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. // default ISR routines used with the default PIE vector table.
// This default vector table is found in the DSP2833x_PieVect.h // This default vector table is found in the DSP2833x_PieVect.h
// file. // file.
// //
// Non-Peripheral Interrupts: // Non-Peripheral Interrupts:
/* Объявляет обработчик INT13_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT13_ISR(void); // XINT13 or CPU-Timer 1 interrupt void INT13_ISR(void); // XINT13 or CPU-Timer 1
/* Объявляет обработчик INT14_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT14_ISR(void); // CPU-Timer2 interrupt void INT14_ISR(void); // CPU-Timer2
/* Объявляет обработчик DATALOG_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DATALOG_ISR(void); // Datalogging interrupt interrupt void DATALOG_ISR(void); // Datalogging interrupt
/* Объявляет обработчик RTOSINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RTOSINT_ISR(void); // RTOS interrupt interrupt void RTOSINT_ISR(void); // RTOS interrupt
/* Объявляет обработчик EMUINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EMUINT_ISR(void); // Emulation interrupt interrupt void EMUINT_ISR(void); // Emulation interrupt
/* Объявляет обработчик NMI_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void NMI_ISR(void); // Non-maskable interrupt interrupt void NMI_ISR(void); // Non-maskable interrupt
/* Объявляет обработчик ILLEGAL_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ILLEGAL_ISR(void); // Illegal operation TRAP interrupt void ILLEGAL_ISR(void); // Illegal operation TRAP
/* Объявляет обработчик USER1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER1_ISR(void); // User Defined trap 1 interrupt void USER1_ISR(void); // User Defined trap 1
/* Объявляет обработчик USER2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER2_ISR(void); // User Defined trap 2 interrupt void USER2_ISR(void); // User Defined trap 2
/* Объявляет обработчик USER3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER3_ISR(void); // User Defined trap 3 interrupt void USER3_ISR(void); // User Defined trap 3
/* Объявляет обработчик USER4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER4_ISR(void); // User Defined trap 4 interrupt void USER4_ISR(void); // User Defined trap 4
/* Объявляет обработчик USER5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER5_ISR(void); // User Defined trap 5 interrupt void USER5_ISR(void); // User Defined trap 5
/* Объявляет обработчик USER6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER6_ISR(void); // User Defined trap 6 interrupt void USER6_ISR(void); // User Defined trap 6
/* Объявляет обработчик USER7_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER7_ISR(void); // User Defined trap 7 interrupt void USER7_ISR(void); // User Defined trap 7
/* Объявляет обработчик USER8_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER8_ISR(void); // User Defined trap 8 interrupt void USER8_ISR(void); // User Defined trap 8
/* Объявляет обработчик USER9_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER9_ISR(void); // User Defined trap 9 interrupt void USER9_ISR(void); // User Defined trap 9
/* Объявляет обработчик USER10_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER10_ISR(void); // User Defined trap 10 interrupt void USER10_ISR(void); // User Defined trap 10
/* Объявляет обработчик USER11_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER11_ISR(void); // User Defined trap 11 interrupt void USER11_ISR(void); // User Defined trap 11
/* Объявляет обработчик USER12_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER12_ISR(void); // User Defined trap 12 interrupt void USER12_ISR(void); // User Defined trap 12
// Group 1 PIE Interrupt Service Routines: // Group 1 PIE Interrupt Service Routines:
/* Объявляет обработчик SEQ1INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SEQ1INT_ISR(void); // ADC Sequencer 1 ISR interrupt void SEQ1INT_ISR(void); // ADC Sequencer 1 ISR
/* Объявляет обработчик SEQ2INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SEQ2INT_ISR(void); // ADC Sequencer 2 ISR interrupt void SEQ2INT_ISR(void); // ADC Sequencer 2 ISR
/* Объявляет обработчик XINT1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT1_ISR(void); // External interrupt 1 interrupt void XINT1_ISR(void); // External interrupt 1
/* Объявляет обработчик XINT2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT2_ISR(void); // External interrupt 2 interrupt void XINT2_ISR(void); // External interrupt 2
/* Объявляет обработчик ADCINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ADCINT_ISR(void); // ADC interrupt void ADCINT_ISR(void); // ADC
/* Объявляет обработчик TINT0_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void TINT0_ISR(void); // Timer 0 interrupt void TINT0_ISR(void); // Timer 0
/* Объявляет обработчик WAKEINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void WAKEINT_ISR(void); // WD interrupt void WAKEINT_ISR(void); // WD
// Group 2 PIE Interrupt Service Routines: // Group 2 PIE Interrupt Service Routines:
/* Объявляет обработчик EPWM1_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM1_TZINT_ISR(void); // EPWM-1 interrupt void EPWM1_TZINT_ISR(void); // EPWM-1
/* Объявляет обработчик EPWM2_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM2_TZINT_ISR(void); // EPWM-2 interrupt void EPWM2_TZINT_ISR(void); // EPWM-2
/* Объявляет обработчик EPWM3_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM3_TZINT_ISR(void); // EPWM-3 interrupt void EPWM3_TZINT_ISR(void); // EPWM-3
/* Объявляет обработчик EPWM4_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM4_TZINT_ISR(void); // EPWM-4 interrupt void EPWM4_TZINT_ISR(void); // EPWM-4
/* Объявляет обработчик EPWM5_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM5_TZINT_ISR(void); // EPWM-5 interrupt void EPWM5_TZINT_ISR(void); // EPWM-5
/* Объявляет обработчик EPWM6_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM6_TZINT_ISR(void); // EPWM-6 interrupt void EPWM6_TZINT_ISR(void); // EPWM-6
// Group 3 PIE Interrupt Service Routines: // Group 3 PIE Interrupt Service Routines:
/* Объявляет обработчик EPWM1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM1_INT_ISR(void); // EPWM-1 interrupt void EPWM1_INT_ISR(void); // EPWM-1
/* Объявляет обработчик EPWM2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM2_INT_ISR(void); // EPWM-2 interrupt void EPWM2_INT_ISR(void); // EPWM-2
/* Объявляет обработчик EPWM3_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM3_INT_ISR(void); // EPWM-3 interrupt void EPWM3_INT_ISR(void); // EPWM-3
/* Объявляет обработчик EPWM4_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM4_INT_ISR(void); // EPWM-4 interrupt void EPWM4_INT_ISR(void); // EPWM-4
/* Объявляет обработчик EPWM5_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM5_INT_ISR(void); // EPWM-5 interrupt void EPWM5_INT_ISR(void); // EPWM-5
/* Объявляет обработчик EPWM6_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM6_INT_ISR(void); // EPWM-6 interrupt void EPWM6_INT_ISR(void); // EPWM-6
// Group 4 PIE Interrupt Service Routines: // Group 4 PIE Interrupt Service Routines:
/* Объявляет обработчик ECAP1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP1_INT_ISR(void); // ECAP-1 interrupt void ECAP1_INT_ISR(void); // ECAP-1
/* Объявляет обработчик ECAP2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP2_INT_ISR(void); // ECAP-2 interrupt void ECAP2_INT_ISR(void); // ECAP-2
/* Объявляет обработчик ECAP3_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP3_INT_ISR(void); // ECAP-3 interrupt void ECAP3_INT_ISR(void); // ECAP-3
/* Объявляет обработчик ECAP4_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP4_INT_ISR(void); // ECAP-4 interrupt void ECAP4_INT_ISR(void); // ECAP-4
/* Объявляет обработчик ECAP5_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP5_INT_ISR(void); // ECAP-5 interrupt void ECAP5_INT_ISR(void); // ECAP-5
/* Объявляет обработчик ECAP6_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP6_INT_ISR(void); // ECAP-6 interrupt void ECAP6_INT_ISR(void); // ECAP-6
// Group 5 PIE Interrupt Service Routines: // Group 5 PIE Interrupt Service Routines:
/* Объявляет обработчик EQEP1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EQEP1_INT_ISR(void); // EQEP-1 interrupt void EQEP1_INT_ISR(void); // EQEP-1
/* Объявляет обработчик EQEP2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EQEP2_INT_ISR(void); // EQEP-2 interrupt void EQEP2_INT_ISR(void); // EQEP-2
// Group 6 PIE Interrupt Service Routines: // Group 6 PIE Interrupt Service Routines:
/* Объявляет обработчик SPIRXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SPIRXINTA_ISR(void); // SPI-A interrupt void SPIRXINTA_ISR(void); // SPI-A
/* Объявляет обработчик SPITXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SPITXINTA_ISR(void); // SPI-A interrupt void SPITXINTA_ISR(void); // SPI-A
/* Объявляет обработчик MRINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MRINTA_ISR(void); // McBSP-A interrupt void MRINTA_ISR(void); // McBSP-A
/* Объявляет обработчик MXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MXINTA_ISR(void); // McBSP-A interrupt void MXINTA_ISR(void); // McBSP-A
/* Объявляет обработчик MRINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MRINTB_ISR(void); // McBSP-B interrupt void MRINTB_ISR(void); // McBSP-B
/* Объявляет обработчик MXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MXINTB_ISR(void); // McBSP-B interrupt void MXINTB_ISR(void); // McBSP-B
// Group 7 PIE Interrupt Service Routines: // Group 7 PIE Interrupt Service Routines:
/* Объявляет обработчик DINTCH1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH1_ISR(void); // DMA-Channel 1 interrupt void DINTCH1_ISR(void); // DMA-Channel 1
/* Объявляет обработчик DINTCH2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH2_ISR(void); // DMA-Channel 2 interrupt void DINTCH2_ISR(void); // DMA-Channel 2
/* Объявляет обработчик DINTCH3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH3_ISR(void); // DMA-Channel 3 interrupt void DINTCH3_ISR(void); // DMA-Channel 3
/* Объявляет обработчик DINTCH4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH4_ISR(void); // DMA-Channel 4 interrupt void DINTCH4_ISR(void); // DMA-Channel 4
/* Объявляет обработчик DINTCH5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH5_ISR(void); // DMA-Channel 5 interrupt void DINTCH5_ISR(void); // DMA-Channel 5
/* Объявляет обработчик DINTCH6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH6_ISR(void); // DMA-Channel 6 interrupt void DINTCH6_ISR(void); // DMA-Channel 6
// Group 8 PIE Interrupt Service Routines: // Group 8 PIE Interrupt Service Routines:
/* Объявляет обработчик I2CINT1A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void I2CINT1A_ISR(void); // I2C-A interrupt void I2CINT1A_ISR(void); // I2C-A
/* Объявляет обработчик I2CINT2A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void I2CINT2A_ISR(void); // I2C-A interrupt void I2CINT2A_ISR(void); // I2C-A
/* Объявляет обработчик SCIRXINTC_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTC_ISR(void); // SCI-C interrupt void SCIRXINTC_ISR(void); // SCI-C
/* Объявляет обработчик SCITXINTC_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTC_ISR(void); // SCI-C interrupt void SCITXINTC_ISR(void); // SCI-C
// Group 9 PIE Interrupt Service Routines: // Group 9 PIE Interrupt Service Routines:
/* Объявляет обработчик SCIRXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTA_ISR(void); // SCI-A interrupt void SCIRXINTA_ISR(void); // SCI-A
/* Объявляет обработчик SCITXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTA_ISR(void); // SCI-A interrupt void SCITXINTA_ISR(void); // SCI-A
/* Объявляет обработчик SCIRXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTB_ISR(void); // SCI-B interrupt void SCIRXINTB_ISR(void); // SCI-B
/* Объявляет обработчик SCITXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTB_ISR(void); // SCI-B interrupt void SCITXINTB_ISR(void); // SCI-B
/* Объявляет обработчик ECAN0INTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN0INTA_ISR(void); // eCAN-A interrupt void ECAN0INTA_ISR(void); // eCAN-A
/* Объявляет обработчик ECAN1INTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN1INTA_ISR(void); // eCAN-A interrupt void ECAN1INTA_ISR(void); // eCAN-A
/* Объявляет обработчик ECAN0INTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN0INTB_ISR(void); // eCAN-B interrupt void ECAN0INTB_ISR(void); // eCAN-B
/* Объявляет обработчик ECAN1INTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN1INTB_ISR(void); // eCAN-B interrupt void ECAN1INTB_ISR(void); // eCAN-B
// Group 10 PIE Interrupt Service Routines: // Group 10 PIE Interrupt Service Routines:
// Group 11 PIE Interrupt Service Routines:
// Group 11 PIE Interrupt Service Routines: // Group 12 PIE Interrupt Service Routines:
// Group 12 PIE Interrupt Service Routines:
/* Объявляет обработчик XINT3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT3_ISR(void); // External interrupt 3 interrupt void XINT3_ISR(void); // External interrupt 3
/* Объявляет обработчик XINT4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT4_ISR(void); // External interrupt 4 interrupt void XINT4_ISR(void); // External interrupt 4
/* Объявляет обработчик XINT5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT5_ISR(void); // External interrupt 5 interrupt void XINT5_ISR(void); // External interrupt 5
/* Объявляет обработчик XINT6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT6_ISR(void); // External interrupt 6 interrupt void XINT6_ISR(void); // External interrupt 6
/* Объявляет обработчик XINT7_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT7_ISR(void); // External interrupt 7 interrupt void XINT7_ISR(void); // External interrupt 7
/* Объявляет обработчик LVF_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void LVF_ISR(void); // Latched overflow flag interrupt void LVF_ISR(void); // Latched overflow flag
/* Объявляет обработчик LUF_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void LUF_ISR(void); // Latched underflow flag interrupt void LUF_ISR(void); // Latched underflow flag
// Catch-all for Reserved Locations For testing purposes: // Catch-all for Reserved Locations For testing purposes:
/* Объявляет интерфейс функции PIE_RESERVED; реализация вызывается через этот прототип. */
interrupt void PIE_RESERVED(void); // Reserved for test interrupt void PIE_RESERVED(void); // Reserved for test
/* Объявляет обработчик rsvd_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void rsvd_ISR(void); // for test interrupt void rsvd_ISR(void); // for test
/* Объявляет обработчик INT_NOTUSED_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT_NOTUSED_ISR(void); // for unused interrupts interrupt void INT_NOTUSED_ISR(void); // for unused interrupts
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_DEFAULT_ISR_H definition #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 $ // TI File $Revision: /main/2 $
// Checkin $Date: August 14, 2007 16:32:29 $ // Checkin $Date: August 14, 2007 16:32:29 $
//########################################################################### //###########################################################################
@@ -12,112 +11,69 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_DMA_DEFINES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DMA_DEFINES_H #ifndef DSP2833x_DMA_DEFINES_H
/* Определяет защитный символ или переключатель DSP2833x_DMA_DEFINES_H для последующей компиляции. */
#define DSP2833x_DMA_DEFINES_H #define DSP2833x_DMA_DEFINES_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// MODE // MODE
//========================== //==========================
// PERINTSEL bits // PERINTSEL bits
/* Задаёт DMA_SEQ1INT = 1; DMA 1 INT. */
#define DMA_SEQ1INT 1 #define DMA_SEQ1INT 1
/* Задаёт DMA_SEQ2INT = 2; DMA 2 INT. */
#define DMA_SEQ2INT 2 #define DMA_SEQ2INT 2
/* Задаёт DMA_XINT1 = 3; DMA 1. */
#define DMA_XINT1 3 #define DMA_XINT1 3
/* Задаёт DMA_XINT2 = 4; DMA 2. */
#define DMA_XINT2 4 #define DMA_XINT2 4
/* Задаёт DMA_XINT3 = 5; DMA 3. */
#define DMA_XINT3 5 #define DMA_XINT3 5
/* Задаёт DMA_XINT4 = 6; DMA 4. */
#define DMA_XINT4 6 #define DMA_XINT4 6
/* Задаёт DMA_XINT5 = 7; DMA 5. */
#define DMA_XINT5 7 #define DMA_XINT5 7
/* Задаёт DMA_XINT6 = 8; DMA 6. */
#define DMA_XINT6 8 #define DMA_XINT6 8
/* Задаёт DMA_XINT7 = 9; DMA 7. */
#define DMA_XINT7 9 #define DMA_XINT7 9
/* Задаёт DMA_XINT13 = 10; DMA 13. */
#define DMA_XINT13 10 #define DMA_XINT13 10
/* Задаёт DMA_TINT0 = 11; DMA 0. */
#define DMA_TINT0 11 #define DMA_TINT0 11
/* Задаёт DMA_TINT1 = 12; DMA 1. */
#define DMA_TINT1 12 #define DMA_TINT1 12
/* Задаёт DMA_TINT2 = 13; DMA 2. */
#define DMA_TINT2 13 #define DMA_TINT2 13
/* Задаёт DMA_MXEVTA = 14; DMA MXEVTA. */
#define DMA_MXEVTA 14 #define DMA_MXEVTA 14
/* Задаёт DMA_MREVTA = 15; DMA MREVTA. */
#define DMA_MREVTA 15 #define DMA_MREVTA 15
/* Задаёт DMA_MXREVTB = 16; DMA MXREVTB. */
#define DMA_MXREVTB 16 #define DMA_MXREVTB 16
/* Задаёт DMA_MREVTB = 17; DMA MREVTB. */
#define DMA_MREVTB 17 #define DMA_MREVTB 17
// OVERINTE bit // OVERINTE bit
/* Задаёт OVRFLOW_DISABLE = 0x0; OVRFLOW запрет. */
#define OVRFLOW_DISABLE 0x0 #define OVRFLOW_DISABLE 0x0
/* Задаёт OVEFLOW_ENABLE = 0x1; OVEFLOW разрешение. */
#define OVEFLOW_ENABLE 0x1 #define OVEFLOW_ENABLE 0x1
// PERINTE bit // PERINTE bit
/* Задаёт PERINT_DISABLE = 0x0; PERINT запрет. */
#define PERINT_DISABLE 0x0 #define PERINT_DISABLE 0x0
/* Задаёт PERINT_ENABLE = 0x1; PERINT разрешение. */
#define PERINT_ENABLE 0x1 #define PERINT_ENABLE 0x1
// CHINTMODE bits // CHINTMODE bits
/* Задаёт CHINT_BEGIN = 0x0; данные CHINT_BEGIN. */
#define CHINT_BEGIN 0x0 #define CHINT_BEGIN 0x0
/* Задаёт CHINT_END = 0x1; данные CHINT_END. */
#define CHINT_END 0x1 #define CHINT_END 0x1
// ONESHOT bits // ONESHOT bits
/* Задаёт ONESHOT_DISABLE = 0x0; ONESHOT запрет. */
#define ONESHOT_DISABLE 0x0 #define ONESHOT_DISABLE 0x0
/* Задаёт ONESHOT_ENABLE = 0x1; ONESHOT разрешение. */
#define ONESHOT_ENABLE 0x1 #define ONESHOT_ENABLE 0x1
// CONTINOUS bit // CONTINOUS bit
/* Задаёт CONT_DISABLE = 0x0; CONT запрет. */
#define CONT_DISABLE 0x0 #define CONT_DISABLE 0x0
/* Задаёт CONT_ENABLE = 0x1; CONT разрешение. */
#define CONT_ENABLE 0x1 #define CONT_ENABLE 0x1
// SYNCE bit // SYNCE bit
/* Задаёт SYNC_DISABLE = 0x0; синхронизация запрет. */
#define SYNC_DISABLE 0x0 #define SYNC_DISABLE 0x0
/* Задаёт SYNC_ENABLE = 0x1; синхронизация разрешение. */
#define SYNC_ENABLE 0x1 #define SYNC_ENABLE 0x1
// SYNCSEL bit // SYNCSEL bit
/* Задаёт SYNC_SRC = 0x0; синхронизация SRC. */
#define SYNC_SRC 0x0 #define SYNC_SRC 0x0
/* Задаёт SYNC_DST = 0x1; синхронизация DST. */
#define SYNC_DST 0x1 #define SYNC_DST 0x1
// DATASIZE bit // DATASIZE bit
/* Задаёт SIXTEEN_BIT = 0x0; SIXTEEN бит. */
#define SIXTEEN_BIT 0x0 #define SIXTEEN_BIT 0x0
/* Задаёт THIRTYTWO_BIT = 0x1; THIRTYTWO бит. */
#define THIRTYTWO_BIT 0x1 #define THIRTYTWO_BIT 0x1
// CHINTE bit // CHINTE bit
/* Задаёт CHINT_DISABLE = 0x0; CHINT запрет. */
#define CHINT_DISABLE 0x0 #define CHINT_DISABLE 0x0
/* Задаёт CHINT_ENABLE = 0x1; CHINT разрешение. */
#define CHINT_ENABLE 0x1 #define CHINT_ENABLE 0x1
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // - end of DSP2833x_EPWM_DEFINES_H #endif // - end of DSP2833x_EPWM_DEFINES_H
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание EPwm_defines для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $ // TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:45:39 $ // Checkin $Date: August 18, 2006 13:45:39 $
//########################################################################### //###########################################################################
@@ -6,212 +5,135 @@
// FILE: DSP2833x_EPwm_defines.h // FILE: DSP2833x_EPwm_defines.h
// //
// TITLE: #defines used in ePWM examples examples // TITLE: #defines used in ePWM examples examples
// //
//########################################################################### //###########################################################################
// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ // $TI Release: DSP2833x/DSP2823x Header Files V1.20 $
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_EPWM_DEFINES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_EPWM_DEFINES_H #ifndef DSP2833x_EPWM_DEFINES_H
/* Определяет защитный символ или переключатель DSP2833x_EPWM_DEFINES_H для последующей компиляции. */
#define DSP2833x_EPWM_DEFINES_H #define DSP2833x_EPWM_DEFINES_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// TBCTL (Time-Base Control) // TBCTL (Time-Base Control)
//========================== //==========================
// CTRMODE bits // CTRMODE bits
/* Задаёт TB_COUNT_UP = 0x0; TB число UP. */
#define TB_COUNT_UP 0x0 #define TB_COUNT_UP 0x0
/* Задаёт TB_COUNT_DOWN = 0x1; TB число DOWN. */
#define TB_COUNT_DOWN 0x1 #define TB_COUNT_DOWN 0x1
/* Задаёт TB_COUNT_UPDOWN = 0x2; TB число UPDOWN. */
#define TB_COUNT_UPDOWN 0x2 #define TB_COUNT_UPDOWN 0x2
/* Задаёт TB_FREEZE = 0x3; данные TB_FREEZE. */
#define TB_FREEZE 0x3 #define TB_FREEZE 0x3
// PHSEN bit // PHSEN bit
/* Задаёт TB_DISABLE = 0x0; TB запрет. */
#define TB_DISABLE 0x0 #define TB_DISABLE 0x0
/* Задаёт TB_ENABLE = 0x1; TB разрешение. */
#define TB_ENABLE 0x1 #define TB_ENABLE 0x1
// PRDLD bit // PRDLD bit
/* Задаёт TB_SHADOW = 0x0; данные TB_SHADOW. */
#define TB_SHADOW 0x0 #define TB_SHADOW 0x0
/* Задаёт TB_IMMEDIATE = 0x1; данные TB_IMMEDIATE. */
#define TB_IMMEDIATE 0x1 #define TB_IMMEDIATE 0x1
// SYNCOSEL bits // SYNCOSEL bits
/* Задаёт TB_SYNC_IN = 0x0; TB синхронизация IN. */
#define TB_SYNC_IN 0x0 #define TB_SYNC_IN 0x0
/* Задаёт TB_CTR_ZERO = 0x1; данные TB_CTR_ZERO. */
#define TB_CTR_ZERO 0x1 #define TB_CTR_ZERO 0x1
/* Задаёт TB_CTR_CMPB = 0x2; данные TB_CTR_CMPB. */
#define TB_CTR_CMPB 0x2 #define TB_CTR_CMPB 0x2
/* Задаёт TB_SYNC_DISABLE = 0x3; TB синхронизация запрет. */
#define TB_SYNC_DISABLE 0x3 #define TB_SYNC_DISABLE 0x3
// HSPCLKDIV and CLKDIV bits // HSPCLKDIV and CLKDIV bits
/* Задаёт TB_DIV1 = 0x0; данные TB_DIV1. */
#define TB_DIV1 0x0 #define TB_DIV1 0x0
/* Задаёт TB_DIV2 = 0x1; данные TB_DIV2. */
#define TB_DIV2 0x1 #define TB_DIV2 0x1
/* Задаёт TB_DIV4 = 0x2; данные TB_DIV4. */
#define TB_DIV4 0x2 #define TB_DIV4 0x2
// PHSDIR bit // PHSDIR bit
/* Задаёт TB_DOWN = 0x0; данные TB_DOWN. */
#define TB_DOWN 0x0 #define TB_DOWN 0x0
/* Задаёт TB_UP = 0x1; данные TB_UP. */
#define TB_UP 0x1 #define TB_UP 0x1
// CMPCTL (Compare Control) // CMPCTL (Compare Control)
//========================== //==========================
// LOADAMODE and LOADBMODE bits // LOADAMODE and LOADBMODE bits
/* Задаёт CC_CTR_ZERO = 0x0; данные CC_CTR_ZERO. */
#define CC_CTR_ZERO 0x0 #define CC_CTR_ZERO 0x0
/* Задаёт CC_CTR_PRD = 0x1; данные CC_CTR_PRD. */
#define CC_CTR_PRD 0x1 #define CC_CTR_PRD 0x1
/* Задаёт CC_CTR_ZERO_PRD = 0x2; данные CC_CTR_ZERO_PRD. */
#define CC_CTR_ZERO_PRD 0x2 #define CC_CTR_ZERO_PRD 0x2
/* Задаёт CC_LD_DISABLE = 0x3; CC LD запрет. */
#define CC_LD_DISABLE 0x3 #define CC_LD_DISABLE 0x3
// SHDWAMODE and SHDWBMODE bits // SHDWAMODE and SHDWBMODE bits
/* Задаёт CC_SHADOW = 0x0; данные CC_SHADOW. */
#define CC_SHADOW 0x0 #define CC_SHADOW 0x0
/* Задаёт CC_IMMEDIATE = 0x1; данные CC_IMMEDIATE. */
#define CC_IMMEDIATE 0x1 #define CC_IMMEDIATE 0x1
// AQCTLA and AQCTLB (Action Qualifier Control) // AQCTLA and AQCTLB (Action Qualifier Control)
//============================================= //=============================================
// ZRO, PRD, CAU, CAD, CBU, CBD bits // ZRO, PRD, CAU, CAD, CBU, CBD bits
/* Задаёт AQ_NO_ACTION = 0x0; данные AQ_NO_ACTION. */
#define AQ_NO_ACTION 0x0 #define AQ_NO_ACTION 0x0
/* Задаёт AQ_CLEAR = 0x1; AQ очистка. */
#define AQ_CLEAR 0x1 #define AQ_CLEAR 0x1
/* Задаёт AQ_SET = 0x2; AQ установка. */
#define AQ_SET 0x2 #define AQ_SET 0x2
/* Задаёт AQ_TOGGLE = 0x3; данные AQ_TOGGLE. */
#define AQ_TOGGLE 0x3 #define AQ_TOGGLE 0x3
// DBCTL (Dead-Band Control) // DBCTL (Dead-Band Control)
//========================== //==========================
// OUT MODE bits // OUT MODE bits
/* Задаёт DB_DISABLE = 0x0; DB запрет. */
#define DB_DISABLE 0x0 #define DB_DISABLE 0x0
/* Задаёт DBA_ENABLE = 0x1; DBA разрешение. */
#define DBA_ENABLE 0x1 #define DBA_ENABLE 0x1
/* Задаёт DBB_ENABLE = 0x2; DBB разрешение. */
#define DBB_ENABLE 0x2 #define DBB_ENABLE 0x2
/* Задаёт DB_FULL_ENABLE = 0x3; DB FULL разрешение. */
#define DB_FULL_ENABLE 0x3 #define DB_FULL_ENABLE 0x3
// POLSEL bits // POLSEL bits
/* Задаёт DB_ACTV_HI = 0x0; данные DB_ACTV_HI. */
#define DB_ACTV_HI 0x0 #define DB_ACTV_HI 0x0
/* Задаёт DB_ACTV_LOC = 0x1; данные DB_ACTV_LOC. */
#define DB_ACTV_LOC 0x1 #define DB_ACTV_LOC 0x1
/* Задаёт DB_ACTV_HIC = 0x2; данные DB_ACTV_HIC. */
#define DB_ACTV_HIC 0x2 #define DB_ACTV_HIC 0x2
/* Задаёт DB_ACTV_LO = 0x3; данные DB_ACTV_LO. */
#define DB_ACTV_LO 0x3 #define DB_ACTV_LO 0x3
// IN MODE // IN MODE
/* Задаёт DBA_ALL = 0x0; данные DBA_ALL. */
#define DBA_ALL 0x0 #define DBA_ALL 0x0
/* Задаёт DBB_RED_DBA_FED = 0x1; данные DBB_RED_DBA_FED. */
#define DBB_RED_DBA_FED 0x1 #define DBB_RED_DBA_FED 0x1
/* Задаёт DBA_RED_DBB_FED = 0x2; данные DBA_RED_DBB_FED. */
#define DBA_RED_DBB_FED 0x2 #define DBA_RED_DBB_FED 0x2
/* Задаёт DBB_ALL = 0x3; данные DBB_ALL. */
#define DBB_ALL 0x3 #define DBB_ALL 0x3
// CHPCTL (chopper control) // CHPCTL (chopper control)
//========================== //==========================
// CHPEN bit // CHPEN bit
/* Задаёт CHP_DISABLE = 0x0; CHP запрет. */
#define CHP_DISABLE 0x0 #define CHP_DISABLE 0x0
/* Задаёт CHP_ENABLE = 0x1; CHP разрешение. */
#define CHP_ENABLE 0x1 #define CHP_ENABLE 0x1
// CHPFREQ bits // CHPFREQ bits
/* Задаёт CHP_DIV1 = 0x0; данные CHP_DIV1. */
#define CHP_DIV1 0x0 #define CHP_DIV1 0x0
/* Задаёт CHP_DIV2 = 0x1; данные CHP_DIV2. */
#define CHP_DIV2 0x1 #define CHP_DIV2 0x1
/* Задаёт CHP_DIV3 = 0x2; данные CHP_DIV3. */
#define CHP_DIV3 0x2 #define CHP_DIV3 0x2
/* Задаёт CHP_DIV4 = 0x3; данные CHP_DIV4. */
#define CHP_DIV4 0x3 #define CHP_DIV4 0x3
/* Задаёт CHP_DIV5 = 0x4; данные CHP_DIV5. */
#define CHP_DIV5 0x4 #define CHP_DIV5 0x4
/* Задаёт CHP_DIV6 = 0x5; данные CHP_DIV6. */
#define CHP_DIV6 0x5 #define CHP_DIV6 0x5
/* Задаёт CHP_DIV7 = 0x6; данные CHP_DIV7. */
#define CHP_DIV7 0x6 #define CHP_DIV7 0x6
/* Задаёт CHP_DIV8 = 0x7; данные CHP_DIV8. */
#define CHP_DIV8 0x7 #define CHP_DIV8 0x7
// CHPDUTY bits // CHPDUTY bits
/* Задаёт CHP1_8TH = 0x0; данные CHP1_8TH. */
#define CHP1_8TH 0x0 #define CHP1_8TH 0x0
/* Задаёт CHP2_8TH = 0x1; данные CHP2_8TH. */
#define CHP2_8TH 0x1 #define CHP2_8TH 0x1
/* Задаёт CHP3_8TH = 0x2; данные CHP3_8TH. */
#define CHP3_8TH 0x2 #define CHP3_8TH 0x2
/* Задаёт CHP4_8TH = 0x3; данные CHP4_8TH. */
#define CHP4_8TH 0x3 #define CHP4_8TH 0x3
/* Задаёт CHP5_8TH = 0x4; данные CHP5_8TH. */
#define CHP5_8TH 0x4 #define CHP5_8TH 0x4
/* Задаёт CHP6_8TH = 0x5; данные CHP6_8TH. */
#define CHP6_8TH 0x5 #define CHP6_8TH 0x5
/* Задаёт CHP7_8TH = 0x6; данные CHP7_8TH. */
#define CHP7_8TH 0x6 #define CHP7_8TH 0x6
// TZSEL (Trip Zone Select) // TZSEL (Trip Zone Select)
//========================== //==========================
// CBCn and OSHTn bits // CBCn and OSHTn bits
/* Задаёт TZ_DISABLE = 0x0; TZ запрет. */
#define TZ_DISABLE 0x0 #define TZ_DISABLE 0x0
/* Задаёт TZ_ENABLE = 0x1; TZ разрешение. */
#define TZ_ENABLE 0x1 #define TZ_ENABLE 0x1
// TZCTL (Trip Zone Control) // TZCTL (Trip Zone Control)
//========================== //==========================
// TZA and TZB bits // TZA and TZB bits
/* Задаёт TZ_HIZ = 0x0; данные TZ_HIZ. */
#define TZ_HIZ 0x0 #define TZ_HIZ 0x0
/* Задаёт TZ_FORCE_HI = 0x1; TZ принудительная установка HI. */
#define TZ_FORCE_HI 0x1 #define TZ_FORCE_HI 0x1
/* Задаёт TZ_FORCE_LO = 0x2; TZ принудительная установка LO. */
#define TZ_FORCE_LO 0x2 #define TZ_FORCE_LO 0x2
/* Задаёт TZ_NO_CHANGE = 0x3; данные TZ_NO_CHANGE. */
#define TZ_NO_CHANGE 0x3 #define TZ_NO_CHANGE 0x3
// ETSEL (Event Trigger Select) // ETSEL (Event Trigger Select)
//============================= //=============================
/* Задаёт ET_CTR_ZERO = 0x1; данные ET_CTR_ZERO. */
#define ET_CTR_ZERO 0x1 #define ET_CTR_ZERO 0x1
/* Задаёт ET_CTR_PRD = 0x2; данные ET_CTR_PRD. */
#define ET_CTR_PRD 0x2 #define ET_CTR_PRD 0x2
/* Задаёт ET_CTRU_CMPA = 0x4; данные ET_CTRU_CMPA. */
#define ET_CTRU_CMPA 0x4 #define ET_CTRU_CMPA 0x4
/* Задаёт ET_CTRD_CMPA = 0x5; данные ET_CTRD_CMPA. */
#define ET_CTRD_CMPA 0x5 #define ET_CTRD_CMPA 0x5
/* Задаёт ET_CTRU_CMPB = 0x6; данные ET_CTRU_CMPB. */
#define ET_CTRU_CMPB 0x6 #define ET_CTRU_CMPB 0x6
/* Задаёт ET_CTRD_CMPB = 0x7; данные ET_CTRD_CMPB. */
#define ET_CTRD_CMPB 0x7 #define ET_CTRD_CMPB 0x7
// ETPS (Event Trigger Pre-scale) // ETPS (Event Trigger Pre-scale)
//=============================== //===============================
// INTPRD, SOCAPRD, SOCBPRD bits // INTPRD, SOCAPRD, SOCBPRD bits
/* Задаёт ET_DISABLE = 0x0; ET запрет. */
#define ET_DISABLE 0x0 #define ET_DISABLE 0x0
/* Задаёт ET_1ST = 0x1; данные ET_1ST. */
#define ET_1ST 0x1 #define ET_1ST 0x1
/* Задаёт ET_2ND = 0x2; данные ET_2ND. */
#define ET_2ND 0x2 #define ET_2ND 0x2
/* Задаёт ET_3RD = 0x3; данные ET_3RD. */
#define ET_3RD 0x3 #define ET_3RD 0x3
@@ -219,33 +141,22 @@ extern "C" {
// HRPWM (High Resolution PWM) // HRPWM (High Resolution PWM)
//================================ //================================
// HRCNFG // HRCNFG
/* Задаёт HR_Disable = 0x0; HR запрет. */
#define HR_Disable 0x0 #define HR_Disable 0x0
/* Задаёт HR_REP = 0x1; данные HR_REP. */
#define HR_REP 0x1 #define HR_REP 0x1
/* Задаёт HR_FEP = 0x2; данные HR_FEP. */
#define HR_FEP 0x2 #define HR_FEP 0x2
/* Задаёт HR_BEP = 0x3; данные HR_BEP. */
#define HR_BEP 0x3 #define HR_BEP 0x3
/* Задаёт HR_CMP = 0x0; данные HR_CMP. */
#define HR_CMP 0x0 #define HR_CMP 0x0
/* Задаёт HR_PHS = 0x1; данные HR_PHS. */
#define HR_PHS 0x1 #define HR_PHS 0x1
/* Задаёт HR_CTR_ZERO = 0x0; данные HR_CTR_ZERO. */
#define HR_CTR_ZERO 0x0 #define HR_CTR_ZERO 0x0
/* Задаёт HR_CTR_PRD = 0x1; данные HR_CTR_PRD. */
#define HR_CTR_PRD 0x1 #define HR_CTR_PRD 0x1
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // - end of DSP2833x_EPWM_DEFINES_H #endif // - end of DSP2833x_EPWM_DEFINES_H
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Examples для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/9 $ // TI File $Revision: /main/9 $
// Checkin $Date: July 2, 2008 14:31:12 $ // Checkin $Date: July 2, 2008 14:31:12 $
//########################################################################### //###########################################################################
@@ -12,17 +11,12 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_EXAMPLES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_EXAMPLES_H #ifndef DSP2833x_EXAMPLES_H
/* Определяет защитный символ или переключатель DSP2833x_EXAMPLES_H для последующей компиляции. */
#define DSP2833x_EXAMPLES_H #define DSP2833x_EXAMPLES_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -31,11 +25,9 @@ extern "C" {
-----------------------------------------------------------------------------*/ -----------------------------------------------------------------------------*/
//#define DSP28_DIVSEL 0 // Enable /4 for SYSCLKOUT //#define DSP28_DIVSEL 0 // Enable /4 for SYSCLKOUT
//#define DSP28_DIVSEL 1 // Enable /4 for SYSCKOUT //#define DSP28_DIVSEL 1 // Enable /4 for SYSCKOUT
/* Задаёт DSP28_DIVSEL = 2; данные DSP28_DIVSEL. */
#define DSP28_DIVSEL 2 // Enable /2 for SYSCLKOUT #define DSP28_DIVSEL 2 // Enable /2 for SYSCLKOUT
//#define DSP28_DIVSEL 3 // Enable /1 for SYSCLKOUT //#define DSP28_DIVSEL 3 // Enable /1 for SYSCLKOUT
/* Задаёт DSP28_PLLCR = CLKMULT*2; данные DSP28_PLLCR. */
#define DSP28_PLLCR CLKMULT*2 #define DSP28_PLLCR CLKMULT*2
//#define DSP28_PLLCR 10 //#define DSP28_PLLCR 10
@@ -82,7 +74,6 @@ extern "C" {
In this case, the CPU_RATE will be 10.000L In this case, the CPU_RATE will be 10.000L
Uncomment the line: #define CPU_RATE 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 6.667L // for a 150MHz CPU clock speed (SYSCLKOUT)
//#define CPU_RATE 7.143L // for a 140MHz 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) //#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 examples) - either 150 MHz (for 28335 and 28334) or 100 MHz
(for 28332). User does not have to change anything here. (for 28332). User does not have to change anything here.
-----------------------------------------------------------------------------*/ -----------------------------------------------------------------------------*/
/* Условие компиляции DSP28_28332: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_28332 // DSP28_28332 device only #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) #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 #define CPU_FRQ_150MHZ 0
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Задаёт CPU_FRQ_100MHZ = 0; данные CPU_FRQ_100MHZ. */
#define CPU_FRQ_100MHZ 0 // DSP28_28335||DSP28_28334 #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 #define CPU_FRQ_150MHZ 1 // 150 MHz CPU Freq (30 MHz input freq) by DEFAULT
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -122,52 +106,35 @@ extern "C" {
// Include Example Header Files: // Include Example Header Files:
// //
/* Подключает "DSP2833x_GlobalPrototypes.h": поставляемое TI описание GlobalPrototypes для семейства C2833x. */
#include "DSP2833x_GlobalPrototypes.h" // Prototypes for global functions within the #include "DSP2833x_GlobalPrototypes.h" // Prototypes for global functions within the
// .c files. // .c files.
/* Подключает "DSP2833x_ePwm_defines.h": поставляемое TI описание ePwm_defines для семейства C2833x. */
#include "DSP2833x_ePwm_defines.h" // Macros used for PWM examples. #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. #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. #include "DSP2833x_I2C_defines.h" // Macros used for I2C examples.
/* Задаёт PARTNO_28335 = 0xEF; данные PARTNO_28335. */
#define PARTNO_28335 0xEF #define PARTNO_28335 0xEF
/* Задаёт PARTNO_28334 = 0xEE; данные PARTNO_28334. */
#define PARTNO_28334 0xEE #define PARTNO_28334 0xEE
/* Задаёт PARTNO_28332 = 0xED; данные PARTNO_28332. */
#define PARTNO_28332 0xED #define PARTNO_28332 0xED
/* Задаёт PARTNO_28235 = 0xE8; данные PARTNO_28235. */
#define PARTNO_28235 0xE8 #define PARTNO_28235 0xE8
/* Задаёт PARTNO_28234 = 0xE7; данные PARTNO_28234. */
#define PARTNO_28234 0xE7 #define PARTNO_28234 0xE7
/* Задаёт PARTNO_28232 = 0xE6; данные PARTNO_28232. */
#define PARTNO_28232 0xE6 #define PARTNO_28232 0xE6
// Include files not used with DSP/BIOS // Include files not used with DSP/BIOS
/* Начинает условие: DSP28_BIOS ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP28_BIOS #ifndef DSP28_BIOS
/* Подключает "DSP2833x_DefaultISR.h": поставляемое TI описание DefaultISR для семейства C2833x. */
#include "DSP2833x_DefaultISR.h" #include "DSP2833x_DefaultISR.h"
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// DO NOT MODIFY THIS LINE. // 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) #define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_EXAMPLES_H definition #endif // end of DSP2833x_EXAMPLES_H definition

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание GlobalPrototypes для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/11 $ // TI File $Revision: /main/11 $
// Checkin $Date: May 12, 2008 14:30:08 $ // Checkin $Date: May 12, 2008 14:30:08 $
//########################################################################### //###########################################################################
@@ -12,320 +11,174 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_GLOBALPROTOTYPES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_GLOBALPROTOTYPES_H #ifndef DSP2833x_GLOBALPROTOTYPES_H
/* Определяет защитный символ или переключатель DSP2833x_GLOBALPROTOTYPES_H для последующей компиляции. */
#define DSP2833x_GLOBALPROTOTYPES_H #define DSP2833x_GLOBALPROTOTYPES_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/*---- shared global function prototypes -----------------------------------*/ /*---- shared global function prototypes -----------------------------------*/
/* Объявляет интерфейс функции InitAdc; реализация вызывается через этот прототип. */
extern void InitAdc(void); extern void InitAdc(void);
/* Объявляет интерфейс функции DMAInitialize; реализация вызывается через этот прототип. */
extern void DMAInitialize(void); extern void DMAInitialize(void);
// DMA Channel 1 // DMA Channel 1
/* Объявляет интерфейс функции DMACH1AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH1AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source); extern void DMACH1AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
/* Объявляет интерфейс функции DMACH1BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep); extern void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
/* Объявляет интерфейс функции DMACH1TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep); extern void DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
/* Объявляет интерфейс функции DMACH1WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH1WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep); 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); 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); extern void StartDMACH1(void);
// DMA Channel 2 // DMA Channel 2
/* Объявляет интерфейс функции DMACH2AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH2AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source); extern void DMACH2AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
/* Объявляет интерфейс функции DMACH2BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH2BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep); extern void DMACH2BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
/* Объявляет интерфейс функции DMACH2TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH2TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep); extern void DMACH2TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
/* Объявляет интерфейс функции DMACH2WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH2WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep); 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); 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); extern void StartDMACH2(void);
// DMA Channel 3 // DMA Channel 3
/* Объявляет интерфейс функции DMACH3AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH3AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source); extern void DMACH3AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
/* Объявляет интерфейс функции DMACH3BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH3BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep); extern void DMACH3BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
/* Объявляет интерфейс функции DMACH3TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH3TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep); extern void DMACH3TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
/* Объявляет интерфейс функции DMACH3WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH3WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep); 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); 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); extern void StartDMACH3(void);
// DMA Channel 4 // DMA Channel 4
/* Объявляет интерфейс функции DMACH4AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH4AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source); extern void DMACH4AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
/* Объявляет интерфейс функции DMACH4BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH4BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep); extern void DMACH4BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
/* Объявляет интерфейс функции DMACH4TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH4TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep); extern void DMACH4TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
/* Объявляет интерфейс функции DMACH4WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH4WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep); 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); 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); extern void StartDMACH4(void);
// DMA Channel 5 // DMA Channel 5
/* Объявляет интерфейс функции DMACH5AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH5AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source); extern void DMACH5AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
/* Объявляет интерфейс функции DMACH5BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH5BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep); extern void DMACH5BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep);
/* Объявляет интерфейс функции DMACH5TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH5TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep); extern void DMACH5TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
/* Объявляет интерфейс функции DMACH5WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH5WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep); 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); 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); extern void StartDMACH5(void);
// DMA Channel 6 // DMA Channel 6
/* Объявляет интерфейс функции DMACH6AddrConfig; реализация вызывается через этот прототип. */
extern void DMACH6AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source); extern void DMACH6AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source);
/* Объявляет интерфейс функции DMACH6BurstConfig; реализация вызывается через этот прототип. */
extern void DMACH6BurstConfig(Uint16 bsize,Uint16 srcbstep, int16 desbstep); extern void DMACH6BurstConfig(Uint16 bsize,Uint16 srcbstep, int16 desbstep);
/* Объявляет интерфейс функции DMACH6TransferConfig; реализация вызывается через этот прототип. */
extern void DMACH6TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep); extern void DMACH6TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep);
/* Объявляет интерфейс функции DMACH6WrapConfig; реализация вызывается через этот прототип. */
extern void DMACH6WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep); 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); 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); extern void StartDMACH6(void);
/* Объявляет интерфейс функции InitPeripherals; реализация вызывается через этот прототип. */
extern void InitPeripherals(void); extern void InitPeripherals(void);
/* Условие компиляции DSP28_ECANA: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECANA #if DSP28_ECANA
/* Объявляет интерфейс функции InitECan; реализация вызывается через этот прототип. */
extern void InitECan(void); extern void InitECan(void);
/* Объявляет интерфейс функции InitECana; реализация вызывается через этот прототип. */
extern void InitECana(void); extern void InitECana(void);
/* Объявляет интерфейс функции InitECanGpio; реализация вызывается через этот прототип. */
extern void InitECanGpio(void); extern void InitECanGpio(void);
/* Объявляет интерфейс функции InitECanaGpio; реализация вызывается через этот прототип. */
extern void InitECanaGpio(void); extern void InitECanaGpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECANA #endif // endif DSP28_ECANA
/* Условие компиляции DSP28_ECANB: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECANB #if DSP28_ECANB
/* Объявляет интерфейс функции InitECanb; реализация вызывается через этот прототип. */
extern void InitECanb(void); extern void InitECanb(void);
/* Объявляет интерфейс функции InitECanbGpio; реализация вызывается через этот прототип. */
extern void InitECanbGpio(void); extern void InitECanbGpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECANB #endif // endif DSP28_ECANB
/* Объявляет интерфейс функции InitECap; реализация вызывается через этот прототип. */
extern void InitECap(void); extern void InitECap(void);
/* Объявляет интерфейс функции InitECapGpio; реализация вызывается через этот прототип. */
extern void InitECapGpio(void); extern void InitECapGpio(void);
/* Объявляет интерфейс функции InitECap1Gpio; реализация вызывается через этот прототип. */
extern void InitECap1Gpio(void); extern void InitECap1Gpio(void);
/* Объявляет интерфейс функции InitECap2Gpio; реализация вызывается через этот прототип. */
extern void InitECap2Gpio(void); extern void InitECap2Gpio(void);
/* Условие компиляции DSP28_ECAP3: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECAP3 #if DSP28_ECAP3
/* Объявляет интерфейс функции InitECap3Gpio; реализация вызывается через этот прототип. */
extern void InitECap3Gpio(void); extern void InitECap3Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECAP3 #endif // endif DSP28_ECAP3
/* Условие компиляции DSP28_ECAP4: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECAP4 #if DSP28_ECAP4
/* Объявляет интерфейс функции InitECap4Gpio; реализация вызывается через этот прототип. */
extern void InitECap4Gpio(void); extern void InitECap4Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECAP4 #endif // endif DSP28_ECAP4
/* Условие компиляции DSP28_ECAP5: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECAP5 #if DSP28_ECAP5
/* Объявляет интерфейс функции InitECap5Gpio; реализация вызывается через этот прототип. */
extern void InitECap5Gpio(void); extern void InitECap5Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECAP5 #endif // endif DSP28_ECAP5
/* Условие компиляции DSP28_ECAP6: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_ECAP6 #if DSP28_ECAP6
/* Объявляет интерфейс функции InitECap6Gpio; реализация вызывается через этот прототип. */
extern void InitECap6Gpio(void); extern void InitECap6Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_ECAP6 #endif // endif DSP28_ECAP6
/* Объявляет интерфейс функции InitEPwm; реализация вызывается через этот прототип. */
extern void InitEPwm(void); extern void InitEPwm(void);
/* Объявляет интерфейс функции InitEPwmGpio; реализация вызывается через этот прототип. */
extern void InitEPwmGpio(void); extern void InitEPwmGpio(void);
/* Объявляет интерфейс функции InitEPwm1Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm1Gpio(void); extern void InitEPwm1Gpio(void);
/* Объявляет интерфейс функции InitEPwm2Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm2Gpio(void); extern void InitEPwm2Gpio(void);
/* Объявляет интерфейс функции InitEPwm3Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm3Gpio(void); extern void InitEPwm3Gpio(void);
/* Условие компиляции DSP28_EPWM4: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EPWM4 #if DSP28_EPWM4
/* Объявляет интерфейс функции InitEPwm4Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm4Gpio(void); extern void InitEPwm4Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_EPWM4 #endif // endif DSP28_EPWM4
/* Условие компиляции DSP28_EPWM5: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EPWM5 #if DSP28_EPWM5
/* Объявляет интерфейс функции InitEPwm5Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm5Gpio(void); extern void InitEPwm5Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_EPWM5 #endif // endif DSP28_EPWM5
/* Условие компиляции DSP28_EPWM6: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EPWM6 #if DSP28_EPWM6
/* Объявляет интерфейс функции InitEPwm6Gpio; реализация вызывается через этот прототип. */
extern void InitEPwm6Gpio(void); extern void InitEPwm6Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_EPWM6 #endif // endif DSP28_EPWM6
/* Условие компиляции DSP28_EQEP1: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EQEP1 #if DSP28_EQEP1
/* Объявляет интерфейс функции InitEQep; реализация вызывается через этот прототип. */
extern void InitEQep(void); extern void InitEQep(void);
/* Объявляет интерфейс функции InitEQepGpio; реализация вызывается через этот прототип. */
extern void InitEQepGpio(void); extern void InitEQepGpio(void);
/* Объявляет интерфейс функции InitEQep1Gpio; реализация вызывается через этот прототип. */
extern void InitEQep1Gpio(void); extern void InitEQep1Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // if DSP28_EQEP1 #endif // if DSP28_EQEP1
/* Условие компиляции DSP28_EQEP2: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_EQEP2 #if DSP28_EQEP2
/* Объявляет интерфейс функции InitEQep2Gpio; реализация вызывается через этот прототип. */
extern void InitEQep2Gpio(void); extern void InitEQep2Gpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_EQEP2 #endif // endif DSP28_EQEP2
/* Объявляет интерфейс функции InitGpio; реализация вызывается через этот прототип. */
extern void InitGpio(void); extern void InitGpio(void);
/* Объявляет интерфейс функции InitI2CGpio; реализация вызывается через этот прототип. */
extern void InitI2CGpio(void); extern void InitI2CGpio(void);
/* Объявляет интерфейс функции InitMcbsp; реализация вызывается через этот прототип. */
extern void InitMcbsp(void); extern void InitMcbsp(void);
/* Объявляет интерфейс функции InitMcbspa; реализация вызывается через этот прототип. */
extern void InitMcbspa(void); extern void InitMcbspa(void);
/* Объявляет интерфейс функции delay_loop; реализация вызывается через этот прототип. */
extern void delay_loop(void); extern void delay_loop(void);
/* Объявляет интерфейс функции InitMcbspaGpio; реализация вызывается через этот прототип. */
extern void InitMcbspaGpio(void); extern void InitMcbspaGpio(void);
/* Объявляет интерфейс функции InitMcbspa8bit; реализация вызывается через этот прототип. */
extern void InitMcbspa8bit(void); extern void InitMcbspa8bit(void);
/* Объявляет интерфейс функции InitMcbspa12bit; реализация вызывается через этот прототип. */
extern void InitMcbspa12bit(void); extern void InitMcbspa12bit(void);
/* Объявляет интерфейс функции InitMcbspa16bit; реализация вызывается через этот прототип. */
extern void InitMcbspa16bit(void); extern void InitMcbspa16bit(void);
/* Объявляет интерфейс функции InitMcbspa20bit; реализация вызывается через этот прототип. */
extern void InitMcbspa20bit(void); extern void InitMcbspa20bit(void);
/* Объявляет интерфейс функции InitMcbspa24bit; реализация вызывается через этот прототип. */
extern void InitMcbspa24bit(void); extern void InitMcbspa24bit(void);
/* Объявляет интерфейс функции InitMcbspa32bit; реализация вызывается через этот прототип. */
extern void InitMcbspa32bit(void); extern void InitMcbspa32bit(void);
/* Условие компиляции DSP28_MCBSPB: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_MCBSPB #if DSP28_MCBSPB
/* Объявляет интерфейс функции InitMcbspb; реализация вызывается через этот прототип. */
extern void InitMcbspb(void); extern void InitMcbspb(void);
/* Объявляет интерфейс функции InitMcbspbGpio; реализация вызывается через этот прототип. */
extern void InitMcbspbGpio(void); extern void InitMcbspbGpio(void);
/* Объявляет интерфейс функции InitMcbspb8bit; реализация вызывается через этот прототип. */
extern void InitMcbspb8bit(void); extern void InitMcbspb8bit(void);
/* Объявляет интерфейс функции InitMcbspb12bit; реализация вызывается через этот прототип. */
extern void InitMcbspb12bit(void); extern void InitMcbspb12bit(void);
/* Объявляет интерфейс функции InitMcbspb16bit; реализация вызывается через этот прототип. */
extern void InitMcbspb16bit(void); extern void InitMcbspb16bit(void);
/* Объявляет интерфейс функции InitMcbspb20bit; реализация вызывается через этот прототип. */
extern void InitMcbspb20bit(void); extern void InitMcbspb20bit(void);
/* Объявляет интерфейс функции InitMcbspb24bit; реализация вызывается через этот прототип. */
extern void InitMcbspb24bit(void); extern void InitMcbspb24bit(void);
/* Объявляет интерфейс функции InitMcbspb32bit; реализация вызывается через этот прототип. */
extern void InitMcbspb32bit(void); extern void InitMcbspb32bit(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_MCBSPB #endif // endif DSP28_MCBSPB
/* Объявляет интерфейс функции InitPieCtrl; реализация вызывается через этот прототип. */
extern void InitPieCtrl(void); extern void InitPieCtrl(void);
/* Объявляет интерфейс функции InitPieVectTable; реализация вызывается через этот прототип. */
extern void InitPieVectTable(void); extern void InitPieVectTable(void);
/* Объявляет интерфейс функции InitSci; реализация вызывается через этот прототип. */
extern void InitSci(void); extern void InitSci(void);
/* Объявляет интерфейс функции InitSciGpio; реализация вызывается через этот прототип. */
extern void InitSciGpio(void); extern void InitSciGpio(void);
/* Объявляет интерфейс функции InitSciaGpio; реализация вызывается через этот прототип. */
extern void InitSciaGpio(void); extern void InitSciaGpio(void);
/* Условие компиляции DSP28_SCIB: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_SCIB #if DSP28_SCIB
/* Объявляет интерфейс функции InitScibGpio; реализация вызывается через этот прототип. */
extern void InitScibGpio(void); extern void InitScibGpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // endif DSP28_SCIB #endif // endif DSP28_SCIB
/* Условие компиляции DSP28_SCIC: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_SCIC #if DSP28_SCIC
/* Объявляет интерфейс функции InitScicGpio; реализация вызывается через этот прототип. */
extern void InitScicGpio(void); extern void InitScicGpio(void);
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Объявляет интерфейс функции InitSpi; реализация вызывается через этот прототип. */
extern void InitSpi(void); extern void InitSpi(void);
/* Объявляет интерфейс функции InitSpiGpio; реализация вызывается через этот прототип. */
extern void InitSpiGpio(void); extern void InitSpiGpio(void);
/* Объявляет интерфейс функции InitSpiaGpio; реализация вызывается через этот прототип. */
extern void InitSpiaGpio(void); extern void InitSpiaGpio(void);
/* Объявляет интерфейс функции InitSysCtrl; реализация вызывается через этот прототип. */
extern void InitSysCtrl(void); extern void InitSysCtrl(void);
/* Объявляет интерфейс функции InitTzGpio; реализация вызывается через этот прототип. */
extern void InitTzGpio(void); extern void InitTzGpio(void);
/* Объявляет интерфейс функции InitXIntrupt; реализация вызывается через этот прототип. */
extern void InitXIntrupt(void); extern void InitXIntrupt(void);
/* Объявляет интерфейс функции XintfInit; реализация вызывается через этот прототип. */
extern void XintfInit(void); extern void XintfInit(void);
/* Объявляет интерфейс функции InitXintf16Gpio; реализация вызывается через этот прототип. */
extern void InitXintf16Gpio(); extern void InitXintf16Gpio();
/* Объявляет интерфейс функции InitXintf32Gpio; реализация вызывается через этот прототип. */
extern void InitXintf32Gpio(); extern void InitXintf32Gpio();
/* Объявляет интерфейс функции InitPll; реализация вызывается через этот прототип. */
extern void InitPll(Uint16 pllcr, Uint16 clkindiv); extern void InitPll(Uint16 pllcr, Uint16 clkindiv);
/* Объявляет интерфейс функции InitPeripheralClocks; реализация вызывается через этот прототип. */
extern void InitPeripheralClocks(void); extern void InitPeripheralClocks(void);
/* Объявляет интерфейс функции EnableInterrupts; реализация вызывается через этот прототип. */
extern void EnableInterrupts(void); extern void EnableInterrupts(void);
/* Объявляет интерфейс функции DSP28x_usDelay; реализация вызывается через этот прототип. */
extern void DSP28x_usDelay(Uint32 Count); extern void DSP28x_usDelay(Uint32 Count);
/* Объявляет интерфейс функции ADC_cal; реализация вызывается через этот прототип. */
extern void ADC_cal (void); extern void ADC_cal (void);
/* Задаёт KickDog = ServiceDog; данные KickDog. */
#define KickDog ServiceDog // For compatiblity with previous versions #define KickDog ServiceDog // For compatiblity with previous versions
/* Объявляет интерфейс функции ServiceDog; реализация вызывается через этот прототип. */
extern void ServiceDog(void); extern void ServiceDog(void);
/* Объявляет интерфейс функции DisableDog; реализация вызывается через этот прототип. */
extern void DisableDog(void); extern void DisableDog(void);
/* Объявляет интерфейс функции CsmUnlock; реализация вызывается через этот прототип. */
extern Uint16 CsmUnlock(void); extern Uint16 CsmUnlock(void);
// DSP28_DBGIER.asm // DSP28_DBGIER.asm
/* Объявляет интерфейс функции SetDBGIER; реализация вызывается через этот прототип. */
extern void SetDBGIER(Uint16 dbgier); extern void SetDBGIER(Uint16 dbgier);
// CAUTION // CAUTION
// This function MUST be executed out of RAM. Executing it // This function MUST be executed out of RAM. Executing it
// out of OTP/Flash will yield unpredictable results // out of OTP/Flash will yield unpredictable results
/* Объявляет интерфейс функции InitFlash; реализация вызывается через этот прототип. */
extern void InitFlash(void); extern void InitFlash(void);
/* Объявляет интерфейс функции MemCopy; реализация вызывается через этот прототип. */
void MemCopy(Uint16 *SourceAddr, Uint16* SourceEndAddr, Uint16* DestAddr); 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 // DSP28 examples will use these to relocate code from one LOAD location
// in either Flash or XINTF to a different RUN location in internal // in either Flash or XINTF to a different RUN location in internal
// RAM // RAM
/* Объявляет RamfuncsLoadStart — данные RamfuncsLoadStart. Память определена в другом модуле. */
extern Uint16 RamfuncsLoadStart; extern Uint16 RamfuncsLoadStart;
/* Объявляет RamfuncsLoadEnd — данные RamfuncsLoadEnd. Память определена в другом модуле. */
extern Uint16 RamfuncsLoadEnd; extern Uint16 RamfuncsLoadEnd;
/* Объявляет RamfuncsRunStart — данные RamfuncsRunStart. Память определена в другом модуле. */
extern Uint16 RamfuncsRunStart; extern Uint16 RamfuncsRunStart;
/* Объявляет XintffuncsLoadStart — данные XintffuncsLoadStart. Память определена в другом модуле. */
extern Uint16 XintffuncsLoadStart; extern Uint16 XintffuncsLoadStart;
/* Объявляет XintffuncsLoadEnd — данные XintffuncsLoadEnd. Память определена в другом модуле. */
extern Uint16 XintffuncsLoadEnd; extern Uint16 XintffuncsLoadEnd;
/* Объявляет XintffuncsRunStart — данные XintffuncsRunStart. Память определена в другом модуле. */
extern Uint16 XintffuncsRunStart; extern Uint16 XintffuncsRunStart;
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // - end of DSP2833x_GLOBALPROTOTYPES_H #endif // - end of DSP2833x_GLOBALPROTOTYPES_H
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание I2c_defines для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $ // TI File $Revision: /main/2 $
// Checkin $Date: April 16, 2008 17:16:47 $ // Checkin $Date: April 16, 2008 17:16:47 $
//########################################################################### //###########################################################################
@@ -12,9 +11,7 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_I2C_DEFINES_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_I2C_DEFINES_H #ifndef DSP2833x_I2C_DEFINES_H
/* Определяет защитный символ или переключатель DSP2833x_I2C_DEFINES_H для последующей компиляции. */
#define DSP2833x_I2C_DEFINES_H #define DSP2833x_I2C_DEFINES_H
//-------------------------------------------- //--------------------------------------------
@@ -22,115 +19,68 @@
//-------------------------------------------- //--------------------------------------------
// Error Messages // Error Messages
/* Задаёт I2C_ERROR = 0xFFFF; 2 C ошибка. */
#define I2C_ERROR 0xFFFF #define I2C_ERROR 0xFFFF
/* Задаёт I2C_ARB_LOST_ERROR = 0x0001; 2 C ARB LOST ошибка. */
#define I2C_ARB_LOST_ERROR 0x0001 #define I2C_ARB_LOST_ERROR 0x0001
/* Задаёт I2C_NACK_ERROR = 0x0002; 2 C NACK ошибка. */
#define I2C_NACK_ERROR 0x0002 #define I2C_NACK_ERROR 0x0002
/* Задаёт I2C_BUS_BUSY_ERROR = 0x1000; 2 C BUS BUSY ошибка. */
#define I2C_BUS_BUSY_ERROR 0x1000 #define I2C_BUS_BUSY_ERROR 0x1000
/* Задаёт I2C_STP_NOT_READY_ERROR = 0x5555; 2 C STP NOT READY ошибка. */
#define I2C_STP_NOT_READY_ERROR 0x5555 #define I2C_STP_NOT_READY_ERROR 0x5555
/* Задаёт I2C_NO_FLAGS = 0xAAAA; 2 C NO флаги. */
#define I2C_NO_FLAGS 0xAAAA #define I2C_NO_FLAGS 0xAAAA
/* Задаёт I2C_SUCCESS = 0x0000; данные I2C_SUCCESS. */
#define I2C_SUCCESS 0x0000 #define I2C_SUCCESS 0x0000
// Clear Status Flags // Clear Status Flags
/* Задаёт I2C_CLR_AL_BIT = 0x0001; 2 C CLR AL бит. */
#define I2C_CLR_AL_BIT 0x0001 #define I2C_CLR_AL_BIT 0x0001
/* Задаёт I2C_CLR_NACK_BIT = 0x0002; 2 C CLR NACK бит. */
#define I2C_CLR_NACK_BIT 0x0002 #define I2C_CLR_NACK_BIT 0x0002
/* Задаёт I2C_CLR_ARDY_BIT = 0x0004; 2 C CLR ARDY бит. */
#define I2C_CLR_ARDY_BIT 0x0004 #define I2C_CLR_ARDY_BIT 0x0004
/* Задаёт I2C_CLR_RRDY_BIT = 0x0008; 2 C CLR RRDY бит. */
#define I2C_CLR_RRDY_BIT 0x0008 #define I2C_CLR_RRDY_BIT 0x0008
/* Задаёт I2C_CLR_SCD_BIT = 0x0020; 2 C CLR SCD бит. */
#define I2C_CLR_SCD_BIT 0x0020 #define I2C_CLR_SCD_BIT 0x0020
// Interrupt Source Messages // Interrupt Source Messages
/* Задаёт I2C_NO_ISRC = 0x0000; данные I2C_NO_ISRC. */
#define I2C_NO_ISRC 0x0000 #define I2C_NO_ISRC 0x0000
/* Задаёт I2C_ARB_ISRC = 0x0001; данные I2C_ARB_ISRC. */
#define I2C_ARB_ISRC 0x0001 #define I2C_ARB_ISRC 0x0001
/* Задаёт I2C_NACK_ISRC = 0x0002; данные I2C_NACK_ISRC. */
#define I2C_NACK_ISRC 0x0002 #define I2C_NACK_ISRC 0x0002
/* Задаёт I2C_ARDY_ISRC = 0x0003; данные I2C_ARDY_ISRC. */
#define I2C_ARDY_ISRC 0x0003 #define I2C_ARDY_ISRC 0x0003
/* Задаёт I2C_RX_ISRC = 0x0004; данные I2C_RX_ISRC. */
#define I2C_RX_ISRC 0x0004 #define I2C_RX_ISRC 0x0004
/* Задаёт I2C_TX_ISRC = 0x0005; данные I2C_TX_ISRC. */
#define I2C_TX_ISRC 0x0005 #define I2C_TX_ISRC 0x0005
/* Задаёт I2C_SCD_ISRC = 0x0006; данные I2C_SCD_ISRC. */
#define I2C_SCD_ISRC 0x0006 #define I2C_SCD_ISRC 0x0006
/* Задаёт I2C_AAS_ISRC = 0x0007; данные I2C_AAS_ISRC. */
#define I2C_AAS_ISRC 0x0007 #define I2C_AAS_ISRC 0x0007
// I2CMSG structure defines // I2CMSG structure defines
/* Задаёт I2C_NO_STOP = 0; данные I2C_NO_STOP. */
#define I2C_NO_STOP 0 #define I2C_NO_STOP 0
/* Задаёт I2C_YES_STOP = 1; данные I2C_YES_STOP. */
#define I2C_YES_STOP 1 #define I2C_YES_STOP 1
/* Задаёт I2C_RECEIVE = 0; 2 C приём. */
#define I2C_RECEIVE 0 #define I2C_RECEIVE 0
/* Задаёт I2C_TRANSMIT = 1; 2 C передача. */
#define I2C_TRANSMIT 1 #define I2C_TRANSMIT 1
/* Задаёт I2C_MAX_BUFFER_SIZE = 16; 2 C MAX буфер размер. */
#define I2C_MAX_BUFFER_SIZE 16 #define I2C_MAX_BUFFER_SIZE 16
// I2C Slave State defines // I2C Slave State defines
/* Задаёт I2C_NOTSLAVE = 0; данные I2C_NOTSLAVE. */
#define I2C_NOTSLAVE 0 #define I2C_NOTSLAVE 0
/* Задаёт I2C_ADDR_AS_SLAVE = 1; данные I2C_ADDR_AS_SLAVE. */
#define I2C_ADDR_AS_SLAVE 1 #define I2C_ADDR_AS_SLAVE 1
/* Задаёт I2C_ST_MSG_READY = 2; данные I2C_ST_MSG_READY. */
#define I2C_ST_MSG_READY 2 #define I2C_ST_MSG_READY 2
// I2C Slave Receiver messages defines // I2C Slave Receiver messages defines
/* Задаёт I2C_SND_MSG1 = 1; данные I2C_SND_MSG1. */
#define I2C_SND_MSG1 1 #define I2C_SND_MSG1 1
/* Задаёт I2C_SND_MSG2 = 2; данные I2C_SND_MSG2. */
#define I2C_SND_MSG2 2 #define I2C_SND_MSG2 2
// I2C State defines // I2C State defines
/* Задаёт I2C_IDLE = 0; данные I2C_IDLE. */
#define I2C_IDLE 0 #define I2C_IDLE 0
/* Задаёт I2C_SLAVE_RECEIVER = 1; данные I2C_SLAVE_RECEIVER. */
#define I2C_SLAVE_RECEIVER 1 #define I2C_SLAVE_RECEIVER 1
/* Задаёт I2C_SLAVE_TRANSMITTER = 2; данные I2C_SLAVE_TRANSMITTER. */
#define I2C_SLAVE_TRANSMITTER 2 #define I2C_SLAVE_TRANSMITTER 2
/* Задаёт I2C_MASTER_RECEIVER = 3; данные I2C_MASTER_RECEIVER. */
#define I2C_MASTER_RECEIVER 3 #define I2C_MASTER_RECEIVER 3
/* Задаёт I2C_MASTER_TRANSMITTER = 4; данные I2C_MASTER_TRANSMITTER. */
#define I2C_MASTER_TRANSMITTER 4 #define I2C_MASTER_TRANSMITTER 4
// I2C Message Commands for I2CMSG struct // I2C Message Commands for I2CMSG struct
/* Задаёт I2C_MSGSTAT_INACTIVE = 0x0000; данные I2C_MSGSTAT_INACTIVE. */
#define I2C_MSGSTAT_INACTIVE 0x0000 #define I2C_MSGSTAT_INACTIVE 0x0000
/* Задаёт I2C_MSGSTAT_SEND_WITHSTOP = 0x0010; данные I2C_MSGSTAT_SEND_WITHSTOP. */
#define I2C_MSGSTAT_SEND_WITHSTOP 0x0010 #define I2C_MSGSTAT_SEND_WITHSTOP 0x0010
/* Задаёт I2C_MSGSTAT_WRITE_BUSY = 0x0011; 2 C MSGSTAT запись BUSY. */
#define I2C_MSGSTAT_WRITE_BUSY 0x0011 #define I2C_MSGSTAT_WRITE_BUSY 0x0011
/* Задаёт I2C_MSGSTAT_SEND_NOSTOP = 0x0020; данные I2C_MSGSTAT_SEND_NOSTOP. */
#define I2C_MSGSTAT_SEND_NOSTOP 0x0020 #define I2C_MSGSTAT_SEND_NOSTOP 0x0020
/* Задаёт I2C_MSGSTAT_SEND_NOSTOP_BUSY = 0x0021; данные I2C_MSGSTAT_SEND_NOSTOP_BUSY. */
#define I2C_MSGSTAT_SEND_NOSTOP_BUSY 0x0021 #define I2C_MSGSTAT_SEND_NOSTOP_BUSY 0x0021
/* Задаёт I2C_MSGSTAT_RESTART = 0x0022; данные I2C_MSGSTAT_RESTART. */
#define I2C_MSGSTAT_RESTART 0x0022 #define I2C_MSGSTAT_RESTART 0x0022
/* Задаёт I2C_MSGSTAT_READ_BUSY = 0x0023; 2 C MSGSTAT чтение BUSY. */
#define I2C_MSGSTAT_READ_BUSY 0x0023 #define I2C_MSGSTAT_READ_BUSY 0x0023
// Generic defines // Generic defines
/* Задаёт I2C_TRUE = 1; данные I2C_TRUE. */
#define I2C_TRUE 1 #define I2C_TRUE 1
/* Задаёт I2C_FALSE = 0; данные I2C_FALSE. */
#define I2C_FALSE 0 #define I2C_FALSE 0
/* Задаёт I2C_YES = 1; данные I2C_YES. */
#define I2C_YES 1 #define I2C_YES 1
/* Задаёт I2C_NO = 0; данные I2C_NO. */
#define I2C_NO 0 #define I2C_NO 0
/* Задаёт I2C_DUMMY_BYTE = 0; данные I2C_DUMMY_BYTE. */
#define I2C_DUMMY_BYTE 0 #define I2C_DUMMY_BYTE 0
@@ -139,9 +89,7 @@
//-------------------------------------------- //--------------------------------------------
// I2C Message Structure // I2C Message Structure
/* Описывает структуру I2CMSG; порядок полей определяет расположение данных. */
struct I2CMSG { struct I2CMSG {
/* Объявляет MsgStatus — Msg состояние. */
Uint16 MsgStatus; // Word stating what state msg is in: Uint16 MsgStatus; // Word stating what state msg is in:
// I2C_MSGCMD_INACTIVE = do not send msg // I2C_MSGCMD_INACTIVE = do not send msg
// I2C_MSGCMD_BUSY = msg start has been sent, // I2C_MSGCMD_BUSY = msg start has been sent,
@@ -152,23 +100,16 @@ struct I2CMSG {
// master trans msg without the stop bit // master trans msg without the stop bit
// I2C_MSGCMD_RESTART = command to send a restart // I2C_MSGCMD_RESTART = command to send a restart
// as a master receiver with a stop bit // as a master receiver with a stop bit
/* Объявляет SlaveAddress — Slave адрес. */
Uint16 SlaveAddress; // I2C address of slave msg is intended for 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) 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) Uint16 MemoryHighAddr; // EEPROM address of data associated with msg (high byte)
/* Объявляет MemoryLowAddr — данные MemoryLowAddr. */
Uint16 MemoryLowAddr; // EEPROM address of data associated with msg (low byte) 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 Uint16 MsgBuffer[I2C_MAX_BUFFER_SIZE]; // Array holding msg data - max that
// MAX_BUFFER_SIZE can be is 16 due to // MAX_BUFFER_SIZE can be is 16 due to
// the FIFO's // the FIFO's
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_I2C_DEFINES_H definition #endif // end of DSP2833x_I2C_DEFINES_H definition
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Настройки и интерфейс DSP28x_Project. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $ // TI File $Revision: /main/1 $
// Checkin $Date: April 22, 2008 14:35:56 $ // Checkin $Date: April 22, 2008 14:35:56 $
@@ -13,16 +12,11 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP28x_PROJECT_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP28x_PROJECT_H #ifndef DSP28x_PROJECT_H
/* Определяет защитный символ или переключатель DSP28x_PROJECT_H для последующей компиляции. */
#define DSP28x_PROJECT_H #define DSP28x_PROJECT_H
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP28x_PROJECT_H definition #endif // end of DSP28x_PROJECT_H definition

View File

@@ -1,4 +1,3 @@
; Поставляемое ti описание adc_cal для семейства c2833x. Пояснения в UTF-8.
;; TI File $Revision: /main/1 $ ;; TI File $Revision: /main/1 $
;; Checkin $Date: July 30, 2007 10:29:23 $ ;; Checkin $Date: July 30, 2007 10:29:23 $
;;########################################################################### ;;###########################################################################
@@ -9,7 +8,7 @@
;; ;;
;; Functions: ;; 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: ;; Notes:
;; ;;
;;########################################################################### ;;###########################################################################
@@ -17,35 +16,27 @@
;; $Release Date: August 1, 2008 $ ;; $Release Date: August 1, 2008 $
;;########################################################################### ;;###########################################################################
; Экспортирует символ для связывания с C-кодом. Операция: .def _ADC_cal.
.def _ADC_cal .def _ADC_cal
; Задаёт текстовый псевдоним константы для ассемблера. Операция: .asg "0x711C", ADCREFSEL_LOC.
.asg "0x711C", ADCREFSEL_LOC .asg "0x711C", ADCREFSEL_LOC
;----------------------------------------------- ;-----------------------------------------------
; _ADC_cal ; _ADC_cal
;----------------------------------------------- ;-----------------------------------------------
;----------------------------------------------- ;-----------------------------------------------
; This is the ADC cal routine.This routine is programmed into ; This is the ADC cal routine.This routine is programmed into
; reserved memory by the factory. 0xAAAA and 0xBBBB are place- ; reserved memory by the factory. 0xAAAA and 0xBBBB are place-
; holders for calibration data. ; holders for calibration data.
;The actual values programmed by TI are device specific. ;The actual values programmed by TI are device specific.
; ;
; This function assumes that the clocks have been ; This function assumes that the clocks have been
; enabled to the ADC module. ; enabled to the ADC module.
;----------------------------------------------- ;-----------------------------------------------
; Выбирает секцию объектного файла для следующих инструкций. Операция: .sect ".adc_cal".
.sect ".adc_cal" .sect ".adc_cal"
; Объявляет метку _ADC_cal для перехода или вызова. Операция: _ADC_cal.
_ADC_cal _ADC_cal
; Загружает регистр страниц данных DP для доступа к указанной области. Операция: MOVW DP, #ADCREFSEL_LOC >> 6.
MOVW DP, #ADCREFSEL_LOC >> 6 MOVW DP, #ADCREFSEL_LOC >> 6
; Переносит операнд в регистр или ячейку назначения. Операция: MOV @28, #0xAAAA.
MOV @28, #0xAAAA ; actual value may not be 0xAAAA MOV @28, #0xAAAA ; actual value may not be 0xAAAA
; Переносит операнд в регистр или ячейку назначения. Операция: MOV @29, #0xBBBB.
MOV @29, #0xBBBB ; actual value may not be 0xBBBB MOV @29, #0xBBBB ; actual value may not be 0xBBBB
; Возвращает управление вызывающему коду через длинный адрес возврата. Операция: LRETR.
LRETR LRETR
;eof ---------- ;eof ----------

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Adc для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $ // TI File $Revision: /main/5 $
// Checkin $Date: October 23, 2007 13:34:09 $ // Checkin $Date: October 23, 2007 13:34:09 $
//########################################################################### //###########################################################################
@@ -12,12 +11,9 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
/* Задаёт ADC_usDELAY = 5000L; АЦП us DELAY. */
#define ADC_usDELAY 5000L #define ADC_usDELAY 5000L
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -25,11 +21,8 @@
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// This function initializes ADC to a known state. // This function initializes ADC to a known state.
// //
/* Начинает функцию InitAdc; назначение модуля — поставляемое TI описание Adc для семейства C2833x. */
void InitAdc(void) void InitAdc(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Объявляет интерфейс функции DSP28x_usDelay; реализация вызывается через этот прототип. */
extern void DSP28x_usDelay(Uint32 Count); extern void DSP28x_usDelay(Uint32 Count);
@@ -43,13 +36,9 @@ void InitAdc(void)
// See the device data manual and/or the ADC Reference // See the device data manual and/or the ADC Reference
// Manual for more information. // Manual for more information.
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает SysCtrlRegs.PCLKCR0.bit.ADCENCLK значением 1; данные ADCENCLK. */
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
/* Вызывает ADC_cal с аргументами () в текущей последовательности операций. */
ADC_cal(); ADC_cal();
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
@@ -64,14 +53,10 @@ void InitAdc(void)
// CPU_RATE define statement in the DSP2833x_Examples.h file must // CPU_RATE define statement in the DSP2833x_Examples.h file must
// contain the correct CPU clock period in nanoseconds. // contain the correct CPU clock period in nanoseconds.
/* Записывает AdcRegs.ADCREFSEL.bit.REF_SEL значением 0x01; данные REF_SEL. */
AdcRegs.ADCREFSEL.bit.REF_SEL = 0x01; AdcRegs.ADCREFSEL.bit.REF_SEL = 0x01;
/* Записывает AdcRegs.ADCTRL3.all значением 0x00E0; представление регистра целым словом без разбиения на битовые поля. */
AdcRegs.ADCTRL3.all = 0x00E0; // Power up bandgap/reference/ADC circuits AdcRegs.ADCTRL3.all = 0x00E0; // Power up bandgap/reference/ADC circuits
/* Вызывает DELAY_US с аргументами (ADC_usDELAY) в текущей последовательности операций. */
DELAY_US(ADC_usDELAY); // Delay before converting ADC channels DELAY_US(ADC_usDELAY); // Delay before converting ADC channels
//pause_us(50L); //pause_us(50L);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание CpuTimers для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/3 $ // TI File $Revision: /main/3 $
// Checkin $Date: March 16, 2007 08:37:30 $ // Checkin $Date: March 16, 2007 08:37:30 $
//########################################################################### //###########################################################################
@@ -19,18 +18,13 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // Headerfile Include File #include "DSP2833x_Device.h" // Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // Examples Include File #include "DSP2833x_Examples.h" // Examples Include File
/* Описывает структуру CPUTIMER_VARS CpuTimer0;; порядок полей определяет расположение данных. */
struct 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 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; struct CPUTIMER_VARS CpuTimer1;
/* Описывает структуру CPUTIMER_VARS CpuTimer2;; порядок полей определяет расположение данных. */
struct 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. // This function initializes all three CPU timers to a known state.
// //
/* Начинает функцию InitCpuTimers; назначение модуля — поставляемое TI описание CpuTimers для семейства C2833x. */
void InitCpuTimers(void) void InitCpuTimers(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// CPU Timer 0 // CPU Timer 0
// Initialize address pointers to respective timer registers: // Initialize address pointers to respective timer registers:
/* Записывает CpuTimer0.RegsAddr значением &CpuTimer0Regs; данные RegsAddr. */
CpuTimer0.RegsAddr = &CpuTimer0Regs; CpuTimer0.RegsAddr = &CpuTimer0Regs;
// Initialize timer period to maximum: // Initialize timer period to maximum:
/* Записывает CpuTimer0Regs.PRD.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer0Regs.PRD.all = 0xFFFFFFFF; CpuTimer0Regs.PRD.all = 0xFFFFFFFF;
// Initialize pre-scale counter to divide by 1 (SYSCLKOUT): // Initialize pre-scale counter to divide by 1 (SYSCLKOUT):
/* Записывает CpuTimer0Regs.TPR.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer0Regs.TPR.all = 0; CpuTimer0Regs.TPR.all = 0;
/* Записывает CpuTimer0Regs.TPRH.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer0Regs.TPRH.all = 0; CpuTimer0Regs.TPRH.all = 0;
// Make sure timer is stopped: // Make sure timer is stopped:
/* Записывает CpuTimer0Regs.TCR.bit.TSS значением 1; данные TSS. */
CpuTimer0Regs.TCR.bit.TSS = 1; CpuTimer0Regs.TCR.bit.TSS = 1;
// Reload all counter register with period value: // Reload all counter register with period value:
/* Записывает CpuTimer0Regs.TCR.bit.TRB значением 1; данные TRB. */
CpuTimer0Regs.TCR.bit.TRB = 1; CpuTimer0Regs.TCR.bit.TRB = 1;
// Reset interrupt counters: // Reset interrupt counters:
/* Записывает CpuTimer0.InterruptCount значением 0; прерывание число. */
CpuTimer0.InterruptCount = 0; CpuTimer0.InterruptCount = 0;
@@ -70,41 +55,26 @@ void InitCpuTimers(void)
// DSP-BIOS or another realtime OS. // DSP-BIOS or another realtime OS.
// //
// Initialize address pointers to respective timer registers: // Initialize address pointers to respective timer registers:
/* Записывает CpuTimer1.RegsAddr значением &CpuTimer1Regs; данные RegsAddr. */
CpuTimer1.RegsAddr = &CpuTimer1Regs; CpuTimer1.RegsAddr = &CpuTimer1Regs;
/* Записывает CpuTimer2.RegsAddr значением &CpuTimer2Regs; данные RegsAddr. */
CpuTimer2.RegsAddr = &CpuTimer2Regs; CpuTimer2.RegsAddr = &CpuTimer2Regs;
// Initialize timer period to maximum: // Initialize timer period to maximum:
/* Записывает CpuTimer1Regs.PRD.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer1Regs.PRD.all = 0xFFFFFFFF; CpuTimer1Regs.PRD.all = 0xFFFFFFFF;
/* Записывает CpuTimer2Regs.PRD.all значением 0xFFFFFFFF; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.PRD.all = 0xFFFFFFFF; CpuTimer2Regs.PRD.all = 0xFFFFFFFF;
// Initialize pre-scale counter to divide by 1 (SYSCLKOUT): // Initialize pre-scale counter to divide by 1 (SYSCLKOUT):
/* Записывает CpuTimer1Regs.TPR.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer1Regs.TPR.all = 0; CpuTimer1Regs.TPR.all = 0;
/* Записывает CpuTimer1Regs.TPRH.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer1Regs.TPRH.all = 0; CpuTimer1Regs.TPRH.all = 0;
/* Записывает CpuTimer2Regs.TPR.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.TPR.all = 0; CpuTimer2Regs.TPR.all = 0;
/* Записывает CpuTimer2Regs.TPRH.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
CpuTimer2Regs.TPRH.all = 0; CpuTimer2Regs.TPRH.all = 0;
// Make sure timers are stopped: // Make sure timers are stopped:
/* Записывает CpuTimer1Regs.TCR.bit.TSS значением 1; данные TSS. */
CpuTimer1Regs.TCR.bit.TSS = 1; CpuTimer1Regs.TCR.bit.TSS = 1;
/* Записывает CpuTimer2Regs.TCR.bit.TSS значением 1; данные TSS. */
CpuTimer2Regs.TCR.bit.TSS = 1; CpuTimer2Regs.TCR.bit.TSS = 1;
// Reload all counter register with period value: // Reload all counter register with period value:
/* Записывает CpuTimer1Regs.TCR.bit.TRB значением 1; данные TRB. */
CpuTimer1Regs.TCR.bit.TRB = 1; CpuTimer1Regs.TCR.bit.TRB = 1;
/* Записывает CpuTimer2Regs.TCR.bit.TRB значением 1; данные TRB. */
CpuTimer2Regs.TCR.bit.TRB = 1; CpuTimer2Regs.TCR.bit.TRB = 1;
// Reset interrupt counters: // Reset interrupt counters:
/* Записывает CpuTimer1.InterruptCount значением 0; прерывание число. */
CpuTimer1.InterruptCount = 0; CpuTimer1.InterruptCount = 0;
/* Записывает CpuTimer2.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 // and the period in "uSeconds". The timer is held in the stopped state
// after configuration. // after configuration.
// //
/* Начинает функцию ConfigCpuTimer; назначение модуля — поставляемое TI описание CpuTimers для семейства C2833x. */
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period) void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Объявляет temp — данные temp. */
Uint32 temp; Uint32 temp;
// Initialize timer period: // Initialize timer period:
/* Записывает Timer->CPUFreqInMHz значением Freq; таймер CPU Freq In M Hz. */
Timer->CPUFreqInMHz = Freq; Timer->CPUFreqInMHz = Freq;
/* Записывает Timer->PeriodInUSec значением Period; таймер период In U Sec. */
Timer->PeriodInUSec = Period; Timer->PeriodInUSec = Period;
/* Записывает temp значением (long) (Freq * Period); данные temp. */
temp = (long) (Freq * Period); temp = (long) (Freq * Period);
/* Записывает Timer->RegsAddr->PRD.all значением temp; представление регистра целым словом без разбиения на битовые поля. */
Timer->RegsAddr->PRD.all = temp; Timer->RegsAddr->PRD.all = temp;
// Set pre-scale counter to divide by 1 (SYSCLKOUT): // Set pre-scale counter to divide by 1 (SYSCLKOUT):
/* Записывает Timer->RegsAddr->TPR.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
Timer->RegsAddr->TPR.all = 0; Timer->RegsAddr->TPR.all = 0;
/* Записывает Timer->RegsAddr->TPRH.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
Timer->RegsAddr->TPRH.all = 0; Timer->RegsAddr->TPRH.all = 0;
// Initialize timer control register: // 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.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.TRB = 1; // 1 = reload timer
/* Записывает Timer->RegsAddr->TCR.bit.SOFT значением 0; данные SOFT. */
Timer->RegsAddr->TCR.bit.SOFT = 0; 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.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 Timer->RegsAddr->TCR.bit.TIE = 1; // 0 = Disable/ 1 = Enable Timer Interrupt
// Reset interrupt counter: // Reset interrupt counter:
/* Записывает Timer->InterruptCount значением 0; таймер прерывание число. */
Timer->InterruptCount = 0; Timer->InterruptCount = 0;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание PieCtrl для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $ // TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:46:35 $ // Checkin $Date: August 18, 2006 13:46:35 $
//########################################################################### //###########################################################################
@@ -12,107 +11,70 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// InitPieCtrl: // InitPieCtrl:
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// This function initializes the PIE control registers to a known state. // This function initializes the PIE control registers to a known state.
// //
/* Начинает функцию InitPieCtrl; назначение модуля — поставляемое TI описание PieCtrl для семейства C2833x. */
void InitPieCtrl(void) void InitPieCtrl(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Disable Interrupts at the CPU level: // Disable Interrupts at the CPU level:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
// Disable the PIE // Disable the PIE
/* Записывает PieCtrlRegs.PIECTRL.bit.ENPIE значением 0; данные ENPIE. */
PieCtrlRegs.PIECTRL.bit.ENPIE = 0; PieCtrlRegs.PIECTRL.bit.ENPIE = 0;
// Clear all PIEIER registers: // Clear all PIEIER registers:
/* Записывает PieCtrlRegs.PIEIER1.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = 0; PieCtrlRegs.PIEIER1.all = 0;
/* Записывает PieCtrlRegs.PIEIER2.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = 0; PieCtrlRegs.PIEIER2.all = 0;
/* Записывает PieCtrlRegs.PIEIER3.all значением 0; представление регистра целым словом без разбиения на битовые поля. */ PieCtrlRegs.PIEIER3.all = 0;
PieCtrlRegs.PIEIER3.all = 0;
/* Записывает PieCtrlRegs.PIEIER4.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = 0; PieCtrlRegs.PIEIER4.all = 0;
/* Записывает PieCtrlRegs.PIEIER5.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all = 0; PieCtrlRegs.PIEIER5.all = 0;
/* Записывает PieCtrlRegs.PIEIER6.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = 0; PieCtrlRegs.PIEIER6.all = 0;
/* Записывает PieCtrlRegs.PIEIER7.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = 0; PieCtrlRegs.PIEIER7.all = 0;
/* Записывает PieCtrlRegs.PIEIER8.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = 0; PieCtrlRegs.PIEIER8.all = 0;
/* Записывает PieCtrlRegs.PIEIER9.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = 0; PieCtrlRegs.PIEIER9.all = 0;
/* Записывает PieCtrlRegs.PIEIER10.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER10.all = 0; PieCtrlRegs.PIEIER10.all = 0;
/* Записывает PieCtrlRegs.PIEIER11.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER11.all = 0; PieCtrlRegs.PIEIER11.all = 0;
/* Записывает PieCtrlRegs.PIEIER12.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = 0; PieCtrlRegs.PIEIER12.all = 0;
// Clear all PIEIFR registers: // Clear all PIEIFR registers:
/* Записывает PieCtrlRegs.PIEIFR1.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR1.all = 0; PieCtrlRegs.PIEIFR1.all = 0;
/* Записывает PieCtrlRegs.PIEIFR2.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR2.all = 0; PieCtrlRegs.PIEIFR2.all = 0;
/* Записывает PieCtrlRegs.PIEIFR3.all значением 0; представление регистра целым словом без разбиения на битовые поля. */ PieCtrlRegs.PIEIFR3.all = 0;
PieCtrlRegs.PIEIFR3.all = 0;
/* Записывает PieCtrlRegs.PIEIFR4.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR4.all = 0; PieCtrlRegs.PIEIFR4.all = 0;
/* Записывает PieCtrlRegs.PIEIFR5.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR5.all = 0; PieCtrlRegs.PIEIFR5.all = 0;
/* Записывает PieCtrlRegs.PIEIFR6.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR6.all = 0; PieCtrlRegs.PIEIFR6.all = 0;
/* Записывает PieCtrlRegs.PIEIFR7.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR7.all = 0; PieCtrlRegs.PIEIFR7.all = 0;
/* Записывает PieCtrlRegs.PIEIFR8.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR8.all = 0; PieCtrlRegs.PIEIFR8.all = 0;
/* Записывает PieCtrlRegs.PIEIFR9.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR9.all = 0; PieCtrlRegs.PIEIFR9.all = 0;
/* Записывает PieCtrlRegs.PIEIFR10.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR10.all = 0; PieCtrlRegs.PIEIFR10.all = 0;
/* Записывает PieCtrlRegs.PIEIFR11.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR11.all = 0; PieCtrlRegs.PIEIFR11.all = 0;
/* Записывает PieCtrlRegs.PIEIFR12.all значением 0; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIFR12.all = 0; PieCtrlRegs.PIEIFR12.all = 0;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ }
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// EnableInterrupts: // EnableInterrupts:
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// This function enables the PIE module and CPU interrupts // This function enables the PIE module and CPU interrupts
// //
/* Начинает функцию EnableInterrupts; назначение модуля — поставляемое TI описание PieCtrl для семейства C2833x. */
void EnableInterrupts() void EnableInterrupts()
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Enable the PIE // Enable the PIE
/* Записывает PieCtrlRegs.PIECTRL.bit.ENPIE значением 1; данные ENPIE. */
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; 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 // Enable Interrupts at the CPU level
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF;
// Enable Interrupts at the CPU level
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание PieVect для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $ // TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:46:38 $ // Checkin $Date: August 18, 2006 13:46:38 $
//########################################################################### //###########################################################################
@@ -12,335 +11,192 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
/* Записывает PieVectTableInit значением {; данные PieVectTableInit. */
const struct PIE_VECT_TABLE PieVectTableInit = { const struct PIE_VECT_TABLE PieVectTableInit = {
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // 0 Reserved space PIE_RESERVED, // 0 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */ PIE_RESERVED, // 1 Reserved space
PIE_RESERVED, // 1 Reserved space PIE_RESERVED, // 2 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */ PIE_RESERVED, // 3 Reserved space
PIE_RESERVED, // 2 Reserved space PIE_RESERVED, // 4 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */ PIE_RESERVED, // 5 Reserved space
PIE_RESERVED, // 3 Reserved space PIE_RESERVED, // 6 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */ PIE_RESERVED, // 7 Reserved space
PIE_RESERVED, // 4 Reserved space PIE_RESERVED, // 8 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */ PIE_RESERVED, // 9 Reserved space
PIE_RESERVED, // 5 Reserved space PIE_RESERVED, // 10 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */ PIE_RESERVED, // 11 Reserved space
PIE_RESERVED, // 6 Reserved space PIE_RESERVED, // 12 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // 7 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // 8 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // 9 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // 10 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // 11 Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // 12 Reserved space
// Non-Peripheral Interrupts // Non-Peripheral Interrupts
/* Продолжает список аргументов, полей или выражение INT13_ISR,; порядок элементов сохраняется. */
INT13_ISR, // XINT13 or CPU-Timer 1 INT13_ISR, // XINT13 or CPU-Timer 1
/* Продолжает список аргументов, полей или выражение INT14_ISR,; порядок элементов сохраняется. */
INT14_ISR, // CPU-Timer2 INT14_ISR, // CPU-Timer2
/* Продолжает список аргументов, полей или выражение DATALOG_ISR,; порядок элементов сохраняется. */
DATALOG_ISR, // Datalogging interrupt DATALOG_ISR, // Datalogging interrupt
/* Продолжает список аргументов, полей или выражение RTOSINT_ISR,; порядок элементов сохраняется. */
RTOSINT_ISR, // RTOS interrupt RTOSINT_ISR, // RTOS interrupt
/* Продолжает список аргументов, полей или выражение EMUINT_ISR,; порядок элементов сохраняется. */
EMUINT_ISR, // Emulation interrupt EMUINT_ISR, // Emulation interrupt
/* Продолжает список аргументов, полей или выражение NMI_ISR,; порядок элементов сохраняется. */
NMI_ISR, // Non-maskable interrupt NMI_ISR, // Non-maskable interrupt
/* Продолжает список аргументов, полей или выражение ILLEGAL_ISR,; порядок элементов сохраняется. */
ILLEGAL_ISR, // Illegal operation TRAP ILLEGAL_ISR, // Illegal operation TRAP
/* Продолжает список аргументов, полей или выражение USER1_ISR,; порядок элементов сохраняется. */
USER1_ISR, // User Defined trap 1 USER1_ISR, // User Defined trap 1
/* Продолжает список аргументов, полей или выражение USER2_ISR,; порядок элементов сохраняется. */
USER2_ISR, // User Defined trap 2 USER2_ISR, // User Defined trap 2
/* Продолжает список аргументов, полей или выражение USER3_ISR,; порядок элементов сохраняется. */
USER3_ISR, // User Defined trap 3 USER3_ISR, // User Defined trap 3
/* Продолжает список аргументов, полей или выражение USER4_ISR,; порядок элементов сохраняется. */
USER4_ISR, // User Defined trap 4 USER4_ISR, // User Defined trap 4
/* Продолжает список аргументов, полей или выражение USER5_ISR,; порядок элементов сохраняется. */
USER5_ISR, // User Defined trap 5 USER5_ISR, // User Defined trap 5
/* Продолжает список аргументов, полей или выражение USER6_ISR,; порядок элементов сохраняется. */
USER6_ISR, // User Defined trap 6 USER6_ISR, // User Defined trap 6
/* Продолжает список аргументов, полей или выражение USER7_ISR,; порядок элементов сохраняется. */
USER7_ISR, // User Defined trap 7 USER7_ISR, // User Defined trap 7
/* Продолжает список аргументов, полей или выражение USER8_ISR,; порядок элементов сохраняется. */
USER8_ISR, // User Defined trap 8 USER8_ISR, // User Defined trap 8
/* Продолжает список аргументов, полей или выражение USER9_ISR,; порядок элементов сохраняется. */
USER9_ISR, // User Defined trap 9 USER9_ISR, // User Defined trap 9
/* Продолжает список аргументов, полей или выражение USER10_ISR,; порядок элементов сохраняется. */
USER10_ISR, // User Defined trap 10 USER10_ISR, // User Defined trap 10
/* Продолжает список аргументов, полей или выражение USER11_ISR,; порядок элементов сохраняется. */
USER11_ISR, // User Defined trap 11 USER11_ISR, // User Defined trap 11
/* Продолжает список аргументов, полей или выражение USER12_ISR,; порядок элементов сохраняется. */
USER12_ISR, // User Defined trap 12 USER12_ISR, // User Defined trap 12
// Group 1 PIE Vectors // Group 1 PIE Vectors
/* Продолжает список аргументов, полей или выражение SEQ1INT_ISR,; порядок элементов сохраняется. */ SEQ1INT_ISR, // 1.1 ADC
SEQ1INT_ISR, // 1.1 ADC SEQ2INT_ISR, // 1.2 ADC
/* Продолжает список аргументов, полей или выражение SEQ2INT_ISR,; порядок элементов сохраняется. */
SEQ2INT_ISR, // 1.2 ADC
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 1.3 rsvd_ISR, // 1.3
/* Продолжает список аргументов, полей или выражение XINT1_ISR,; порядок элементов сохраняется. */ XINT1_ISR, // 1.4
XINT1_ISR, // 1.4
/* Продолжает список аргументов, полей или выражение XINT2_ISR,; порядок элементов сохраняется. */
XINT2_ISR, // 1.5 XINT2_ISR, // 1.5
/* Продолжает список аргументов, полей или выражение ADCINT_ISR,; порядок элементов сохраняется. */
ADCINT_ISR, // 1.6 ADC ADCINT_ISR, // 1.6 ADC
/* Продолжает список аргументов, полей или выражение TINT0_ISR,; порядок элементов сохраняется. */
TINT0_ISR, // 1.7 Timer 0 TINT0_ISR, // 1.7 Timer 0
/* Продолжает список аргументов, полей или выражение WAKEINT_ISR,; порядок элементов сохраняется. */
WAKEINT_ISR, // 1.8 WD, Low Power WAKEINT_ISR, // 1.8 WD, Low Power
// Group 2 PIE Vectors // Group 2 PIE Vectors
/* Продолжает список аргументов, полей или выражение EPWM1_TZINT_ISR,; порядок элементов сохраняется. */
EPWM1_TZINT_ISR, // 2.1 EPWM-1 Trip Zone EPWM1_TZINT_ISR, // 2.1 EPWM-1 Trip Zone
/* Продолжает список аргументов, полей или выражение EPWM2_TZINT_ISR,; порядок элементов сохраняется. */
EPWM2_TZINT_ISR, // 2.2 EPWM-2 Trip Zone EPWM2_TZINT_ISR, // 2.2 EPWM-2 Trip Zone
/* Продолжает список аргументов, полей или выражение EPWM3_TZINT_ISR,; порядок элементов сохраняется. */
EPWM3_TZINT_ISR, // 2.3 EPWM-3 Trip Zone EPWM3_TZINT_ISR, // 2.3 EPWM-3 Trip Zone
/* Продолжает список аргументов, полей или выражение EPWM4_TZINT_ISR,; порядок элементов сохраняется. */
EPWM4_TZINT_ISR, // 2.4 EPWM-4 Trip Zone EPWM4_TZINT_ISR, // 2.4 EPWM-4 Trip Zone
/* Продолжает список аргументов, полей или выражение EPWM5_TZINT_ISR,; порядок элементов сохраняется. */
EPWM5_TZINT_ISR, // 2.5 EPWM-5 Trip Zone EPWM5_TZINT_ISR, // 2.5 EPWM-5 Trip Zone
/* Продолжает список аргументов, полей или выражение EPWM6_TZINT_ISR,; порядок элементов сохраняется. */ EPWM6_TZINT_ISR, // 2.6 EPWM-6 Trip Zone
EPWM6_TZINT_ISR, // 2.6 EPWM-6 Trip Zone
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 2.7 rsvd_ISR, // 2.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 2.8 rsvd_ISR, // 2.8
// Group 3 PIE Vectors // Group 3 PIE Vectors
/* Продолжает список аргументов, полей или выражение EPWM1_INT_ISR,; порядок элементов сохраняется. */
EPWM1_INT_ISR, // 3.1 EPWM-1 Interrupt EPWM1_INT_ISR, // 3.1 EPWM-1 Interrupt
/* Продолжает список аргументов, полей или выражение EPWM2_INT_ISR,; порядок элементов сохраняется. */
EPWM2_INT_ISR, // 3.2 EPWM-2 Interrupt EPWM2_INT_ISR, // 3.2 EPWM-2 Interrupt
/* Продолжает список аргументов, полей или выражение EPWM3_INT_ISR,; порядок элементов сохраняется. */
EPWM3_INT_ISR, // 3.3 EPWM-3 Interrupt EPWM3_INT_ISR, // 3.3 EPWM-3 Interrupt
/* Продолжает список аргументов, полей или выражение EPWM4_INT_ISR,; порядок элементов сохраняется. */
EPWM4_INT_ISR, // 3.4 EPWM-4 Interrupt EPWM4_INT_ISR, // 3.4 EPWM-4 Interrupt
/* Продолжает список аргументов, полей или выражение EPWM5_INT_ISR,; порядок элементов сохраняется. */
EPWM5_INT_ISR, // 3.5 EPWM-5 Interrupt EPWM5_INT_ISR, // 3.5 EPWM-5 Interrupt
/* Продолжает список аргументов, полей или выражение EPWM6_INT_ISR,; порядок элементов сохраняется. */ EPWM6_INT_ISR, // 3.6 EPWM-6 Interrupt
EPWM6_INT_ISR, // 3.6 EPWM-6 Interrupt
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 3.7 rsvd_ISR, // 3.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 3.8 rsvd_ISR, // 3.8
// Group 4 PIE Vectors // Group 4 PIE Vectors
/* Продолжает список аргументов, полей или выражение ECAP1_INT_ISR,; порядок элементов сохраняется. */
ECAP1_INT_ISR, // 4.1 ECAP-1 ECAP1_INT_ISR, // 4.1 ECAP-1
/* Продолжает список аргументов, полей или выражение ECAP2_INT_ISR,; порядок элементов сохраняется. */
ECAP2_INT_ISR, // 4.2 ECAP-2 ECAP2_INT_ISR, // 4.2 ECAP-2
/* Продолжает список аргументов, полей или выражение ECAP3_INT_ISR,; порядок элементов сохраняется. */
ECAP3_INT_ISR, // 4.3 ECAP-3 ECAP3_INT_ISR, // 4.3 ECAP-3
/* Продолжает список аргументов, полей или выражение ECAP4_INT_ISR,; порядок элементов сохраняется. */ ECAP4_INT_ISR, // 4.4 ECAP-4
ECAP4_INT_ISR, // 4.4 ECAP-4 ECAP5_INT_ISR, // 4.5 ECAP-5
/* Продолжает список аргументов, полей или выражение ECAP5_INT_ISR,; порядок элементов сохраняется. */ ECAP6_INT_ISR, // 4.6 ECAP-6
ECAP5_INT_ISR, // 4.5 ECAP-5 rsvd_ISR, // 4.7
/* Продолжает список аргументов, полей или выражение ECAP6_INT_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 4.8
ECAP6_INT_ISR, // 4.6 ECAP-6
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 4.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 4.8
// Group 5 PIE Vectors // Group 5 PIE Vectors
/* Продолжает список аргументов, полей или выражение EQEP1_INT_ISR,; порядок элементов сохраняется. */
EQEP1_INT_ISR, // 5.1 EQEP-1 EQEP1_INT_ISR, // 5.1 EQEP-1
/* Продолжает список аргументов, полей или выражение EQEP2_INT_ISR,; порядок элементов сохраняется. */
EQEP2_INT_ISR, // 5.2 EQEP-2 EQEP2_INT_ISR, // 5.2 EQEP-2
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 5.3
rsvd_ISR, // 5.3 rsvd_ISR, // 5.4
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 5.5
rsvd_ISR, // 5.4 rsvd_ISR, // 5.6
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 5.7
rsvd_ISR, // 5.5 rsvd_ISR, // 5.8
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 5.6
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 5.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 5.8
// Group 6 PIE Vectors // Group 6 PIE Vectors
/* Продолжает список аргументов, полей или выражение SPIRXINTA_ISR,; порядок элементов сохраняется. */
SPIRXINTA_ISR, // 6.1 SPI-A SPIRXINTA_ISR, // 6.1 SPI-A
/* Продолжает список аргументов, полей или выражение SPITXINTA_ISR,; порядок элементов сохраняется. */
SPITXINTA_ISR, // 6.2 SPI-A SPITXINTA_ISR, // 6.2 SPI-A
/* Продолжает список аргументов, полей или выражение MRINTA_ISR,; порядок элементов сохраняется. */
MRINTA_ISR, // 6.3 McBSP-A MRINTA_ISR, // 6.3 McBSP-A
/* Продолжает список аргументов, полей или выражение MXINTA_ISR,; порядок элементов сохраняется. */
MXINTA_ISR, // 6.4 McBSP-A MXINTA_ISR, // 6.4 McBSP-A
/* Продолжает список аргументов, полей или выражение MRINTB_ISR,; порядок элементов сохраняется. */
MRINTB_ISR, // 6.5 McBSP-B MRINTB_ISR, // 6.5 McBSP-B
/* Продолжает список аргументов, полей или выражение MXINTB_ISR,; порядок элементов сохраняется. */
MXINTB_ISR, // 6.6 McBSP-B MXINTB_ISR, // 6.6 McBSP-B
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 6.7
rsvd_ISR, // 6.7 rsvd_ISR, // 6.8
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 6.8
// Group 7 PIE Vectors // Group 7 PIE Vectors
/* Продолжает список аргументов, полей или выражение DINTCH1_ISR,; порядок элементов сохраняется. */ DINTCH1_ISR, // 7.1 DMA channel 1
DINTCH1_ISR, // 7.1 DMA channel 1
/* Продолжает список аргументов, полей или выражение DINTCH2_ISR,; порядок элементов сохраняется. */
DINTCH2_ISR, // 7.2 DMA channel 2 DINTCH2_ISR, // 7.2 DMA channel 2
/* Продолжает список аргументов, полей или выражение DINTCH3_ISR,; порядок элементов сохраняется. */ DINTCH3_ISR, // 7.3 DMA channel 3
DINTCH3_ISR, // 7.3 DMA channel 3 DINTCH4_ISR, // 7.4 DMA channel 4
/* Продолжает список аргументов, полей или выражение DINTCH4_ISR,; порядок элементов сохраняется. */ DINTCH5_ISR, // 7.5 DMA channel 5
DINTCH4_ISR, // 7.4 DMA channel 4 DINTCH6_ISR, // 7.6 DMA channel 6
/* Продолжает список аргументов, полей или выражение DINTCH5_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 7.7
DINTCH5_ISR, // 7.5 DMA channel 5 rsvd_ISR, // 7.8
/* Продолжает список аргументов, полей или выражение DINTCH6_ISR,; порядок элементов сохраняется. */
DINTCH6_ISR, // 7.6 DMA channel 6
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 7.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 7.8
// Group 8 PIE Vectors // Group 8 PIE Vectors
/* Продолжает список аргументов, полей или выражение I2CINT1A_ISR,; порядок элементов сохраняется. */ I2CINT1A_ISR, // 8.1 I2C
I2CINT1A_ISR, // 8.1 I2C
/* Продолжает список аргументов, полей или выражение I2CINT2A_ISR,; порядок элементов сохраняется. */
I2CINT2A_ISR, // 8.2 I2C I2CINT2A_ISR, // 8.2 I2C
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 8.3
rsvd_ISR, // 8.3 rsvd_ISR, // 8.4
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 8.4
/* Продолжает список аргументов, полей или выражение SCIRXINTC_ISR,; порядок элементов сохраняется. */
SCIRXINTC_ISR, // 8.5 SCI-C SCIRXINTC_ISR, // 8.5 SCI-C
/* Продолжает список аргументов, полей или выражение SCITXINTC_ISR,; порядок элементов сохраняется. */ SCITXINTC_ISR, // 8.6 SCI-C
SCITXINTC_ISR, // 8.6 SCI-C rsvd_ISR, // 8.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 8.8
rsvd_ISR, // 8.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ // Group 9 PIE Vectors
rsvd_ISR, // 8.8
// Group 9 PIE Vectors
/* Продолжает список аргументов, полей или выражение SCIRXINTA_ISR,; порядок элементов сохраняется. */
SCIRXINTA_ISR, // 9.1 SCI-A SCIRXINTA_ISR, // 9.1 SCI-A
/* Продолжает список аргументов, полей или выражение SCITXINTA_ISR,; порядок элементов сохраняется. */
SCITXINTA_ISR, // 9.2 SCI-A SCITXINTA_ISR, // 9.2 SCI-A
/* Продолжает список аргументов, полей или выражение SCIRXINTB_ISR,; порядок элементов сохраняется. */
SCIRXINTB_ISR, // 9.3 SCI-B SCIRXINTB_ISR, // 9.3 SCI-B
/* Продолжает список аргументов, полей или выражение SCITXINTB_ISR,; порядок элементов сохраняется. */
SCITXINTB_ISR, // 9.4 SCI-B SCITXINTB_ISR, // 9.4 SCI-B
/* Продолжает список аргументов, полей или выражение ECAN0INTA_ISR,; порядок элементов сохраняется. */
ECAN0INTA_ISR, // 9.5 eCAN-A ECAN0INTA_ISR, // 9.5 eCAN-A
/* Продолжает список аргументов, полей или выражение ECAN1INTA_ISR,; порядок элементов сохраняется. */
ECAN1INTA_ISR, // 9.6 eCAN-A ECAN1INTA_ISR, // 9.6 eCAN-A
/* Продолжает список аргументов, полей или выражение ECAN0INTB_ISR,; порядок элементов сохраняется. */
ECAN0INTB_ISR, // 9.7 eCAN-B ECAN0INTB_ISR, // 9.7 eCAN-B
/* Продолжает список аргументов, полей или выражение ECAN1INTB_ISR,; порядок элементов сохраняется. */
ECAN1INTB_ISR, // 9.8 eCAN-B ECAN1INTB_ISR, // 9.8 eCAN-B
// Group 10 PIE Vectors // Group 10 PIE Vectors
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 10.1
rsvd_ISR, // 10.1
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 10.2 rsvd_ISR, // 10.2
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 10.3
rsvd_ISR, // 10.3 rsvd_ISR, // 10.4
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 10.5
rsvd_ISR, // 10.4 rsvd_ISR, // 10.6
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 10.7
rsvd_ISR, // 10.5 rsvd_ISR, // 10.8
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 10.6
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 10.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 10.8
// Group 11 PIE Vectors // Group 11 PIE Vectors
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 11.1
rsvd_ISR, // 11.1
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 11.2 rsvd_ISR, // 11.2
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 11.3
rsvd_ISR, // 11.3 rsvd_ISR, // 11.4
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 11.5
rsvd_ISR, // 11.4 rsvd_ISR, // 11.6
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR, // 11.7
rsvd_ISR, // 11.5
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 11.6
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 11.7
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 11.8 rsvd_ISR, // 11.8
// Group 12 PIE Vectors // Group 12 PIE Vectors
/* Продолжает список аргументов, полей или выражение XINT3_ISR,; порядок элементов сохраняется. */ XINT3_ISR, // 12.1
XINT3_ISR, // 12.1
/* Продолжает список аргументов, полей или выражение XINT4_ISR,; порядок элементов сохраняется. */
XINT4_ISR, // 12.2 XINT4_ISR, // 12.2
/* Продолжает список аргументов, полей или выражение XINT5_ISR,; порядок элементов сохраняется. */ XINT5_ISR, // 12.3
XINT5_ISR, // 12.3 XINT6_ISR, // 12.4
/* Продолжает список аргументов, полей или выражение XINT6_ISR,; порядок элементов сохраняется. */ XINT7_ISR, // 12.5
XINT6_ISR, // 12.4 rsvd_ISR, // 12.6
/* Продолжает список аргументов, полей или выражение XINT7_ISR,; порядок элементов сохраняется. */ LVF_ISR, // 12.7
XINT7_ISR, // 12.5 LUF_ISR, // 12.8
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // 12.6
/* Продолжает список аргументов, полей или выражение LVF_ISR,; порядок элементов сохраняется. */
LVF_ISR, // 12.7
/* Продолжает список аргументов, полей или выражение LUF_ISR,; порядок элементов сохраняется. */
LUF_ISR, // 12.8
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// InitPieVectTable: // InitPieVectTable:
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// This function initializes the PIE vector table to a known state. // This function initializes the PIE vector table to a known state.
// This function must be executed after boot time. // This function must be executed after boot time.
// //
/* Начинает функцию InitPieVectTable; назначение модуля — поставляемое TI описание PieVect для семейства C2833x. */
void InitPieVectTable(void) void InitPieVectTable(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Продолжает список аргументов, полей или выражение int16 i;; порядок элементов сохраняется. */
int16 i; int16 i;
/* Объявляет Source — данные Source; PieVectTableInit — данные PieVectTableInit. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
Uint32 *Source = (void *) &PieVectTableInit; Uint32 *Source = (void *) &PieVectTableInit;
/* Объявляет Dest — данные Dest; PieVectTable — данные PieVectTable. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
Uint32 *Dest = (void *) &PieVectTable; Uint32 *Dest = (void *) &PieVectTable;
/* Разрешение записи в защищённые регистры периферии. */ EALLOW;
EALLOW;
/* Цикл for(i=0; i < 128; i++); задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0; i < 128; i++) for(i=0; i < 128; i++)
/* Изменяет счётчик в выражении *Dest++ = *Source++; на один для следующего шага. */ *Dest++ = *Source++;
*Dest++ = *Source++;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
// Enable the PIE Vector Table // 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 $ // TI File $Revision: /main/5 $
// Checkin $Date: January 14, 2008 11:28:12 $ // 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 #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
#include "DSP2833x_SWPrioritizedIsrLevels.h" #include "DSP2833x_SWPrioritizedIsrLevels.h"
// Connected to INT13 of CPU (use MINT13 mask): // Connected to INT13 of CPU (use MINT13 mask):
// Note CPU-Timer1 is reserved for TI use, however XINT13 // Note CPU-Timer1 is reserved for TI use, however XINT13
// ISR can be used by the user. // ISR can be used by the user.
/* Условие компиляции (INT13PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL != 0) #if (INT13PL != 0)
/* Объявляет обработчик INT13_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT13_ISR(void) // INT13 or CPU-Timer1 interrupt void INT13_ISR(void) // INT13 or CPU-Timer1
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Устанавливает биты IER значением MINT13; регистр разрешения прерываний ядра C28x. */
IER |= MINT13; // Set "global" priority IER |= MINT13; // Set "global" priority
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here // Insert ISR Code here
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to INT14 of CPU (use MINT14 mask): // Connected to INT14 of CPU (use MINT14 mask):
/* Условие компиляции (INT14PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL != 0) #if (INT14PL != 0)
/* Объявляет обработчик INT14_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT14_ISR(void) // CPU-Timer2 interrupt void INT14_ISR(void) // CPU-Timer2
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Устанавливает биты IER значением MINT14; регистр разрешения прерываний ядра C28x. */
IER |= MINT14; // Set "global" priority IER |= MINT14; // Set "global" priority
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to INT15 of CPU (use MINT15 mask): // Connected to INT15 of CPU (use MINT15 mask):
/* Условие компиляции (INT15PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL != 0) #if (INT15PL != 0)
/* Объявляет обработчик DATALOG_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DATALOG_ISR(void) // Datalogging interrupt interrupt void DATALOG_ISR(void) // Datalogging interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Устанавливает биты IER значением MINT15; регистр разрешения прерываний ядра C28x. */
IER |= MINT15; // Set "global" priority IER |= MINT15; // Set "global" priority
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to INT16 of CPU (use MINT16 mask): // Connected to INT16 of CPU (use MINT16 mask):
/* Условие компиляции (INT16PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL != 0) #if (INT16PL != 0)
/* Объявляет обработчик RTOSINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void RTOSINT_ISR(void) // RTOS interrupt interrupt void RTOSINT_ISR(void) // RTOS interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Устанавливает биты IER значением MINT16; регистр разрешения прерываний ядра C28x. */
IER |= MINT16; // Set "global" priority IER |= MINT16; // Set "global" priority
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to EMUINT of CPU (non-maskable): // Connected to EMUINT of CPU (non-maskable):
/* Объявляет обработчик EMUINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EMUINT_ISR(void) // Emulation interrupt interrupt void EMUINT_ISR(void) // Emulation interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
// Connected to NMI of CPU (non-maskable): // Connected to NMI of CPU (non-maskable):
/* Объявляет обработчик NMI_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void NMI_ISR(void) // Non-maskable interrupt interrupt void NMI_ISR(void) // Non-maskable interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик ILLEGAL_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ILLEGAL_ISR(void) // Illegal operation TRAP interrupt void ILLEGAL_ISR(void) // Illegal operation TRAP
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER1_ISR(void) // User Defined trap 1 interrupt void USER1_ISR(void) // User Defined trap 1
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER2_ISR(void) // User Defined trap 2 interrupt void USER2_ISR(void) // User Defined trap 2
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER3_ISR(void) // User Defined trap 3 interrupt void USER3_ISR(void) // User Defined trap 3
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER4_ISR(void) // User Defined trap 4 interrupt void USER4_ISR(void) // User Defined trap 4
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER5_ISR(void) // User Defined trap 5 interrupt void USER5_ISR(void) // User Defined trap 5
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER6_ISR(void) // User Defined trap 6 interrupt void USER6_ISR(void) // User Defined trap 6
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER7_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER7_ISR(void) // User Defined trap 7 interrupt void USER7_ISR(void) // User Defined trap 7
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER8_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER8_ISR(void) // User Defined trap 8 interrupt void USER8_ISR(void) // User Defined trap 8
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER9_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER9_ISR(void) // User Defined trap 9 interrupt void USER9_ISR(void) // User Defined trap 9
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER10_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER10_ISR(void) // User Defined trap 10 interrupt void USER10_ISR(void) // User Defined trap 10
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER11_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER11_ISR(void) // User Defined trap 11 interrupt void USER11_ISR(void) // User Defined trap 11
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик USER12_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void USER12_ISR(void) // User Defined trap 12 interrupt void USER12_ISR(void) // User Defined trap 12
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
@@ -404,65 +274,41 @@ interrupt void USER12_ISR(void) // User Defined trap 12
// ----------------------------------------------------------- // -----------------------------------------------------------
// Connected to PIEIER1_1 (use MINT1 and MG11 masks): // Connected to PIEIER1_1 (use MINT1 and MG11 masks):
/* Условие компиляции (G11PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL != 0) #if (G11PL != 0)
/* Объявляет обработчик SEQ1INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SEQ1INT_ISR( void ) // ADC interrupt void SEQ1INT_ISR( void ) // ADC
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
/* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1; IER |= M_INT1;
/* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority IER &= MINT1; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG11; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG11; // Set "group" priority PieCtrlRegs.PIEIER1.all &= MG11; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER; PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER1_2 (use MINT1 and MG12 masks): // Connected to PIEIER1_2 (use MINT1 and MG12 masks):
/* Условие компиляции (G12PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL != 0) #if (G12PL != 0)
/* Объявляет обработчик SEQ2INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SEQ2INT_ISR( void ) // ADC interrupt void SEQ2INT_ISR( void ) // ADC
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
/* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1; IER |= M_INT1;
/* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority IER &= MINT1; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG12; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG12; // Set "group" priority PieCtrlRegs.PIEIER1.all &= MG12; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
@@ -471,78 +317,50 @@ interrupt void SEQ2INT_ISR( void ) // ADC
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER; PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER1_4 (use MINT1 and MG14 masks): // Connected to PIEIER1_4 (use MINT1 and MG14 masks):
/* Условие компиляции (G14PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL != 0) #if (G14PL != 0)
/* Объявляет обработчик XINT1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT1_ISR(void) interrupt void XINT1_ISR(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
/* Устанавливает биты IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER |= MINT1; // Set "global" priority IER |= MINT1; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG14; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG14; // Set "group" priority PieCtrlRegs.PIEIER1.all &= MG14; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER; PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER1_5 (use MINT1 and MG15 masks): // Connected to PIEIER1_5 (use MINT1 and MG15 masks):
/* Условие компиляции (G15PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL != 0) #if (G15PL != 0)
/* Объявляет обработчик XINT2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT2_ISR(void) interrupt void XINT2_ISR(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
/* Устанавливает биты IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER |= MINT1; // Set "global" priority IER |= MINT1; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG15; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG15; // Set "group" priority PieCtrlRegs.PIEIER1.all &= MG15; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
@@ -550,143 +368,92 @@ interrupt void XINT2_ISR(void)
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER; PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER1_6 (use MINT1 and MG16 masks): // Connected to PIEIER1_6 (use MINT1 and MG16 masks):
/* Условие компиляции (G16PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL != 0) #if (G16PL != 0)
/* Объявляет обработчик ADCINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ADCINT_ISR(void) // ADC interrupt void ADCINT_ISR(void) // ADC
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
/* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1; IER |= M_INT1;
/* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority IER &= MINT1; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG16; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG16; // Set "group" priority PieCtrlRegs.PIEIER1.all &= MG16; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER; PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER1_7 (use MINT1 and MG17 masks): // Connected to PIEIER1_7 (use MINT1 and MG17 masks):
/* Условие компиляции (G17PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL != 0) #if (G17PL != 0)
/* Объявляет обработчик TINT0_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void TINT0_ISR(void) // CPU-Timer 0 interrupt void TINT0_ISR(void) // CPU-Timer 0
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
/* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1; IER |= M_INT1;
/* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority IER &= MINT1; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG17; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG17; // Set "group" priority PieCtrlRegs.PIEIER1.all &= MG17; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER; PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER1_8 (use MINT1 and MG18 masks): // Connected to PIEIER1_8 (use MINT1 and MG18 masks):
/* Условие компиляции (G18PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL != 0) #if (G18PL != 0)
/* Объявляет обработчик WAKEINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void WAKEINT_ISR(void) // WD/LPM interrupt void WAKEINT_ISR(void) // WD/LPM
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER1.all;
/* Устанавливает биты IER значением M_INT1; регистр разрешения прерываний ядра C28x. */
IER |= M_INT1; IER |= M_INT1;
/* Оставляет биты маски IER значением MINT1; регистр разрешения прерываний ядра C28x. */
IER &= MINT1; // Set "global" priority IER &= MINT1; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER1.all значением MG18; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all &= MG18; // Set "group" priority PieCtrlRegs.PIEIER1.all &= MG18; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER1.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER1.all = TempPIEIER; PieCtrlRegs.PIEIER1.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -695,247 +462,157 @@ interrupt void WAKEINT_ISR(void) // WD/LPM
// ----------------------------------------------------------- // -----------------------------------------------------------
// Connected to PIEIER2_1 (use MINT2 and MG21 masks): // Connected to PIEIER2_1 (use MINT2 and MG21 masks):
/* Условие компиляции (G21PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL != 0) #if (G21PL != 0)
/* Объявляет обработчик EPWM1_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM1_TZINT_ISR(void) // ePWM1 Trip Zone interrupt void EPWM1_TZINT_ISR(void) // ePWM1 Trip Zone
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
/* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2; IER |= M_INT2;
/* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority IER &= MINT2; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG21; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG21; // Set "group" priority PieCtrlRegs.PIEIER2.all &= MG21; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER; PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER2_2 (use MINT2 and MG22 masks): // Connected to PIEIER2_2 (use MINT2 and MG22 masks):
/* Условие компиляции (G22PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL != 0) #if (G22PL != 0)
/* Объявляет обработчик EPWM2_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM2_TZINT_ISR(void) // ePWM2 Trip Zone interrupt void EPWM2_TZINT_ISR(void) // ePWM2 Trip Zone
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
/* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2; IER |= M_INT2;
/* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority IER &= MINT2; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG22; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG22; // Set "group" priority PieCtrlRegs.PIEIER2.all &= MG22; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER; PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER2_3 (use MINT2 and MG23 masks): // Connected to PIEIER2_3 (use MINT2 and MG23 masks):
/* Условие компиляции (G23PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL != 0) #if (G23PL != 0)
/* Объявляет обработчик EPWM3_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM3_TZINT_ISR(void) // ePWM3 Trip Zone interrupt void EPWM3_TZINT_ISR(void) // ePWM3 Trip Zone
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
/* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2; IER |= M_INT2;
/* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority IER &= MINT2; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG23; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG23; // Set "group" priority PieCtrlRegs.PIEIER2.all &= MG23; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER; PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER2_4 (use MINT2 and MG24 masks): // Connected to PIEIER2_4 (use MINT2 and MG24 masks):
/* Условие компиляции (G24PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL != 0) #if (G24PL != 0)
/* Объявляет обработчик EPWM4_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM4_TZINT_ISR(void) // ePWM4 Trip Zone interrupt void EPWM4_TZINT_ISR(void) // ePWM4 Trip Zone
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
/* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2; IER |= M_INT2;
/* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority IER &= MINT2; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG24; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG24; // Set "group" priority PieCtrlRegs.PIEIER2.all &= MG24; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER; PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER2_5 (use MINT2 and MG25 masks): // Connected to PIEIER2_5 (use MINT2 and MG25 masks):
/* Условие компиляции (G25PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL != 0) #if (G25PL != 0)
/* Объявляет обработчик EPWM5_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM5_TZINT_ISR(void) // ePWM5 Trip Zone interrupt void EPWM5_TZINT_ISR(void) // ePWM5 Trip Zone
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
/* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2; IER |= M_INT2;
/* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority IER &= MINT2; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG25; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG25; // Set "group" priority PieCtrlRegs.PIEIER2.all &= MG25; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER; PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER2_6 (use MINT2 and MG26 masks): // Connected to PIEIER2_6 (use MINT2 and MG26 masks):
/* Условие компиляции (G26PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL != 0) #if (G26PL != 0)
/* Объявляет обработчик EPWM6_TZINT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM6_TZINT_ISR(void) // ePWM6 Trip Zone interrupt void EPWM6_TZINT_ISR(void) // ePWM6 Trip Zone
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER2.all;
/* Устанавливает биты IER значением M_INT2; регистр разрешения прерываний ядра C28x. */
IER |= M_INT2; IER |= M_INT2;
/* Оставляет биты маски IER значением MINT2; регистр разрешения прерываний ядра C28x. */
IER &= MINT2; // Set "global" priority IER &= MINT2; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER2.all значением MG26; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all &= MG26; // Set "group" priority PieCtrlRegs.PIEIER2.all &= MG26; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER2.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER2.all = TempPIEIER; PieCtrlRegs.PIEIER2.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -945,247 +622,157 @@ interrupt void EPWM6_TZINT_ISR(void) // ePWM6 Trip Zone
// Connected to PIEIER3_1 (use MINT3 and MG31 masks): // Connected to PIEIER3_1 (use MINT3 and MG31 masks):
/* Условие компиляции (G31PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL != 0) #if (G31PL != 0)
/* Объявляет обработчик EPWM1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM1_INT_ISR(void) // ePWM1 Interrupt interrupt void EPWM1_INT_ISR(void) // ePWM1 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
/* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3; IER |= M_INT3;
/* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority IER &= MINT3; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG31; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG31; // Set "group" priority PieCtrlRegs.PIEIER3.all &= MG31; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER; PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER3_2 (use MINT3 and MG32 masks): // Connected to PIEIER3_2 (use MINT3 and MG32 masks):
/* Условие компиляции (G32PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL != 0) #if (G32PL != 0)
/* Объявляет обработчик EPWM2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM2_INT_ISR(void) // ePWM2 Interrupt interrupt void EPWM2_INT_ISR(void) // ePWM2 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
/* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3; IER |= M_INT3;
/* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority IER &= MINT3; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG32; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG32; // Set "group" priority PieCtrlRegs.PIEIER3.all &= MG32; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER; PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER3_3 (use MINT3 and MG33 masks): // Connected to PIEIER3_3 (use MINT3 and MG33 masks):
/* Условие компиляции (G33PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL != 0) #if (G33PL != 0)
/* Объявляет обработчик EPWM3_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM3_INT_ISR(void) // ePWM3 Interrupt interrupt void EPWM3_INT_ISR(void) // ePWM3 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
/* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3; IER |= M_INT3;
/* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority IER &= MINT3; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG33; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG33; // Set "group" priority PieCtrlRegs.PIEIER3.all &= MG33; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER; PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER3_4 (use MINT3 and MG34 masks): // Connected to PIEIER3_4 (use MINT3 and MG34 masks):
/* Условие компиляции (G34PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL != 0) #if (G34PL != 0)
/* Объявляет обработчик EPWM4_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM4_INT_ISR(void) // ePWM4 Interrupt interrupt void EPWM4_INT_ISR(void) // ePWM4 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
/* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3; IER |= M_INT3;
/* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority IER &= MINT3; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG34; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG34; // Set "group" priority PieCtrlRegs.PIEIER3.all &= MG34; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER; PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER3_5 (use MINT3 and MG35 masks): // Connected to PIEIER3_5 (use MINT3 and MG35 masks):
/* Условие компиляции (G35PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL != 0) #if (G35PL != 0)
/* Объявляет обработчик EPWM5_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM5_INT_ISR(void) // ePWM5 Interrupt interrupt void EPWM5_INT_ISR(void) // ePWM5 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
/* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3; IER |= M_INT3;
/* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority IER &= MINT3; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG35; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG35; // Set "group" priority PieCtrlRegs.PIEIER3.all &= MG35; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER; PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER3_6 (use MINT3 and MG36 masks): // Connected to PIEIER3_6 (use MINT3 and MG36 masks):
/* Условие компиляции (G36PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL != 0) #if (G36PL != 0)
/* Объявляет обработчик EPWM6_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EPWM6_INT_ISR(void) // ePWM6 Interrupt interrupt void EPWM6_INT_ISR(void) // ePWM6 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER3.all;
/* Устанавливает биты IER значением M_INT3; регистр разрешения прерываний ядра C28x. */
IER |= M_INT3; IER |= M_INT3;
/* Оставляет биты маски IER значением MINT3; регистр разрешения прерываний ядра C28x. */
IER &= MINT3; // Set "global" priority IER &= MINT3; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER3.all значением MG36; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all &= MG36; // Set "group" priority PieCtrlRegs.PIEIER3.all &= MG36; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER3.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER3.all = TempPIEIER; PieCtrlRegs.PIEIER3.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -1195,249 +782,159 @@ interrupt void EPWM6_INT_ISR(void) // ePWM6 Interrupt
// Connected to PIEIER4_1 (use MINT4 and MG41 masks): // Connected to PIEIER4_1 (use MINT4 and MG41 masks):
/* Условие компиляции (G41PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL != 0) #if (G41PL != 0)
/* Объявляет обработчик ECAP1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP1_INT_ISR(void) // eCAP1 Interrupt interrupt void ECAP1_INT_ISR(void) // eCAP1 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
/* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4; IER |= M_INT4;
/* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority IER &= MINT4; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG41; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG41; // Set "group" priority PieCtrlRegs.PIEIER4.all &= MG41; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER; PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER4_2 (use MINT4 and MG42 masks): // Connected to PIEIER4_2 (use MINT4 and MG42 masks):
/* Условие компиляции (G42PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL != 0) #if (G42PL != 0)
/* Объявляет обработчик ECAP2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP2_INT_ISR(void) // eCAP2 Interrupt interrupt void ECAP2_INT_ISR(void) // eCAP2 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all;
/* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4; IER |= M_INT4;
/* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority IER &= MINT4; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG42; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG42; // Set "group" priority PieCtrlRegs.PIEIER4.all &= MG42; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER; PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER4_3 (use MINT4 and MG43 masks): // Connected to PIEIER4_3 (use MINT4 and MG43 masks):
/* Условие компиляции (G43PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL != 0) #if (G43PL != 0)
/* Объявляет обработчик ECAP3_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP3_INT_ISR(void) // eCAP3 Interrupt interrupt void ECAP3_INT_ISR(void) // eCAP3 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
/* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4; IER |= M_INT4;
/* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority IER &= MINT4; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG43; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG43; // Set "group" priority PieCtrlRegs.PIEIER4.all &= MG43; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER; PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER4_4 (use MINT4 and MG44 masks): // Connected to PIEIER4_4 (use MINT4 and MG44 masks):
/* Условие компиляции (G44PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL != 0) #if (G44PL != 0)
/* Объявляет обработчик ECAP4_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP4_INT_ISR(void) // eCAP4 Interrupt interrupt void ECAP4_INT_ISR(void) // eCAP4 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
/* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4; IER |= M_INT4;
/* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority IER &= MINT4; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG44; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG44; // Set "group" priority PieCtrlRegs.PIEIER4.all &= MG44; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER; PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER4_5 (use MINT4 and MG45 masks): // Connected to PIEIER4_5 (use MINT4 and MG45 masks):
/* Условие компиляции (G45PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL != 0) #if (G45PL != 0)
/* Объявляет обработчик ECAP5_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP5_INT_ISR(void) // eCAP5 Interrupt interrupt void ECAP5_INT_ISR(void) // eCAP5 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
/* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4; IER |= M_INT4;
/* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority IER &= MINT4; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG45; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG45; // Set "group" priority PieCtrlRegs.PIEIER4.all &= MG45; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER; PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER4_6 (use MINT4 and MG46 masks): // Connected to PIEIER4_6 (use MINT4 and MG46 masks):
/* Условие компиляции (G46PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL != 0) #if (G46PL != 0)
/* Объявляет обработчик ECAP6_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAP6_INT_ISR(void) // eCAP6 Interrupt interrupt void ECAP6_INT_ISR(void) // eCAP6 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER4.all;
/* Устанавливает биты IER значением M_INT4; регистр разрешения прерываний ядра C28x. */
IER |= M_INT4; IER |= M_INT4;
/* Оставляет биты маски IER значением MINT4; регистр разрешения прерываний ядра C28x. */
IER &= MINT4; // Set "global" priority IER &= MINT4; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER4.all значением MG46; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all &= MG46; // Set "group" priority PieCtrlRegs.PIEIER4.all &= MG46; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER4.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER4.all = TempPIEIER; PieCtrlRegs.PIEIER4.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -1447,87 +944,57 @@ interrupt void ECAP6_INT_ISR(void) // eCAP6 Interrupt
// ----------------------------------------------------------- // -----------------------------------------------------------
// Connected to PIEIER5_1 (use MINT5 and MG51 masks): // Connected to PIEIER5_1 (use MINT5 and MG51 masks):
/* Условие компиляции (G51PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL != 0) #if (G51PL != 0)
/* Объявляет обработчик EQEP1_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EQEP1_INT_ISR(void) // eQEP1 Interrupt interrupt void EQEP1_INT_ISR(void) // eQEP1 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all;
/* Устанавливает биты IER значением M_INT5; регистр разрешения прерываний ядра C28x. */
IER |= M_INT5; IER |= M_INT5;
/* Оставляет биты маски IER значением MINT5; регистр разрешения прерываний ядра C28x. */
IER &= MINT5; // Set "global" priority IER &= MINT5; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER5.all значением MG51; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all &= MG51; // Set "group" priority PieCtrlRegs.PIEIER5.all &= MG51; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER5.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all = TempPIEIER; PieCtrlRegs.PIEIER5.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER5_2 (use MINT5 and MG52 masks): // Connected to PIEIER5_2 (use MINT5 and MG52 masks):
/* Условие компиляции (G52PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL != 0) #if (G52PL != 0)
/* Объявляет обработчик EQEP2_INT_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void EQEP2_INT_ISR(void) // eQEP2 Interrupt interrupt void EQEP2_INT_ISR(void) // eQEP2 Interrupt
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER5.all;
/* Устанавливает биты IER значением M_INT5; регистр разрешения прерываний ядра C28x. */
IER |= M_INT5; IER |= M_INT5;
/* Оставляет биты маски IER значением MINT5; регистр разрешения прерываний ядра C28x. */
IER &= MINT5; // Set "global" priority IER &= MINT5; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER5.all значением MG52; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all &= MG52; // Set "group" priority PieCtrlRegs.PIEIER5.all &= MG52; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER5.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER5.all = TempPIEIER; PieCtrlRegs.PIEIER5.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// ----------------------------------------------------------- // -----------------------------------------------------------
@@ -1535,250 +1002,160 @@ interrupt void EQEP2_INT_ISR(void) // eQEP2 Interrupt
// ----------------------------------------------------------- // -----------------------------------------------------------
// Connected to PIEIER6_1 (use MINT6 and MG61 masks): // Connected to PIEIER6_1 (use MINT6 and MG61 masks):
/* Условие компиляции (G61PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL != 0) #if (G61PL != 0)
/* Объявляет обработчик SPIRXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SPIRXINTA_ISR(void) // SPI-A interrupt void SPIRXINTA_ISR(void) // SPI-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
/* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6; IER |= M_INT6;
/* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority IER &= MINT6; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG61; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG61; // Set "group" priority PieCtrlRegs.PIEIER6.all &= MG61; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER; PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER6_2 (use MINT6 and MG62 masks): // Connected to PIEIER6_2 (use MINT6 and MG62 masks):
/* Условие компиляции (G62PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL != 0) #if (G62PL != 0)
/* Объявляет обработчик SPITXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SPITXINTA_ISR(void) // SPI-A interrupt void SPITXINTA_ISR(void) // SPI-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
/* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6; IER |= M_INT6;
/* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority IER &= MINT6; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG62; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG62; // Set "group" priority PieCtrlRegs.PIEIER6.all &= MG62; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER; PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER6_3 (use MINT6 and MG63 masks): // Connected to PIEIER6_3 (use MINT6 and MG63 masks):
/* Условие компиляции (G63PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL != 0) #if (G63PL != 0)
/* Объявляет обработчик MRINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MRINTB_ISR(void) // McBSP-B interrupt void MRINTB_ISR(void) // McBSP-B
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
/* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6; IER |= M_INT6;
/* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority IER &= MINT6; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG63; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG63; // Set "group" priority PieCtrlRegs.PIEIER6.all &= MG63; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER; PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER6_4 (use MINT6 and MG64 masks): // Connected to PIEIER6_4 (use MINT6 and MG64 masks):
/* Условие компиляции (G64PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL != 0) #if (G64PL != 0)
/* Объявляет обработчик MXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MXINTB_ISR(void) // McBSP-B interrupt void MXINTB_ISR(void) // McBSP-B
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
/* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6; IER |= M_INT6;
/* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority IER &= MINT6; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG64; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG64; // Set "group" priority PieCtrlRegs.PIEIER6.all &= MG64; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER; PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER6_5 (use MINT6 and MG65 masks): // Connected to PIEIER6_5 (use MINT6 and MG65 masks):
/* Условие компиляции (G65PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL != 0) #if (G65PL != 0)
/* Объявляет обработчик MRINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MRINTA_ISR(void) // McBSP-A interrupt void MRINTA_ISR(void) // McBSP-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
/* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6; IER |= M_INT6;
/* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority IER &= MINT6; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG65; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG65; // Set "group" priority PieCtrlRegs.PIEIER6.all &= MG65; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER; PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER6_6 (use MINT6 and MG66 masks): // Connected to PIEIER6_6 (use MINT6 and MG66 masks):
/* Условие компиляции (G66PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL != 0) #if (G66PL != 0)
/* Объявляет обработчик MXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void MXINTA_ISR(void) // McBSP-A interrupt void MXINTA_ISR(void) // McBSP-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER6.all;
/* Устанавливает биты IER значением M_INT6; регистр разрешения прерываний ядра C28x. */
IER |= M_INT6; IER |= M_INT6;
/* Оставляет биты маски IER значением MINT6; регистр разрешения прерываний ядра C28x. */
IER &= MINT6; // Set "global" priority IER &= MINT6; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG66; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG66; // Set "group" priority PieCtrlRegs.PIEIER6.all &= MG66; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER6.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all = TempPIEIER; PieCtrlRegs.PIEIER6.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -1787,250 +1164,160 @@ interrupt void MXINTA_ISR(void) // McBSP-A
// ----------------------------------------------------------- // -----------------------------------------------------------
// Connected to PIEIER7_1 (use MINT7 and MG71 masks): // Connected to PIEIER7_1 (use MINT7 and MG71 masks):
/* Условие компиляции (G71PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL != 0) #if (G71PL != 0)
/* Объявляет обработчик DINTCH1_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH1_ISR(void) // DMA interrupt void DINTCH1_ISR(void) // DMA
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
/* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7; IER |= M_INT7;
/* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority IER &= MINT7; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG71; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG71; // Set "group" priority PieCtrlRegs.PIEIER7.all &= MG71; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER; PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER7_2 (use MINT7 and MG72 masks): // Connected to PIEIER7_2 (use MINT7 and MG72 masks):
/* Условие компиляции (G72PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL != 0) #if (G72PL != 0)
/* Объявляет обработчик DINTCH2_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH2_ISR(void) // DMA interrupt void DINTCH2_ISR(void) // DMA
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
/* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7; IER |= M_INT7;
/* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority IER &= MINT7; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG72; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG72; // Set "group" priority PieCtrlRegs.PIEIER7.all &= MG72; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER; PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER7_3 (use MINT7 and MG73 masks): // Connected to PIEIER7_3 (use MINT7 and MG73 masks):
/* Условие компиляции (G73PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL != 0) #if (G73PL != 0)
/* Объявляет обработчик DINTCH3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH3_ISR(void) // DMA interrupt void DINTCH3_ISR(void) // DMA
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
/* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7; IER |= M_INT7;
/* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority IER &= MINT7; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG73; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG73; // Set "group" priority PieCtrlRegs.PIEIER7.all &= MG73; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER; PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER7_4 (use MINT7 and MG74 masks): // Connected to PIEIER7_4 (use MINT7 and MG74 masks):
/* Условие компиляции (G74PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL != 0) #if (G74PL != 0)
/* Объявляет обработчик DINTCH4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH4_ISR(void) // DMA interrupt void DINTCH4_ISR(void) // DMA
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
/* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7; IER |= M_INT7;
/* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority IER &= MINT7; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG74; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG74; // Set "group" priority PieCtrlRegs.PIEIER7.all &= MG74; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER; PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER7_5 (use MINT7 and MG75 masks): // Connected to PIEIER7_5 (use MINT7 and MG75 masks):
/* Условие компиляции (G75PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL != 0) #if (G75PL != 0)
/* Объявляет обработчик DINTCH5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH5_ISR(void) // DMA interrupt void DINTCH5_ISR(void) // DMA
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
/* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7; IER |= M_INT7;
/* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority IER &= MINT7; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG75; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG75; // Set "group" priority PieCtrlRegs.PIEIER7.all &= MG75; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER; PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER7_6 (use MINT7 and MG76 masks): // Connected to PIEIER7_6 (use MINT7 and MG76 masks):
/* Условие компиляции (G76PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL != 0) #if (G76PL != 0)
/* Объявляет обработчик DINTCH6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void DINTCH6_ISR(void) // DMA interrupt void DINTCH6_ISR(void) // DMA
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER7.all;
/* Устанавливает биты IER значением M_INT7; регистр разрешения прерываний ядра C28x. */
IER |= M_INT7; IER |= M_INT7;
/* Оставляет биты маски IER значением MINT7; регистр разрешения прерываний ядра C28x. */
IER &= MINT7; // Set "global" priority IER &= MINT7; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER7.all значением MG76; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all &= MG76; // Set "group" priority PieCtrlRegs.PIEIER7.all &= MG76; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER7.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER7.all = TempPIEIER; PieCtrlRegs.PIEIER7.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -2039,167 +1326,107 @@ interrupt void DINTCH6_ISR(void) // DMA
// ----------------------------------------------------------- // -----------------------------------------------------------
// Connected to PIEIER8_1 (use MINT8 and MG81 masks): // Connected to PIEIER8_1 (use MINT8 and MG81 masks):
/* Условие компиляции (G81PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL != 0) #if (G81PL != 0)
/* Объявляет обработчик I2CINT1A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void I2CINT1A_ISR(void) // I2C-A interrupt void I2CINT1A_ISR(void) // I2C-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all;
/* Устанавливает биты IER значением M_INT8; регистр разрешения прерываний ядра C28x. */
IER |= M_INT8; IER |= M_INT8;
/* Оставляет биты маски IER значением MINT8; регистр разрешения прерываний ядра C28x. */
IER &= MINT8; // Set "global" priority IER &= MINT8; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG81; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG81; // Set "group" priority PieCtrlRegs.PIEIER6.all &= MG81; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER8.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = TempPIEIER; PieCtrlRegs.PIEIER8.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER8_2 (use MINT8 and MG82 masks): // Connected to PIEIER8_2 (use MINT8 and MG82 masks):
/* Условие компиляции (G82PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL != 0) #if (G82PL != 0)
/* Объявляет обработчик I2CINT2A_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void I2CINT2A_ISR(void) // I2C-A interrupt void I2CINT2A_ISR(void) // I2C-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all;
/* Устанавливает биты IER значением M_INT8; регистр разрешения прерываний ядра C28x. */
IER |= M_INT8; IER |= M_INT8;
/* Оставляет биты маски IER значением MINT8; регистр разрешения прерываний ядра C28x. */
IER &= MINT8; // Set "global" priority IER &= MINT8; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER8.all значением MG82; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all &= MG82; // Set "group" priority PieCtrlRegs.PIEIER8.all &= MG82; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER8.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = TempPIEIER; PieCtrlRegs.PIEIER8.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER8_5 (use MINT8 and MG85 masks): // Connected to PIEIER8_5 (use MINT8 and MG85 masks):
/* Условие компиляции (G85PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL != 0) #if (G85PL != 0)
/* Объявляет обработчик SCIRXINTC_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTC_ISR(void) // SCI-C interrupt void SCIRXINTC_ISR(void) // SCI-C
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all;
/* Устанавливает биты IER значением M_INT8; регистр разрешения прерываний ядра C28x. */
IER |= M_INT8; IER |= M_INT8;
/* Оставляет биты маски IER значением MINT8; регистр разрешения прерываний ядра C28x. */
IER &= MINT8; // Set "global" priority IER &= MINT8; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER6.all значением MG85; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER6.all &= MG85; // Set "group" priority PieCtrlRegs.PIEIER6.all &= MG85; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER8.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = TempPIEIER; PieCtrlRegs.PIEIER8.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER8_6 (use MINT8 and MG86 masks): // Connected to PIEIER8_6 (use MINT8 and MG86 masks):
/* Условие компиляции (G82PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL != 0) #if (G82PL != 0)
/* Объявляет обработчик SCITXINTC_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTC_ISR(void) // SCI-C interrupt void SCITXINTC_ISR(void) // SCI-C
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER8.all;
/* Устанавливает биты IER значением M_INT8; регистр разрешения прерываний ядра C28x. */
IER |= M_INT8; IER |= M_INT8;
/* Оставляет биты маски IER значением MINT8; регистр разрешения прерываний ядра C28x. */
IER &= MINT8; // Set "global" priority IER &= MINT8; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER8.all значением MG86; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all &= MG86; // Set "group" priority PieCtrlRegs.PIEIER8.all &= MG86; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER8.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER8.all = TempPIEIER; PieCtrlRegs.PIEIER8.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// ----------------------------------------------------------- // -----------------------------------------------------------
@@ -2207,332 +1434,212 @@ interrupt void SCITXINTC_ISR(void) // SCI-C
// ----------------------------------------------------------- // -----------------------------------------------------------
// Connected to PIEIER9_1 (use MINT9 and MG91 masks): // Connected to PIEIER9_1 (use MINT9 and MG91 masks):
/* Условие компиляции (G91PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL != 0) #if (G91PL != 0)
/* Объявляет обработчик SCIRXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTA_ISR(void) // SCI-A interrupt void SCIRXINTA_ISR(void) // SCI-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
/* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; IER |= M_INT9;
/* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority IER &= MINT9; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG91; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG91; // Set "group" priority PieCtrlRegs.PIEIER9.all &= MG91; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER; PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER9_2 (use MINT9 and MG92 masks): // Connected to PIEIER9_2 (use MINT9 and MG92 masks):
/* Условие компиляции (G92PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL != 0) #if (G92PL != 0)
/* Объявляет обработчик SCITXINTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTA_ISR(void) // SCI-A interrupt void SCITXINTA_ISR(void) // SCI-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
/* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; IER |= M_INT9;
/* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority IER &= MINT9; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG92; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG92; // Set "group" priority PieCtrlRegs.PIEIER9.all &= MG92; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER; PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER9_3 (use MINT9 and MG93 masks): // Connected to PIEIER9_3 (use MINT9 and MG93 masks):
/* Условие компиляции (G93PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL != 0) #if (G93PL != 0)
/* Объявляет обработчик SCIRXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCIRXINTB_ISR(void) // SCI-B interrupt void SCIRXINTB_ISR(void) // SCI-B
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
/* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; IER |= M_INT9;
/* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority IER &= MINT9; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG93; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG93; // Set "group" priority PieCtrlRegs.PIEIER9.all &= MG93; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER; PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER9_4 (use MINT9 and MG94 masks): // Connected to PIEIER9_4 (use MINT9 and MG94 masks):
/* Условие компиляции (G94PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL != 0) #if (G94PL != 0)
/* Объявляет обработчик SCITXINTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void SCITXINTB_ISR(void) // SCI-B interrupt void SCITXINTB_ISR(void) // SCI-B
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
/* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; IER |= M_INT9;
/* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority IER &= MINT9; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG94; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG94; // Set "group" priority PieCtrlRegs.PIEIER9.all &= MG94; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER; PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER9_5 (use MINT9 and MG95 masks): // Connected to PIEIER9_5 (use MINT9 and MG95 masks):
/* Условие компиляции (G95PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL != 0) #if (G95PL != 0)
/* Объявляет обработчик ECAN0INTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN0INTA_ISR(void) // eCAN-A interrupt void ECAN0INTA_ISR(void) // eCAN-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
/* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; IER |= M_INT9;
/* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority IER &= MINT9; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG95; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG95; // Set "group" priority PieCtrlRegs.PIEIER9.all &= MG95; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER; PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER9_6 (use MINT9 and MG96 masks): // Connected to PIEIER9_6 (use MINT9 and MG96 masks):
/* Условие компиляции (G96PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL != 0) #if (G96PL != 0)
/* Объявляет обработчик ECAN1INTA_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN1INTA_ISR(void) // eCAN-A interrupt void ECAN1INTA_ISR(void) // eCAN-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
/* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; IER |= M_INT9;
/* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority IER &= MINT9; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG96; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG96; // Set "group" priority PieCtrlRegs.PIEIER9.all &= MG96; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER; PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER9_7 (use MINT9 and MG97 masks): // Connected to PIEIER9_7 (use MINT9 and MG97 masks):
/* Условие компиляции (G97PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL != 0) #if (G97PL != 0)
/* Объявляет обработчик ECAN0INTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN0INTB_ISR(void) // eCAN-B interrupt void ECAN0INTB_ISR(void) // eCAN-B
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
/* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; IER |= M_INT9;
/* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority IER &= MINT9; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG97; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG97; // Set "group" priority PieCtrlRegs.PIEIER9.all &= MG97; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER; PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER9_8 (use MINT9 and MG98 masks): // Connected to PIEIER9_8 (use MINT9 and MG98 masks):
/* Условие компиляции (G98PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL != 0) #if (G98PL != 0)
/* Объявляет обработчик ECAN1INTB_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void ECAN1INTB_ISR(void) // eCAN-B interrupt void ECAN1INTB_ISR(void) // eCAN-B
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
/* Устанавливает биты IER значением M_INT9; регистр разрешения прерываний ядра C28x. */
IER |= M_INT9; IER |= M_INT9;
/* Оставляет биты маски IER значением MINT9; регистр разрешения прерываний ядра C28x. */
IER &= MINT9; // Set "global" priority IER &= MINT9; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER9.all значением MG98; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all &= MG98; // Set "group" priority PieCtrlRegs.PIEIER9.all &= MG98; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER9.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER9.all = TempPIEIER; PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// ----------------------------------------------------------- // -----------------------------------------------------------
@@ -2546,291 +1653,186 @@ interrupt void ECAN1INTB_ISR(void) // eCAN-B
// ----------------------------------------------------------- // -----------------------------------------------------------
// Connected to PIEIER9_1 (use MINT12 and MG121 masks): // Connected to PIEIER9_1 (use MINT12 and MG121 masks):
/* Условие компиляции (G121PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL != 0) #if (G121PL != 0)
/* Объявляет обработчик XINT3_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT3_ISR(void) interrupt void XINT3_ISR(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
/* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12; IER |= M_INT12;
/* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority IER &= MINT12; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG121; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG121; // Set "group" priority PieCtrlRegs.PIEIER12.all &= MG121; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER; PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER12_2 (use MINT12 and MG122 masks): // Connected to PIEIER12_2 (use MINT12 and MG122 masks):
/* Условие компиляции (G122PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL != 0) #if (G122PL != 0)
/* Объявляет обработчик XINT4_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT4_ISR(void) interrupt void XINT4_ISR(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
/* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12; IER |= M_INT12;
/* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority IER &= MINT12; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG122; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG122; // Set "group" priority PieCtrlRegs.PIEIER12.all &= MG122; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER; PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER12_3 (use MINT12 and MG123 masks): // Connected to PIEIER12_3 (use MINT12 and MG123 masks):
/* Условие компиляции (G123PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL != 0) #if (G123PL != 0)
/* Объявляет обработчик XINT5_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT5_ISR(void) // SCI-B interrupt void XINT5_ISR(void) // SCI-B
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
/* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12; IER |= M_INT12;
/* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority IER &= MINT12; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG123; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG123; // Set "group" priority PieCtrlRegs.PIEIER12.all &= MG123; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER; PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER12_4 (use MINT12 and MG124 masks): // Connected to PIEIER12_4 (use MINT12 and MG124 masks):
/* Условие компиляции (G124PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL != 0) #if (G124PL != 0)
/* Объявляет обработчик XINT6_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT6_ISR(void) // SCI-B interrupt void XINT6_ISR(void) // SCI-B
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
/* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12; IER |= M_INT12;
/* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority IER &= MINT12; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG124; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG124; // Set "group" priority PieCtrlRegs.PIEIER12.all &= MG124; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER; PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER12_5 (use MINT12 and MG125 masks): // Connected to PIEIER12_5 (use MINT12 and MG125 masks):
/* Условие компиляции (G125PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL != 0) #if (G125PL != 0)
/* Объявляет обработчик XINT7_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void XINT7_ISR(void) // eCAN-A interrupt void XINT7_ISR(void) // eCAN-A
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
/* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12; IER |= M_INT12;
/* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority IER &= MINT12; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG125; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG125; // Set "group" priority PieCtrlRegs.PIEIER12.all &= MG125; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER; PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER12_7 (use MINT12 and MG127 masks): // Connected to PIEIER12_7 (use MINT12 and MG127 masks):
/* Условие компиляции (G127PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL != 0) #if (G127PL != 0)
/* Объявляет обработчик LVF_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void LVF_ISR(void) // FPU interrupt void LVF_ISR(void) // FPU
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
/* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12; IER |= M_INT12;
/* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority IER &= MINT12; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG127; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG127; // Set "group" priority PieCtrlRegs.PIEIER12.all &= MG127; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER; PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Connected to PIEIER12_8 (use MINT12 and MG128 masks): // Connected to PIEIER12_8 (use MINT12 and MG128 masks):
/* Условие компиляции (G128PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL != 0) #if (G128PL != 0)
/* Объявляет обработчик LUF_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void LUF_ISR(void) // FPU interrupt void LUF_ISR(void) // FPU
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Set interrupt priority: // Set interrupt priority:
/* Объявляет TempPIEIER — сохранённая маска разрешённых прерываний группы PIE. volatile требует фактического чтения или записи при каждом доступе. Начальное значение задаётся справа от знака равенства. */
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all; volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER12.all;
/* Устанавливает биты IER значением M_INT12; регистр разрешения прерываний ядра C28x. */
IER |= M_INT12; IER |= M_INT12;
/* Оставляет биты маски IER значением MINT12; регистр разрешения прерываний ядра C28x. */
IER &= MINT12; // Set "global" priority IER &= MINT12; // Set "global" priority
/* Оставляет биты маски PieCtrlRegs.PIEIER12.all значением MG128; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all &= MG128; // Set "group" priority PieCtrlRegs.PIEIER12.all &= MG128; // Set "group" priority
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
/* Разрешение маскируемых прерываний ядра. */
EINT; EINT;
// Insert ISR Code here....... // Insert ISR Code here.......
// Restore registers saved: // Restore registers saved:
/* Запрет маскируемых прерываний ядра. */
DINT; DINT;
/* Записывает PieCtrlRegs.PIEIER12.all значением TempPIEIER; представление регистра целым словом без разбиения на битовые поля. */
PieCtrlRegs.PIEIER12.all = TempPIEIER; PieCtrlRegs.PIEIER12.all = TempPIEIER;
// Next two lines for debug only to halt the processor here // Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code // Remove after inserting ISR Code
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -2838,37 +1840,22 @@ interrupt void LUF_ISR(void) // FPU
// Catch All Default ISRs: // Catch All Default ISRs:
// //
/* Начинает функцию PIE_RESERVED; назначение модуля — поставляемое TI описание SWPrioritizedDefaultIsr для семейства C2833x. */
interrupt void PIE_RESERVED(void) // Reserved space. For test. interrupt void PIE_RESERVED(void) // Reserved space. For test.
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик INT_NOTUSED_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void INT_NOTUSED_ISR(void) // Reserved space. For test. interrupt void INT_NOTUSED_ISR(void) // Reserved space. For test.
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Объявляет обработчик rsvd_ISR; обслуживает источник прерывания и его аппаратные флаги. */
interrupt void rsvd_ISR(void) // For test interrupt void rsvd_ISR(void) // For test
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm (" ESTOP0"); asm (" ESTOP0");
/* Цикл for(;;);; задаёт начальное значение, условие продолжения и шаг перебора. */
for(;;); for(;;);
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание SWPrioritizedPieVect для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $ // TI File $Revision: /main/2 $
// Checkin $Date: April 4, 2007 14:25:31 $ // Checkin $Date: April 4, 2007 14:25:31 $
//########################################################################### //###########################################################################
@@ -8,895 +7,503 @@
// TITLE: DSP2833x Devices SW Prioritized PIE Vector Table Initialization. // TITLE: DSP2833x Devices SW Prioritized PIE Vector Table Initialization.
// //
//########################################################################### //###########################################################################
// //
// Original Source by A.T. // Original Source by A.T.
// //
// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ // $TI Release: DSP2833x/DSP2823x Header Files V1.20 $
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File #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 = { const struct PIE_VECT_TABLE PieVectTableInit = {
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // Reserved space PIE_RESERVED, // Reserved space
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
PIE_RESERVED, // reserved PIE_RESERVED, // reserved
// Non-Peripheral Interrupts: // Non-Peripheral Interrupts:
/* Условие компиляции (INT13PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT13PL != 0) #if (INT13PL != 0)
/* Продолжает список аргументов, полей или выражение INT13_ISR,; порядок элементов сохраняется. */
INT13_ISR, // XINT13 INT13_ISR, // XINT13
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (INT14PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT14PL != 0) #if (INT14PL != 0)
/* Продолжает список аргументов, полей или выражение INT14_ISR,; порядок элементов сохраняется. */
INT14_ISR, // CPU-Timer2 INT14_ISR, // CPU-Timer2
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (INT15PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT15PL != 0) #if (INT15PL != 0)
/* Продолжает список аргументов, полей или выражение DATALOG_ISR,; порядок элементов сохраняется. */
DATALOG_ISR, // Datalogging interrupt DATALOG_ISR, // Datalogging interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (INT16PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (INT16PL != 0) #if (INT16PL != 0)
/* Продолжает список аргументов, полей или выражение RTOSINT_ISR,; порядок элементов сохраняется. */
RTOSINT_ISR, // RTOS interrupt RTOSINT_ISR, // RTOS interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, // reserved interrupt rsvd_ISR, // reserved interrupt
/* Продолжает список аргументов, полей или выражение NMI_ISR,; порядок элементов сохраняется. */
NMI_ISR, // Non-maskable interrupt NMI_ISR, // Non-maskable interrupt
/* Продолжает список аргументов, полей или выражение ILLEGAL_ISR,; порядок элементов сохраняется. */
ILLEGAL_ISR, // Illegal operation TRAP ILLEGAL_ISR, // Illegal operation TRAP
/* Продолжает список аргументов, полей или выражение USER1_ISR,; порядок элементов сохраняется. */
USER1_ISR, // User Defined trap 1 USER1_ISR, // User Defined trap 1
/* Продолжает список аргументов, полей или выражение USER2_ISR,; порядок элементов сохраняется. */
USER2_ISR, // User Defined trap 2 USER2_ISR, // User Defined trap 2
/* Продолжает список аргументов, полей или выражение USER3_ISR,; порядок элементов сохраняется. */
USER3_ISR, // User Defined trap 3 USER3_ISR, // User Defined trap 3
/* Продолжает список аргументов, полей или выражение USER4_ISR,; порядок элементов сохраняется. */
USER4_ISR, // User Defined trap 4 USER4_ISR, // User Defined trap 4
/* Продолжает список аргументов, полей или выражение USER5_ISR,; порядок элементов сохраняется. */
USER5_ISR, // User Defined trap 5 USER5_ISR, // User Defined trap 5
/* Продолжает список аргументов, полей или выражение USER6_ISR,; порядок элементов сохраняется. */
USER6_ISR, // User Defined trap 6 USER6_ISR, // User Defined trap 6
/* Продолжает список аргументов, полей или выражение USER7_ISR,; порядок элементов сохраняется. */
USER7_ISR, // User Defined trap 7 USER7_ISR, // User Defined trap 7
/* Продолжает список аргументов, полей или выражение USER8_ISR,; порядок элементов сохраняется. */
USER8_ISR, // User Defined trap 8 USER8_ISR, // User Defined trap 8
/* Продолжает список аргументов, полей или выражение USER9_ISR,; порядок элементов сохраняется. */
USER9_ISR, // User Defined trap 9 USER9_ISR, // User Defined trap 9
/* Продолжает список аргументов, полей или выражение USER10_ISR,; порядок элементов сохраняется. */
USER10_ISR, // User Defined trap 10 USER10_ISR, // User Defined trap 10
/* Продолжает список аргументов, полей или выражение USER11_ISR,; порядок элементов сохраняется. */
USER11_ISR, // User Defined trap 11 USER11_ISR, // User Defined trap 11
/* Продолжает список аргументов, полей или выражение USER12_ISR,; порядок элементов сохраняется. */
USER12_ISR, // User Defined trap 12 USER12_ISR, // User Defined trap 12
// Group 1 PIE Vectors: // Group 1 PIE Vectors:
/* Условие компиляции (G11PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G11PL != 0) #if (G11PL != 0)
/* Продолжает список аргументов, полей или выражение SEQ1INT_ISR,; порядок элементов сохраняется. */
SEQ1INT_ISR, // ADC SEQ1INT_ISR, // ADC
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G12PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G12PL != 0) #if (G12PL != 0)
/* Продолжает список аргументов, полей или выражение SEQ2INT_ISR,; порядок элементов сохраняется. */ SEQ2INT_ISR, // ADC
SEQ2INT_ISR, // ADC
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
/* Условие компиляции (G14PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G14PL != 0) #if (G14PL != 0)
/* Продолжает список аргументов, полей или выражение XINT1_ISR,; порядок элементов сохраняется. */
XINT1_ISR, // External XINT1_ISR, // External
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G15PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G15PL != 0) #if (G15PL != 0)
/* Продолжает список аргументов, полей или выражение XINT2_ISR,; порядок элементов сохраняется. */
XINT2_ISR, // External XINT2_ISR, // External
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G16PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G16PL != 0) #if (G16PL != 0)
/* Продолжает список аргументов, полей или выражение ADCINT_ISR,; порядок элементов сохраняется. */
ADCINT_ISR, // ADC ADCINT_ISR, // ADC
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G17PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G17PL != 0) #if (G17PL != 0)
/* Продолжает список аргументов, полей или выражение TINT0_ISR,; порядок элементов сохраняется. */
TINT0_ISR, // Timer 0 TINT0_ISR, // Timer 0
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G18PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G18PL != 0) #if (G18PL != 0)
/* Продолжает список аргументов, полей или выражение WAKEINT_ISR,; порядок элементов сохраняется. */
WAKEINT_ISR, // WD & Low Power WAKEINT_ISR, // WD & Low Power
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Group 2 PIE Vectors: // Group 2 PIE Vectors:
/* Условие компиляции (G21PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G21PL != 0) #if (G21PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM1_TZINT_ISR,; порядок элементов сохраняется. */
EPWM1_TZINT_ISR, // ePWM1 Trip Zone EPWM1_TZINT_ISR, // ePWM1 Trip Zone
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G22PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G22PL != 0) #if (G22PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM2_TZINT_ISR,; порядок элементов сохраняется. */
EPWM2_TZINT_ISR, // ePWM2 Trip Zone EPWM2_TZINT_ISR, // ePWM2 Trip Zone
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G23PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G23PL != 0) #if (G23PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM3_TZINT_ISR,; порядок элементов сохраняется. */
EPWM3_TZINT_ISR, // ePWM3 Trip Zone EPWM3_TZINT_ISR, // ePWM3 Trip Zone
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G24PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G24PL != 0) #if (G24PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM4_TZINT_ISR,; порядок элементов сохраняется. */
EPWM4_TZINT_ISR, // ePWM4 Trip Zone EPWM4_TZINT_ISR, // ePWM4 Trip Zone
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G25PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G25PL != 0) #if (G25PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM5_TZINT_ISR,; порядок элементов сохраняется. */
EPWM5_TZINT_ISR, // ePWM5 Trip Zone EPWM5_TZINT_ISR, // ePWM5 Trip Zone
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G26PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G26PL != 0) #if (G26PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM6_TZINT_ISR,; порядок элементов сохраняется. */
EPWM6_TZINT_ISR, // ePWM6 Trip Zone EPWM6_TZINT_ISR, // ePWM6 Trip Zone
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
// Group 3 PIE Vectors: // Group 3 PIE Vectors:
/* Условие компиляции (G31PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G31PL != 0) #if (G31PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM1_INT_ISR,; порядок элементов сохраняется. */
EPWM1_INT_ISR, // ePWM1 Interrupt EPWM1_INT_ISR, // ePWM1 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G32PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G32PL != 0) #if (G32PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM2_INT_ISR,; порядок элементов сохраняется. */
EPWM2_INT_ISR, // ePWM2 Interrupt EPWM2_INT_ISR, // ePWM2 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G33PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G33PL != 0) #if (G33PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM3_INT_ISR,; порядок элементов сохраняется. */
EPWM3_INT_ISR, // ePWM3 Interrupt EPWM3_INT_ISR, // ePWM3 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G34PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G34PL != 0) #if (G34PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM4_INT_ISR,; порядок элементов сохраняется. */
EPWM4_INT_ISR, // ePWM4 Interrupt EPWM4_INT_ISR, // ePWM4 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G35PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G35PL != 0) #if (G35PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM5_INT_ISR,; порядок элементов сохраняется. */
EPWM5_INT_ISR, // ePWM5 Interrupt EPWM5_INT_ISR, // ePWM5 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G36PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G36PL != 0) #if (G36PL != 0)
/* Продолжает список аргументов, полей или выражение EPWM6_INT_ISR,; порядок элементов сохраняется. */
EPWM6_INT_ISR, // ePWM6 Interrupt EPWM6_INT_ISR, // ePWM6 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
// Group 4 PIE Vectors: // Group 4 PIE Vectors:
/* Условие компиляции (G41PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G41PL != 0) #if (G41PL != 0)
/* Продолжает список аргументов, полей или выражение ECAP1_INT_ISR,; порядок элементов сохраняется. */
ECAP1_INT_ISR, // eCAP1 Interrupt ECAP1_INT_ISR, // eCAP1 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G42PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G42PL != 0) #if (G42PL != 0)
/* Продолжает список аргументов, полей или выражение ECAP2_INT_ISR,; порядок элементов сохраняется. */
ECAP2_INT_ISR, // eCAP2 Interrupt ECAP2_INT_ISR, // eCAP2 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G43PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G43PL != 0) #if (G43PL != 0)
/* Продолжает список аргументов, полей или выражение ECAP3_INT_ISR,; порядок элементов сохраняется. */
ECAP3_INT_ISR, // eCAP3 Interrupt ECAP3_INT_ISR, // eCAP3 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G44PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G44PL != 0) #if (G44PL != 0)
/* Продолжает список аргументов, полей или выражение ECAP4_INT_ISR,; порядок элементов сохраняется. */
ECAP4_INT_ISR, // eCAP4 Interrupt ECAP4_INT_ISR, // eCAP4 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G45PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G45PL != 0) #if (G45PL != 0)
/* Продолжает список аргументов, полей или выражение ECAP5_INT_ISR,; порядок элементов сохраняется. */
ECAP5_INT_ISR, // eCAP5 Interrupt ECAP5_INT_ISR, // eCAP5 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G46PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G46PL != 0) #if (G46PL != 0)
/* Продолжает список аргументов, полей или выражение ECAP6_INT_ISR,; порядок элементов сохраняется. */
ECAP6_INT_ISR, // eCAP6 Interrupt ECAP6_INT_ISR, // eCAP6 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR,
rsvd_ISR,
// Group 5 PIE Vectors: // Group 5 PIE Vectors:
/* Условие компиляции (G51PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G51PL != 0) #if (G51PL != 0)
/* Продолжает список аргументов, полей или выражение EQEP1_INT_ISR,; порядок элементов сохраняется. */
EQEP1_INT_ISR, // eQEP1 Interrupt EQEP1_INT_ISR, // eQEP1 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G52PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G52PL != 0) #if (G52PL != 0)
/* Продолжает список аргументов, полей или выражение EQEP2_INT_ISR,; порядок элементов сохраняется. */
EQEP2_INT_ISR, // eQEP2 Interrupt EQEP2_INT_ISR, // eQEP2 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #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,; порядок элементов сохраняется. */
rsvd_ISR,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
rsvd_ISR,
// Group 6 PIE Vectors: // Group 6 PIE Vectors:
/* Условие компиляции (G61PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G61PL != 0) #if (G61PL != 0)
/* Продолжает список аргументов, полей или выражение SPIRXINTA_ISR,; порядок элементов сохраняется. */
SPIRXINTA_ISR, // SPI-A SPIRXINTA_ISR, // SPI-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G62PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G62PL != 0) #if (G62PL != 0)
/* Продолжает список аргументов, полей или выражение SPITXINTA_ISR,; порядок элементов сохраняется. */
SPITXINTA_ISR, // SPI-A SPITXINTA_ISR, // SPI-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G63PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G63PL != 0) #if (G63PL != 0)
/* Продолжает список аргументов, полей или выражение MRINTB_ISR,; порядок элементов сохраняется. */
MRINTB_ISR, // McBSP-B MRINTB_ISR, // McBSP-B
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G64PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G64PL != 0) #if (G64PL != 0)
/* Продолжает список аргументов, полей или выражение MXINTB_ISR,; порядок элементов сохраняется. */
MXINTB_ISR, // McBSP-B MXINTB_ISR, // McBSP-B
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G65PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G65PL != 0) #if (G65PL != 0)
/* Продолжает список аргументов, полей или выражение MRINTA_ISR,; порядок элементов сохраняется. */
MRINTA_ISR, // McBSP-A MRINTA_ISR, // McBSP-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G66PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G66PL != 0) #if (G66PL != 0)
/* Продолжает список аргументов, полей или выражение MXINTA_ISR,; порядок элементов сохраняется. */
MXINTA_ISR, // McBSP-A MXINTA_ISR, // McBSP-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
// Group 7 PIE Vectors: // Group 7 PIE Vectors:
/* Условие компиляции (G71PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G71PL != 0) #if (G71PL != 0)
/* Продолжает список аргументов, полей или выражение DINTCH1_ISR,; порядок элементов сохраняется. */
DINTCH1_ISR, // DMA-Channel 1 Interrupt DINTCH1_ISR, // DMA-Channel 1 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G72PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G72PL != 0) #if (G72PL != 0)
/* Продолжает список аргументов, полей или выражение DINTCH2_ISR,; порядок элементов сохраняется. */
DINTCH2_ISR, // DMA-Channel 2 Interrupt DINTCH2_ISR, // DMA-Channel 2 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G73PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G73PL != 0) #if (G73PL != 0)
/* Продолжает список аргументов, полей или выражение DINTCH3_ISR,; порядок элементов сохраняется. */
DINTCH3_ISR, // DMA-Channel 3 Interrupt DINTCH3_ISR, // DMA-Channel 3 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G74PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G74PL != 0) #if (G74PL != 0)
/* Продолжает список аргументов, полей или выражение DINTCH4_ISR,; порядок элементов сохраняется. */
DINTCH4_ISR, // DMA-Channel 4 Interrupt DINTCH4_ISR, // DMA-Channel 4 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G75PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G75PL != 0) #if (G75PL != 0)
/* Продолжает список аргументов, полей или выражение DINTCH5_ISR,; порядок элементов сохраняется. */
DINTCH5_ISR, // DMA-Channel 5 Interrupt DINTCH5_ISR, // DMA-Channel 5 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G76PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G76PL != 0) #if (G76PL != 0)
/* Продолжает список аргументов, полей или выражение DINTCH6_ISR,; порядок элементов сохраняется. */
DINTCH6_ISR, // DMA-Channel 6 Interrupt DINTCH6_ISR, // DMA-Channel 6 Interrupt
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
rsvd_ISR,
// Group 8 PIE Vectors: // Group 8 PIE Vectors:
/* Условие компиляции (G81PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G81PL != 0) #if (G81PL != 0)
/* Продолжает список аргументов, полей или выражение I2CINT1A_ISR,; порядок элементов сохраняется. */
I2CINT1A_ISR, // I2C-A I2CINT1A_ISR, // I2C-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G82PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G82PL != 0) #if (G82PL != 0)
/* Продолжает список аргументов, полей или выражение I2CINT2A_ISR,; порядок элементов сохраняется. */
I2CINT2A_ISR, // I2C-A I2CINT2A_ISR, // I2C-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR,
rsvd_ISR, rsvd_ISR,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
/* Условие компиляции (G85PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G85PL != 0) #if (G85PL != 0)
/* Продолжает список аргументов, полей или выражение SCIRXINTC_ISR,; порядок элементов сохраняется. */
SCIRXINTC_ISR, // SCI-C SCIRXINTC_ISR, // SCI-C
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G86PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G86PL != 0) #if (G86PL != 0)
/* Продолжает список аргументов, полей или выражение SCITXINTC_ISR,; порядок элементов сохраняется. */
SCITXINTC_ISR, // SCI-C SCITXINTC_ISR, // SCI-C
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */ rsvd_ISR,
rsvd_ISR, rsvd_ISR,
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR,
// Group 9 PIE Vectors: // Group 9 PIE Vectors:
/* Условие компиляции (G91PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G91PL != 0) #if (G91PL != 0)
/* Продолжает список аргументов, полей или выражение SCIRXINTA_ISR,; порядок элементов сохраняется. */
SCIRXINTA_ISR, // SCI-A SCIRXINTA_ISR, // SCI-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G92PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G92PL != 0) #if (G92PL != 0)
/* Продолжает список аргументов, полей или выражение SCITXINTA_ISR,; порядок элементов сохраняется. */
SCITXINTA_ISR, // SCI-A SCITXINTA_ISR, // SCI-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G93PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G93PL != 0) #if (G93PL != 0)
/* Продолжает список аргументов, полей или выражение SCIRXINTB_ISR,; порядок элементов сохраняется. */
SCIRXINTB_ISR, // SCI-B SCIRXINTB_ISR, // SCI-B
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G94PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G94PL != 0) #if (G94PL != 0)
/* Продолжает список аргументов, полей или выражение SCITXINTB_ISR,; порядок элементов сохраняется. */
SCITXINTB_ISR, // SCI-B SCITXINTB_ISR, // SCI-B
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G95PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G95PL != 0) #if (G95PL != 0)
/* Продолжает список аргументов, полей или выражение ECAN0INTA_ISR,; порядок элементов сохраняется. */
ECAN0INTA_ISR, // eCAN-A ECAN0INTA_ISR, // eCAN-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G96PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G96PL != 0) #if (G96PL != 0)
/* Продолжает список аргументов, полей или выражение ECAN1INTA_ISR,; порядок элементов сохраняется. */
ECAN1INTA_ISR, // eCAN-A ECAN1INTA_ISR, // eCAN-A
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G97PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G97PL != 0) #if (G97PL != 0)
/* Продолжает список аргументов, полей или выражение ECAN0INTB_ISR,; порядок элементов сохраняется. */
ECAN0INTB_ISR, // eCAN-B ECAN0INTB_ISR, // eCAN-B
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G98PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G98PL != 0) #if (G98PL != 0)
/* Продолжает список аргументов, полей или выражение ECAN1INTB_ISR,; порядок элементов сохраняется. */
ECAN1INTB_ISR, // eCAN-B ECAN1INTB_ISR, // eCAN-B
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// Group 10 PIE Vectors // 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 // 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 // Group 12 PIE Vectors
/* Условие компиляции (G121PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G121PL != 0) #if (G121PL != 0)
/* Продолжает список аргументов, полей или выражение XINT3_ISR,; порядок элементов сохраняется. */
XINT3_ISR, // External interrupt 3 XINT3_ISR, // External interrupt 3
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G122PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G122PL != 0) #if (G122PL != 0)
/* Продолжает список аргументов, полей или выражение XINT4_ISR,; порядок элементов сохраняется. */
XINT4_ISR, // External interrupt 4 XINT4_ISR, // External interrupt 4
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G123PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G123PL != 0) #if (G123PL != 0)
/* Продолжает список аргументов, полей или выражение XINT5_ISR,; порядок элементов сохраняется. */
XINT5_ISR, // External interrupt 5 XINT5_ISR, // External interrupt 5
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G124PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G124PL != 0) #if (G124PL != 0)
/* Продолжает список аргументов, полей или выражение XINT6_ISR,; порядок элементов сохраняется. */
XINT6_ISR, // External interrupt 6 XINT6_ISR, // External interrupt 6
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G125PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G125PL != 0) #if (G125PL != 0)
/* Продолжает список аргументов, полей или выражение XINT7_ISR,; порядок элементов сохраняется. */
XINT7_ISR, // External interrupt 7 XINT7_ISR, // External interrupt 7
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
rsvd_ISR, rsvd_ISR,
/* Условие компиляции (G127PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G127PL != 0) #if (G127PL != 0)
/* Продолжает список аргументов, полей или выражение LVF_ISR,; порядок элементов сохраняется. */ LVF_ISR, // Latched overflow flag
LVF_ISR, // Latched overflow flag
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции (G128PL != 0): выбранный блок включается в текущий вариант прошивки. */
#if (G128PL != 0) #if (G128PL != 0)
/* Продолжает список аргументов, полей или выражение LUF_ISR,; порядок элементов сохраняется. */
LUF_ISR, // Latched underflow flag LUF_ISR, // Latched underflow flag
/* Выбирает альтернативный блок текущего условия компиляции. */
#else #else
/* Продолжает список аргументов, полей или выражение INT_NOTUSED_ISR,; порядок элементов сохраняется. */
INT_NOTUSED_ISR, INT_NOTUSED_ISR,
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif
#endif
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// InitPieVectTable: // InitPieVectTable:
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// This function initializes the PIE vector table to a known state. // This function initializes the PIE vector table to a known state.
// This function must be executed after boot time. // This function must be executed after boot time.
// //
/* Начинает функцию InitPieVectTable; назначение модуля — поставляемое TI описание SWPrioritizedPieVect для семейства C2833x. */
void InitPieVectTable(void) void InitPieVectTable(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Продолжает список аргументов, полей или выражение int16 i;; порядок элементов сохраняется. */
int16 i; int16 i;
/* Объявляет Source — данные Source; PieVectTableInit — данные PieVectTableInit. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
Uint32 *Source = (void *) &PieVectTableInit; Uint32 *Source = (void *) &PieVectTableInit;
/* Объявляет Dest — данные Dest; PieVectTable — данные PieVectTable. Хранит указатель на данные. Начальное значение задаётся справа от знака равенства. */
Uint32 *Dest = (void *) &PieVectTable; Uint32 *Dest = (void *) &PieVectTable;
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Цикл for(i=0; i < 128; i++) ; задаёт начальное значение, условие продолжения и шаг перебора. */
for(i=0; i < 128; i++) { for(i=0; i < 128; i++) {
/* Изменяет счётчик в выражении *Dest++ = *Source++; на один для следующего шага. */
*Dest++ = *Source++; *Dest++ = *Source++;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание SysCtrl для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/7 $ // TI File $Revision: /main/7 $
// Checkin $Date: September 20, 2007 13:30:31 $ // 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 #include "DSP2833x_Device.h" // Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // Examples Include File #include "DSP2833x_Examples.h" // Examples Include File
//#include "RS485.h" //#include "RS485.h"
@@ -29,7 +26,6 @@
// a different section. This section will then be mapped to a load and // a different section. This section will then be mapped to a load and
// run address using the linker cmd file. // run address using the linker cmd file.
/* Указание компилятору CODE_SECTION(InitFlash, "ramfuncs");: размещение данных или настройка обработки объявлений. */
#pragma 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 // - Set the pre-scaler for the high and low frequency peripheral clocks
// - Enable the clocks to the peripherals // - Enable the clocks to the peripherals
/* Объявляет SYSCLKOUT — данные SYSCLKOUT; LSPCLK — данные LSPCLK; HSPCLK — данные HSPCLK. */
long SYSCLKOUT, LSPCLK, HSPCLK; long SYSCLKOUT, LSPCLK, HSPCLK;
/* Начинает функцию InitSysCtrl; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void InitSysCtrl(void) void InitSysCtrl(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Disable the watchdog // Disable the watchdog
/* Вызывает DisableDog с аргументами () в текущей последовательности операций. */
DisableDog(); DisableDog();
// Initialize the PLL control: PLLCR and DIVSEL // Initialize the PLL control: PLLCR and DIVSEL
// DSP28_PLLCR and DSP28_DIVSEL are defined in DSP2833x_Examples.h // DSP28_PLLCR and DSP28_DIVSEL are defined in DSP2833x_Examples.h
/* Инициализирует модуль вызовом InitPll(DSP28_PLLCR,DSP28_DIVSEL); перед его дальнейшим использованием. */
InitPll(DSP28_PLLCR,DSP28_DIVSEL); InitPll(DSP28_PLLCR,DSP28_DIVSEL);
// Initialize the peripheral clocks // Initialize the peripheral clocks
/* Инициализирует модуль вызовом InitPeripheralClocks(); перед его дальнейшим использованием. */
InitPeripheralClocks(); InitPeripheralClocks();
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
@@ -74,67 +63,48 @@ void InitSysCtrl(void)
// This function MUST be executed out of RAM. Executing it // This function MUST be executed out of RAM. Executing it
// out of OTP/Flash will yield unpredictable results // out of OTP/Flash will yield unpredictable results
/* Начинает функцию InitFlash; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void InitFlash(void) void InitFlash(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
//Enable Flash Pipeline mode to improve performance //Enable Flash Pipeline mode to improve performance
//of code executed from Flash. //of code executed from Flash.
/* Записывает FlashRegs.FOPT.bit.ENPIPE значением 1; данные ENPIPE. */
FlashRegs.FOPT.bit.ENPIPE = 1; FlashRegs.FOPT.bit.ENPIPE = 1;
// CAUTION // CAUTION
//Minimum waitstates required for the flash operating //Minimum waitstates required for the flash operating
//at a given CPU rate must be characterized by TI. //at a given CPU rate must be characterized by TI.
//Refer to the datasheet for the latest information. //Refer to the datasheet for the latest information.
/* Условие компиляции CPU_FRQ_150MHZ: выбранный блок включается в текущий вариант прошивки. */
#if CPU_FRQ_150MHZ #if CPU_FRQ_150MHZ
//Set the Paged Waitstate for the Flash //Set the Paged Waitstate for the Flash
/* Записывает FlashRegs.FBANKWAIT.bit.PAGEWAIT значением 5; данные PAGEWAIT. */
FlashRegs.FBANKWAIT.bit.PAGEWAIT = 5; FlashRegs.FBANKWAIT.bit.PAGEWAIT = 5;
//Set the Random Waitstate for the Flash //Set the Random Waitstate for the Flash
/* Записывает FlashRegs.FBANKWAIT.bit.RANDWAIT значением 5; данные RANDWAIT. */
FlashRegs.FBANKWAIT.bit.RANDWAIT = 5; FlashRegs.FBANKWAIT.bit.RANDWAIT = 5;
//Set the Waitstate for the OTP //Set the Waitstate for the OTP
/* Записывает FlashRegs.FOTPWAIT.bit.OTPWAIT значением 8; данные OTPWAIT. */
FlashRegs.FOTPWAIT.bit.OTPWAIT = 8; FlashRegs.FOTPWAIT.bit.OTPWAIT = 8;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Условие компиляции CPU_FRQ_100MHZ: выбранный блок включается в текущий вариант прошивки. */
#if CPU_FRQ_100MHZ #if CPU_FRQ_100MHZ
//Set the Paged Waitstate for the Flash //Set the Paged Waitstate for the Flash
/* Записывает FlashRegs.FBANKWAIT.bit.PAGEWAIT значением 3; данные PAGEWAIT. */
FlashRegs.FBANKWAIT.bit.PAGEWAIT = 3; FlashRegs.FBANKWAIT.bit.PAGEWAIT = 3;
//Set the Random Waitstate for the Flash //Set the Random Waitstate for the Flash
/* Записывает FlashRegs.FBANKWAIT.bit.RANDWAIT значением 3; данные RANDWAIT. */
FlashRegs.FBANKWAIT.bit.RANDWAIT = 3; FlashRegs.FBANKWAIT.bit.RANDWAIT = 3;
//Set the Waitstate for the OTP //Set the Waitstate for the OTP
/* Записывает FlashRegs.FOTPWAIT.bit.OTPWAIT значением 5; данные OTPWAIT. */
FlashRegs.FOTPWAIT.bit.OTPWAIT = 5; FlashRegs.FOTPWAIT.bit.OTPWAIT = 5;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
// CAUTION // CAUTION
//ONLY THE DEFAULT VALUE FOR THESE 2 REGISTERS SHOULD BE USED //ONLY THE DEFAULT VALUE FOR THESE 2 REGISTERS SHOULD BE USED
/* Записывает FlashRegs.FSTDBYWAIT.bit.STDBYWAIT значением 0x01FF; данные STDBYWAIT. */
FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF; FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;
/* Записывает FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT значением 0x01FF; данные ACTIVEWAIT. */
FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF; FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
//Force a pipeline flush to ensure that the write to //Force a pipeline flush to ensure that the write to
//the last register configured occurs before returning. //the last register configured occurs before returning.
/* Вызывает asm с аргументами (" RPT #7 || NOP") в текущей последовательности операций. */
asm(" RPT #7 || NOP"); asm(" RPT #7 || NOP");
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
@@ -144,27 +114,16 @@ void InitFlash(void)
// This function resets the watchdog timer. // This function resets the watchdog timer.
// Enable this function for using ServiceDog in the application // Enable this function for using ServiceDog in the application
/* Начинает функцию ServiceDog; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void ServiceDog(void) void ServiceDog(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Проверяет if(SysCtrlRegs.PLLCR.bit.DIV == DSP28_PLLCR); последующий оператор выполняется только при истинном условии. */
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) if(SysCtrlRegs.PLLSTS.bit.DIVSEL == DSP28_DIVSEL)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает SysCtrlRegs.WDKEY значением 0x0055; данные WDKEY. */
SysCtrlRegs.WDKEY = 0x0055; SysCtrlRegs.WDKEY = 0x0055;
/* Записывает SysCtrlRegs.WDKEY значением 0x00AA; данные WDKEY. */
SysCtrlRegs.WDKEY = 0x00AA; SysCtrlRegs.WDKEY = 0x00AA;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Завершает ServiceDog без возвращаемого значения. */
return; return;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} } } }
@@ -173,17 +132,11 @@ void ServiceDog(void)
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// This function disables the watchdog timer. // This function disables the watchdog timer.
/* Начинает функцию DisableDog; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void DisableDog(void) void DisableDog(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает SysCtrlRegs.WDCR значением 0x0068; данные WDCR. */
SysCtrlRegs.WDCR= 0x0068; SysCtrlRegs.WDCR= 0x0068;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -191,60 +144,40 @@ void DisableDog(void)
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// This function initializes the PLLCR register. // This function initializes the PLLCR register.
/* Начинает функцию InitPll; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void InitPll(Uint16 divval, Uint16 divsel) void InitPll(Uint16 divval, Uint16 divsel)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Объявляет clkVal — данные clkVal. */
long clkVal; long clkVal;
// Make sure the PLL is not running in limp mode // Make sure the PLL is not running in limp mode
/* Проверяет if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0); последующий оператор выполняется только при истинном условии. */
if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0) if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Missing external clock has been detected // Missing external clock has been detected
// Replace this line with a call to an appropriate // Replace this line with a call to an appropriate
// SystemShutdown(); function. // SystemShutdown(); function.
/* Вызывает asm с аргументами (" ESTOP0") в текущей последовательности операций. */
asm(" ESTOP0"); asm(" ESTOP0");
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
// DIVSEL MUST be 0 before PLLCR can be changed from // DIVSEL MUST be 0 before PLLCR can be changed from
// 0x0000. It is set to 0 by an external reset XRSn // 0x0000. It is set to 0 by an external reset XRSn
// This puts us in 1/4 // This puts us in 1/4
/* Проверяет if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0); последующий оператор выполняется только при истинном условии. */
if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0) if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает SysCtrlRegs.PLLSTS.bit.DIVSEL значением 0; данные DIVSEL. */
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0; SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
// Change the PLLCR // Change the PLLCR
// if (SysCtrlRegs.PLLCR.bit.DIV != val) // if (SysCtrlRegs.PLLCR.bit.DIV != val)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
// Before setting PLLCR turn off missing clock detect logic // Before setting PLLCR turn off missing clock detect logic
/* Записывает SysCtrlRegs.PLLSTS.bit.MCLKOFF значением 1; данные MCLKOFF. */
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1; SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
/* Записывает SysCtrlRegs.PLLCR.bit.DIV значением divval; данные DIV. */
SysCtrlRegs.PLLCR.bit.DIV = divval; SysCtrlRegs.PLLCR.bit.DIV = divval;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Записывает clkVal значением (divval)?divval:1; данные clkVal. */
clkVal = (divval)?divval:1; clkVal = (divval)?divval:1;
/* Записывает clkVal значением XCLKIN * clkVal; данные clkVal. */
clkVal = XCLKIN * clkVal; clkVal = XCLKIN * clkVal;
// Optional: Wait for PLL to lock. // Optional: Wait for PLL to lock.
@@ -265,74 +198,47 @@ void InitPll(Uint16 divval, Uint16 divsel)
// the loop via ServiceDog(). // the loop via ServiceDog().
// Uncomment to disable the watchdog // Uncomment to disable the watchdog
/* Вызывает DisableDog с аргументами () в текущей последовательности операций. */
DisableDog(); DisableDog();
/* Повторяет или ожидает, пока выполняется while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1). */
while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1) while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// Uncomment to service the watchdog // Uncomment to service the watchdog
// ServiceDog(); // ServiceDog();
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает SysCtrlRegs.PLLSTS.bit.MCLKOFF значением 0; данные MCLKOFF. */
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0; SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
// If switching to 1/2 // If switching to 1/2
/* Проверяет if((divsel == 1) или (divsel == 2)); последующий оператор выполняется только при истинном условии. */
if((divsel == 1)||(divsel == 2)) if((divsel == 1)||(divsel == 2))
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает SysCtrlRegs.PLLSTS.bit.DIVSEL значением divsel; данные DIVSEL. */
SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel; SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Проверяет if(divsel == 0) clkVal /= 4; последующий оператор выполняется только при истинном условии. */
if(divsel == 0) clkVal /= 4; if(divsel == 0) clkVal /= 4;
/* Проверяет if(divsel == 1) clkVal /= 4; последующий оператор выполняется только при истинном условии. */
if(divsel == 1) clkVal /= 4; if(divsel == 1) clkVal /= 4;
/* Проверяет if(divsel == 2) clkVal /= 2; последующий оператор выполняется только при истинном условии. */
if(divsel == 2) clkVal /= 2; if(divsel == 2) clkVal /= 2;
// If switching to 1/1 // If switching to 1/1
// * First go to 1/2 and let the power settle // * First go to 1/2 and let the power settle
// The time required will depend on the system, this is only an example // The time required will depend on the system, this is only an example
// * Then switch to 1/1 // * Then switch to 1/1
/* Проверяет if((divval == 0) и (divsel == 3)); последующий оператор выполняется только при истинном условии. */
if((divval == 0) && (divsel == 3)) if((divval == 0) && (divsel == 3))
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает SysCtrlRegs.PLLSTS.bit.DIVSEL значением 2; данные DIVSEL. */
SysCtrlRegs.PLLSTS.bit.DIVSEL = 2; SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;
/* Вызывает DELAY_US с аргументами (50L) в текущей последовательности операций. */
DELAY_US(50L); DELAY_US(50L);
// pause_us(50L); // pause_us(50L);
/* Записывает SysCtrlRegs.PLLSTS.bit.DIVSEL значением 3; данные DIVSEL. */
SysCtrlRegs.PLLSTS.bit.DIVSEL = 3; SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Записывает SYSCLKOUT значением clkVal; данные SYSCLKOUT. */
SYSCLKOUT = clkVal; SYSCLKOUT = clkVal;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
@@ -346,86 +252,52 @@ void InitPll(Uint16 divval, Uint16 divsel)
// Note: If a peripherals clock is not enabled then you cannot // Note: If a peripherals clock is not enabled then you cannot
// read or write to the registers for that peripheral // read or write to the registers for that peripheral
/* Начинает функцию InitPeripheralClocks; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
void InitPeripheralClocks(void) void InitPeripheralClocks(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Объявляет Val — данные Val. */
long Val; long Val;
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
// HISPCP/LOSPCP prescale register settings, normally it will be set to default values // HISPCP/LOSPCP prescale register settings, normally it will be set to default values
/* Условие компиляции CLKMULT == 0: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT == 0 #if CLKMULT == 0
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0000; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0000; SysCtrlRegs.HISPCP.all = 0x0000;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif
#endif
/* Условие компиляции CLKMULT == 1: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT == 1 #if CLKMULT == 1
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0000; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0000; SysCtrlRegs.HISPCP.all = 0x0000;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif
#endif
/* Условие компиляции CLKMULT == 2: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT == 2 #if CLKMULT == 2
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0001; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0001; SysCtrlRegs.HISPCP.all = 0x0001;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif
#endif
/* Условие компиляции CLKMULT == 3: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT == 3 #if CLKMULT == 3
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0002; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0002; SysCtrlRegs.HISPCP.all = 0x0002;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif
#endif
/* Условие компиляции CLKMULT == 4: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT == 4 #if CLKMULT == 4
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0002; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0002; SysCtrlRegs.HISPCP.all = 0x0002;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif
#endif
/* Условие компиляции CLKMULT == 5: выбранный блок включается в текущий вариант прошивки. */
#if CLKMULT == 5 #if CLKMULT == 5
/* Записывает SysCtrlRegs.HISPCP.all значением 0x0003; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.HISPCP.all = 0x0003; SysCtrlRegs.HISPCP.all = 0x0003;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Записывает SysCtrlRegs.LOSPCP.all значением 0x0000; представление регистра целым словом без разбиения на битовые поля. */
SysCtrlRegs.LOSPCP.all = 0x0000; SysCtrlRegs.LOSPCP.all = 0x0000;
/* Записывает Val значением (SysCtrlRegs.HISPCP.all)?; данные Val. */
Val = (SysCtrlRegs.HISPCP.all)? Val = (SysCtrlRegs.HISPCP.all)?
/* Продолжает список аргументов, полей или выражение SysCtrlRegs.HISPCP.all*2 : 1;; порядок элементов сохраняется. */
SysCtrlRegs.HISPCP.all*2 : 1; SysCtrlRegs.HISPCP.all*2 : 1;
/* Записывает Val значением SYSCLKOUT / Val; данные Val. */
Val = SYSCLKOUT / Val; Val = SYSCLKOUT / Val;
/* Записывает HSPCLK значением Val; данные HSPCLK. */
HSPCLK = Val; HSPCLK = Val;
/* Записывает Val значением (SysCtrlRegs.LOSPCP.all)?; данные Val. */
Val = (SysCtrlRegs.LOSPCP.all)? Val = (SysCtrlRegs.LOSPCP.all)?
/* Продолжает список аргументов, полей или выражение SysCtrlRegs.LOSPCP.all*2 : 1;; порядок элементов сохраняется. */
SysCtrlRegs.LOSPCP.all*2 : 1; SysCtrlRegs.LOSPCP.all*2 : 1;
/* Записывает Val значением SYSCLKOUT / Val; данные Val. */
Val = SYSCLKOUT / Val; Val = SYSCLKOUT / Val;
/* Записывает LSPCLK значением Val; данные LSPCLK. */
LSPCLK = Val; LSPCLK = Val;
// XCLKOUT to SYSCLKOUT ratio. By default XCLKOUT = 1/4 SYSCLKOUT // XCLKOUT to SYSCLKOUT ratio. By default XCLKOUT = 1/4 SYSCLKOUT
// XTIMCLK = SYSCLKOUT/2 // XTIMCLK = SYSCLKOUT/2
/* Записывает XintfRegs.XINTCNF2.bit.XTIMCLK значением 1; данные XTIMCLK. */
XintfRegs.XINTCNF2.bit.XTIMCLK = 1; XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
// XCLKOUT = XTIMCLK/2 // XCLKOUT = XTIMCLK/2
/* Записывает XintfRegs.XINTCNF2.bit.CLKMODE значением 1; данные CLKMODE. */
XintfRegs.XINTCNF2.bit.CLKMODE = 1; XintfRegs.XINTCNF2.bit.CLKMODE = 1;
// Enable XCLKOUT // Enable XCLKOUT
/* Записывает XintfRegs.XINTCNF2.bit.CLKOFF значением 0; данные CLKOFF. */
XintfRegs.XINTCNF2.bit.CLKOFF = 0; XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// Peripheral clock enables set for the selected peripherals. // 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. // This function is not written to be an example of efficient code.
/* Записывает SysCtrlRegs.PCLKCR0.bit.ADCENCLK значением 1; данные ADCENCLK. */
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; // ADC SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; // ADC
// *IMPORTANT* // *IMPORTANT*
@@ -450,80 +321,46 @@ void InitPeripheralClocks(void)
// See the device data manual and/or the ADC Reference // See the device data manual and/or the ADC Reference
// Manual for more information. // Manual for more information.
/* Вызывает ADC_cal с аргументами () в текущей последовательности операций. */
ADC_cal(); ADC_cal();
/* Записывает SysCtrlRegs.PCLKCR0.bit.I2CAENCLK значением 1; данные I2CAENCLK. */
SysCtrlRegs.PCLKCR0.bit.I2CAENCLK = 1; // I2C SysCtrlRegs.PCLKCR0.bit.I2CAENCLK = 1; // I2C
/* Записывает SysCtrlRegs.PCLKCR0.bit.SCIAENCLK значением 1; данные SCIAENCLK. */
SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1; // SCI-A SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1; // SCI-A
/* Записывает SysCtrlRegs.PCLKCR0.bit.SCIBENCLK значением 1; данные SCIBENCLK. */
SysCtrlRegs.PCLKCR0.bit.SCIBENCLK = 1; // SCI-B SysCtrlRegs.PCLKCR0.bit.SCIBENCLK = 1; // SCI-B
/* Записывает SysCtrlRegs.PCLKCR0.bit.SCICENCLK значением 1; данные SCICENCLK. */
SysCtrlRegs.PCLKCR0.bit.SCICENCLK = 1; // SCI-C SysCtrlRegs.PCLKCR0.bit.SCICENCLK = 1; // SCI-C
/* Записывает SysCtrlRegs.PCLKCR0.bit.SPIAENCLK значением 1; данные SPIAENCLK. */
SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1; // SPI-A SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1; // SPI-A
/* Записывает SysCtrlRegs.PCLKCR0.bit.MCBSPAENCLK значением 1; данные MCBSPAENCLK. */
SysCtrlRegs.PCLKCR0.bit.MCBSPAENCLK = 1; // McBSP-A SysCtrlRegs.PCLKCR0.bit.MCBSPAENCLK = 1; // McBSP-A
/* Записывает SysCtrlRegs.PCLKCR0.bit.MCBSPBENCLK значением 1; данные MCBSPBENCLK. */
SysCtrlRegs.PCLKCR0.bit.MCBSPBENCLK = 1; // McBSP-B SysCtrlRegs.PCLKCR0.bit.MCBSPBENCLK = 1; // McBSP-B
/* Записывает SysCtrlRegs.PCLKCR0.bit.ECANAENCLK значением 1; данные ECANAENCLK. */
SysCtrlRegs.PCLKCR0.bit.ECANAENCLK=1; // eCAN-A SysCtrlRegs.PCLKCR0.bit.ECANAENCLK=1; // eCAN-A
/* Записывает SysCtrlRegs.PCLKCR0.bit.ECANBENCLK значением 1; данные ECANBENCLK. */
SysCtrlRegs.PCLKCR0.bit.ECANBENCLK=1; // eCAN-B SysCtrlRegs.PCLKCR0.bit.ECANBENCLK=1; // eCAN-B
/* Записывает SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC значением 0; данные TBCLKSYNC. */
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Disable TBCLK within the ePWM 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.EPWM1ENCLK = 1; // ePWM1
/* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK значением 1; данные EPWM2ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK = 1; // ePWM2 SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK = 1; // ePWM2
/* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK значением 1; данные EPWM3ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK = 1; // ePWM3 SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK = 1; // ePWM3
/* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM4ENCLK значением 1; данные EPWM4ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM4ENCLK = 1; // ePWM4 SysCtrlRegs.PCLKCR1.bit.EPWM4ENCLK = 1; // ePWM4
/* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM5ENCLK значением 1; данные EPWM5ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM5ENCLK = 1; // ePWM5 SysCtrlRegs.PCLKCR1.bit.EPWM5ENCLK = 1; // ePWM5
/* Записывает SysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK значением 1; данные EPWM6ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK = 1; // ePWM6 SysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK = 1; // ePWM6
/* Записывает SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC значением 1; данные TBCLKSYNC. */
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK within the ePWM 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.ECAP3ENCLK = 1; // eCAP3
/* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP4ENCLK значением 1; данные ECAP4ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP4ENCLK = 1; // eCAP4 SysCtrlRegs.PCLKCR1.bit.ECAP4ENCLK = 1; // eCAP4
/* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK значением 1; данные ECAP5ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK = 1; // eCAP5 SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK = 1; // eCAP5
/* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK значением 1; данные ECAP6ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK = 1; // eCAP6 SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK = 1; // eCAP6
/* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK значением 1; данные ECAP1ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK = 1; // eCAP1 SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK = 1; // eCAP1
/* Записывает SysCtrlRegs.PCLKCR1.bit.ECAP2ENCLK значением 1; данные ECAP2ENCLK. */
SysCtrlRegs.PCLKCR1.bit.ECAP2ENCLK = 1; // eCAP2 SysCtrlRegs.PCLKCR1.bit.ECAP2ENCLK = 1; // eCAP2
/* Записывает SysCtrlRegs.PCLKCR1.bit.EQEP1ENCLK значением 1; данные EQEP1ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EQEP1ENCLK = 1; // eQEP1 SysCtrlRegs.PCLKCR1.bit.EQEP1ENCLK = 1; // eQEP1
/* Записывает SysCtrlRegs.PCLKCR1.bit.EQEP2ENCLK значением 1; данные EQEP2ENCLK. */
SysCtrlRegs.PCLKCR1.bit.EQEP2ENCLK = 1; // eQEP2 SysCtrlRegs.PCLKCR1.bit.EQEP2ENCLK = 1; // eQEP2
/* Записывает SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK значением 1; данные CPUTIMER0ENCLK. */
SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1; // CPU Timer 0 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.CPUTIMER1ENCLK = 1; // CPU Timer 1
/* Записывает SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK значением 1; данные CPUTIMER2ENCLK. */
SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK = 1; // CPU Timer 2 SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK = 1; // CPU Timer 2
/* Записывает SysCtrlRegs.PCLKCR3.bit.DMAENCLK значением 1; данные DMAENCLK. */
SysCtrlRegs.PCLKCR3.bit.DMAENCLK = 1; // DMA Clock SysCtrlRegs.PCLKCR3.bit.DMAENCLK = 1; // DMA Clock
/* Записывает SysCtrlRegs.PCLKCR3.bit.XINTFENCLK значением 1; данные XINTFENCLK. */
SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1; // XTIMCLK SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1; // XTIMCLK
/* Записывает SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK значением 1; аппаратная линия ввода/вывода GPIOINENCLK. */
SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1; // GPIO input clock SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1; // GPIO input clock
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -532,70 +369,44 @@ void InitPeripheralClocks(void)
// This function unlocks the CSM. User must replace 0xFFFF's with current // This function unlocks the CSM. User must replace 0xFFFF's with current
// password for the DSP. Returns 1 if unlock is successful. // password for the DSP. Returns 1 if unlock is successful.
/* Задаёт STATUS_FAIL = 0; состояние FAIL. */
#define STATUS_FAIL 0 #define STATUS_FAIL 0
/* Задаёт STATUS_SUCCESS = 1; состояние SUCCESS. */
#define STATUS_SUCCESS 1 #define STATUS_SUCCESS 1
/* Начинает функцию CsmUnlock; назначение модуля — поставляемое TI описание SysCtrl для семейства C2833x. */
Uint16 CsmUnlock() Uint16 CsmUnlock()
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Объявляет temp — данные temp. volatile требует фактического чтения или записи при каждом доступе. */
volatile Uint16 temp; volatile Uint16 temp;
// Load the key registers with the current password. The 0xFFFF's are dummy // 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. // passwords. User should replace them with the correct password for the DSP.
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает CsmRegs.KEY0 значением 0xFFFF; данные KEY0. */
CsmRegs.KEY0 = 0xFFFF; CsmRegs.KEY0 = 0xFFFF;
/* Записывает CsmRegs.KEY1 значением 0xFFFF; данные KEY1. */
CsmRegs.KEY1 = 0xFFFF; CsmRegs.KEY1 = 0xFFFF;
/* Записывает CsmRegs.KEY2 значением 0xFFFF; данные KEY2. */
CsmRegs.KEY2 = 0xFFFF; CsmRegs.KEY2 = 0xFFFF;
/* Записывает CsmRegs.KEY3 значением 0xFFFF; данные KEY3. */
CsmRegs.KEY3 = 0xFFFF; CsmRegs.KEY3 = 0xFFFF;
/* Записывает CsmRegs.KEY4 значением 0xFFFF; данные KEY4. */
CsmRegs.KEY4 = 0xFFFF; CsmRegs.KEY4 = 0xFFFF;
/* Записывает CsmRegs.KEY5 значением 0xFFFF; данные KEY5. */
CsmRegs.KEY5 = 0xFFFF; CsmRegs.KEY5 = 0xFFFF;
/* Записывает CsmRegs.KEY6 значением 0xFFFF; данные KEY6. */
CsmRegs.KEY6 = 0xFFFF; CsmRegs.KEY6 = 0xFFFF;
/* Записывает CsmRegs.KEY7 значением 0xFFFF; данные KEY7. */
CsmRegs.KEY7 = 0xFFFF; CsmRegs.KEY7 = 0xFFFF;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
// Perform a dummy read of the password locations // Perform a dummy read of the password locations
// if they match the key values, the CSM will unlock // if they match the key values, the CSM will unlock
/* Записывает temp значением CsmPwl.PSWD0; данные temp. */
temp = CsmPwl.PSWD0; temp = CsmPwl.PSWD0;
/* Записывает temp значением CsmPwl.PSWD1; данные temp. */
temp = CsmPwl.PSWD1; temp = CsmPwl.PSWD1;
/* Записывает temp значением CsmPwl.PSWD2; данные temp. */
temp = CsmPwl.PSWD2; temp = CsmPwl.PSWD2;
/* Записывает temp значением CsmPwl.PSWD3; данные temp. */
temp = CsmPwl.PSWD3; temp = CsmPwl.PSWD3;
/* Записывает temp значением CsmPwl.PSWD4; данные temp. */
temp = CsmPwl.PSWD4; temp = CsmPwl.PSWD4;
/* Записывает temp значением CsmPwl.PSWD5; данные temp. */
temp = CsmPwl.PSWD5; temp = CsmPwl.PSWD5;
/* Записывает temp значением CsmPwl.PSWD6; данные temp. */
temp = CsmPwl.PSWD6; temp = CsmPwl.PSWD6;
/* Записывает temp значением CsmPwl.PSWD7; данные temp. */
temp = CsmPwl.PSWD7; temp = CsmPwl.PSWD7;
// If the CSM unlocked, return succes, otherwise return // If the CSM unlocked, return succes, otherwise return
// failure. // failure.
/* Проверяет if (CsmRegs.CSMSCR.bit.SECURE == 0) return STATUS_SUCCESS; последующий оператор выполняется только при истинном условии. */
if (CsmRegs.CSMSCR.bit.SECURE == 0) return STATUS_SUCCESS; if (CsmRegs.CSMSCR.bit.SECURE == 0) return STATUS_SUCCESS;
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
else return STATUS_FAIL; else return STATUS_FAIL;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Xintf для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $ // TI File $Revision: /main/5 $
// Checkin $Date: August 16, 2007 11:06:26 $ // Checkin $Date: August 16, 2007 11:06:26 $
//########################################################################### //###########################################################################
@@ -19,9 +18,7 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
/* Подключает "DSP2833x_Examples.h": поставляемое TI описание Examples для семейства C2833x. */
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -33,9 +30,7 @@
// so can yield unpredictable results // so can yield unpredictable results
/* Начинает функцию InitXintf; назначение модуля — поставляемое TI описание Xintf для семейства C2833x. */
void InitXintf(void) void InitXintf(void)
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
// This shows how to write to the XINTF registers. The // This shows how to write to the XINTF registers. The
// values used here are the default state after reset. // values used here are the default state after reset.
@@ -49,18 +44,13 @@ void InitXintf(void)
// All Zones--------------------------------- // All Zones---------------------------------
// Timing for all zones based on XTIMCLK = 1/2 SYSCLKOUT // Timing for all zones based on XTIMCLK = 1/2 SYSCLKOUT
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает XintfRegs.XINTCNF2.bit.XTIMCLK значением 1; данные XTIMCLK. */
XintfRegs.XINTCNF2.bit.XTIMCLK = 1; XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
// No write buffering // No write buffering
/* Записывает XintfRegs.XINTCNF2.bit.WRBUFF значением 0; данные WRBUFF. */
XintfRegs.XINTCNF2.bit.WRBUFF = 0; XintfRegs.XINTCNF2.bit.WRBUFF = 0;
// XCLKOUT is enabled // XCLKOUT is enabled
/* Записывает XintfRegs.XINTCNF2.bit.CLKOFF значением 0; данные CLKOFF. */
XintfRegs.XINTCNF2.bit.CLKOFF = 0; XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// XCLKOUT = XTIMCLK/2 // XCLKOUT = XTIMCLK/2
/* Записывает XintfRegs.XINTCNF2.bit.CLKMODE значением 1; данные CLKMODE. */
XintfRegs.XINTCNF2.bit.CLKMODE = 1; XintfRegs.XINTCNF2.bit.CLKMODE = 1;
@@ -68,68 +58,48 @@ void InitXintf(void)
// When using ready, ACTIVE must be 1 or greater // When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater // Lead must always be 1 or greater
// Zone write timing // Zone write timing
/* Записывает XintfRegs.XTIMING0.bit.XWRLEAD значением 3; данные XWRLEAD. */
XintfRegs.XTIMING0.bit.XWRLEAD = 3; XintfRegs.XTIMING0.bit.XWRLEAD = 3;
/* Записывает XintfRegs.XTIMING0.bit.XWRACTIVE значением 7; данные XWRACTIVE. */
XintfRegs.XTIMING0.bit.XWRACTIVE = 7; XintfRegs.XTIMING0.bit.XWRACTIVE = 7;
/* Записывает XintfRegs.XTIMING0.bit.XWRTRAIL значением 3; данные XWRTRAIL. */
XintfRegs.XTIMING0.bit.XWRTRAIL = 3; XintfRegs.XTIMING0.bit.XWRTRAIL = 3;
// Zone read timing // Zone read timing
/* Записывает XintfRegs.XTIMING0.bit.XRDLEAD значением 3; данные XRDLEAD. */
XintfRegs.XTIMING0.bit.XRDLEAD = 3; XintfRegs.XTIMING0.bit.XRDLEAD = 3;
/* Записывает XintfRegs.XTIMING0.bit.XRDACTIVE значением 7; данные XRDACTIVE. */
XintfRegs.XTIMING0.bit.XRDACTIVE = 7; XintfRegs.XTIMING0.bit.XRDACTIVE = 7;
/* Записывает XintfRegs.XTIMING0.bit.XRDTRAIL значением 3; данные XRDTRAIL. */
XintfRegs.XTIMING0.bit.XRDTRAIL = 3; XintfRegs.XTIMING0.bit.XRDTRAIL = 3;
// double all Zone read/write lead/active/trail timing // double all Zone read/write lead/active/trail timing
/* Записывает XintfRegs.XTIMING0.bit.X2TIMING значением 1; данные X2TIMING. */
XintfRegs.XTIMING0.bit.X2TIMING = 1; XintfRegs.XTIMING0.bit.X2TIMING = 1;
// Zone will sample XREADY signal // Zone will sample XREADY signal
/* Записывает XintfRegs.XTIMING0.bit.USEREADY значением 1; данные USEREADY. */
XintfRegs.XTIMING0.bit.USEREADY = 1; XintfRegs.XTIMING0.bit.USEREADY = 1;
/* Записывает XintfRegs.XTIMING0.bit.READYMODE значением 1; данные READYMODE. */
XintfRegs.XTIMING0.bit.READYMODE = 1; // sample asynchronous XintfRegs.XTIMING0.bit.READYMODE = 1; // sample asynchronous
// Size must be either: // Size must be either:
// 0,1 = x32 or // 0,1 = x32 or
// 1,1 = x16 other values are reserved // 1,1 = x16 other values are reserved
/* Записывает XintfRegs.XTIMING0.bit.XSIZE значением 3; данные XSIZE. */
XintfRegs.XTIMING0.bit.XSIZE = 3; XintfRegs.XTIMING0.bit.XSIZE = 3;
// Zone 6------------------------------------ // Zone 6------------------------------------
// When using ready, ACTIVE must be 1 or greater // When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater // Lead must always be 1 or greater
// Zone write timing // Zone write timing
/* Записывает XintfRegs.XTIMING6.bit.XWRLEAD значением 3; данные XWRLEAD. */
XintfRegs.XTIMING6.bit.XWRLEAD = 3; XintfRegs.XTIMING6.bit.XWRLEAD = 3;
/* Записывает XintfRegs.XTIMING6.bit.XWRACTIVE значением 7; данные XWRACTIVE. */
XintfRegs.XTIMING6.bit.XWRACTIVE = 7; XintfRegs.XTIMING6.bit.XWRACTIVE = 7;
/* Записывает XintfRegs.XTIMING6.bit.XWRTRAIL значением 3; данные XWRTRAIL. */
XintfRegs.XTIMING6.bit.XWRTRAIL = 3; XintfRegs.XTIMING6.bit.XWRTRAIL = 3;
// Zone read timing // Zone read timing
/* Записывает XintfRegs.XTIMING6.bit.XRDLEAD значением 3; данные XRDLEAD. */
XintfRegs.XTIMING6.bit.XRDLEAD = 3; XintfRegs.XTIMING6.bit.XRDLEAD = 3;
/* Записывает XintfRegs.XTIMING6.bit.XRDACTIVE значением 7; данные XRDACTIVE. */
XintfRegs.XTIMING6.bit.XRDACTIVE = 7; XintfRegs.XTIMING6.bit.XRDACTIVE = 7;
/* Записывает XintfRegs.XTIMING6.bit.XRDTRAIL значением 3; данные XRDTRAIL. */
XintfRegs.XTIMING6.bit.XRDTRAIL = 3; XintfRegs.XTIMING6.bit.XRDTRAIL = 3;
// double all Zone read/write lead/active/trail timing // double all Zone read/write lead/active/trail timing
/* Записывает XintfRegs.XTIMING6.bit.X2TIMING значением 1; данные X2TIMING. */
XintfRegs.XTIMING6.bit.X2TIMING = 1; XintfRegs.XTIMING6.bit.X2TIMING = 1;
// Zone will sample XREADY signal // Zone will sample XREADY signal
/* Записывает XintfRegs.XTIMING6.bit.USEREADY значением 1; данные USEREADY. */
XintfRegs.XTIMING6.bit.USEREADY = 1; XintfRegs.XTIMING6.bit.USEREADY = 1;
/* Записывает XintfRegs.XTIMING6.bit.READYMODE значением 1; данные READYMODE. */
XintfRegs.XTIMING6.bit.READYMODE = 1; // sample asynchronous XintfRegs.XTIMING6.bit.READYMODE = 1; // sample asynchronous
// Size must be either: // Size must be either:
// 0,1 = x32 or // 0,1 = x32 or
// 1,1 = x16 other values are reserved // 1,1 = x16 other values are reserved
/* Записывает XintfRegs.XTIMING6.bit.XSIZE значением 3; данные XSIZE. */
XintfRegs.XTIMING6.bit.XSIZE = 3; XintfRegs.XTIMING6.bit.XSIZE = 3;
@@ -137,229 +107,135 @@ void InitXintf(void)
// When using ready, ACTIVE must be 1 or greater // When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater // Lead must always be 1 or greater
// Zone write timing // Zone write timing
/* Записывает XintfRegs.XTIMING7.bit.XWRLEAD значением 3; данные XWRLEAD. */
XintfRegs.XTIMING7.bit.XWRLEAD = 3; XintfRegs.XTIMING7.bit.XWRLEAD = 3;
/* Записывает XintfRegs.XTIMING7.bit.XWRACTIVE значением 7; данные XWRACTIVE. */
XintfRegs.XTIMING7.bit.XWRACTIVE = 7; XintfRegs.XTIMING7.bit.XWRACTIVE = 7;
/* Записывает XintfRegs.XTIMING7.bit.XWRTRAIL значением 3; данные XWRTRAIL. */
XintfRegs.XTIMING7.bit.XWRTRAIL = 3; XintfRegs.XTIMING7.bit.XWRTRAIL = 3;
// Zone read timing // Zone read timing
/* Записывает XintfRegs.XTIMING7.bit.XRDLEAD значением 3; данные XRDLEAD. */
XintfRegs.XTIMING7.bit.XRDLEAD = 3; XintfRegs.XTIMING7.bit.XRDLEAD = 3;
/* Записывает XintfRegs.XTIMING7.bit.XRDACTIVE значением 7; данные XRDACTIVE. */
XintfRegs.XTIMING7.bit.XRDACTIVE = 7; XintfRegs.XTIMING7.bit.XRDACTIVE = 7;
/* Записывает XintfRegs.XTIMING7.bit.XRDTRAIL значением 3; данные XRDTRAIL. */
XintfRegs.XTIMING7.bit.XRDTRAIL = 3; XintfRegs.XTIMING7.bit.XRDTRAIL = 3;
// double all Zone read/write lead/active/trail timing // double all Zone read/write lead/active/trail timing
/* Записывает XintfRegs.XTIMING7.bit.X2TIMING значением 1; данные X2TIMING. */
XintfRegs.XTIMING7.bit.X2TIMING = 1; XintfRegs.XTIMING7.bit.X2TIMING = 1;
// Zone will sample XREADY signal // Zone will sample XREADY signal
/* Записывает XintfRegs.XTIMING7.bit.USEREADY значением 1; данные USEREADY. */
XintfRegs.XTIMING7.bit.USEREADY = 1; XintfRegs.XTIMING7.bit.USEREADY = 1;
/* Записывает XintfRegs.XTIMING7.bit.READYMODE значением 1; данные READYMODE. */
XintfRegs.XTIMING7.bit.READYMODE = 1; // sample asynchronous XintfRegs.XTIMING7.bit.READYMODE = 1; // sample asynchronous
// Size must be either: // Size must be either:
// 0,1 = x32 or // 0,1 = x32 or
// 1,1 = x16 other values are reserved // 1,1 = x16 other values are reserved
/* Записывает XintfRegs.XTIMING7.bit.XSIZE значением 3; данные XSIZE. */
XintfRegs.XTIMING7.bit.XSIZE = 3; XintfRegs.XTIMING7.bit.XSIZE = 3;
// Bank switching // Bank switching
// Assume Zone 7 is slow, so add additional BCYC cycles // Assume Zone 7 is slow, so add additional BCYC cycles
// when ever switching from Zone 7 to another Zone. // when ever switching from Zone 7 to another Zone.
// This will help avoid bus contention. // This will help avoid bus contention.
/* Записывает XintfRegs.XBANK.bit.BANK значением 7; данные BANK. */
XintfRegs.XBANK.bit.BANK = 7; XintfRegs.XBANK.bit.BANK = 7;
/* Записывает XintfRegs.XBANK.bit.BCYC значением 7; данные BCYC. */
XintfRegs.XBANK.bit.BCYC = 7; XintfRegs.XBANK.bit.BCYC = 7;
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
//Force a pipeline flush to ensure that the write to //Force a pipeline flush to ensure that the write to
//the last register configured occurs before returning. //the last register configured occurs before returning.
/* Инициализирует модуль вызовом InitXintf16Gpio(); перед его дальнейшим использованием. */
InitXintf16Gpio(); InitXintf16Gpio();
// InitXintf32Gpio(); // InitXintf32Gpio();
/* Вызывает asm с аргументами (" RPT #7 || NOP") в текущей последовательности операций. */
asm(" RPT #7 || NOP"); asm(" RPT #7 || NOP");
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Начинает функцию InitXintf32Gpio; назначение модуля — поставляемое TI описание Xintf для семейства C2833x. */
void InitXintf32Gpio() void InitXintf32Gpio()
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO48 значением 3; аппаратная линия ввода/вывода GPIO48. */
GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 3; // XD31 GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 3; // XD31
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO49 значением 3; аппаратная линия ввода/вывода GPIO49. */
GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 3; // XD30 GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 3; // XD30
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO50 значением 3; аппаратная линия ввода/вывода GPIO50. */
GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 3; // XD29 GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 3; // XD29
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO51 значением 3; аппаратная линия ввода/вывода GPIO51. */
GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 3; // XD28 GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 3; // XD28
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO52 значением 3; аппаратная линия ввода/вывода GPIO52. */
GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 3; // XD27 GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 3; // XD27
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO53 значением 3; аппаратная линия ввода/вывода GPIO53. */
GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 3; // XD26 GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 3; // XD26
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO54 значением 3; аппаратная линия ввода/вывода GPIO54. */
GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 3; // XD25 GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 3; // XD25
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO55 значением 3; аппаратная линия ввода/вывода GPIO55. */
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 3; // XD24 GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 3; // XD24
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO56 значением 3; аппаратная линия ввода/вывода GPIO56. */
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 3; // XD23 GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 3; // XD23
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO57 значением 3; аппаратная линия ввода/вывода GPIO57. */
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 3; // XD22 GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 3; // XD22
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO58 значением 3; аппаратная линия ввода/вывода GPIO58. */
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3; // XD21 GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3; // XD21
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO59 значением 3; аппаратная линия ввода/вывода GPIO59. */
GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 3; // XD20 GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 3; // XD20
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO60 значением 3; аппаратная линия ввода/вывода GPIO60. */
GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3; // XD19 GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3; // XD19
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO61 значением 3; аппаратная линия ввода/вывода GPIO61. */
GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3; // XD18 GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3; // XD18
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO62 значением 3; аппаратная линия ввода/вывода GPIO62. */
GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 3; // XD17 GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 3; // XD17
/* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO63 значением 3; аппаратная линия ввода/вывода GPIO63. */
GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 3; // XD16 GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 3; // XD16
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO48 значением 3; аппаратная линия ввода/вывода GPIO48. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO48 = 3; // XD31 asynchronous input 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.GPIO49 = 3; // XD30 asynchronous input
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO50 значением 3; аппаратная линия ввода/вывода GPIO50. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 3; // XD29 asynchronous input 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.GPIO51 = 3; // XD28 asynchronous input
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO52 значением 3; аппаратная линия ввода/вывода GPIO52. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO52 = 3; // XD27 asynchronous input 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.GPIO53 = 3; // XD26 asynchronous input
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO54 значением 3; аппаратная линия ввода/вывода GPIO54. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; // XD25 asynchronous input 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.GPIO55 = 3; // XD24 asynchronous input
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO56 значением 3; аппаратная линия ввода/вывода GPIO56. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3; // XD23 asynchronous input 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.GPIO57 = 3; // XD22 asynchronous input
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO58 значением 3; аппаратная линия ввода/вывода GPIO58. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; // XD21 asynchronous input 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.GPIO59 = 3; // XD20 asynchronous input
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO60 значением 3; аппаратная линия ввода/вывода GPIO60. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; // XD19 asynchronous input 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.GPIO61 = 3; // XD18 asynchronous input
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO62 значением 3; аппаратная линия ввода/вывода GPIO62. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // XD17 asynchronous input GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // XD17 asynchronous input
/* Записывает GpioCtrlRegs.GPBQSEL2.bit.GPIO63 значением 3; аппаратная линия ввода/вывода GPIO63. */
GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3; // XD16 asynchronous input GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3; // XD16 asynchronous input
/* Инициализирует модуль вызовом InitXintf16Gpio(); перед его дальнейшим использованием. */
InitXintf16Gpio(); InitXintf16Gpio();
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Начинает функцию InitXintf16Gpio; назначение модуля — поставляемое TI описание Xintf для семейства C2833x. */
void InitXintf16Gpio() void InitXintf16Gpio()
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Разрешение записи в защищённые регистры периферии. */
EALLOW; EALLOW;
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO64 значением 3; аппаратная линия ввода/вывода GPIO64. */
GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 3; // XD15 GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 3; // XD15
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO65 значением 3; аппаратная линия ввода/вывода GPIO65. */
GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 3; // XD14 GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 3; // XD14
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO66 значением 3; аппаратная линия ввода/вывода GPIO66. */
GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 3; // XD13 GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 3; // XD13
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO67 значением 3; аппаратная линия ввода/вывода GPIO67. */
GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 3; // XD12 GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 3; // XD12
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO68 значением 3; аппаратная линия ввода/вывода GPIO68. */
GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 3; // XD11 GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 3; // XD11
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO69 значением 3; аппаратная линия ввода/вывода GPIO69. */
GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 3; // XD10 GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 3; // XD10
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO70 значением 3; аппаратная линия ввода/вывода GPIO70. */
GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 3; // XD19 GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 3; // XD19
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO71 значением 3; аппаратная линия ввода/вывода GPIO71. */
GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 3; // XD8 GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 3; // XD8
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO72 значением 3; аппаратная линия ввода/вывода GPIO72. */
GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 3; // XD7 GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 3; // XD7
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO73 значением 3; аппаратная линия ввода/вывода GPIO73. */
GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3; // XD6 GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3; // XD6
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO74 значением 3; аппаратная линия ввода/вывода GPIO74. */
GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 3; // XD5 GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 3; // XD5
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO75 значением 3; аппаратная линия ввода/вывода GPIO75. */
GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 3; // XD4 GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 3; // XD4
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO76 значением 3; аппаратная линия ввода/вывода GPIO76. */
GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 3; // XD3 GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 3; // XD3
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO77 значением 3; аппаратная линия ввода/вывода GPIO77. */
GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 3; // XD2 GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 3; // XD2
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO78 значением 3; аппаратная линия ввода/вывода GPIO78. */
GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 3; // XD1 GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 3; // XD1
/* Записывает GpioCtrlRegs.GPCMUX1.bit.GPIO79 значением 3; аппаратная линия ввода/вывода GPIO79. */
GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 3; // XD0 GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 3; // XD0
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO40 значением 3; аппаратная линия ввода/вывода GPIO40. */
GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 3; // XA0/XWE1n GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 3; // XA0/XWE1n
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO41 значением 3; аппаратная линия ввода/вывода GPIO41. */
GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 3; // XA1 GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 3; // XA1
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO42 значением 3; аппаратная линия ввода/вывода GPIO42. */
GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3; // XA2 GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3; // XA2
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO43 значением 3; аппаратная линия ввода/вывода GPIO43. */
GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 3; // XA3 GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 3; // XA3
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO44 значением 3; аппаратная линия ввода/вывода GPIO44. */
GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 3; // XA4 GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 3; // XA4
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO45 значением 3; аппаратная линия ввода/вывода GPIO45. */
GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 3; // XA5 GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 3; // XA5
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO46 значением 3; аппаратная линия ввода/вывода GPIO46. */
GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 3; // XA6 GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 3; // XA6
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO47 значением 3; аппаратная линия ввода/вывода GPIO47. */
GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 3; // XA7 GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 3; // XA7
/* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO80 значением 3; аппаратная линия ввода/вывода GPIO80. */
GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 3; // XA8 GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 3; // XA8
/* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO81 значением 3; аппаратная линия ввода/вывода GPIO81. */
GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 3; // XA9 GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 3; // XA9
/* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO82 значением 3; аппаратная линия ввода/вывода GPIO82. */
GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 3; // XA10 GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 3; // XA10
/* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO83 значением 3; аппаратная линия ввода/вывода GPIO83. */
GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 3; // XA11 GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 3; // XA11
/* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO84 значением 3; аппаратная линия ввода/вывода GPIO84. */
GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 3; // XA12 GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 3; // XA12
/* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO85 значением 3; аппаратная линия ввода/вывода GPIO85. */
GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 3; // XA13 GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 3; // XA13
/* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO86 значением 3; аппаратная линия ввода/вывода GPIO86. */
GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 3; // XA14 GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 3; // XA14
/* Записывает GpioCtrlRegs.GPCMUX2.bit.GPIO87 значением 3; аппаратная линия ввода/вывода GPIO87. */
GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 3; // XA15 GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 3; // XA15
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO39 значением 3; аппаратная линия ввода/вывода GPIO39. */
GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // XA16 GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // XA16
// GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // XA17 // GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // XA17
// GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // XA18 // GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // XA18
// GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // XA19 // GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // XA19
// GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // XREADY // GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // XREADY
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO35 значением 3; аппаратная линия ввода/вывода GPIO35. */
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // XRNW GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // XRNW
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO38 значением 3; аппаратная линия ввода/вывода GPIO38. */
GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3; // XWE0 GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3; // XWE0
// GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // XZCS0 // GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // XZCS0
/* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO37 значением 3; аппаратная линия ввода/вывода GPIO37. */
GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // XZCS7 GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // XZCS7
// GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // XZCS6 // GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // XZCS6
/* Закрытие доступа к защищённым регистрам периферии. */
EDIS; EDIS;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
; Поставляемое ti описание usdelay для семейства c2833x. Пояснения в UTF-8.
;// TI File $Revision: /main/4 $ ;// TI File $Revision: /main/4 $
;// Checkin $Date: July 30, 2007 10:28:57 $ ;// Checkin $Date: July 30, 2007 10:28:57 $
;//########################################################################### ;//###########################################################################
@@ -8,38 +7,38 @@
;// TITLE: Simple delay function ;// TITLE: Simple delay function
;// ;//
;// DESCRIPTION: ;// DESCRIPTION:
;// ;//
;// This is a simple delay function that can be used to insert a specified ;// 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 ;// This function is only accurate if executed from internal zero-waitstate
;// SARAM. If it is executed from waitstate memory then the delay will be ;// SARAM. If it is executed from waitstate memory then the delay will be
;// longer then specified. ;// longer then specified.
;// ;//
;// To use this function: ;// To use this function:
;// ;//
;// 1 - update the CPU clock speed in the DSP2833x_Examples.h ;// 1 - update the CPU clock speed in the DSP2833x_Examples.h
;// file. For example: ;// file. For example:
;// #define CPU_RATE 6.667L // for a 150MHz CPU clock speed ;// #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 ;// 2 - Call this function by using the DELAY_US(A) macro
;// that is defined in the DSP2833x_Examples.h file. This macro ;// that is defined in the DSP2833x_Examples.h file. This macro
;// will convert the number of microseconds specified ;// 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. ;// This count will be based on the CPU frequency you specify.
;// ;//
;// 3 - For the most accurate delay ;// 3 - For the most accurate delay
;// - Execute this function in 0 waitstate RAM. ;// - Execute this function in 0 waitstate RAM.
;// - Disable interrupts before calling the function ;// - Disable interrupts before calling the function
;// If you do not disable interrupts, then think of ;// If you do not disable interrupts, then think of
;// this as an "at least" delay function as the actual ;// 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 ;// 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 AL,#LowLoopCount
;// MOV AH,#HighLoopCount ;// MOV AH,#HighLoopCount
@@ -54,23 +53,16 @@
;//########################################################################### ;//###########################################################################
;// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ ;// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $
;// $Release Date: August 1, 2008 $ ;// $Release Date: August 1, 2008 $
;//########################################################################### ;//###########################################################################
; Экспортирует символ для связывания с C-кодом. Операция: .def _DSP28x_usDelay.
.def _DSP28x_usDelay .def _DSP28x_usDelay
; Выбирает секцию объектного файла для следующих инструкций. Операция: .sect ".text".
.sect ".text" .sect ".text"
; Объявляет глобальный символ для линкера. Операция: .global __DSP28x_usDelay.
.global __DSP28x_usDelay .global __DSP28x_usDelay
; Объявляет метку _DSP28x_usDelay: для перехода или вызова. Операция: _DSP28x_usDelay:.
_DSP28x_usDelay: _DSP28x_usDelay:
; Вычитает операнд и обновляет арифметическое состояние. Операция: SUB ACC,#1.
SUB ACC,#1 SUB ACC,#1
; Выполняет условный переход по флагам результата. Операция: BF _DSP28x_usDelay,GEQ.
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0 BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
; Возвращает управление вызывающему коду через длинный адрес возврата. Операция: LRETR. LRETR
LRETR
;There is a 9/10 cycle overhead and each loop ;There is a 9/10 cycle overhead and each loop
;takes five cycles. The LoopCount is given by ;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 $ // TI File $Revision: /main/9 $
// Checkin $Date: August 8, 2008 11:09:25 $ // Checkin $Date: August 8, 2008 11:09:25 $
@@ -6,18 +5,18 @@
// //
// FILE: DSP2833x_Headers_BIOS.cmd // FILE: DSP2833x_Headers_BIOS.cmd
// //
// TITLE: DSP2833x Peripheral registers linker command file // TITLE: DSP2833x Peripheral registers linker command file
//
// DESCRIPTION:
// //
// DESCRIPTION:
//
// This file is for use in BIOS applications. // 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 // used within the DSP2833x headerfiles into the correct memory
// mapped locations. // mapped locations.
// //
// This version of the file does not include the PieVectorTable structure. // 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. // file which includes the PieVectorTable structure.
// //
//##################################################################### //#####################################################################
@@ -26,210 +25,154 @@
//##################################################################### //#####################################################################
*/ */
/* Начинает описание физических блоков памяти для линкера. */
MEMORY 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. */ XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */
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. */ 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. */ MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */
CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ /* Записывает origin значением 0x000C08, length = 0x000008; данные origin. */ MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */
CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ /* Записывает origin значением 0x000C10, length = 0x000008; данные origin. */
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. */ EPWM1 : origin = 0x006800, length = 0x000022 /* Enhanced PWM 1 registers */
MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */ /* Записывает origin значением 0x005040, length = 0x000040; данные origin. */ 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. */ ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */
ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN-A local acceptance masks */ /* Записывает origin значением 0x006040, length = 0x000040; данные origin. */ ECAP2 : origin = 0x006A20, length = 0x000020 /* Enhanced Capture 2 registers */
ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN-A message object time stamps */ /* Записывает origin значением 0x006080, length = 0x000040; данные origin. */ ECAP3 : origin = 0x006A40, length = 0x000020 /* Enhanced Capture 3 registers */
ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN-A object time-out registers */ /* Записывает origin значением 0x0060C0, length = 0x000040; данные origin. */ ECAP4 : origin = 0x006A60, length = 0x000020 /* Enhanced Capture 4 registers */
ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN-A mailboxes */ /* Записывает origin значением 0x006100, length = 0x000100; данные origin. */ 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. */ GPIOCTRL : origin = 0x006F80, length = 0x000040 /* GPIO control registers */
ECANB_LAM : origin = 0x006240, length = 0x000040 /* eCAN-B local acceptance masks */ /* Записывает origin значением 0x006240, length = 0x000040; данные origin. */ GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */
ECANB_MOTS : origin = 0x006280, length = 0x000040 /* eCAN-B message object time stamps */ /* Записывает origin значением 0x006280, length = 0x000040; данные origin. */ GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */
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. */ 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. */ ADC : origin = 0x007100, length = 0x000020 /* ADC registers */
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. */
ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */ /* Записывает origin значением 0x006A00, length = 0x000020; данные origin. */ SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */
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. */
EQEP1 : origin = 0x006B00, length = 0x000040 /* Enhanced QEP 1 registers */ /* Записывает origin значением 0x006B00, length = 0x000040; данные origin. */ SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */
EQEP2 : origin = 0x006B40, length = 0x000040 /* Enhanced QEP 2 registers */ /* Записывает origin значением 0x006B40, length = 0x000040; данные origin. */
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. */ PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */
GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */ /* Записывает origin значением 0x006FC0, length = 0x000020; данные origin. */
GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */ /* Записывает origin значением 0x006FE0, length = 0x000020; данные origin. */
SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */ /* Записывает origin значением 0x007010, length = 0x000020; данные origin. */
SPIA : origin = 0x007040, length = 0x000010 /* SPI-A registers */ /* Записывает origin значением 0x007040, length = 0x000010; данные origin. */
SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */ /* Записывает origin значением 0x007050, length = 0x000010; данные origin. */
XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */ /* Записывает origin значением 0x007070, length = 0x000010; данные origin. */
ADC : origin = 0x007100, length = 0x000020 /* ADC registers */ /* Записывает origin значением 0x007100, length = 0x000020; данные origin. */
SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */ /* Записывает origin значением 0x007750, length = 0x000010; данные origin. */
SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */ /* Записывает origin значением 0x007770, length = 0x000010; данные origin. */
I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */ /* Записывает origin значением 0x007900, length = 0x000040; данные origin. */
CSM_PWL : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */ /* Записывает origin значением 0x3F7FF8, length = 0x000008; данные origin. */
PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */ /* Записывает origin значением 0x380090, length = 0x000001; данные origin. */
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Начинает описание размещения секций объектных файлов для линкера. */
SECTIONS SECTIONS
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/*** The PIE Vector table is called PIEVECT by DSP/BIOS ***/ /*** The PIE Vector table is called PIEVECT by DSP/BIOS ***/
/* Записывает PAGE значением 1, TYPE = DSECT; данные PAGE. */
PieVectTableFile : > PIEVECT, PAGE = 1, TYPE = DSECT PieVectTableFile : > PIEVECT, PAGE = 1, TYPE = DSECT
/*** Peripheral Frame 0 Register Structures ***/ /*** Peripheral Frame 0 Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
DevEmuRegsFile : > DEV_EMU, PAGE = 1 DevEmuRegsFile : > DEV_EMU, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
FlashRegsFile : > FLASH_REGS, PAGE = 1 FlashRegsFile : > FLASH_REGS, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CsmRegsFile : > CSM, PAGE = 1 CsmRegsFile : > CSM, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ AdcMirrorFile : > ADC_MIRROR, PAGE = 1
AdcMirrorFile : > ADC_MIRROR, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
XintfRegsFile : > XINTF, PAGE = 1 XintfRegsFile : > XINTF, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1 CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1 CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1 PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ DmaRegsFile : > DMA, PAGE = 1
PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
DmaRegsFile : > DMA, PAGE = 1
/*** Peripheral Frame 3 Register Structures ***/ /*** Peripheral Frame 3 Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
McbspaRegsFile : > MCBSPA, PAGE = 1 McbspaRegsFile : > MCBSPA, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
McbspbRegsFile : > MCBSPB, PAGE = 1 McbspbRegsFile : > MCBSPB, PAGE = 1
/*** Peripheral Frame 1 Register Structures ***/ /*** Peripheral Frame 1 Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
ECanaRegsFile : > ECANA, PAGE = 1 ECanaRegsFile : > ECANA, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanaMboxesFile : > ECANA_MBOX PAGE = 1 ECanaMboxesFile : > ECANA_MBOX PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1 ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1 ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbRegsFile : > ECANB, PAGE = 1 ECanbRegsFile : > ECANB, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMboxesFile : > ECANB_MBOX PAGE = 1 ECanbMboxesFile : > ECANB_MBOX PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1 ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTORegsFile : > ECANB_MOTO PAGE = 1 ECanbMOTORegsFile : > ECANB_MOTO PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ EPwm1RegsFile : > EPWM1 PAGE = 1
EPwm1RegsFile : > EPWM1 PAGE = 1 EPwm2RegsFile : > EPWM2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ EPwm3RegsFile : > EPWM3 PAGE = 1
EPwm2RegsFile : > EPWM2 PAGE = 1 EPwm4RegsFile : > EPWM4 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ EPwm5RegsFile : > EPWM5 PAGE = 1
EPwm3RegsFile : > EPWM3 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EPwm4RegsFile : > EPWM4 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EPwm5RegsFile : > EPWM5 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EPwm6RegsFile : > EPWM6 PAGE = 1 EPwm6RegsFile : > EPWM6 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECap1RegsFile : > ECAP1 PAGE = 1
ECap1RegsFile : > ECAP1 PAGE = 1 ECap2RegsFile : > ECAP2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECap3RegsFile : > ECAP3 PAGE = 1
ECap2RegsFile : > ECAP2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap3RegsFile : > ECAP3 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap4RegsFile : > ECAP4 PAGE = 1 ECap4RegsFile : > ECAP4 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECap5RegsFile : > ECAP5 PAGE = 1
ECap5RegsFile : > ECAP5 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap6RegsFile : > ECAP6 PAGE = 1 ECap6RegsFile : > ECAP6 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ EQep1RegsFile : > EQEP1 PAGE = 1
EQep1RegsFile : > EQEP1 PAGE = 1 EQep2RegsFile : > EQEP2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EQep2RegsFile : > EQEP2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
GpioCtrlRegsFile : > GPIOCTRL PAGE = 1 GpioCtrlRegsFile : > GPIOCTRL PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
GpioDataRegsFile : > GPIODAT PAGE = 1 GpioDataRegsFile : > GPIODAT PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
GpioIntRegsFile : > GPIOINT PAGE = 1 GpioIntRegsFile : > GPIOINT PAGE = 1
/*** Peripheral Frame 2 Register Structures ***/ /*** Peripheral Frame 2 Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
SysCtrlRegsFile : > SYSTEM, PAGE = 1 SysCtrlRegsFile : > SYSTEM, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
SpiaRegsFile : > SPIA, PAGE = 1 SpiaRegsFile : > SPIA, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
SciaRegsFile : > SCIA, PAGE = 1 SciaRegsFile : > SCIA, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
XIntruptRegsFile : > XINTRUPT, PAGE = 1 XIntruptRegsFile : > XINTRUPT, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
AdcRegsFile : > ADC, PAGE = 1 AdcRegsFile : > ADC, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ScibRegsFile : > SCIB, PAGE = 1 ScibRegsFile : > SCIB, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ScicRegsFile : > SCIC, PAGE = 1 ScicRegsFile : > SCIC, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
I2caRegsFile : > I2CA, PAGE = 1 I2caRegsFile : > I2CA, PAGE = 1
/*** Code Security Module Register Structures ***/ /*** Code Security Module Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
CsmPwlFile : > CSM_PWL, PAGE = 1 CsmPwlFile : > CSM_PWL, PAGE = 1
/*** Device Part ID Register Structures ***/ /*** Device Part ID Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
PartIdRegsFile : > PARTID, PAGE = 1 PartIdRegsFile : > PARTID, PAGE = 1
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
@@ -237,4 +180,4 @@ SECTIONS
//=========================================================================== //===========================================================================
// End of file. // End of file.
//=========================================================================== //===========================================================================
*/ */

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Headers_nonBIOS для семейства C2833x. Русские пояснения сохранены в UTF-8. */
/* /*
// TI File $Revision: /main/8 $ // TI File $Revision: /main/8 $
// Checkin $Date: June 2, 2008 11:12:24 $ // Checkin $Date: June 2, 2008 11:12:24 $
@@ -6,13 +5,13 @@
// //
// FILE: DSP2833x_Headers_nonBIOS.cmd // FILE: DSP2833x_Headers_nonBIOS.cmd
// //
// TITLE: DSP2833x Peripheral registers linker command file // TITLE: DSP2833x Peripheral registers linker command file
//
// DESCRIPTION:
// //
// DESCRIPTION:
//
// This file is for use in Non-BIOS applications. // 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 // used within the DSP2833x headerfiles into the correct memory
// mapped locations. // mapped locations.
// //
@@ -26,210 +25,154 @@
//########################################################################### //###########################################################################
*/ */
/* Начинает описание физических блоков памяти для линкера. */
MEMORY 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. */ XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */
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. */ 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. */ MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */
CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ /* Записывает origin значением 0x000C08, length = 0x000008; данные origin. */ MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */
CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ /* Записывает origin значением 0x000C10, length = 0x000008; данные origin. */
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 */
PIE_VECT : origin = 0x000D00, length = 0x000100 /* PIE Vector Table */ /* Записывает origin значением 0x000D00, length = 0x000100; данные origin. */ 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. */ EPWM1 : origin = 0x006800, length = 0x000022 /* Enhanced PWM 1 registers */
MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */ /* Записывает origin значением 0x005040, length = 0x000040; данные origin. */ 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. */ ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */
ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN-A local acceptance masks */ /* Записывает origin значением 0x006040, length = 0x000040; данные origin. */ ECAP2 : origin = 0x006A20, length = 0x000020 /* Enhanced Capture 2 registers */
ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN-A message object time stamps */ /* Записывает origin значением 0x006080, length = 0x000040; данные origin. */ ECAP3 : origin = 0x006A40, length = 0x000020 /* Enhanced Capture 3 registers */
ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN-A object time-out registers */ /* Записывает origin значением 0x0060C0, length = 0x000040; данные origin. */ ECAP4 : origin = 0x006A60, length = 0x000020 /* Enhanced Capture 4 registers */
ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN-A mailboxes */ /* Записывает origin значением 0x006100, length = 0x000100; данные origin. */ 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. */ GPIOCTRL : origin = 0x006F80, length = 0x000040 /* GPIO control registers */
ECANB_LAM : origin = 0x006240, length = 0x000040 /* eCAN-B local acceptance masks */ /* Записывает origin значением 0x006240, length = 0x000040; данные origin. */ GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */
ECANB_MOTS : origin = 0x006280, length = 0x000040 /* eCAN-B message object time stamps */ /* Записывает origin значением 0x006280, length = 0x000040; данные origin. */ GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */
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. */ 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. */ ADC : origin = 0x007100, length = 0x000020 /* ADC registers */
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. */
ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */ /* Записывает origin значением 0x006A00, length = 0x000020; данные origin. */ SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */
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. */
EQEP1 : origin = 0x006B00, length = 0x000040 /* Enhanced QEP 1 registers */ /* Записывает origin значением 0x006B00, length = 0x000040; данные origin. */ SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */
EQEP2 : origin = 0x006B40, length = 0x000040 /* Enhanced QEP 2 registers */ /* Записывает origin значением 0x006B40, length = 0x000040; данные origin. */
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. */ PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */
GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */ /* Записывает origin значением 0x006FC0, length = 0x000020; данные origin. */
GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */ /* Записывает origin значением 0x006FE0, length = 0x000020; данные origin. */
SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */ /* Записывает origin значением 0x007010, length = 0x000020; данные origin. */
SPIA : origin = 0x007040, length = 0x000010 /* SPI-A registers */ /* Записывает origin значением 0x007040, length = 0x000010; данные origin. */
SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */ /* Записывает origin значением 0x007050, length = 0x000010; данные origin. */
XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */ /* Записывает origin значением 0x007070, length = 0x000010; данные origin. */
ADC : origin = 0x007100, length = 0x000020 /* ADC registers */ /* Записывает origin значением 0x007100, length = 0x000020; данные origin. */
SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */ /* Записывает origin значением 0x007750, length = 0x000010; данные origin. */
SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */ /* Записывает origin значением 0x007770, length = 0x000010; данные origin. */
I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */ /* Записывает origin значением 0x007900, length = 0x000040; данные origin. */
CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */ /* Записывает origin значением 0x33FFF8, length = 0x000008; данные origin. */
PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */ /* Записывает origin значением 0x380090, length = 0x000001; данные origin. */
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
/* Начинает описание размещения секций объектных файлов для линкера. */
SECTIONS SECTIONS
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Записывает PAGE значением 1; данные PAGE. */
PieVectTableFile : > PIE_VECT, PAGE = 1 PieVectTableFile : > PIE_VECT, PAGE = 1
/*** Peripheral Frame 0 Register Structures ***/ /*** Peripheral Frame 0 Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
DevEmuRegsFile : > DEV_EMU, PAGE = 1 DevEmuRegsFile : > DEV_EMU, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
FlashRegsFile : > FLASH_REGS, PAGE = 1 FlashRegsFile : > FLASH_REGS, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CsmRegsFile : > CSM, PAGE = 1 CsmRegsFile : > CSM, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ AdcMirrorFile : > ADC_MIRROR, PAGE = 1
AdcMirrorFile : > ADC_MIRROR, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
XintfRegsFile : > XINTF, PAGE = 1 XintfRegsFile : > XINTF, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1 CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1 CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1 PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ DmaRegsFile : > DMA, PAGE = 1
PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
DmaRegsFile : > DMA, PAGE = 1
/*** Peripheral Frame 3 Register Structures ***/ /*** Peripheral Frame 3 Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
McbspaRegsFile : > MCBSPA, PAGE = 1 McbspaRegsFile : > MCBSPA, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
McbspbRegsFile : > MCBSPB, PAGE = 1 McbspbRegsFile : > MCBSPB, PAGE = 1
/*** Peripheral Frame 1 Register Structures ***/ /*** Peripheral Frame 1 Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
ECanaRegsFile : > ECANA, PAGE = 1 ECanaRegsFile : > ECANA, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
ECanaLAMRegsFile : > ECANA_LAM PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanaMboxesFile : > ECANA_MBOX PAGE = 1 ECanaMboxesFile : > ECANA_MBOX PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1 ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1 ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbRegsFile : > ECANB, PAGE = 1 ECanbRegsFile : > ECANB, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
ECanbLAMRegsFile : > ECANB_LAM PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMboxesFile : > ECANB_MBOX PAGE = 1 ECanbMboxesFile : > ECANB_MBOX PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1 ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECanbMOTORegsFile : > ECANB_MOTO PAGE = 1 ECanbMOTORegsFile : > ECANB_MOTO PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ EPwm1RegsFile : > EPWM1 PAGE = 1
EPwm1RegsFile : > EPWM1 PAGE = 1 EPwm2RegsFile : > EPWM2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ EPwm3RegsFile : > EPWM3 PAGE = 1
EPwm2RegsFile : > EPWM2 PAGE = 1 EPwm4RegsFile : > EPWM4 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ EPwm5RegsFile : > EPWM5 PAGE = 1
EPwm3RegsFile : > EPWM3 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EPwm4RegsFile : > EPWM4 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EPwm5RegsFile : > EPWM5 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EPwm6RegsFile : > EPWM6 PAGE = 1 EPwm6RegsFile : > EPWM6 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECap1RegsFile : > ECAP1 PAGE = 1
ECap1RegsFile : > ECAP1 PAGE = 1 ECap2RegsFile : > ECAP2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECap3RegsFile : > ECAP3 PAGE = 1
ECap2RegsFile : > ECAP2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap3RegsFile : > ECAP3 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap4RegsFile : > ECAP4 PAGE = 1 ECap4RegsFile : > ECAP4 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ ECap5RegsFile : > ECAP5 PAGE = 1
ECap5RegsFile : > ECAP5 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ECap6RegsFile : > ECAP6 PAGE = 1 ECap6RegsFile : > ECAP6 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */ EQep1RegsFile : > EQEP1 PAGE = 1
EQep1RegsFile : > EQEP1 PAGE = 1 EQep2RegsFile : > EQEP2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
EQep2RegsFile : > EQEP2 PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
GpioCtrlRegsFile : > GPIOCTRL PAGE = 1 GpioCtrlRegsFile : > GPIOCTRL PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
GpioDataRegsFile : > GPIODAT PAGE = 1 GpioDataRegsFile : > GPIODAT PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
GpioIntRegsFile : > GPIOINT PAGE = 1 GpioIntRegsFile : > GPIOINT PAGE = 1
/*** Peripheral Frame 2 Register Structures ***/ /*** Peripheral Frame 2 Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
SysCtrlRegsFile : > SYSTEM, PAGE = 1 SysCtrlRegsFile : > SYSTEM, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
SpiaRegsFile : > SPIA, PAGE = 1 SpiaRegsFile : > SPIA, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
SciaRegsFile : > SCIA, PAGE = 1 SciaRegsFile : > SCIA, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
XIntruptRegsFile : > XINTRUPT, PAGE = 1 XIntruptRegsFile : > XINTRUPT, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
AdcRegsFile : > ADC, PAGE = 1 AdcRegsFile : > ADC, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ScibRegsFile : > SCIB, PAGE = 1 ScibRegsFile : > SCIB, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
ScicRegsFile : > SCIC, PAGE = 1 ScicRegsFile : > SCIC, PAGE = 1
/* Записывает PAGE значением 1; данные PAGE. */
I2caRegsFile : > I2CA, PAGE = 1 I2caRegsFile : > I2CA, PAGE = 1
/*** Code Security Module Register Structures ***/ /*** Code Security Module Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
CsmPwlFile : > CSM_PWL, PAGE = 1 CsmPwlFile : > CSM_PWL, PAGE = 1
/*** Device Part ID Register Structures ***/ /*** Device Part ID Register Structures ***/
/* Записывает PAGE значением 1; данные PAGE. */
PartIdRegsFile : > PARTID, PAGE = 1 PartIdRegsFile : > PARTID, PAGE = 1
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Adc для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $ // TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:51:50 $ // Checkin $Date: August 18, 2006 13:51:50 $
//########################################################################### //###########################################################################
@@ -12,452 +11,252 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_ADC_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_ADC_H #ifndef DSP2833x_ADC_H
/* Определяет защитный символ или переключатель DSP2833x_ADC_H для последующей компиляции. */
#define DSP2833x_ADC_H #define DSP2833x_ADC_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// ADC Individual Register Bit Definitions: // ADC Individual Register Bit Definitions:
/* Описывает структуру ADCTRL1_BITS; порядок полей определяет расположение данных. */
struct ADCTRL1_BITS { // bits description struct ADCTRL1_BITS { // bits description
/* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 3:0 reserved Uint16 rsvd1:4; // 3:0 reserved
/* Битовое поле SEQ_CASC, ширина 1 бит; данные SEQ_CASC. */
Uint16 SEQ_CASC:1; // 4 Cascaded sequencer mode Uint16 SEQ_CASC:1; // 4 Cascaded sequencer mode
/* Битовое поле SEQ_OVRD, ширина 1 бит; данные SEQ_OVRD. */ Uint16 SEQ_OVRD:1; // 5 Sequencer override
Uint16 SEQ_OVRD:1; // 5 Sequencer override
/* Битовое поле CONT_RUN, ширина 1 бит; данные CONT_RUN. */
Uint16 CONT_RUN:1; // 6 Continuous run Uint16 CONT_RUN:1; // 6 Continuous run
/* Битовое поле CPS, ширина 1 бит; данные CPS. */
Uint16 CPS:1; // 7 ADC core clock pre-scalar Uint16 CPS:1; // 7 ADC core clock pre-scalar
/* Битовое поле ACQ_PS, ширина 4 бит; данные ACQ_PS. */
Uint16 ACQ_PS:4; // 11:8 Acquisition window size Uint16 ACQ_PS:4; // 11:8 Acquisition window size
/* Битовое поле SUSMOD, ширина 2 бит; данные SUSMOD. */
Uint16 SUSMOD:2; // 13:12 Emulation suspend mode Uint16 SUSMOD:2; // 13:12 Emulation suspend mode
/* Битовое поле RESET, ширина 1 бит; сброс. */
Uint16 RESET:1; // 14 ADC reset Uint16 RESET:1; // 14 ADC reset
/* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 15 reserved Uint16 rsvd2:1; // 15 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCTRL1_REG в одной области памяти. */
union ADCTRL1_REG { union ADCTRL1_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCTRL1_BITS bit;; порядок полей определяет расположение данных. */
struct ADCTRL1_BITS bit; struct ADCTRL1_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCTRL2_BITS; порядок полей определяет расположение данных. */
struct ADCTRL2_BITS { // bits description 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 Uint16 EPWM_SOCB_SEQ2:1; // 0 EPWM compare B SOC mask for SEQ2
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved Uint16 rsvd1:1; // 1 reserved
/* Битовое поле INT_MOD_SEQ2, ширина 1 бит; данные INT_MOD_SEQ2. */
Uint16 INT_MOD_SEQ2:1; // 2 SEQ2 Interrupt mode 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 Uint16 INT_ENA_SEQ2:1; // 3 SEQ2 Interrupt enable
/* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 4 reserved Uint16 rsvd2:1; // 4 reserved
/* Битовое поле SOC_SEQ2, ширина 1 бит; данные SOC_SEQ2. */
Uint16 SOC_SEQ2:1; // 5 Start of conversion for SEQ2 Uint16 SOC_SEQ2:1; // 5 Start of conversion for SEQ2
/* Битовое поле RST_SEQ2, ширина 1 бит; данные RST_SEQ2. */
Uint16 RST_SEQ2:1; // 6 Reset 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 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 Uint16 EPWM_SOCA_SEQ1:1; // 8 EPWM compare B SOC mask for SEQ1
/* Битовое поле rsvd3, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:1; // 9 reserved Uint16 rsvd3:1; // 9 reserved
/* Битовое поле INT_MOD_SEQ1, ширина 1 бит; данные INT_MOD_SEQ1. */
Uint16 INT_MOD_SEQ1:1; // 10 SEQ1 Interrupt mode 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 Uint16 INT_ENA_SEQ1:1; // 11 SEQ1 Interrupt enable
/* Битовое поле rsvd4, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd4:1; // 12 reserved Uint16 rsvd4:1; // 12 reserved
/* Битовое поле SOC_SEQ1, ширина 1 бит; данные SOC_SEQ1. */
Uint16 SOC_SEQ1:1; // 13 Start of conversion trigger for 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
Uint16 RST_SEQ1:1; // 14 Restart sequencer 1
/* Битовое поле EPWM_SOCB_SEQ, ширина 1 бит; данные EPWM_SOCB_SEQ. */
Uint16 EPWM_SOCB_SEQ:1; // 15 EPWM compare B SOC enable Uint16 EPWM_SOCB_SEQ:1; // 15 EPWM compare B SOC enable
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCTRL2_REG в одной области памяти. */
union ADCTRL2_REG { union ADCTRL2_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCTRL2_BITS bit;; порядок полей определяет расположение данных. */
struct ADCTRL2_BITS bit; struct ADCTRL2_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCASEQSR_BITS; порядок полей определяет расположение данных. */
struct ADCASEQSR_BITS { // bits description struct ADCASEQSR_BITS { // bits description
/* Битовое поле SEQ1_STATE, ширина 4 бит; данные SEQ1_STATE. */
Uint16 SEQ1_STATE:4; // 3:0 SEQ1 state Uint16 SEQ1_STATE:4; // 3:0 SEQ1 state
/* Битовое поле SEQ2_STATE, ширина 3 бит; данные SEQ2_STATE. */
Uint16 SEQ2_STATE:3; // 6:4 SEQ2 state Uint16 SEQ2_STATE:3; // 6:4 SEQ2 state
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 7 reserved Uint16 rsvd1:1; // 7 reserved
/* Битовое поле SEQ_CNTR, ширина 4 бит; данные SEQ_CNTR. */ Uint16 SEQ_CNTR:4; // 11:8 Sequencing counter status
Uint16 SEQ_CNTR:4; // 11:8 Sequencing counter status Uint16 rsvd2:4; // 15:12 reserved
/* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 15:12 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCASEQSR_REG в одной области памяти. */
union ADCASEQSR_REG { union ADCASEQSR_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCASEQSR_BITS bit;; порядок полей определяет расположение данных. */
struct ADCASEQSR_BITS bit; struct ADCASEQSR_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCMAXCONV_BITS; порядок полей определяет расположение данных. */
struct ADCMAXCONV_BITS { // bits description struct ADCMAXCONV_BITS { // bits description
/* Битовое поле MAX_CONV1, ширина 4 бит; данные MAX_CONV1. */
Uint16 MAX_CONV1:4; // 3:0 Max number of conversions 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
Uint16 MAX_CONV2:3; // 6:4 Max number of conversions Uint16 rsvd1:9; // 15:7 reserved
/* Битовое поле rsvd1, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:9; // 15:7 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCMAXCONV_REG в одной области памяти. */
union ADCMAXCONV_REG { union ADCMAXCONV_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCMAXCONV_BITS bit;; порядок полей определяет расположение данных. */
struct ADCMAXCONV_BITS bit; struct ADCMAXCONV_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCCHSELSEQ1_BITS; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ1_BITS { // bits description struct ADCCHSELSEQ1_BITS { // bits description
/* Битовое поле CONV00, ширина 4 бит; данные CONV00. */
Uint16 CONV00:4; // 3:0 Conversion selection 00 Uint16 CONV00:4; // 3:0 Conversion selection 00
/* Битовое поле CONV01, ширина 4 бит; данные CONV01. */
Uint16 CONV01:4; // 7:4 Conversion selection 01 Uint16 CONV01:4; // 7:4 Conversion selection 01
/* Битовое поле CONV02, ширина 4 бит; данные CONV02. */
Uint16 CONV02:4; // 11:8 Conversion selection 02 Uint16 CONV02:4; // 11:8 Conversion selection 02
/* Битовое поле CONV03, ширина 4 бит; данные CONV03. */
Uint16 CONV03:4; // 15:12 Conversion selection 03 Uint16 CONV03:4; // 15:12 Conversion selection 03
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCCHSELSEQ1_REG в одной области памяти. */
union ADCCHSELSEQ1_REG{ union ADCCHSELSEQ1_REG{
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCCHSELSEQ1_BITS bit;; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ1_BITS bit; struct ADCCHSELSEQ1_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCCHSELSEQ2_BITS; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ2_BITS { // bits description struct ADCCHSELSEQ2_BITS { // bits description
/* Битовое поле CONV04, ширина 4 бит; данные CONV04. */
Uint16 CONV04:4; // 3:0 Conversion selection 04 Uint16 CONV04:4; // 3:0 Conversion selection 04
/* Битовое поле CONV05, ширина 4 бит; данные CONV05. */
Uint16 CONV05:4; // 7:4 Conversion selection 05 Uint16 CONV05:4; // 7:4 Conversion selection 05
/* Битовое поле CONV06, ширина 4 бит; данные CONV06. */
Uint16 CONV06:4; // 11:8 Conversion selection 06 Uint16 CONV06:4; // 11:8 Conversion selection 06
/* Битовое поле CONV07, ширина 4 бит; данные CONV07. */
Uint16 CONV07:4; // 15:12 Conversion selection 07 Uint16 CONV07:4; // 15:12 Conversion selection 07
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCCHSELSEQ2_REG в одной области памяти. */
union ADCCHSELSEQ2_REG{ union ADCCHSELSEQ2_REG{
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCCHSELSEQ2_BITS bit;; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ2_BITS bit; struct ADCCHSELSEQ2_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCCHSELSEQ3_BITS; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ3_BITS { // bits description struct ADCCHSELSEQ3_BITS { // bits description
/* Битовое поле CONV08, ширина 4 бит; данные CONV08. */
Uint16 CONV08:4; // 3:0 Conversion selection 08 Uint16 CONV08:4; // 3:0 Conversion selection 08
/* Битовое поле CONV09, ширина 4 бит; данные CONV09. */
Uint16 CONV09:4; // 7:4 Conversion selection 09 Uint16 CONV09:4; // 7:4 Conversion selection 09
/* Битовое поле CONV10, ширина 4 бит; данные CONV10. */
Uint16 CONV10:4; // 11:8 Conversion selection 10 Uint16 CONV10:4; // 11:8 Conversion selection 10
/* Битовое поле CONV11, ширина 4 бит; данные CONV11. */
Uint16 CONV11:4; // 15:12 Conversion selection 11 Uint16 CONV11:4; // 15:12 Conversion selection 11
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCCHSELSEQ3_REG в одной области памяти. */
union ADCCHSELSEQ3_REG{ union ADCCHSELSEQ3_REG{
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCCHSELSEQ3_BITS bit;; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ3_BITS bit; struct ADCCHSELSEQ3_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCCHSELSEQ4_BITS; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ4_BITS { // bits description struct ADCCHSELSEQ4_BITS { // bits description
/* Битовое поле CONV12, ширина 4 бит; данные CONV12. */
Uint16 CONV12:4; // 3:0 Conversion selection 12 Uint16 CONV12:4; // 3:0 Conversion selection 12
/* Битовое поле CONV13, ширина 4 бит; данные CONV13. */
Uint16 CONV13:4; // 7:4 Conversion selection 13 Uint16 CONV13:4; // 7:4 Conversion selection 13
/* Битовое поле CONV14, ширина 4 бит; данные CONV14. */
Uint16 CONV14:4; // 11:8 Conversion selection 14 Uint16 CONV14:4; // 11:8 Conversion selection 14
/* Битовое поле CONV15, ширина 4 бит; данные CONV15. */
Uint16 CONV15:4; // 15:12 Conversion selection 15 Uint16 CONV15:4; // 15:12 Conversion selection 15
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCCHSELSEQ4_REG в одной области памяти. */
union ADCCHSELSEQ4_REG { union ADCCHSELSEQ4_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCCHSELSEQ4_BITS bit;; порядок полей определяет расположение данных. */
struct ADCCHSELSEQ4_BITS bit; struct ADCCHSELSEQ4_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCTRL3_BITS; порядок полей определяет расположение данных. */
struct ADCTRL3_BITS { // bits description struct ADCTRL3_BITS { // bits description
/* Битовое поле SMODE_SEL, ширина 1 бит; данные SMODE_SEL. */
Uint16 SMODE_SEL:1; // 0 Sampling mode select Uint16 SMODE_SEL:1; // 0 Sampling mode select
/* Битовое поле ADCCLKPS, ширина 4 бит; данные ADCCLKPS. */
Uint16 ADCCLKPS:4; // 4:1 ADC core clock divider Uint16 ADCCLKPS:4; // 4:1 ADC core clock divider
/* Битовое поле ADCPWDN, ширина 1 бит; данные ADCPWDN. */
Uint16 ADCPWDN:1; // 5 ADC powerdown Uint16 ADCPWDN:1; // 5 ADC powerdown
/* Битовое поле ADCBGRFDN, ширина 2 бит; данные ADCBGRFDN. */
Uint16 ADCBGRFDN:2; // 7:6 ADC bandgap/ref power down Uint16 ADCBGRFDN:2; // 7:6 ADC bandgap/ref power down
/* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved Uint16 rsvd1:8; // 15:8 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ };
};
/* Объединяет несколько представлений ADCTRL3_REG в одной области памяти. */
union ADCTRL3_REG { union ADCTRL3_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCTRL3_BITS bit;; порядок полей определяет расположение данных. */
struct ADCTRL3_BITS bit; struct ADCTRL3_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCST_BITS; порядок полей определяет расположение данных. */
struct ADCST_BITS { // bits description struct ADCST_BITS { // bits description
/* Битовое поле INT_SEQ1, ширина 1 бит; данные INT_SEQ1. */ Uint16 INT_SEQ1:1; // 0 SEQ1 Interrupt flag
Uint16 INT_SEQ1:1; // 0 SEQ1 Interrupt flag
/* Битовое поле INT_SEQ2, ширина 1 бит; данные INT_SEQ2. */
Uint16 INT_SEQ2:1; // 1 SEQ2 Interrupt flag Uint16 INT_SEQ2:1; // 1 SEQ2 Interrupt flag
/* Битовое поле SEQ1_BSY, ширина 1 бит; данные SEQ1_BSY. */
Uint16 SEQ1_BSY:1; // 2 SEQ1 busy status Uint16 SEQ1_BSY:1; // 2 SEQ1 busy status
/* Битовое поле SEQ2_BSY, ширина 1 бит; данные SEQ2_BSY. */
Uint16 SEQ2_BSY:1; // 3 SEQ2 busy status Uint16 SEQ2_BSY:1; // 3 SEQ2 busy status
/* Битовое поле INT_SEQ1_CLR, ширина 1 бит; данные INT_SEQ1_CLR. */
Uint16 INT_SEQ1_CLR:1; // 4 SEQ1 Interrupt clear 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 Uint16 INT_SEQ2_CLR:1; // 5 SEQ2 Interrupt clear
/* Битовое поле EOS_BUF1, ширина 1 бит; данные EOS_BUF1. */
Uint16 EOS_BUF1:1; // 6 End of sequence buffer1 Uint16 EOS_BUF1:1; // 6 End of sequence buffer1
/* Битовое поле EOS_BUF2, ширина 1 бит; данные EOS_BUF2. */
Uint16 EOS_BUF2:1; // 7 End of sequence buffer2 Uint16 EOS_BUF2:1; // 7 End of sequence buffer2
/* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved 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 struct ADCREFSEL_BITS { // bits description
/* Битовое поле rsvd1, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */ Uint16 rsvd1:14; // 13:0 reserved
Uint16 rsvd1:14; // 13:0 reserved
/* Битовое поле REF_SEL, ширина 2 бит; данные REF_SEL. */
Uint16 REF_SEL:2; // 15:14 Reference select Uint16 REF_SEL:2; // 15:14 Reference select
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCREFSEL_REG в одной области памяти. */
union ADCREFSEL_REG { union ADCREFSEL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCREFSEL_BITS bit;; порядок полей определяет расположение данных. */
struct ADCREFSEL_BITS bit; struct ADCREFSEL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADCOFFTRIM_BITS; порядок полей определяет расположение данных. */
struct ADCOFFTRIM_BITS{ // bits description struct ADCOFFTRIM_BITS{ // bits description
/* Продолжает список аргументов, полей или выражение int16 OFFSET_TRIM:9;; порядок элементов сохраняется. */ int16 OFFSET_TRIM:9; // 8:0 Offset Trim
int16 OFFSET_TRIM:9; // 8:0 Offset Trim
/* Битовое поле rsvd1, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:7; // 15:9 reserved Uint16 rsvd1:7; // 15:9 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ADCOFFTRIM_REG в одной области памяти. */
union ADCOFFTRIM_REG{ union ADCOFFTRIM_REG{
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ADCOFFTRIM_BITS bit;; порядок полей определяет расположение данных. */
struct ADCOFFTRIM_BITS bit; struct ADCOFFTRIM_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADC_REGS; порядок полей определяет расположение данных. */
struct ADC_REGS { struct ADC_REGS {
/* Объединяет несколько представлений ADCTRL1_REG ADCTRL1; в одной области памяти. */
union ADCTRL1_REG ADCTRL1; // ADC Control 1 union ADCTRL1_REG ADCTRL1; // ADC Control 1
/* Объединяет несколько представлений ADCTRL2_REG ADCTRL2; в одной области памяти. */
union ADCTRL2_REG ADCTRL2; // ADC Control 2 union ADCTRL2_REG ADCTRL2; // ADC Control 2
/* Объединяет несколько представлений ADCMAXCONV_REG ADCMAXCONV; в одной области памяти. */
union ADCMAXCONV_REG ADCMAXCONV; // Max conversions union ADCMAXCONV_REG ADCMAXCONV; // Max conversions
/* Объединяет несколько представлений ADCCHSELSEQ1_REG ADCCHSELSEQ1; в одной области памяти. */
union ADCCHSELSEQ1_REG ADCCHSELSEQ1; // Channel select sequencing control 1 union ADCCHSELSEQ1_REG ADCCHSELSEQ1; // Channel select sequencing control 1
/* Объединяет несколько представлений ADCCHSELSEQ2_REG ADCCHSELSEQ2; в одной области памяти. */
union ADCCHSELSEQ2_REG ADCCHSELSEQ2; // Channel select sequencing control 2 union ADCCHSELSEQ2_REG ADCCHSELSEQ2; // Channel select sequencing control 2
/* Объединяет несколько представлений ADCCHSELSEQ3_REG ADCCHSELSEQ3; в одной области памяти. */
union ADCCHSELSEQ3_REG ADCCHSELSEQ3; // Channel select sequencing control 3 union ADCCHSELSEQ3_REG ADCCHSELSEQ3; // Channel select sequencing control 3
/* Объединяет несколько представлений ADCCHSELSEQ4_REG ADCCHSELSEQ4; в одной области памяти. */
union ADCCHSELSEQ4_REG ADCCHSELSEQ4; // Channel select sequencing control 4 union ADCCHSELSEQ4_REG ADCCHSELSEQ4; // Channel select sequencing control 4
/* Объединяет несколько представлений ADCASEQSR_REG ADCASEQSR; в одной области памяти. */
union ADCASEQSR_REG ADCASEQSR; // Autosequence status register union ADCASEQSR_REG ADCASEQSR; // Autosequence status register
/* Объявляет ADCRESULT0 — данные ADCRESULT0. */
Uint16 ADCRESULT0; // Conversion Result Buffer 0 Uint16 ADCRESULT0; // Conversion Result Buffer 0
/* Объявляет ADCRESULT1 — данные ADCRESULT1. */
Uint16 ADCRESULT1; // Conversion Result Buffer 1 Uint16 ADCRESULT1; // Conversion Result Buffer 1
/* Объявляет ADCRESULT2 — данные ADCRESULT2. */
Uint16 ADCRESULT2; // Conversion Result Buffer 2 Uint16 ADCRESULT2; // Conversion Result Buffer 2
/* Объявляет ADCRESULT3 — данные ADCRESULT3. */
Uint16 ADCRESULT3; // Conversion Result Buffer 3 Uint16 ADCRESULT3; // Conversion Result Buffer 3
/* Объявляет ADCRESULT4 — данные ADCRESULT4. */
Uint16 ADCRESULT4; // Conversion Result Buffer 4 Uint16 ADCRESULT4; // Conversion Result Buffer 4
/* Объявляет ADCRESULT5 — данные ADCRESULT5. */
Uint16 ADCRESULT5; // Conversion Result Buffer 5 Uint16 ADCRESULT5; // Conversion Result Buffer 5
/* Объявляет ADCRESULT6 — данные ADCRESULT6. */
Uint16 ADCRESULT6; // Conversion Result Buffer 6 Uint16 ADCRESULT6; // Conversion Result Buffer 6
/* Объявляет ADCRESULT7 — данные ADCRESULT7. */
Uint16 ADCRESULT7; // Conversion Result Buffer 7 Uint16 ADCRESULT7; // Conversion Result Buffer 7
/* Объявляет ADCRESULT8 — данные ADCRESULT8. */
Uint16 ADCRESULT8; // Conversion Result Buffer 8 Uint16 ADCRESULT8; // Conversion Result Buffer 8
/* Объявляет ADCRESULT9 — данные ADCRESULT9. */
Uint16 ADCRESULT9; // Conversion Result Buffer 9 Uint16 ADCRESULT9; // Conversion Result Buffer 9
/* Объявляет ADCRESULT10 — данные ADCRESULT10. */
Uint16 ADCRESULT10; // Conversion Result Buffer 10 Uint16 ADCRESULT10; // Conversion Result Buffer 10
/* Объявляет ADCRESULT11 — данные ADCRESULT11. */
Uint16 ADCRESULT11; // Conversion Result Buffer 11 Uint16 ADCRESULT11; // Conversion Result Buffer 11
/* Объявляет ADCRESULT12 — данные ADCRESULT12. */
Uint16 ADCRESULT12; // Conversion Result Buffer 12 Uint16 ADCRESULT12; // Conversion Result Buffer 12
/* Объявляет ADCRESULT13 — данные ADCRESULT13. */
Uint16 ADCRESULT13; // Conversion Result Buffer 13 Uint16 ADCRESULT13; // Conversion Result Buffer 13
/* Объявляет ADCRESULT14 — данные ADCRESULT14. */
Uint16 ADCRESULT14; // Conversion Result Buffer 14 Uint16 ADCRESULT14; // Conversion Result Buffer 14
/* Объявляет ADCRESULT15 — данные ADCRESULT15. */
Uint16 ADCRESULT15; // Conversion Result Buffer 15 Uint16 ADCRESULT15; // Conversion Result Buffer 15
/* Объединяет несколько представлений ADCTRL3_REG ADCTRL3; в одной области памяти. */ union ADCTRL3_REG ADCTRL3; // ADC Control 3
union ADCTRL3_REG ADCTRL3; // ADC Control 3
/* Объединяет несколько представлений ADCST_REG ADCST; в одной области памяти. */
union ADCST_REG ADCST; // ADC Status Register union ADCST_REG ADCST; // ADC Status Register
/* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; Uint16 rsvd1;
/* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2; Uint16 rsvd2;
/* Объединяет несколько представлений ADCREFSEL_REG ADCREFSEL; в одной области памяти. */
union ADCREFSEL_REG ADCREFSEL; // Reference Select Register union ADCREFSEL_REG ADCREFSEL; // Reference Select Register
/* Объединяет несколько представлений ADCOFFTRIM_REG ADCOFFTRIM; в одной области памяти. */
union ADCOFFTRIM_REG ADCOFFTRIM; // Offset Trim Register union ADCOFFTRIM_REG ADCOFFTRIM; // Offset Trim Register
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру ADC_RESULT_MIRROR_REGS; порядок полей определяет расположение данных. */
struct ADC_RESULT_MIRROR_REGS struct ADC_RESULT_MIRROR_REGS
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Объявляет ADCRESULT0 — данные ADCRESULT0. */
Uint16 ADCRESULT0; // Conversion Result Buffer 0 Uint16 ADCRESULT0; // Conversion Result Buffer 0
/* Объявляет ADCRESULT1 — данные ADCRESULT1. */
Uint16 ADCRESULT1; // Conversion Result Buffer 1 Uint16 ADCRESULT1; // Conversion Result Buffer 1
/* Объявляет ADCRESULT2 — данные ADCRESULT2. */
Uint16 ADCRESULT2; // Conversion Result Buffer 2 Uint16 ADCRESULT2; // Conversion Result Buffer 2
/* Объявляет ADCRESULT3 — данные ADCRESULT3. */
Uint16 ADCRESULT3; // Conversion Result Buffer 3 Uint16 ADCRESULT3; // Conversion Result Buffer 3
/* Объявляет ADCRESULT4 — данные ADCRESULT4. */
Uint16 ADCRESULT4; // Conversion Result Buffer 4 Uint16 ADCRESULT4; // Conversion Result Buffer 4
/* Объявляет ADCRESULT5 — данные ADCRESULT5. */
Uint16 ADCRESULT5; // Conversion Result Buffer 5 Uint16 ADCRESULT5; // Conversion Result Buffer 5
/* Объявляет ADCRESULT6 — данные ADCRESULT6. */
Uint16 ADCRESULT6; // Conversion Result Buffer 6 Uint16 ADCRESULT6; // Conversion Result Buffer 6
/* Объявляет ADCRESULT7 — данные ADCRESULT7. */
Uint16 ADCRESULT7; // Conversion Result Buffer 7 Uint16 ADCRESULT7; // Conversion Result Buffer 7
/* Объявляет ADCRESULT8 — данные ADCRESULT8. */
Uint16 ADCRESULT8; // Conversion Result Buffer 8 Uint16 ADCRESULT8; // Conversion Result Buffer 8
/* Объявляет ADCRESULT9 — данные ADCRESULT9. */
Uint16 ADCRESULT9; // Conversion Result Buffer 9 Uint16 ADCRESULT9; // Conversion Result Buffer 9
/* Объявляет ADCRESULT10 — данные ADCRESULT10. */
Uint16 ADCRESULT10; // Conversion Result Buffer 10 Uint16 ADCRESULT10; // Conversion Result Buffer 10
/* Объявляет ADCRESULT11 — данные ADCRESULT11. */
Uint16 ADCRESULT11; // Conversion Result Buffer 11 Uint16 ADCRESULT11; // Conversion Result Buffer 11
/* Объявляет ADCRESULT12 — данные ADCRESULT12. */
Uint16 ADCRESULT12; // Conversion Result Buffer 12 Uint16 ADCRESULT12; // Conversion Result Buffer 12
/* Объявляет ADCRESULT13 — данные ADCRESULT13. */
Uint16 ADCRESULT13; // Conversion Result Buffer 13 Uint16 ADCRESULT13; // Conversion Result Buffer 13
/* Объявляет ADCRESULT14 — данные ADCRESULT14. */
Uint16 ADCRESULT14; // Conversion Result Buffer 14 Uint16 ADCRESULT14; // Conversion Result Buffer 14
/* Объявляет ADCRESULT15 — данные ADCRESULT15. */
Uint16 ADCRESULT15; // Conversion Result Buffer 15 Uint16 ADCRESULT15; // Conversion Result Buffer 15
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// ADC External References & Function Declarations: // ADC External References & Function Declarations:
// //
/* Продолжает список аргументов, полей или выражение extern volatile struct ADC_REGS AdcRegs;; порядок элементов сохраняется. */
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; extern volatile struct ADC_RESULT_MIRROR_REGS AdcMirror;
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_ADC_H definition #endif // end of DSP2833x_ADC_H definition
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание CpuTimers для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/4 $ // TI File $Revision: /main/4 $
// Checkin $Date: March 20, 2007 15:33:42 $ // Checkin $Date: March 20, 2007 15:33:42 $
//########################################################################### //###########################################################################
@@ -21,16 +20,11 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_CPU_TIMERS_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_CPU_TIMERS_H #ifndef DSP2833x_CPU_TIMERS_H
/* Определяет защитный символ или переключатель DSP2833x_CPU_TIMERS_H для последующей компиляции. */
#define DSP2833x_CPU_TIMERS_H #define DSP2833x_CPU_TIMERS_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -38,195 +32,121 @@ extern "C" {
// //
// //
// TCR: Control register bit definitions: // TCR: Control register bit definitions:
/* Описывает структуру TCR_BITS; порядок полей определяет расположение данных. */
struct TCR_BITS { // bits description struct TCR_BITS { // bits description
/* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 3:0 reserved Uint16 rsvd1:4; // 3:0 reserved
/* Битовое поле TSS, ширина 1 бит; данные TSS. */
Uint16 TSS:1; // 4 Timer Start/Stop Uint16 TSS:1; // 4 Timer Start/Stop
/* Битовое поле TRB, ширина 1 бит; данные TRB. */
Uint16 TRB:1; // 5 Timer reload Uint16 TRB:1; // 5 Timer reload
/* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 9:6 reserved Uint16 rsvd2:4; // 9:6 reserved
/* Битовое поле SOFT, ширина 1 бит; данные SOFT. */
Uint16 SOFT:1; // 10 Emulation modes Uint16 SOFT:1; // 10 Emulation modes
/* Битовое поле FREE, ширина 1 бит; данные FREE. */
Uint16 FREE:1; // 11 Uint16 FREE:1; // 11
/* Битовое поле rsvd3, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:2; // 12:13 reserved Uint16 rsvd3:2; // 12:13 reserved
/* Битовое поле TIE, ширина 1 бит; данные TIE. */
Uint16 TIE:1; // 14 Output enable Uint16 TIE:1; // 14 Output enable
/* Битовое поле TIF, ширина 1 бит; данные TIF. */
Uint16 TIF:1; // 15 Interrupt flag Uint16 TIF:1; // 15 Interrupt flag
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TCR_REG в одной области памяти. */
union TCR_REG { union TCR_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TCR_BITS bit;; порядок полей определяет расположение данных. */
struct TCR_BITS bit; struct TCR_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
// TPR: Pre-scale low bit definitions: // TPR: Pre-scale low bit definitions:
/* Описывает структуру TPR_BITS; порядок полей определяет расположение данных. */
struct TPR_BITS { // bits description struct TPR_BITS { // bits description
/* Битовое поле TDDR, ширина 8 бит; данные TDDR. */
Uint16 TDDR:8; // 7:0 Divide-down low Uint16 TDDR:8; // 7:0 Divide-down low
/* Битовое поле PSC, ширина 8 бит; данные PSC. */
Uint16 PSC:8; // 15:8 Prescale counter low Uint16 PSC:8; // 15:8 Prescale counter low
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TPR_REG в одной области памяти. */
union TPR_REG { union TPR_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TPR_BITS bit;; порядок полей определяет расположение данных. */
struct TPR_BITS bit; struct TPR_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
// TPRH: Pre-scale high bit definitions: // TPRH: Pre-scale high bit definitions:
/* Описывает структуру TPRH_BITS; порядок полей определяет расположение данных. */
struct TPRH_BITS { // bits description struct TPRH_BITS { // bits description
/* Битовое поле TDDRH, ширина 8 бит; данные TDDRH. */
Uint16 TDDRH:8; // 7:0 Divide-down high Uint16 TDDRH:8; // 7:0 Divide-down high
/* Битовое поле PSCH, ширина 8 бит; данные PSCH. */
Uint16 PSCH:8; // 15:8 Prescale counter high Uint16 PSCH:8; // 15:8 Prescale counter high
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TPRH_REG в одной области памяти. */
union TPRH_REG { union TPRH_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TPRH_BITS bit;; порядок полей определяет расположение данных. */
struct TPRH_BITS bit; struct TPRH_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
// TIM, TIMH: Timer register definitions: // TIM, TIMH: Timer register definitions:
/* Описывает структуру TIM_REG; порядок полей определяет расположение данных. */
struct TIM_REG { struct TIM_REG {
/* Объявляет LSW — данные LSW. */
Uint16 LSW; Uint16 LSW;
/* Объявляет MSW — данные MSW. */
Uint16 MSW; Uint16 MSW;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TIM_GROUP в одной области памяти. */
union TIM_GROUP { union TIM_GROUP {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру TIM_REG half;; порядок полей определяет расположение данных. */
struct TIM_REG half; struct TIM_REG half;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
// PRD, PRDH: Period register definitions: // PRD, PRDH: Period register definitions:
/* Описывает структуру PRD_REG; порядок полей определяет расположение данных. */
struct PRD_REG { struct PRD_REG {
/* Объявляет LSW — данные LSW. */
Uint16 LSW; Uint16 LSW;
/* Объявляет MSW — данные MSW. */
Uint16 MSW; Uint16 MSW;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений PRD_GROUP в одной области памяти. */
union PRD_GROUP { union PRD_GROUP {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру PRD_REG half;; порядок полей определяет расположение данных. */
struct PRD_REG half; struct PRD_REG half;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// CPU Timer Register File: // CPU Timer Register File:
// //
/* Описывает структуру CPUTIMER_REGS; порядок полей определяет расположение данных. */
struct CPUTIMER_REGS { struct CPUTIMER_REGS {
/* Объединяет несколько представлений TIM_GROUP TIM; в одной области памяти. */
union TIM_GROUP TIM; // Timer counter register union TIM_GROUP TIM; // Timer counter register
/* Объединяет несколько представлений PRD_GROUP PRD; в одной области памяти. */
union PRD_GROUP PRD; // Period register union PRD_GROUP PRD; // Period register
/* Объединяет несколько представлений TCR_REG TCR; в одной области памяти. */
union TCR_REG TCR; // Timer control register union TCR_REG TCR; // Timer control register
/* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // reserved Uint16 rsvd1; // reserved
/* Объединяет несколько представлений TPR_REG TPR; в одной области памяти. */
union TPR_REG TPR; // Timer pre-scale low union TPR_REG TPR; // Timer pre-scale low
/* Объединяет несколько представлений TPRH_REG TPRH; в одной области памяти. */
union TPRH_REG TPRH; // Timer pre-scale high union TPRH_REG TPRH; // Timer pre-scale high
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// CPU Timer Support Variables: // CPU Timer Support Variables:
// //
/* Описывает структуру CPUTIMER_VARS; порядок полей определяет расположение данных. */
struct CPUTIMER_VARS { struct CPUTIMER_VARS {
/* Продолжает список аргументов, полей или выражение volatile struct CPUTIMER_REGS *RegsAddr;; порядок элементов сохраняется. */
volatile struct CPUTIMER_REGS *RegsAddr; volatile struct CPUTIMER_REGS *RegsAddr;
/* Объявляет InterruptCount — прерывание число. */
Uint32 InterruptCount; Uint32 InterruptCount;
/* Объявляет CPUFreqInMHz — данные CPUFreqInMHz. */
float CPUFreqInMHz; float CPUFreqInMHz;
/* Объявляет PeriodInUSec — период In U Sec. */
float PeriodInUSec; float PeriodInUSec;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Function prototypes and external definitions: // Function prototypes and external definitions:
// //
/* Объявляет интерфейс функции InitCpuTimers; реализация вызывается через этот прототип. */
void InitCpuTimers(void); void InitCpuTimers(void);
/* Объявляет интерфейс функции ConfigCpuTimer; реализация вызывается через этот прототип. */
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period); void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period);
/* Продолжает список аргументов, полей или выражение extern volatile struct CPUTIMER_REGS CpuTimer0Regs;; порядок элементов сохраняется. */
extern volatile struct CPUTIMER_REGS CpuTimer0Regs; extern volatile struct CPUTIMER_REGS CpuTimer0Regs;
/* Продолжает список аргументов, полей или выражение extern struct CPUTIMER_VARS CpuTimer0;; порядок элементов сохраняется. */
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 // 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 CpuTimer1Regs;
/* Продолжает список аргументов, полей или выражение extern volatile struct CPUTIMER_REGS CpuTimer2Regs;; порядок элементов сохраняется. */
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 CpuTimer1;
/* Продолжает список аргументов, полей или выражение extern struct CPUTIMER_VARS CpuTimer2;; порядок элементов сохраняется. */
extern struct CPUTIMER_VARS CpuTimer2; extern struct CPUTIMER_VARS CpuTimer2;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Usefull Timer Operations: // Usefull Timer Operations:
// //
// Start Timer: // Start Timer:
/* Задаёт StartCpuTimer0 = CpuTimer0Regs.TCR.bit.TSS = 0; Start Cpu таймер 0. */
#define StartCpuTimer0() CpuTimer0Regs.TCR.bit.TSS = 0 #define StartCpuTimer0() CpuTimer0Regs.TCR.bit.TSS = 0
// Stop Timer: // Stop Timer:
/* Задаёт StopCpuTimer0 = CpuTimer0Regs.TCR.bit.TSS = 1; Stop Cpu таймер 0. */
#define StopCpuTimer0() CpuTimer0Regs.TCR.bit.TSS = 1 #define StopCpuTimer0() CpuTimer0Regs.TCR.bit.TSS = 1
// Reload Timer With period Value: // Reload Timer With period Value:
/* Задаёт ReloadCpuTimer0 = CpuTimer0Regs.TCR.bit.TRB = 1; Reload Cpu таймер 0. */
#define ReloadCpuTimer0() CpuTimer0Regs.TCR.bit.TRB = 1 #define ReloadCpuTimer0() CpuTimer0Regs.TCR.bit.TRB = 1
// Read 32-Bit Timer Value: // Read 32-Bit Timer Value:
/* Задаёт ReadCpuTimer0Counter = CpuTimer0Regs.TIM.all; чтение Cpu таймер 0 счётчик. */
#define ReadCpuTimer0Counter() CpuTimer0Regs.TIM.all #define ReadCpuTimer0Counter() CpuTimer0Regs.TIM.all
// Read 32-Bit Period Value: // Read 32-Bit Period Value:
/* Задаёт ReadCpuTimer0Period = CpuTimer0Regs.PRD.all; чтение Cpu таймер 0 период. */
#define ReadCpuTimer0Period() CpuTimer0Regs.PRD.all #define ReadCpuTimer0Period() CpuTimer0Regs.PRD.all
// CpuTimer 1 and CpuTimer2 are reserved for DSP BIOS & other RTOS // 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. // if using DSP-BIOS or another realtime OS.
// Start Timer: // Start Timer:
/* Задаёт StartCpuTimer1 = CpuTimer1Regs.TCR.bit.TSS = 0; Start Cpu таймер 1. */
#define StartCpuTimer1() CpuTimer1Regs.TCR.bit.TSS = 0 #define StartCpuTimer1() CpuTimer1Regs.TCR.bit.TSS = 0
/* Задаёт StartCpuTimer2 = CpuTimer2Regs.TCR.bit.TSS = 0; Start Cpu таймер 2. */
#define StartCpuTimer2() CpuTimer2Regs.TCR.bit.TSS = 0 #define StartCpuTimer2() CpuTimer2Regs.TCR.bit.TSS = 0
// Stop Timer: // Stop Timer:
/* Задаёт StopCpuTimer1 = CpuTimer1Regs.TCR.bit.TSS = 1; Stop Cpu таймер 1. */
#define StopCpuTimer1() CpuTimer1Regs.TCR.bit.TSS = 1 #define StopCpuTimer1() CpuTimer1Regs.TCR.bit.TSS = 1
/* Задаёт StopCpuTimer2 = CpuTimer2Regs.TCR.bit.TSS = 1; Stop Cpu таймер 2. */
#define StopCpuTimer2() CpuTimer2Regs.TCR.bit.TSS = 1 #define StopCpuTimer2() CpuTimer2Regs.TCR.bit.TSS = 1
// Reload Timer With period Value: // Reload Timer With period Value:
/* Задаёт ReloadCpuTimer1 = CpuTimer1Regs.TCR.bit.TRB = 1; Reload Cpu таймер 1. */
#define ReloadCpuTimer1() CpuTimer1Regs.TCR.bit.TRB = 1 #define ReloadCpuTimer1() CpuTimer1Regs.TCR.bit.TRB = 1
/* Задаёт ReloadCpuTimer2 = CpuTimer2Regs.TCR.bit.TRB = 1; Reload Cpu таймер 2. */
#define ReloadCpuTimer2() CpuTimer2Regs.TCR.bit.TRB = 1 #define ReloadCpuTimer2() CpuTimer2Regs.TCR.bit.TRB = 1
// Read 32-Bit Timer Value: // Read 32-Bit Timer Value:
/* Задаёт ReadCpuTimer1Counter = CpuTimer1Regs.TIM.all; чтение Cpu таймер 1 счётчик. */
#define ReadCpuTimer1Counter() CpuTimer1Regs.TIM.all #define ReadCpuTimer1Counter() CpuTimer1Regs.TIM.all
/* Задаёт ReadCpuTimer2Counter = CpuTimer2Regs.TIM.all; чтение Cpu таймер 2 счётчик. */
#define ReadCpuTimer2Counter() CpuTimer2Regs.TIM.all #define ReadCpuTimer2Counter() CpuTimer2Regs.TIM.all
// Read 32-Bit Period Value: // Read 32-Bit Period Value:
/* Задаёт ReadCpuTimer1Period = CpuTimer1Regs.PRD.all; чтение Cpu таймер 1 период. */
#define ReadCpuTimer1Period() CpuTimer1Regs.PRD.all #define ReadCpuTimer1Period() CpuTimer1Regs.PRD.all
/* Задаёт ReadCpuTimer2Period = CpuTimer2Regs.PRD.all; чтение Cpu таймер 2 период. */
#define ReadCpuTimer2Period() CpuTimer2Regs.PRD.all #define ReadCpuTimer2Period() CpuTimer2Regs.PRD.all
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_CPU_TIMERS_H definition #endif // end of DSP2833x_CPU_TIMERS_H definition

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание DMA для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/11 $ // TI File $Revision: /main/11 $
// Checkin $Date: June 23, 2008 11:34:15 $ // Checkin $Date: June 23, 2008 11:34:15 $
//########################################################################### //###########################################################################
@@ -12,24 +11,17 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_DMA_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DMA_H #ifndef DSP2833x_DMA_H
/* Определяет защитный символ или переключатель DSP2833x_DMA_H для последующей компиляции. */
#define DSP2833x_DMA_H #define DSP2833x_DMA_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
//---------------------------------------------------- //----------------------------------------------------
// Channel MODE register bit definitions: // Channel MODE register bit definitions:
/* Описывает структуру MODE_BITS; порядок полей определяет расположение данных. */
struct MODE_BITS { // bits description struct MODE_BITS { // bits description
/* Битовое поле PERINTSEL, ширина 5 бит; данные PERINTSEL. */
Uint16 PERINTSEL:5; // 4:0 Peripheral Interrupt and Sync Select Bits (R/W): Uint16 PERINTSEL:5; // 4:0 Peripheral Interrupt and Sync Select Bits (R/W):
// 0 no interrupt // 0 no interrupt
// 1 SEQ1INT & ADCSYNC // 1 SEQ1INT & ADCSYNC
@@ -62,191 +54,127 @@ struct MODE_BITS { // bits description
// 28 ePWM6SOCA // 28 ePWM6SOCA
// 29 ePWM6SOCB // 29 ePWM6SOCB
// 30:31 no interrupt // 30:31 no interrupt
/* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 6:5 (R=0:0) Uint16 rsvd1:2; // 6:5 (R=0:0)
/* Битовое поле OVRINTE, ширина 1 бит; данные OVRINTE. */
Uint16 OVRINTE:1; // 7 Overflow Interrupt Enable (R/W): Uint16 OVRINTE:1; // 7 Overflow Interrupt Enable (R/W):
// 0 overflow interrupt disabled // 0 overflow interrupt disabled
// 1 overflow interrupt enabled // 1 overflow interrupt enabled
/* Битовое поле PERINTE, ширина 1 бит; данные PERINTE. */
Uint16 PERINTE:1; // 8 Peripheral Interrupt Enable Bit (R/W): Uint16 PERINTE:1; // 8 Peripheral Interrupt Enable Bit (R/W):
// 0 peripheral interrupt disabled // 0 peripheral interrupt disabled
// 1 peripheral interrupt enabled // 1 peripheral interrupt enabled
/* Битовое поле CHINTMODE, ширина 1 бит; данные CHINTMODE. */
Uint16 CHINTMODE:1; // 9 Channel Interrupt Mode Bit (R/W): Uint16 CHINTMODE:1; // 9 Channel Interrupt Mode Bit (R/W):
// 0 generate interrupt at beginning of new transfer // 0 generate interrupt at beginning of new transfer
// 1 generate interrupt at end of transfer // 1 generate interrupt at end of transfer
/* Битовое поле ONESHOT, ширина 1 бит; данные ONESHOT. */
Uint16 ONESHOT:1; // 10 One Shot Mode Bit (R/W): Uint16 ONESHOT:1; // 10 One Shot Mode Bit (R/W):
// 0 only interrupt event triggers single burst transfer // 0 only interrupt event triggers single burst transfer
// 1 first interrupt triggers burst, continue until transfer count is zero // 1 first interrupt triggers burst, continue until transfer count is zero
/* Битовое поле CONTINUOUS, ширина 1 бит; данные CONTINUOUS. */
Uint16 CONTINUOUS:1; // 11 Continous Mode Bit (R/W): Uint16 CONTINUOUS:1; // 11 Continous Mode Bit (R/W):
// 0 stop when transfer count is zero // 0 stop when transfer count is zero
// 1 re-initialize 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): Uint16 SYNCE:1; // 12 Sync Enable Bit (R/W):
// 0 ignore selected interrupt sync signal // 0 ignore selected interrupt sync signal
// 1 enable selected interrupt sync signal // 1 enable selected interrupt sync signal
/* Битовое поле SYNCSEL, ширина 1 бит; данные SYNCSEL. */
Uint16 SYNCSEL:1; // 13 Sync Select Bit (R/W): Uint16 SYNCSEL:1; // 13 Sync Select Bit (R/W):
// 0 sync signal controls source wrap counter // 0 sync signal controls source wrap counter
// 1 sync signal controls destination wrap counter // 1 sync signal controls destination wrap counter
/* Битовое поле DATASIZE, ширина 1 бит; данные DATASIZE. */
Uint16 DATASIZE:1; // 14 Data Size Mode Bit (R/W): Uint16 DATASIZE:1; // 14 Data Size Mode Bit (R/W):
// 0 16-bit data transfer size // 0 16-bit data transfer size
// 1 32-bit data transfer size // 1 32-bit data transfer size
/* Битовое поле CHINTE, ширина 1 бит; данные CHINTE. */
Uint16 CHINTE:1; // 15 Channel Interrupt Enable Bit (R/W): Uint16 CHINTE:1; // 15 Channel Interrupt Enable Bit (R/W):
// 0 channel interrupt disabled // 0 channel interrupt disabled
// 1 channel interrupt enabled // 1 channel interrupt enabled
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений MODE_REG в одной области памяти. */
union MODE_REG { union MODE_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру MODE_BITS bit;; порядок полей определяет расположение данных. */
struct MODE_BITS bit; struct MODE_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Channel CONTROL register bit definitions: // Channel CONTROL register bit definitions:
/* Описывает структуру CONTROL_BITS; порядок полей определяет расположение данных. */
struct CONTROL_BITS { // bits description struct CONTROL_BITS { // bits description
/* Битовое поле RUN, ширина 1 бит; данные RUN. */
Uint16 RUN:1; // 0 Run Bit (R=0/W=1) Uint16 RUN:1; // 0 Run Bit (R=0/W=1)
/* Битовое поле HALT, ширина 1 бит; данные HALT. */
Uint16 HALT:1; // 1 Halt Bit (R=0/W=1) Uint16 HALT:1; // 1 Halt Bit (R=0/W=1)
/* Битовое поле SOFTRESET, ширина 1 бит; данные SOFTRESET. */
Uint16 SOFTRESET:1; // 2 Soft Reset Bit (R=0/W=1) 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) 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) 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) 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) 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) Uint16 ERRCLR:1; // 7 Error Clear Bit (R=0/W=1)
/* Битовое поле PERINTFLG, ширина 1 бит; данные PERINTFLG. */
Uint16 PERINTFLG:1; // 8 Interrupt Flag Bit (R): Uint16 PERINTFLG:1; // 8 Interrupt Flag Bit (R):
// 0 no interrupt pending // 0 no interrupt pending
// 1 interrupt pending // 1 interrupt pending
/* Битовое поле SYNCFLG, ширина 1 бит; данные SYNCFLG. */
Uint16 SYNCFLG:1; // 9 Sync Flag Bit (R): Uint16 SYNCFLG:1; // 9 Sync Flag Bit (R):
// 0 no sync pending // 0 no sync pending
// 1 sync pending // 1 sync pending
/* Битовое поле SYNCERR, ширина 1 бит; данные SYNCERR. */
Uint16 SYNCERR:1; // 10 Sync Error Flag Bit (R): Uint16 SYNCERR:1; // 10 Sync Error Flag Bit (R):
// 0 no sync error // 0 no sync error
// 1 sync error detected // 1 sync error detected
/* Битовое поле TRANSFERSTS, ширина 1 бит; данные TRANSFERSTS. */
Uint16 TRANSFERSTS:1; // 11 Transfer Status Bit (R): Uint16 TRANSFERSTS:1; // 11 Transfer Status Bit (R):
// 0 no transfer in progress or pending // 0 no transfer in progress or pending
// 1 transfer in progress or pending // 1 transfer in progress or pending
/* Битовое поле BURSTSTS, ширина 1 бит; данные BURSTSTS. */
Uint16 BURSTSTS:1; // 12 Burst Status Bit (R): Uint16 BURSTSTS:1; // 12 Burst Status Bit (R):
// 0 no burst in progress or pending // 0 no burst in progress or pending
// 1 burst in progress or pending // 1 burst in progress or pending
/* Битовое поле RUNSTS, ширина 1 бит; данные RUNSTS. */
Uint16 RUNSTS:1; // 13 Run Status Bit (R): Uint16 RUNSTS:1; // 13 Run Status Bit (R):
// 0 channel not running or halted // 0 channel not running or halted
// 1 channel running // 1 channel running
/* Битовое поле OVRFLG, ширина 1 бит; данные OVRFLG. */
Uint16 OVRFLG:1; // 14 Overflow Flag Bit(R) Uint16 OVRFLG:1; // 14 Overflow Flag Bit(R)
// 0 no overflow event // 0 no overflow event
// 1 overflow event // 1 overflow event
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 15 (R=0) Uint16 rsvd1:1; // 15 (R=0)
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений CONTROL_REG в одной области памяти. */
union CONTROL_REG { union CONTROL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру CONTROL_BITS bit;; порядок полей определяет расположение данных. */
struct CONTROL_BITS bit; struct CONTROL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// DMACTRL register bit definitions: // DMACTRL register bit definitions:
/* Описывает структуру DMACTRL_BITS; порядок полей определяет расположение данных. */
struct DMACTRL_BITS { // bits description struct DMACTRL_BITS { // bits description
/* Битовое поле HARDRESET, ширина 1 бит; данные HARDRESET. */
Uint16 HARDRESET:1; // 0 Hard Reset Bit (R=0/W=1) 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) Uint16 PRIORITYRESET:1; // 1 Priority Reset Bit (R=0/W=1)
/* Битовое поле rsvd1, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:14; // 15:2 (R=0:0) Uint16 rsvd1:14; // 15:2 (R=0:0)
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений DMACTRL_REG в одной области памяти. */
union DMACTRL_REG { union DMACTRL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру DMACTRL_BITS bit;; порядок полей определяет расположение данных. */
struct DMACTRL_BITS bit; struct DMACTRL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// DEBUGCTRL register bit definitions: // DEBUGCTRL register bit definitions:
/* Описывает структуру DEBUGCTRL_BITS; порядок полей определяет расположение данных. */
struct DEBUGCTRL_BITS { // bits description struct DEBUGCTRL_BITS { // bits description
/* Битовое поле rsvd1, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:15; // 14:0 (R=0:0) Uint16 rsvd1:15; // 14:0 (R=0:0)
/* Битовое поле FREE, ширина 1 бит; данные FREE. */
Uint16 FREE:1; // 15 Debug Mode Bit (R/W): Uint16 FREE:1; // 15 Debug Mode Bit (R/W):
// 0 halt after current read-write operation // 0 halt after current read-write operation
// 1 continue running // 1 continue running
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений DEBUGCTRL_REG в одной области памяти. */
union DEBUGCTRL_REG { union DEBUGCTRL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру DEBUGCTRL_BITS bit;; порядок полей определяет расположение данных. */
struct DEBUGCTRL_BITS bit; struct DEBUGCTRL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// PRIORITYCTRL1 register bit definitions: // PRIORITYCTRL1 register bit definitions:
/* Описывает структуру PRIORITYCTRL1_BITS; порядок полей определяет расположение данных. */
struct PRIORITYCTRL1_BITS { // bits description struct PRIORITYCTRL1_BITS { // bits description
/* Битовое поле CH1PRIORITY, ширина 1 бит; 1 приоритет. */
Uint16 CH1PRIORITY:1; // 0 Ch1 Priority Bit (R/W): Uint16 CH1PRIORITY:1; // 0 Ch1 Priority Bit (R/W):
// 0 same priority as all other channels // 0 same priority as all other channels
// 1 highest priority channel // 1 highest priority channel
/* Битовое поле rsvd1, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:15; // 15:1 (R=0:0) Uint16 rsvd1:15; // 15:1 (R=0:0)
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений PRIORITYCTRL1_REG в одной области памяти. */
union PRIORITYCTRL1_REG { union PRIORITYCTRL1_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру PRIORITYCTRL1_BITS bit;; порядок полей определяет расположение данных. */
struct PRIORITYCTRL1_BITS bit; struct PRIORITYCTRL1_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// PRIORITYSTAT register bit definitions: // PRIORITYSTAT register bit definitions:
/* Описывает структуру PRIORITYSTAT_BITS; порядок полей определяет расположение данных. */
struct PRIORITYSTAT_BITS { // bits description struct PRIORITYSTAT_BITS { // bits description
/* Битовое поле ACTIVESTS, ширина 3 бит; данные ACTIVESTS. */
Uint16 ACTIVESTS:3; // 2:0 Active Channel Status Bits (R): Uint16 ACTIVESTS:3; // 2:0 Active Channel Status Bits (R):
// 0,0,0 no channel active // 0,0,0 no channel active
// 0,0,1 Ch1 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,0 Ch4 channel active
// 1,0,1 Ch5 channel active // 1,0,1 Ch5 channel active
// 1,1,0 Ch6 channel active // 1,1,0 Ch6 channel active
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 3 (R=0) Uint16 rsvd1:1; // 3 (R=0)
/* Битовое поле ACTIVESTS_SHADOW, ширина 3 бит; данные ACTIVESTS_SHADOW. */
Uint16 ACTIVESTS_SHADOW:3; // 6:4 Active Channel Status Shadow Bits (R): Uint16 ACTIVESTS_SHADOW:3; // 6:4 Active Channel Status Shadow Bits (R):
// 0,0,0 no channel active and interrupted by Ch1 // 0,0,0 no channel active and interrupted by Ch1
// 0,0,1 cannot occur // 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,0 Ch4 was active and interrupted by Ch1
// 1,0,1 Ch5 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 // 1,1,0 Ch6 was active and interrupted by Ch1
/* Битовое поле rsvd2, ширина 9 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:9; // 15:7 (R=0:0) Uint16 rsvd2:9; // 15:7 (R=0:0)
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений PRIORITYSTAT_REG в одной области памяти. */
union PRIORITYSTAT_REG { union PRIORITYSTAT_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру PRIORITYSTAT_BITS bit;; порядок полей определяет расположение данных. */
struct PRIORITYSTAT_BITS bit; struct PRIORITYSTAT_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
// Burst Size // Burst Size
/* Описывает структуру BURST_SIZE_BITS; порядок полей определяет расположение данных. */
struct BURST_SIZE_BITS { // bits description struct BURST_SIZE_BITS { // bits description
/* Битовое поле BURSTSIZE, ширина 5 бит; данные BURSTSIZE. */
Uint16 BURSTSIZE:5; // 4:0 Burst transfer size Uint16 BURSTSIZE:5; // 4:0 Burst transfer size
/* Битовое поле rsvd1, ширина 11 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:11; // 15:5 reserved Uint16 rsvd1:11; // 15:5 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений BURST_SIZE_REG в одной области памяти. */
union BURST_SIZE_REG { union BURST_SIZE_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру BURST_SIZE_BITS bit;; порядок полей определяет расположение данных. */
struct BURST_SIZE_BITS bit; struct BURST_SIZE_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
// Burst Count // Burst Count
/* Описывает структуру BURST_COUNT_BITS; порядок полей определяет расположение данных. */
struct BURST_COUNT_BITS { // bits description struct BURST_COUNT_BITS { // bits description
/* Битовое поле BURSTCOUNT, ширина 5 бит; данные BURSTCOUNT. */
Uint16 BURSTCOUNT:5; // 4:0 Burst transfer size Uint16 BURSTCOUNT:5; // 4:0 Burst transfer size
/* Битовое поле rsvd1, ширина 11 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:11; // 15:5 reserved Uint16 rsvd1:11; // 15:5 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений BURST_COUNT_REG в одной области памяти. */
union BURST_COUNT_REG { union BURST_COUNT_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру BURST_COUNT_BITS bit;; порядок полей определяет расположение данных. */
struct BURST_COUNT_BITS bit; struct BURST_COUNT_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// DMA Channel Registers: // DMA Channel Registers:
/* Описывает структуру CH_REGS; порядок полей определяет расположение данных. */
struct CH_REGS { struct CH_REGS {
/* Объединяет несколько представлений MODE_REG MODE; в одной области памяти. */
union MODE_REG MODE; // Mode Register union MODE_REG MODE; // Mode Register
/* Объединяет несколько представлений CONTROL_REG CONTROL; в одной области памяти. */
union CONTROL_REG CONTROL; // Control Register union CONTROL_REG CONTROL; // Control Register
/* Объединяет несколько представлений BURST_SIZE_REG BURST_SIZE; в одной области памяти. */
union BURST_SIZE_REG BURST_SIZE; // Burst Size Register union BURST_SIZE_REG BURST_SIZE; // Burst Size Register
/* Объединяет несколько представлений BURST_COUNT_REG BURST_COUNT; в одной области памяти. */
union BURST_COUNT_REG BURST_COUNT; // Burst Count Register union BURST_COUNT_REG BURST_COUNT; // Burst Count Register
/* Продолжает список аргументов, полей или выражение int16 SRC_BURST_STEP;; порядок элементов сохраняется. */
int16 SRC_BURST_STEP; // Source Burst Step Register int16 SRC_BURST_STEP; // Source Burst Step Register
/* Продолжает список аргументов, полей или выражение int16 DST_BURST_STEP;; порядок элементов сохраняется. */
int16 DST_BURST_STEP; // Destination Burst Step Register int16 DST_BURST_STEP; // Destination Burst Step Register
/* Объявляет TRANSFER_SIZE — TRANSFER размер. */
Uint16 TRANSFER_SIZE; // Transfer Size Register Uint16 TRANSFER_SIZE; // Transfer Size Register
/* Объявляет TRANSFER_COUNT — TRANSFER число. */
Uint16 TRANSFER_COUNT; // Transfer Count Register Uint16 TRANSFER_COUNT; // Transfer Count Register
/* Продолжает список аргументов, полей или выражение int16 SRC_TRANSFER_STEP;; порядок элементов сохраняется. */
int16 SRC_TRANSFER_STEP; // Source Transfer Step Register int16 SRC_TRANSFER_STEP; // Source Transfer Step Register
/* Продолжает список аргументов, полей или выражение int16 DST_TRANSFER_STEP;; порядок элементов сохраняется. */
int16 DST_TRANSFER_STEP; // Destination Transfer Step Register int16 DST_TRANSFER_STEP; // Destination Transfer Step Register
/* Объявляет SRC_WRAP_SIZE — SRC WRAP размер. */
Uint16 SRC_WRAP_SIZE; // Source Wrap Size Register Uint16 SRC_WRAP_SIZE; // Source Wrap Size Register
/* Объявляет SRC_WRAP_COUNT — SRC WRAP число. */
Uint16 SRC_WRAP_COUNT; // Source Wrap Count Register Uint16 SRC_WRAP_COUNT; // Source Wrap Count Register
/* Продолжает список аргументов, полей или выражение int16 SRC_WRAP_STEP;; порядок элементов сохраняется. */
int16 SRC_WRAP_STEP; // Source Wrap Step Register int16 SRC_WRAP_STEP; // Source Wrap Step Register
/* Объявляет DST_WRAP_SIZE — DST WRAP размер. */
Uint16 DST_WRAP_SIZE; // Destination Wrap Size Register Uint16 DST_WRAP_SIZE; // Destination Wrap Size Register
/* Объявляет DST_WRAP_COUNT — DST WRAP число. */
Uint16 DST_WRAP_COUNT; // Destination Wrap Count Register Uint16 DST_WRAP_COUNT; // Destination Wrap Count Register
/* Продолжает список аргументов, полей или выражение int16 DST_WRAP_STEP;; порядок элементов сохраняется. */
int16 DST_WRAP_STEP; // Destination Wrap Step Register 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 Uint32 SRC_BEG_ADDR_SHADOW; // Source Begin Address Shadow Register
/* Объявляет SRC_ADDR_SHADOW — данные SRC_ADDR_SHADOW. */
Uint32 SRC_ADDR_SHADOW; // Source Address Shadow Register 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 Uint32 SRC_BEG_ADDR_ACTIVE; // Source Begin Address Active Register
/* Объявляет SRC_ADDR_ACTIVE — данные SRC_ADDR_ACTIVE. */
Uint32 SRC_ADDR_ACTIVE; // Source Address Active Register 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 Uint32 DST_BEG_ADDR_SHADOW; // Destination Begin Address Shadow Register
/* Объявляет DST_ADDR_SHADOW — данные DST_ADDR_SHADOW. */
Uint32 DST_ADDR_SHADOW; // Destination Address Shadow Register 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 Uint32 DST_BEG_ADDR_ACTIVE; // Destination Begin Address Active Register
/* Объявляет DST_ADDR_ACTIVE — данные DST_ADDR_ACTIVE. */
Uint32 DST_ADDR_ACTIVE; // Destination Address Active Register Uint32 DST_ADDR_ACTIVE; // Destination Address Active Register
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// DMA Registers: // DMA Registers:
/* Описывает структуру DMA_REGS; порядок полей определяет расположение данных. */
struct DMA_REGS { struct DMA_REGS {
/* Объединяет несколько представлений DMACTRL_REG DMACTRL; в одной области памяти. */
union DMACTRL_REG DMACTRL; // DMA Control Register union DMACTRL_REG DMACTRL; // DMA Control Register
/* Объединяет несколько представлений DEBUGCTRL_REG DEBUGCTRL; в одной области памяти. */
union DEBUGCTRL_REG DEBUGCTRL; // Debug Control Register union DEBUGCTRL_REG DEBUGCTRL; // Debug Control Register
/* Объявляет rsvd0 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd0; // reserved Uint16 rsvd0; // reserved
/* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; // Uint16 rsvd1; //
/* Объединяет несколько представлений PRIORITYCTRL1_REG PRIORITYCTRL1; в одной области памяти. */
union PRIORITYCTRL1_REG PRIORITYCTRL1; // Priority Control 1 Register union PRIORITYCTRL1_REG PRIORITYCTRL1; // Priority Control 1 Register
/* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2; // Uint16 rsvd2; //
/* Объединяет несколько представлений PRIORITYSTAT_REG PRIORITYSTAT; в одной области памяти. */
union PRIORITYSTAT_REG PRIORITYSTAT; // Priority Status Register union PRIORITYSTAT_REG PRIORITYSTAT; // Priority Status Register
/* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3[25]; // Uint16 rsvd3[25]; //
/* Описывает структуру CH_REGS CH1;; порядок полей определяет расположение данных. */
struct CH_REGS CH1; // DMA Channel 1 Registers struct CH_REGS CH1; // DMA Channel 1 Registers
/* Описывает структуру CH_REGS CH2;; порядок полей определяет расположение данных. */
struct CH_REGS CH2; // DMA Channel 2 Registers struct CH_REGS CH2; // DMA Channel 2 Registers
/* Описывает структуру CH_REGS CH3;; порядок полей определяет расположение данных. */
struct CH_REGS CH3; // DMA Channel 3 Registers struct CH_REGS CH3; // DMA Channel 3 Registers
/* Описывает структуру CH_REGS CH4;; порядок полей определяет расположение данных. */
struct CH_REGS CH4; // DMA Channel 4 Registers struct CH_REGS CH4; // DMA Channel 4 Registers
/* Описывает структуру CH_REGS CH5;; порядок полей определяет расположение данных. */
struct CH_REGS CH5; // DMA Channel 5 Registers struct CH_REGS CH5; // DMA Channel 5 Registers
/* Описывает структуру CH_REGS CH6;; порядок полей определяет расположение данных. */
struct CH_REGS CH6; // DMA Channel 6 Registers struct CH_REGS CH6; // DMA Channel 6 Registers
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// External References & Function Declarations: // External References & Function Declarations:
// //
/* Продолжает список аргументов, полей или выражение extern volatile struct DMA_REGS DmaRegs;; порядок элементов сохраняется. */
extern volatile struct DMA_REGS DmaRegs; extern volatile struct DMA_REGS DmaRegs;
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_DMA_H definition #endif // end of DSP2833x_DMA_H definition
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание DevEmu для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/3 $ // TI File $Revision: /main/3 $
// Checkin $Date: June 2, 2008 11:12:30 $ // Checkin $Date: June 2, 2008 11:12:30 $
//########################################################################### //###########################################################################
@@ -12,122 +11,71 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_DEV_EMU_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DEV_EMU_H #ifndef DSP2833x_DEV_EMU_H
/* Определяет защитный символ или переключатель DSP2833x_DEV_EMU_H для последующей компиляции. */
#define DSP2833x_DEV_EMU_H #define DSP2833x_DEV_EMU_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Device Emulation Register Bit Definitions: // Device Emulation Register Bit Definitions:
// //
// Device Configuration Register Bit Definitions // Device Configuration Register Bit Definitions
/* Описывает структуру DEVICECNF_BITS; порядок полей определяет расположение данных. */
struct DEVICECNF_BITS { // bits description struct DEVICECNF_BITS { // bits description
/* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 2:0 reserved Uint16 rsvd1:3; // 2:0 reserved
/* Битовое поле VMAPS, ширина 1 бит; данные VMAPS. */
Uint16 VMAPS:1; // 3 VMAP Status Uint16 VMAPS:1; // 3 VMAP Status
/* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 4 reserved Uint16 rsvd2:1; // 4 reserved
/* Битовое поле XRSn, ширина 1 бит; данные XRSn. */
Uint16 XRSn:1; // 5 XRSn Signal Status Uint16 XRSn:1; // 5 XRSn Signal Status
/* Битовое поле rsvd3, ширина 10 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:10; // 15:6 Uint16 rsvd3:10; // 15:6
/* Битовое поле rsvd4, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd4:3; // 18:16 Uint16 rsvd4:3; // 18:16
/* Битовое поле ENPROT, ширина 1 бит; данные ENPROT. */
Uint16 ENPROT:1; // 19 Enable/Disable pipeline protection Uint16 ENPROT:1; // 19 Enable/Disable pipeline protection
/* Битовое поле MONPRIV, ширина 1 бит; данные MONPRIV. */
Uint16 MONPRIV:1; // 20 MONPRIV enable bit Uint16 MONPRIV:1; // 20 MONPRIV enable bit
/* Битовое поле rsvd5, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd5:1; // 21 reserved Uint16 rsvd5:1; // 21 reserved
/* Битовое поле EMU0SEL, ширина 2 бит; данные EMU0SEL. */
Uint16 EMU0SEL:2; // 23,22 EMU0 Mux select Uint16 EMU0SEL:2; // 23,22 EMU0 Mux select
/* Битовое поле EMU1SEL, ширина 2 бит; данные EMU1SEL. */
Uint16 EMU1SEL:2; // 25,24 EMU1 Mux select Uint16 EMU1SEL:2; // 25,24 EMU1 Mux select
/* Битовое поле MCBSPCON, ширина 1 бит; данные MCBSPCON. */
Uint16 MCBSPCON:1; // 26 McBSP-B to EMU0/EMU1 pins control Uint16 MCBSPCON:1; // 26 McBSP-B to EMU0/EMU1 pins control
/* Битовое поле rsvd6, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd6:5; // 31:27 reserved Uint16 rsvd6:5; // 31:27 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений DEVICECNF_REG в одной области памяти. */
union DEVICECNF_REG { union DEVICECNF_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру DEVICECNF_BITS bit;; порядок полей определяет расположение данных. */
struct DEVICECNF_BITS bit; struct DEVICECNF_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
// CLASSID // CLASSID
/* Описывает структуру CLASSID_BITS; порядок полей определяет расположение данных. */
struct CLASSID_BITS { // bits description struct CLASSID_BITS { // bits description
/* Битовое поле CLASSNO, ширина 8 бит; данные CLASSNO. */
Uint16 CLASSNO:8; // 7:0 Class Number Uint16 CLASSNO:8; // 7:0 Class Number
/* Битовое поле PARTTYPE, ширина 8 бит; данные PARTTYPE. */
Uint16 PARTTYPE:8; // 15:8 Part Type Uint16 PARTTYPE:8; // 15:8 Part Type
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений CLASSID_REG в одной области памяти. */
union CLASSID_REG { union CLASSID_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру CLASSID_BITS bit;; порядок полей определяет расположение данных. */
struct CLASSID_BITS bit; struct CLASSID_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру DEV_EMU_REGS; порядок полей определяет расположение данных. */
struct DEV_EMU_REGS { struct DEV_EMU_REGS {
/* Объединяет несколько представлений DEVICECNF_REG DEVICECNF; в одной области памяти. */
union DEVICECNF_REG DEVICECNF; // device configuration union DEVICECNF_REG DEVICECNF; // device configuration
/* Объединяет несколько представлений CLASSID_REG CLASSID; в одной области памяти. */
union CLASSID_REG CLASSID; // Class ID union CLASSID_REG CLASSID; // Class ID
/* Объявляет REVID — данные REVID. */
Uint16 REVID; // Device ID Uint16 REVID; // Device ID
/* Объявляет PROTSTART — данные PROTSTART. */
Uint16 PROTSTART; // Write-Read protection start Uint16 PROTSTART; // Write-Read protection start
/* Объявляет PROTRANGE — данные PROTRANGE. */
Uint16 PROTRANGE; // Write-Read protection range Uint16 PROTRANGE; // Write-Read protection range
/* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2[202]; Uint16 rsvd2[202];
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
// PARTID // PARTID
/* Описывает структуру PARTID_BITS; порядок полей определяет расположение данных. */
struct PARTID_BITS { // bits description struct PARTID_BITS { // bits description
/* Битовое поле PARTNO, ширина 8 бит; данные PARTNO. */
Uint16 PARTNO:8; // 7:0 Part Number Uint16 PARTNO:8; // 7:0 Part Number
/* Битовое поле PARTTYPE, ширина 8 бит; данные PARTTYPE. */
Uint16 PARTTYPE:8; // 15:8 Part Type Uint16 PARTTYPE:8; // 15:8 Part Type
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений PARTID_REG в одной области памяти. */
union PARTID_REG { union PARTID_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру PARTID_BITS bit;; порядок полей определяет расположение данных. */
struct PARTID_BITS bit; struct PARTID_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру PARTID_REGS; порядок полей определяет расположение данных. */
struct PARTID_REGS { struct PARTID_REGS {
/* Объединяет несколько представлений PARTID_REG PARTID; в одной области памяти. */
union PARTID_REG PARTID; // Part ID union PARTID_REG PARTID; // Part ID
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
@@ -135,18 +83,13 @@ struct PARTID_REGS {
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Device Emulation Register References & Function Declarations: // Device Emulation Register References & Function Declarations:
// //
/* Продолжает список аргументов, полей или выражение extern volatile struct DEV_EMU_REGS DevEmuRegs;; порядок элементов сохраняется. */
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; extern volatile struct PARTID_REGS PartIdRegs;
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_DEV_EMU_H definition #endif // end of DSP2833x_DEV_EMU_H definition
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание Device для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/5 $ // TI File $Revision: /main/5 $
// Checkin $Date: January 22, 2008 16:55:35 $ // Checkin $Date: January 22, 2008 16:55:35 $
//########################################################################### //###########################################################################
@@ -12,30 +11,21 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_DEVICE_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_DEVICE_H #ifndef DSP2833x_DEVICE_H
/* Определяет защитный символ или переключатель DSP2833x_DEVICE_H для последующей компиляции. */
#define DSP2833x_DEVICE_H #define DSP2833x_DEVICE_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Задаёт TARGET = 1; данные TARGET. */
#define TARGET 1 #define TARGET 1
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// User To Select Target Device: // User To Select Target Device:
/* Задаёт DSP28_28335 = TARGET; данные DSP28_28335. */
#define DSP28_28335 TARGET // Selects '28335/'28235 #define DSP28_28335 TARGET // Selects '28335/'28235
/* Задаёт DSP28_28334 = 0; данные DSP28_28334. */
#define DSP28_28334 0 // Selects '28334/'28234 #define DSP28_28334 0 // Selects '28334/'28234
/* Задаёт DSP28_28332 = 0; данные DSP28_28332. */
#define DSP28_28332 0 // Selects '28332/'28232 #define DSP28_28332 0 // Selects '28332/'28232
@@ -43,90 +33,49 @@ extern "C" {
// Common CPU Definitions: // Common CPU Definitions:
// //
/* Продолжает список аргументов, полей или выражение extern cregister volatile unsigned int IFR;; порядок элементов сохраняется. */
extern cregister volatile unsigned int IFR; extern cregister volatile unsigned int IFR;
/* Продолжает список аргументов, полей или выражение extern cregister volatile unsigned int IER;; порядок элементов сохраняется. */
extern cregister volatile unsigned int IER; extern cregister volatile unsigned int IER;
/* Задаёт EINT = asm(" clrc INTM"); разрешение маскируемых прерываний ядра. */
#define EINT asm(" clrc INTM") #define EINT asm(" clrc INTM")
/* Задаёт DINT = asm(" setc INTM"); запрет маскируемых прерываний ядра. */
#define DINT asm(" setc INTM") #define DINT asm(" setc INTM")
/* Задаёт ERTM = asm(" clrc DBGM"); данные ERTM. */
#define ERTM asm(" clrc DBGM") #define ERTM asm(" clrc DBGM")
/* Задаёт DRTM = asm(" setc DBGM"); данные DRTM. */
#define DRTM asm(" setc DBGM") #define DRTM asm(" setc DBGM")
/* Задаёт EALLOW = asm(" EALLOW"); разрешение записи в защищённые регистры периферии. */
#define EALLOW asm(" EALLOW") #define EALLOW asm(" EALLOW")
/* Задаёт EDIS = asm(" EDIS"); закрытие доступа к защищённым регистрам периферии. */
#define EDIS asm(" EDIS") #define EDIS asm(" EDIS")
/* Задаёт ESTOP0 = asm(" ESTOP0"); данные ESTOP0. */
#define ESTOP0 asm(" ESTOP0") #define ESTOP0 asm(" ESTOP0")
/* Задаёт M_INT1 = 0x0001; данные M_INT1. */
#define M_INT1 0x0001 #define M_INT1 0x0001
/* Задаёт M_INT2 = 0x0002; данные M_INT2. */
#define M_INT2 0x0002 #define M_INT2 0x0002
/* Задаёт M_INT3 = 0x0004; данные M_INT3. */
#define M_INT3 0x0004 #define M_INT3 0x0004
/* Задаёт M_INT4 = 0x0008; данные M_INT4. */
#define M_INT4 0x0008 #define M_INT4 0x0008
/* Задаёт M_INT5 = 0x0010; данные M_INT5. */
#define M_INT5 0x0010 #define M_INT5 0x0010
/* Задаёт M_INT6 = 0x0020; данные M_INT6. */
#define M_INT6 0x0020 #define M_INT6 0x0020
/* Задаёт M_INT7 = 0x0040; данные M_INT7. */
#define M_INT7 0x0040 #define M_INT7 0x0040
/* Задаёт M_INT8 = 0x0080; данные M_INT8. */
#define M_INT8 0x0080 #define M_INT8 0x0080
/* Задаёт M_INT9 = 0x0100; данные M_INT9. */
#define M_INT9 0x0100 #define M_INT9 0x0100
/* Задаёт M_INT10 = 0x0200; данные M_INT10. */
#define M_INT10 0x0200 #define M_INT10 0x0200
/* Задаёт M_INT11 = 0x0400; данные M_INT11. */
#define M_INT11 0x0400 #define M_INT11 0x0400
/* Задаёт M_INT12 = 0x0800; данные M_INT12. */
#define M_INT12 0x0800 #define M_INT12 0x0800
/* Задаёт M_INT13 = 0x1000; данные M_INT13. */
#define M_INT13 0x1000 #define M_INT13 0x1000
/* Задаёт M_INT14 = 0x2000; данные M_INT14. */
#define M_INT14 0x2000 #define M_INT14 0x2000
/* Задаёт M_DLOG = 0x4000; данные M_DLOG. */
#define M_DLOG 0x4000 #define M_DLOG 0x4000
/* Задаёт M_RTOS = 0x8000; данные M_RTOS. */
#define M_RTOS 0x8000 #define M_RTOS 0x8000
/* Задаёт BIT0 = 0x0001; данные BIT0. */
#define BIT0 0x0001 #define BIT0 0x0001
/* Задаёт BIT1 = 0x0002; данные BIT1. */
#define BIT1 0x0002 #define BIT1 0x0002
/* Задаёт BIT2 = 0x0004; данные BIT2. */
#define BIT2 0x0004 #define BIT2 0x0004
/* Задаёт BIT3 = 0x0008; данные BIT3. */
#define BIT3 0x0008 #define BIT3 0x0008
/* Задаёт BIT4 = 0x0010; данные BIT4. */
#define BIT4 0x0010 #define BIT4 0x0010
/* Задаёт BIT5 = 0x0020; данные BIT5. */
#define BIT5 0x0020 #define BIT5 0x0020
/* Задаёт BIT6 = 0x0040; данные BIT6. */
#define BIT6 0x0040 #define BIT6 0x0040
/* Задаёт BIT7 = 0x0080; данные BIT7. */
#define BIT7 0x0080 #define BIT7 0x0080
/* Задаёт BIT8 = 0x0100; данные BIT8. */
#define BIT8 0x0100 #define BIT8 0x0100
/* Задаёт BIT9 = 0x0200; данные BIT9. */
#define BIT9 0x0200 #define BIT9 0x0200
/* Задаёт BIT10 = 0x0400; данные BIT10. */
#define BIT10 0x0400 #define BIT10 0x0400
/* Задаёт BIT11 = 0x0800; данные BIT11. */
#define BIT11 0x0800 #define BIT11 0x0800
/* Задаёт BIT12 = 0x1000; данные BIT12. */
#define BIT12 0x1000 #define BIT12 0x1000
/* Задаёт BIT13 = 0x2000; данные BIT13. */
#define BIT13 0x2000 #define BIT13 0x2000
/* Задаёт BIT14 = 0x4000; данные BIT14. */
#define BIT14 0x4000 #define BIT14 0x4000
/* Задаёт BIT15 = 0x8000; данные BIT15. */
#define BIT15 0x8000 #define BIT15 0x8000
@@ -136,517 +85,281 @@ extern cregister volatile unsigned int IER;
// Definitions For 16-bit and 32-Bit Signed/Unsigned Integers: // Definitions For 16-bit and 32-Bit Signed/Unsigned Integers:
// //
/* Начинает условие: DSP28_DATA_TYPES ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP28_DATA_TYPES #ifndef DSP28_DATA_TYPES
/* Определяет защитный символ или переключатель DSP28_DATA_TYPES для последующей компиляции. */
#define DSP28_DATA_TYPES #define DSP28_DATA_TYPES
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef int int16; typedef int int16;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef long int32; typedef long int32;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef long long int64; typedef long long int64;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned int Uint16; typedef unsigned int Uint16;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned long Uint32; typedef unsigned long Uint32;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef unsigned long long Uint64; typedef unsigned long long Uint64;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef float float32; typedef float float32;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef long double float64; typedef long double float64;
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef union typedef union
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */ struct
struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле bit0, ширина 1 бит; бит 0. */
unsigned int bit0: 1; unsigned int bit0: 1;
/* Битовое поле bit1, ширина 1 бит; бит 1. */
unsigned int bit1: 1; unsigned int bit1: 1;
/* Битовое поле bit2, ширина 1 бит; бит 2. */
unsigned int bit2: 1; unsigned int bit2: 1;
/* Битовое поле bit3, ширина 1 бит; бит 3. */
unsigned int bit3: 1; unsigned int bit3: 1;
/* Битовое поле bit4, ширина 1 бит; бит 4. */
unsigned int bit4: 1; unsigned int bit4: 1;
/* Битовое поле bit5, ширина 1 бит; бит 5. */
unsigned int bit5: 1; unsigned int bit5: 1;
/* Битовое поле bit6, ширина 1 бит; бит 6. */
unsigned int bit6: 1; unsigned int bit6: 1;
/* Битовое поле bit7, ширина 1 бит; бит 7. */
unsigned int bit7: 1; unsigned int bit7: 1;
/* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
} bit; } bit;
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле quad_0, ширина 4 бит; данные quad_0. */
unsigned int quad_0 :4; unsigned int quad_0 :4;
/* Битовое поле quad_1, ширина 4 бит; данные quad_1. */
unsigned int quad_1 :4; unsigned int quad_1 :4;
/* Продолжает список аргументов, полей или выражение } qua;; порядок элементов сохраняется. */
} qua; } qua;
/* Продолжает список аргументов, полей или выражение unsigned short all;; порядок элементов сохраняется. */
unsigned short all; unsigned short all;
/* Продолжает список аргументов, полей или выражение } BAITE;; порядок элементов сохраняется. */ } BAITE;
} BAITE;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef union typedef union
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */ struct
struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле bit0, ширина 1 бит; бит 0. */
unsigned int bit0: 1; unsigned int bit0: 1;
/* Битовое поле bit1, ширина 1 бит; бит 1. */
unsigned int bit1: 1; unsigned int bit1: 1;
/* Битовое поле bit2, ширина 1 бит; бит 2. */
unsigned int bit2: 1; unsigned int bit2: 1;
/* Битовое поле bit3, ширина 1 бит; бит 3. */
unsigned int bit3: 1; unsigned int bit3: 1;
/* Битовое поле bit4, ширина 1 бит; бит 4. */
unsigned int bit4: 1; unsigned int bit4: 1;
/* Битовое поле bit5, ширина 1 бит; бит 5. */
unsigned int bit5: 1; unsigned int bit5: 1;
/* Битовое поле bit6, ширина 1 бит; бит 6. */
unsigned int bit6: 1; unsigned int bit6: 1;
/* Битовое поле bit7, ширина 1 бит; бит 7. */
unsigned int bit7: 1; unsigned int bit7: 1;
/* Битовое поле bit8, ширина 1 бит; бит 8. */
unsigned int bit8: 1; unsigned int bit8: 1;
/* Битовое поле bit9, ширина 1 бит; бит 9. */
unsigned int bit9: 1; unsigned int bit9: 1;
/* Битовое поле bitA, ширина 1 бит; бит A. */
unsigned int bitA: 1; unsigned int bitA: 1;
/* Битовое поле bitB, ширина 1 бит; бит B. */
unsigned int bitB: 1; unsigned int bitB: 1;
/* Битовое поле bitC, ширина 1 бит; бит C. */
unsigned int bitC: 1; unsigned int bitC: 1;
/* Битовое поле bitD, ширина 1 бит; бит D. */
unsigned int bitD: 1; unsigned int bitD: 1;
/* Битовое поле bitE, ширина 1 бит; бит E. */
unsigned int bitE: 1; unsigned int bitE: 1;
/* Битовое поле bitF, ширина 1 бит; бит F. */
unsigned int bitF: 1; unsigned int bitF: 1;
/* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
} bit; } bit;
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле quad_0, ширина 4 бит; данные quad_0. */
unsigned int quad_0 :4; unsigned int quad_0 :4;
/* Битовое поле quad_1, ширина 4 бит; данные quad_1. */
unsigned int quad_1 :4; unsigned int quad_1 :4;
/* Битовое поле quad_2, ширина 4 бит; данные quad_2. */
unsigned int quad_2 :4; unsigned int quad_2 :4;
/* Битовое поле quad_3, ширина 4 бит; данные quad_3. */
unsigned int quad_3 :4; unsigned int quad_3 :4;
/* Продолжает список аргументов, полей или выражение } qua;; порядок элементов сохраняется. */
} qua; } qua;
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле byte_0, ширина 8 бит; данные byte_0. */
unsigned int byte_0 :8; unsigned int byte_0 :8;
/* Битовое поле byte_1, ширина 8 бит; данные byte_1. */
unsigned int byte_1 :8; unsigned int byte_1 :8;
/* Продолжает список аргументов, полей или выражение } byt;; порядок элементов сохраняется. */
} byt; } byt;
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
int all; int all;
/* Продолжает список аргументов, полей или выражение } WORDE;; порядок элементов сохраняется. */ } WORDE;
} WORDE;
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef union typedef union
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */ struct
struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле bit00, ширина 1 бит; бит 00. */
unsigned int bit00: 1; unsigned int bit00: 1;
/* Битовое поле bit01, ширина 1 бит; бит 01. */
unsigned int bit01: 1; unsigned int bit01: 1;
/* Битовое поле bit02, ширина 1 бит; бит 02. */
unsigned int bit02: 1; unsigned int bit02: 1;
/* Битовое поле bit03, ширина 1 бит; бит 03. */
unsigned int bit03: 1; unsigned int bit03: 1;
/* Битовое поле bit04, ширина 1 бит; бит 04. */
unsigned int bit04: 1; unsigned int bit04: 1;
/* Битовое поле bit05, ширина 1 бит; бит 05. */
unsigned int bit05: 1; unsigned int bit05: 1;
/* Битовое поле bit06, ширина 1 бит; бит 06. */
unsigned int bit06: 1; unsigned int bit06: 1;
/* Битовое поле bit07, ширина 1 бит; бит 07. */
unsigned int bit07: 1; unsigned int bit07: 1;
/* Битовое поле bit08, ширина 1 бит; бит 08. */
unsigned int bit08: 1; unsigned int bit08: 1;
/* Битовое поле bit09, ширина 1 бит; бит 09. */
unsigned int bit09: 1; unsigned int bit09: 1;
/* Битовое поле bit0A, ширина 1 бит; бит 0 A. */
unsigned int bit0A: 1; unsigned int bit0A: 1;
/* Битовое поле bit0B, ширина 1 бит; бит 0 B. */
unsigned int bit0B: 1; unsigned int bit0B: 1;
/* Битовое поле bit0C, ширина 1 бит; бит 0 C. */
unsigned int bit0C: 1; unsigned int bit0C: 1;
/* Битовое поле bit0D, ширина 1 бит; бит 0 D. */
unsigned int bit0D: 1; unsigned int bit0D: 1;
/* Битовое поле bit0E, ширина 1 бит; бит 0 E. */
unsigned int bit0E: 1; unsigned int bit0E: 1;
/* Битовое поле bit0F, ширина 1 бит; бит 0 F. */
unsigned int bit0F: 1; unsigned int bit0F: 1;
/* Битовое поле bit10, ширина 1 бит; бит 10. */
unsigned int bit10: 1; unsigned int bit10: 1;
/* Битовое поле bit11, ширина 1 бит; бит 11. */
unsigned int bit11: 1; unsigned int bit11: 1;
/* Битовое поле bit12, ширина 1 бит; бит 12. */
unsigned int bit12: 1; unsigned int bit12: 1;
/* Битовое поле bit13, ширина 1 бит; бит 13. */
unsigned int bit13: 1; unsigned int bit13: 1;
/* Битовое поле bit14, ширина 1 бит; бит 14. */
unsigned int bit14: 1; unsigned int bit14: 1;
/* Битовое поле bit15, ширина 1 бит; бит 15. */
unsigned int bit15: 1; unsigned int bit15: 1;
/* Битовое поле bit16, ширина 1 бит; бит 16. */
unsigned int bit16: 1; unsigned int bit16: 1;
/* Битовое поле bit17, ширина 1 бит; бит 17. */
unsigned int bit17: 1; unsigned int bit17: 1;
/* Битовое поле bit18, ширина 1 бит; бит 18. */
unsigned int bit18: 1; unsigned int bit18: 1;
/* Битовое поле bit19, ширина 1 бит; бит 19. */
unsigned int bit19: 1; unsigned int bit19: 1;
/* Битовое поле bit1A, ширина 1 бит; бит 1 A. */
unsigned int bit1A: 1; unsigned int bit1A: 1;
/* Битовое поле bit1B, ширина 1 бит; бит 1 B. */
unsigned int bit1B: 1; unsigned int bit1B: 1;
/* Битовое поле bit1C, ширина 1 бит; бит 1 C. */
unsigned int bit1C: 1; unsigned int bit1C: 1;
/* Битовое поле bit1D, ширина 1 бит; бит 1 D. */
unsigned int bit1D: 1; unsigned int bit1D: 1;
/* Битовое поле bit1E, ширина 1 бит; бит 1 E. */
unsigned int bit1E: 1; unsigned int bit1E: 1;
/* Битовое поле bit1F, ширина 1 бит; бит 1 F. */
unsigned int bit1F: 1; unsigned int bit1F: 1;
/* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
} bit; } bit;
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле quad_0, ширина 4 бит; данные quad_0. */
unsigned int quad_0 :4; unsigned int quad_0 :4;
/* Битовое поле quad_1, ширина 4 бит; данные quad_1. */
unsigned int quad_1 :4; unsigned int quad_1 :4;
/* Битовое поле quad_2, ширина 4 бит; данные quad_2. */
unsigned int quad_2 :4; unsigned int quad_2 :4;
/* Битовое поле quad_3, ширина 4 бит; данные quad_3. */
unsigned int quad_3 :4; unsigned int quad_3 :4;
/* Битовое поле quad_4, ширина 4 бит; данные quad_4. */
unsigned int quad_4 :4; unsigned int quad_4 :4;
/* Битовое поле quad_5, ширина 4 бит; данные quad_5. */
unsigned int quad_5 :4; unsigned int quad_5 :4;
/* Битовое поле quad_6, ширина 4 бит; данные quad_6. */
unsigned int quad_6 :4; unsigned int quad_6 :4;
/* Битовое поле quad_7, ширина 4 бит; данные quad_7. */
unsigned int quad_7 :4; unsigned int quad_7 :4;
/* Продолжает список аргументов, полей или выражение } qua;; порядок элементов сохраняется. */
} qua; } qua;
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле byte_0, ширина 8 бит; данные byte_0. */
unsigned int byte_0 :8; unsigned int byte_0 :8;
/* Битовое поле byte_1, ширина 8 бит; данные byte_1. */
unsigned int byte_1 :8; unsigned int byte_1 :8;
/* Битовое поле byte_2, ширина 8 бит; данные byte_2. */
unsigned int byte_2 :8; unsigned int byte_2 :8;
/* Битовое поле byte_3, ширина 8 бит; данные byte_3. */
unsigned int byte_3 :8; unsigned int byte_3 :8;
/* Продолжает список аргументов, полей или выражение } byt;; порядок элементов сохраняется. */
} byt; } byt;
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
struct struct
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
{ {
/* Битовое поле word_0, ширина 16 бит; слово 0. */
unsigned int word_0 :16; unsigned int word_0 :16;
/* Битовое поле word_1, ширина 16 бит; слово 1. */
unsigned int word_1 :16; unsigned int word_1 :16;
/* Продолжает список аргументов, полей или выражение } wrd;; порядок элементов сохраняется. */
} wrd; } wrd;
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
unsigned long all; unsigned long all;
/* Продолжает список аргументов, полей или выражение } LONGE;; порядок элементов сохраняется. */ } LONGE;
} LONGE;
/* Задаёт XCLKIN = 30000000; данные XCLKIN. */
#define XCLKIN 30000000 // external oscillator frequency #define XCLKIN 30000000 // external oscillator frequency
/* Объявляет SYSCLKOUT — данные SYSCLKOUT; LSPCLK — данные LSPCLK; HSPCLK — данные HSPCLK. Память определена в другом модуле. */
extern long SYSCLKOUT, LSPCLK, HSPCLK; extern long SYSCLKOUT, LSPCLK, HSPCLK;
/* Задаёт CLKMULT = 2L; данные CLKMULT. */
#define CLKMULT 2L // 1 to 5 #define CLKMULT 2L // 1 to 5
/* Задаёт LOWORD = int)( (long int)(l) &0xFFFF)); данные LOWORD. */
#define LOWORD(l)((short int)( (long int)(l) &0xFFFF)) #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)) #define HIWORD(l)((short int)(((long int)(l)>>16)&0xFFFF))
/* Задаёт LOBYTE = (short int)(w) &0xFF)); данные LOBYTE. */
#define LOBYTE(w)((char)( (short int)(w) &0xFF)) #define LOBYTE(w)((char)( (short int)(w) &0xFF))
/* Задаёт HIBYTE = int)(w)>>8)&0xFF)); данные HIBYTE. */
#define HIBYTE(w)((char)(((short int)(w)>>8)&0xFF)) #define HIBYTE(w)((char)(((short int)(w)>>8)&0xFF))
/* Задаёт BYTE3 = int)(l)>>24)&0xFF)); данные BYTE3. */
#define BYTE3(l)((char)(((long int)(l)>>24)&0xFF)) #define BYTE3(l)((char)(((long int)(l)>>24)&0xFF))
/* Задаёт BYTE2 = int)(l)>>16)&0xFF)); данные BYTE2. */
#define BYTE2(l)((char)(((long int)(l)>>16)&0xFF)) #define BYTE2(l)((char)(((long int)(l)>>16)&0xFF))
/* Задаёт BYTE1 = int)(l)>> 8)&0xFF)); данные BYTE1. */
#define BYTE1(l)((char)(((long int)(l)>> 8)&0xFF)) #define BYTE1(l)((char)(((long int)(l)>> 8)&0xFF))
/* Задаёт BYTE0 = (long int)(l) &0xFF)); данные BYTE0. */
#define BYTE0(l)((char)( (long int)(l) &0xFF)) #define BYTE0(l)((char)( (long int)(l) &0xFF))
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Include All Peripheral Header Files: // Include All Peripheral Header Files:
// //
/* Подключает "DSP2833x_Adc.h": поставляемое TI описание Adc для семейства C2833x. */
#include "DSP2833x_Adc.h" // ADC Registers #include "DSP2833x_Adc.h" // ADC Registers
/* Подключает "DSP2833x_DevEmu.h": поставляемое TI описание DevEmu для семейства C2833x. */
#include "DSP2833x_DevEmu.h" // Device Emulation Registers #include "DSP2833x_DevEmu.h" // Device Emulation Registers
/* Подключает "DSP2833x_CpuTimers.h": поставляемое TI описание CpuTimers для семейства C2833x. */
#include "DSP2833x_CpuTimers.h" // 32-bit CPU Timers #include "DSP2833x_CpuTimers.h" // 32-bit CPU Timers
/* Подключает "DSP2833x_ECan.h": поставляемое TI описание ECan для семейства C2833x. */
#include "DSP2833x_ECan.h" // Enhanced eCAN Registers #include "DSP2833x_ECan.h" // Enhanced eCAN Registers
/* Подключает "DSP2833x_ECap.h": поставляемое TI описание ECap для семейства C2833x. */
#include "DSP2833x_ECap.h" // Enhanced Capture #include "DSP2833x_ECap.h" // Enhanced Capture
/* Подключает "DSP2833x_DMA.h": поставляемое TI описание DMA для семейства C2833x. */
#include "DSP2833x_DMA.h" // DMA Registers #include "DSP2833x_DMA.h" // DMA Registers
/* Подключает "DSP2833x_EPwm.h": поставляемое TI описание EPwm для семейства C2833x. */
#include "DSP2833x_EPwm.h" // Enhanced PWM #include "DSP2833x_EPwm.h" // Enhanced PWM
/* Подключает "DSP2833x_EQep.h": поставляемое TI описание EQep для семейства C2833x. */
#include "DSP2833x_EQep.h" // Enhanced QEP #include "DSP2833x_EQep.h" // Enhanced QEP
/* Подключает "DSP2833x_Gpio.h": поставляемое TI описание Gpio для семейства C2833x. */
#include "DSP2833x_Gpio.h" // General Purpose I/O Registers #include "DSP2833x_Gpio.h" // General Purpose I/O Registers
/* Подключает "DSP2833x_I2c.h": поставляемое TI описание I2c для семейства C2833x. */
#include "DSP2833x_I2c.h" // I2C Registers #include "DSP2833x_I2c.h" // I2C Registers
/* Подключает "DSP2833x_McBSP.h": поставляемое TI описание McBSP для семейства C2833x. */
#include "DSP2833x_McBSP.h" // McBSP #include "DSP2833x_McBSP.h" // McBSP
/* Подключает "DSP2833x_PieCtrl.h": поставляемое TI описание PieCtrl для семейства C2833x. */
#include "DSP2833x_PieCtrl.h" // PIE Control Registers #include "DSP2833x_PieCtrl.h" // PIE Control Registers
/* Подключает "DSP2833x_PieVect.h": поставляемое TI описание PieVect для семейства C2833x. */
#include "DSP2833x_PieVect.h" // PIE Vector Table #include "DSP2833x_PieVect.h" // PIE Vector Table
/* Подключает "DSP2833x_Spi.h": поставляемое TI описание Spi для семейства C2833x. */
#include "DSP2833x_Spi.h" // SPI Registers #include "DSP2833x_Spi.h" // SPI Registers
/* Подключает "DSP2833x_Sci.h": поставляемое TI описание Sci для семейства C2833x. */
#include "DSP2833x_Sci.h" // SCI Registers #include "DSP2833x_Sci.h" // SCI Registers
/* Подключает "DSP2833x_SysCtrl.h": поставляемое TI описание SysCtrl для семейства C2833x. */
#include "DSP2833x_SysCtrl.h" // System Control/Power Modes #include "DSP2833x_SysCtrl.h" // System Control/Power Modes
/* Подключает "DSP2833x_XIntrupt.h": поставляемое TI описание XIntrupt для семейства C2833x. */
#include "DSP2833x_XIntrupt.h" // External Interrupts #include "DSP2833x_XIntrupt.h" // External Interrupts
/* Подключает "DSP2833x_Xintf.h": поставляемое TI описание Xintf для семейства C2833x. */
#include "DSP2833x_Xintf.h" // XINTF External Interface #include "DSP2833x_Xintf.h" // XINTF External Interface
/* Подключает "DSP2833x_GlobalPrototypes.h": поставляемое TI описание GlobalPrototypes для семейства C2833x. */
#include "DSP2833x_GlobalPrototypes.h" // Prototypes for global functions within the #include "DSP2833x_GlobalPrototypes.h" // Prototypes for global functions within the
/* Условие компиляции DSP28_28335: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_28335 #if DSP28_28335
/* Задаёт DSP28_EPWM1 = 1; данные DSP28_EPWM1. */
#define DSP28_EPWM1 1 #define DSP28_EPWM1 1
/* Задаёт DSP28_EPWM2 = 1; данные DSP28_EPWM2. */
#define DSP28_EPWM2 1 #define DSP28_EPWM2 1
/* Задаёт DSP28_EPWM3 = 1; данные DSP28_EPWM3. */
#define DSP28_EPWM3 1 #define DSP28_EPWM3 1
/* Задаёт DSP28_EPWM4 = 1; данные DSP28_EPWM4. */
#define DSP28_EPWM4 1 #define DSP28_EPWM4 1
/* Задаёт DSP28_EPWM5 = 1; данные DSP28_EPWM5. */
#define DSP28_EPWM5 1 #define DSP28_EPWM5 1
/* Задаёт DSP28_EPWM6 = 1; данные DSP28_EPWM6. */
#define DSP28_EPWM6 1 #define DSP28_EPWM6 1
/* Задаёт DSP28_ECAP1 = 1; данные DSP28_ECAP1. */
#define DSP28_ECAP1 1 #define DSP28_ECAP1 1
/* Задаёт DSP28_ECAP2 = 1; данные DSP28_ECAP2. */
#define DSP28_ECAP2 1 #define DSP28_ECAP2 1
/* Задаёт DSP28_ECAP3 = 1; данные DSP28_ECAP3. */
#define DSP28_ECAP3 1 #define DSP28_ECAP3 1
/* Задаёт DSP28_ECAP4 = 1; данные DSP28_ECAP4. */
#define DSP28_ECAP4 1 #define DSP28_ECAP4 1
/* Задаёт DSP28_ECAP5 = 1; данные DSP28_ECAP5. */
#define DSP28_ECAP5 1 #define DSP28_ECAP5 1
/* Задаёт DSP28_ECAP6 = 1; данные DSP28_ECAP6. */
#define DSP28_ECAP6 1 #define DSP28_ECAP6 1
/* Задаёт DSP28_EQEP1 = 1; данные DSP28_EQEP1. */
#define DSP28_EQEP1 1 #define DSP28_EQEP1 1
/* Задаёт DSP28_EQEP2 = 1; данные DSP28_EQEP2. */
#define DSP28_EQEP2 1 #define DSP28_EQEP2 1
/* Задаёт DSP28_ECANA = 1; данные DSP28_ECANA. */
#define DSP28_ECANA 1 #define DSP28_ECANA 1
/* Задаёт DSP28_ECANB = 1; данные DSP28_ECANB. */
#define DSP28_ECANB 1 #define DSP28_ECANB 1
/* Задаёт DSP28_MCBSPA = 1; данные DSP28_MCBSPA. */
#define DSP28_MCBSPA 1 #define DSP28_MCBSPA 1
/* Задаёт DSP28_MCBSPB = 1; данные DSP28_MCBSPB. */
#define DSP28_MCBSPB 1 #define DSP28_MCBSPB 1
/* Задаёт DSP28_SPIA = 1; данные DSP28_SPIA. */
#define DSP28_SPIA 1 #define DSP28_SPIA 1
/* Задаёт DSP28_SCIA = 1; данные DSP28_SCIA. */
#define DSP28_SCIA 1 #define DSP28_SCIA 1
/* Задаёт DSP28_SCIB = 1; данные DSP28_SCIB. */
#define DSP28_SCIB 1 #define DSP28_SCIB 1
/* Задаёт DSP28_SCIC = 1; данные DSP28_SCIC. */
#define DSP28_SCIC 1 #define DSP28_SCIC 1
/* Задаёт DSP28_I2CA = 1; данные DSP28_I2CA. */
#define DSP28_I2CA 1 #define DSP28_I2CA 1
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end DSP28_28335 #endif // end DSP28_28335
/* Условие компиляции DSP28_28334: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_28334 #if DSP28_28334
/* Задаёт DSP28_EPWM1 = 1; данные DSP28_EPWM1. */
#define DSP28_EPWM1 1 #define DSP28_EPWM1 1
/* Задаёт DSP28_EPWM2 = 1; данные DSP28_EPWM2. */
#define DSP28_EPWM2 1 #define DSP28_EPWM2 1
/* Задаёт DSP28_EPWM3 = 1; данные DSP28_EPWM3. */
#define DSP28_EPWM3 1 #define DSP28_EPWM3 1
/* Задаёт DSP28_EPWM4 = 1; данные DSP28_EPWM4. */
#define DSP28_EPWM4 1 #define DSP28_EPWM4 1
/* Задаёт DSP28_EPWM5 = 1; данные DSP28_EPWM5. */
#define DSP28_EPWM5 1 #define DSP28_EPWM5 1
/* Задаёт DSP28_EPWM6 = 1; данные DSP28_EPWM6. */
#define DSP28_EPWM6 1 #define DSP28_EPWM6 1
/* Задаёт DSP28_ECAP1 = 1; данные DSP28_ECAP1. */
#define DSP28_ECAP1 1 #define DSP28_ECAP1 1
/* Задаёт DSP28_ECAP2 = 1; данные DSP28_ECAP2. */
#define DSP28_ECAP2 1 #define DSP28_ECAP2 1
/* Задаёт DSP28_ECAP3 = 1; данные DSP28_ECAP3. */
#define DSP28_ECAP3 1 #define DSP28_ECAP3 1
/* Задаёт DSP28_ECAP4 = 1; данные DSP28_ECAP4. */
#define DSP28_ECAP4 1 #define DSP28_ECAP4 1
/* Задаёт DSP28_ECAP5 = 0; данные DSP28_ECAP5. */
#define DSP28_ECAP5 0 #define DSP28_ECAP5 0
/* Задаёт DSP28_ECAP6 = 0; данные DSP28_ECAP6. */
#define DSP28_ECAP6 0 #define DSP28_ECAP6 0
/* Задаёт DSP28_EQEP1 = 1; данные DSP28_EQEP1. */
#define DSP28_EQEP1 1 #define DSP28_EQEP1 1
/* Задаёт DSP28_EQEP2 = 1; данные DSP28_EQEP2. */
#define DSP28_EQEP2 1 #define DSP28_EQEP2 1
/* Задаёт DSP28_ECANA = 1; данные DSP28_ECANA. */
#define DSP28_ECANA 1 #define DSP28_ECANA 1
/* Задаёт DSP28_ECANB = 1; данные DSP28_ECANB. */
#define DSP28_ECANB 1 #define DSP28_ECANB 1
/* Задаёт DSP28_MCBSPA = 1; данные DSP28_MCBSPA. */
#define DSP28_MCBSPA 1 #define DSP28_MCBSPA 1
/* Задаёт DSP28_MCBSPB = 1; данные DSP28_MCBSPB. */
#define DSP28_MCBSPB 1 #define DSP28_MCBSPB 1
/* Задаёт DSP28_SPIA = 1; данные DSP28_SPIA. */
#define DSP28_SPIA 1 #define DSP28_SPIA 1
/* Задаёт DSP28_SCIA = 1; данные DSP28_SCIA. */
#define DSP28_SCIA 1 #define DSP28_SCIA 1
/* Задаёт DSP28_SCIB = 1; данные DSP28_SCIB. */
#define DSP28_SCIB 1 #define DSP28_SCIB 1
/* Задаёт DSP28_SCIC = 1; данные DSP28_SCIC. */
#define DSP28_SCIC 1 #define DSP28_SCIC 1
/* Задаёт DSP28_I2CA = 1; данные DSP28_I2CA. */
#define DSP28_I2CA 1 #define DSP28_I2CA 1
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end DSP28_28334 #endif // end DSP28_28334
/* Условие компиляции DSP28_28332: выбранный блок включается в текущий вариант прошивки. */
#if DSP28_28332 #if DSP28_28332
/* Задаёт DSP28_EPWM1 = 1; данные DSP28_EPWM1. */
#define DSP28_EPWM1 1 #define DSP28_EPWM1 1
/* Задаёт DSP28_EPWM2 = 1; данные DSP28_EPWM2. */
#define DSP28_EPWM2 1 #define DSP28_EPWM2 1
/* Задаёт DSP28_EPWM3 = 1; данные DSP28_EPWM3. */
#define DSP28_EPWM3 1 #define DSP28_EPWM3 1
/* Задаёт DSP28_EPWM4 = 1; данные DSP28_EPWM4. */
#define DSP28_EPWM4 1 #define DSP28_EPWM4 1
/* Задаёт DSP28_EPWM5 = 1; данные DSP28_EPWM5. */
#define DSP28_EPWM5 1 #define DSP28_EPWM5 1
/* Задаёт DSP28_EPWM6 = 1; данные DSP28_EPWM6. */
#define DSP28_EPWM6 1 #define DSP28_EPWM6 1
/* Задаёт DSP28_ECAP1 = 1; данные DSP28_ECAP1. */
#define DSP28_ECAP1 1 #define DSP28_ECAP1 1
/* Задаёт DSP28_ECAP2 = 1; данные DSP28_ECAP2. */
#define DSP28_ECAP2 1 #define DSP28_ECAP2 1
/* Задаёт DSP28_ECAP3 = 1; данные DSP28_ECAP3. */
#define DSP28_ECAP3 1 #define DSP28_ECAP3 1
/* Задаёт DSP28_ECAP4 = 1; данные DSP28_ECAP4. */
#define DSP28_ECAP4 1 #define DSP28_ECAP4 1
/* Задаёт DSP28_ECAP5 = 0; данные DSP28_ECAP5. */
#define DSP28_ECAP5 0 #define DSP28_ECAP5 0
/* Задаёт DSP28_ECAP6 = 0; данные DSP28_ECAP6. */
#define DSP28_ECAP6 0 #define DSP28_ECAP6 0
/* Задаёт DSP28_EQEP1 = 1; данные DSP28_EQEP1. */
#define DSP28_EQEP1 1 #define DSP28_EQEP1 1
/* Задаёт DSP28_EQEP2 = 1; данные DSP28_EQEP2. */
#define DSP28_EQEP2 1 #define DSP28_EQEP2 1
/* Задаёт DSP28_ECANA = 1; данные DSP28_ECANA. */
#define DSP28_ECANA 1 #define DSP28_ECANA 1
/* Задаёт DSP28_ECANB = 1; данные DSP28_ECANB. */
#define DSP28_ECANB 1 #define DSP28_ECANB 1
/* Задаёт DSP28_MCBSPA = 1; данные DSP28_MCBSPA. */
#define DSP28_MCBSPA 1 #define DSP28_MCBSPA 1
/* Задаёт DSP28_MCBSPB = 0; данные DSP28_MCBSPB. */
#define DSP28_MCBSPB 0 #define DSP28_MCBSPB 0
/* Задаёт DSP28_SPIA = 1; данные DSP28_SPIA. */
#define DSP28_SPIA 1 #define DSP28_SPIA 1
/* Задаёт DSP28_SCIA = 1; данные DSP28_SCIA. */
#define DSP28_SCIA 1 #define DSP28_SCIA 1
/* Задаёт DSP28_SCIB = 1; данные DSP28_SCIB. */
#define DSP28_SCIB 1 #define DSP28_SCIB 1
/* Задаёт DSP28_SCIC = 0; данные DSP28_SCIC. */
#define DSP28_SCIC 0 #define DSP28_SCIC 0
/* Задаёт DSP28_I2CA = 1; данные DSP28_I2CA. */
#define DSP28_I2CA 1 #define DSP28_I2CA 1
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end DSP28_28332 #endif // end DSP28_28332
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_DEVICE_H definition #endif // end of DSP2833x_DEVICE_H definition

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание ECan для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/2 $ // TI File $Revision: /main/2 $
// Checkin $Date: May 7, 2007 16:05:39 $ // Checkin $Date: May 7, 2007 16:05:39 $
//########################################################################### //###########################################################################
@@ -12,17 +11,12 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_ECAN_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_ECAN_H #ifndef DSP2833x_ECAN_H
/* Определяет защитный символ или переключатель DSP2833x_ECAN_H для последующей компиляции. */
#define DSP2833x_ECAN_H #define DSP2833x_ECAN_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
@@ -31,1577 +25,854 @@ extern "C" {
/* ----------------------------------------------------*/ /* ----------------------------------------------------*/
/* eCAN Mailbox enable register (CANME) bit definitions */ /* eCAN Mailbox enable register (CANME) bit definitions */
/* Описывает структуру CANME_BITS; порядок полей определяет расположение данных. */
struct CANME_BITS { // bit description struct CANME_BITS { // bit description
/* Битовое поле ME0, ширина 1 бит; данные ME0. */
Uint16 ME0:1; // 0 Enable Mailbox 0 Uint16 ME0:1; // 0 Enable Mailbox 0
/* Битовое поле ME1, ширина 1 бит; данные ME1. */
Uint16 ME1:1; // 1 Enable Mailbox 1 Uint16 ME1:1; // 1 Enable Mailbox 1
/* Битовое поле ME2, ширина 1 бит; данные ME2. */
Uint16 ME2:1; // 2 Enable Mailbox 2 Uint16 ME2:1; // 2 Enable Mailbox 2
/* Битовое поле ME3, ширина 1 бит; данные ME3. */
Uint16 ME3:1; // 3 Enable Mailbox 3 Uint16 ME3:1; // 3 Enable Mailbox 3
/* Битовое поле ME4, ширина 1 бит; данные ME4. */
Uint16 ME4:1; // 4 Enable Mailbox 4 Uint16 ME4:1; // 4 Enable Mailbox 4
/* Битовое поле ME5, ширина 1 бит; данные ME5. */
Uint16 ME5:1; // 5 Enable Mailbox 5 Uint16 ME5:1; // 5 Enable Mailbox 5
/* Битовое поле ME6, ширина 1 бит; данные ME6. */
Uint16 ME6:1; // 6 Enable Mailbox 6 Uint16 ME6:1; // 6 Enable Mailbox 6
/* Битовое поле ME7, ширина 1 бит; данные ME7. */
Uint16 ME7:1; // 7 Enable Mailbox 7 Uint16 ME7:1; // 7 Enable Mailbox 7
/* Битовое поле ME8, ширина 1 бит; данные ME8. */
Uint16 ME8:1; // 8 Enable Mailbox 8 Uint16 ME8:1; // 8 Enable Mailbox 8
/* Битовое поле ME9, ширина 1 бит; данные ME9. */
Uint16 ME9:1; // 9 Enable Mailbox 9 Uint16 ME9:1; // 9 Enable Mailbox 9
/* Битовое поле ME10, ширина 1 бит; данные ME10. */
Uint16 ME10:1; // 10 Enable Mailbox 10 Uint16 ME10:1; // 10 Enable Mailbox 10
/* Битовое поле ME11, ширина 1 бит; данные ME11. */
Uint16 ME11:1; // 11 Enable Mailbox 11 Uint16 ME11:1; // 11 Enable Mailbox 11
/* Битовое поле ME12, ширина 1 бит; данные ME12. */
Uint16 ME12:1; // 12 Enable Mailbox 12 Uint16 ME12:1; // 12 Enable Mailbox 12
/* Битовое поле ME13, ширина 1 бит; данные ME13. */
Uint16 ME13:1; // 13 Enable Mailbox 13 Uint16 ME13:1; // 13 Enable Mailbox 13
/* Битовое поле ME14, ширина 1 бит; данные ME14. */
Uint16 ME14:1; // 14 Enable Mailbox 14 Uint16 ME14:1; // 14 Enable Mailbox 14
/* Битовое поле ME15, ширина 1 бит; данные ME15. */
Uint16 ME15:1; // 15 Enable Mailbox 15 Uint16 ME15:1; // 15 Enable Mailbox 15
/* Битовое поле ME16, ширина 1 бит; данные ME16. */
Uint16 ME16:1; // 16 Enable Mailbox 16 Uint16 ME16:1; // 16 Enable Mailbox 16
/* Битовое поле ME17, ширина 1 бит; данные ME17. */
Uint16 ME17:1; // 17 Enable Mailbox 17 Uint16 ME17:1; // 17 Enable Mailbox 17
/* Битовое поле ME18, ширина 1 бит; данные ME18. */
Uint16 ME18:1; // 18 Enable Mailbox 18 Uint16 ME18:1; // 18 Enable Mailbox 18
/* Битовое поле ME19, ширина 1 бит; данные ME19. */
Uint16 ME19:1; // 19 Enable Mailbox 19 Uint16 ME19:1; // 19 Enable Mailbox 19
/* Битовое поле ME20, ширина 1 бит; данные ME20. */
Uint16 ME20:1; // 20 Enable Mailbox 20 Uint16 ME20:1; // 20 Enable Mailbox 20
/* Битовое поле ME21, ширина 1 бит; данные ME21. */
Uint16 ME21:1; // 21 Enable Mailbox 21 Uint16 ME21:1; // 21 Enable Mailbox 21
/* Битовое поле ME22, ширина 1 бит; данные ME22. */
Uint16 ME22:1; // 22 Enable Mailbox 22 Uint16 ME22:1; // 22 Enable Mailbox 22
/* Битовое поле ME23, ширина 1 бит; данные ME23. */
Uint16 ME23:1; // 23 Enable Mailbox 23 Uint16 ME23:1; // 23 Enable Mailbox 23
/* Битовое поле ME24, ширина 1 бит; данные ME24. */
Uint16 ME24:1; // 24 Enable Mailbox 24 Uint16 ME24:1; // 24 Enable Mailbox 24
/* Битовое поле ME25, ширина 1 бит; данные ME25. */
Uint16 ME25:1; // 25 Enable Mailbox 25 Uint16 ME25:1; // 25 Enable Mailbox 25
/* Битовое поле ME26, ширина 1 бит; данные ME26. */
Uint16 ME26:1; // 26 Enable Mailbox 26 Uint16 ME26:1; // 26 Enable Mailbox 26
/* Битовое поле ME27, ширина 1 бит; данные ME27. */
Uint16 ME27:1; // 27 Enable Mailbox 27 Uint16 ME27:1; // 27 Enable Mailbox 27
/* Битовое поле ME28, ширина 1 бит; данные ME28. */
Uint16 ME28:1; // 28 Enable Mailbox 28 Uint16 ME28:1; // 28 Enable Mailbox 28
/* Битовое поле ME29, ширина 1 бит; данные ME29. */
Uint16 ME29:1; // 29 Enable Mailbox 29 Uint16 ME29:1; // 29 Enable Mailbox 29
/* Битовое поле ME30, ширина 1 бит; данные ME30. */
Uint16 ME30:1; // 30 Enable Mailbox 30 Uint16 ME30:1; // 30 Enable Mailbox 30
/* Битовое поле ME31, ширина 1 бит; данные ME31. */
Uint16 ME31:1; // 31 Enable Mailbox 31 Uint16 ME31:1; // 31 Enable Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANME_REG в одной области памяти. */
union CANME_REG { union CANME_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANME_BITS bit;; порядок полей определяет расположение данных. */
struct CANME_BITS bit; struct CANME_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Mailbox direction register (CANMD) bit definitions */ /* eCAN Mailbox direction register (CANMD) bit definitions */
/* Описывает структуру CANMD_BITS; порядок полей определяет расположение данных. */
struct CANMD_BITS { // bit description struct CANMD_BITS { // bit description
/* Битовое поле MD0, ширина 1 бит; данные MD0. */
Uint16 MD0:1; // 0 0 -> Tx 1 -> Rx Uint16 MD0:1; // 0 0 -> Tx 1 -> Rx
/* Битовое поле MD1, ширина 1 бит; данные MD1. */
Uint16 MD1:1; // 1 0 -> Tx 1 -> Rx Uint16 MD1:1; // 1 0 -> Tx 1 -> Rx
/* Битовое поле MD2, ширина 1 бит; данные MD2. */
Uint16 MD2:1; // 2 0 -> Tx 1 -> Rx Uint16 MD2:1; // 2 0 -> Tx 1 -> Rx
/* Битовое поле MD3, ширина 1 бит; данные MD3. */
Uint16 MD3:1; // 3 0 -> Tx 1 -> Rx Uint16 MD3:1; // 3 0 -> Tx 1 -> Rx
/* Битовое поле MD4, ширина 1 бит; данные MD4. */
Uint16 MD4:1; // 4 0 -> Tx 1 -> Rx Uint16 MD4:1; // 4 0 -> Tx 1 -> Rx
/* Битовое поле MD5, ширина 1 бит; данные MD5. */
Uint16 MD5:1; // 5 0 -> Tx 1 -> Rx Uint16 MD5:1; // 5 0 -> Tx 1 -> Rx
/* Битовое поле MD6, ширина 1 бит; данные MD6. */
Uint16 MD6:1; // 6 0 -> Tx 1 -> Rx Uint16 MD6:1; // 6 0 -> Tx 1 -> Rx
/* Битовое поле MD7, ширина 1 бит; данные MD7. */
Uint16 MD7:1; // 7 0 -> Tx 1 -> Rx Uint16 MD7:1; // 7 0 -> Tx 1 -> Rx
/* Битовое поле MD8, ширина 1 бит; данные MD8. */
Uint16 MD8:1; // 8 0 -> Tx 1 -> Rx Uint16 MD8:1; // 8 0 -> Tx 1 -> Rx
/* Битовое поле MD9, ширина 1 бит; данные MD9. */
Uint16 MD9:1; // 9 0 -> Tx 1 -> Rx Uint16 MD9:1; // 9 0 -> Tx 1 -> Rx
/* Битовое поле MD10, ширина 1 бит; данные MD10. */
Uint16 MD10:1; // 10 0 -> Tx 1 -> Rx Uint16 MD10:1; // 10 0 -> Tx 1 -> Rx
/* Битовое поле MD11, ширина 1 бит; данные MD11. */
Uint16 MD11:1; // 11 0 -> Tx 1 -> Rx Uint16 MD11:1; // 11 0 -> Tx 1 -> Rx
/* Битовое поле MD12, ширина 1 бит; данные MD12. */
Uint16 MD12:1; // 12 0 -> Tx 1 -> Rx Uint16 MD12:1; // 12 0 -> Tx 1 -> Rx
/* Битовое поле MD13, ширина 1 бит; данные MD13. */
Uint16 MD13:1; // 13 0 -> Tx 1 -> Rx Uint16 MD13:1; // 13 0 -> Tx 1 -> Rx
/* Битовое поле MD14, ширина 1 бит; данные MD14. */
Uint16 MD14:1; // 14 0 -> Tx 1 -> Rx Uint16 MD14:1; // 14 0 -> Tx 1 -> Rx
/* Битовое поле MD15, ширина 1 бит; данные MD15. */
Uint16 MD15:1; // 15 0 -> Tx 1 -> Rx Uint16 MD15:1; // 15 0 -> Tx 1 -> Rx
/* Битовое поле MD16, ширина 1 бит; данные MD16. */
Uint16 MD16:1; // 16 0 -> Tx 1 -> Rx Uint16 MD16:1; // 16 0 -> Tx 1 -> Rx
/* Битовое поле MD17, ширина 1 бит; данные MD17. */
Uint16 MD17:1; // 17 0 -> Tx 1 -> Rx Uint16 MD17:1; // 17 0 -> Tx 1 -> Rx
/* Битовое поле MD18, ширина 1 бит; данные MD18. */
Uint16 MD18:1; // 18 0 -> Tx 1 -> Rx Uint16 MD18:1; // 18 0 -> Tx 1 -> Rx
/* Битовое поле MD19, ширина 1 бит; данные MD19. */
Uint16 MD19:1; // 19 0 -> Tx 1 -> Rx Uint16 MD19:1; // 19 0 -> Tx 1 -> Rx
/* Битовое поле MD20, ширина 1 бит; данные MD20. */
Uint16 MD20:1; // 20 0 -> Tx 1 -> Rx Uint16 MD20:1; // 20 0 -> Tx 1 -> Rx
/* Битовое поле MD21, ширина 1 бит; данные MD21. */
Uint16 MD21:1; // 21 0 -> Tx 1 -> Rx Uint16 MD21:1; // 21 0 -> Tx 1 -> Rx
/* Битовое поле MD22, ширина 1 бит; данные MD22. */
Uint16 MD22:1; // 22 0 -> Tx 1 -> Rx Uint16 MD22:1; // 22 0 -> Tx 1 -> Rx
/* Битовое поле MD23, ширина 1 бит; данные MD23. */
Uint16 MD23:1; // 23 0 -> Tx 1 -> Rx Uint16 MD23:1; // 23 0 -> Tx 1 -> Rx
/* Битовое поле MD24, ширина 1 бит; данные MD24. */
Uint16 MD24:1; // 24 0 -> Tx 1 -> Rx Uint16 MD24:1; // 24 0 -> Tx 1 -> Rx
/* Битовое поле MD25, ширина 1 бит; данные MD25. */
Uint16 MD25:1; // 25 0 -> Tx 1 -> Rx Uint16 MD25:1; // 25 0 -> Tx 1 -> Rx
/* Битовое поле MD26, ширина 1 бит; данные MD26. */
Uint16 MD26:1; // 26 0 -> Tx 1 -> Rx Uint16 MD26:1; // 26 0 -> Tx 1 -> Rx
/* Битовое поле MD27, ширина 1 бит; данные MD27. */
Uint16 MD27:1; // 27 0 -> Tx 1 -> Rx Uint16 MD27:1; // 27 0 -> Tx 1 -> Rx
/* Битовое поле MD28, ширина 1 бит; данные MD28. */
Uint16 MD28:1; // 28 0 -> Tx 1 -> Rx Uint16 MD28:1; // 28 0 -> Tx 1 -> Rx
/* Битовое поле MD29, ширина 1 бит; данные MD29. */
Uint16 MD29:1; // 29 0 -> Tx 1 -> Rx Uint16 MD29:1; // 29 0 -> Tx 1 -> Rx
/* Битовое поле MD30, ширина 1 бит; данные MD30. */
Uint16 MD30:1; // 30 0 -> Tx 1 -> Rx Uint16 MD30:1; // 30 0 -> Tx 1 -> Rx
/* Битовое поле MD31, ширина 1 бит; данные MD31. */
Uint16 MD31:1; // 31 0 -> Tx 1 -> Rx Uint16 MD31:1; // 31 0 -> Tx 1 -> Rx
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANMD_REG в одной области памяти. */
union CANMD_REG { union CANMD_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANMD_BITS bit;; порядок полей определяет расположение данных. */
struct CANMD_BITS bit; struct CANMD_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Transmit Request Set register (CANTRS) bit definitions */ /* eCAN Transmit Request Set register (CANTRS) bit definitions */
/* Описывает структуру CANTRS_BITS; порядок полей определяет расположение данных. */
struct CANTRS_BITS { // bit description struct CANTRS_BITS { // bit description
/* Битовое поле TRS0, ширина 1 бит; данные TRS0. */
Uint16 TRS0:1; // 0 TRS for Mailbox 0 Uint16 TRS0:1; // 0 TRS for Mailbox 0
/* Битовое поле TRS1, ширина 1 бит; данные TRS1. */
Uint16 TRS1:1; // 1 TRS for Mailbox 1 Uint16 TRS1:1; // 1 TRS for Mailbox 1
/* Битовое поле TRS2, ширина 1 бит; данные TRS2. */
Uint16 TRS2:1; // 2 TRS for Mailbox 2 Uint16 TRS2:1; // 2 TRS for Mailbox 2
/* Битовое поле TRS3, ширина 1 бит; данные TRS3. */
Uint16 TRS3:1; // 3 TRS for Mailbox 3 Uint16 TRS3:1; // 3 TRS for Mailbox 3
/* Битовое поле TRS4, ширина 1 бит; данные TRS4. */
Uint16 TRS4:1; // 4 TRS for Mailbox 4 Uint16 TRS4:1; // 4 TRS for Mailbox 4
/* Битовое поле TRS5, ширина 1 бит; данные TRS5. */
Uint16 TRS5:1; // 5 TRS for Mailbox 5 Uint16 TRS5:1; // 5 TRS for Mailbox 5
/* Битовое поле TRS6, ширина 1 бит; данные TRS6. */
Uint16 TRS6:1; // 6 TRS for Mailbox 6 Uint16 TRS6:1; // 6 TRS for Mailbox 6
/* Битовое поле TRS7, ширина 1 бит; данные TRS7. */
Uint16 TRS7:1; // 7 TRS for Mailbox 7 Uint16 TRS7:1; // 7 TRS for Mailbox 7
/* Битовое поле TRS8, ширина 1 бит; данные TRS8. */
Uint16 TRS8:1; // 8 TRS for Mailbox 8 Uint16 TRS8:1; // 8 TRS for Mailbox 8
/* Битовое поле TRS9, ширина 1 бит; данные TRS9. */
Uint16 TRS9:1; // 9 TRS for Mailbox 9 Uint16 TRS9:1; // 9 TRS for Mailbox 9
/* Битовое поле TRS10, ширина 1 бит; данные TRS10. */
Uint16 TRS10:1; // 10 TRS for Mailbox 10 Uint16 TRS10:1; // 10 TRS for Mailbox 10
/* Битовое поле TRS11, ширина 1 бит; данные TRS11. */
Uint16 TRS11:1; // 11 TRS for Mailbox 11 Uint16 TRS11:1; // 11 TRS for Mailbox 11
/* Битовое поле TRS12, ширина 1 бит; данные TRS12. */
Uint16 TRS12:1; // 12 TRS for Mailbox 12 Uint16 TRS12:1; // 12 TRS for Mailbox 12
/* Битовое поле TRS13, ширина 1 бит; данные TRS13. */
Uint16 TRS13:1; // 13 TRS for Mailbox 13 Uint16 TRS13:1; // 13 TRS for Mailbox 13
/* Битовое поле TRS14, ширина 1 бит; данные TRS14. */
Uint16 TRS14:1; // 14 TRS for Mailbox 14 Uint16 TRS14:1; // 14 TRS for Mailbox 14
/* Битовое поле TRS15, ширина 1 бит; данные TRS15. */
Uint16 TRS15:1; // 15 TRS for Mailbox 15 Uint16 TRS15:1; // 15 TRS for Mailbox 15
/* Битовое поле TRS16, ширина 1 бит; данные TRS16. */
Uint16 TRS16:1; // 16 TRS for Mailbox 16 Uint16 TRS16:1; // 16 TRS for Mailbox 16
/* Битовое поле TRS17, ширина 1 бит; данные TRS17. */
Uint16 TRS17:1; // 17 TRS for Mailbox 17 Uint16 TRS17:1; // 17 TRS for Mailbox 17
/* Битовое поле TRS18, ширина 1 бит; данные TRS18. */
Uint16 TRS18:1; // 18 TRS for Mailbox 18 Uint16 TRS18:1; // 18 TRS for Mailbox 18
/* Битовое поле TRS19, ширина 1 бит; данные TRS19. */
Uint16 TRS19:1; // 19 TRS for Mailbox 19 Uint16 TRS19:1; // 19 TRS for Mailbox 19
/* Битовое поле TRS20, ширина 1 бит; данные TRS20. */
Uint16 TRS20:1; // 20 TRS for Mailbox 20 Uint16 TRS20:1; // 20 TRS for Mailbox 20
/* Битовое поле TRS21, ширина 1 бит; данные TRS21. */
Uint16 TRS21:1; // 21 TRS for Mailbox 21 Uint16 TRS21:1; // 21 TRS for Mailbox 21
/* Битовое поле TRS22, ширина 1 бит; данные TRS22. */
Uint16 TRS22:1; // 22 TRS for Mailbox 22 Uint16 TRS22:1; // 22 TRS for Mailbox 22
/* Битовое поле TRS23, ширина 1 бит; данные TRS23. */
Uint16 TRS23:1; // 23 TRS for Mailbox 23 Uint16 TRS23:1; // 23 TRS for Mailbox 23
/* Битовое поле TRS24, ширина 1 бит; данные TRS24. */
Uint16 TRS24:1; // 24 TRS for Mailbox 24 Uint16 TRS24:1; // 24 TRS for Mailbox 24
/* Битовое поле TRS25, ширина 1 бит; данные TRS25. */
Uint16 TRS25:1; // 25 TRS for Mailbox 25 Uint16 TRS25:1; // 25 TRS for Mailbox 25
/* Битовое поле TRS26, ширина 1 бит; данные TRS26. */
Uint16 TRS26:1; // 26 TRS for Mailbox 26 Uint16 TRS26:1; // 26 TRS for Mailbox 26
/* Битовое поле TRS27, ширина 1 бит; данные TRS27. */
Uint16 TRS27:1; // 27 TRS for Mailbox 27 Uint16 TRS27:1; // 27 TRS for Mailbox 27
/* Битовое поле TRS28, ширина 1 бит; данные TRS28. */
Uint16 TRS28:1; // 28 TRS for Mailbox 28 Uint16 TRS28:1; // 28 TRS for Mailbox 28
/* Битовое поле TRS29, ширина 1 бит; данные TRS29. */
Uint16 TRS29:1; // 29 TRS for Mailbox 29 Uint16 TRS29:1; // 29 TRS for Mailbox 29
/* Битовое поле TRS30, ширина 1 бит; данные TRS30. */
Uint16 TRS30:1; // 30 TRS for Mailbox 30 Uint16 TRS30:1; // 30 TRS for Mailbox 30
/* Битовое поле TRS31, ширина 1 бит; данные TRS31. */
Uint16 TRS31:1; // 31 TRS for Mailbox 31 Uint16 TRS31:1; // 31 TRS for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANTRS_REG в одной области памяти. */
union CANTRS_REG { union CANTRS_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANTRS_BITS bit;; порядок полей определяет расположение данных. */
struct CANTRS_BITS bit; struct CANTRS_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Transmit Request Reset register (CANTRR) bit definitions */ /* eCAN Transmit Request Reset register (CANTRR) bit definitions */
/* Описывает структуру CANTRR_BITS; порядок полей определяет расположение данных. */
struct CANTRR_BITS { // bit description struct CANTRR_BITS { // bit description
/* Битовое поле TRR0, ширина 1 бит; данные TRR0. */
Uint16 TRR0:1; // 0 TRR for Mailbox 0 Uint16 TRR0:1; // 0 TRR for Mailbox 0
/* Битовое поле TRR1, ширина 1 бит; данные TRR1. */
Uint16 TRR1:1; // 1 TRR for Mailbox 1 Uint16 TRR1:1; // 1 TRR for Mailbox 1
/* Битовое поле TRR2, ширина 1 бит; данные TRR2. */
Uint16 TRR2:1; // 2 TRR for Mailbox 2 Uint16 TRR2:1; // 2 TRR for Mailbox 2
/* Битовое поле TRR3, ширина 1 бит; данные TRR3. */
Uint16 TRR3:1; // 3 TRR for Mailbox 3 Uint16 TRR3:1; // 3 TRR for Mailbox 3
/* Битовое поле TRR4, ширина 1 бит; данные TRR4. */
Uint16 TRR4:1; // 4 TRR for Mailbox 4 Uint16 TRR4:1; // 4 TRR for Mailbox 4
/* Битовое поле TRR5, ширина 1 бит; данные TRR5. */
Uint16 TRR5:1; // 5 TRR for Mailbox 5 Uint16 TRR5:1; // 5 TRR for Mailbox 5
/* Битовое поле TRR6, ширина 1 бит; данные TRR6. */
Uint16 TRR6:1; // 6 TRR for Mailbox 6 Uint16 TRR6:1; // 6 TRR for Mailbox 6
/* Битовое поле TRR7, ширина 1 бит; данные TRR7. */
Uint16 TRR7:1; // 7 TRR for Mailbox 7 Uint16 TRR7:1; // 7 TRR for Mailbox 7
/* Битовое поле TRR8, ширина 1 бит; данные TRR8. */
Uint16 TRR8:1; // 8 TRR for Mailbox 8 Uint16 TRR8:1; // 8 TRR for Mailbox 8
/* Битовое поле TRR9, ширина 1 бит; данные TRR9. */
Uint16 TRR9:1; // 9 TRR for Mailbox 9 Uint16 TRR9:1; // 9 TRR for Mailbox 9
/* Битовое поле TRR10, ширина 1 бит; данные TRR10. */
Uint16 TRR10:1; // 10 TRR for Mailbox 10 Uint16 TRR10:1; // 10 TRR for Mailbox 10
/* Битовое поле TRR11, ширина 1 бит; данные TRR11. */
Uint16 TRR11:1; // 11 TRR for Mailbox 11 Uint16 TRR11:1; // 11 TRR for Mailbox 11
/* Битовое поле TRR12, ширина 1 бит; данные TRR12. */
Uint16 TRR12:1; // 12 TRR for Mailbox 12 Uint16 TRR12:1; // 12 TRR for Mailbox 12
/* Битовое поле TRR13, ширина 1 бит; данные TRR13. */
Uint16 TRR13:1; // 13 TRR for Mailbox 13 Uint16 TRR13:1; // 13 TRR for Mailbox 13
/* Битовое поле TRR14, ширина 1 бит; данные TRR14. */
Uint16 TRR14:1; // 14 TRR for Mailbox 14 Uint16 TRR14:1; // 14 TRR for Mailbox 14
/* Битовое поле TRR15, ширина 1 бит; данные TRR15. */
Uint16 TRR15:1; // 15 TRR for Mailbox 15 Uint16 TRR15:1; // 15 TRR for Mailbox 15
/* Битовое поле TRR16, ширина 1 бит; данные TRR16. */
Uint16 TRR16:1; // 16 TRR for Mailbox 16 Uint16 TRR16:1; // 16 TRR for Mailbox 16
/* Битовое поле TRR17, ширина 1 бит; данные TRR17. */
Uint16 TRR17:1; // 17 TRR for Mailbox 17 Uint16 TRR17:1; // 17 TRR for Mailbox 17
/* Битовое поле TRR18, ширина 1 бит; данные TRR18. */
Uint16 TRR18:1; // 18 TRR for Mailbox 18 Uint16 TRR18:1; // 18 TRR for Mailbox 18
/* Битовое поле TRR19, ширина 1 бит; данные TRR19. */
Uint16 TRR19:1; // 19 TRR for Mailbox 19 Uint16 TRR19:1; // 19 TRR for Mailbox 19
/* Битовое поле TRR20, ширина 1 бит; данные TRR20. */
Uint16 TRR20:1; // 20 TRR for Mailbox 20 Uint16 TRR20:1; // 20 TRR for Mailbox 20
/* Битовое поле TRR21, ширина 1 бит; данные TRR21. */
Uint16 TRR21:1; // 21 TRR for Mailbox 21 Uint16 TRR21:1; // 21 TRR for Mailbox 21
/* Битовое поле TRR22, ширина 1 бит; данные TRR22. */
Uint16 TRR22:1; // 22 TRR for Mailbox 22 Uint16 TRR22:1; // 22 TRR for Mailbox 22
/* Битовое поле TRR23, ширина 1 бит; данные TRR23. */
Uint16 TRR23:1; // 23 TRR for Mailbox 23 Uint16 TRR23:1; // 23 TRR for Mailbox 23
/* Битовое поле TRR24, ширина 1 бит; данные TRR24. */
Uint16 TRR24:1; // 24 TRR for Mailbox 24 Uint16 TRR24:1; // 24 TRR for Mailbox 24
/* Битовое поле TRR25, ширина 1 бит; данные TRR25. */
Uint16 TRR25:1; // 25 TRR for Mailbox 25 Uint16 TRR25:1; // 25 TRR for Mailbox 25
/* Битовое поле TRR26, ширина 1 бит; данные TRR26. */
Uint16 TRR26:1; // 26 TRR for Mailbox 26 Uint16 TRR26:1; // 26 TRR for Mailbox 26
/* Битовое поле TRR27, ширина 1 бит; данные TRR27. */
Uint16 TRR27:1; // 27 TRR for Mailbox 27 Uint16 TRR27:1; // 27 TRR for Mailbox 27
/* Битовое поле TRR28, ширина 1 бит; данные TRR28. */
Uint16 TRR28:1; // 28 TRR for Mailbox 28 Uint16 TRR28:1; // 28 TRR for Mailbox 28
/* Битовое поле TRR29, ширина 1 бит; данные TRR29. */
Uint16 TRR29:1; // 29 TRR for Mailbox 29 Uint16 TRR29:1; // 29 TRR for Mailbox 29
/* Битовое поле TRR30, ширина 1 бит; данные TRR30. */
Uint16 TRR30:1; // 30 TRR for Mailbox 30 Uint16 TRR30:1; // 30 TRR for Mailbox 30
/* Битовое поле TRR31, ширина 1 бит; данные TRR31. */
Uint16 TRR31:1; // 31 TRR for Mailbox 31 Uint16 TRR31:1; // 31 TRR for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANTRR_REG в одной области памяти. */
union CANTRR_REG { union CANTRR_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANTRR_BITS bit;; порядок полей определяет расположение данных. */
struct CANTRR_BITS bit; struct CANTRR_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Transmit Acknowledge register (CANTA) bit definitions */ /* eCAN Transmit Acknowledge register (CANTA) bit definitions */
/* Описывает структуру CANTA_BITS; порядок полей определяет расположение данных. */
struct CANTA_BITS { // bit description struct CANTA_BITS { // bit description
/* Битовое поле TA0, ширина 1 бит; данные TA0. */
Uint16 TA0:1; // 0 TA for Mailbox 0 Uint16 TA0:1; // 0 TA for Mailbox 0
/* Битовое поле TA1, ширина 1 бит; данные TA1. */
Uint16 TA1:1; // 1 TA for Mailbox 1 Uint16 TA1:1; // 1 TA for Mailbox 1
/* Битовое поле TA2, ширина 1 бит; данные TA2. */
Uint16 TA2:1; // 2 TA for Mailbox 2 Uint16 TA2:1; // 2 TA for Mailbox 2
/* Битовое поле TA3, ширина 1 бит; данные TA3. */
Uint16 TA3:1; // 3 TA for Mailbox 3 Uint16 TA3:1; // 3 TA for Mailbox 3
/* Битовое поле TA4, ширина 1 бит; данные TA4. */
Uint16 TA4:1; // 4 TA for Mailbox 4 Uint16 TA4:1; // 4 TA for Mailbox 4
/* Битовое поле TA5, ширина 1 бит; данные TA5. */
Uint16 TA5:1; // 5 TA for Mailbox 5 Uint16 TA5:1; // 5 TA for Mailbox 5
/* Битовое поле TA6, ширина 1 бит; данные TA6. */
Uint16 TA6:1; // 6 TA for Mailbox 6 Uint16 TA6:1; // 6 TA for Mailbox 6
/* Битовое поле TA7, ширина 1 бит; данные TA7. */
Uint16 TA7:1; // 7 TA for Mailbox 7 Uint16 TA7:1; // 7 TA for Mailbox 7
/* Битовое поле TA8, ширина 1 бит; данные TA8. */
Uint16 TA8:1; // 8 TA for Mailbox 8 Uint16 TA8:1; // 8 TA for Mailbox 8
/* Битовое поле TA9, ширина 1 бит; данные TA9. */
Uint16 TA9:1; // 9 TA for Mailbox 9 Uint16 TA9:1; // 9 TA for Mailbox 9
/* Битовое поле TA10, ширина 1 бит; данные TA10. */
Uint16 TA10:1; // 10 TA for Mailbox 10 Uint16 TA10:1; // 10 TA for Mailbox 10
/* Битовое поле TA11, ширина 1 бит; данные TA11. */
Uint16 TA11:1; // 11 TA for Mailbox 11 Uint16 TA11:1; // 11 TA for Mailbox 11
/* Битовое поле TA12, ширина 1 бит; данные TA12. */
Uint16 TA12:1; // 12 TA for Mailbox 12 Uint16 TA12:1; // 12 TA for Mailbox 12
/* Битовое поле TA13, ширина 1 бит; данные TA13. */
Uint16 TA13:1; // 13 TA for Mailbox 13 Uint16 TA13:1; // 13 TA for Mailbox 13
/* Битовое поле TA14, ширина 1 бит; данные TA14. */
Uint16 TA14:1; // 14 TA for Mailbox 14 Uint16 TA14:1; // 14 TA for Mailbox 14
/* Битовое поле TA15, ширина 1 бит; данные TA15. */
Uint16 TA15:1; // 15 TA for Mailbox 15 Uint16 TA15:1; // 15 TA for Mailbox 15
/* Битовое поле TA16, ширина 1 бит; данные TA16. */
Uint16 TA16:1; // 16 TA for Mailbox 16 Uint16 TA16:1; // 16 TA for Mailbox 16
/* Битовое поле TA17, ширина 1 бит; данные TA17. */
Uint16 TA17:1; // 17 TA for Mailbox 17 Uint16 TA17:1; // 17 TA for Mailbox 17
/* Битовое поле TA18, ширина 1 бит; данные TA18. */
Uint16 TA18:1; // 18 TA for Mailbox 18 Uint16 TA18:1; // 18 TA for Mailbox 18
/* Битовое поле TA19, ширина 1 бит; данные TA19. */
Uint16 TA19:1; // 19 TA for Mailbox 19 Uint16 TA19:1; // 19 TA for Mailbox 19
/* Битовое поле TA20, ширина 1 бит; данные TA20. */
Uint16 TA20:1; // 20 TA for Mailbox 20 Uint16 TA20:1; // 20 TA for Mailbox 20
/* Битовое поле TA21, ширина 1 бит; данные TA21. */
Uint16 TA21:1; // 21 TA for Mailbox 21 Uint16 TA21:1; // 21 TA for Mailbox 21
/* Битовое поле TA22, ширина 1 бит; данные TA22. */
Uint16 TA22:1; // 22 TA for Mailbox 22 Uint16 TA22:1; // 22 TA for Mailbox 22
/* Битовое поле TA23, ширина 1 бит; данные TA23. */
Uint16 TA23:1; // 23 TA for Mailbox 23 Uint16 TA23:1; // 23 TA for Mailbox 23
/* Битовое поле TA24, ширина 1 бит; данные TA24. */
Uint16 TA24:1; // 24 TA for Mailbox 24 Uint16 TA24:1; // 24 TA for Mailbox 24
/* Битовое поле TA25, ширина 1 бит; данные TA25. */
Uint16 TA25:1; // 25 TA for Mailbox 25 Uint16 TA25:1; // 25 TA for Mailbox 25
/* Битовое поле TA26, ширина 1 бит; данные TA26. */
Uint16 TA26:1; // 26 TA for Mailbox 26 Uint16 TA26:1; // 26 TA for Mailbox 26
/* Битовое поле TA27, ширина 1 бит; данные TA27. */
Uint16 TA27:1; // 27 TA for Mailbox 27 Uint16 TA27:1; // 27 TA for Mailbox 27
/* Битовое поле TA28, ширина 1 бит; данные TA28. */
Uint16 TA28:1; // 28 TA for Mailbox 28 Uint16 TA28:1; // 28 TA for Mailbox 28
/* Битовое поле TA29, ширина 1 бит; данные TA29. */
Uint16 TA29:1; // 29 TA for Mailbox 29 Uint16 TA29:1; // 29 TA for Mailbox 29
/* Битовое поле TA30, ширина 1 бит; данные TA30. */
Uint16 TA30:1; // 30 TA for Mailbox 30 Uint16 TA30:1; // 30 TA for Mailbox 30
/* Битовое поле TA31, ширина 1 бит; данные TA31. */
Uint16 TA31:1; // 31 TA for Mailbox 31 Uint16 TA31:1; // 31 TA for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANTA_REG в одной области памяти. */
union CANTA_REG { union CANTA_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANTA_BITS bit;; порядок полей определяет расположение данных. */
struct CANTA_BITS bit; struct CANTA_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Transmit Abort Acknowledge register (CANAA) bit definitions */ /* eCAN Transmit Abort Acknowledge register (CANAA) bit definitions */
/* Описывает структуру CANAA_BITS; порядок полей определяет расположение данных. */
struct CANAA_BITS { // bit description struct CANAA_BITS { // bit description
/* Битовое поле AA0, ширина 1 бит; данные AA0. */
Uint16 AA0:1; // 0 AA for Mailbox 0 Uint16 AA0:1; // 0 AA for Mailbox 0
/* Битовое поле AA1, ширина 1 бит; данные AA1. */
Uint16 AA1:1; // 1 AA for Mailbox 1 Uint16 AA1:1; // 1 AA for Mailbox 1
/* Битовое поле AA2, ширина 1 бит; данные AA2. */
Uint16 AA2:1; // 2 AA for Mailbox 2 Uint16 AA2:1; // 2 AA for Mailbox 2
/* Битовое поле AA3, ширина 1 бит; данные AA3. */
Uint16 AA3:1; // 3 AA for Mailbox 3 Uint16 AA3:1; // 3 AA for Mailbox 3
/* Битовое поле AA4, ширина 1 бит; данные AA4. */
Uint16 AA4:1; // 4 AA for Mailbox 4 Uint16 AA4:1; // 4 AA for Mailbox 4
/* Битовое поле AA5, ширина 1 бит; данные AA5. */
Uint16 AA5:1; // 5 AA for Mailbox 5 Uint16 AA5:1; // 5 AA for Mailbox 5
/* Битовое поле AA6, ширина 1 бит; данные AA6. */
Uint16 AA6:1; // 6 AA for Mailbox 6 Uint16 AA6:1; // 6 AA for Mailbox 6
/* Битовое поле AA7, ширина 1 бит; данные AA7. */
Uint16 AA7:1; // 7 AA for Mailbox 7 Uint16 AA7:1; // 7 AA for Mailbox 7
/* Битовое поле AA8, ширина 1 бит; данные AA8. */
Uint16 AA8:1; // 8 AA for Mailbox 8 Uint16 AA8:1; // 8 AA for Mailbox 8
/* Битовое поле AA9, ширина 1 бит; данные AA9. */
Uint16 AA9:1; // 9 AA for Mailbox 9 Uint16 AA9:1; // 9 AA for Mailbox 9
/* Битовое поле AA10, ширина 1 бит; данные AA10. */
Uint16 AA10:1; // 10 AA for Mailbox 10 Uint16 AA10:1; // 10 AA for Mailbox 10
/* Битовое поле AA11, ширина 1 бит; данные AA11. */
Uint16 AA11:1; // 11 AA for Mailbox 11 Uint16 AA11:1; // 11 AA for Mailbox 11
/* Битовое поле AA12, ширина 1 бит; данные AA12. */
Uint16 AA12:1; // 12 AA for Mailbox 12 Uint16 AA12:1; // 12 AA for Mailbox 12
/* Битовое поле AA13, ширина 1 бит; данные AA13. */
Uint16 AA13:1; // 13 AA for Mailbox 13 Uint16 AA13:1; // 13 AA for Mailbox 13
/* Битовое поле AA14, ширина 1 бит; данные AA14. */
Uint16 AA14:1; // 14 AA for Mailbox 14 Uint16 AA14:1; // 14 AA for Mailbox 14
/* Битовое поле AA15, ширина 1 бит; данные AA15. */
Uint16 AA15:1; // 15 AA for Mailbox 15 Uint16 AA15:1; // 15 AA for Mailbox 15
/* Битовое поле AA16, ширина 1 бит; данные AA16. */
Uint16 AA16:1; // 16 AA for Mailbox 16 Uint16 AA16:1; // 16 AA for Mailbox 16
/* Битовое поле AA17, ширина 1 бит; данные AA17. */
Uint16 AA17:1; // 17 AA for Mailbox 17 Uint16 AA17:1; // 17 AA for Mailbox 17
/* Битовое поле AA18, ширина 1 бит; данные AA18. */
Uint16 AA18:1; // 18 AA for Mailbox 18 Uint16 AA18:1; // 18 AA for Mailbox 18
/* Битовое поле AA19, ширина 1 бит; данные AA19. */
Uint16 AA19:1; // 19 AA for Mailbox 19 Uint16 AA19:1; // 19 AA for Mailbox 19
/* Битовое поле AA20, ширина 1 бит; данные AA20. */
Uint16 AA20:1; // 20 AA for Mailbox 20 Uint16 AA20:1; // 20 AA for Mailbox 20
/* Битовое поле AA21, ширина 1 бит; данные AA21. */
Uint16 AA21:1; // 21 AA for Mailbox 21 Uint16 AA21:1; // 21 AA for Mailbox 21
/* Битовое поле AA22, ширина 1 бит; данные AA22. */
Uint16 AA22:1; // 22 AA for Mailbox 22 Uint16 AA22:1; // 22 AA for Mailbox 22
/* Битовое поле AA23, ширина 1 бит; данные AA23. */
Uint16 AA23:1; // 23 AA for Mailbox 23 Uint16 AA23:1; // 23 AA for Mailbox 23
/* Битовое поле AA24, ширина 1 бит; данные AA24. */
Uint16 AA24:1; // 24 AA for Mailbox 24 Uint16 AA24:1; // 24 AA for Mailbox 24
/* Битовое поле AA25, ширина 1 бит; данные AA25. */
Uint16 AA25:1; // 25 AA for Mailbox 25 Uint16 AA25:1; // 25 AA for Mailbox 25
/* Битовое поле AA26, ширина 1 бит; данные AA26. */
Uint16 AA26:1; // 26 AA for Mailbox 26 Uint16 AA26:1; // 26 AA for Mailbox 26
/* Битовое поле AA27, ширина 1 бит; данные AA27. */
Uint16 AA27:1; // 27 AA for Mailbox 27 Uint16 AA27:1; // 27 AA for Mailbox 27
/* Битовое поле AA28, ширина 1 бит; данные AA28. */
Uint16 AA28:1; // 28 AA for Mailbox 28 Uint16 AA28:1; // 28 AA for Mailbox 28
/* Битовое поле AA29, ширина 1 бит; данные AA29. */
Uint16 AA29:1; // 29 AA for Mailbox 29 Uint16 AA29:1; // 29 AA for Mailbox 29
/* Битовое поле AA30, ширина 1 бит; данные AA30. */
Uint16 AA30:1; // 30 AA for Mailbox 30 Uint16 AA30:1; // 30 AA for Mailbox 30
/* Битовое поле AA31, ширина 1 бит; данные AA31. */
Uint16 AA31:1; // 31 AA for Mailbox 31 Uint16 AA31:1; // 31 AA for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANAA_REG в одной области памяти. */
union CANAA_REG { union CANAA_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANAA_BITS bit;; порядок полей определяет расположение данных. */
struct CANAA_BITS bit; struct CANAA_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Received Message Pending register (CANRMP) bit definitions */ /* eCAN Received Message Pending register (CANRMP) bit definitions */
/* Описывает структуру CANRMP_BITS; порядок полей определяет расположение данных. */
struct CANRMP_BITS { // bit description struct CANRMP_BITS { // bit description
/* Битовое поле RMP0, ширина 1 бит; данные RMP0. */
Uint16 RMP0:1; // 0 RMP for Mailbox 0 Uint16 RMP0:1; // 0 RMP for Mailbox 0
/* Битовое поле RMP1, ширина 1 бит; данные RMP1. */
Uint16 RMP1:1; // 1 RMP for Mailbox 1 Uint16 RMP1:1; // 1 RMP for Mailbox 1
/* Битовое поле RMP2, ширина 1 бит; данные RMP2. */
Uint16 RMP2:1; // 2 RMP for Mailbox 2 Uint16 RMP2:1; // 2 RMP for Mailbox 2
/* Битовое поле RMP3, ширина 1 бит; данные RMP3. */
Uint16 RMP3:1; // 3 RMP for Mailbox 3 Uint16 RMP3:1; // 3 RMP for Mailbox 3
/* Битовое поле RMP4, ширина 1 бит; данные RMP4. */
Uint16 RMP4:1; // 4 RMP for Mailbox 4 Uint16 RMP4:1; // 4 RMP for Mailbox 4
/* Битовое поле RMP5, ширина 1 бит; данные RMP5. */
Uint16 RMP5:1; // 5 RMP for Mailbox 5 Uint16 RMP5:1; // 5 RMP for Mailbox 5
/* Битовое поле RMP6, ширина 1 бит; данные RMP6. */
Uint16 RMP6:1; // 6 RMP for Mailbox 6 Uint16 RMP6:1; // 6 RMP for Mailbox 6
/* Битовое поле RMP7, ширина 1 бит; данные RMP7. */
Uint16 RMP7:1; // 7 RMP for Mailbox 7 Uint16 RMP7:1; // 7 RMP for Mailbox 7
/* Битовое поле RMP8, ширина 1 бит; данные RMP8. */
Uint16 RMP8:1; // 8 RMP for Mailbox 8 Uint16 RMP8:1; // 8 RMP for Mailbox 8
/* Битовое поле RMP9, ширина 1 бит; данные RMP9. */
Uint16 RMP9:1; // 9 RMP for Mailbox 9 Uint16 RMP9:1; // 9 RMP for Mailbox 9
/* Битовое поле RMP10, ширина 1 бит; данные RMP10. */
Uint16 RMP10:1; // 10 RMP for Mailbox 10 Uint16 RMP10:1; // 10 RMP for Mailbox 10
/* Битовое поле RMP11, ширина 1 бит; данные RMP11. */
Uint16 RMP11:1; // 11 RMP for Mailbox 11 Uint16 RMP11:1; // 11 RMP for Mailbox 11
/* Битовое поле RMP12, ширина 1 бит; данные RMP12. */
Uint16 RMP12:1; // 12 RMP for Mailbox 12 Uint16 RMP12:1; // 12 RMP for Mailbox 12
/* Битовое поле RMP13, ширина 1 бит; данные RMP13. */
Uint16 RMP13:1; // 13 RMP for Mailbox 13 Uint16 RMP13:1; // 13 RMP for Mailbox 13
/* Битовое поле RMP14, ширина 1 бит; данные RMP14. */
Uint16 RMP14:1; // 14 RMP for Mailbox 14 Uint16 RMP14:1; // 14 RMP for Mailbox 14
/* Битовое поле RMP15, ширина 1 бит; данные RMP15. */
Uint16 RMP15:1; // 15 RMP for Mailbox 15 Uint16 RMP15:1; // 15 RMP for Mailbox 15
/* Битовое поле RMP16, ширина 1 бит; данные RMP16. */
Uint16 RMP16:1; // 16 RMP for Mailbox 16 Uint16 RMP16:1; // 16 RMP for Mailbox 16
/* Битовое поле RMP17, ширина 1 бит; данные RMP17. */
Uint16 RMP17:1; // 17 RMP for Mailbox 17 Uint16 RMP17:1; // 17 RMP for Mailbox 17
/* Битовое поле RMP18, ширина 1 бит; данные RMP18. */
Uint16 RMP18:1; // 18 RMP for Mailbox 18 Uint16 RMP18:1; // 18 RMP for Mailbox 18
/* Битовое поле RMP19, ширина 1 бит; данные RMP19. */
Uint16 RMP19:1; // 19 RMP for Mailbox 19 Uint16 RMP19:1; // 19 RMP for Mailbox 19
/* Битовое поле RMP20, ширина 1 бит; данные RMP20. */
Uint16 RMP20:1; // 20 RMP for Mailbox 20 Uint16 RMP20:1; // 20 RMP for Mailbox 20
/* Битовое поле RMP21, ширина 1 бит; данные RMP21. */
Uint16 RMP21:1; // 21 RMP for Mailbox 21 Uint16 RMP21:1; // 21 RMP for Mailbox 21
/* Битовое поле RMP22, ширина 1 бит; данные RMP22. */
Uint16 RMP22:1; // 22 RMP for Mailbox 22 Uint16 RMP22:1; // 22 RMP for Mailbox 22
/* Битовое поле RMP23, ширина 1 бит; данные RMP23. */
Uint16 RMP23:1; // 23 RMP for Mailbox 23 Uint16 RMP23:1; // 23 RMP for Mailbox 23
/* Битовое поле RMP24, ширина 1 бит; данные RMP24. */
Uint16 RMP24:1; // 24 RMP for Mailbox 24 Uint16 RMP24:1; // 24 RMP for Mailbox 24
/* Битовое поле RMP25, ширина 1 бит; данные RMP25. */
Uint16 RMP25:1; // 25 RMP for Mailbox 25 Uint16 RMP25:1; // 25 RMP for Mailbox 25
/* Битовое поле RMP26, ширина 1 бит; данные RMP26. */
Uint16 RMP26:1; // 26 RMP for Mailbox 26 Uint16 RMP26:1; // 26 RMP for Mailbox 26
/* Битовое поле RMP27, ширина 1 бит; данные RMP27. */
Uint16 RMP27:1; // 27 RMP for Mailbox 27 Uint16 RMP27:1; // 27 RMP for Mailbox 27
/* Битовое поле RMP28, ширина 1 бит; данные RMP28. */
Uint16 RMP28:1; // 28 RMP for Mailbox 28 Uint16 RMP28:1; // 28 RMP for Mailbox 28
/* Битовое поле RMP29, ширина 1 бит; данные RMP29. */
Uint16 RMP29:1; // 29 RMP for Mailbox 29 Uint16 RMP29:1; // 29 RMP for Mailbox 29
/* Битовое поле RMP30, ширина 1 бит; данные RMP30. */
Uint16 RMP30:1; // 30 RMP for Mailbox 30 Uint16 RMP30:1; // 30 RMP for Mailbox 30
/* Битовое поле RMP31, ширина 1 бит; данные RMP31. */
Uint16 RMP31:1; // 31 RMP for Mailbox 31 Uint16 RMP31:1; // 31 RMP for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANRMP_REG в одной области памяти. */
union CANRMP_REG { union CANRMP_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANRMP_BITS bit;; порядок полей определяет расположение данных. */
struct CANRMP_BITS bit; struct CANRMP_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Received Message Lost register (CANRML) bit definitions */ /* eCAN Received Message Lost register (CANRML) bit definitions */
/* Описывает структуру CANRML_BITS; порядок полей определяет расположение данных. */
struct CANRML_BITS { // bit description struct CANRML_BITS { // bit description
/* Битовое поле RML0, ширина 1 бит; данные RML0. */
Uint16 RML0:1; // 0 RML for Mailbox 0 Uint16 RML0:1; // 0 RML for Mailbox 0
/* Битовое поле RML1, ширина 1 бит; данные RML1. */
Uint16 RML1:1; // 1 RML for Mailbox 1 Uint16 RML1:1; // 1 RML for Mailbox 1
/* Битовое поле RML2, ширина 1 бит; данные RML2. */
Uint16 RML2:1; // 2 RML for Mailbox 2 Uint16 RML2:1; // 2 RML for Mailbox 2
/* Битовое поле RML3, ширина 1 бит; данные RML3. */
Uint16 RML3:1; // 3 RML for Mailbox 3 Uint16 RML3:1; // 3 RML for Mailbox 3
/* Битовое поле RML4, ширина 1 бит; данные RML4. */
Uint16 RML4:1; // 4 RML for Mailbox 4 Uint16 RML4:1; // 4 RML for Mailbox 4
/* Битовое поле RML5, ширина 1 бит; данные RML5. */
Uint16 RML5:1; // 5 RML for Mailbox 5 Uint16 RML5:1; // 5 RML for Mailbox 5
/* Битовое поле RML6, ширина 1 бит; данные RML6. */
Uint16 RML6:1; // 6 RML for Mailbox 6 Uint16 RML6:1; // 6 RML for Mailbox 6
/* Битовое поле RML7, ширина 1 бит; данные RML7. */
Uint16 RML7:1; // 7 RML for Mailbox 7 Uint16 RML7:1; // 7 RML for Mailbox 7
/* Битовое поле RML8, ширина 1 бит; данные RML8. */
Uint16 RML8:1; // 8 RML for Mailbox 8 Uint16 RML8:1; // 8 RML for Mailbox 8
/* Битовое поле RML9, ширина 1 бит; данные RML9. */
Uint16 RML9:1; // 9 RML for Mailbox 9 Uint16 RML9:1; // 9 RML for Mailbox 9
/* Битовое поле RML10, ширина 1 бит; данные RML10. */
Uint16 RML10:1; // 10 RML for Mailbox 10 Uint16 RML10:1; // 10 RML for Mailbox 10
/* Битовое поле RML11, ширина 1 бит; данные RML11. */
Uint16 RML11:1; // 11 RML for Mailbox 11 Uint16 RML11:1; // 11 RML for Mailbox 11
/* Битовое поле RML12, ширина 1 бит; данные RML12. */
Uint16 RML12:1; // 12 RML for Mailbox 12 Uint16 RML12:1; // 12 RML for Mailbox 12
/* Битовое поле RML13, ширина 1 бит; данные RML13. */
Uint16 RML13:1; // 13 RML for Mailbox 13 Uint16 RML13:1; // 13 RML for Mailbox 13
/* Битовое поле RML14, ширина 1 бит; данные RML14. */
Uint16 RML14:1; // 14 RML for Mailbox 14 Uint16 RML14:1; // 14 RML for Mailbox 14
/* Битовое поле RML15, ширина 1 бит; данные RML15. */
Uint16 RML15:1; // 15 RML for Mailbox 15 Uint16 RML15:1; // 15 RML for Mailbox 15
/* Битовое поле RML16, ширина 1 бит; данные RML16. */
Uint16 RML16:1; // 16 RML for Mailbox 16 Uint16 RML16:1; // 16 RML for Mailbox 16
/* Битовое поле RML17, ширина 1 бит; данные RML17. */
Uint16 RML17:1; // 17 RML for Mailbox 17 Uint16 RML17:1; // 17 RML for Mailbox 17
/* Битовое поле RML18, ширина 1 бит; данные RML18. */
Uint16 RML18:1; // 18 RML for Mailbox 18 Uint16 RML18:1; // 18 RML for Mailbox 18
/* Битовое поле RML19, ширина 1 бит; данные RML19. */
Uint16 RML19:1; // 19 RML for Mailbox 19 Uint16 RML19:1; // 19 RML for Mailbox 19
/* Битовое поле RML20, ширина 1 бит; данные RML20. */
Uint16 RML20:1; // 20 RML for Mailbox 20 Uint16 RML20:1; // 20 RML for Mailbox 20
/* Битовое поле RML21, ширина 1 бит; данные RML21. */
Uint16 RML21:1; // 21 RML for Mailbox 21 Uint16 RML21:1; // 21 RML for Mailbox 21
/* Битовое поле RML22, ширина 1 бит; данные RML22. */
Uint16 RML22:1; // 22 RML for Mailbox 22 Uint16 RML22:1; // 22 RML for Mailbox 22
/* Битовое поле RML23, ширина 1 бит; данные RML23. */
Uint16 RML23:1; // 23 RML for Mailbox 23 Uint16 RML23:1; // 23 RML for Mailbox 23
/* Битовое поле RML24, ширина 1 бит; данные RML24. */
Uint16 RML24:1; // 24 RML for Mailbox 24 Uint16 RML24:1; // 24 RML for Mailbox 24
/* Битовое поле RML25, ширина 1 бит; данные RML25. */
Uint16 RML25:1; // 25 RML for Mailbox 25 Uint16 RML25:1; // 25 RML for Mailbox 25
/* Битовое поле RML26, ширина 1 бит; данные RML26. */
Uint16 RML26:1; // 26 RML for Mailbox 26 Uint16 RML26:1; // 26 RML for Mailbox 26
/* Битовое поле RML27, ширина 1 бит; данные RML27. */
Uint16 RML27:1; // 27 RML for Mailbox 27 Uint16 RML27:1; // 27 RML for Mailbox 27
/* Битовое поле RML28, ширина 1 бит; данные RML28. */
Uint16 RML28:1; // 28 RML for Mailbox 28 Uint16 RML28:1; // 28 RML for Mailbox 28
/* Битовое поле RML29, ширина 1 бит; данные RML29. */
Uint16 RML29:1; // 29 RML for Mailbox 29 Uint16 RML29:1; // 29 RML for Mailbox 29
/* Битовое поле RML30, ширина 1 бит; данные RML30. */
Uint16 RML30:1; // 30 RML for Mailbox 30 Uint16 RML30:1; // 30 RML for Mailbox 30
/* Битовое поле RML31, ширина 1 бит; данные RML31. */
Uint16 RML31:1; // 31 RML for Mailbox 31 Uint16 RML31:1; // 31 RML for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANRML_REG в одной области памяти. */
union CANRML_REG { union CANRML_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANRML_BITS bit;; порядок полей определяет расположение данных. */
struct CANRML_BITS bit; struct CANRML_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Remote Frame Pending register (CANRFP) bit definitions */ /* eCAN Remote Frame Pending register (CANRFP) bit definitions */
/* Описывает структуру CANRFP_BITS; порядок полей определяет расположение данных. */
struct CANRFP_BITS { // bit description struct CANRFP_BITS { // bit description
/* Битовое поле RFP0, ширина 1 бит; данные RFP0. */
Uint16 RFP0:1; // 0 RFP for Mailbox 0 Uint16 RFP0:1; // 0 RFP for Mailbox 0
/* Битовое поле RFP1, ширина 1 бит; данные RFP1. */
Uint16 RFP1:1; // 1 RFP for Mailbox 1 Uint16 RFP1:1; // 1 RFP for Mailbox 1
/* Битовое поле RFP2, ширина 1 бит; данные RFP2. */
Uint16 RFP2:1; // 2 RFP for Mailbox 2 Uint16 RFP2:1; // 2 RFP for Mailbox 2
/* Битовое поле RFP3, ширина 1 бит; данные RFP3. */
Uint16 RFP3:1; // 3 RFP for Mailbox 3 Uint16 RFP3:1; // 3 RFP for Mailbox 3
/* Битовое поле RFP4, ширина 1 бит; данные RFP4. */
Uint16 RFP4:1; // 4 RFP for Mailbox 4 Uint16 RFP4:1; // 4 RFP for Mailbox 4
/* Битовое поле RFP5, ширина 1 бит; данные RFP5. */
Uint16 RFP5:1; // 5 RFP for Mailbox 5 Uint16 RFP5:1; // 5 RFP for Mailbox 5
/* Битовое поле RFP6, ширина 1 бит; данные RFP6. */
Uint16 RFP6:1; // 6 RFP for Mailbox 6 Uint16 RFP6:1; // 6 RFP for Mailbox 6
/* Битовое поле RFP7, ширина 1 бит; данные RFP7. */
Uint16 RFP7:1; // 7 RFP for Mailbox 7 Uint16 RFP7:1; // 7 RFP for Mailbox 7
/* Битовое поле RFP8, ширина 1 бит; данные RFP8. */
Uint16 RFP8:1; // 8 RFP for Mailbox 8 Uint16 RFP8:1; // 8 RFP for Mailbox 8
/* Битовое поле RFP9, ширина 1 бит; данные RFP9. */
Uint16 RFP9:1; // 9 RFP for Mailbox 9 Uint16 RFP9:1; // 9 RFP for Mailbox 9
/* Битовое поле RFP10, ширина 1 бит; данные RFP10. */
Uint16 RFP10:1; // 10 RFP for Mailbox 10 Uint16 RFP10:1; // 10 RFP for Mailbox 10
/* Битовое поле RFP11, ширина 1 бит; данные RFP11. */
Uint16 RFP11:1; // 11 RFP for Mailbox 11 Uint16 RFP11:1; // 11 RFP for Mailbox 11
/* Битовое поле RFP12, ширина 1 бит; данные RFP12. */
Uint16 RFP12:1; // 12 RFP for Mailbox 12 Uint16 RFP12:1; // 12 RFP for Mailbox 12
/* Битовое поле RFP13, ширина 1 бит; данные RFP13. */
Uint16 RFP13:1; // 13 RFP for Mailbox 13 Uint16 RFP13:1; // 13 RFP for Mailbox 13
/* Битовое поле RFP14, ширина 1 бит; данные RFP14. */
Uint16 RFP14:1; // 14 RFP for Mailbox 14 Uint16 RFP14:1; // 14 RFP for Mailbox 14
/* Битовое поле RFP15, ширина 1 бит; данные RFP15. */
Uint16 RFP15:1; // 15 RFP for Mailbox 15 Uint16 RFP15:1; // 15 RFP for Mailbox 15
/* Битовое поле RFP16, ширина 1 бит; данные RFP16. */
Uint16 RFP16:1; // 16 RFP for Mailbox 16 Uint16 RFP16:1; // 16 RFP for Mailbox 16
/* Битовое поле RFP17, ширина 1 бит; данные RFP17. */
Uint16 RFP17:1; // 17 RFP for Mailbox 17 Uint16 RFP17:1; // 17 RFP for Mailbox 17
/* Битовое поле RFP18, ширина 1 бит; данные RFP18. */
Uint16 RFP18:1; // 18 RFP for Mailbox 18 Uint16 RFP18:1; // 18 RFP for Mailbox 18
/* Битовое поле RFP19, ширина 1 бит; данные RFP19. */
Uint16 RFP19:1; // 19 RFP for Mailbox 19 Uint16 RFP19:1; // 19 RFP for Mailbox 19
/* Битовое поле RFP20, ширина 1 бит; данные RFP20. */
Uint16 RFP20:1; // 20 RFP for Mailbox 20 Uint16 RFP20:1; // 20 RFP for Mailbox 20
/* Битовое поле RFP21, ширина 1 бит; данные RFP21. */
Uint16 RFP21:1; // 21 RFP for Mailbox 21 Uint16 RFP21:1; // 21 RFP for Mailbox 21
/* Битовое поле RFP22, ширина 1 бит; данные RFP22. */
Uint16 RFP22:1; // 22 RFP for Mailbox 22 Uint16 RFP22:1; // 22 RFP for Mailbox 22
/* Битовое поле RFP23, ширина 1 бит; данные RFP23. */
Uint16 RFP23:1; // 23 RFP for Mailbox 23 Uint16 RFP23:1; // 23 RFP for Mailbox 23
/* Битовое поле RFP24, ширина 1 бит; данные RFP24. */
Uint16 RFP24:1; // 24 RFP for Mailbox 24 Uint16 RFP24:1; // 24 RFP for Mailbox 24
/* Битовое поле RFP25, ширина 1 бит; данные RFP25. */
Uint16 RFP25:1; // 25 RFP for Mailbox 25 Uint16 RFP25:1; // 25 RFP for Mailbox 25
/* Битовое поле RFP26, ширина 1 бит; данные RFP26. */
Uint16 RFP26:1; // 26 RFP for Mailbox 26 Uint16 RFP26:1; // 26 RFP for Mailbox 26
/* Битовое поле RFP27, ширина 1 бит; данные RFP27. */
Uint16 RFP27:1; // 27 RFP for Mailbox 27 Uint16 RFP27:1; // 27 RFP for Mailbox 27
/* Битовое поле RFP28, ширина 1 бит; данные RFP28. */
Uint16 RFP28:1; // 28 RFP for Mailbox 28 Uint16 RFP28:1; // 28 RFP for Mailbox 28
/* Битовое поле RFP29, ширина 1 бит; данные RFP29. */
Uint16 RFP29:1; // 29 RFP for Mailbox 29 Uint16 RFP29:1; // 29 RFP for Mailbox 29
/* Битовое поле RFP30, ширина 1 бит; данные RFP30. */
Uint16 RFP30:1; // 30 RFP for Mailbox 30 Uint16 RFP30:1; // 30 RFP for Mailbox 30
/* Битовое поле RFP31, ширина 1 бит; данные RFP31. */
Uint16 RFP31:1; // 31 RFP for Mailbox 31 Uint16 RFP31:1; // 31 RFP for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANRFP_REG в одной области памяти. */
union CANRFP_REG { union CANRFP_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANRFP_BITS bit;; порядок полей определяет расположение данных. */
struct CANRFP_BITS bit; struct CANRFP_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Global Acceptance Mask register (CANGAM) bit definitions */ /* eCAN Global Acceptance Mask register (CANGAM) bit definitions */
/* Описывает структуру CANGAM_BITS; порядок полей определяет расположение данных. */
struct CANGAM_BITS { // bits description struct CANGAM_BITS { // bits description
/* Битовое поле GAM150, ширина 16 бит; данные GAM150. */
Uint16 GAM150:16; // 15:0 Global acceptance mask bits 0-15 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 Uint16 GAM2816:13; // 28:16 Global acceptance mask bits 16-28
/* Битовое поле rsvd, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:2; // 30:29 reserved Uint16 rsvd:2; // 30:29 reserved
/* Битовое поле AMI, ширина 1 бит; данные AMI. */
Uint16 AMI:1; // 31 AMI bit Uint16 AMI:1; // 31 AMI bit
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANGAM_REG в одной области памяти. */
union CANGAM_REG { union CANGAM_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANGAM_BITS bit;; порядок полей определяет расположение данных. */
struct CANGAM_BITS bit; struct CANGAM_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Master Control register (CANMC) bit definitions */ /* eCAN Master Control register (CANMC) bit definitions */
/* Описывает структуру CANMC_BITS; порядок полей определяет расположение данных. */
struct CANMC_BITS { // bits description struct CANMC_BITS { // bits description
/* Битовое поле MBNR, ширина 5 бит; данные MBNR. */
Uint16 MBNR:5; // 4:0 MBX # for CDR bit Uint16 MBNR:5; // 4:0 MBX # for CDR bit
/* Битовое поле SRES, ширина 1 бит; данные SRES. */
Uint16 SRES:1; // 5 Soft reset Uint16 SRES:1; // 5 Soft reset
/* Битовое поле STM, ширина 1 бит; данные STM. */
Uint16 STM:1; // 6 Self-test mode Uint16 STM:1; // 6 Self-test mode
/* Битовое поле ABO, ширина 1 бит; данные ABO. */
Uint16 ABO:1; // 7 Auto bus-on Uint16 ABO:1; // 7 Auto bus-on
/* Битовое поле CDR, ширина 1 бит; данные CDR. */
Uint16 CDR:1; // 8 Change data request Uint16 CDR:1; // 8 Change data request
/* Битовое поле WUBA, ширина 1 бит; данные WUBA. */
Uint16 WUBA:1; // 9 Wake-up on bus activity Uint16 WUBA:1; // 9 Wake-up on bus activity
/* Битовое поле DBO, ширина 1 бит; данные DBO. */
Uint16 DBO:1; // 10 Data-byte order Uint16 DBO:1; // 10 Data-byte order
/* Битовое поле PDR, ширина 1 бит; данные PDR. */
Uint16 PDR:1; // 11 Power-down mode request Uint16 PDR:1; // 11 Power-down mode request
/* Битовое поле CCR, ширина 1 бит; данные CCR. */
Uint16 CCR:1; // 12 Change configuration request Uint16 CCR:1; // 12 Change configuration request
/* Битовое поле SCB, ширина 1 бит; данные SCB. */
Uint16 SCB:1; // 13 SCC compatibility bit Uint16 SCB:1; // 13 SCC compatibility bit
/* Битовое поле TCC, ширина 1 бит; данные TCC. */
Uint16 TCC:1; // 14 TSC MSB clear bit Uint16 TCC:1; // 14 TSC MSB clear bit
/* Битовое поле MBCC, ширина 1 бит; данные MBCC. */
Uint16 MBCC:1; // 15 TSC clear bit thru mailbox 16 Uint16 MBCC:1; // 15 TSC clear bit thru mailbox 16
/* Битовое поле SUSP, ширина 1 бит; данные SUSP. */
Uint16 SUSP:1; // 16 SUSPEND free/soft bit Uint16 SUSP:1; // 16 SUSPEND free/soft bit
/* Битовое поле rsvd, ширина 15 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:15; // 31:17 reserved Uint16 rsvd:15; // 31:17 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANMC_REG в одной области памяти. */
union CANMC_REG { union CANMC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANMC_BITS bit;; порядок полей определяет расположение данных. */
struct CANMC_BITS bit; struct CANMC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Bit -timing configuration register (CANBTC) bit definitions */ /* eCAN Bit -timing configuration register (CANBTC) bit definitions */
/* Описывает структуру CANBTC_BITS; порядок полей определяет расположение данных. */
struct CANBTC_BITS { // bits description struct CANBTC_BITS { // bits description
/* Битовое поле TSEG2REG, ширина 3 бит; данные TSEG2REG. */
Uint16 TSEG2REG:3; // 2:0 TSEG2 register value Uint16 TSEG2REG:3; // 2:0 TSEG2 register value
/* Битовое поле TSEG1REG, ширина 4 бит; данные TSEG1REG. */
Uint16 TSEG1REG:4; // 6:3 TSEG1 register value Uint16 TSEG1REG:4; // 6:3 TSEG1 register value
/* Битовое поле SAM, ширина 1 бит; данные SAM. */
Uint16 SAM:1; // 7 Sample-point setting Uint16 SAM:1; // 7 Sample-point setting
/* Битовое поле SJWREG, ширина 2 бит; данные SJWREG. */
Uint16 SJWREG:2; // 9:8 Synchroniztion Jump Width register value Uint16 SJWREG:2; // 9:8 Synchroniztion Jump Width register value
/* Битовое поле rsvd1, ширина 6 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:6; // 15:10 reserved Uint16 rsvd1:6; // 15:10 reserved
/* Битовое поле BRPREG, ширина 8 бит; данные BRPREG. */
Uint16 BRPREG:8; // 23:16 Baudrate prescaler register value Uint16 BRPREG:8; // 23:16 Baudrate prescaler register value
/* Битовое поле rsvd2, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:8; // 31:24 reserved Uint16 rsvd2:8; // 31:24 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANBTC_REG в одной области памяти. */
union CANBTC_REG { union CANBTC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANBTC_BITS bit;; порядок полей определяет расположение данных. */
struct CANBTC_BITS bit; struct CANBTC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Error & Status register (CANES) bit definitions */ /* eCAN Error & Status register (CANES) bit definitions */
/* Описывает структуру CANES_BITS; порядок полей определяет расположение данных. */
struct CANES_BITS { // bits description struct CANES_BITS { // bits description
/* Битовое поле TM, ширина 1 бит; данные TM. */
Uint16 TM:1; // 0 Transmit Mode Uint16 TM:1; // 0 Transmit Mode
/* Битовое поле RM, ширина 1 бит; данные RM. */
Uint16 RM:1; // 1 Receive Mode Uint16 RM:1; // 1 Receive Mode
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 2 reserved Uint16 rsvd1:1; // 2 reserved
/* Битовое поле PDA, ширина 1 бит; данные PDA. */
Uint16 PDA:1; // 3 Power-down acknowledge Uint16 PDA:1; // 3 Power-down acknowledge
/* Битовое поле CCE, ширина 1 бит; данные CCE. */
Uint16 CCE:1; // 4 Change Configuration Enable Uint16 CCE:1; // 4 Change Configuration Enable
/* Битовое поле SMA, ширина 1 бит; данные SMA. */
Uint16 SMA:1; // 5 Suspend Mode Acknowledge Uint16 SMA:1; // 5 Suspend Mode Acknowledge
/* Битовое поле rsvd2, ширина 10 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:10; // 15:6 reserved Uint16 rsvd2:10; // 15:6 reserved
/* Битовое поле EW, ширина 1 бит; данные EW. */
Uint16 EW:1; // 16 Warning status Uint16 EW:1; // 16 Warning status
/* Битовое поле EP, ширина 1 бит; данные EP. */
Uint16 EP:1; // 17 Error Passive status Uint16 EP:1; // 17 Error Passive status
/* Битовое поле BO, ширина 1 бит; данные BO. */
Uint16 BO:1; // 18 Bus-off status Uint16 BO:1; // 18 Bus-off status
/* Битовое поле ACKE, ширина 1 бит; данные ACKE. */
Uint16 ACKE:1; // 19 Acknowledge error Uint16 ACKE:1; // 19 Acknowledge error
/* Битовое поле SE, ширина 1 бит; данные SE. */
Uint16 SE:1; // 20 Stuff error Uint16 SE:1; // 20 Stuff error
/* Битовое поле CRCE, ширина 1 бит; данные CRCE. */
Uint16 CRCE:1; // 21 CRC error Uint16 CRCE:1; // 21 CRC error
/* Битовое поле SA1, ширина 1 бит; данные SA1. */
Uint16 SA1:1; // 22 Stuck at Dominant error Uint16 SA1:1; // 22 Stuck at Dominant error
/* Битовое поле BE, ширина 1 бит; данные BE. */
Uint16 BE:1; // 23 Bit error Uint16 BE:1; // 23 Bit error
/* Битовое поле FE, ширина 1 бит; данные FE. */
Uint16 FE:1; // 24 Framing error Uint16 FE:1; // 24 Framing error
/* Битовое поле rsvd3, ширина 7 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:7; // 31:25 reserved Uint16 rsvd3:7; // 31:25 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANES_REG в одной области памяти. */
union CANES_REG { union CANES_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANES_BITS bit;; порядок полей определяет расположение данных. */
struct CANES_BITS bit; struct CANES_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Transmit Error Counter register (CANTEC) bit definitions */ /* eCAN Transmit Error Counter register (CANTEC) bit definitions */
/* Описывает структуру CANTEC_BITS; порядок полей определяет расположение данных. */
struct CANTEC_BITS { // bits description struct CANTEC_BITS { // bits description
/* Битовое поле TEC, ширина 8 бит; данные TEC. */
Uint16 TEC:8; // 7:0 TEC Uint16 TEC:8; // 7:0 TEC
/* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved Uint16 rsvd1:8; // 15:8 reserved
/* Битовое поле rsvd2, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:16; // 31:16 reserved Uint16 rsvd2:16; // 31:16 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANTEC_REG в одной области памяти. */
union CANTEC_REG { union CANTEC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANTEC_BITS bit;; порядок полей определяет расположение данных. */
struct CANTEC_BITS bit; struct CANTEC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Receive Error Counter register (CANREC) bit definitions */ /* eCAN Receive Error Counter register (CANREC) bit definitions */
/* Описывает структуру CANREC_BITS; порядок полей определяет расположение данных. */
struct CANREC_BITS { // bits description struct CANREC_BITS { // bits description
/* Битовое поле REC, ширина 8 бит; данные REC. */
Uint16 REC:8; // 7:0 REC Uint16 REC:8; // 7:0 REC
/* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved Uint16 rsvd1:8; // 15:8 reserved
/* Битовое поле rsvd2, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:16; // 31:16 reserved Uint16 rsvd2:16; // 31:16 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANREC_REG в одной области памяти. */
union CANREC_REG { union CANREC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANREC_BITS bit;; порядок полей определяет расположение данных. */
struct CANREC_BITS bit; struct CANREC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Global Interrupt Flag 0 (CANGIF0) bit definitions */ /* eCAN Global Interrupt Flag 0 (CANGIF0) bit definitions */
/* Описывает структуру CANGIF0_BITS; порядок полей определяет расположение данных. */
struct CANGIF0_BITS { // bits description struct CANGIF0_BITS { // bits description
/* Битовое поле MIV0, ширина 5 бит; данные MIV0. */
Uint16 MIV0:5; // 4:0 Mailbox Interrupt Vector Uint16 MIV0:5; // 4:0 Mailbox Interrupt Vector
/* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 7:5 reserved Uint16 rsvd1:3; // 7:5 reserved
/* Битовое поле WLIF0, ширина 1 бит; данные WLIF0. */
Uint16 WLIF0:1; // 8 Warning level interrupt flag Uint16 WLIF0:1; // 8 Warning level interrupt flag
/* Битовое поле EPIF0, ширина 1 бит; данные EPIF0. */
Uint16 EPIF0:1; // 9 Error-passive interrupt flag Uint16 EPIF0:1; // 9 Error-passive interrupt flag
/* Битовое поле BOIF0, ширина 1 бит; данные BOIF0. */
Uint16 BOIF0:1; // 10 Bus-off interrupt flag Uint16 BOIF0:1; // 10 Bus-off interrupt flag
/* Битовое поле RMLIF0, ширина 1 бит; данные RMLIF0. */
Uint16 RMLIF0:1; // 11 Received message lost interrupt flag Uint16 RMLIF0:1; // 11 Received message lost interrupt flag
/* Битовое поле WUIF0, ширина 1 бит; данные WUIF0. */
Uint16 WUIF0:1; // 12 Wakeup interrupt flag Uint16 WUIF0:1; // 12 Wakeup interrupt flag
/* Битовое поле WDIF0, ширина 1 бит; данные WDIF0. */
Uint16 WDIF0:1; // 13 Write denied interrupt flag Uint16 WDIF0:1; // 13 Write denied interrupt flag
/* Битовое поле AAIF0, ширина 1 бит; данные AAIF0. */
Uint16 AAIF0:1; // 14 Abort Ack interrupt flag Uint16 AAIF0:1; // 14 Abort Ack interrupt flag
/* Битовое поле GMIF0, ширина 1 бит; данные GMIF0. */
Uint16 GMIF0:1; // 15 Global MBX interrupt flag Uint16 GMIF0:1; // 15 Global MBX interrupt flag
/* Битовое поле TCOF0, ширина 1 бит; данные TCOF0. */
Uint16 TCOF0:1; // 16 TSC Overflow flag Uint16 TCOF0:1; // 16 TSC Overflow flag
/* Битовое поле MTOF0, ширина 1 бит; данные MTOF0. */
Uint16 MTOF0:1; // 17 Mailbox Timeout flag Uint16 MTOF0:1; // 17 Mailbox Timeout flag
/* Битовое поле rsvd2, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:14; // 31:18 reserved Uint16 rsvd2:14; // 31:18 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANGIF0_REG в одной области памяти. */
union CANGIF0_REG { union CANGIF0_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANGIF0_BITS bit;; порядок полей определяет расположение данных. */
struct CANGIF0_BITS bit; struct CANGIF0_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Global Interrupt Mask register (CANGIM) bit definitions */ /* eCAN Global Interrupt Mask register (CANGIM) bit definitions */
/* Описывает структуру CANGIM_BITS; порядок полей определяет расположение данных. */
struct CANGIM_BITS { // bits description struct CANGIM_BITS { // bits description
/* Битовое поле I0EN, ширина 1 бит; данные I0EN. */
Uint16 I0EN:1; // 0 Interrupt 0 enable Uint16 I0EN:1; // 0 Interrupt 0 enable
/* Битовое поле I1EN, ширина 1 бит; данные I1EN. */
Uint16 I1EN:1; // 1 Interrupt 1 enable Uint16 I1EN:1; // 1 Interrupt 1 enable
/* Битовое поле GIL, ширина 1 бит; данные GIL. */
Uint16 GIL:1; // 2 Global Interrupt Level Uint16 GIL:1; // 2 Global Interrupt Level
/* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 7:3 reserved Uint16 rsvd1:5; // 7:3 reserved
/* Битовое поле WLIM, ширина 1 бит; данные WLIM. */
Uint16 WLIM:1; // 8 Warning level interrupt mask Uint16 WLIM:1; // 8 Warning level interrupt mask
/* Битовое поле EPIM, ширина 1 бит; данные EPIM. */
Uint16 EPIM:1; // 9 Error-passive interrupt mask Uint16 EPIM:1; // 9 Error-passive interrupt mask
/* Битовое поле BOIM, ширина 1 бит; данные BOIM. */
Uint16 BOIM:1; // 10 Bus-off interrupt mask Uint16 BOIM:1; // 10 Bus-off interrupt mask
/* Битовое поле RMLIM, ширина 1 бит; данные RMLIM. */
Uint16 RMLIM:1; // 11 Received message lost interrupt mask Uint16 RMLIM:1; // 11 Received message lost interrupt mask
/* Битовое поле WUIM, ширина 1 бит; данные WUIM. */
Uint16 WUIM:1; // 12 Wakeup interrupt mask Uint16 WUIM:1; // 12 Wakeup interrupt mask
/* Битовое поле WDIM, ширина 1 бит; данные WDIM. */
Uint16 WDIM:1; // 13 Write denied interrupt mask Uint16 WDIM:1; // 13 Write denied interrupt mask
/* Битовое поле AAIM, ширина 1 бит; данные AAIM. */
Uint16 AAIM:1; // 14 Abort Ack interrupt mask Uint16 AAIM:1; // 14 Abort Ack interrupt mask
/* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 15 reserved Uint16 rsvd2:1; // 15 reserved
/* Битовое поле TCOM, ширина 1 бит; данные TCOM. */
Uint16 TCOM:1; // 16 TSC overflow interrupt mask Uint16 TCOM:1; // 16 TSC overflow interrupt mask
/* Битовое поле MTOM, ширина 1 бит; данные MTOM. */
Uint16 MTOM:1; // 17 MBX Timeout interrupt mask Uint16 MTOM:1; // 17 MBX Timeout interrupt mask
/* Битовое поле rsvd3, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:14; // 31:18 reserved Uint16 rsvd3:14; // 31:18 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANGIM_REG в одной области памяти. */
union CANGIM_REG { union CANGIM_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANGIM_BITS bit;; порядок полей определяет расположение данных. */
struct CANGIM_BITS bit; struct CANGIM_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Global Interrupt Flag 1 (eCANGIF1) bit definitions */ /* eCAN Global Interrupt Flag 1 (eCANGIF1) bit definitions */
/* Описывает структуру CANGIF1_BITS; порядок полей определяет расположение данных. */
struct CANGIF1_BITS { // bits description struct CANGIF1_BITS { // bits description
/* Битовое поле MIV1, ширина 5 бит; данные MIV1. */
Uint16 MIV1:5; // 4:0 Mailbox Interrupt Vector Uint16 MIV1:5; // 4:0 Mailbox Interrupt Vector
/* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 7:5 reserved Uint16 rsvd1:3; // 7:5 reserved
/* Битовое поле WLIF1, ширина 1 бит; данные WLIF1. */
Uint16 WLIF1:1; // 8 Warning level interrupt flag Uint16 WLIF1:1; // 8 Warning level interrupt flag
/* Битовое поле EPIF1, ширина 1 бит; данные EPIF1. */
Uint16 EPIF1:1; // 9 Error-passive interrupt flag Uint16 EPIF1:1; // 9 Error-passive interrupt flag
/* Битовое поле BOIF1, ширина 1 бит; данные BOIF1. */
Uint16 BOIF1:1; // 10 Bus-off interrupt flag Uint16 BOIF1:1; // 10 Bus-off interrupt flag
/* Битовое поле RMLIF1, ширина 1 бит; данные RMLIF1. */
Uint16 RMLIF1:1; // 11 Received message lost interrupt flag Uint16 RMLIF1:1; // 11 Received message lost interrupt flag
/* Битовое поле WUIF1, ширина 1 бит; данные WUIF1. */
Uint16 WUIF1:1; // 12 Wakeup interrupt flag Uint16 WUIF1:1; // 12 Wakeup interrupt flag
/* Битовое поле WDIF1, ширина 1 бит; данные WDIF1. */
Uint16 WDIF1:1; // 13 Write denied interrupt flag Uint16 WDIF1:1; // 13 Write denied interrupt flag
/* Битовое поле AAIF1, ширина 1 бит; данные AAIF1. */
Uint16 AAIF1:1; // 14 Abort Ack interrupt flag Uint16 AAIF1:1; // 14 Abort Ack interrupt flag
/* Битовое поле GMIF1, ширина 1 бит; данные GMIF1. */
Uint16 GMIF1:1; // 15 Global MBX interrupt flag Uint16 GMIF1:1; // 15 Global MBX interrupt flag
/* Битовое поле TCOF1, ширина 1 бит; данные TCOF1. */
Uint16 TCOF1:1; // 16 TSC Overflow flag Uint16 TCOF1:1; // 16 TSC Overflow flag
/* Битовое поле MTOF1, ширина 1 бит; данные MTOF1. */
Uint16 MTOF1:1; // 17 Mailbox Timeout flag Uint16 MTOF1:1; // 17 Mailbox Timeout flag
/* Битовое поле rsvd2, ширина 14 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:14; // 31:18 reserved Uint16 rsvd2:14; // 31:18 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANGIF1_REG в одной области памяти. */
union CANGIF1_REG { union CANGIF1_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANGIF1_BITS bit;; порядок полей определяет расположение данных. */
struct CANGIF1_BITS bit; struct CANGIF1_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Mailbox Interrupt Mask register (CANMIM) bit definitions */ /* eCAN Mailbox Interrupt Mask register (CANMIM) bit definitions */
/* Описывает структуру CANMIM_BITS; порядок полей определяет расположение данных. */
struct CANMIM_BITS { // bit description struct CANMIM_BITS { // bit description
/* Битовое поле MIM0, ширина 1 бит; данные MIM0. */
Uint16 MIM0:1; // 0 MIM for Mailbox 0 Uint16 MIM0:1; // 0 MIM for Mailbox 0
/* Битовое поле MIM1, ширина 1 бит; данные MIM1. */
Uint16 MIM1:1; // 1 MIM for Mailbox 1 Uint16 MIM1:1; // 1 MIM for Mailbox 1
/* Битовое поле MIM2, ширина 1 бит; данные MIM2. */
Uint16 MIM2:1; // 2 MIM for Mailbox 2 Uint16 MIM2:1; // 2 MIM for Mailbox 2
/* Битовое поле MIM3, ширина 1 бит; данные MIM3. */
Uint16 MIM3:1; // 3 MIM for Mailbox 3 Uint16 MIM3:1; // 3 MIM for Mailbox 3
/* Битовое поле MIM4, ширина 1 бит; данные MIM4. */
Uint16 MIM4:1; // 4 MIM for Mailbox 4 Uint16 MIM4:1; // 4 MIM for Mailbox 4
/* Битовое поле MIM5, ширина 1 бит; данные MIM5. */
Uint16 MIM5:1; // 5 MIM for Mailbox 5 Uint16 MIM5:1; // 5 MIM for Mailbox 5
/* Битовое поле MIM6, ширина 1 бит; данные MIM6. */
Uint16 MIM6:1; // 6 MIM for Mailbox 6 Uint16 MIM6:1; // 6 MIM for Mailbox 6
/* Битовое поле MIM7, ширина 1 бит; данные MIM7. */
Uint16 MIM7:1; // 7 MIM for Mailbox 7 Uint16 MIM7:1; // 7 MIM for Mailbox 7
/* Битовое поле MIM8, ширина 1 бит; данные MIM8. */
Uint16 MIM8:1; // 8 MIM for Mailbox 8 Uint16 MIM8:1; // 8 MIM for Mailbox 8
/* Битовое поле MIM9, ширина 1 бит; данные MIM9. */
Uint16 MIM9:1; // 9 MIM for Mailbox 9 Uint16 MIM9:1; // 9 MIM for Mailbox 9
/* Битовое поле MIM10, ширина 1 бит; данные MIM10. */
Uint16 MIM10:1; // 10 MIM for Mailbox 10 Uint16 MIM10:1; // 10 MIM for Mailbox 10
/* Битовое поле MIM11, ширина 1 бит; данные MIM11. */
Uint16 MIM11:1; // 11 MIM for Mailbox 11 Uint16 MIM11:1; // 11 MIM for Mailbox 11
/* Битовое поле MIM12, ширина 1 бит; данные MIM12. */
Uint16 MIM12:1; // 12 MIM for Mailbox 12 Uint16 MIM12:1; // 12 MIM for Mailbox 12
/* Битовое поле MIM13, ширина 1 бит; данные MIM13. */
Uint16 MIM13:1; // 13 MIM for Mailbox 13 Uint16 MIM13:1; // 13 MIM for Mailbox 13
/* Битовое поле MIM14, ширина 1 бит; данные MIM14. */
Uint16 MIM14:1; // 14 MIM for Mailbox 14 Uint16 MIM14:1; // 14 MIM for Mailbox 14
/* Битовое поле MIM15, ширина 1 бит; данные MIM15. */
Uint16 MIM15:1; // 15 MIM for Mailbox 15 Uint16 MIM15:1; // 15 MIM for Mailbox 15
/* Битовое поле MIM16, ширина 1 бит; данные MIM16. */
Uint16 MIM16:1; // 16 MIM for Mailbox 16 Uint16 MIM16:1; // 16 MIM for Mailbox 16
/* Битовое поле MIM17, ширина 1 бит; данные MIM17. */
Uint16 MIM17:1; // 17 MIM for Mailbox 17 Uint16 MIM17:1; // 17 MIM for Mailbox 17
/* Битовое поле MIM18, ширина 1 бит; данные MIM18. */
Uint16 MIM18:1; // 18 MIM for Mailbox 18 Uint16 MIM18:1; // 18 MIM for Mailbox 18
/* Битовое поле MIM19, ширина 1 бит; данные MIM19. */
Uint16 MIM19:1; // 19 MIM for Mailbox 19 Uint16 MIM19:1; // 19 MIM for Mailbox 19
/* Битовое поле MIM20, ширина 1 бит; данные MIM20. */
Uint16 MIM20:1; // 20 MIM for Mailbox 20 Uint16 MIM20:1; // 20 MIM for Mailbox 20
/* Битовое поле MIM21, ширина 1 бит; данные MIM21. */
Uint16 MIM21:1; // 21 MIM for Mailbox 21 Uint16 MIM21:1; // 21 MIM for Mailbox 21
/* Битовое поле MIM22, ширина 1 бит; данные MIM22. */
Uint16 MIM22:1; // 22 MIM for Mailbox 22 Uint16 MIM22:1; // 22 MIM for Mailbox 22
/* Битовое поле MIM23, ширина 1 бит; данные MIM23. */
Uint16 MIM23:1; // 23 MIM for Mailbox 23 Uint16 MIM23:1; // 23 MIM for Mailbox 23
/* Битовое поле MIM24, ширина 1 бит; данные MIM24. */
Uint16 MIM24:1; // 24 MIM for Mailbox 24 Uint16 MIM24:1; // 24 MIM for Mailbox 24
/* Битовое поле MIM25, ширина 1 бит; данные MIM25. */
Uint16 MIM25:1; // 25 MIM for Mailbox 25 Uint16 MIM25:1; // 25 MIM for Mailbox 25
/* Битовое поле MIM26, ширина 1 бит; данные MIM26. */
Uint16 MIM26:1; // 26 MIM for Mailbox 26 Uint16 MIM26:1; // 26 MIM for Mailbox 26
/* Битовое поле MIM27, ширина 1 бит; данные MIM27. */
Uint16 MIM27:1; // 27 MIM for Mailbox 27 Uint16 MIM27:1; // 27 MIM for Mailbox 27
/* Битовое поле MIM28, ширина 1 бит; данные MIM28. */
Uint16 MIM28:1; // 28 MIM for Mailbox 28 Uint16 MIM28:1; // 28 MIM for Mailbox 28
/* Битовое поле MIM29, ширина 1 бит; данные MIM29. */
Uint16 MIM29:1; // 29 MIM for Mailbox 29 Uint16 MIM29:1; // 29 MIM for Mailbox 29
/* Битовое поле MIM30, ширина 1 бит; данные MIM30. */
Uint16 MIM30:1; // 30 MIM for Mailbox 30 Uint16 MIM30:1; // 30 MIM for Mailbox 30
/* Битовое поле MIM31, ширина 1 бит; данные MIM31. */
Uint16 MIM31:1; // 31 MIM for Mailbox 31 Uint16 MIM31:1; // 31 MIM for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANMIM_REG в одной области памяти. */
union CANMIM_REG { union CANMIM_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANMIM_BITS bit;; порядок полей определяет расположение данных. */
struct CANMIM_BITS bit; struct CANMIM_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Mailbox Interrupt Level register (CANMIL) bit definitions */ /* eCAN Mailbox Interrupt Level register (CANMIL) bit definitions */
/* Описывает структуру CANMIL_BITS; порядок полей определяет расположение данных. */
struct CANMIL_BITS { // bit description struct CANMIL_BITS { // bit description
/* Битовое поле MIL0, ширина 1 бит; данные MIL0. */
Uint16 MIL0:1; // 0 0 -> Int 9.5 1 -> Int 9.6 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Uint16 MIL31:1; // 31 0 -> Int 9.5 1 -> Int 9.6
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANMIL_REG в одной области памяти. */
union CANMIL_REG { union CANMIL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANMIL_BITS bit;; порядок полей определяет расположение данных. */
struct CANMIL_BITS bit; struct CANMIL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Overwrite Protection Control register (CANOPC) bit definitions */ /* eCAN Overwrite Protection Control register (CANOPC) bit definitions */
/* Описывает структуру CANOPC_BITS; порядок полей определяет расположение данных. */
struct CANOPC_BITS { // bit description struct CANOPC_BITS { // bit description
/* Битовое поле OPC0, ширина 1 бит; данные OPC0. */
Uint16 OPC0:1; // 0 OPC for Mailbox 0 Uint16 OPC0:1; // 0 OPC for Mailbox 0
/* Битовое поле OPC1, ширина 1 бит; данные OPC1. */
Uint16 OPC1:1; // 1 OPC for Mailbox 1 Uint16 OPC1:1; // 1 OPC for Mailbox 1
/* Битовое поле OPC2, ширина 1 бит; данные OPC2. */
Uint16 OPC2:1; // 2 OPC for Mailbox 2 Uint16 OPC2:1; // 2 OPC for Mailbox 2
/* Битовое поле OPC3, ширина 1 бит; данные OPC3. */
Uint16 OPC3:1; // 3 OPC for Mailbox 3 Uint16 OPC3:1; // 3 OPC for Mailbox 3
/* Битовое поле OPC4, ширина 1 бит; данные OPC4. */
Uint16 OPC4:1; // 4 OPC for Mailbox 4 Uint16 OPC4:1; // 4 OPC for Mailbox 4
/* Битовое поле OPC5, ширина 1 бит; данные OPC5. */
Uint16 OPC5:1; // 5 OPC for Mailbox 5 Uint16 OPC5:1; // 5 OPC for Mailbox 5
/* Битовое поле OPC6, ширина 1 бит; данные OPC6. */
Uint16 OPC6:1; // 6 OPC for Mailbox 6 Uint16 OPC6:1; // 6 OPC for Mailbox 6
/* Битовое поле OPC7, ширина 1 бит; данные OPC7. */
Uint16 OPC7:1; // 7 OPC for Mailbox 7 Uint16 OPC7:1; // 7 OPC for Mailbox 7
/* Битовое поле OPC8, ширина 1 бит; данные OPC8. */
Uint16 OPC8:1; // 8 OPC for Mailbox 8 Uint16 OPC8:1; // 8 OPC for Mailbox 8
/* Битовое поле OPC9, ширина 1 бит; данные OPC9. */
Uint16 OPC9:1; // 9 OPC for Mailbox 9 Uint16 OPC9:1; // 9 OPC for Mailbox 9
/* Битовое поле OPC10, ширина 1 бит; данные OPC10. */
Uint16 OPC10:1; // 10 OPC for Mailbox 10 Uint16 OPC10:1; // 10 OPC for Mailbox 10
/* Битовое поле OPC11, ширина 1 бит; данные OPC11. */
Uint16 OPC11:1; // 11 OPC for Mailbox 11 Uint16 OPC11:1; // 11 OPC for Mailbox 11
/* Битовое поле OPC12, ширина 1 бит; данные OPC12. */
Uint16 OPC12:1; // 12 OPC for Mailbox 12 Uint16 OPC12:1; // 12 OPC for Mailbox 12
/* Битовое поле OPC13, ширина 1 бит; данные OPC13. */
Uint16 OPC13:1; // 13 OPC for Mailbox 13 Uint16 OPC13:1; // 13 OPC for Mailbox 13
/* Битовое поле OPC14, ширина 1 бит; данные OPC14. */
Uint16 OPC14:1; // 14 OPC for Mailbox 14 Uint16 OPC14:1; // 14 OPC for Mailbox 14
/* Битовое поле OPC15, ширина 1 бит; данные OPC15. */
Uint16 OPC15:1; // 15 OPC for Mailbox 15 Uint16 OPC15:1; // 15 OPC for Mailbox 15
/* Битовое поле OPC16, ширина 1 бит; данные OPC16. */
Uint16 OPC16:1; // 16 OPC for Mailbox 16 Uint16 OPC16:1; // 16 OPC for Mailbox 16
/* Битовое поле OPC17, ширина 1 бит; данные OPC17. */
Uint16 OPC17:1; // 17 OPC for Mailbox 17 Uint16 OPC17:1; // 17 OPC for Mailbox 17
/* Битовое поле OPC18, ширина 1 бит; данные OPC18. */
Uint16 OPC18:1; // 18 OPC for Mailbox 18 Uint16 OPC18:1; // 18 OPC for Mailbox 18
/* Битовое поле OPC19, ширина 1 бит; данные OPC19. */
Uint16 OPC19:1; // 19 OPC for Mailbox 19 Uint16 OPC19:1; // 19 OPC for Mailbox 19
/* Битовое поле OPC20, ширина 1 бит; данные OPC20. */
Uint16 OPC20:1; // 20 OPC for Mailbox 20 Uint16 OPC20:1; // 20 OPC for Mailbox 20
/* Битовое поле OPC21, ширина 1 бит; данные OPC21. */
Uint16 OPC21:1; // 21 OPC for Mailbox 21 Uint16 OPC21:1; // 21 OPC for Mailbox 21
/* Битовое поле OPC22, ширина 1 бит; данные OPC22. */
Uint16 OPC22:1; // 22 OPC for Mailbox 22 Uint16 OPC22:1; // 22 OPC for Mailbox 22
/* Битовое поле OPC23, ширина 1 бит; данные OPC23. */
Uint16 OPC23:1; // 23 OPC for Mailbox 23 Uint16 OPC23:1; // 23 OPC for Mailbox 23
/* Битовое поле OPC24, ширина 1 бит; данные OPC24. */
Uint16 OPC24:1; // 24 OPC for Mailbox 24 Uint16 OPC24:1; // 24 OPC for Mailbox 24
/* Битовое поле OPC25, ширина 1 бит; данные OPC25. */
Uint16 OPC25:1; // 25 OPC for Mailbox 25 Uint16 OPC25:1; // 25 OPC for Mailbox 25
/* Битовое поле OPC26, ширина 1 бит; данные OPC26. */
Uint16 OPC26:1; // 26 OPC for Mailbox 26 Uint16 OPC26:1; // 26 OPC for Mailbox 26
/* Битовое поле OPC27, ширина 1 бит; данные OPC27. */
Uint16 OPC27:1; // 27 OPC for Mailbox 27 Uint16 OPC27:1; // 27 OPC for Mailbox 27
/* Битовое поле OPC28, ширина 1 бит; данные OPC28. */
Uint16 OPC28:1; // 28 OPC for Mailbox 28 Uint16 OPC28:1; // 28 OPC for Mailbox 28
/* Битовое поле OPC29, ширина 1 бит; данные OPC29. */
Uint16 OPC29:1; // 29 OPC for Mailbox 29 Uint16 OPC29:1; // 29 OPC for Mailbox 29
/* Битовое поле OPC30, ширина 1 бит; данные OPC30. */
Uint16 OPC30:1; // 30 OPC for Mailbox 30 Uint16 OPC30:1; // 30 OPC for Mailbox 30
/* Битовое поле OPC31, ширина 1 бит; данные OPC31. */
Uint16 OPC31:1; // 31 OPC for Mailbox 31 Uint16 OPC31:1; // 31 OPC for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANOPC_REG в одной области памяти. */
union CANOPC_REG { union CANOPC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANOPC_BITS bit;; порядок полей определяет расположение данных. */
struct CANOPC_BITS bit; struct CANOPC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN TX I/O Control Register (CANTIOC) bit definitions */ /* eCAN TX I/O Control Register (CANTIOC) bit definitions */
/* Описывает структуру CANTIOC_BITS; порядок полей определяет расположение данных. */
struct CANTIOC_BITS { // bits description struct CANTIOC_BITS { // bits description
/* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 2:0 reserved Uint16 rsvd1:3; // 2:0 reserved
/* Битовое поле TXFUNC, ширина 1 бит; данные TXFUNC. */
Uint16 TXFUNC:1; // 3 TXFUNC Uint16 TXFUNC:1; // 3 TXFUNC
/* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved Uint16 rsvd2:12; // 15:4 reserved
/* Битовое поле rsvd3, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:16; // 31:16 reserved Uint16 rsvd3:16; // 31:16 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANTIOC_REG в одной области памяти. */
union CANTIOC_REG { union CANTIOC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANTIOC_BITS bit;; порядок полей определяет расположение данных. */
struct CANTIOC_BITS bit; struct CANTIOC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN RX I/O Control Register (CANRIOC) bit definitions */ /* eCAN RX I/O Control Register (CANRIOC) bit definitions */
/* Описывает структуру CANRIOC_BITS; порядок полей определяет расположение данных. */
struct CANRIOC_BITS { // bits description struct CANRIOC_BITS { // bits description
/* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 2:0 reserved Uint16 rsvd1:3; // 2:0 reserved
/* Битовое поле RXFUNC, ширина 1 бит; данные RXFUNC. */
Uint16 RXFUNC:1; // 3 RXFUNC Uint16 RXFUNC:1; // 3 RXFUNC
/* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved Uint16 rsvd2:12; // 15:4 reserved
/* Битовое поле rsvd3, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:16; // 31:16 reserved Uint16 rsvd3:16; // 31:16 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANRIOC_REG в одной области памяти. */
union CANRIOC_REG { union CANRIOC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANRIOC_BITS bit;; порядок полей определяет расположение данных. */
struct CANRIOC_BITS bit; struct CANRIOC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Time-out Control register (CANTOC) bit definitions */ /* eCAN Time-out Control register (CANTOC) bit definitions */
/* Описывает структуру CANTOC_BITS; порядок полей определяет расположение данных. */
struct CANTOC_BITS { // bit description struct CANTOC_BITS { // bit description
/* Битовое поле TOC0, ширина 1 бит; данные TOC0. */
Uint16 TOC0:1; // 0 TOC for Mailbox 0 Uint16 TOC0:1; // 0 TOC for Mailbox 0
/* Битовое поле TOC1, ширина 1 бит; данные TOC1. */
Uint16 TOC1:1; // 1 TOC for Mailbox 1 Uint16 TOC1:1; // 1 TOC for Mailbox 1
/* Битовое поле TOC2, ширина 1 бит; данные TOC2. */
Uint16 TOC2:1; // 2 TOC for Mailbox 2 Uint16 TOC2:1; // 2 TOC for Mailbox 2
/* Битовое поле TOC3, ширина 1 бит; данные TOC3. */
Uint16 TOC3:1; // 3 TOC for Mailbox 3 Uint16 TOC3:1; // 3 TOC for Mailbox 3
/* Битовое поле TOC4, ширина 1 бит; данные TOC4. */
Uint16 TOC4:1; // 4 TOC for Mailbox 4 Uint16 TOC4:1; // 4 TOC for Mailbox 4
/* Битовое поле TOC5, ширина 1 бит; данные TOC5. */
Uint16 TOC5:1; // 5 TOC for Mailbox 5 Uint16 TOC5:1; // 5 TOC for Mailbox 5
/* Битовое поле TOC6, ширина 1 бит; данные TOC6. */
Uint16 TOC6:1; // 6 TOC for Mailbox 6 Uint16 TOC6:1; // 6 TOC for Mailbox 6
/* Битовое поле TOC7, ширина 1 бит; данные TOC7. */
Uint16 TOC7:1; // 7 TOC for Mailbox 7 Uint16 TOC7:1; // 7 TOC for Mailbox 7
/* Битовое поле TOC8, ширина 1 бит; данные TOC8. */
Uint16 TOC8:1; // 8 TOC for Mailbox 8 Uint16 TOC8:1; // 8 TOC for Mailbox 8
/* Битовое поле TOC9, ширина 1 бит; данные TOC9. */
Uint16 TOC9:1; // 9 TOC for Mailbox 9 Uint16 TOC9:1; // 9 TOC for Mailbox 9
/* Битовое поле TOC10, ширина 1 бит; данные TOC10. */
Uint16 TOC10:1; // 10 TOC for Mailbox 10 Uint16 TOC10:1; // 10 TOC for Mailbox 10
/* Битовое поле TOC11, ширина 1 бит; данные TOC11. */
Uint16 TOC11:1; // 11 TOC for Mailbox 11 Uint16 TOC11:1; // 11 TOC for Mailbox 11
/* Битовое поле TOC12, ширина 1 бит; данные TOC12. */
Uint16 TOC12:1; // 12 TOC for Mailbox 12 Uint16 TOC12:1; // 12 TOC for Mailbox 12
/* Битовое поле TOC13, ширина 1 бит; данные TOC13. */
Uint16 TOC13:1; // 13 TOC for Mailbox 13 Uint16 TOC13:1; // 13 TOC for Mailbox 13
/* Битовое поле TOC14, ширина 1 бит; данные TOC14. */
Uint16 TOC14:1; // 14 TOC for Mailbox 14 Uint16 TOC14:1; // 14 TOC for Mailbox 14
/* Битовое поле TOC15, ширина 1 бит; данные TOC15. */
Uint16 TOC15:1; // 15 TOC for Mailbox 15 Uint16 TOC15:1; // 15 TOC for Mailbox 15
/* Битовое поле TOC16, ширина 1 бит; данные TOC16. */
Uint16 TOC16:1; // 16 TOC for Mailbox 16 Uint16 TOC16:1; // 16 TOC for Mailbox 16
/* Битовое поле TOC17, ширина 1 бит; данные TOC17. */
Uint16 TOC17:1; // 17 TOC for Mailbox 17 Uint16 TOC17:1; // 17 TOC for Mailbox 17
/* Битовое поле TOC18, ширина 1 бит; данные TOC18. */
Uint16 TOC18:1; // 18 TOC for Mailbox 18 Uint16 TOC18:1; // 18 TOC for Mailbox 18
/* Битовое поле TOC19, ширина 1 бит; данные TOC19. */
Uint16 TOC19:1; // 19 TOC for Mailbox 19 Uint16 TOC19:1; // 19 TOC for Mailbox 19
/* Битовое поле TOC20, ширина 1 бит; данные TOC20. */
Uint16 TOC20:1; // 20 TOC for Mailbox 20 Uint16 TOC20:1; // 20 TOC for Mailbox 20
/* Битовое поле TOC21, ширина 1 бит; данные TOC21. */
Uint16 TOC21:1; // 21 TOC for Mailbox 21 Uint16 TOC21:1; // 21 TOC for Mailbox 21
/* Битовое поле TOC22, ширина 1 бит; данные TOC22. */
Uint16 TOC22:1; // 22 TOC for Mailbox 22 Uint16 TOC22:1; // 22 TOC for Mailbox 22
/* Битовое поле TOC23, ширина 1 бит; данные TOC23. */
Uint16 TOC23:1; // 23 TOC for Mailbox 23 Uint16 TOC23:1; // 23 TOC for Mailbox 23
/* Битовое поле TOC24, ширина 1 бит; данные TOC24. */
Uint16 TOC24:1; // 24 TOC for Mailbox 24 Uint16 TOC24:1; // 24 TOC for Mailbox 24
/* Битовое поле TOC25, ширина 1 бит; данные TOC25. */
Uint16 TOC25:1; // 25 TOC for Mailbox 25 Uint16 TOC25:1; // 25 TOC for Mailbox 25
/* Битовое поле TOC26, ширина 1 бит; данные TOC26. */
Uint16 TOC26:1; // 26 TOC for Mailbox 26 Uint16 TOC26:1; // 26 TOC for Mailbox 26
/* Битовое поле TOC27, ширина 1 бит; данные TOC27. */
Uint16 TOC27:1; // 27 TOC for Mailbox 27 Uint16 TOC27:1; // 27 TOC for Mailbox 27
/* Битовое поле TOC28, ширина 1 бит; данные TOC28. */
Uint16 TOC28:1; // 28 TOC for Mailbox 28 Uint16 TOC28:1; // 28 TOC for Mailbox 28
/* Битовое поле TOC29, ширина 1 бит; данные TOC29. */
Uint16 TOC29:1; // 29 TOC for Mailbox 29 Uint16 TOC29:1; // 29 TOC for Mailbox 29
/* Битовое поле TOC30, ширина 1 бит; данные TOC30. */
Uint16 TOC30:1; // 30 TOC for Mailbox 30 Uint16 TOC30:1; // 30 TOC for Mailbox 30
/* Битовое поле TOC31, ширина 1 бит; данные TOC31. */
Uint16 TOC31:1; // 31 TOC for Mailbox 31 Uint16 TOC31:1; // 31 TOC for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANTOC_REG в одной области памяти. */
union CANTOC_REG { union CANTOC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANTOC_BITS bit;; порядок полей определяет расположение данных. */
struct CANTOC_BITS bit; struct CANTOC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Time-out Status register (CANTOS) bit definitions */ /* eCAN Time-out Status register (CANTOS) bit definitions */
/* Описывает структуру CANTOS_BITS; порядок полей определяет расположение данных. */
struct CANTOS_BITS { // bit description struct CANTOS_BITS { // bit description
/* Битовое поле TOS0, ширина 1 бит; данные TOS0. */
Uint16 TOS0:1; // 0 TOS for Mailbox 0 Uint16 TOS0:1; // 0 TOS for Mailbox 0
/* Битовое поле TOS1, ширина 1 бит; данные TOS1. */
Uint16 TOS1:1; // 1 TOS for Mailbox 1 Uint16 TOS1:1; // 1 TOS for Mailbox 1
/* Битовое поле TOS2, ширина 1 бит; данные TOS2. */
Uint16 TOS2:1; // 2 TOS for Mailbox 2 Uint16 TOS2:1; // 2 TOS for Mailbox 2
/* Битовое поле TOS3, ширина 1 бит; данные TOS3. */
Uint16 TOS3:1; // 3 TOS for Mailbox 3 Uint16 TOS3:1; // 3 TOS for Mailbox 3
/* Битовое поле TOS4, ширина 1 бит; данные TOS4. */
Uint16 TOS4:1; // 4 TOS for Mailbox 4 Uint16 TOS4:1; // 4 TOS for Mailbox 4
/* Битовое поле TOS5, ширина 1 бит; данные TOS5. */
Uint16 TOS5:1; // 5 TOS for Mailbox 5 Uint16 TOS5:1; // 5 TOS for Mailbox 5
/* Битовое поле TOS6, ширина 1 бит; данные TOS6. */
Uint16 TOS6:1; // 6 TOS for Mailbox 6 Uint16 TOS6:1; // 6 TOS for Mailbox 6
/* Битовое поле TOS7, ширина 1 бит; данные TOS7. */
Uint16 TOS7:1; // 7 TOS for Mailbox 7 Uint16 TOS7:1; // 7 TOS for Mailbox 7
/* Битовое поле TOS8, ширина 1 бит; данные TOS8. */
Uint16 TOS8:1; // 8 TOS for Mailbox 8 Uint16 TOS8:1; // 8 TOS for Mailbox 8
/* Битовое поле TOS9, ширина 1 бит; данные TOS9. */
Uint16 TOS9:1; // 9 TOS for Mailbox 9 Uint16 TOS9:1; // 9 TOS for Mailbox 9
/* Битовое поле TOS10, ширина 1 бит; данные TOS10. */
Uint16 TOS10:1; // 10 TOS for Mailbox 10 Uint16 TOS10:1; // 10 TOS for Mailbox 10
/* Битовое поле TOS11, ширина 1 бит; данные TOS11. */
Uint16 TOS11:1; // 11 TOS for Mailbox 11 Uint16 TOS11:1; // 11 TOS for Mailbox 11
/* Битовое поле TOS12, ширина 1 бит; данные TOS12. */
Uint16 TOS12:1; // 12 TOS for Mailbox 12 Uint16 TOS12:1; // 12 TOS for Mailbox 12
/* Битовое поле TOS13, ширина 1 бит; данные TOS13. */
Uint16 TOS13:1; // 13 TOS for Mailbox 13 Uint16 TOS13:1; // 13 TOS for Mailbox 13
/* Битовое поле TOS14, ширина 1 бит; данные TOS14. */
Uint16 TOS14:1; // 14 TOS for Mailbox 14 Uint16 TOS14:1; // 14 TOS for Mailbox 14
/* Битовое поле TOS15, ширина 1 бит; данные TOS15. */
Uint16 TOS15:1; // 15 TOS for Mailbox 15 Uint16 TOS15:1; // 15 TOS for Mailbox 15
/* Битовое поле TOS16, ширина 1 бит; данные TOS16. */
Uint16 TOS16:1; // 16 TOS for Mailbox 16 Uint16 TOS16:1; // 16 TOS for Mailbox 16
/* Битовое поле TOS17, ширина 1 бит; данные TOS17. */
Uint16 TOS17:1; // 17 TOS for Mailbox 17 Uint16 TOS17:1; // 17 TOS for Mailbox 17
/* Битовое поле TOS18, ширина 1 бит; данные TOS18. */
Uint16 TOS18:1; // 18 TOS for Mailbox 18 Uint16 TOS18:1; // 18 TOS for Mailbox 18
/* Битовое поле TOS19, ширина 1 бит; данные TOS19. */
Uint16 TOS19:1; // 19 TOS for Mailbox 19 Uint16 TOS19:1; // 19 TOS for Mailbox 19
/* Битовое поле TOS20, ширина 1 бит; данные TOS20. */
Uint16 TOS20:1; // 20 TOS for Mailbox 20 Uint16 TOS20:1; // 20 TOS for Mailbox 20
/* Битовое поле TOS21, ширина 1 бит; данные TOS21. */
Uint16 TOS21:1; // 21 TOS for Mailbox 21 Uint16 TOS21:1; // 21 TOS for Mailbox 21
/* Битовое поле TOS22, ширина 1 бит; данные TOS22. */
Uint16 TOS22:1; // 22 TOS for Mailbox 22 Uint16 TOS22:1; // 22 TOS for Mailbox 22
/* Битовое поле TOS23, ширина 1 бит; данные TOS23. */
Uint16 TOS23:1; // 23 TOS for Mailbox 23 Uint16 TOS23:1; // 23 TOS for Mailbox 23
/* Битовое поле TOS24, ширина 1 бит; данные TOS24. */
Uint16 TOS24:1; // 24 TOS for Mailbox 24 Uint16 TOS24:1; // 24 TOS for Mailbox 24
/* Битовое поле TOS25, ширина 1 бит; данные TOS25. */
Uint16 TOS25:1; // 25 TOS for Mailbox 25 Uint16 TOS25:1; // 25 TOS for Mailbox 25
/* Битовое поле TOS26, ширина 1 бит; данные TOS26. */
Uint16 TOS26:1; // 26 TOS for Mailbox 26 Uint16 TOS26:1; // 26 TOS for Mailbox 26
/* Битовое поле TOS27, ширина 1 бит; данные TOS27. */
Uint16 TOS27:1; // 27 TOS for Mailbox 27 Uint16 TOS27:1; // 27 TOS for Mailbox 27
/* Битовое поле TOS28, ширина 1 бит; данные TOS28. */
Uint16 TOS28:1; // 28 TOS for Mailbox 28 Uint16 TOS28:1; // 28 TOS for Mailbox 28
/* Битовое поле TOS29, ширина 1 бит; данные TOS29. */
Uint16 TOS29:1; // 29 TOS for Mailbox 29 Uint16 TOS29:1; // 29 TOS for Mailbox 29
/* Битовое поле TOS30, ширина 1 бит; данные TOS30. */
Uint16 TOS30:1; // 30 TOS for Mailbox 30 Uint16 TOS30:1; // 30 TOS for Mailbox 30
/* Битовое поле TOS31, ширина 1 бит; данные TOS31. */
Uint16 TOS31:1; // 31 TOS for Mailbox 31 Uint16 TOS31:1; // 31 TOS for Mailbox 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANTOS_REG в одной области памяти. */
union CANTOS_REG { union CANTOS_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANTOS_BITS bit;; порядок полей определяет расположение данных. */
struct CANTOS_BITS bit; struct CANTOS_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/**************************************/ /**************************************/
/* eCAN Control & Status register file */ /* eCAN Control & Status register file */
/**************************************/ /**************************************/
/* Описывает структуру ECAN_REGS; порядок полей определяет расположение данных. */
struct ECAN_REGS { struct ECAN_REGS {
/* Объединяет несколько представлений CANME_REG CANME; в одной области памяти. */
union CANME_REG CANME; // Mailbox Enable union CANME_REG CANME; // Mailbox Enable
/* Объединяет несколько представлений CANMD_REG CANMD; в одной области памяти. */
union CANMD_REG CANMD; // Mailbox Direction union CANMD_REG CANMD; // Mailbox Direction
/* Объединяет несколько представлений CANTRS_REG CANTRS; в одной области памяти. */
union CANTRS_REG CANTRS; // Transmit Request Set union CANTRS_REG CANTRS; // Transmit Request Set
/* Объединяет несколько представлений CANTRR_REG CANTRR; в одной области памяти. */
union CANTRR_REG CANTRR; // Transmit Request Reset union CANTRR_REG CANTRR; // Transmit Request Reset
/* Объединяет несколько представлений CANTA_REG CANTA; в одной области памяти. */
union CANTA_REG CANTA; // Transmit Acknowledge union CANTA_REG CANTA; // Transmit Acknowledge
/* Объединяет несколько представлений CANAA_REG CANAA; в одной области памяти. */
union CANAA_REG CANAA; // Abort Acknowledge union CANAA_REG CANAA; // Abort Acknowledge
/* Объединяет несколько представлений CANRMP_REG CANRMP; в одной области памяти. */
union CANRMP_REG CANRMP; // Received Message Pending union CANRMP_REG CANRMP; // Received Message Pending
/* Объединяет несколько представлений CANRML_REG CANRML; в одной области памяти. */
union CANRML_REG CANRML; // Received Message Lost union CANRML_REG CANRML; // Received Message Lost
/* Объединяет несколько представлений CANRFP_REG CANRFP; в одной области памяти. */
union CANRFP_REG CANRFP; // Remote Frame Pending union CANRFP_REG CANRFP; // Remote Frame Pending
/* Объединяет несколько представлений CANGAM_REG CANGAM; в одной области памяти. */
union CANGAM_REG CANGAM; // Global Acceptance Mask union CANGAM_REG CANGAM; // Global Acceptance Mask
/* Объединяет несколько представлений CANMC_REG CANMC; в одной области памяти. */
union CANMC_REG CANMC; // Master Control union CANMC_REG CANMC; // Master Control
/* Объединяет несколько представлений CANBTC_REG CANBTC; в одной области памяти. */
union CANBTC_REG CANBTC; // Bit Timing union CANBTC_REG CANBTC; // Bit Timing
/* Объединяет несколько представлений CANES_REG CANES; в одной области памяти. */
union CANES_REG CANES; // Error Status union CANES_REG CANES; // Error Status
/* Объединяет несколько представлений CANTEC_REG CANTEC; в одной области памяти. */
union CANTEC_REG CANTEC; // Transmit Error Counter union CANTEC_REG CANTEC; // Transmit Error Counter
/* Объединяет несколько представлений CANREC_REG CANREC; в одной области памяти. */
union CANREC_REG CANREC; // Receive Error Counter union CANREC_REG CANREC; // Receive Error Counter
/* Объединяет несколько представлений CANGIF0_REG CANGIF0; в одной области памяти. */
union CANGIF0_REG CANGIF0; // Global Interrupt Flag 0 union CANGIF0_REG CANGIF0; // Global Interrupt Flag 0
/* Объединяет несколько представлений CANGIM_REG CANGIM; в одной области памяти. */
union CANGIM_REG CANGIM; // Global Interrupt Mask 0 union CANGIM_REG CANGIM; // Global Interrupt Mask 0
/* Объединяет несколько представлений CANGIF1_REG CANGIF1; в одной области памяти. */
union CANGIF1_REG CANGIF1; // Global Interrupt Flag 1 union CANGIF1_REG CANGIF1; // Global Interrupt Flag 1
/* Объединяет несколько представлений CANMIM_REG CANMIM; в одной области памяти. */
union CANMIM_REG CANMIM; // Mailbox Interrupt Mask union CANMIM_REG CANMIM; // Mailbox Interrupt Mask
/* Объединяет несколько представлений CANMIL_REG CANMIL; в одной области памяти. */
union CANMIL_REG CANMIL; // Mailbox Interrupt Level union CANMIL_REG CANMIL; // Mailbox Interrupt Level
/* Объединяет несколько представлений CANOPC_REG CANOPC; в одной области памяти. */
union CANOPC_REG CANOPC; // Overwrite Protection Control union CANOPC_REG CANOPC; // Overwrite Protection Control
/* Объединяет несколько представлений CANTIOC_REG CANTIOC; в одной области памяти. */
union CANTIOC_REG CANTIOC; // TX I/O Control union CANTIOC_REG CANTIOC; // TX I/O Control
/* Объединяет несколько представлений CANRIOC_REG CANRIOC; в одной области памяти. */
union CANRIOC_REG CANRIOC; // RX I/O Control union CANRIOC_REG CANRIOC; // RX I/O Control
/* Объявляет CANTSC — данные CANTSC. */
Uint32 CANTSC; // Time-stamp counter Uint32 CANTSC; // Time-stamp counter
/* Объединяет несколько представлений CANTOC_REG CANTOC; в одной области памяти. */
union CANTOC_REG CANTOC; // Time-out Control union CANTOC_REG CANTOC; // Time-out Control
/* Объединяет несколько представлений CANTOS_REG CANTOS; в одной области памяти. */
union CANTOS_REG CANTOS; // Time-out Status union CANTOS_REG CANTOS; // Time-out Status
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* --------------------------------------------------- */ /* --------------------------------------------------- */
@@ -1609,247 +880,143 @@ struct ECAN_REGS {
/* ----------------------------------------------------*/ /* ----------------------------------------------------*/
/* eCAN Message ID (MSGID) bit definitions */ /* eCAN Message ID (MSGID) bit definitions */
/* Описывает структуру CANMSGID_BITS; порядок полей определяет расположение данных. */
struct CANMSGID_BITS { // bits description struct CANMSGID_BITS { // bits description
/* Битовое поле EXTMSGID_L, ширина 16 бит; данные EXTMSGID_L. */
Uint16 EXTMSGID_L:16; // 0:15 Uint16 EXTMSGID_L:16; // 0:15
/* Битовое поле EXTMSGID_H, ширина 2 бит; данные EXTMSGID_H. */
Uint16 EXTMSGID_H:2; // 16:17 Uint16 EXTMSGID_H:2; // 16:17
/* Битовое поле STDMSGID, ширина 11 бит; данные STDMSGID. */
Uint16 STDMSGID:11; // 18:28 Uint16 STDMSGID:11; // 18:28
/* Битовое поле AAM, ширина 1 бит; данные AAM. */
Uint16 AAM:1; // 29 Uint16 AAM:1; // 29
/* Битовое поле AME, ширина 1 бит; данные AME. */
Uint16 AME:1; // 30 Uint16 AME:1; // 30
/* Битовое поле IDE, ширина 1 бит; данные IDE. */
Uint16 IDE:1; // 31 Uint16 IDE:1; // 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANMSGID_REG в одной области памяти. */
union CANMSGID_REG { union CANMSGID_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANMSGID_BITS bit;; порядок полей определяет расположение данных. */
struct CANMSGID_BITS bit; struct CANMSGID_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Message Control Register (MSGCTRL) bit definitions */ /* eCAN Message Control Register (MSGCTRL) bit definitions */
/* Описывает структуру CANMSGCTRL_BITS; порядок полей определяет расположение данных. */
struct CANMSGCTRL_BITS { // bits description struct CANMSGCTRL_BITS { // bits description
/* Битовое поле DLC, ширина 4 бит; данные DLC. */
Uint16 DLC:4; // 0:3 Uint16 DLC:4; // 0:3
/* Битовое поле RTR, ширина 1 бит; данные RTR. */
Uint16 RTR:1; // 4 Uint16 RTR:1; // 4
/* Битовое поле rsvd1, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:3; // 7:5 reserved Uint16 rsvd1:3; // 7:5 reserved
/* Битовое поле TPL, ширина 5 бит; данные TPL. */
Uint16 TPL:5; // 12:8 Uint16 TPL:5; // 12:8
/* Битовое поле rsvd2, ширина 3 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:3; // 15:13 reserved Uint16 rsvd2:3; // 15:13 reserved
/* Битовое поле rsvd3, ширина 16 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:16; // 31:16 reserved Uint16 rsvd3:16; // 31:16 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANMSGCTRL_REG в одной области памяти. */
union CANMSGCTRL_REG { union CANMSGCTRL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANMSGCTRL_BITS bit;; порядок полей определяет расположение данных. */
struct CANMSGCTRL_BITS bit; struct CANMSGCTRL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Message Data Register low (MDR_L) word definitions */ /* eCAN Message Data Register low (MDR_L) word definitions */
/* Описывает структуру CANMDL_WORDS; порядок полей определяет расположение данных. */
struct CANMDL_WORDS { // bits description struct CANMDL_WORDS { // bits description
/* Битовое поле LOW_WORD, ширина 16 бит; LOW слово. */
Uint16 LOW_WORD:16; // 0:15 Uint16 LOW_WORD:16; // 0:15
/* Битовое поле HI_WORD, ширина 16 бит; HI слово. */
Uint16 HI_WORD:16; // 31:16 Uint16 HI_WORD:16; // 31:16
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Message Data Register low (MDR_L) byte definitions */ /* eCAN Message Data Register low (MDR_L) byte definitions */
/* Описывает структуру CANMDL_BYTES; порядок полей определяет расположение данных. */
struct CANMDL_BYTES { // bits description struct CANMDL_BYTES { // bits description
/* Битовое поле BYTE3, ширина 8 бит; данные BYTE3. */
Uint16 BYTE3:8; // 31:24 Uint16 BYTE3:8; // 31:24
/* Битовое поле BYTE2, ширина 8 бит; данные BYTE2. */
Uint16 BYTE2:8; // 23:16 Uint16 BYTE2:8; // 23:16
/* Битовое поле BYTE1, ширина 8 бит; данные BYTE1. */
Uint16 BYTE1:8; // 15:8 Uint16 BYTE1:8; // 15:8
/* Битовое поле BYTE0, ширина 8 бит; данные BYTE0. */
Uint16 BYTE0:8; // 7:0 Uint16 BYTE0:8; // 7:0
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANMDL_REG в одной области памяти. */
union CANMDL_REG { union CANMDL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANMDL_WORDS word;; порядок полей определяет расположение данных. */
struct CANMDL_WORDS word; struct CANMDL_WORDS word;
/* Описывает структуру CANMDL_BYTES byte;; порядок полей определяет расположение данных. */
struct CANMDL_BYTES byte; struct CANMDL_BYTES byte;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Message Data Register high (MDR_H) word definitions */ /* eCAN Message Data Register high (MDR_H) word definitions */
/* Описывает структуру CANMDH_WORDS; порядок полей определяет расположение данных. */
struct CANMDH_WORDS { // bits description struct CANMDH_WORDS { // bits description
/* Битовое поле LOW_WORD, ширина 16 бит; LOW слово. */
Uint16 LOW_WORD:16; // 0:15 Uint16 LOW_WORD:16; // 0:15
/* Битовое поле HI_WORD, ширина 16 бит; HI слово. */
Uint16 HI_WORD:16; // 31:16 Uint16 HI_WORD:16; // 31:16
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Message Data Register low (MDR_H) byte definitions */ /* eCAN Message Data Register low (MDR_H) byte definitions */
/* Описывает структуру CANMDH_BYTES; порядок полей определяет расположение данных. */
struct CANMDH_BYTES { // bits description struct CANMDH_BYTES { // bits description
/* Битовое поле BYTE7, ширина 8 бит; данные BYTE7. */
Uint16 BYTE7:8; // 63:56 Uint16 BYTE7:8; // 63:56
/* Битовое поле BYTE6, ширина 8 бит; данные BYTE6. */
Uint16 BYTE6:8; // 55:48 Uint16 BYTE6:8; // 55:48
/* Битовое поле BYTE5, ширина 8 бит; данные BYTE5. */
Uint16 BYTE5:8; // 47:40 Uint16 BYTE5:8; // 47:40
/* Битовое поле BYTE4, ширина 8 бит; данные BYTE4. */
Uint16 BYTE4:8; // 39:32 Uint16 BYTE4:8; // 39:32
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANMDH_REG в одной области памяти. */
union CANMDH_REG { union CANMDH_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANMDH_WORDS word;; порядок полей определяет расположение данных. */
struct CANMDH_WORDS word; struct CANMDH_WORDS word;
/* Описывает структуру CANMDH_BYTES byte;; порядок полей определяет расположение данных. */
struct CANMDH_BYTES byte; struct CANMDH_BYTES byte;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру MBOX; порядок полей определяет расположение данных. */
struct MBOX { struct MBOX {
/* Объединяет несколько представлений CANMSGID_REG MSGID; в одной области памяти. */
union CANMSGID_REG MSGID; union CANMSGID_REG MSGID;
/* Объединяет несколько представлений CANMSGCTRL_REG MSGCTRL; в одной области памяти. */
union CANMSGCTRL_REG MSGCTRL; union CANMSGCTRL_REG MSGCTRL;
/* Объединяет несколько представлений CANMDL_REG MDL; в одной области памяти. */
union CANMDL_REG MDL; union CANMDL_REG MDL;
/* Объединяет несколько представлений CANMDH_REG MDH; в одной области памяти. */
union CANMDH_REG MDH; union CANMDH_REG MDH;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/**************************************/ /**************************************/
/* eCAN Mailboxes */ /* eCAN Mailboxes */
/**************************************/ /**************************************/
/* Описывает структуру ECAN_MBOXES; порядок полей определяет расположение данных. */
struct ECAN_MBOXES { struct ECAN_MBOXES {
/* Описывает структуру MBOX MBOX0;; порядок полей определяет расположение данных. */
struct MBOX MBOX0; struct MBOX MBOX0;
/* Описывает структуру MBOX MBOX1;; порядок полей определяет расположение данных. */
struct MBOX MBOX1; struct MBOX MBOX1;
/* Описывает структуру MBOX MBOX2;; порядок полей определяет расположение данных. */
struct MBOX MBOX2; struct MBOX MBOX2;
/* Описывает структуру MBOX MBOX3;; порядок полей определяет расположение данных. */
struct MBOX MBOX3; struct MBOX MBOX3;
/* Описывает структуру MBOX MBOX4;; порядок полей определяет расположение данных. */
struct MBOX MBOX4; struct MBOX MBOX4;
/* Описывает структуру MBOX MBOX5;; порядок полей определяет расположение данных. */
struct MBOX MBOX5; struct MBOX MBOX5;
/* Описывает структуру MBOX MBOX6;; порядок полей определяет расположение данных. */
struct MBOX MBOX6; struct MBOX MBOX6;
/* Описывает структуру MBOX MBOX7;; порядок полей определяет расположение данных. */
struct MBOX MBOX7; struct MBOX MBOX7;
/* Описывает структуру MBOX MBOX8;; порядок полей определяет расположение данных. */
struct MBOX MBOX8; struct MBOX MBOX8;
/* Описывает структуру MBOX MBOX9;; порядок полей определяет расположение данных. */
struct MBOX MBOX9; struct MBOX MBOX9;
/* Описывает структуру MBOX MBOX10;; порядок полей определяет расположение данных. */
struct MBOX MBOX10; struct MBOX MBOX10;
/* Описывает структуру MBOX MBOX11;; порядок полей определяет расположение данных. */
struct MBOX MBOX11; struct MBOX MBOX11;
/* Описывает структуру MBOX MBOX12;; порядок полей определяет расположение данных. */
struct MBOX MBOX12; struct MBOX MBOX12;
/* Описывает структуру MBOX MBOX13;; порядок полей определяет расположение данных. */
struct MBOX MBOX13; struct MBOX MBOX13;
/* Описывает структуру MBOX MBOX14;; порядок полей определяет расположение данных. */
struct MBOX MBOX14; struct MBOX MBOX14;
/* Описывает структуру MBOX MBOX15;; порядок полей определяет расположение данных. */
struct MBOX MBOX15; struct MBOX MBOX15;
/* Описывает структуру MBOX MBOX16;; порядок полей определяет расположение данных. */
struct MBOX MBOX16; struct MBOX MBOX16;
/* Описывает структуру MBOX MBOX17;; порядок полей определяет расположение данных. */
struct MBOX MBOX17; struct MBOX MBOX17;
/* Описывает структуру MBOX MBOX18;; порядок полей определяет расположение данных. */
struct MBOX MBOX18; struct MBOX MBOX18;
/* Описывает структуру MBOX MBOX19;; порядок полей определяет расположение данных. */
struct MBOX MBOX19; struct MBOX MBOX19;
/* Описывает структуру MBOX MBOX20;; порядок полей определяет расположение данных. */
struct MBOX MBOX20; struct MBOX MBOX20;
/* Описывает структуру MBOX MBOX21;; порядок полей определяет расположение данных. */
struct MBOX MBOX21; struct MBOX MBOX21;
/* Описывает структуру MBOX MBOX22;; порядок полей определяет расположение данных. */
struct MBOX MBOX22; struct MBOX MBOX22;
/* Описывает структуру MBOX MBOX23;; порядок полей определяет расположение данных. */
struct MBOX MBOX23; struct MBOX MBOX23;
/* Описывает структуру MBOX MBOX24;; порядок полей определяет расположение данных. */
struct MBOX MBOX24; struct MBOX MBOX24;
/* Описывает структуру MBOX MBOX25;; порядок полей определяет расположение данных. */
struct MBOX MBOX25; struct MBOX MBOX25;
/* Описывает структуру MBOX MBOX26;; порядок полей определяет расположение данных. */
struct MBOX MBOX26; struct MBOX MBOX26;
/* Описывает структуру MBOX MBOX27;; порядок полей определяет расположение данных. */
struct MBOX MBOX27; struct MBOX MBOX27;
/* Описывает структуру MBOX MBOX28;; порядок полей определяет расположение данных. */
struct MBOX MBOX28; struct MBOX MBOX28;
/* Описывает структуру MBOX MBOX29;; порядок полей определяет расположение данных. */
struct MBOX MBOX29; struct MBOX MBOX29;
/* Описывает структуру MBOX MBOX30;; порядок полей определяет расположение данных. */
struct MBOX MBOX30; struct MBOX MBOX30;
/* Описывает структуру MBOX MBOX31;; порядок полей определяет расположение данных. */
struct MBOX MBOX31; struct MBOX MBOX31;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* eCAN Local Acceptance Mask (LAM) bit definitions */ /* eCAN Local Acceptance Mask (LAM) bit definitions */
/* Описывает структуру CANLAM_BITS; порядок полей определяет расположение данных. */
struct CANLAM_BITS { // bits description struct CANLAM_BITS { // bits description
/* Битовое поле LAM_L, ширина 16 бит; данные LAM_L. */
Uint16 LAM_L:16; // 0:15 Uint16 LAM_L:16; // 0:15
/* Битовое поле LAM_H, ширина 13 бит; данные LAM_H. */
Uint16 LAM_H:13; // 16:28 Uint16 LAM_H:13; // 16:28
/* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 29:30 reserved Uint16 rsvd1:2; // 29:30 reserved
/* Битовое поле LAMI, ширина 1 бит; данные LAMI. */
Uint16 LAMI:1; // 31 Uint16 LAMI:1; // 31
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Allow access to the bit fields or entire register */ /* Allow access to the bit fields or entire register */
/* Объединяет несколько представлений CANLAM_REG в одной области памяти. */
union CANLAM_REG { union CANLAM_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CANLAM_BITS bit;; порядок полей определяет расположение данных. */
struct CANLAM_BITS bit; struct CANLAM_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
@@ -1858,250 +1025,135 @@ union CANLAM_REG {
/**************************************/ /**************************************/
/* eCAN LAM File */ /* eCAN LAM File */
/* Описывает структуру LAM_REGS; порядок полей определяет расположение данных. */
struct LAM_REGS { struct LAM_REGS {
/* Объединяет несколько представлений CANLAM_REG LAM0; в одной области памяти. */
union CANLAM_REG LAM0; union CANLAM_REG LAM0;
/* Объединяет несколько представлений CANLAM_REG LAM1; в одной области памяти. */
union CANLAM_REG LAM1; union CANLAM_REG LAM1;
/* Объединяет несколько представлений CANLAM_REG LAM2; в одной области памяти. */
union CANLAM_REG LAM2; union CANLAM_REG LAM2;
/* Объединяет несколько представлений CANLAM_REG LAM3; в одной области памяти. */
union CANLAM_REG LAM3; union CANLAM_REG LAM3;
/* Объединяет несколько представлений CANLAM_REG LAM4; в одной области памяти. */
union CANLAM_REG LAM4; union CANLAM_REG LAM4;
/* Объединяет несколько представлений CANLAM_REG LAM5; в одной области памяти. */
union CANLAM_REG LAM5; union CANLAM_REG LAM5;
/* Объединяет несколько представлений CANLAM_REG LAM6; в одной области памяти. */
union CANLAM_REG LAM6; union CANLAM_REG LAM6;
/* Объединяет несколько представлений CANLAM_REG LAM7; в одной области памяти. */
union CANLAM_REG LAM7; union CANLAM_REG LAM7;
/* Объединяет несколько представлений CANLAM_REG LAM8; в одной области памяти. */
union CANLAM_REG LAM8; union CANLAM_REG LAM8;
/* Объединяет несколько представлений CANLAM_REG LAM9; в одной области памяти. */
union CANLAM_REG LAM9; union CANLAM_REG LAM9;
/* Объединяет несколько представлений CANLAM_REG LAM10; в одной области памяти. */
union CANLAM_REG LAM10; union CANLAM_REG LAM10;
/* Объединяет несколько представлений CANLAM_REG LAM11; в одной области памяти. */
union CANLAM_REG LAM11; union CANLAM_REG LAM11;
/* Объединяет несколько представлений CANLAM_REG LAM12; в одной области памяти. */
union CANLAM_REG LAM12; union CANLAM_REG LAM12;
/* Объединяет несколько представлений CANLAM_REG LAM13; в одной области памяти. */
union CANLAM_REG LAM13; union CANLAM_REG LAM13;
/* Объединяет несколько представлений CANLAM_REG LAM14; в одной области памяти. */
union CANLAM_REG LAM14; union CANLAM_REG LAM14;
/* Объединяет несколько представлений CANLAM_REG LAM15; в одной области памяти. */
union CANLAM_REG LAM15; union CANLAM_REG LAM15;
/* Объединяет несколько представлений CANLAM_REG LAM16; в одной области памяти. */
union CANLAM_REG LAM16; union CANLAM_REG LAM16;
/* Объединяет несколько представлений CANLAM_REG LAM17; в одной области памяти. */
union CANLAM_REG LAM17; union CANLAM_REG LAM17;
/* Объединяет несколько представлений CANLAM_REG LAM18; в одной области памяти. */
union CANLAM_REG LAM18; union CANLAM_REG LAM18;
/* Объединяет несколько представлений CANLAM_REG LAM19; в одной области памяти. */
union CANLAM_REG LAM19; union CANLAM_REG LAM19;
/* Объединяет несколько представлений CANLAM_REG LAM20; в одной области памяти. */
union CANLAM_REG LAM20; union CANLAM_REG LAM20;
/* Объединяет несколько представлений CANLAM_REG LAM21; в одной области памяти. */
union CANLAM_REG LAM21; union CANLAM_REG LAM21;
/* Объединяет несколько представлений CANLAM_REG LAM22; в одной области памяти. */
union CANLAM_REG LAM22; union CANLAM_REG LAM22;
/* Объединяет несколько представлений CANLAM_REG LAM23; в одной области памяти. */
union CANLAM_REG LAM23; union CANLAM_REG LAM23;
/* Объединяет несколько представлений CANLAM_REG LAM24; в одной области памяти. */
union CANLAM_REG LAM24; union CANLAM_REG LAM24;
/* Объединяет несколько представлений CANLAM_REG LAM25; в одной области памяти. */
union CANLAM_REG LAM25; union CANLAM_REG LAM25;
/* Объединяет несколько представлений CANLAM_REG LAM26; в одной области памяти. */
union CANLAM_REG LAM26; union CANLAM_REG LAM26;
/* Объединяет несколько представлений CANLAM_REG LAM27; в одной области памяти. */
union CANLAM_REG LAM27; union CANLAM_REG LAM27;
/* Объединяет несколько представлений CANLAM_REG LAM28; в одной области памяти. */
union CANLAM_REG LAM28; union CANLAM_REG LAM28;
/* Объединяет несколько представлений CANLAM_REG LAM29; в одной области памяти. */
union CANLAM_REG LAM29; union CANLAM_REG LAM29;
/* Объединяет несколько представлений CANLAM_REG LAM30; в одной области памяти. */
union CANLAM_REG LAM30; union CANLAM_REG LAM30;
/* Объединяет несколько представлений CANLAM_REG LAM31; в одной области памяти. */
union CANLAM_REG LAM31; union CANLAM_REG LAM31;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Mailbox MOTS File */ /* Mailbox MOTS File */
/* Описывает структуру MOTS_REGS; порядок полей определяет расположение данных. */
struct MOTS_REGS { struct MOTS_REGS {
/* Объявляет MOTS0 — данные MOTS0. */
Uint32 MOTS0; Uint32 MOTS0;
/* Объявляет MOTS1 — данные MOTS1. */
Uint32 MOTS1; Uint32 MOTS1;
/* Объявляет MOTS2 — данные MOTS2. */
Uint32 MOTS2; Uint32 MOTS2;
/* Объявляет MOTS3 — данные MOTS3. */
Uint32 MOTS3; Uint32 MOTS3;
/* Объявляет MOTS4 — данные MOTS4. */
Uint32 MOTS4; Uint32 MOTS4;
/* Объявляет MOTS5 — данные MOTS5. */
Uint32 MOTS5; Uint32 MOTS5;
/* Объявляет MOTS6 — данные MOTS6. */
Uint32 MOTS6; Uint32 MOTS6;
/* Объявляет MOTS7 — данные MOTS7. */
Uint32 MOTS7; Uint32 MOTS7;
/* Объявляет MOTS8 — данные MOTS8. */
Uint32 MOTS8; Uint32 MOTS8;
/* Объявляет MOTS9 — данные MOTS9. */
Uint32 MOTS9; Uint32 MOTS9;
/* Объявляет MOTS10 — данные MOTS10. */
Uint32 MOTS10; Uint32 MOTS10;
/* Объявляет MOTS11 — данные MOTS11. */
Uint32 MOTS11; Uint32 MOTS11;
/* Объявляет MOTS12 — данные MOTS12. */
Uint32 MOTS12; Uint32 MOTS12;
/* Объявляет MOTS13 — данные MOTS13. */
Uint32 MOTS13; Uint32 MOTS13;
/* Объявляет MOTS14 — данные MOTS14. */
Uint32 MOTS14; Uint32 MOTS14;
/* Объявляет MOTS15 — данные MOTS15. */
Uint32 MOTS15; Uint32 MOTS15;
/* Объявляет MOTS16 — данные MOTS16. */
Uint32 MOTS16; Uint32 MOTS16;
/* Объявляет MOTS17 — данные MOTS17. */
Uint32 MOTS17; Uint32 MOTS17;
/* Объявляет MOTS18 — данные MOTS18. */
Uint32 MOTS18; Uint32 MOTS18;
/* Объявляет MOTS19 — данные MOTS19. */
Uint32 MOTS19; Uint32 MOTS19;
/* Объявляет MOTS20 — данные MOTS20. */
Uint32 MOTS20; Uint32 MOTS20;
/* Объявляет MOTS21 — данные MOTS21. */
Uint32 MOTS21; Uint32 MOTS21;
/* Объявляет MOTS22 — данные MOTS22. */
Uint32 MOTS22; Uint32 MOTS22;
/* Объявляет MOTS23 — данные MOTS23. */
Uint32 MOTS23; Uint32 MOTS23;
/* Объявляет MOTS24 — данные MOTS24. */
Uint32 MOTS24; Uint32 MOTS24;
/* Объявляет MOTS25 — данные MOTS25. */
Uint32 MOTS25; Uint32 MOTS25;
/* Объявляет MOTS26 — данные MOTS26. */
Uint32 MOTS26; Uint32 MOTS26;
/* Объявляет MOTS27 — данные MOTS27. */
Uint32 MOTS27; Uint32 MOTS27;
/* Объявляет MOTS28 — данные MOTS28. */
Uint32 MOTS28; Uint32 MOTS28;
/* Объявляет MOTS29 — данные MOTS29. */
Uint32 MOTS29; Uint32 MOTS29;
/* Объявляет MOTS30 — данные MOTS30. */
Uint32 MOTS30; Uint32 MOTS30;
/* Объявляет MOTS31 — данные MOTS31. */
Uint32 MOTS31; Uint32 MOTS31;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Mailbox MOTO File */ /* Mailbox MOTO File */
/* Описывает структуру MOTO_REGS; порядок полей определяет расположение данных. */
struct MOTO_REGS { struct MOTO_REGS {
/* Объявляет MOTO0 — данные MOTO0. */
Uint32 MOTO0; Uint32 MOTO0;
/* Объявляет MOTO1 — данные MOTO1. */
Uint32 MOTO1; Uint32 MOTO1;
/* Объявляет MOTO2 — данные MOTO2. */
Uint32 MOTO2; Uint32 MOTO2;
/* Объявляет MOTO3 — данные MOTO3. */
Uint32 MOTO3; Uint32 MOTO3;
/* Объявляет MOTO4 — данные MOTO4. */
Uint32 MOTO4; Uint32 MOTO4;
/* Объявляет MOTO5 — данные MOTO5. */
Uint32 MOTO5; Uint32 MOTO5;
/* Объявляет MOTO6 — данные MOTO6. */
Uint32 MOTO6; Uint32 MOTO6;
/* Объявляет MOTO7 — данные MOTO7. */
Uint32 MOTO7; Uint32 MOTO7;
/* Объявляет MOTO8 — данные MOTO8. */
Uint32 MOTO8; Uint32 MOTO8;
/* Объявляет MOTO9 — данные MOTO9. */
Uint32 MOTO9; Uint32 MOTO9;
/* Объявляет MOTO10 — данные MOTO10. */
Uint32 MOTO10; Uint32 MOTO10;
/* Объявляет MOTO11 — данные MOTO11. */
Uint32 MOTO11; Uint32 MOTO11;
/* Объявляет MOTO12 — данные MOTO12. */
Uint32 MOTO12; Uint32 MOTO12;
/* Объявляет MOTO13 — данные MOTO13. */
Uint32 MOTO13; Uint32 MOTO13;
/* Объявляет MOTO14 — данные MOTO14. */
Uint32 MOTO14; Uint32 MOTO14;
/* Объявляет MOTO15 — данные MOTO15. */
Uint32 MOTO15; Uint32 MOTO15;
/* Объявляет MOTO16 — данные MOTO16. */
Uint32 MOTO16; Uint32 MOTO16;
/* Объявляет MOTO17 — данные MOTO17. */
Uint32 MOTO17; Uint32 MOTO17;
/* Объявляет MOTO18 — данные MOTO18. */
Uint32 MOTO18; Uint32 MOTO18;
/* Объявляет MOTO19 — данные MOTO19. */
Uint32 MOTO19; Uint32 MOTO19;
/* Объявляет MOTO20 — данные MOTO20. */
Uint32 MOTO20; Uint32 MOTO20;
/* Объявляет MOTO21 — данные MOTO21. */
Uint32 MOTO21; Uint32 MOTO21;
/* Объявляет MOTO22 — данные MOTO22. */
Uint32 MOTO22; Uint32 MOTO22;
/* Объявляет MOTO23 — данные MOTO23. */
Uint32 MOTO23; Uint32 MOTO23;
/* Объявляет MOTO24 — данные MOTO24. */
Uint32 MOTO24; Uint32 MOTO24;
/* Объявляет MOTO25 — данные MOTO25. */
Uint32 MOTO25; Uint32 MOTO25;
/* Объявляет MOTO26 — данные MOTO26. */
Uint32 MOTO26; Uint32 MOTO26;
/* Объявляет MOTO27 — данные MOTO27. */
Uint32 MOTO27; Uint32 MOTO27;
/* Объявляет MOTO28 — данные MOTO28. */
Uint32 MOTO28; Uint32 MOTO28;
/* Объявляет MOTO29 — данные MOTO29. */
Uint32 MOTO29; Uint32 MOTO29;
/* Объявляет MOTO30 — данные MOTO30. */
Uint32 MOTO30; Uint32 MOTO30;
/* Объявляет MOTO31 — данные MOTO31. */
Uint32 MOTO31; Uint32 MOTO31;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// eCAN External References & Function Declarations: // eCAN External References & Function Declarations:
// //
/* Продолжает список аргументов, полей или выражение extern volatile struct ECAN_REGS ECanaRegs;; порядок элементов сохраняется. */
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 ECAN_MBOXES ECanaMboxes;
/* Продолжает список аргументов, полей или выражение extern volatile struct LAM_REGS ECanaLAMRegs;; порядок элементов сохраняется. */
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 MOTO_REGS ECanaMOTORegs;
/* Продолжает список аргументов, полей или выражение extern volatile struct MOTS_REGS ECanaMOTSRegs;; порядок элементов сохраняется. */
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_REGS ECanbRegs;
/* Продолжает список аргументов, полей или выражение extern volatile struct ECAN_MBOXES ECanbMboxes;; порядок элементов сохраняется. */
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 LAM_REGS ECanbLAMRegs;
/* Продолжает список аргументов, полей или выражение extern volatile struct MOTO_REGS ECanbMOTORegs;; порядок элементов сохраняется. */
extern volatile struct MOTO_REGS ECanbMOTORegs; extern volatile struct MOTO_REGS ECanbMOTORegs;
/* Продолжает список аргументов, полей или выражение extern volatile struct MOTS_REGS ECanbMOTSRegs;; порядок элементов сохраняется. */
extern volatile struct MOTS_REGS ECanbMOTSRegs; extern volatile struct MOTS_REGS ECanbMOTSRegs;
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_ECAN.H definition #endif // end of DSP2833x_ECAN.H definition
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание ECap для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $ // TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:07 $ // Checkin $Date: August 18, 2006 13:52:07 $
//########################################################################### //###########################################################################
@@ -12,232 +11,139 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_ECAP_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_ECAP_H #ifndef DSP2833x_ECAP_H
/* Определяет защитный символ или переключатель DSP2833x_ECAP_H для последующей компиляции. */
#define DSP2833x_ECAP_H #define DSP2833x_ECAP_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
//---------------------------------------------------- //----------------------------------------------------
// Capture control register 1 bit definitions */ // Capture control register 1 bit definitions */
/* Описывает структуру ECCTL1_BITS; порядок полей определяет расположение данных. */
struct ECCTL1_BITS { // bits description struct ECCTL1_BITS { // bits description
/* Битовое поле CAP1POL, ширина 1 бит; данные CAP1POL. */
Uint16 CAP1POL:1; // 0 Capture Event 1 Polarity select Uint16 CAP1POL:1; // 0 Capture Event 1 Polarity select
/* Битовое поле CTRRST1, ширина 1 бит; данные CTRRST1. */
Uint16 CTRRST1:1; // 1 Counter Reset on Capture Event 1 Uint16 CTRRST1:1; // 1 Counter Reset on Capture Event 1
/* Битовое поле CAP2POL, ширина 1 бит; данные CAP2POL. */
Uint16 CAP2POL:1; // 2 Capture Event 2 Polarity select Uint16 CAP2POL:1; // 2 Capture Event 2 Polarity select
/* Битовое поле CTRRST2, ширина 1 бит; данные CTRRST2. */
Uint16 CTRRST2:1; // 3 Counter Reset on Capture Event 2 Uint16 CTRRST2:1; // 3 Counter Reset on Capture Event 2
/* Битовое поле CAP3POL, ширина 1 бит; данные CAP3POL. */
Uint16 CAP3POL:1; // 4 Capture Event 3 Polarity select Uint16 CAP3POL:1; // 4 Capture Event 3 Polarity select
/* Битовое поле CTRRST3, ширина 1 бит; данные CTRRST3. */
Uint16 CTRRST3:1; // 5 Counter Reset on Capture Event 3 Uint16 CTRRST3:1; // 5 Counter Reset on Capture Event 3
/* Битовое поле CAP4POL, ширина 1 бит; данные CAP4POL. */
Uint16 CAP4POL:1; // 6 Capture Event 4 Polarity select Uint16 CAP4POL:1; // 6 Capture Event 4 Polarity select
/* Битовое поле CTRRST4, ширина 1 бит; данные CTRRST4. */
Uint16 CTRRST4:1; // 7 Counter Reset on Capture Event 4 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 Uint16 CAPLDEN:1; // 8 Enable Loading CAP1-4 regs on a Cap Event
/* Битовое поле PRESCALE, ширина 5 бит; предделитель. */
Uint16 PRESCALE:5; // 13:9 Event Filter prescale select Uint16 PRESCALE:5; // 13:9 Event Filter prescale select
/* Битовое поле FREE_SOFT, ширина 2 бит; данные FREE_SOFT. */
Uint16 FREE_SOFT:2; // 15:14 Emulation mode Uint16 FREE_SOFT:2; // 15:14 Emulation mode
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ECCTL1_REG в одной области памяти. */
union ECCTL1_REG { union ECCTL1_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ECCTL1_BITS bit;; порядок полей определяет расположение данных. */
struct 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 // STOP_WRAP. This correlated to a silicon change from
// F2833x Rev 0 to Rev A. // F2833x Rev 0 to Rev A.
//---------------------------------------------------- //----------------------------------------------------
// Capture control register 2 bit definitions */ // Capture control register 2 bit definitions */
/* Описывает структуру ECCTL2_BITS; порядок полей определяет расположение данных. */
struct ECCTL2_BITS { // bits description struct ECCTL2_BITS { // bits description
/* Битовое поле CONT_ONESHT, ширина 1 бит; данные CONT_ONESHT. */
Uint16 CONT_ONESHT:1; // 0 Continuous or one-shot 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 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 Uint16 REARM:1; // 3 One-shot re-arm
/* Битовое поле TSCTRSTOP, ширина 1 бит; данные TSCTRSTOP. */
Uint16 TSCTRSTOP:1; // 4 TSCNT counter stop Uint16 TSCTRSTOP:1; // 4 TSCNT counter stop
/* Битовое поле SYNCI_EN, ширина 1 бит; данные SYNCI_EN. */
Uint16 SYNCI_EN:1; // 5 Counter sync-in select Uint16 SYNCI_EN:1; // 5 Counter sync-in select
/* Битовое поле SYNCO_SEL, ширина 2 бит; данные SYNCO_SEL. */
Uint16 SYNCO_SEL:2; // 7:6 Sync-out mode Uint16 SYNCO_SEL:2; // 7:6 Sync-out mode
/* Битовое поле SWSYNC, ширина 1 бит; данные SWSYNC. */
Uint16 SWSYNC:1; // 8 SW forced counter sync Uint16 SWSYNC:1; // 8 SW forced counter sync
/* Битовое поле CAP_APWM, ширина 1 бит; данные CAP_APWM. */
Uint16 CAP_APWM:1; // 9 CAP/APWM operating mode select Uint16 CAP_APWM:1; // 9 CAP/APWM operating mode select
/* Битовое поле APWMPOL, ширина 1 бит; данные APWMPOL. */
Uint16 APWMPOL:1; // 10 APWM output polarity select 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 { union ECCTL2_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ECCTL2_BITS bit;; порядок полей определяет расположение данных. */
struct ECCTL2_BITS bit; struct ECCTL2_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// ECAP interrupt enable register bit definitions */ // ECAP interrupt enable register bit definitions */
/* Описывает структуру ECEINT_BITS; порядок полей определяет расположение данных. */
struct ECEINT_BITS { // bits description struct ECEINT_BITS { // bits description
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 0 reserved Uint16 rsvd1:1; // 0 reserved
/* Битовое поле CEVT1, ширина 1 бит; данные CEVT1. */
Uint16 CEVT1:1; // 1 Capture Event 1 Interrupt Enable Uint16 CEVT1:1; // 1 Capture Event 1 Interrupt Enable
/* Битовое поле CEVT2, ширина 1 бит; данные CEVT2. */
Uint16 CEVT2:1; // 2 Capture Event 2 Interrupt Enable Uint16 CEVT2:1; // 2 Capture Event 2 Interrupt Enable
/* Битовое поле CEVT3, ширина 1 бит; данные CEVT3. */
Uint16 CEVT3:1; // 3 Capture Event 3 Interrupt Enable Uint16 CEVT3:1; // 3 Capture Event 3 Interrupt Enable
/* Битовое поле CEVT4, ширина 1 бит; данные CEVT4. */ Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Enable
Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Enable
/* Битовое поле CTROVF, ширина 1 бит; данные CTROVF. */
Uint16 CTROVF:1; // 5 Counter Overflow 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 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 Uint16 CTR_EQ_CMP:1; // 7 Compare Equal Interrupt Enable
/* Битовое поле rsvd2, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:8; // 15:8 reserved Uint16 rsvd2:8; // 15:8 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ECEINT_REG в одной области памяти. */
union ECEINT_REG { union ECEINT_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ECEINT_BITS bit;; порядок полей определяет расположение данных. */
struct ECEINT_BITS bit; struct ECEINT_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// ECAP interrupt flag register bit definitions */ // ECAP interrupt flag register bit definitions */
/* Описывает структуру ECFLG_BITS; порядок полей определяет расположение данных. */
struct ECFLG_BITS { // bits description struct ECFLG_BITS { // bits description
/* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 Global Flag Uint16 INT:1; // 0 Global Flag
/* Битовое поле CEVT1, ширина 1 бит; данные CEVT1. */
Uint16 CEVT1:1; // 1 Capture Event 1 Interrupt Flag Uint16 CEVT1:1; // 1 Capture Event 1 Interrupt Flag
/* Битовое поле CEVT2, ширина 1 бит; данные CEVT2. */
Uint16 CEVT2:1; // 2 Capture Event 2 Interrupt Flag Uint16 CEVT2:1; // 2 Capture Event 2 Interrupt Flag
/* Битовое поле CEVT3, ширина 1 бит; данные CEVT3. */
Uint16 CEVT3:1; // 3 Capture Event 3 Interrupt Flag Uint16 CEVT3:1; // 3 Capture Event 3 Interrupt Flag
/* Битовое поле CEVT4, ширина 1 бит; данные CEVT4. */ Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Flag
Uint16 CEVT4:1; // 4 Capture Event 4 Interrupt Flag
/* Битовое поле CTROVF, ширина 1 бит; данные CTROVF. */
Uint16 CTROVF:1; // 5 Counter Overflow 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 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 Uint16 CTR_EQ_CMP:1; // 7 Compare Equal Interrupt Flag
/* Битовое поле rsvd2, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:8; // 15:8 reserved Uint16 rsvd2:8; // 15:8 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ECFLG_REG в одной области памяти. */
union ECFLG_REG { union ECFLG_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ECFLG_BITS bit;; порядок полей определяет расположение данных. */
struct ECFLG_BITS bit; struct ECFLG_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
/* Описывает структуру ECAP_REGS; порядок полей определяет расположение данных. */
struct ECAP_REGS { struct ECAP_REGS {
/* Объявляет TSCTR — данные TSCTR. */ Uint32 TSCTR; // Time stamp counter
Uint32 TSCTR; // Time stamp counter
/* Объявляет CTRPHS — данные CTRPHS. */
Uint32 CTRPHS; // Counter phase Uint32 CTRPHS; // Counter phase
/* Объявляет CAP1 — данные CAP1. */ Uint32 CAP1; // Capture 1
Uint32 CAP1; // Capture 1 Uint32 CAP2; // Capture 2
/* Объявляет CAP2 — данные CAP2. */ Uint32 CAP3; // Capture 3
Uint32 CAP2; // Capture 2 Uint32 CAP4; // Capture 4
/* Объявляет CAP3 — данные CAP3. */
Uint32 CAP3; // Capture 3
/* Объявляет CAP4 — данные CAP4. */
Uint32 CAP4; // Capture 4
/* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1[8]; // reserved Uint16 rsvd1[8]; // reserved
/* Объединяет несколько представлений ECCTL1_REG ECCTL1; в одной области памяти. */
union ECCTL1_REG ECCTL1; // Capture Control Reg 1 union ECCTL1_REG ECCTL1; // Capture Control Reg 1
/* Объединяет несколько представлений ECCTL2_REG ECCTL2; в одной области памяти. */
union ECCTL2_REG ECCTL2; // Capture Control Reg 2 union ECCTL2_REG ECCTL2; // Capture Control Reg 2
/* Объединяет несколько представлений ECEINT_REG ECEINT; в одной области памяти. */
union ECEINT_REG ECEINT; // ECAP interrupt enable union ECEINT_REG ECEINT; // ECAP interrupt enable
/* Объединяет несколько представлений ECFLG_REG ECFLG; в одной области памяти. */
union ECFLG_REG ECFLG; // ECAP interrupt flags union ECFLG_REG ECFLG; // ECAP interrupt flags
/* Объединяет несколько представлений ECFLG_REG ECCLR; в одной области памяти. */
union ECFLG_REG ECCLR; // ECAP interrupt clear union ECFLG_REG ECCLR; // ECAP interrupt clear
/* Объединяет несколько представлений ECEINT_REG ECFRC; в одной области памяти. */
union ECEINT_REG ECFRC; // ECAP interrupt force union ECEINT_REG ECFRC; // ECAP interrupt force
/* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */ Uint16 rsvd2[6]; // reserved
Uint16 rsvd2[6]; // reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// GPI/O External References & Function Declarations: // GPI/O External References & Function Declarations:
// //
/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap1Regs;; порядок элементов сохраняется. */
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 ECap2Regs;
/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap3Regs;; порядок элементов сохраняется. */
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 ECap4Regs;
/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap5Regs;; порядок элементов сохраняется. */
extern volatile struct ECAP_REGS ECap5Regs; extern volatile struct ECAP_REGS ECap5Regs;
/* Продолжает список аргументов, полей или выражение extern volatile struct ECAP_REGS ECap6Regs;; порядок элементов сохраняется. */
extern volatile struct ECAP_REGS ECap6Regs; extern volatile struct ECAP_REGS ECap6Regs;
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_ECAP_H definition #endif // end of DSP2833x_ECAP_H definition
//=========================================================================== //===========================================================================

View File

@@ -1,4 +1,3 @@
/* Поставляемое TI описание EPwm для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $ // TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:10 $ // Checkin $Date: August 18, 2006 13:52:10 $
//########################################################################### //###########################################################################
@@ -12,190 +11,111 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_EPWM_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_EPWM_H #ifndef DSP2833x_EPWM_H
/* Определяет защитный символ или переключатель DSP2833x_EPWM_H для последующей компиляции. */
#define DSP2833x_EPWM_H #define DSP2833x_EPWM_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
//---------------------------------------------------- //----------------------------------------------------
// Time base control register bit definitions */ // Time base control register bit definitions */
/* Описывает структуру TBCTL_BITS; порядок полей определяет расположение данных. */
struct TBCTL_BITS { // bits description struct TBCTL_BITS { // bits description
/* Битовое поле CTRMODE, ширина 2 бит; данные CTRMODE. */
Uint16 CTRMODE:2; // 1:0 Counter Mode Uint16 CTRMODE:2; // 1:0 Counter Mode
/* Битовое поле PHSEN, ширина 1 бит; данные PHSEN. */
Uint16 PHSEN:1; // 2 Phase load enable Uint16 PHSEN:1; // 2 Phase load enable
/* Битовое поле PRDLD, ширина 1 бит; данные PRDLD. */
Uint16 PRDLD:1; // 3 Active period load Uint16 PRDLD:1; // 3 Active period load
/* Битовое поле SYNCOSEL, ширина 2 бит; данные SYNCOSEL. */
Uint16 SYNCOSEL:2; // 5:4 Sync output select Uint16 SYNCOSEL:2; // 5:4 Sync output select
/* Битовое поле SWFSYNC, ширина 1 бит; данные SWFSYNC. */
Uint16 SWFSYNC:1; // 6 Software force sync pulse Uint16 SWFSYNC:1; // 6 Software force sync pulse
/* Битовое поле HSPCLKDIV, ширина 3 бит; данные HSPCLKDIV. */
Uint16 HSPCLKDIV:3; // 9:7 High speed time pre-scale Uint16 HSPCLKDIV:3; // 9:7 High speed time pre-scale
/* Битовое поле CLKDIV, ширина 3 бит; данные CLKDIV. */
Uint16 CLKDIV:3; // 12:10 Timebase clock pre-scale Uint16 CLKDIV:3; // 12:10 Timebase clock pre-scale
/* Битовое поле PHSDIR, ширина 1 бит; данные PHSDIR. */
Uint16 PHSDIR:1; // 13 Phase Direction 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 { union TBCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TBCTL_BITS bit;; порядок полей определяет расположение данных. */
struct TBCTL_BITS bit; struct TBCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Time base status register bit definitions */ // Time base status register bit definitions */
/* Описывает структуру TBSTS_BITS; порядок полей определяет расположение данных. */
struct TBSTS_BITS { // bits description struct TBSTS_BITS { // bits description
/* Битовое поле CTRDIR, ширина 1 бит; данные CTRDIR. */
Uint16 CTRDIR:1; // 0 Counter direction status Uint16 CTRDIR:1; // 0 Counter direction status
/* Битовое поле SYNCI, ширина 1 бит; данные SYNCI. */
Uint16 SYNCI:1; // 1 External input sync status Uint16 SYNCI:1; // 1 External input sync status
/* Битовое поле CTRMAX, ширина 1 бит; данные CTRMAX. */
Uint16 CTRMAX:1; // 2 Counter max latched status Uint16 CTRMAX:1; // 2 Counter max latched status
/* Битовое поле rsvd1, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:13; // 15:3 reserved Uint16 rsvd1:13; // 15:3 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TBSTS_REG в одной области памяти. */
union TBSTS_REG { union TBSTS_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TBSTS_BITS bit;; порядок полей определяет расположение данных. */
struct TBSTS_BITS bit; struct TBSTS_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Compare control register bit definitions */ // Compare control register bit definitions */
/* Описывает структуру CMPCTL_BITS; порядок полей определяет расположение данных. */
struct CMPCTL_BITS { // bits description struct CMPCTL_BITS { // bits description
/* Битовое поле LOADAMODE, ширина 2 бит; данные LOADAMODE. */
Uint16 LOADAMODE:2; // 0:1 Active compare A Uint16 LOADAMODE:2; // 0:1 Active compare A
/* Битовое поле LOADBMODE, ширина 2 бит; данные LOADBMODE. */
Uint16 LOADBMODE:2; // 3:2 Active compare B Uint16 LOADBMODE:2; // 3:2 Active compare B
/* Битовое поле SHDWAMODE, ширина 1 бит; данные SHDWAMODE. */
Uint16 SHDWAMODE:1; // 4 Compare A block operating mode Uint16 SHDWAMODE:1; // 4 Compare A block operating mode
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 5 reserved Uint16 rsvd1:1; // 5 reserved
/* Битовое поле SHDWBMODE, ширина 1 бит; данные SHDWBMODE. */
Uint16 SHDWBMODE:1; // 6 Compare B block operating mode Uint16 SHDWBMODE:1; // 6 Compare B block operating mode
/* Битовое поле rsvd2, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:1; // 7 reserved Uint16 rsvd2:1; // 7 reserved
/* Битовое поле SHDWAFULL, ширина 1 бит; данные SHDWAFULL. */
Uint16 SHDWAFULL:1; // 8 Compare A Shadow registers full Status Uint16 SHDWAFULL:1; // 8 Compare A Shadow registers full Status
/* Битовое поле SHDWBFULL, ширина 1 бит; данные SHDWBFULL. */
Uint16 SHDWBFULL:1; // 9 Compare B Shadow registers full Status Uint16 SHDWBFULL:1; // 9 Compare B Shadow registers full Status
/* Битовое поле rsvd3, ширина 6 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd3:6; // 15:10 reserved Uint16 rsvd3:6; // 15:10 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений CMPCTL_REG в одной области памяти. */
union CMPCTL_REG { union CMPCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру CMPCTL_BITS bit;; порядок полей определяет расположение данных. */
struct CMPCTL_BITS bit; struct CMPCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Action qualifier register bit definitions */ // Action qualifier register bit definitions */
/* Описывает структуру AQCTL_BITS; порядок полей определяет расположение данных. */
struct AQCTL_BITS { // bits description struct AQCTL_BITS { // bits description
/* Битовое поле ZRO, ширина 2 бит; данные ZRO. */
Uint16 ZRO:2; // 1:0 Action Counter = Zero Uint16 ZRO:2; // 1:0 Action Counter = Zero
/* Битовое поле PRD, ширина 2 бит; данные PRD. */
Uint16 PRD:2; // 3:2 Action Counter = Period Uint16 PRD:2; // 3:2 Action Counter = Period
/* Битовое поле CAU, ширина 2 бит; данные CAU. */
Uint16 CAU:2; // 5:4 Action Counter = Compare A up Uint16 CAU:2; // 5:4 Action Counter = Compare A up
/* Битовое поле CAD, ширина 2 бит; данные CAD. */
Uint16 CAD:2; // 7:6 Action Counter = Compare A down Uint16 CAD:2; // 7:6 Action Counter = Compare A down
/* Битовое поле CBU, ширина 2 бит; данные CBU. */
Uint16 CBU:2; // 9:8 Action Counter = Compare B up Uint16 CBU:2; // 9:8 Action Counter = Compare B up
/* Битовое поле CBD, ширина 2 бит; данные CBD. */
Uint16 CBD:2; // 11:10 Action Counter = Compare B down Uint16 CBD:2; // 11:10 Action Counter = Compare B down
/* Битовое поле rsvd, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:4; // 15:12 reserved Uint16 rsvd:4; // 15:12 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений AQCTL_REG в одной области памяти. */
union AQCTL_REG { union AQCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру AQCTL_BITS bit;; порядок полей определяет расположение данных. */
struct AQCTL_BITS bit; struct AQCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Action qualifier SW force register bit definitions */ // Action qualifier SW force register bit definitions */
/* Описывает структуру AQSFRC_BITS; порядок полей определяет расположение данных. */
struct AQSFRC_BITS { // bits description struct AQSFRC_BITS { // bits description
/* Битовое поле ACTSFA, ширина 2 бит; данные ACTSFA. */
Uint16 ACTSFA:2; // 1:0 Action when One-time SW Force A invoked 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 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 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 Uint16 OTSFB:1; // 5 One-time SW Force A output
/* Битовое поле RLDCSF, ширина 2 бит; данные RLDCSF. */
Uint16 RLDCSF:2; // 7:6 Reload from Shadow options Uint16 RLDCSF:2; // 7:6 Reload from Shadow options
/* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved Uint16 rsvd1:8; // 15:8 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений AQSFRC_REG в одной области памяти. */
union AQSFRC_REG { union AQSFRC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру AQSFRC_BITS bit;; порядок полей определяет расположение данных. */
struct AQSFRC_BITS bit; struct AQSFRC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Action qualifier continuous SW force register bit definitions */ // Action qualifier continuous SW force register bit definitions */
/* Описывает структуру AQCSFRC_BITS; порядок полей определяет расположение данных. */
struct AQCSFRC_BITS { // bits description struct AQCSFRC_BITS { // bits description
/* Битовое поле CSFA, ширина 2 бит; данные CSFA. */
Uint16 CSFA:2; // 1:0 Continuous Software Force on output A 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 Uint16 CSFB:2; // 3:2 Continuous Software Force on output B
/* Битовое поле rsvd1, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:12; // 15:4 reserved Uint16 rsvd1:12; // 15:4 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений AQCSFRC_REG в одной области памяти. */
union AQCSFRC_REG { union AQCSFRC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру AQCSFRC_BITS bit;; порядок полей определяет расположение данных. */
struct AQCSFRC_BITS bit; struct AQCSFRC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
@@ -205,514 +125,297 @@ union AQCSFRC_REG {
// This corresponds to changes in silicon as of F2833x devices // This corresponds to changes in silicon as of F2833x devices
// Rev A silicon. // Rev A silicon.
//---------------------------------------------------- //----------------------------------------------------
// Dead-band generator control register bit definitions // Dead-band generator control register bit definitions
/* Описывает структуру DBCTL_BITS; порядок полей определяет расположение данных. */
struct DBCTL_BITS { // bits description struct DBCTL_BITS { // bits description
/* Битовое поле OUT_MODE, ширина 2 бит; OUT режим. */ Uint16 OUT_MODE:2; // 1:0 Dead Band Output Mode Control
Uint16 OUT_MODE:2; // 1:0 Dead Band Output Mode Control Uint16 POLSEL:2; // 3:2 Polarity Select Control
/* Битовое поле POLSEL, ширина 2 бит; данные POLSEL. */
Uint16 POLSEL:2; // 3:2 Polarity Select Control
/* Битовое поле IN_MODE, ширина 2 бит; IN режим. */
Uint16 IN_MODE:2; // 5:4 Dead Band Input Select Mode Control Uint16 IN_MODE:2; // 5:4 Dead Band Input Select Mode Control
/* Битовое поле rsvd1, ширина 10 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:10; // 15:4 reserved Uint16 rsvd1:10; // 15:4 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений DBCTL_REG в одной области памяти. */
union DBCTL_REG { union DBCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру DBCTL_BITS bit;; порядок полей определяет расположение данных. */
struct DBCTL_BITS bit; struct DBCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Trip zone select register bit definitions // Trip zone select register bit definitions
/* Описывает структуру TZSEL_BITS; порядок полей определяет расположение данных. */
struct TZSEL_BITS { // bits description struct TZSEL_BITS { // bits description
/* Битовое поле CBC1, ширина 1 бит; данные CBC1. */
Uint16 CBC1:1; // 0 TZ1 CBC select Uint16 CBC1:1; // 0 TZ1 CBC select
/* Битовое поле CBC2, ширина 1 бит; данные CBC2. */
Uint16 CBC2:1; // 1 TZ2 CBC select Uint16 CBC2:1; // 1 TZ2 CBC select
/* Битовое поле CBC3, ширина 1 бит; данные CBC3. */
Uint16 CBC3:1; // 2 TZ3 CBC select Uint16 CBC3:1; // 2 TZ3 CBC select
/* Битовое поле CBC4, ширина 1 бит; данные CBC4. */
Uint16 CBC4:1; // 3 TZ4 CBC select Uint16 CBC4:1; // 3 TZ4 CBC select
/* Битовое поле CBC5, ширина 1 бит; данные CBC5. */
Uint16 CBC5:1; // 4 TZ5 CBC select Uint16 CBC5:1; // 4 TZ5 CBC select
/* Битовое поле CBC6, ширина 1 бит; данные CBC6. */
Uint16 CBC6:1; // 5 TZ6 CBC select Uint16 CBC6:1; // 5 TZ6 CBC select
/* Битовое поле rsvd1, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:2; // 7:6 reserved Uint16 rsvd1:2; // 7:6 reserved
/* Битовое поле OSHT1, ширина 1 бит; данные OSHT1. */ Uint16 OSHT1:1; // 8 One-shot TZ1 select
Uint16 OSHT1:1; // 8 One-shot TZ1 select Uint16 OSHT2:1; // 9 One-shot TZ2 select
/* Битовое поле OSHT2, ширина 1 бит; данные OSHT2. */ Uint16 OSHT3:1; // 10 One-shot TZ3 select
Uint16 OSHT2:1; // 9 One-shot TZ2 select Uint16 OSHT4:1; // 11 One-shot TZ4 select
/* Битовое поле OSHT3, ширина 1 бит; данные OSHT3. */ Uint16 OSHT5:1; // 12 One-shot TZ5 select
Uint16 OSHT3:1; // 10 One-shot TZ3 select Uint16 OSHT6:1; // 13 One-shot TZ6 select
/* Битовое поле OSHT4, ширина 1 бит; данные OSHT4. */
Uint16 OSHT4:1; // 11 One-shot TZ4 select
/* Битовое поле OSHT5, ширина 1 бит; данные OSHT5. */
Uint16 OSHT5:1; // 12 One-shot TZ5 select
/* Битовое поле OSHT6, ширина 1 бит; данные OSHT6. */
Uint16 OSHT6:1; // 13 One-shot TZ6 select
/* Битовое поле rsvd2, ширина 2 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:2; // 15:14 reserved Uint16 rsvd2:2; // 15:14 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TZSEL_REG в одной области памяти. */
union TZSEL_REG { union TZSEL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TZSEL_BITS bit;; порядок полей определяет расположение данных. */
struct TZSEL_BITS bit; struct TZSEL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Trip zone control register bit definitions */ // Trip zone control register bit definitions */
/* Описывает структуру TZCTL_BITS; порядок полей определяет расположение данных. */
struct TZCTL_BITS { // bits description struct TZCTL_BITS { // bits description
/* Битовое поле TZA, ширина 2 бит; данные TZA. */
Uint16 TZA:2; // 1:0 TZ1 to TZ6 Trip Action On EPWMxA 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 Uint16 TZB:2; // 3:2 TZ1 to TZ6 Trip Action On EPWMxB
/* Битовое поле rsvd, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd:12; // 15:4 reserved Uint16 rsvd:12; // 15:4 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TZCTL_REG в одной области памяти. */
union TZCTL_REG { union TZCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TZCTL_BITS bit;; порядок полей определяет расположение данных. */
struct TZCTL_BITS bit; struct TZCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Trip zone control register bit definitions */ // Trip zone control register bit definitions */
/* Описывает структуру TZEINT_BITS; порядок полей определяет расположение данных. */
struct TZEINT_BITS { // bits description struct TZEINT_BITS { // bits description
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 0 reserved Uint16 rsvd1:1; // 0 reserved
/* Битовое поле CBC, ширина 1 бит; данные CBC. */
Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int Enable Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int Enable
/* Битовое поле OST, ширина 1 бит; данные OST. */
Uint16 OST:1; // 2 Trip Zones One Shot Int Enable Uint16 OST:1; // 2 Trip Zones One Shot Int Enable
/* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved Uint16 rsvd2:13; // 15:3 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ };
};
/* Объединяет несколько представлений TZEINT_REG в одной области памяти. */
union TZEINT_REG { union TZEINT_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TZEINT_BITS bit;; порядок полей определяет расположение данных. */
struct TZEINT_BITS bit; struct TZEINT_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Trip zone flag register bit definitions */ // Trip zone flag register bit definitions */
/* Описывает структуру TZFLG_BITS; порядок полей определяет расположение данных. */
struct TZFLG_BITS { // bits description struct TZFLG_BITS { // bits description
/* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 Global status Uint16 INT:1; // 0 Global status
/* Битовое поле CBC, ширина 1 бит; данные CBC. */
Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int
/* Битовое поле OST, ширина 1 бит; данные OST. */
Uint16 OST:1; // 2 Trip Zones One Shot Int Uint16 OST:1; // 2 Trip Zones One Shot Int
/* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved Uint16 rsvd2:13; // 15:3 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TZFLG_REG в одной области памяти. */
union TZFLG_REG { union TZFLG_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TZFLG_BITS bit;; порядок полей определяет расположение данных. */
struct TZFLG_BITS bit; struct TZFLG_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Trip zone flag clear register bit definitions */ // Trip zone flag clear register bit definitions */
/* Описывает структуру TZCLR_BITS; порядок полей определяет расположение данных. */
struct TZCLR_BITS { // bits description struct TZCLR_BITS { // bits description
/* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 Global status Uint16 INT:1; // 0 Global status
/* Битовое поле CBC, ширина 1 бит; данные CBC. */
Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int
/* Битовое поле OST, ширина 1 бит; данные OST. */
Uint16 OST:1; // 2 Trip Zones One Shot Int Uint16 OST:1; // 2 Trip Zones One Shot Int
/* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved Uint16 rsvd2:13; // 15:3 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TZCLR_REG в одной области памяти. */
union TZCLR_REG { union TZCLR_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TZCLR_BITS bit;; порядок полей определяет расположение данных. */
struct TZCLR_BITS bit; struct TZCLR_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Trip zone flag force register bit definitions */ // Trip zone flag force register bit definitions */
/* Описывает структуру TZFRC_BITS; порядок полей определяет расположение данных. */
struct TZFRC_BITS { // bits description struct TZFRC_BITS { // bits description
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 0 reserved Uint16 rsvd1:1; // 0 reserved
/* Битовое поле CBC, ширина 1 бит; данные CBC. */
Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int Uint16 CBC:1; // 1 Trip Zones Cycle By Cycle Int
/* Битовое поле OST, ширина 1 бит; данные OST. */
Uint16 OST:1; // 2 Trip Zones One Shot Int Uint16 OST:1; // 2 Trip Zones One Shot Int
/* Битовое поле rsvd2, ширина 13 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:13; // 15:3 reserved Uint16 rsvd2:13; // 15:3 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TZFRC_REG в одной области памяти. */
union TZFRC_REG { union TZFRC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру TZFRC_BITS bit;; порядок полей определяет расположение данных. */
struct TZFRC_BITS bit; struct TZFRC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Event trigger select register bit definitions */ // Event trigger select register bit definitions */
/* Описывает структуру ETSEL_BITS; порядок полей определяет расположение данных. */
struct ETSEL_BITS { // bits description struct ETSEL_BITS { // bits description
/* Битовое поле INTSEL, ширина 3 бит; данные INTSEL. */
Uint16 INTSEL:3; // 2:0 EPWMxINTn Select Uint16 INTSEL:3; // 2:0 EPWMxINTn Select
/* Битовое поле INTEN, ширина 1 бит; данные INTEN. */
Uint16 INTEN:1; // 3 EPWMxINTn Enable Uint16 INTEN:1; // 3 EPWMxINTn Enable
/* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 7:4 reserved Uint16 rsvd1:4; // 7:4 reserved
/* Битовое поле SOCASEL, ширина 3 бит; данные SOCASEL. */
Uint16 SOCASEL:3; // 10:8 Start of conversion A Select Uint16 SOCASEL:3; // 10:8 Start of conversion A Select
/* Битовое поле SOCAEN, ширина 1 бит; данные SOCAEN. */
Uint16 SOCAEN:1; // 11 Start of conversion A Enable Uint16 SOCAEN:1; // 11 Start of conversion A Enable
/* Битовое поле SOCBSEL, ширина 3 бит; данные SOCBSEL. */
Uint16 SOCBSEL:3; // 14:12 Start of conversion B Select Uint16 SOCBSEL:3; // 14:12 Start of conversion B Select
/* Битовое поле SOCBEN, ширина 1 бит; данные SOCBEN. */
Uint16 SOCBEN:1; // 15 Start of conversion B Enable Uint16 SOCBEN:1; // 15 Start of conversion B Enable
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ETSEL_REG в одной области памяти. */
union ETSEL_REG { union ETSEL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ETSEL_BITS bit;; порядок полей определяет расположение данных. */
struct ETSEL_BITS bit; struct ETSEL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Event trigger pre-scale register bit definitions */ // Event trigger pre-scale register bit definitions */
/* Описывает структуру ETPS_BITS; порядок полей определяет расположение данных. */
struct ETPS_BITS { // bits description struct ETPS_BITS { // bits description
/* Битовое поле INTPRD, ширина 2 бит; данные INTPRD. */
Uint16 INTPRD:2; // 1:0 EPWMxINTn Period Select Uint16 INTPRD:2; // 1:0 EPWMxINTn Period Select
/* Битовое поле INTCNT, ширина 2 бит; данные INTCNT. */
Uint16 INTCNT:2; // 3:2 EPWMxINTn Counter Register Uint16 INTCNT:2; // 3:2 EPWMxINTn Counter Register
/* Битовое поле rsvd1, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:4; // 7:4 reserved Uint16 rsvd1:4; // 7:4 reserved
/* Битовое поле SOCAPRD, ширина 2 бит; данные SOCAPRD. */
Uint16 SOCAPRD:2; // 9:8 EPWMxSOCA Period Select Uint16 SOCAPRD:2; // 9:8 EPWMxSOCA Period Select
/* Битовое поле SOCACNT, ширина 2 бит; данные SOCACNT. */
Uint16 SOCACNT:2; // 11:10 EPWMxSOCA Counter Register Uint16 SOCACNT:2; // 11:10 EPWMxSOCA Counter Register
/* Битовое поле SOCBPRD, ширина 2 бит; данные SOCBPRD. */
Uint16 SOCBPRD:2; // 13:12 EPWMxSOCB Period Select Uint16 SOCBPRD:2; // 13:12 EPWMxSOCB Period Select
/* Битовое поле SOCBCNT, ширина 2 бит; данные SOCBCNT. */
Uint16 SOCBCNT:2; // 15:14 EPWMxSOCB Counter Register Uint16 SOCBCNT:2; // 15:14 EPWMxSOCB Counter Register
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ETPS_REG в одной области памяти. */
union ETPS_REG { union ETPS_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ETPS_BITS bit;; порядок полей определяет расположение данных. */
struct ETPS_BITS bit; struct ETPS_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Event trigger Flag register bit definitions */ // Event trigger Flag register bit definitions */
/* Описывает структуру ETFLG_BITS; порядок полей определяет расположение данных. */
struct ETFLG_BITS { // bits description struct ETFLG_BITS { // bits description
/* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 EPWMxINTn Flag Uint16 INT:1; // 0 EPWMxINTn Flag
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved Uint16 rsvd1:1; // 1 reserved
/* Битовое поле SOCA, ширина 1 бит; данные SOCA. */
Uint16 SOCA:1; // 2 EPWMxSOCA Flag Uint16 SOCA:1; // 2 EPWMxSOCA Flag
/* Битовое поле SOCB, ширина 1 бит; данные SOCB. */
Uint16 SOCB:1; // 3 EPWMxSOCB Flag Uint16 SOCB:1; // 3 EPWMxSOCB Flag
/* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved Uint16 rsvd2:12; // 15:4 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ETFLG_REG в одной области памяти. */
union ETFLG_REG { union ETFLG_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ETFLG_BITS bit;; порядок полей определяет расположение данных. */
struct ETFLG_BITS bit; struct ETFLG_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Event trigger Clear register bit definitions */ // Event trigger Clear register bit definitions */
/* Описывает структуру ETCLR_BITS; порядок полей определяет расположение данных. */
struct ETCLR_BITS { // bits description struct ETCLR_BITS { // bits description
/* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 EPWMxINTn Clear Uint16 INT:1; // 0 EPWMxINTn Clear
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved Uint16 rsvd1:1; // 1 reserved
/* Битовое поле SOCA, ширина 1 бит; данные SOCA. */
Uint16 SOCA:1; // 2 EPWMxSOCA Clear Uint16 SOCA:1; // 2 EPWMxSOCA Clear
/* Битовое поле SOCB, ширина 1 бит; данные SOCB. */
Uint16 SOCB:1; // 3 EPWMxSOCB Clear Uint16 SOCB:1; // 3 EPWMxSOCB Clear
/* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved Uint16 rsvd2:12; // 15:4 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ETCLR_REG в одной области памяти. */
union ETCLR_REG { union ETCLR_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ETCLR_BITS bit;; порядок полей определяет расположение данных. */
struct ETCLR_BITS bit; struct ETCLR_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// Event trigger Force register bit definitions */ // Event trigger Force register bit definitions */
/* Описывает структуру ETFRC_BITS; порядок полей определяет расположение данных. */
struct ETFRC_BITS { // bits description struct ETFRC_BITS { // bits description
/* Битовое поле INT, ширина 1 бит; данные INT. */
Uint16 INT:1; // 0 EPWMxINTn Force Uint16 INT:1; // 0 EPWMxINTn Force
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 1 reserved Uint16 rsvd1:1; // 1 reserved
/* Битовое поле SOCA, ширина 1 бит; данные SOCA. */
Uint16 SOCA:1; // 2 EPWMxSOCA Force Uint16 SOCA:1; // 2 EPWMxSOCA Force
/* Битовое поле SOCB, ширина 1 бит; данные SOCB. */
Uint16 SOCB:1; // 3 EPWMxSOCB Force Uint16 SOCB:1; // 3 EPWMxSOCB Force
/* Битовое поле rsvd2, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:12; // 15:4 reserved Uint16 rsvd2:12; // 15:4 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений ETFRC_REG в одной области памяти. */
union ETFRC_REG { union ETFRC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру ETFRC_BITS bit;; порядок полей определяет расположение данных. */
struct ETFRC_BITS bit; struct ETFRC_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// PWM chopper control register bit definitions */ // PWM chopper control register bit definitions */
/* Описывает структуру PCCTL_BITS; порядок полей определяет расположение данных. */
struct PCCTL_BITS { // bits description struct PCCTL_BITS { // bits description
/* Битовое поле CHPEN, ширина 1 бит; данные CHPEN. */
Uint16 CHPEN:1; // 0 PWM chopping enable Uint16 CHPEN:1; // 0 PWM chopping enable
/* Битовое поле OSHTWTH, ширина 4 бит; данные OSHTWTH. */
Uint16 OSHTWTH:4; // 4:1 One-shot pulse width Uint16 OSHTWTH:4; // 4:1 One-shot pulse width
/* Битовое поле CHPFREQ, ширина 3 бит; данные CHPFREQ. */
Uint16 CHPFREQ:3; // 7:5 Chopping clock frequency Uint16 CHPFREQ:3; // 7:5 Chopping clock frequency
/* Битовое поле CHPDUTY, ширина 3 бит; данные CHPDUTY. */
Uint16 CHPDUTY:3; // 10:8 Chopping clock Duty cycle Uint16 CHPDUTY:3; // 10:8 Chopping clock Duty cycle
/* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 15:11 reserved Uint16 rsvd1:5; // 15:11 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений PCCTL_REG в одной области памяти. */
union PCCTL_REG { union PCCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру PCCTL_BITS bit;; порядок полей определяет расположение данных. */
struct PCCTL_BITS bit; struct PCCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру HRCNFG_BITS; порядок полей определяет расположение данных. */
struct HRCNFG_BITS { // bits description struct HRCNFG_BITS { // bits description
/* Битовое поле EDGMODE, ширина 2 бит; данные EDGMODE. */
Uint16 EDGMODE:2; // 1:0 Edge Mode select Bits Uint16 EDGMODE:2; // 1:0 Edge Mode select Bits
/* Битовое поле CTLMODE, ширина 1 бит; данные CTLMODE. */
Uint16 CTLMODE:1; // 2 Control mode Select Bit Uint16 CTLMODE:1; // 2 Control mode Select Bit
/* Битовое поле HRLOAD, ширина 1 бит; данные HRLOAD. */
Uint16 HRLOAD:1; // 3 Shadow mode Select Bit Uint16 HRLOAD:1; // 3 Shadow mode Select Bit
/* Битовое поле rsvd1, ширина 12 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:12; // 15:4 reserved Uint16 rsvd1:12; // 15:4 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений HRCNFG_REG в одной области памяти. */
union HRCNFG_REG { union HRCNFG_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру HRCNFG_BITS bit;; порядок полей определяет расположение данных. */
struct HRCNFG_BITS bit; struct HRCNFG_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру TBPHS_HRPWM_REG; порядок полей определяет расположение данных. */
struct TBPHS_HRPWM_REG { // bits description struct TBPHS_HRPWM_REG { // bits description
/* Объявляет TBPHSHR — данные TBPHSHR. */
Uint16 TBPHSHR; // 15:0 Extension register for HRPWM Phase (8 bits) Uint16 TBPHSHR; // 15:0 Extension register for HRPWM Phase (8 bits)
/* Объявляет TBPHS — данные TBPHS. */
Uint16 TBPHS; // 31:16 Phase offset register Uint16 TBPHS; // 31:16 Phase offset register
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений TBPHS_HRPWM_GROUP в одной области памяти. */
union TBPHS_HRPWM_GROUP { union TBPHS_HRPWM_GROUP {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру TBPHS_HRPWM_REG half;; порядок полей определяет расположение данных. */
struct TBPHS_HRPWM_REG half; struct TBPHS_HRPWM_REG half;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру CMPA_HRPWM_REG; порядок полей определяет расположение данных. */
struct CMPA_HRPWM_REG { // bits description struct CMPA_HRPWM_REG { // bits description
/* Объявляет CMPAHR — данные CMPAHR. */
Uint16 CMPAHR; // 15:0 Extension register for HRPWM compare (8 bits) Uint16 CMPAHR; // 15:0 Extension register for HRPWM compare (8 bits)
/* Объявляет CMPA — данные CMPA. */
Uint16 CMPA; // 31:16 Compare A reg Uint16 CMPA; // 31:16 Compare A reg
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений CMPA_HRPWM_GROUP в одной области памяти. */
union CMPA_HRPWM_GROUP { union CMPA_HRPWM_GROUP {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint32 all; Uint32 all;
/* Описывает структуру CMPA_HRPWM_REG half;; порядок полей определяет расположение данных. */
struct CMPA_HRPWM_REG half; struct CMPA_HRPWM_REG half;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Описывает структуру EPWM_REGS; порядок полей определяет расположение данных. */
struct EPWM_REGS { struct EPWM_REGS {
/* Объединяет несколько представлений TBCTL_REG TBCTL; в одной области памяти. */ union TBCTL_REG TBCTL; //
union TBCTL_REG TBCTL; // union TBSTS_REG TBSTS; //
/* Объединяет несколько представлений TBSTS_REG TBSTS; в одной области памяти. */
union TBSTS_REG TBSTS; //
/* Объединяет несколько представлений TBPHS_HRPWM_GROUP TBPHS; в одной области памяти. */
union TBPHS_HRPWM_GROUP TBPHS; // Union of TBPHS:TBPHSHR union TBPHS_HRPWM_GROUP TBPHS; // Union of TBPHS:TBPHSHR
/* Объявляет TBCTR — данные TBCTR. */
Uint16 TBCTR; // Counter Uint16 TBCTR; // Counter
/* Объявляет TBPRD — данные TBPRD. */ Uint16 TBPRD; // Period register set
Uint16 TBPRD; // Period register set Uint16 rsvd1; //
/* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1; //
/* Объединяет несколько представлений CMPCTL_REG CMPCTL; в одной области памяти. */
union CMPCTL_REG CMPCTL; // Compare control union CMPCTL_REG CMPCTL; // Compare control
/* Объединяет несколько представлений CMPA_HRPWM_GROUP CMPA; в одной области памяти. */
union CMPA_HRPWM_GROUP CMPA; // Union of CMPA:CMPAHR union CMPA_HRPWM_GROUP CMPA; // Union of CMPA:CMPAHR
/* Объявляет CMPB — данные CMPB. */
Uint16 CMPB; // Compare B reg Uint16 CMPB; // Compare B reg
/* Объединяет несколько представлений AQCTL_REG AQCTLA; в одной области памяти. */
union AQCTL_REG AQCTLA; // Action qual output A union AQCTL_REG AQCTLA; // Action qual output A
/* Объединяет несколько представлений AQCTL_REG AQCTLB; в одной области памяти. */
union AQCTL_REG AQCTLB; // Action qual output B union AQCTL_REG AQCTLB; // Action qual output B
/* Объединяет несколько представлений AQSFRC_REG AQSFRC; в одной области памяти. */
union AQSFRC_REG AQSFRC; // Action qual SW force union AQSFRC_REG AQSFRC; // Action qual SW force
/* Объединяет несколько представлений AQCSFRC_REG AQCSFRC; в одной области памяти. */ union AQCSFRC_REG AQCSFRC; // Action qualifier continuous SW force
union AQCSFRC_REG AQCSFRC; // Action qualifier continuous SW force
/* Объединяет несколько представлений DBCTL_REG DBCTL; в одной области памяти. */
union DBCTL_REG DBCTL; // Dead-band control union DBCTL_REG DBCTL; // Dead-band control
/* Объявляет DBRED — данные DBRED. */
Uint16 DBRED; // Dead-band rising edge delay Uint16 DBRED; // Dead-band rising edge delay
/* Объявляет DBFED — данные DBFED. */
Uint16 DBFED; // Dead-band falling edge delay Uint16 DBFED; // Dead-band falling edge delay
/* Объединяет несколько представлений TZSEL_REG TZSEL; в одной области памяти. */
union TZSEL_REG TZSEL; // Trip zone select union TZSEL_REG TZSEL; // Trip zone select
/* Объявляет rsvd2 — зарезервированные биты для сохранения аппаратного расположения. */ Uint16 rsvd2;
Uint16 rsvd2;
/* Объединяет несколько представлений TZCTL_REG TZCTL; в одной области памяти. */
union TZCTL_REG TZCTL; // Trip zone control union TZCTL_REG TZCTL; // Trip zone control
/* Объединяет несколько представлений TZEINT_REG TZEINT; в одной области памяти. */
union TZEINT_REG TZEINT; // Trip zone interrupt enable union TZEINT_REG TZEINT; // Trip zone interrupt enable
/* Объединяет несколько представлений TZFLG_REG TZFLG; в одной области памяти. */
union TZFLG_REG TZFLG; // Trip zone interrupt flags union TZFLG_REG TZFLG; // Trip zone interrupt flags
/* Объединяет несколько представлений TZCLR_REG TZCLR; в одной области памяти. */ union TZCLR_REG TZCLR; // Trip zone clear
union TZCLR_REG TZCLR; // Trip zone clear
/* Объединяет несколько представлений TZFRC_REG TZFRC; в одной области памяти. */
union TZFRC_REG TZFRC; // Trip zone force interrupt union TZFRC_REG TZFRC; // Trip zone force interrupt
/* Объединяет несколько представлений ETSEL_REG ETSEL; в одной области памяти. */
union ETSEL_REG ETSEL; // Event trigger selection union ETSEL_REG ETSEL; // Event trigger selection
/* Объединяет несколько представлений ETPS_REG ETPS; в одной области памяти. */
union ETPS_REG ETPS; // Event trigger pre-scaler union ETPS_REG ETPS; // Event trigger pre-scaler
/* Объединяет несколько представлений ETFLG_REG ETFLG; в одной области памяти. */
union ETFLG_REG ETFLG; // Event trigger flags union ETFLG_REG ETFLG; // Event trigger flags
/* Объединяет несколько представлений ETCLR_REG ETCLR; в одной области памяти. */ union ETCLR_REG ETCLR; // Event trigger clear
union ETCLR_REG ETCLR; // Event trigger clear
/* Объединяет несколько представлений ETFRC_REG ETFRC; в одной области памяти. */
union ETFRC_REG ETFRC; // Event trigger force union ETFRC_REG ETFRC; // Event trigger force
/* Объединяет несколько представлений PCCTL_REG PCCTL; в одной области памяти. */
union PCCTL_REG PCCTL; // PWM chopper control union PCCTL_REG PCCTL; // PWM chopper control
/* Объявляет rsvd3 — зарезервированные биты для сохранения аппаратного расположения. */ Uint16 rsvd3; //
Uint16 rsvd3; //
/* Объединяет несколько представлений HRCNFG_REG HRCNFG; в одной области памяти. */
union HRCNFG_REG HRCNFG; // HRPWM Config Reg union HRCNFG_REG HRCNFG; // HRPWM Config Reg
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// External References & Function Declarations: // External References & Function Declarations:
// //
/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm1Regs;; порядок элементов сохраняется. */
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 EPwm2Regs;
/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm3Regs;; порядок элементов сохраняется. */
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 EPwm4Regs;
/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm5Regs;; порядок элементов сохраняется. */
extern volatile struct EPWM_REGS EPwm5Regs; extern volatile struct EPWM_REGS EPwm5Regs;
/* Продолжает список аргументов, полей или выражение extern volatile struct EPWM_REGS EPwm6Regs;; порядок элементов сохраняется. */
extern volatile struct EPWM_REGS EPwm6Regs; extern volatile struct EPWM_REGS EPwm6Regs;
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_EPWM_H definition #endif // end of DSP2833x_EPWM_H definition
//=========================================================================== //===========================================================================

View File

@@ -1,11 +1,10 @@
/* Поставляемое TI описание EQep для семейства C2833x. Русские пояснения сохранены в UTF-8. */
// TI File $Revision: /main/1 $ // TI File $Revision: /main/1 $
// Checkin $Date: August 18, 2006 13:52:13 $ // Checkin $Date: August 18, 2006 13:52:13 $
//########################################################################### //###########################################################################
// //
// FILE: DSP2833x_EQep.h // FILE: DSP2833x_EQep.h
// //
// TITLE: DSP2833x Enhanced Quadrature Encoder Pulse Module // TITLE: DSP2833x Enhanced Quadrature Encoder Pulse Module
// Register Bit Definitions. // Register Bit Definitions.
// //
//########################################################################### //###########################################################################
@@ -13,393 +12,229 @@
// $Release Date: August 1, 2008 $ // $Release Date: August 1, 2008 $
//########################################################################### //###########################################################################
/* Начинает условие: DSP2833x_EQEP_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
#ifndef DSP2833x_EQEP_H #ifndef DSP2833x_EQEP_H
/* Определяет защитный символ или переключатель DSP2833x_EQEP_H для последующей компиляции. */
#define DSP2833x_EQEP_H #define DSP2833x_EQEP_H
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
extern "C" { extern "C" {
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif #endif
//---------------------------------------------------- //----------------------------------------------------
// Capture decoder control register bit definitions */ // Capture decoder control register bit definitions */
/* Описывает структуру QDECCTL_BITS; порядок полей определяет расположение данных. */
struct QDECCTL_BITS { // bits description struct QDECCTL_BITS { // bits description
/* Битовое поле rsvd1, ширина 5 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:5; // 4:0 reserved Uint16 rsvd1:5; // 4:0 reserved
/* Битовое поле QSP, ширина 1 бит; данные QSP. */
Uint16 QSP:1; // 5 QEPS input polarity Uint16 QSP:1; // 5 QEPS input polarity
/* Битовое поле QIP, ширина 1 бит; данные QIP. */
Uint16 QIP:1; // 6 QEPI input polarity Uint16 QIP:1; // 6 QEPI input polarity
/* Битовое поле QBP, ширина 1 бит; данные QBP. */
Uint16 QBP:1; // 7 QEPB input polarity Uint16 QBP:1; // 7 QEPB input polarity
/* Битовое поле QAP, ширина 1 бит; данные QAP. */
Uint16 QAP:1; // 8 QEPA input polarity Uint16 QAP:1; // 8 QEPA input polarity
/* Битовое поле IGATE, ширина 1 бит; данные IGATE. */
Uint16 IGATE:1; // 9 Index pulse gating option Uint16 IGATE:1; // 9 Index pulse gating option
/* Битовое поле SWAP, ширина 1 бит; данные SWAP. */
Uint16 SWAP:1; // 10 CLK/DIR signal source for Position Counter Uint16 SWAP:1; // 10 CLK/DIR signal source for Position Counter
/* Битовое поле XCR, ширина 1 бит; данные XCR. */
Uint16 XCR:1; // 11 External clock rate Uint16 XCR:1; // 11 External clock rate
/* Битовое поле SPSEL, ширина 1 бит; данные SPSEL. */
Uint16 SPSEL:1; // 12 Sync output pin select Uint16 SPSEL:1; // 12 Sync output pin select
/* Битовое поле SOEN, ширина 1 бит; данные SOEN. */
Uint16 SOEN:1; // 13 Enable position compare sync Uint16 SOEN:1; // 13 Enable position compare sync
/* Битовое поле QSRC, ширина 2 бит; данные QSRC. */
Uint16 QSRC:2; // 15:14 Position counter source Uint16 QSRC:2; // 15:14 Position counter source
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений QDECCTL_REG в одной области памяти. */
union QDECCTL_REG { union QDECCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру QDECCTL_BITS bit;; порядок полей определяет расположение данных. */
struct QDECCTL_BITS bit; struct QDECCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// QEP control register bit definitions */ // QEP control register bit definitions */
/* Описывает структуру QEPCTL_BITS; порядок полей определяет расположение данных. */
struct QEPCTL_BITS { // bits description struct QEPCTL_BITS { // bits description
/* Битовое поле WDE, ширина 1 бит; данные WDE. */
Uint16 WDE:1; // 0 QEP watchdog enable Uint16 WDE:1; // 0 QEP watchdog enable
/* Битовое поле UTE, ширина 1 бит; данные UTE. */
Uint16 UTE:1; // 1 QEP unit timer enable Uint16 UTE:1; // 1 QEP unit timer enable
/* Битовое поле QCLM, ширина 1 бит; данные QCLM. */
Uint16 QCLM:1; // 2 QEP capture latch mode Uint16 QCLM:1; // 2 QEP capture latch mode
/* Битовое поле QPEN, ширина 1 бит; данные QPEN. */
Uint16 QPEN:1; // 3 Quadrature position counter enable Uint16 QPEN:1; // 3 Quadrature position counter enable
/* Битовое поле IEL, ширина 2 бит; данные IEL. */
Uint16 IEL:2; // 5:4 Index event latch Uint16 IEL:2; // 5:4 Index event latch
/* Битовое поле SEL, ширина 1 бит; данные SEL. */
Uint16 SEL:1; // 6 Strobe event latch Uint16 SEL:1; // 6 Strobe event latch
/* Битовое поле SWI, ширина 1 бит; данные SWI. */
Uint16 SWI:1; // 7 Software init position counter Uint16 SWI:1; // 7 Software init position counter
/* Битовое поле IEI, ширина 2 бит; данные IEI. */
Uint16 IEI:2; // 9:8 Index event init of position count Uint16 IEI:2; // 9:8 Index event init of position count
/* Битовое поле SEI, ширина 2 бит; данные SEI. */
Uint16 SEI:2; // 11:10 Strobe event init Uint16 SEI:2; // 11:10 Strobe event init
/* Битовое поле PCRM, ширина 2 бит; данные PCRM. */
Uint16 PCRM:2; // 13:12 Position counter reset Uint16 PCRM:2; // 13:12 Position counter reset
/* Битовое поле FREE_SOFT, ширина 2 бит; данные FREE_SOFT. */
Uint16 FREE_SOFT:2; // 15:14 Emulation mode Uint16 FREE_SOFT:2; // 15:14 Emulation mode
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений QEPCTL_REG в одной области памяти. */
union QEPCTL_REG { union QEPCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру QEPCTL_BITS bit;; порядок полей определяет расположение данных. */
struct QEPCTL_BITS bit; struct QEPCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ };
};
//---------------------------------------------------- //----------------------------------------------------
// Quadrature capture control register bit definitions */ // Quadrature capture control register bit definitions */
/* Описывает структуру QCAPCTL_BITS; порядок полей определяет расположение данных. */
struct QCAPCTL_BITS { // bits description struct QCAPCTL_BITS { // bits description
/* Битовое поле UPPS, ширина 4 бит; данные UPPS. */ Uint16 UPPS:4; // 3:0 Unit position pre-scale
Uint16 UPPS:4; // 3:0 Unit position pre-scale
/* Битовое поле CCPS, ширина 3 бит; данные CCPS. */
Uint16 CCPS:3; // 6:4 QEP capture timer pre-scale Uint16 CCPS:3; // 6:4 QEP capture timer pre-scale
/* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 14:7 reserved Uint16 rsvd1:8; // 14:7 reserved
/* Битовое поле CEN, ширина 1 бит; данные CEN. */
Uint16 CEN:1; // 15 Enable QEP capture Uint16 CEN:1; // 15 Enable QEP capture
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений QCAPCTL_REG в одной области памяти. */
union QCAPCTL_REG { union QCAPCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру QCAPCTL_BITS bit;; порядок полей определяет расположение данных. */
struct QCAPCTL_BITS bit; struct QCAPCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ };
};
//---------------------------------------------------- //----------------------------------------------------
// Position compare control register bit definitions */ // Position compare control register bit definitions */
/* Описывает структуру QPOSCTL_BITS; порядок полей определяет расположение данных. */
struct QPOSCTL_BITS { // bits description struct QPOSCTL_BITS { // bits description
/* Битовое поле PCSPW, ширина 12 бит; данные PCSPW. */
Uint16 PCSPW:12; // 11:0 Position compare sync pulse width Uint16 PCSPW:12; // 11:0 Position compare sync pulse width
/* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 PCE:1; // 12 Position compare enable/disable Uint16 PCE:1; // 12 Position compare enable/disable
/* Битовое поле PCPOL, ширина 1 бит; данные PCPOL. */
Uint16 PCPOL:1; // 13 Polarity of sync output Uint16 PCPOL:1; // 13 Polarity of sync output
/* Битовое поле PCLOAD, ширина 1 бит; данные PCLOAD. */
Uint16 PCLOAD:1; // 14 Position compare of shadow load Uint16 PCLOAD:1; // 14 Position compare of shadow load
/* Битовое поле PCSHDW, ширина 1 бит; данные PCSHDW. */
Uint16 PCSHDW:1; // 15 Position compare shadow enable Uint16 PCSHDW:1; // 15 Position compare shadow enable
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений QPOSCTL_REG в одной области памяти. */
union QPOSCTL_REG { union QPOSCTL_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру QPOSCTL_BITS bit;; порядок полей определяет расположение данных. */
struct QPOSCTL_BITS bit; struct QPOSCTL_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ };
};
//---------------------------------------------------- //----------------------------------------------------
// QEP interrupt control register bit definitions */ // QEP interrupt control register bit definitions */
/* Описывает структуру QEINT_BITS; порядок полей определяет расположение данных. */
struct QEINT_BITS { // bits description struct QEINT_BITS { // bits description
/* Битовое поле rsvd1, ширина 1 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:1; // 0 reserved Uint16 rsvd1:1; // 0 reserved
/* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 PCE:1; // 1 Position counter error Uint16 PCE:1; // 1 Position counter error
/* Битовое поле QPE, ширина 1 бит; данные QPE. */
Uint16 QPE:1; // 2 Quadrature phase error Uint16 QPE:1; // 2 Quadrature phase error
/* Битовое поле QDC, ширина 1 бит; данные QDC. */
Uint16 QDC:1; // 3 Quadrature dir change Uint16 QDC:1; // 3 Quadrature dir change
/* Битовое поле WTO, ширина 1 бит; данные WTO. */
Uint16 WTO:1; // 4 Watchdog timeout Uint16 WTO:1; // 4 Watchdog timeout
/* Битовое поле PCU, ширина 1 бит; данные PCU. */
Uint16 PCU:1; // 5 Position counter underflow Uint16 PCU:1; // 5 Position counter underflow
/* Битовое поле PCO, ширина 1 бит; данные PCO. */
Uint16 PCO:1; // 6 Position counter overflow Uint16 PCO:1; // 6 Position counter overflow
/* Битовое поле PCR, ширина 1 бит; данные PCR. */
Uint16 PCR:1; // 7 Position compare ready Uint16 PCR:1; // 7 Position compare ready
/* Битовое поле PCM, ширина 1 бит; данные PCM. */
Uint16 PCM:1; // 8 Position compare match Uint16 PCM:1; // 8 Position compare match
/* Битовое поле SEL, ширина 1 бит; данные SEL. */
Uint16 SEL:1; // 9 Strobe event latch Uint16 SEL:1; // 9 Strobe event latch
/* Битовое поле IEL, ширина 1 бит; данные IEL. */
Uint16 IEL:1; // 10 Event latch Uint16 IEL:1; // 10 Event latch
/* Битовое поле UTO, ширина 1 бит; данные UTO. */
Uint16 UTO:1; // 11 Unit timeout Uint16 UTO:1; // 11 Unit timeout
/* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 15:12 reserved Uint16 rsvd2:4; // 15:12 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений QEINT_REG в одной области памяти. */
union QEINT_REG { union QEINT_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру QEINT_BITS bit;; порядок полей определяет расположение данных. */
struct QEINT_BITS bit; struct QEINT_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// QEP interrupt status register bit definitions */ // QEP interrupt status register bit definitions */
/* Описывает структуру QFLG_BITS; порядок полей определяет расположение данных. */
struct QFLG_BITS { // bits description struct QFLG_BITS { // bits description
/* Битовое поле INT, ширина 1 бит; данные INT. */ Uint16 INT:1; // 0 Global interrupt
Uint16 INT:1; // 0 Global interrupt
/* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 PCE:1; // 1 Position counter error Uint16 PCE:1; // 1 Position counter error
/* Битовое поле PHE, ширина 1 бит; данные PHE. */
Uint16 PHE:1; // 2 Quadrature phase error Uint16 PHE:1; // 2 Quadrature phase error
/* Битовое поле QDC, ширина 1 бит; данные QDC. */
Uint16 QDC:1; // 3 Quadrature dir change Uint16 QDC:1; // 3 Quadrature dir change
/* Битовое поле WTO, ширина 1 бит; данные WTO. */
Uint16 WTO:1; // 4 Watchdog timeout Uint16 WTO:1; // 4 Watchdog timeout
/* Битовое поле PCU, ширина 1 бит; данные PCU. */
Uint16 PCU:1; // 5 Position counter underflow Uint16 PCU:1; // 5 Position counter underflow
/* Битовое поле PCO, ширина 1 бит; данные PCO. */
Uint16 PCO:1; // 6 Position counter overflow Uint16 PCO:1; // 6 Position counter overflow
/* Битовое поле PCR, ширина 1 бит; данные PCR. */
Uint16 PCR:1; // 7 Position compare ready Uint16 PCR:1; // 7 Position compare ready
/* Битовое поле PCM, ширина 1 бит; данные PCM. */
Uint16 PCM:1; // 8 Position compare match Uint16 PCM:1; // 8 Position compare match
/* Битовое поле SEL, ширина 1 бит; данные SEL. */
Uint16 SEL:1; // 9 Strobe event latch Uint16 SEL:1; // 9 Strobe event latch
/* Битовое поле IEL, ширина 1 бит; данные IEL. */
Uint16 IEL:1; // 10 Event latch Uint16 IEL:1; // 10 Event latch
/* Битовое поле UTO, ширина 1 бит; данные UTO. */
Uint16 UTO:1; // 11 Unit timeout Uint16 UTO:1; // 11 Unit timeout
/* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 15:12 reserved Uint16 rsvd2:4; // 15:12 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений QFLG_REG в одной области памяти. */
union QFLG_REG { union QFLG_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру QFLG_BITS bit;; порядок полей определяет расположение данных. */
struct QFLG_BITS bit; struct QFLG_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
// QEP interrupt force register bit definitions */ // QEP interrupt force register bit definitions */
/* Описывает структуру QFRC_BITS; порядок полей определяет расположение данных. */
struct QFRC_BITS { // bits description struct QFRC_BITS { // bits description
/* Битовое поле reserved, ширина 1 бит; Зарезервировано; сохраняет положение следующих полей в аппаратном регистре. */
Uint16 reserved:1; // 0 Reserved Uint16 reserved:1; // 0 Reserved
/* Битовое поле PCE, ширина 1 бит; данные PCE. */
Uint16 PCE:1; // 1 Position counter error Uint16 PCE:1; // 1 Position counter error
/* Битовое поле PHE, ширина 1 бит; данные PHE. */
Uint16 PHE:1; // 2 Quadrature phase error Uint16 PHE:1; // 2 Quadrature phase error
/* Битовое поле QDC, ширина 1 бит; данные QDC. */
Uint16 QDC:1; // 3 Quadrature dir change Uint16 QDC:1; // 3 Quadrature dir change
/* Битовое поле WTO, ширина 1 бит; данные WTO. */
Uint16 WTO:1; // 4 Watchdog timeout Uint16 WTO:1; // 4 Watchdog timeout
/* Битовое поле PCU, ширина 1 бит; данные PCU. */
Uint16 PCU:1; // 5 Position counter underflow Uint16 PCU:1; // 5 Position counter underflow
/* Битовое поле PCO, ширина 1 бит; данные PCO. */
Uint16 PCO:1; // 6 Position counter overflow Uint16 PCO:1; // 6 Position counter overflow
/* Битовое поле PCR, ширина 1 бит; данные PCR. */
Uint16 PCR:1; // 7 Position compare ready Uint16 PCR:1; // 7 Position compare ready
/* Битовое поле PCM, ширина 1 бит; данные PCM. */
Uint16 PCM:1; // 8 Position compare match Uint16 PCM:1; // 8 Position compare match
/* Битовое поле SEL, ширина 1 бит; данные SEL. */
Uint16 SEL:1; // 9 Strobe event latch Uint16 SEL:1; // 9 Strobe event latch
/* Битовое поле IEL, ширина 1 бит; данные IEL. */
Uint16 IEL:1; // 10 Event latch Uint16 IEL:1; // 10 Event latch
/* Битовое поле UTO, ширина 1 бит; данные UTO. */
Uint16 UTO:1; // 11 Unit timeout Uint16 UTO:1; // 11 Unit timeout
/* Битовое поле rsvd2, ширина 4 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd2:4; // 15:12 reserved Uint16 rsvd2:4; // 15:12 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений QFRC_REG в одной области памяти. */
union QFRC_REG { union QFRC_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру QFRC_BITS bit;; порядок полей определяет расположение данных. */
struct 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 // made as of F2833x Rev A devices
//---------------------------------------------------- //----------------------------------------------------
// QEP status register bit definitions */ // QEP status register bit definitions */
/* Описывает структуру QEPSTS_BITS; порядок полей определяет расположение данных. */
struct QEPSTS_BITS { // bits description struct QEPSTS_BITS { // bits description
/* Битовое поле PCEF, ширина 1 бит; данные PCEF. */
Uint16 PCEF:1; // 0 Position counter error Uint16 PCEF:1; // 0 Position counter error
/* Битовое поле FIMF, ширина 1 бит; данные FIMF. */
Uint16 FIMF:1; // 1 First index marker Uint16 FIMF:1; // 1 First index marker
/* Битовое поле CDEF, ширина 1 бит; данные CDEF. */
Uint16 CDEF:1; // 2 Capture direction error Uint16 CDEF:1; // 2 Capture direction error
/* Битовое поле COEF, ширина 1 бит; данные COEF. */
Uint16 COEF:1; // 3 Capture overflow error Uint16 COEF:1; // 3 Capture overflow error
/* Битовое поле QDLF, ширина 1 бит; данные QDLF. */
Uint16 QDLF:1; // 4 QEP direction latch Uint16 QDLF:1; // 4 QEP direction latch
/* Битовое поле QDF, ширина 1 бит; данные QDF. */
Uint16 QDF:1; // 5 Quadrature direction Uint16 QDF:1; // 5 Quadrature direction
/* Битовое поле FIDF, ширина 1 бит; данные FIDF. */
Uint16 FIDF:1; // 6 Direction on first index marker Uint16 FIDF:1; // 6 Direction on first index marker
/* Битовое поле UPEVNT, ширина 1 бит; данные UPEVNT. */
Uint16 UPEVNT:1; // 7 Unit position event flag Uint16 UPEVNT:1; // 7 Unit position event flag
/* Битовое поле rsvd1, ширина 8 бит; зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1:8; // 15:8 reserved Uint16 rsvd1:8; // 15:8 reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
/* Объединяет несколько представлений QEPSTS_REG в одной области памяти. */
union QEPSTS_REG { union QEPSTS_REG {
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
Uint16 all; Uint16 all;
/* Описывает структуру QEPSTS_BITS bit;; порядок полей определяет расположение данных. */
struct QEPSTS_BITS bit; struct QEPSTS_BITS bit;
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//---------------------------------------------------- //----------------------------------------------------
/* Описывает структуру EQEP_REGS; порядок полей определяет расположение данных. */
struct EQEP_REGS { struct EQEP_REGS {
/* Объявляет QPOSCNT — данные QPOSCNT. */ Uint32 QPOSCNT; // Position counter
Uint32 QPOSCNT; // Position counter
/* Объявляет QPOSINIT — данные QPOSINIT. */
Uint32 QPOSINIT; // Position counter init Uint32 QPOSINIT; // Position counter init
/* Объявляет QPOSMAX — данные QPOSMAX. */
Uint32 QPOSMAX; // Maximum position count Uint32 QPOSMAX; // Maximum position count
/* Объявляет QPOSCMP — данные QPOSCMP. */
Uint32 QPOSCMP; // Position compare Uint32 QPOSCMP; // Position compare
/* Объявляет QPOSILAT — данные QPOSILAT. */
Uint32 QPOSILAT; // Index position latch Uint32 QPOSILAT; // Index position latch
/* Объявляет QPOSSLAT — данные QPOSSLAT. */
Uint32 QPOSSLAT; // Strobe position latch Uint32 QPOSSLAT; // Strobe position latch
/* Объявляет QPOSLAT — данные QPOSLAT. */
Uint32 QPOSLAT; // Position latch Uint32 QPOSLAT; // Position latch
/* Объявляет QUTMR — данные QUTMR. */
Uint32 QUTMR; // Unit timer Uint32 QUTMR; // Unit timer
/* Объявляет QUPRD — данные QUPRD. */
Uint32 QUPRD; // Unit period Uint32 QUPRD; // Unit period
/* Объявляет QWDTMR — данные QWDTMR. */
Uint16 QWDTMR; // QEP watchdog timer Uint16 QWDTMR; // QEP watchdog timer
/* Объявляет QWDPRD — данные QWDPRD. */
Uint16 QWDPRD; // QEP watchdog period Uint16 QWDPRD; // QEP watchdog period
/* Объединяет несколько представлений QDECCTL_REG QDECCTL; в одной области памяти. */
union QDECCTL_REG QDECCTL; // Quadrature decoder control union QDECCTL_REG QDECCTL; // Quadrature decoder control
/* Объединяет несколько представлений QEPCTL_REG QEPCTL; в одной области памяти. */ union QEPCTL_REG QEPCTL; // QEP control
union QEPCTL_REG QEPCTL; // QEP control union QCAPCTL_REG QCAPCTL; // Quadrature capture control
/* Объединяет несколько представлений QCAPCTL_REG QCAPCTL; в одной области памяти. */
union QCAPCTL_REG QCAPCTL; // Quadrature capture control
/* Объединяет несколько представлений QPOSCTL_REG QPOSCTL; в одной области памяти. */
union QPOSCTL_REG QPOSCTL; // Position compare control union QPOSCTL_REG QPOSCTL; // Position compare control
/* Объединяет несколько представлений QEINT_REG QEINT; в одной области памяти. */ union QEINT_REG QEINT; // QEP interrupt control
union QEINT_REG QEINT; // QEP interrupt control
/* Объединяет несколько представлений QFLG_REG QFLG; в одной области памяти. */
union QFLG_REG QFLG; // QEP interrupt flag union QFLG_REG QFLG; // QEP interrupt flag
/* Объединяет несколько представлений QFLG_REG QCLR; в одной области памяти. */ union QFLG_REG QCLR; // QEP interrupt clear
union QFLG_REG QCLR; // QEP interrupt clear union QFRC_REG QFRC; // QEP interrupt force
/* Объединяет несколько представлений QFRC_REG QFRC; в одной области памяти. */
union QFRC_REG QFRC; // QEP interrupt force
/* Объединяет несколько представлений QEPSTS_REG QEPSTS; в одной области памяти. */
union QEPSTS_REG QEPSTS; // QEP status union QEPSTS_REG QEPSTS; // QEP status
/* Объявляет QCTMR — данные QCTMR. */
Uint16 QCTMR; // QEP capture timer Uint16 QCTMR; // QEP capture timer
/* Объявляет QCPRD — данные QCPRD. */
Uint16 QCPRD; // QEP capture period Uint16 QCPRD; // QEP capture period
/* Объявляет QCTMRLAT — данные QCTMRLAT. */
Uint16 QCTMRLAT; // QEP capture latch Uint16 QCTMRLAT; // QEP capture latch
/* Объявляет QCPRDLAT — данные QCPRDLAT. */
Uint16 QCPRDLAT; // QEP capture period latch Uint16 QCPRDLAT; // QEP capture period latch
/* Объявляет rsvd1 — зарезервированные биты для сохранения аппаратного расположения. */
Uint16 rsvd1[30]; // reserved Uint16 rsvd1[30]; // reserved
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// GPI/O External References & Function Declarations: // GPI/O External References & Function Declarations:
// //
/* Продолжает список аргументов, полей или выражение extern volatile struct EQEP_REGS EQep1Regs;; порядок элементов сохраняется. */
extern volatile struct EQEP_REGS EQep1Regs; extern volatile struct EQEP_REGS EQep1Regs;
/* Продолжает список аргументов, полей или выражение extern volatile struct EQEP_REGS EQep2Regs;; порядок элементов сохраняется. */
extern volatile struct EQEP_REGS EQep2Regs; extern volatile struct EQEP_REGS EQep2Regs;
/* Включает следующий блок только при определённом символе __cplusplus. */
#ifdef __cplusplus #ifdef __cplusplus
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
} }
#endif /* extern "C" */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* extern "C" */
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
#endif // end of DSP2833x_EQEP_H definition #endif // end of DSP2833x_EQEP_H definition
//=========================================================================== //===========================================================================

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