Compare commits
1 Commits
pm35-uart-
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 9b15d9837a |
@@ -1,6 +0,0 @@
|
|||||||
# Общая кодировка редактируемых файлов проекта.
|
|
||||||
root = true
|
|
||||||
|
|
||||||
# Русские комментарии сохраняются без BOM в UTF-8.
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
58
.gitignore
vendored
58
.gitignore
vendored
@@ -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
1
Bin/.gitignore
vendored
@@ -1,2 +1 @@
|
|||||||
# Исключает из Git артефакты по шаблону ниже.
|
|
||||||
/UKSSTMS320F28335.out
|
/UKSSTMS320F28335.out
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
"schema": 1,
|
|
||||||
"product": "Balsam-167-PM35",
|
|
||||||
"target": "TMS320F28335",
|
|
||||||
"version": [
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"build_id": "c6c9128+",
|
|
||||||
"built_at_utc": "2026-10-09T13:10:25+00:00",
|
|
||||||
"source": {
|
|
||||||
"commit": "c6c91282387adc789a7ebbc6f7e763d02b549789",
|
|
||||||
"dirty": true
|
|
||||||
},
|
|
||||||
"templates": {
|
|
||||||
"commit": "86ece3ea907cc92db73390eaae7551dd01b54e2c",
|
|
||||||
"dirty": true
|
|
||||||
},
|
|
||||||
"identity_contract": 1,
|
|
||||||
"identity_register_count": 12,
|
|
||||||
"eeprom": "M95M02",
|
|
||||||
"eeprom_bytes": 262144,
|
|
||||||
"firmware_limit_bytes": 261884,
|
|
||||||
"gas": {
|
|
||||||
"enabled": true,
|
|
||||||
"version": 1,
|
|
||||||
"profile": 167,
|
|
||||||
"info_words": 8,
|
|
||||||
"register_count": 128,
|
|
||||||
"transports": [
|
|
||||||
"modbus_rtu",
|
|
||||||
"ump_service_can"
|
|
||||||
],
|
|
||||||
"info_base": 24320,
|
|
||||||
"register_base": 20480
|
|
||||||
},
|
|
||||||
"file": "UKSSTMS320F28335_GAS_M95M02.bin",
|
|
||||||
"size_bytes": 33174,
|
|
||||||
"sha256": "a1c186e5f114ea2f77ac5f18a60424c79f53b1e3a49e0343ac9bd96979f0347e"
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
a1c186e5f114ea2f77ac5f18a60424c79f53b1e3a49e0343ac9bd96979f0347e UKSSTMS320F28335_GAS_M95M02.bin
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"after_bytes": 32472,
|
|
||||||
"profile": 0,
|
|
||||||
"gas_added_bytes": 0,
|
|
||||||
"binary_identical": true,
|
|
||||||
"before_bytes": 32472
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"after_bytes": 33174,
|
|
||||||
"profile": 1,
|
|
||||||
"gas_added_bytes": 410,
|
|
||||||
"binary_identical": false,
|
|
||||||
"before_bytes": 32764
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,358 +0,0 @@
|
|||||||
/* Последовательный вывод данных канала индикации. Русские пояснения сохранены в UTF-8. */
|
|
||||||
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
|
|
||||||
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
|
|
||||||
/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
|
|
||||||
#include "DSP2833x_SWPrioritizedIsrLevels.h"
|
|
||||||
/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
|
|
||||||
#include "filter_bat2.h"
|
|
||||||
/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
|
|
||||||
#include "measure.h"
|
|
||||||
|
|
||||||
/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
|
|
||||||
#include "RS485.h"
|
|
||||||
/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
|
|
||||||
#include "message.h"
|
|
||||||
/* Подключает "kanal.h": последовательный вывод данных канала индикации. */
|
|
||||||
#include "kanal.h"
|
|
||||||
/* Подключает "pulto.h": обмен и индикация пульта. */
|
|
||||||
#include "pulto.h"
|
|
||||||
/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
|
|
||||||
#include "package.h"
|
|
||||||
/* Подключает "tools.h": настройка внешней памяти и служебные задержки. */
|
|
||||||
#include "tools.h"
|
|
||||||
|
|
||||||
/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
|
|
||||||
#include "peripher.h"
|
|
||||||
|
|
||||||
/* Объявляет digits — данные digits. Начальное значение задаётся справа от знака равенства. */
|
|
||||||
int digits[16] = {63,6,91,79,102,109,125,7,127,111,64,0,0,0,121,0};
|
|
||||||
/* Объявляет readr — данные readr. Начальное значение задаётся справа от знака равенства. */
|
|
||||||
int readr[5] = {0x08,0x0C,0x10,0x00,0x04};
|
|
||||||
|
|
||||||
/* Ограничивает настройки таймингов компилятором TI C2000; модель на ПК не использует эти директивы. */
|
|
||||||
#if defined(__TI_COMPILER_VERSION__)
|
|
||||||
/* Сохраняет отдельный вызов переключения CLOCK: встраивание при -O3 сокращало удержание DATA после фронта. */
|
|
||||||
#pragma FUNC_CANNOT_INLINE(DCLK)
|
|
||||||
/* Возвращает генерацию DCLK как в образе от 06.10.2026: уровень 1 и приоритет скорости 3 сохраняют прежнюю последовательность инструкций GPIO. */
|
|
||||||
#pragma FUNCTION_OPTIONS(DCLK, "--opt_level=1 --opt_for_speed=3")
|
|
||||||
/* Сохраняет отдельный вызов переключения DATA, чтобы длительность импульсов не зависела от встраивания в передатчик. */
|
|
||||||
#pragma FUNC_CANNOT_INLINE(DOUT)
|
|
||||||
/* Возвращает генерацию DOUT с прежними параметрами -O1 и --opt_for_speed=3; значения взяты из старой конфигурации CCS. */
|
|
||||||
#pragma FUNCTION_OPTIONS(DOUT, "--opt_level=1 --opt_for_speed=3")
|
|
||||||
/* Не позволяет встроить разделитель пакетов в цикл передачи и изменить интервалы между переключениями линий. */
|
|
||||||
#pragma FUNC_CANNOT_INLINE(RESET)
|
|
||||||
/* Сохраняет прежнюю последовательность вызовов GPIO и задержек разделителя, используя настройки старого образа. */
|
|
||||||
#pragma FUNCTION_OPTIONS(RESET, "--opt_level=1 --opt_for_speed=3")
|
|
||||||
/* Сохраняет отдельный вызов передачи бита; протокол использует порядок и интервалы фронтов CLOCK и DATA. */
|
|
||||||
#pragma FUNC_CANNOT_INLINE(SENDBIT)
|
|
||||||
/* Возвращает передаче бита настройки старого образа -O1 и --opt_for_speed=3, оставляя остальной проект на -O3. */
|
|
||||||
#pragma FUNCTION_OPTIONS(SENDBIT, "--opt_level=1 --opt_for_speed=3")
|
|
||||||
/* Завершает блок настроек TI, не изменяя формат пакетов и существующие счётчики задержек. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Начинает функцию DCLK; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void DCLK(int x)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if(x) GpioDataRegs.GPASET.bit.GPIO6=1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(x) GpioDataRegs.GPASET.bit.GPIO6=1;
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else GpioDataRegs.GPACLEAR.bit.GPIO6=1;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Начинает функцию DOUT; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void DOUT(int x)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if(x) GpioDataRegs.GPASET.bit.GPIO8=1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(x) GpioDataRegs.GPASET.bit.GPIO8=1;
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else GpioDataRegs.GPACLEAR.bit.GPIO8=1;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Условие компиляции CLKMULT==1: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==1
|
|
||||||
/* Задаёт POWS0 = 0L; данные POWS0. */
|
|
||||||
#define POWS0 0L
|
|
||||||
/* Задаёт POWS1 = 10L; данные POWS1. */
|
|
||||||
#define POWS1 10L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Условие компиляции CLKMULT==2: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==2
|
|
||||||
/* Задаёт POWS0 = 0L; данные POWS0. */
|
|
||||||
#define POWS0 0L
|
|
||||||
/* Задаёт POWS1 = 30L; данные POWS1. */
|
|
||||||
#define POWS1 30L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Условие компиляции CLKMULT==3: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==3
|
|
||||||
/* Задаёт POWS0 = 1L; данные POWS0. */
|
|
||||||
#define POWS0 1L
|
|
||||||
/* Задаёт POWS1 = 50L; данные POWS1. */
|
|
||||||
#define POWS1 50L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Условие компиляции CLKMULT==4: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==4
|
|
||||||
/* Задаёт POWS0 = 2L; данные POWS0. */
|
|
||||||
#define POWS0 2L
|
|
||||||
/* Задаёт POWS1 = 60L; данные POWS1. */
|
|
||||||
#define POWS1 60L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Условие компиляции CLKMULT==5: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==5
|
|
||||||
/* Задаёт POWS0 = 4L; данные POWS0. */
|
|
||||||
#define POWS0 4L
|
|
||||||
/* Задаёт POWS1 = 80L; данные POWS1. */
|
|
||||||
#define POWS1 80L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Начинает функцию RESET; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void RESET()
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Вызывает DCLK с аргументами (0) в текущей последовательности операций. */
|
|
||||||
DCLK(0);
|
|
||||||
/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS1>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS1);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Вызывает DOUT с аргументами (1) в текущей последовательности операций. */
|
|
||||||
DOUT(1);
|
|
||||||
/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS1>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS1);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Вызывает DOUT с аргументами (0) в текущей последовательности операций. */
|
|
||||||
DOUT(0);
|
|
||||||
/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS1>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS1);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Начинает функцию SENDBIT; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void SENDBIT(int x)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Выставляет передаваемый бит DATA до подъёма CLOCK, сохраняя его на протяжении высокого уровня такта. */
|
|
||||||
DOUT(x); DCLK(1);
|
|
||||||
/* Условие компиляции POWS0>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS0>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS0) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS0);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Вариант A: задержка перед спадом CLOCK продлевает высокий уровень при действительном DATA; POWS0+1 — прежний счётчик циклов TI, не микросекунды. */
|
|
||||||
DSP28x_usDelay(POWS0+1);
|
|
||||||
/* Опускает CLOCK при ещё действительном DATA, чтобы сохранить передаваемый бит на отрицательном фронте такта. */
|
|
||||||
DCLK(0);
|
|
||||||
/* Сбрасывает DATA после спада CLOCK; в варианте A дополнительной задержки между спадом и сбросом нет. */
|
|
||||||
DOUT(0);
|
|
||||||
/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS1>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS1);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Начинает функцию kanal_Send; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void kanal_Send(int adr, long dat, int dot)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Объявляет Word — слово; data — данные; aliq_part — данные aliq_part; dg — данные dg. */
|
|
||||||
long Word,data,aliq_part,dg[4];
|
|
||||||
/* Объявляет i — данные i; j — данные j; bit — представление регистра отдельными битовыми полями; byt — данные byt; addr — данные addr. Начальное значение задаётся справа от знака равенства. */
|
|
||||||
int i,j,bit,byt,addr,sgn=0,punkt=0,aliq_len=0,full_len, isdot=0;
|
|
||||||
|
|
||||||
/* Проверяет if(adr>1); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(adr>1) // Лампочки
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает Word значением dat; слово. */
|
|
||||||
Word =dat;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else
|
|
||||||
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if(dat<0) sgn=1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(dat<0) sgn=1;
|
|
||||||
/* Записывает data значением labs(dat); данные. */
|
|
||||||
data = labs(dat);
|
|
||||||
|
|
||||||
/* Проверяет if(dot>=0 и dot<4) isdot = 1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(dot>=0 && dot<4) isdot = 1;
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else dot=0;
|
|
||||||
|
|
||||||
/* Записывает aliq_part значением data; данные aliq_part. */
|
|
||||||
aliq_part = data;
|
|
||||||
/* Цикл for(i=0;i<dot;i++) aliq_part/=10;; задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=0;i<dot;i++) aliq_part/=10;
|
|
||||||
|
|
||||||
/* Записывает dat значением aliq_part; данные dat. */
|
|
||||||
dat = aliq_part;
|
|
||||||
/* Повторяет или ожидает, пока выполняется while(dat>0). */
|
|
||||||
while(dat>0)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Делит dat значением 10; данные dat. */
|
|
||||||
aliq_len++; dat/=10;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Записывает dat значением data; данные dat. */
|
|
||||||
dat = data;
|
|
||||||
|
|
||||||
/* Записывает full_len значением aliq_len+sgn; данные full_len. */
|
|
||||||
full_len = aliq_len+sgn;
|
|
||||||
/* Проверяет if(full_len==0) full_len=1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(full_len==0) full_len=1;
|
|
||||||
/* Увеличивает full_len значением dot; данные full_len. */
|
|
||||||
full_len += dot;
|
|
||||||
|
|
||||||
/* Цикл for(i=0; i<(full_len-4);i++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=0; i<(full_len-4);i++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Начинает цикл с проверкой условия после тела: первый проход выполняется всегда. */
|
|
||||||
dot--; dat/=10;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
/* Проверяет if(dot<0) dot=0; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(dot<0) dot=0;
|
|
||||||
/* Записывает punkt значением 1<<dot; данные punkt. */
|
|
||||||
punkt = 1<<dot;
|
|
||||||
/* Проверяет if(punkt==1) punkt=0; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(punkt==1) punkt=0;
|
|
||||||
|
|
||||||
/* Записывает dg[3] значением (dat)/1000; данные dg. */
|
|
||||||
dg[3] = (dat)/1000;
|
|
||||||
/* Записывает dg[2] значением (dat%1000)/100; данные dg. */
|
|
||||||
dg[2] = (dat%1000)/100;
|
|
||||||
/* Записывает dg[1] значением (dat%100)/10; данные dg. */
|
|
||||||
dg[1] = (dat%100)/10;
|
|
||||||
/* Записывает dg[0] значением (dat%10); данные dg. */
|
|
||||||
dg[0] = (dat%10);
|
|
||||||
|
|
||||||
/* Проверяет if(dg[0]+dg[1]+dg[2]+dg[3]==0); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(dg[0]+dg[1]+dg[2]+dg[3]==0)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает punkt значением 0; dot=0; sgn=0; данные punkt. */
|
|
||||||
punkt=0; dot=0; sgn=0;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Проверяет if(isdot); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(isdot)
|
|
||||||
/* Цикл for(i=3;i>0;i--); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=3;i>0;i--)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if((dg[i]==0) и (i!=dot)); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if((dg[i]==0)&&(i!=dot))
|
|
||||||
/* Записывает dg[i] значением 0xF; данные dg. */
|
|
||||||
dg[i]=0xF; // Это значит пусто
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else break;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Проверяет if(sgn); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(sgn)
|
|
||||||
/* Цикл for(i=1;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=1;i<4;i++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if( (dg[i]==0xF) или (i==3)); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if( (dg[i]==0xF)||(i==3))
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает dg[i] значением 0xA; данные dg. */
|
|
||||||
dg[i]=0xA; // Это значит минус
|
|
||||||
/* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
|
|
||||||
break;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
} }
|
|
||||||
|
|
||||||
/* Цикл for(i=0;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=0;i<4;i++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает dg[i] значением digits[dg[i]]; данные dg. */
|
|
||||||
dg[i] = digits[dg[i]];
|
|
||||||
/* Проверяет if((punkt>>i)&1) dg[i]+= 128; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if((punkt>>i)&1) dg[i]+= 128;
|
|
||||||
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Записывает Word значением ((dg[0] ) & 0x000000FF) | ((dg[1]<<8 ) & 0x0000FF00) |; слово. */
|
|
||||||
Word = ((dg[0] ) & 0x000000FF) | ((dg[1]<<8 ) & 0x0000FF00) |
|
|
||||||
/* Продолжает список аргументов, полей или выражение ((dg[2]<<16) & 0x00FF0000) | ((dg[3]<<24) & 0xFF000000);; порядок элементов сохраняется. */
|
|
||||||
((dg[2]<<16) & 0x00FF0000) | ((dg[3]<<24) & 0xFF000000);
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Записывает addr значением readr[adr]; данные addr. */
|
|
||||||
addr = readr[adr];
|
|
||||||
|
|
||||||
/* Цикл for (i=0;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for (i=0;i<4;i++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if(addr>0x10) break; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(addr>0x10) break;
|
|
||||||
|
|
||||||
/* Цикл for (j=0;j<8;j++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for (j=0;j<8;j++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает bit значением Word & 1; Word >>= 1; представление регистра отдельными битовыми полями. */
|
|
||||||
bit = Word & 1; Word >>= 1;
|
|
||||||
/* Вызывает SENDBIT с аргументами (bit) в текущей последовательности операций. */
|
|
||||||
SENDBIT(bit);
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Записывает byt значением addr; данные byt. */
|
|
||||||
byt = addr;
|
|
||||||
/* Цикл for (j=0;j<6;j++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for (j=0;j<6;j++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает bit значением byt & 1; byt >>= 1; представление регистра отдельными битовыми полями. */
|
|
||||||
bit = byt & 1; byt >>= 1;
|
|
||||||
/* Вызывает SENDBIT с аргументами (bit) в текущей последовательности операций. */
|
|
||||||
SENDBIT(bit);
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
/* Изменяет счётчик в выражении addr++; на один для следующего шага. */
|
|
||||||
addr++;
|
|
||||||
|
|
||||||
/* Вызывает RESET с аргументами () в текущей последовательности операций. */
|
|
||||||
RESET();
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
@@ -1,358 +0,0 @@
|
|||||||
/* Последовательный вывод данных канала индикации. Русские пояснения сохранены в UTF-8. */
|
|
||||||
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
|
|
||||||
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
|
|
||||||
/* Подключает "DSP2833x_SWPrioritizedIsrLevels.h": поставляемое TI описание SWPrioritizedIsrLevels для семейства C2833x. */
|
|
||||||
#include "DSP2833x_SWPrioritizedIsrLevels.h"
|
|
||||||
/* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */
|
|
||||||
#include "filter_bat2.h"
|
|
||||||
/* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */
|
|
||||||
#include "measure.h"
|
|
||||||
|
|
||||||
/* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */
|
|
||||||
#include "RS485.h"
|
|
||||||
/* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */
|
|
||||||
#include "message.h"
|
|
||||||
/* Подключает "kanal.h": последовательный вывод данных канала индикации. */
|
|
||||||
#include "kanal.h"
|
|
||||||
/* Подключает "pulto.h": обмен и индикация пульта. */
|
|
||||||
#include "pulto.h"
|
|
||||||
/* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */
|
|
||||||
#include "package.h"
|
|
||||||
/* Подключает "tools.h": настройка внешней памяти и служебные задержки. */
|
|
||||||
#include "tools.h"
|
|
||||||
|
|
||||||
/* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */
|
|
||||||
#include "peripher.h"
|
|
||||||
|
|
||||||
/* Объявляет digits — данные digits. Начальное значение задаётся справа от знака равенства. */
|
|
||||||
int digits[16] = {63,6,91,79,102,109,125,7,127,111,64,0,0,0,121,0};
|
|
||||||
/* Объявляет readr — данные readr. Начальное значение задаётся справа от знака равенства. */
|
|
||||||
int readr[5] = {0x08,0x0C,0x10,0x00,0x04};
|
|
||||||
|
|
||||||
/* Ограничивает настройки таймингов компилятором TI C2000; модель на ПК не использует эти директивы. */
|
|
||||||
#if defined(__TI_COMPILER_VERSION__)
|
|
||||||
/* Сохраняет отдельный вызов переключения CLOCK: встраивание при -O3 сокращало удержание DATA после фронта. */
|
|
||||||
#pragma FUNC_CANNOT_INLINE(DCLK)
|
|
||||||
/* Возвращает генерацию DCLK как в образе от 06.10.2026: уровень 1 и приоритет скорости 3 сохраняют прежнюю последовательность инструкций GPIO. */
|
|
||||||
#pragma FUNCTION_OPTIONS(DCLK, "--opt_level=1 --opt_for_speed=3")
|
|
||||||
/* Сохраняет отдельный вызов переключения DATA, чтобы длительность импульсов не зависела от встраивания в передатчик. */
|
|
||||||
#pragma FUNC_CANNOT_INLINE(DOUT)
|
|
||||||
/* Возвращает генерацию DOUT с прежними параметрами -O1 и --opt_for_speed=3; значения взяты из старой конфигурации CCS. */
|
|
||||||
#pragma FUNCTION_OPTIONS(DOUT, "--opt_level=1 --opt_for_speed=3")
|
|
||||||
/* Не позволяет встроить разделитель пакетов в цикл передачи и изменить интервалы между переключениями линий. */
|
|
||||||
#pragma FUNC_CANNOT_INLINE(RESET)
|
|
||||||
/* Сохраняет прежнюю последовательность вызовов GPIO и задержек разделителя, используя настройки старого образа. */
|
|
||||||
#pragma FUNCTION_OPTIONS(RESET, "--opt_level=1 --opt_for_speed=3")
|
|
||||||
/* Сохраняет отдельный вызов передачи бита; протокол использует порядок и интервалы фронтов CLOCK и DATA. */
|
|
||||||
#pragma FUNC_CANNOT_INLINE(SENDBIT)
|
|
||||||
/* Возвращает передаче бита настройки старого образа -O1 и --opt_for_speed=3, оставляя остальной проект на -O3. */
|
|
||||||
#pragma FUNCTION_OPTIONS(SENDBIT, "--opt_level=1 --opt_for_speed=3")
|
|
||||||
/* Завершает блок настроек TI, не изменяя формат пакетов и существующие счётчики задержек. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Начинает функцию DCLK; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void DCLK(int x)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if(x) GpioDataRegs.GPASET.bit.GPIO6=1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(x) GpioDataRegs.GPASET.bit.GPIO6=1;
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else GpioDataRegs.GPACLEAR.bit.GPIO6=1;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Начинает функцию DOUT; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void DOUT(int x)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if(x) GpioDataRegs.GPASET.bit.GPIO8=1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(x) GpioDataRegs.GPASET.bit.GPIO8=1;
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else GpioDataRegs.GPACLEAR.bit.GPIO8=1;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Условие компиляции CLKMULT==1: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==1
|
|
||||||
/* Задаёт POWS0 = 0L; данные POWS0. */
|
|
||||||
#define POWS0 0L
|
|
||||||
/* Задаёт POWS1 = 10L; данные POWS1. */
|
|
||||||
#define POWS1 10L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Условие компиляции CLKMULT==2: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==2
|
|
||||||
/* Задаёт POWS0 = 0L; данные POWS0. */
|
|
||||||
#define POWS0 0L
|
|
||||||
/* Задаёт POWS1 = 30L; данные POWS1. */
|
|
||||||
#define POWS1 30L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Условие компиляции CLKMULT==3: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==3
|
|
||||||
/* Задаёт POWS0 = 1L; данные POWS0. */
|
|
||||||
#define POWS0 1L
|
|
||||||
/* Задаёт POWS1 = 50L; данные POWS1. */
|
|
||||||
#define POWS1 50L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Условие компиляции CLKMULT==4: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==4
|
|
||||||
/* Задаёт POWS0 = 2L; данные POWS0. */
|
|
||||||
#define POWS0 2L
|
|
||||||
/* Задаёт POWS1 = 60L; данные POWS1. */
|
|
||||||
#define POWS1 60L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Условие компиляции CLKMULT==5: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if CLKMULT==5
|
|
||||||
/* Задаёт POWS0 = 4L; данные POWS0. */
|
|
||||||
#define POWS0 4L
|
|
||||||
/* Задаёт POWS1 = 80L; данные POWS1. */
|
|
||||||
#define POWS1 80L
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Начинает функцию RESET; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void RESET()
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Вызывает DCLK с аргументами (0) в текущей последовательности операций. */
|
|
||||||
DCLK(0);
|
|
||||||
/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS1>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS1);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Вызывает DOUT с аргументами (1) в текущей последовательности операций. */
|
|
||||||
DOUT(1);
|
|
||||||
/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS1>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS1);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Вызывает DOUT с аргументами (0) в текущей последовательности операций. */
|
|
||||||
DOUT(0);
|
|
||||||
/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS1>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS1);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Начинает функцию SENDBIT; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void SENDBIT(int x)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Выставляет передаваемый бит DATA до подъёма CLOCK, сохраняя его на протяжении высокого уровня такта. */
|
|
||||||
DOUT(x); DCLK(1);
|
|
||||||
/* Условие компиляции POWS0>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS0>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS0) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS0);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Опускает CLOCK при ещё действительном DATA, чтобы сохранить передаваемый бит на отрицательном фронте такта. */
|
|
||||||
DCLK(0);
|
|
||||||
/* Вариант B: задержка между DCLK(0) и DOUT(0) удерживает DATA после спада CLOCK; POWS0+1 — прежний счётчик циклов TI, не микросекунды. */
|
|
||||||
DSP28x_usDelay(POWS0+1);
|
|
||||||
/* Сбрасывает DATA после завершения паузы удержания, возвращая линию к нулю перед следующим битом. */
|
|
||||||
DOUT(0);
|
|
||||||
/* Условие компиляции POWS1>0: выбранный блок включается в текущий вариант прошивки. */
|
|
||||||
#if POWS1>0
|
|
||||||
/* Вызывает DSP28x_usDelay с аргументами (POWS1) в текущей последовательности операций. */
|
|
||||||
DSP28x_usDelay(POWS1);
|
|
||||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
||||||
#endif
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Начинает функцию kanal_Send; назначение модуля — последовательный вывод данных канала индикации. */
|
|
||||||
void kanal_Send(int adr, long dat, int dot)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Объявляет Word — слово; data — данные; aliq_part — данные aliq_part; dg — данные dg. */
|
|
||||||
long Word,data,aliq_part,dg[4];
|
|
||||||
/* Объявляет i — данные i; j — данные j; bit — представление регистра отдельными битовыми полями; byt — данные byt; addr — данные addr. Начальное значение задаётся справа от знака равенства. */
|
|
||||||
int i,j,bit,byt,addr,sgn=0,punkt=0,aliq_len=0,full_len, isdot=0;
|
|
||||||
|
|
||||||
/* Проверяет if(adr>1); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(adr>1) // Лампочки
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает Word значением dat; слово. */
|
|
||||||
Word =dat;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else
|
|
||||||
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if(dat<0) sgn=1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(dat<0) sgn=1;
|
|
||||||
/* Записывает data значением labs(dat); данные. */
|
|
||||||
data = labs(dat);
|
|
||||||
|
|
||||||
/* Проверяет if(dot>=0 и dot<4) isdot = 1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(dot>=0 && dot<4) isdot = 1;
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else dot=0;
|
|
||||||
|
|
||||||
/* Записывает aliq_part значением data; данные aliq_part. */
|
|
||||||
aliq_part = data;
|
|
||||||
/* Цикл for(i=0;i<dot;i++) aliq_part/=10;; задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=0;i<dot;i++) aliq_part/=10;
|
|
||||||
|
|
||||||
/* Записывает dat значением aliq_part; данные dat. */
|
|
||||||
dat = aliq_part;
|
|
||||||
/* Повторяет или ожидает, пока выполняется while(dat>0). */
|
|
||||||
while(dat>0)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Делит dat значением 10; данные dat. */
|
|
||||||
aliq_len++; dat/=10;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Записывает dat значением data; данные dat. */
|
|
||||||
dat = data;
|
|
||||||
|
|
||||||
/* Записывает full_len значением aliq_len+sgn; данные full_len. */
|
|
||||||
full_len = aliq_len+sgn;
|
|
||||||
/* Проверяет if(full_len==0) full_len=1; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(full_len==0) full_len=1;
|
|
||||||
/* Увеличивает full_len значением dot; данные full_len. */
|
|
||||||
full_len += dot;
|
|
||||||
|
|
||||||
/* Цикл for(i=0; i<(full_len-4);i++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=0; i<(full_len-4);i++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Начинает цикл с проверкой условия после тела: первый проход выполняется всегда. */
|
|
||||||
dot--; dat/=10;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
/* Проверяет if(dot<0) dot=0; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(dot<0) dot=0;
|
|
||||||
/* Записывает punkt значением 1<<dot; данные punkt. */
|
|
||||||
punkt = 1<<dot;
|
|
||||||
/* Проверяет if(punkt==1) punkt=0; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(punkt==1) punkt=0;
|
|
||||||
|
|
||||||
/* Записывает dg[3] значением (dat)/1000; данные dg. */
|
|
||||||
dg[3] = (dat)/1000;
|
|
||||||
/* Записывает dg[2] значением (dat%1000)/100; данные dg. */
|
|
||||||
dg[2] = (dat%1000)/100;
|
|
||||||
/* Записывает dg[1] значением (dat%100)/10; данные dg. */
|
|
||||||
dg[1] = (dat%100)/10;
|
|
||||||
/* Записывает dg[0] значением (dat%10); данные dg. */
|
|
||||||
dg[0] = (dat%10);
|
|
||||||
|
|
||||||
/* Проверяет if(dg[0]+dg[1]+dg[2]+dg[3]==0); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(dg[0]+dg[1]+dg[2]+dg[3]==0)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает punkt значением 0; dot=0; sgn=0; данные punkt. */
|
|
||||||
punkt=0; dot=0; sgn=0;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Проверяет if(isdot); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(isdot)
|
|
||||||
/* Цикл for(i=3;i>0;i--); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=3;i>0;i--)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if((dg[i]==0) и (i!=dot)); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if((dg[i]==0)&&(i!=dot))
|
|
||||||
/* Записывает dg[i] значением 0xF; данные dg. */
|
|
||||||
dg[i]=0xF; // Это значит пусто
|
|
||||||
/* Выполняет альтернативу, если предыдущее условие if оказалось ложным. */
|
|
||||||
else break;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Проверяет if(sgn); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(sgn)
|
|
||||||
/* Цикл for(i=1;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=1;i<4;i++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if( (dg[i]==0xF) или (i==3)); последующий оператор выполняется только при истинном условии. */
|
|
||||||
if( (dg[i]==0xF)||(i==3))
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает dg[i] значением 0xA; данные dg. */
|
|
||||||
dg[i]=0xA; // Это значит минус
|
|
||||||
/* Прерывает ближайший цикл или ветвь switch и продолжает после него. */
|
|
||||||
break;
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
} }
|
|
||||||
|
|
||||||
/* Цикл for(i=0;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for(i=0;i<4;i++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает dg[i] значением digits[dg[i]]; данные dg. */
|
|
||||||
dg[i] = digits[dg[i]];
|
|
||||||
/* Проверяет if((punkt>>i)&1) dg[i]+= 128; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if((punkt>>i)&1) dg[i]+= 128;
|
|
||||||
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Записывает Word значением ((dg[0] ) & 0x000000FF) | ((dg[1]<<8 ) & 0x0000FF00) |; слово. */
|
|
||||||
Word = ((dg[0] ) & 0x000000FF) | ((dg[1]<<8 ) & 0x0000FF00) |
|
|
||||||
/* Продолжает список аргументов, полей или выражение ((dg[2]<<16) & 0x00FF0000) | ((dg[3]<<24) & 0xFF000000);; порядок элементов сохраняется. */
|
|
||||||
((dg[2]<<16) & 0x00FF0000) | ((dg[3]<<24) & 0xFF000000);
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Записывает addr значением readr[adr]; данные addr. */
|
|
||||||
addr = readr[adr];
|
|
||||||
|
|
||||||
/* Цикл for (i=0;i<4;i++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for (i=0;i<4;i++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Проверяет if(addr>0x10) break; последующий оператор выполняется только при истинном условии. */
|
|
||||||
if(addr>0x10) break;
|
|
||||||
|
|
||||||
/* Цикл for (j=0;j<8;j++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for (j=0;j<8;j++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает bit значением Word & 1; Word >>= 1; представление регистра отдельными битовыми полями. */
|
|
||||||
bit = Word & 1; Word >>= 1;
|
|
||||||
/* Вызывает SENDBIT с аргументами (bit) в текущей последовательности операций. */
|
|
||||||
SENDBIT(bit);
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Записывает byt значением addr; данные byt. */
|
|
||||||
byt = addr;
|
|
||||||
/* Цикл for (j=0;j<6;j++); задаёт начальное значение, условие продолжения и шаг перебора. */
|
|
||||||
for (j=0;j<6;j++)
|
|
||||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
|
||||||
{
|
|
||||||
/* Записывает bit значением byt & 1; byt >>= 1; представление регистра отдельными битовыми полями. */
|
|
||||||
bit = byt & 1; byt >>= 1;
|
|
||||||
/* Вызывает SENDBIT с аргументами (bit) в текущей последовательности операций. */
|
|
||||||
SENDBIT(bit);
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
/* Изменяет счётчик в выражении addr++; на один для следующего шага. */
|
|
||||||
addr++;
|
|
||||||
|
|
||||||
/* Вызывает RESET с аргументами () в текущей последовательности операций. */
|
|
||||||
RESET();
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
Бальзам-167: два проверочных варианта задержки индикации
|
|
||||||
Дата сборки: 12.10.2026.
|
|
||||||
|
|
||||||
A_delay_before_clock_fall
|
|
||||||
BIN: UKSSTMS320F28335_A_delay_before_clock_fall_fa20ed0+.bin
|
|
||||||
Дополнительная задержка стоит ПЕРЕД спадом CLOCK.
|
|
||||||
Последовательность: DSP28x_usDelay(POWS0+1); DCLK(0); DOUT(0).
|
|
||||||
Назначение: продлить высокий уровень CLOCK при действительном DATA.
|
|
||||||
Размер: 32246 байт. Запас до области параметров AT25256B: 262 байта.
|
|
||||||
SHA-256: C28337E35996AED330E22BC014EF9D15D06C9A1F5CFCCCE27EAD75FB1AC565F9
|
|
||||||
|
|
||||||
B_delay_after_clock_fall
|
|
||||||
BIN: UKSSTMS320F28335_B_delay_after_clock_fall_fa20ed0+.bin
|
|
||||||
Дополнительная задержка стоит ПОСЛЕ спада CLOCK, МЕЖДУ DCLK(0) и DOUT(0).
|
|
||||||
Последовательность: DCLK(0); DSP28x_usDelay(POWS0+1); DOUT(0).
|
|
||||||
Назначение: удержать DATA после спада CLOCK перед сбросом линии данных.
|
|
||||||
Размер: 32248 байт. Запас до области параметров AT25256B: 260 байт.
|
|
||||||
SHA-256: 1ABA3835FFA39649E9922E107B6DBAAA2605F7C4ED80631D583973EFC2DEC215
|
|
||||||
|
|
||||||
В каждом варианте только одна дополнительная задержка POWS0+1.
|
|
||||||
В обоих вариантах DATA сохраняется до спада CLOCK и сбрасывается после него.
|
|
||||||
Общие условные задержки POWS0 и POWS1 и разделитель RESET сохранены.
|
|
||||||
При CLKMULT=2 значения POWS0+1=1 и POWS1=30 являются аргументами
|
|
||||||
цикловой функции TI DSP28x_usDelay, а не длительностями в микросекундах.
|
|
||||||
|
|
||||||
Оба варианта полностью собраны TI C2000 22.6.0.LTS из текущего проекта.
|
|
||||||
Базовый коммит: fa20ed085bdca15fec47c79b72f50525653e103d; сборки помечены dirty.
|
|
||||||
Для каждого варианта при компиляции подставлен отдельный kanal.c,
|
|
||||||
сохранённый рядом с его BIN. Основной Source/Internal/kanal.c при подготовке
|
|
||||||
этой пары не изменялся. Общие параметры компиляции и прочие модули одинаковы;
|
|
||||||
паспорта также содержат собственное время сборки каждого варианта.
|
|
||||||
|
|
||||||
Проверено: полный цикл компиляции и линковки, структура SCI8 и предел EEPROM,
|
|
||||||
соответствие итогового BIN кандидату hex2000, расположение задержек в машинном
|
|
||||||
коде SENDBIT, передача 0 и 1 на обоих фронтах в модели логических уровней,
|
|
||||||
одинаковый код DCLK/DOUT между вариантами и прежний код разделителя RESET.
|
|
||||||
Физические длительности сигналов и отсутствие строба требуют проверки на плате.
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,48 +0,0 @@
|
|||||||
Бальзам-167: проверочная прошивка с исправлением TESTLAMP
|
|
||||||
Сборка: 13.10.2026, 11:00:35 (Москва, UTC+3).
|
|
||||||
|
|
||||||
Готовый образ:
|
|
||||||
UKSSTMS320F28335_testlamp_fix_fa20ed0+.bin
|
|
||||||
Размер: 32272 байта. Запас до параметров AT25256B: 236 байт.
|
|
||||||
SHA-256: bfe4c3c9b55bb5022f38f254929f893e5eaab57ef3d3fa31771a6b6f97f877a4
|
|
||||||
Паспорт: UKSSTMS320F28335_testlamp_fix_fa20ed0+.bin.manifest.json
|
|
||||||
Архив этой сборки: fa20ed08+_2026-10-13_11-00-35_UTC+3.
|
|
||||||
|
|
||||||
Исправления:
|
|
||||||
1. В get_Buttons для dsk_EPLT накопительный фильтр получает предыдущее
|
|
||||||
значение bTestLamp вместо постоянного нуля. Раньше даже один низкий
|
|
||||||
отсчёт GPIO26 при удержании кнопки сразу отключал тест, а следующий
|
|
||||||
высокий отсчёт мог снова его включить. Это переключало пакеты ламп
|
|
||||||
и семисегментных индикаторов между рабочим и тестовым режимами.
|
|
||||||
Порог 1000 по-прежнему измеряется опросами главного цикла.
|
|
||||||
2. cpu_timer1_isr_PULT ограничивает IER маской MINT13 и исключает собственный
|
|
||||||
Timer1 (INT13). Прежнее IER |= MINT13 включало дополнительные источники
|
|
||||||
вместо ограничения приоритетов и могло разрешить повторный вход Timer1.
|
|
||||||
Вложенная передача больше не может перемешать DATA/CLK, счётчик каналов
|
|
||||||
и фазу яркости. В машинном коде перед EINT проверено AND IER, #0x0139.
|
|
||||||
|
|
||||||
Штатная тестовая последовательность what_is сохранена: цифры меняются
|
|
||||||
и тестовая маска ламп переключается каждые 500 тактов Timer1 (0,5 секунды).
|
|
||||||
Это исправление относится к частому нерегулярному мерцанию поверх теста.
|
|
||||||
Порядок уровней и задержек SENDBIT/RESET взят из текущего kanal.c проекта;
|
|
||||||
для этой сборки он не изменялся. В образ вошли уже имевшиеся правки
|
|
||||||
ecan.c, measure.c и kanal.c.
|
|
||||||
|
|
||||||
Проверено:
|
|
||||||
- настоящие get_Buttons, er_anal, what_is и обработчик пульта в хостовой
|
|
||||||
модели при O3; короткие провалы входа при удержании TESTLAMP;
|
|
||||||
- тестовые пакеты ламп и цифр при уже включённой рабочей лампе;
|
|
||||||
- отсутствие повторного входа ISR, отпускание и удалённая команда теста;
|
|
||||||
- сохранение обычного PWM: шесть включённых тактов из десяти;
|
|
||||||
- возвращение каждой старой ошибки отдельно вызывает провал теста;
|
|
||||||
- полная компиляция и линковка TI C2000 22.6.0.LTS, O3, COFF, FPU32;
|
|
||||||
- SCI8, четыре RAM-блока, границы AT25256B и совпадение BIN с кандидатом;
|
|
||||||
- UTF-8 и русские пояснения к изменённому и добавленному коду.
|
|
||||||
|
|
||||||
Повторная проверка: python tests/testlamp/run_test.py
|
|
||||||
Повторная сборка: python Bin/TestLampFix/rebuild.py
|
|
||||||
|
|
||||||
На физической плате эта прошивка пока не проверена. Для проверки повторить
|
|
||||||
сценарий пользователя: включённые рабочие лампы, нажатие и удержание TESTLAMP,
|
|
||||||
затем отпускание. Штатные изменения теста раз в 0,5 секунды сохраняются;
|
|
||||||
быстрых переключений между тестовыми и рабочими показаниями быть не должно.
|
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@@ -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*"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -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 |
|
|
||||||
@@ -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).
|
|
||||||
|
|
||||||
Модель ЦАП и электрическая схема не установлены. Режим выборки, назначение
|
|
||||||
командных битов и допустимые длительности нельзя считать подтверждёнными
|
|
||||||
до сверки с документацией конкретной микросхемы. Сборка/прошивка и стендовые
|
|
||||||
измерения в рамках подготовки этого документа не выполнялись.
|
|
||||||
@@ -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.
|
|
||||||
@@ -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
@@ -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`.
|
|
||||||
@@ -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.
|
|
||||||
@@ -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 и соседних шаблонах.
|
|
||||||
@@ -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 ещё требует подтверждения.
|
|
||||||
@@ -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 с нужно проверить на стенде с установленной прошивкой.
|
|
||||||
117
F28335.cmd
117
F28335.cmd
@@ -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 $
|
||||||
@@ -70,74 +69,52 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* 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 */ /* Записывает origin значением 0x3FE000, length = 0x000b50; данные origin. */
|
IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */
|
||||||
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */ /* Записывает origin значением 0x3FEB50, length = 0x00008c; данные origin. */
|
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */
|
||||||
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */ /* Записывает origin значением 0x3FEBDC, length = 0x0006A0; данные origin. */
|
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */
|
||||||
ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */ /* Записывает origin значением 0x3FF27C, length = 0x000D44; данные origin. */
|
ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
|
||||||
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */ /* Записывает origin значением 0x3FFFC0, length = 0x000002; данные origin. */
|
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
|
||||||
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */ /* Записывает origin значением 0x3FFFC2, length = 0x00003E; данные origin. */
|
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
|
||||||
|
|
||||||
PAGE 1 : /* Data Memory */ /* Выбирает страницу адресного пространства линкера: 0 — программа, 1 — данные. */
|
PAGE 1 : /* Data Memory */
|
||||||
/* 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.
|
||||||
@@ -147,60 +124,38 @@ PAGE 1 : /* Data Memory */ /* Выбирает страницу адресно
|
|||||||
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. */
|
|
||||||
RUN = RAML4,
|
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()
|
||||||
@@ -219,7 +174,6 @@ SECTIONS
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Записывает 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: * /
|
||||||
@@ -229,7 +183,6 @@ SECTIONS
|
|||||||
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 */
|
||||||
@@ -237,16 +190,12 @@ SECTIONS
|
|||||||
/* 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
|
||||||
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -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,16 +11,11 @@
|
|||||||
// $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
|
||||||
|
|
||||||
|
|
||||||
@@ -35,163 +29,93 @@ extern "C" {
|
|||||||
//
|
//
|
||||||
|
|
||||||
// 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:
|
||||||
@@ -199,36 +123,23 @@ interrupt void ECAN1INTB_ISR(void); // eCAN-B
|
|||||||
// 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
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
@@ -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 $
|
||||||
//###########################################################################
|
//###########################################################################
|
||||||
@@ -12,206 +11,129 @@
|
|||||||
// $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
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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 $
|
||||||
;;###########################################################################
|
;;###########################################################################
|
||||||
@@ -17,9 +16,7 @@
|
|||||||
;; $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
|
||||||
|
|
||||||
;-----------------------------------------------
|
;-----------------------------------------------
|
||||||
@@ -35,17 +32,11 @@
|
|||||||
; 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 ----------
|
||||||
|
|||||||
@@ -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);
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
@@ -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,9 +11,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
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
@@ -22,72 +19,43 @@
|
|||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// 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;
|
||||||
|
|
||||||
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
@@ -95,24 +63,18 @@ void InitPieCtrl(void)
|
|||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// 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
|
// Enables PIE to drive a pulse into the CPU
|
||||||
/* Записывает PieCtrlRegs.PIEACK.all значением 0xFFFF; представление регистра целым словом без разбиения на битовые поля. */
|
|
||||||
PieCtrlRegs.PIEACK.all = 0xFFFF;
|
PieCtrlRegs.PIEACK.all = 0xFFFF;
|
||||||
|
|
||||||
// Enable Interrupts at the CPU level
|
// Enable Interrupts at the CPU level
|
||||||
/* Разрешение маскируемых прерываний ядра. */
|
|
||||||
EINT;
|
EINT;
|
||||||
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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,300 +11,168 @@
|
|||||||
// $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,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 2 Reserved space
|
PIE_RESERVED, // 2 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 3 Reserved space
|
PIE_RESERVED, // 3 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 4 Reserved space
|
PIE_RESERVED, // 4 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 5 Reserved space
|
PIE_RESERVED, // 5 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 6 Reserved space
|
PIE_RESERVED, // 6 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 7 Reserved space
|
PIE_RESERVED, // 7 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 8 Reserved space
|
PIE_RESERVED, // 8 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 9 Reserved space
|
PIE_RESERVED, // 9 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 10 Reserved space
|
PIE_RESERVED, // 10 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 11 Reserved space
|
PIE_RESERVED, // 11 Reserved space
|
||||||
/* Продолжает список аргументов, полей или выражение PIE_RESERVED,; порядок элементов сохраняется. */
|
|
||||||
PIE_RESERVED, // 12 Reserved space
|
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,; порядок элементов сохраняется. */
|
|
||||||
SEQ2INT_ISR, // 1.2 ADC
|
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,; порядок элементов сохраняется. */
|
|
||||||
ECAP5_INT_ISR, // 4.5 ECAP-5
|
ECAP5_INT_ISR, // 4.5 ECAP-5
|
||||||
/* Продолжает список аргументов, полей или выражение ECAP6_INT_ISR,; порядок элементов сохраняется. */
|
|
||||||
ECAP6_INT_ISR, // 4.6 ECAP-6
|
ECAP6_INT_ISR, // 4.6 ECAP-6
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 4.7
|
rsvd_ISR, // 4.7
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 4.8
|
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,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 5.4
|
rsvd_ISR, // 5.4
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 5.5
|
rsvd_ISR, // 5.5
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 5.6
|
rsvd_ISR, // 5.6
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 5.7
|
rsvd_ISR, // 5.7
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 5.8
|
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,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 6.8
|
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,; порядок элементов сохраняется. */
|
|
||||||
DINTCH4_ISR, // 7.4 DMA channel 4
|
DINTCH4_ISR, // 7.4 DMA channel 4
|
||||||
/* Продолжает список аргументов, полей или выражение DINTCH5_ISR,; порядок элементов сохраняется. */
|
|
||||||
DINTCH5_ISR, // 7.5 DMA channel 5
|
DINTCH5_ISR, // 7.5 DMA channel 5
|
||||||
/* Продолжает список аргументов, полей или выражение DINTCH6_ISR,; порядок элементов сохраняется. */
|
|
||||||
DINTCH6_ISR, // 7.6 DMA channel 6
|
DINTCH6_ISR, // 7.6 DMA channel 6
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 7.7
|
rsvd_ISR, // 7.7
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 7.8
|
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,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 8.4
|
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,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 8.7
|
rsvd_ISR, // 8.7
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 8.8
|
rsvd_ISR, // 8.8
|
||||||
|
|
||||||
// Group 9 PIE Vectors
|
// 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,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 10.4
|
rsvd_ISR, // 10.4
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 10.5
|
rsvd_ISR, // 10.5
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 10.6
|
rsvd_ISR, // 10.6
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 10.7
|
rsvd_ISR, // 10.7
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 10.8
|
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,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 11.4
|
rsvd_ISR, // 11.4
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 11.5
|
rsvd_ISR, // 11.5
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 11.6
|
rsvd_ISR, // 11.6
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 11.7
|
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,; порядок элементов сохраняется. */
|
|
||||||
XINT6_ISR, // 12.4
|
XINT6_ISR, // 12.4
|
||||||
/* Продолжает список аргументов, полей или выражение XINT7_ISR,; порядок элементов сохраняется. */
|
|
||||||
XINT7_ISR, // 12.5
|
XINT7_ISR, // 12.5
|
||||||
/* Продолжает список аргументов, полей или выражение rsvd_ISR,; порядок элементов сохраняется. */
|
|
||||||
rsvd_ISR, // 12.6
|
rsvd_ISR, // 12.6
|
||||||
/* Продолжает список аргументов, полей или выражение LVF_ISR,; порядок элементов сохраняется. */
|
|
||||||
LVF_ISR, // 12.7
|
LVF_ISR, // 12.7
|
||||||
/* Продолжает список аргументов, полей или выражение LUF_ISR,; порядок элементов сохраняется. */
|
|
||||||
LUF_ISR, // 12.8
|
LUF_ISR, // 12.8
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -316,31 +183,20 @@ const struct PIE_VECT_TABLE PieVectTableInit = {
|
|||||||
// 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;
|
||||||
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
@@ -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(;;);
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
@@ -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 $
|
||||||
//###########################################################################
|
//###########################################################################
|
||||||
@@ -15,857 +14,476 @@
|
|||||||
// $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
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
@@ -875,28 +493,17 @@ const struct PIE_VECT_TABLE PieVectTableInit = {
|
|||||||
// 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;
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|||||||
@@ -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,46 +198,29 @@ 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
|
||||||
@@ -312,27 +228,17 @@ void InitPll(Uint16 divval, Uint16 divsel)
|
|||||||
// 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;
|
||||||
|
|
||||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user