Сохранить русские комментарии и настройки проекта в UTF-8
Добавить пояснения к исходникам, заголовкам TI, настройкам CCS и существующим проверкам. Зафиксировать правила кодировки, обзор модулей и аудит комментариев.
This commit is contained in:
@@ -1,8 +1,13 @@
|
||||
/* Настройка АЦП, обработка преобразований и первичная фильтрация измерений. Русские пояснения сохранены в UTF-8. */
|
||||
|
||||
/* Объявляет adc_table_lem — АЦП table lem. Память определена в другом модуле. */
|
||||
extern Uint16 adc_table_lem[];
|
||||
/* Объявляет ADC_table — АЦП table. Память определена в другом модуле. */
|
||||
extern Uint16 ADC_table[];
|
||||
|
||||
/* Настраивает каналы, последовательность преобразований и запуск АЦП. */
|
||||
void setup_adc(void);
|
||||
|
||||
/* Объявляет WAKE — данные WAKE; WAKE_TIME — данные WAKE_TIME. Память определена в другом модуле. */
|
||||
extern long WAKE,WAKE_TIME;
|
||||
|
||||
|
||||
@@ -1,18 +1,30 @@
|
||||
/* Выход ЦАП и автомат защиты нагрузки с проверкой напряжения и свежести CAN. Русские пояснения сохранены в UTF-8. */
|
||||
/* В такте Timer1 проверяет команды, напряжение и давность CAN; управляет STOP, повторным пуском и током ЦАП. */
|
||||
void Load_runner(void);
|
||||
/* Объявляет интерфейс функции Anal_output; реализация вызывается через этот прототип. */
|
||||
void Anal_output(long vrot, long maxx);
|
||||
/* Объявляет интерфейс функции Init_DAC; реализация вызывается через этот прототип. */
|
||||
void Init_DAC(void);
|
||||
/* Вычисляет такты ЦАП; для недопустимого сохранённого тайм-аута CAN возвращает 600 мс. */
|
||||
void Setup_DAC_time(void);
|
||||
|
||||
/* Счётчик пускового импульса и выдержки инициализации доступны логгеру. */
|
||||
/* Счётчик пускового импульса и выдержки инициализации доступны логгеру. */
|
||||
/* Объявляет IMPowse — данные IMPowse; WAKEpowse — данные WAKEpowse. Память определена в другом модуле. */
|
||||
extern unsigned long IMPowse, WAKEpowse;
|
||||
/* Объявляет period_dac — период ЦАП; time_dac — time ЦАП. Память определена в другом модуле. */
|
||||
extern unsigned int period_dac, time_dac;
|
||||
|
||||
/* Call once before IRQ; complete technological CAN packets update voltage. */
|
||||
/* Сбрасывает все переменные автомата нагрузки до разрешения прерываний; COFF не обнуляет всю .ebss. */
|
||||
void Load_control_init(void);
|
||||
/* Принимает напряжение выбранной нагрузки из достоверных слов CAN и сбрасывает возраст только нужного измерения. */
|
||||
void Load_voltage_can(unsigned int header, unsigned int a,
|
||||
/* Объявляет b — данные b. */
|
||||
unsigned int b, unsigned int c);
|
||||
|
||||
/* 0x1300/8 words: signature, version, simulation, timeout, status, attempts,
|
||||
* voltage, age. Only 0x1302 (simulation) and 0x1303 (timeout) are writable. */
|
||||
/* Фиксирует управляющие входы перед выполнением автомата защиты нагрузки. */
|
||||
unsigned int Load_protection_prepare(unsigned int function, unsigned int address,
|
||||
/* Объявляет value — данные value; out — данные out. Хранит указатель на данные. */
|
||||
unsigned int value, unsigned int *out, unsigned int *error);
|
||||
|
||||
@@ -1,387 +1,654 @@
|
||||
/* Таблица назначения GPIO и макросы аппаратных сигналов платы. Русские пояснения сохранены в UTF-8. */
|
||||
/* Задаёт COMM_gpio00_dir = 0UL; COMM линия GPIO 00 dir. */
|
||||
#define COMM_gpio00_dir 0UL
|
||||
/* Задаёт COMM_gpio01_dir = 0UL; COMM линия GPIO 01 dir. */
|
||||
#define COMM_gpio01_dir 0UL
|
||||
/* Задаёт COMM_gpio02_dir = 0UL; COMM линия GPIO 02 dir. */
|
||||
#define COMM_gpio02_dir 0UL
|
||||
/* Задаёт COMM_gpio03_dir = 0UL; COMM линия GPIO 03 dir. */
|
||||
#define COMM_gpio03_dir 0UL
|
||||
/* Задаёт COMM_gpio04_dir = 0UL; COMM линия GPIO 04 dir. */
|
||||
#define COMM_gpio04_dir 0UL
|
||||
/* Задаёт COMM_gpio05_dir = 0UL; COMM линия GPIO 05 dir. */
|
||||
#define COMM_gpio05_dir 0UL
|
||||
/* Задаёт COMM_gpio06_dir = 0UL; COMM линия GPIO 06 dir. */
|
||||
#define COMM_gpio06_dir 0UL
|
||||
/* Задаёт COMM_gpio07_dir = 0UL; COMM линия GPIO 07 dir. */
|
||||
#define COMM_gpio07_dir 0UL
|
||||
/* Задаёт COMM_gpio08_dir = 0UL; COMM линия GPIO 08 dir. */
|
||||
#define COMM_gpio08_dir 0UL
|
||||
/* Задаёт COMM_gpio09_dir = 0UL; COMM линия GPIO 09 dir. */
|
||||
#define COMM_gpio09_dir 0UL
|
||||
/* Задаёт COMM_gpio10_dir = 0UL; COMM линия GPIO 10 dir. */
|
||||
#define COMM_gpio10_dir 0UL
|
||||
/* Задаёт COMM_gpio11_dir = 0UL; COMM линия GPIO 11 dir. */
|
||||
#define COMM_gpio11_dir 0UL
|
||||
|
||||
#define COMM_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт COMM_gpio19_dir = 1UL; COMM линия GPIO 19 dir. */
|
||||
#define COMM_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт COMM_gpio20_dir = 0UL; COMM линия GPIO 20 dir. */
|
||||
#define COMM_gpio20_dir 0UL // 64 2:9B mode 2
|
||||
/* Задаёт COMM_gpio21_dir = 0UL; COMM линия GPIO 21 dir. */
|
||||
#define COMM_gpio21_dir 0UL // 65 2:9A mode 4
|
||||
/* Задаёт COMM_gpio22_dir = 0UL; COMM линия GPIO 22 dir. */
|
||||
#define COMM_gpio22_dir 0UL // 66 2:12C mode 1
|
||||
/* Задаёт COMM_gpio23_dir = 0UL; COMM линия GPIO 23 dir. */
|
||||
#define COMM_gpio23_dir 0UL
|
||||
/* Задаёт COMM_gpio24_dir = 1UL; COMM линия GPIO 24 dir. */
|
||||
#define COMM_gpio24_dir 1UL // 68 2:12A select
|
||||
/* Задаёт COMM_gpio25_dir = 1UL; COMM линия GPIO 25 dir. */
|
||||
#define COMM_gpio25_dir 1UL // 69 2:11C select
|
||||
/* Задаёт COMM_gpio26_dir = 0UL; COMM линия GPIO 26 dir. */
|
||||
#define COMM_gpio26_dir 0UL
|
||||
/* Задаёт COMM_gpio27_dir = 1UL; COMM линия GPIO 27 dir. */
|
||||
#define COMM_gpio27_dir 1UL // 73 2:11A select
|
||||
|
||||
/* Задаёт COMM_gpio32_dir = 1UL; COMM линия GPIO 32 dir. */
|
||||
#define COMM_gpio32_dir 1UL // 74 2:10B DIOD green
|
||||
/* Задаёт COMM_gpio33_dir = 0UL; COMM линия GPIO 33 dir. */
|
||||
#define COMM_gpio33_dir 0UL
|
||||
#define COMM_gpio34_dir 1UL // 142 — SCI
|
||||
/* Задаёт COMM_gpio34_dir = 1UL; COMM линия GPIO 34 dir. */
|
||||
#define COMM_gpio34_dir 1UL // 142 — SCI
|
||||
|
||||
/* Задаёт COMM_gpio48_dir = 1UL; COMM линия GPIO 48 dir. */
|
||||
#define COMM_gpio48_dir 1UL // 88 2:14C DIOD red
|
||||
/* Задаёт COMM_gpio49_dir = 1UL; COMM линия GPIO 49 dir. */
|
||||
#define COMM_gpio49_dir 1UL // 89 2:14B select
|
||||
/* Задаёт COMM_gpio50_dir = 0UL; COMM линия GPIO 50 dir. */
|
||||
#define COMM_gpio50_dir 0UL // 90 2:14A input 2
|
||||
/* Задаёт COMM_gpio51_dir = 0UL; COMM линия GPIO 51 dir. */
|
||||
#define COMM_gpio51_dir 0UL // 91 2:13C mode !8
|
||||
/* Задаёт COMM_gpio52_dir = 1UL; COMM линия GPIO 52 dir. */
|
||||
#define COMM_gpio52_dir 1UL // 94 2:13B select
|
||||
/* Задаёт COMM_gpio53_dir = 0UL; COMM линия GPIO 53 dir. */
|
||||
#define COMM_gpio53_dir 0UL // 95 2:13A input 1
|
||||
|
||||
/* Задаёт COMM_gpio58_dir = 1UL; COMM линия GPIO 58 dir. */
|
||||
#define COMM_gpio58_dir 1UL // 100 1:13C rez 1
|
||||
/* Задаёт COMM_gpio59_dir = 1UL; COMM линия GPIO 59 dir. */
|
||||
#define COMM_gpio59_dir 1UL // 110 1:13B gotov
|
||||
/* Задаёт COMM_gpio60_dir = 1UL; COMM линия GPIO 60 dir. */
|
||||
#define COMM_gpio60_dir 1UL // 111 1:13A led 1
|
||||
/* Задаёт COMM_gpio61_dir = 1UL; COMM линия GPIO 61 dir. */
|
||||
#define COMM_gpio61_dir 1UL // 112 1:14C rez 2
|
||||
#define COMM_gpio62_dir 0UL
|
||||
/* Задаёт COMM_gpio62_dir = 0UL; COMM линия GPIO 62 dir. */
|
||||
#define COMM_gpio62_dir 0UL
|
||||
/* Задаёт COMM_gpio63_dir = 1UL; COMM линия GPIO 63 dir. */
|
||||
#define COMM_gpio63_dir 1UL // 114 1:14A led 2
|
||||
|
||||
//===========================================================================
|
||||
|
||||
/* Задаёт BKSD_gpio00_dir = 0UL; BKSD линия GPIO 00 dir. */
|
||||
#define BKSD_gpio00_dir 0UL // 5 2:7A oil
|
||||
/* Задаёт BKSD_gpio01_dir = 1UL; BKSD линия GPIO 01 dir. */
|
||||
#define BKSD_gpio01_dir 1UL // 6 2:4A select
|
||||
/* Задаёт BKSD_gpio02_dir = 0UL; BKSD линия GPIO 02 dir. */
|
||||
#define BKSD_gpio02_dir 0UL // 7 2:7B oil
|
||||
/* Задаёт BKSD_gpio03_dir = 1UL; BKSD линия GPIO 03 dir. */
|
||||
#define BKSD_gpio03_dir 1UL // 10 2:4B select
|
||||
/* Задаёт BKSD_gpio04_dir = 0UL; BKSD линия GPIO 04 dir. */
|
||||
#define BKSD_gpio04_dir 0UL // 11 2:7C oil
|
||||
/* Задаёт BKSD_gpio05_dir = 0UL; BKSD линия GPIO 05 dir. */
|
||||
#define BKSD_gpio05_dir 0UL
|
||||
/* Задаёт BKSD_gpio06_dir = 0UL; BKSD линия GPIO 06 dir. */
|
||||
#define BKSD_gpio06_dir 0UL
|
||||
/* Задаёт BKSD_gpio07_dir = 1UL; BKSD линия GPIO 07 dir. */
|
||||
#define BKSD_gpio07_dir 1UL // 16 2:3A select
|
||||
/* Задаёт BKSD_gpio08_dir = 1UL; BKSD линия GPIO 08 dir. */
|
||||
#define BKSD_gpio08_dir 1UL // 17 2:6B select
|
||||
/* Задаёт BKSD_gpio09_dir = 1UL; BKSD линия GPIO 09 dir. */
|
||||
#define BKSD_gpio09_dir 1UL // 18 2:3B select
|
||||
/* Задаёт BKSD_gpio10_dir = 0UL; BKSD линия GPIO 10 dir. */
|
||||
#define BKSD_gpio10_dir 0UL // 19 2:6C oil
|
||||
/* Задаёт BKSD_gpio11_dir = 1UL; BKSD линия GPIO 11 dir. */
|
||||
#define BKSD_gpio11_dir 1UL // 20 2:3C select
|
||||
|
||||
#define BKSD_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт BKSD_gpio19_dir = 1UL; BKSD линия GPIO 19 dir. */
|
||||
#define BKSD_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт BKSD_gpio20_dir = 0UL; BKSD линия GPIO 20 dir. */
|
||||
#define BKSD_gpio20_dir 0UL // 64 2:9B mode 2
|
||||
/* Задаёт BKSD_gpio21_dir = 0UL; BKSD линия GPIO 21 dir. */
|
||||
#define BKSD_gpio21_dir 0UL // 65 2:9A mode 4
|
||||
/* Задаёт BKSD_gpio22_dir = 0UL; BKSD линия GPIO 22 dir. */
|
||||
#define BKSD_gpio22_dir 0UL // 66 2:12C mode 1
|
||||
/* Задаёт BKSD_gpio23_dir = 0UL; BKSD линия GPIO 23 dir. */
|
||||
#define BKSD_gpio23_dir 0UL
|
||||
/* Задаёт BKSD_gpio24_dir = 0UL; BKSD линия GPIO 24 dir. */
|
||||
#define BKSD_gpio24_dir 0UL
|
||||
/* Задаёт BKSD_gpio25_dir = 0UL; BKSD линия GPIO 25 dir. */
|
||||
#define BKSD_gpio25_dir 0UL
|
||||
/* Задаёт BKSD_gpio26_dir = 0UL; BKSD линия GPIO 26 dir. */
|
||||
#define BKSD_gpio26_dir 0UL
|
||||
/* Задаёт BKSD_gpio27_dir = 0UL; BKSD линия GPIO 27 dir. */
|
||||
#define BKSD_gpio27_dir 0UL
|
||||
|
||||
/* Задаёт BKSD_gpio32_dir = 1UL; BKSD линия GPIO 32 dir. */
|
||||
#define BKSD_gpio32_dir 1UL // 74 2:10B DIOD green
|
||||
/* Задаёт BKSD_gpio33_dir = 0UL; BKSD линия GPIO 33 dir. */
|
||||
#define BKSD_gpio33_dir 0UL
|
||||
#define BKSD_gpio34_dir 1UL // 142 — SCI
|
||||
/* Задаёт BKSD_gpio34_dir = 1UL; BKSD линия GPIO 34 dir. */
|
||||
#define BKSD_gpio34_dir 1UL // 142 — SCI
|
||||
|
||||
/* Задаёт BKSD_gpio48_dir = 1UL; BKSD линия GPIO 48 dir. */
|
||||
#define BKSD_gpio48_dir 1UL // 88 2:14C DIOD red
|
||||
/* Задаёт BKSD_gpio49_dir = 0UL; BKSD линия GPIO 49 dir. */
|
||||
#define BKSD_gpio49_dir 0UL // 89 2:14B input 2
|
||||
/* Задаёт BKSD_gpio50_dir = 0UL; BKSD линия GPIO 50 dir. */
|
||||
#define BKSD_gpio50_dir 0UL // 90 2:14A input 1
|
||||
/* Задаёт BKSD_gpio51_dir = 0UL; BKSD линия GPIO 51 dir. */
|
||||
#define BKSD_gpio51_dir 0UL // 91 2:13C mode !8
|
||||
/* Задаёт BKSD_gpio52_dir = 0UL; BKSD линия GPIO 52 dir. */
|
||||
#define BKSD_gpio52_dir 0UL
|
||||
/* Задаёт BKSD_gpio53_dir = 0UL; BKSD линия GPIO 53 dir. */
|
||||
#define BKSD_gpio53_dir 0UL
|
||||
|
||||
/* Задаёт BKSD_gpio58_dir = 0UL; BKSD линия GPIO 58 dir. */
|
||||
#define BKSD_gpio58_dir 0UL
|
||||
/* Задаёт BKSD_gpio59_dir = 1UL; BKSD линия GPIO 59 dir. */
|
||||
#define BKSD_gpio59_dir 1UL // 110 1:13B gotov
|
||||
/* Задаёт BKSD_gpio60_dir = 1UL; BKSD линия GPIO 60 dir. */
|
||||
#define BKSD_gpio60_dir 1UL // 111 1:13A led 1
|
||||
/* Задаёт BKSD_gpio61_dir = 1UL; BKSD линия GPIO 61 dir. */
|
||||
#define BKSD_gpio61_dir 1UL // 112 1:14C rez 2
|
||||
/* Задаёт BKSD_gpio62_dir = 1UL; BKSD линия GPIO 62 dir. */
|
||||
#define BKSD_gpio62_dir 1UL // 113 1:14B rez 1
|
||||
/* Задаёт BKSD_gpio63_dir = 1UL; BKSD линия GPIO 63 dir. */
|
||||
#define BKSD_gpio63_dir 1UL // 114 1:14A led 2
|
||||
|
||||
//===========================================================================
|
||||
|
||||
/* Задаёт BKST_gpio00_dir = 1UL; BKST линия GPIO 00 dir. */
|
||||
#define BKST_gpio00_dir 1UL // 5 2:7A select
|
||||
/* Задаёт BKST_gpio01_dir = 1UL; BKST линия GPIO 01 dir. */
|
||||
#define BKST_gpio01_dir 1UL // 6 2:4A select
|
||||
/* Задаёт BKST_gpio02_dir = 0UL; BKST линия GPIO 02 dir. */
|
||||
#define BKST_gpio02_dir 0UL
|
||||
/* Задаёт BKST_gpio03_dir = 1UL; BKST линия GPIO 03 dir. */
|
||||
#define BKST_gpio03_dir 1UL // 10 2:4B select
|
||||
/* Задаёт BKST_gpio04_dir = 0UL; BKST линия GPIO 04 dir. */
|
||||
#define BKST_gpio04_dir 0UL
|
||||
/* Задаёт BKST_gpio05_dir = 0UL; BKST линия GPIO 05 dir. */
|
||||
#define BKST_gpio05_dir 0UL
|
||||
/* Задаёт BKST_gpio06_dir = 1UL; BKST линия GPIO 06 dir. */
|
||||
#define BKST_gpio06_dir 1UL // 13 2:6A select
|
||||
/* Задаёт BKST_gpio07_dir = 1UL; BKST линия GPIO 07 dir. */
|
||||
#define BKST_gpio07_dir 1UL // 16 2:3A select
|
||||
/* Задаёт BKST_gpio08_dir = 1UL; BKST линия GPIO 08 dir. */
|
||||
#define BKST_gpio08_dir 1UL // 17 2:6B select
|
||||
/* Задаёт BKST_gpio09_dir = 1UL; BKST линия GPIO 09 dir. */
|
||||
#define BKST_gpio09_dir 1UL // 18 2:3B select
|
||||
/* Задаёт BKST_gpio10_dir = 0UL; BKST линия GPIO 10 dir. */
|
||||
#define BKST_gpio10_dir 0UL
|
||||
/* Задаёт BKST_gpio11_dir = 1UL; BKST линия GPIO 11 dir. */
|
||||
#define BKST_gpio11_dir 1UL // 20 2:3C select
|
||||
|
||||
#define BKST_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт BKST_gpio19_dir = 1UL; BKST линия GPIO 19 dir. */
|
||||
#define BKST_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт BKST_gpio20_dir = 0UL; BKST линия GPIO 20 dir. */
|
||||
#define BKST_gpio20_dir 0UL // 64 2:9B mode 2
|
||||
/* Задаёт BKST_gpio21_dir = 0UL; BKST линия GPIO 21 dir. */
|
||||
#define BKST_gpio21_dir 0UL // 65 2:9A mode 4
|
||||
/* Задаёт BKST_gpio22_dir = 0UL; BKST линия GPIO 22 dir. */
|
||||
#define BKST_gpio22_dir 0UL // 66 2:12C mode 1
|
||||
/* Задаёт BKST_gpio23_dir = 0UL; BKST линия GPIO 23 dir. */
|
||||
#define BKST_gpio23_dir 0UL
|
||||
/* Задаёт BKST_gpio24_dir = 1UL; BKST линия GPIO 24 dir. */
|
||||
#define BKST_gpio24_dir 1UL // 68 2:12A select
|
||||
/* Задаёт BKST_gpio25_dir = 0UL; BKST линия GPIO 25 dir. */
|
||||
#define BKST_gpio25_dir 0UL
|
||||
/* Задаёт BKST_gpio26_dir = 0UL; BKST линия GPIO 26 dir. */
|
||||
#define BKST_gpio26_dir 0UL
|
||||
/* Задаёт BKST_gpio27_dir = 1UL; BKST линия GPIO 27 dir. */
|
||||
#define BKST_gpio27_dir 1UL // 73 2:11A select
|
||||
|
||||
/* Задаёт BKST_gpio32_dir = 1UL; BKST линия GPIO 32 dir. */
|
||||
#define BKST_gpio32_dir 1UL // 74 2:10B DIOD green
|
||||
/* Задаёт BKST_gpio33_dir = 0UL; BKST линия GPIO 33 dir. */
|
||||
#define BKST_gpio33_dir 0UL
|
||||
#define BKST_gpio34_dir 1UL // 142 — SCI
|
||||
/* Задаёт BKST_gpio34_dir = 1UL; BKST линия GPIO 34 dir. */
|
||||
#define BKST_gpio34_dir 1UL // 142 — SCI
|
||||
|
||||
/* Задаёт BKST_gpio48_dir = 1UL; BKST линия GPIO 48 dir. */
|
||||
#define BKST_gpio48_dir 1UL // 88 2:14C DIOD red
|
||||
/* Задаёт BKST_gpio49_dir = 0UL; BKST линия GPIO 49 dir. */
|
||||
#define BKST_gpio49_dir 0UL
|
||||
/* Задаёт BKST_gpio50_dir = 1UL; BKST линия GPIO 50 dir. */
|
||||
#define BKST_gpio50_dir 1UL // 90 2:14A select
|
||||
/* Задаёт BKST_gpio51_dir = 0UL; BKST линия GPIO 51 dir. */
|
||||
#define BKST_gpio51_dir 0UL // 91 2:13C mode !8
|
||||
/* Задаёт BKST_gpio52_dir = 0UL; BKST линия GPIO 52 dir. */
|
||||
#define BKST_gpio52_dir 0UL
|
||||
/* Задаёт BKST_gpio53_dir = 1UL; BKST линия GPIO 53 dir. */
|
||||
#define BKST_gpio53_dir 1UL // 95 2:13A select
|
||||
|
||||
/* Задаёт BKST_gpio58_dir = 1UL; BKST линия GPIO 58 dir. */
|
||||
#define BKST_gpio58_dir 1UL // 100 1:13C rez 1
|
||||
/* Задаёт BKST_gpio59_dir = 1UL; BKST линия GPIO 59 dir. */
|
||||
#define BKST_gpio59_dir 1UL // 110 1:13B gotov
|
||||
/* Задаёт BKST_gpio60_dir = 1UL; BKST линия GPIO 60 dir. */
|
||||
#define BKST_gpio60_dir 1UL // 111 1:13A led 1
|
||||
/* Задаёт BKST_gpio61_dir = 1UL; BKST линия GPIO 61 dir. */
|
||||
#define BKST_gpio61_dir 1UL // 112 1:14C rez 2
|
||||
/* Задаёт BKST_gpio62_dir = 1UL; BKST линия GPIO 62 dir. */
|
||||
#define BKST_gpio62_dir 1UL // 113 1:14B led 2
|
||||
/* Задаёт BKST_gpio63_dir = 0UL; BKST линия GPIO 63 dir. */
|
||||
#define BKST_gpio63_dir 0UL // 114 1:14A input
|
||||
|
||||
//===========================================================================
|
||||
|
||||
/* Задаёт PULT_gpio00_dir = 1UL; PULT линия GPIO 00 dir. */
|
||||
#define PULT_gpio00_dir 1UL // 5 2:7A gotov
|
||||
/* Задаёт PULT_gpio01_dir = 0UL; PULT линия GPIO 01 dir. */
|
||||
#define PULT_gpio01_dir 0UL
|
||||
/* Задаёт PULT_gpio02_dir = 1UL; PULT линия GPIO 02 dir. */
|
||||
#define PULT_gpio02_dir 1UL // 7 2:7B ro 1
|
||||
/* Задаёт PULT_gpio03_dir = 0UL; PULT линия GPIO 03 dir. */
|
||||
#define PULT_gpio03_dir 0UL
|
||||
/* Задаёт PULT_gpio04_dir = 0UL; PULT линия GPIO 04 dir. */
|
||||
#define PULT_gpio04_dir 0UL
|
||||
/* Задаёт PULT_gpio05_dir = 0UL; PULT линия GPIO 05 dir. */
|
||||
#define PULT_gpio05_dir 0UL
|
||||
/* Задаёт PULT_gpio06_dir = 1UL; PULT линия GPIO 06 dir. */
|
||||
#define PULT_gpio06_dir 1UL // 13 2:6A kanal
|
||||
/* Задаёт PULT_gpio07_dir = 0UL; PULT линия GPIO 07 dir. */
|
||||
#define PULT_gpio07_dir 0UL
|
||||
/* Задаёт PULT_gpio08_dir = 1UL; PULT линия GPIO 08 dir. */
|
||||
#define PULT_gpio08_dir 1UL // 17 2:6B kanal
|
||||
/* Задаёт PULT_gpio09_dir = 0UL; PULT линия GPIO 09 dir. */
|
||||
#define PULT_gpio09_dir 0UL
|
||||
/* Задаёт PULT_gpio10_dir = 0UL; PULT линия GPIO 10 dir. */
|
||||
#define PULT_gpio10_dir 0UL
|
||||
/* Задаёт PULT_gpio11_dir = 0UL; PULT линия GPIO 11 dir. */
|
||||
#define PULT_gpio11_dir 0UL
|
||||
|
||||
#define PULT_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт PULT_gpio19_dir = 1UL; PULT линия GPIO 19 dir. */
|
||||
#define PULT_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт PULT_gpio20_dir = 0UL; PULT линия GPIO 20 dir. */
|
||||
#define PULT_gpio20_dir 0UL // 64 2:9B mode 2
|
||||
/* Задаёт PULT_gpio21_dir = 0UL; PULT линия GPIO 21 dir. */
|
||||
#define PULT_gpio21_dir 0UL // 65 2:9A mode 4
|
||||
/* Задаёт PULT_gpio22_dir = 0UL; PULT линия GPIO 22 dir. */
|
||||
#define PULT_gpio22_dir 0UL // 66 2:12C mode 1
|
||||
/* Задаёт PULT_gpio23_dir = 0UL; PULT линия GPIO 23 dir. */
|
||||
#define PULT_gpio23_dir 0UL // 67 2:12B button
|
||||
/* Задаёт PULT_gpio24_dir = 0UL; PULT линия GPIO 24 dir. */
|
||||
#define PULT_gpio24_dir 0UL // 68 2:12A button
|
||||
/* Задаёт PULT_gpio25_dir = 0UL; PULT линия GPIO 25 dir. */
|
||||
#define PULT_gpio25_dir 0UL
|
||||
/* Задаёт PULT_gpio26_dir = 0UL; PULT линия GPIO 26 dir. */
|
||||
#define PULT_gpio26_dir 0UL // 72 2:11B button
|
||||
/* Задаёт PULT_gpio27_dir = 0UL; PULT линия GPIO 27 dir. */
|
||||
#define PULT_gpio27_dir 0UL // 73 2:11A button
|
||||
|
||||
/* Задаёт PULT_gpio32_dir = 1UL; PULT линия GPIO 32 dir. */
|
||||
#define PULT_gpio32_dir 1UL // 74 2:10B DIOD green
|
||||
/* Задаёт PULT_gpio33_dir = 0UL; PULT линия GPIO 33 dir. */
|
||||
#define PULT_gpio33_dir 0UL
|
||||
#define PULT_gpio34_dir 1UL // 142 — SCI
|
||||
/* Задаёт PULT_gpio34_dir = 1UL; PULT линия GPIO 34 dir. */
|
||||
#define PULT_gpio34_dir 1UL // 142 — SCI
|
||||
|
||||
/* Задаёт PULT_gpio48_dir = 1UL; PULT линия GPIO 48 dir. */
|
||||
#define PULT_gpio48_dir 1UL // 88 2:14C DIOD red
|
||||
/* Задаёт PULT_gpio49_dir = 0UL; PULT линия GPIO 49 dir. */
|
||||
#define PULT_gpio49_dir 0UL // 89 2:14B button
|
||||
/* Задаёт PULT_gpio50_dir = 0UL; PULT линия GPIO 50 dir. */
|
||||
#define PULT_gpio50_dir 0UL // 90 2:14A button
|
||||
/* Задаёт PULT_gpio51_dir = 0UL; PULT линия GPIO 51 dir. */
|
||||
#define PULT_gpio51_dir 0UL // 91 2:13C mode !8
|
||||
/* Задаёт PULT_gpio52_dir = 0UL; PULT линия GPIO 52 dir. */
|
||||
#define PULT_gpio52_dir 0UL // 94 2:13B button
|
||||
/* Задаёт PULT_gpio53_dir = 0UL; PULT линия GPIO 53 dir. */
|
||||
#define PULT_gpio53_dir 0UL // 95 2:13A button
|
||||
|
||||
/* Задаёт PULT_gpio58_dir = 0UL; PULT линия GPIO 58 dir. */
|
||||
#define PULT_gpio58_dir 0UL
|
||||
/* Задаёт PULT_gpio59_dir = 0UL; PULT линия GPIO 59 dir. */
|
||||
#define PULT_gpio59_dir 0UL
|
||||
/* Задаёт PULT_gpio60_dir = 0UL; PULT линия GPIO 60 dir. */
|
||||
#define PULT_gpio60_dir 0UL
|
||||
/* Задаёт PULT_gpio61_dir = 0UL; PULT линия GPIO 61 dir. */
|
||||
#define PULT_gpio61_dir 0UL
|
||||
/* Задаёт PULT_gpio62_dir = 0UL; PULT линия GPIO 62 dir. */
|
||||
#define PULT_gpio62_dir 0UL
|
||||
/* Задаёт PULT_gpio63_dir = 0UL; PULT линия GPIO 63 dir. */
|
||||
#define PULT_gpio63_dir 0UL
|
||||
|
||||
//===========================================================================
|
||||
|
||||
/* Задаёт PLT2_gpio00_dir = 1UL; 2 линия GPIO 00 dir. */
|
||||
#define PLT2_gpio00_dir 1UL // 5 2:7A gotov
|
||||
/* Задаёт PLT2_gpio01_dir = 0UL; 2 линия GPIO 01 dir. */
|
||||
#define PLT2_gpio01_dir 0UL
|
||||
/* Задаёт PLT2_gpio02_dir = 0UL; 2 линия GPIO 02 dir. */
|
||||
#define PLT2_gpio02_dir 0UL
|
||||
/* Задаёт PLT2_gpio03_dir = 1UL; 2 линия GPIO 03 dir. */
|
||||
#define PLT2_gpio03_dir 1UL // 10 2:4B res_pb
|
||||
/* Задаёт PLT2_gpio04_dir = 0UL; 2 линия GPIO 04 dir. */
|
||||
#define PLT2_gpio04_dir 0UL // 11 2:7C button
|
||||
/* Задаёт PLT2_gpio05_dir = 0UL; 2 линия GPIO 05 dir. */
|
||||
#define PLT2_gpio05_dir 0UL // 12 2:4C button
|
||||
/* Задаёт PLT2_gpio06_dir = 1UL; 2 линия GPIO 06 dir. */
|
||||
#define PLT2_gpio06_dir 1UL // 13 2:6A kanal
|
||||
/* Задаёт PLT2_gpio07_dir = 0UL; 2 линия GPIO 07 dir. */
|
||||
#define PLT2_gpio07_dir 0UL
|
||||
/* Задаёт PLT2_gpio08_dir = 1UL; 2 линия GPIO 08 dir. */
|
||||
#define PLT2_gpio08_dir 1UL // 17 2:6B kanal
|
||||
/* Задаёт PLT2_gpio09_dir = 1UL; 2 линия GPIO 09 dir. */
|
||||
#define PLT2_gpio09_dir 1UL // 18 2:3B res_lb
|
||||
/* Задаёт PLT2_gpio10_dir = 0UL; 2 линия GPIO 10 dir. */
|
||||
#define PLT2_gpio10_dir 0UL
|
||||
/* Задаёт PLT2_gpio11_dir = 0UL; 2 линия GPIO 11 dir. */
|
||||
#define PLT2_gpio11_dir 0UL
|
||||
|
||||
#define PLT2_gpio19_dir 1UL // 63 × SPI
|
||||
/* Задаёт PLT2_gpio19_dir = 1UL; 2 линия GPIO 19 dir. */
|
||||
#define PLT2_gpio19_dir 1UL // 63 Ч SPI
|
||||
/* Задаёт PLT2_gpio20_dir = 0UL; 2 линия GPIO 20 dir. */
|
||||
#define PLT2_gpio20_dir 0UL // 64 2:9B mode 2
|
||||
/* Задаёт PLT2_gpio21_dir = 0UL; 2 линия GPIO 21 dir. */
|
||||
#define PLT2_gpio21_dir 0UL // 65 2:9A mode 4
|
||||
/* Задаёт PLT2_gpio22_dir = 0UL; 2 линия GPIO 22 dir. */
|
||||
#define PLT2_gpio22_dir 0UL // 66 2:12C mode 1
|
||||
/* Задаёт PLT2_gpio23_dir = 0UL; 2 линия GPIO 23 dir. */
|
||||
#define PLT2_gpio23_dir 0UL // 67 2:12B button
|
||||
/* Задаёт PLT2_gpio24_dir = 0UL; 2 линия GPIO 24 dir. */
|
||||
#define PLT2_gpio24_dir 0UL // 68 2:12A button
|
||||
/* Задаёт PLT2_gpio25_dir = 0UL; 2 линия GPIO 25 dir. */
|
||||
#define PLT2_gpio25_dir 0UL // 69 2:11C button
|
||||
/* Задаёт PLT2_gpio26_dir = 0UL; 2 линия GPIO 26 dir. */
|
||||
#define PLT2_gpio26_dir 0UL // 72 2:11B button
|
||||
/* Задаёт PLT2_gpio27_dir = 0UL; 2 линия GPIO 27 dir. */
|
||||
#define PLT2_gpio27_dir 0UL // 73 2:11A button
|
||||
|
||||
/* Задаёт PLT2_gpio32_dir = 1UL; 2 линия GPIO 32 dir. */
|
||||
#define PLT2_gpio32_dir 1UL // 74 2:10B DIOD green
|
||||
/* Задаёт PLT2_gpio33_dir = 0UL; 2 линия GPIO 33 dir. */
|
||||
#define PLT2_gpio33_dir 0UL // 75 2:10C button
|
||||
#define PLT2_gpio34_dir 1UL // 142 × SCI
|
||||
/* Задаёт PLT2_gpio34_dir = 1UL; 2 линия GPIO 34 dir. */
|
||||
#define PLT2_gpio34_dir 1UL // 142 Ч SCI
|
||||
|
||||
/* Задаёт PLT2_gpio48_dir = 0UL; 2 линия GPIO 48 dir. */
|
||||
#define PLT2_gpio48_dir 0UL // 88 2:14C button
|
||||
/* Задаёт PLT2_gpio49_dir = 0UL; 2 линия GPIO 49 dir. */
|
||||
#define PLT2_gpio49_dir 0UL // 89 2:14B button
|
||||
/* Задаёт PLT2_gpio50_dir = 0UL; 2 линия GPIO 50 dir. */
|
||||
#define PLT2_gpio50_dir 0UL // 90 2:14A button
|
||||
/* Задаёт PLT2_gpio51_dir = 0UL; 2 линия GPIO 51 dir. */
|
||||
#define PLT2_gpio51_dir 0UL // 91 2:13C mode !8
|
||||
/* Задаёт PLT2_gpio52_dir = 0UL; 2 линия GPIO 52 dir. */
|
||||
#define PLT2_gpio52_dir 0UL // 94 2:13B button
|
||||
/* Задаёт PLT2_gpio53_dir = 0UL; 2 линия GPIO 53 dir. */
|
||||
#define PLT2_gpio53_dir 0UL // 95 2:13A button
|
||||
|
||||
/* Задаёт PLT2_gpio58_dir = 0UL; 2 линия GPIO 58 dir. */
|
||||
#define PLT2_gpio58_dir 0UL
|
||||
/* Задаёт PLT2_gpio59_dir = 0UL; 2 линия GPIO 59 dir. */
|
||||
#define PLT2_gpio59_dir 0UL
|
||||
/* Задаёт PLT2_gpio60_dir = 0UL; 2 линия GPIO 60 dir. */
|
||||
#define PLT2_gpio60_dir 0UL
|
||||
/* Задаёт PLT2_gpio61_dir = 0UL; 2 линия GPIO 61 dir. */
|
||||
#define PLT2_gpio61_dir 0UL
|
||||
/* Задаёт PLT2_gpio62_dir = 0UL; 2 линия GPIO 62 dir. */
|
||||
#define PLT2_gpio62_dir 0UL
|
||||
/* Задаёт PLT2_gpio63_dir = 0UL; 2 линия GPIO 63 dir. */
|
||||
#define PLT2_gpio63_dir 0UL
|
||||
|
||||
//===========================================================================
|
||||
|
||||
/* Задаёт SHKF_gpio00_dir = 0UL; SHKF линия GPIO 00 dir. */
|
||||
#define SHKF_gpio00_dir 0UL // 5 2:7A input
|
||||
/* Задаёт SHKF_gpio01_dir = 0UL; SHKF линия GPIO 01 dir. */
|
||||
#define SHKF_gpio01_dir 0UL // 6 2:4A input
|
||||
/* Задаёт SHKF_gpio02_dir = 0UL; SHKF линия GPIO 02 dir. */
|
||||
#define SHKF_gpio02_dir 0UL // 7 2:7B input
|
||||
/* Задаёт SHKF_gpio03_dir = 0UL; SHKF линия GPIO 03 dir. */
|
||||
#define SHKF_gpio03_dir 0UL // 10 2:4B input
|
||||
/* Задаёт SHKF_gpio04_dir = 0UL; SHKF линия GPIO 04 dir. */
|
||||
#define SHKF_gpio04_dir 0UL // 11 2:7C input
|
||||
/* Задаёт SHKF_gpio05_dir = 0UL; SHKF линия GPIO 05 dir. */
|
||||
#define SHKF_gpio05_dir 0UL // 12 2:4C input
|
||||
/* Задаёт SHKF_gpio06_dir = 0UL; SHKF линия GPIO 06 dir. */
|
||||
#define SHKF_gpio06_dir 0UL // 13 2:6A input
|
||||
/* Задаёт SHKF_gpio07_dir = 0UL; SHKF линия GPIO 07 dir. */
|
||||
#define SHKF_gpio07_dir 0UL // 16 2:3A input
|
||||
/* Задаёт SHKF_gpio08_dir = 0UL; SHKF линия GPIO 08 dir. */
|
||||
#define SHKF_gpio08_dir 0UL // 17 2:6B input
|
||||
/* Задаёт SHKF_gpio09_dir = 0UL; SHKF линия GPIO 09 dir. */
|
||||
#define SHKF_gpio09_dir 0UL // 18 2:3B input
|
||||
/* Задаёт SHKF_gpio10_dir = 0UL; SHKF линия GPIO 10 dir. */
|
||||
#define SHKF_gpio10_dir 0UL // 19 2:6C input
|
||||
/* Задаёт SHKF_gpio11_dir = 0UL; SHKF линия GPIO 11 dir. */
|
||||
#define SHKF_gpio11_dir 0UL // 20 2:3C input
|
||||
|
||||
#define SHKF_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт SHKF_gpio19_dir = 1UL; SHKF линия GPIO 19 dir. */
|
||||
#define SHKF_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт SHKF_gpio20_dir = 0UL; SHKF линия GPIO 20 dir. */
|
||||
#define SHKF_gpio20_dir 0UL // 64 2:9B mode 2
|
||||
/* Задаёт SHKF_gpio21_dir = 0UL; SHKF линия GPIO 21 dir. */
|
||||
#define SHKF_gpio21_dir 0UL // 65 2:9A mode 4
|
||||
/* Задаёт SHKF_gpio22_dir = 0UL; SHKF линия GPIO 22 dir. */
|
||||
#define SHKF_gpio22_dir 0UL // 66 2:12C mode 1
|
||||
/* Задаёт SHKF_gpio23_dir = 0UL; SHKF линия GPIO 23 dir. */
|
||||
#define SHKF_gpio23_dir 0UL // 67 2:12B input
|
||||
/* Задаёт SHKF_gpio24_dir = 0UL; SHKF линия GPIO 24 dir. */
|
||||
#define SHKF_gpio24_dir 0UL // 68 2:12A input
|
||||
/* Задаёт SHKF_gpio25_dir = 0UL; SHKF линия GPIO 25 dir. */
|
||||
#define SHKF_gpio25_dir 0UL // 69 2:11C input
|
||||
/* Задаёт SHKF_gpio26_dir = 0UL; SHKF линия GPIO 26 dir. */
|
||||
#define SHKF_gpio26_dir 0UL // 72 2:11B input
|
||||
/* Задаёт SHKF_gpio27_dir = 0UL; SHKF линия GPIO 27 dir. */
|
||||
#define SHKF_gpio27_dir 0UL // 73 2:11A input
|
||||
|
||||
/* Задаёт SHKF_gpio32_dir = 0UL; SHKF линия GPIO 32 dir. */
|
||||
#define SHKF_gpio32_dir 0UL // 74 2:10B input
|
||||
/* Задаёт SHKF_gpio33_dir = 0UL; SHKF линия GPIO 33 dir. */
|
||||
#define SHKF_gpio33_dir 0UL // 75 2:10C input
|
||||
#define SHKF_gpio34_dir 1UL // 142 — SCI
|
||||
/* Задаёт SHKF_gpio34_dir = 1UL; SHKF линия GPIO 34 dir. */
|
||||
#define SHKF_gpio34_dir 1UL // 142 — SCI
|
||||
|
||||
/* Задаёт SHKF_gpio48_dir = 1UL; SHKF линия GPIO 48 dir. */
|
||||
#define SHKF_gpio48_dir 1UL // 88 2:14C DIOD red
|
||||
/* Задаёт SHKF_gpio49_dir = 0UL; SHKF линия GPIO 49 dir. */
|
||||
#define SHKF_gpio49_dir 0UL // 89 2:14B input
|
||||
/* Задаёт SHKF_gpio50_dir = 0UL; SHKF линия GPIO 50 dir. */
|
||||
#define SHKF_gpio50_dir 0UL // 90 2:14A input
|
||||
/* Задаёт SHKF_gpio51_dir = 0UL; SHKF линия GPIO 51 dir. */
|
||||
#define SHKF_gpio51_dir 0UL // 91 2:13C mode !8
|
||||
/* Задаёт SHKF_gpio52_dir = 0UL; SHKF линия GPIO 52 dir. */
|
||||
#define SHKF_gpio52_dir 0UL // 94 2:13B input
|
||||
/* Задаёт SHKF_gpio53_dir = 0UL; SHKF линия GPIO 53 dir. */
|
||||
#define SHKF_gpio53_dir 0UL // 95 2:13A input
|
||||
|
||||
/* Задаёт SHKF_gpio58_dir = 1UL; SHKF линия GPIO 58 dir. */
|
||||
#define SHKF_gpio58_dir 1UL // 100 1:13C rez 1
|
||||
/* Задаёт SHKF_gpio59_dir = 1UL; SHKF линия GPIO 59 dir. */
|
||||
#define SHKF_gpio59_dir 1UL // 110 1:13B gotov
|
||||
/* Задаёт SHKF_gpio60_dir = 1UL; SHKF линия GPIO 60 dir. */
|
||||
#define SHKF_gpio60_dir 1UL // 111 1:13A led 1
|
||||
/* Задаёт SHKF_gpio61_dir = 1UL; SHKF линия GPIO 61 dir. */
|
||||
#define SHKF_gpio61_dir 1UL // 112 1:14C rez 2
|
||||
/* Задаёт SHKF_gpio62_dir = 0UL; SHKF линия GPIO 62 dir. */
|
||||
#define SHKF_gpio62_dir 0UL
|
||||
/* Задаёт SHKF_gpio63_dir = 1UL; SHKF линия GPIO 63 dir. */
|
||||
#define SHKF_gpio63_dir 1UL // 114 1:14A led 2
|
||||
|
||||
//===========================================================================
|
||||
|
||||
/* Задаёт LOAD_gpio00_dir = 0UL; LOAD линия GPIO 00 dir. */
|
||||
#define LOAD_gpio00_dir 0UL
|
||||
/* Задаёт LOAD_gpio01_dir = 1UL; LOAD линия GPIO 01 dir. */
|
||||
#define LOAD_gpio01_dir 1UL // 6 2:4A led 2
|
||||
/* Задаёт LOAD_gpio02_dir = 0UL; LOAD линия GPIO 02 dir. */
|
||||
#define LOAD_gpio02_dir 0UL
|
||||
/* Задаёт LOAD_gpio03_dir = 1UL; LOAD линия GPIO 03 dir. */
|
||||
#define LOAD_gpio03_dir 1UL // 10 2:4B res_out 2
|
||||
/* Задаёт LOAD_gpio04_dir = 0UL; LOAD линия GPIO 04 dir. */
|
||||
#define LOAD_gpio04_dir 0UL
|
||||
/* Задаёт LOAD_gpio05_dir = 0UL; LOAD линия GPIO 05 dir. */
|
||||
#define LOAD_gpio05_dir 0UL
|
||||
/* Задаёт LOAD_gpio06_dir = 0UL; LOAD линия GPIO 06 dir. */
|
||||
#define LOAD_gpio06_dir 0UL // 13 2:6A omega d
|
||||
/* Задаёт LOAD_gpio07_dir = 1UL; LOAD линия GPIO 07 dir. */
|
||||
#define LOAD_gpio07_dir 1UL // 16 2:3A led 1
|
||||
/* Задаёт LOAD_gpio08_dir = 0UL; LOAD линия GPIO 08 dir. */
|
||||
#define LOAD_gpio08_dir 0UL // 17 2:6B start 1
|
||||
/* Задаёт LOAD_gpio09_dir = 1UL; LOAD линия GPIO 09 dir. */
|
||||
#define LOAD_gpio09_dir 1UL // 18 2:3B res_out 1
|
||||
/* Задаёт LOAD_gpio10_dir = 0UL; LOAD линия GPIO 10 dir. */
|
||||
#define LOAD_gpio10_dir 0UL
|
||||
/* Задаёт LOAD_gpio11_dir = 0UL; LOAD линия GPIO 11 dir. */
|
||||
#define LOAD_gpio11_dir 0UL // 20 2:3C res_in 0
|
||||
|
||||
#define LOAD_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт LOAD_gpio19_dir = 1UL; LOAD линия GPIO 19 dir. */
|
||||
#define LOAD_gpio19_dir 1UL // 63 — SPI
|
||||
/* Задаёт LOAD_gpio20_dir = 0UL; LOAD линия GPIO 20 dir. */
|
||||
#define LOAD_gpio20_dir 0UL // 64 2:9B mode 2
|
||||
/* Задаёт LOAD_gpio21_dir = 0UL; LOAD линия GPIO 21 dir. */
|
||||
#define LOAD_gpio21_dir 0UL // 65 2:9A mode 4
|
||||
/* Задаёт LOAD_gpio22_dir = 0UL; LOAD линия GPIO 22 dir. */
|
||||
#define LOAD_gpio22_dir 0UL // 66 2:12C mode 1
|
||||
/* Задаёт LOAD_gpio23_dir = 0UL; LOAD линия GPIO 23 dir. */
|
||||
#define LOAD_gpio23_dir 0UL
|
||||
/* Задаёт LOAD_gpio24_dir = 0UL; LOAD линия GPIO 24 dir. */
|
||||
#define LOAD_gpio24_dir 0UL
|
||||
/* Задаёт LOAD_gpio25_dir = 0UL; LOAD линия GPIO 25 dir. */
|
||||
#define LOAD_gpio25_dir 0UL
|
||||
/* Задаёт LOAD_gpio26_dir = 0UL; LOAD линия GPIO 26 dir. */
|
||||
#define LOAD_gpio26_dir 0UL
|
||||
/* Задаёт LOAD_gpio27_dir = 0UL; LOAD линия GPIO 27 dir. */
|
||||
#define LOAD_gpio27_dir 0UL
|
||||
|
||||
/* Задаёт LOAD_gpio32_dir = 1UL; LOAD линия GPIO 32 dir. */
|
||||
#define LOAD_gpio32_dir 1UL // 74 2:10B DIOD green
|
||||
/* Задаёт LOAD_gpio33_dir = 0UL; LOAD линия GPIO 33 dir. */
|
||||
#define LOAD_gpio33_dir 0UL
|
||||
#define LOAD_gpio34_dir 1UL // 142 — SCI
|
||||
/* Задаёт LOAD_gpio34_dir = 1UL; LOAD линия GPIO 34 dir. */
|
||||
#define LOAD_gpio34_dir 1UL // 142 — SCI
|
||||
|
||||
/* Задаёт LOAD_gpio48_dir = 1UL; LOAD линия GPIO 48 dir. */
|
||||
#define LOAD_gpio48_dir 1UL // 88 2:14C DIOD red
|
||||
/* Задаёт LOAD_gpio49_dir = 0UL; LOAD линия GPIO 49 dir. */
|
||||
#define LOAD_gpio49_dir 0UL
|
||||
/* Задаёт LOAD_gpio50_dir = 0UL; LOAD линия GPIO 50 dir. */
|
||||
#define LOAD_gpio50_dir 0UL
|
||||
/* Задаёт LOAD_gpio51_dir = 0UL; LOAD линия GPIO 51 dir. */
|
||||
#define LOAD_gpio51_dir 0UL // 91 2:13C mode !8
|
||||
/* Задаёт LOAD_gpio52_dir = 0UL; LOAD линия GPIO 52 dir. */
|
||||
#define LOAD_gpio52_dir 0UL
|
||||
/* Задаёт LOAD_gpio53_dir = 0UL; LOAD линия GPIO 53 dir. */
|
||||
#define LOAD_gpio53_dir 0UL
|
||||
|
||||
/* Задаёт LOAD_gpio58_dir = 1UL; LOAD линия GPIO 58 dir. */
|
||||
#define LOAD_gpio58_dir 1UL // 100 1:13C stop_dptb
|
||||
/* Задаёт LOAD_gpio59_dir = 1UL; LOAD линия GPIO 59 dir. */
|
||||
#define LOAD_gpio59_dir 1UL // 110 1:13B csdac
|
||||
/* Задаёт LOAD_gpio60_dir = 1UL; LOAD линия GPIO 60 dir. */
|
||||
#define LOAD_gpio60_dir 1UL // 111 1:13A didac
|
||||
/* Задаёт LOAD_gpio61_dir = 1UL; LOAD линия GPIO 61 dir. */
|
||||
#define LOAD_gpio61_dir 1UL // 112 1:14C gotov
|
||||
/* Задаёт LOAD_gpio62_dir = 1UL; LOAD линия GPIO 62 dir. */
|
||||
#define LOAD_gpio62_dir 1UL // 113 1:14B start_dptb
|
||||
/* Задаёт LOAD_gpio63_dir = 1UL; LOAD линия GPIO 63 dir. */
|
||||
#define LOAD_gpio63_dir 1UL // 114 1:14A clkdac
|
||||
|
||||
//===========================================================================
|
||||
|
||||
/* Задаёт COMM_GPADIR = (COMM_gpio00_dir ) + (COMM_gpio01_dir<<1) + (COMM_gpio02_dir<<2) + (COMM_gpio03_dir<<3) +; данные COMM_GPADIR. */
|
||||
#define COMM_GPADIR (COMM_gpio00_dir ) + (COMM_gpio01_dir<<1) + (COMM_gpio02_dir<<2) + (COMM_gpio03_dir<<3) + \
|
||||
(COMM_gpio04_dir<<4) + (COMM_gpio05_dir<<5) + (COMM_gpio06_dir<<6) + (COMM_gpio07_dir<<7) + \
|
||||
(COMM_gpio08_dir<<8) + (COMM_gpio09_dir<<9) + (COMM_gpio10_dir<<10)+ (COMM_gpio11_dir<<11)+ \
|
||||
(COMM_gpio19_dir<<19)+ \
|
||||
(COMM_gpio20_dir<<20)+ (COMM_gpio21_dir<<21)+ (COMM_gpio22_dir<<22)+ (COMM_gpio23_dir<<23)+ \
|
||||
(COMM_gpio24_dir<<24)+ (COMM_gpio25_dir<<25)+ (COMM_gpio26_dir<<26)+ (COMM_gpio27_dir<<27);
|
||||
(COMM_gpio04_dir<<4) + (COMM_gpio05_dir<<5) + (COMM_gpio06_dir<<6) + (COMM_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (COMM_gpio04_dir<<4) + (COMM_gpio05_dir<<5) + (COMM_gpio06_dir<<6) + (COMM_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
|
||||
(COMM_gpio08_dir<<8) + (COMM_gpio09_dir<<9) + (COMM_gpio10_dir<<10)+ (COMM_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio08_dir<<8) + (COMM_gpio09_dir<<9) + (COMM_gpio10_dir<<10)+ (COMM_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
|
||||
(COMM_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(COMM_gpio20_dir<<20)+ (COMM_gpio21_dir<<21)+ (COMM_gpio22_dir<<22)+ (COMM_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio20_dir<<20)+ (COMM_gpio21_dir<<21)+ (COMM_gpio22_dir<<22)+ (COMM_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
|
||||
(COMM_gpio24_dir<<24)+ (COMM_gpio25_dir<<25)+ (COMM_gpio26_dir<<26)+ (COMM_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (COMM_gpio24_dir<<24)+ (COMM_gpio25_dir<<25)+ (COMM_gpio26_dir<<26)+ (COMM_gpio27_dir<<27);; порядок элементов сохраняется. */
|
||||
/* Задаёт COMM_GPBDIR = (COMM_gpio32_dir )+ (COMM_gpio33_dir<<1) + (COMM_gpio34_dir<<2 )+; данные COMM_GPBDIR. */
|
||||
#define COMM_GPBDIR (COMM_gpio32_dir )+ (COMM_gpio33_dir<<1) + (COMM_gpio34_dir<<2 )+ \
|
||||
(COMM_gpio48_dir<<16)+ (COMM_gpio49_dir<<17)+ (COMM_gpio50_dir<<18)+ (COMM_gpio51_dir<<19)+ \
|
||||
(COMM_gpio52_dir<<20)+ (COMM_gpio53_dir<<21)+ \
|
||||
(COMM_gpio58_dir<<26)+ (COMM_gpio59_dir<<27)+ \
|
||||
(COMM_gpio60_dir<<28)+ (COMM_gpio61_dir<<29)+ (COMM_gpio62_dir<<30)+ (COMM_gpio63_dir<<31);
|
||||
(COMM_gpio48_dir<<16)+ (COMM_gpio49_dir<<17)+ (COMM_gpio50_dir<<18)+ (COMM_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio48_dir<<16)+ (COMM_gpio49_dir<<17)+ (COMM_gpio50_dir<<18)+ (COMM_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(COMM_gpio52_dir<<20)+ (COMM_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio52_dir<<20)+ (COMM_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
|
||||
(COMM_gpio58_dir<<26)+ (COMM_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (COMM_gpio58_dir<<26)+ (COMM_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
|
||||
(COMM_gpio60_dir<<28)+ (COMM_gpio61_dir<<29)+ (COMM_gpio62_dir<<30)+ (COMM_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (COMM_gpio60_dir<<28)+ (COMM_gpio61_dir<<29)+ (COMM_gpio62_dir<<30)+ (COMM_gpio63_dir<<31);; порядок элементов сохраняется. */
|
||||
|
||||
/* Задаёт BKSD_GPADIR = (BKSD_gpio00_dir ) + (BKSD_gpio01_dir<<1) + (BKSD_gpio02_dir<<2) + (BKSD_gpio03_dir<<3) +; данные BKSD_GPADIR. */
|
||||
#define BKSD_GPADIR (BKSD_gpio00_dir ) + (BKSD_gpio01_dir<<1) + (BKSD_gpio02_dir<<2) + (BKSD_gpio03_dir<<3) + \
|
||||
(BKSD_gpio04_dir<<4) + (BKSD_gpio05_dir<<5) + (BKSD_gpio06_dir<<6) + (BKSD_gpio07_dir<<7) + \
|
||||
(BKSD_gpio08_dir<<8) + (BKSD_gpio09_dir<<9) + (BKSD_gpio10_dir<<10)+ (BKSD_gpio11_dir<<11)+ \
|
||||
(BKSD_gpio19_dir<<19)+ \
|
||||
(BKSD_gpio20_dir<<20)+ (BKSD_gpio21_dir<<21)+ (BKSD_gpio22_dir<<22)+ (BKSD_gpio23_dir<<23)+ \
|
||||
(BKSD_gpio24_dir<<24)+ (BKSD_gpio25_dir<<25)+ (BKSD_gpio26_dir<<26)+ (BKSD_gpio27_dir<<27);
|
||||
(BKSD_gpio04_dir<<4) + (BKSD_gpio05_dir<<5) + (BKSD_gpio06_dir<<6) + (BKSD_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (BKSD_gpio04_dir<<4) + (BKSD_gpio05_dir<<5) + (BKSD_gpio06_dir<<6) + (BKSD_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
|
||||
(BKSD_gpio08_dir<<8) + (BKSD_gpio09_dir<<9) + (BKSD_gpio10_dir<<10)+ (BKSD_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio08_dir<<8) + (BKSD_gpio09_dir<<9) + (BKSD_gpio10_dir<<10)+ (BKSD_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
|
||||
(BKSD_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(BKSD_gpio20_dir<<20)+ (BKSD_gpio21_dir<<21)+ (BKSD_gpio22_dir<<22)+ (BKSD_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio20_dir<<20)+ (BKSD_gpio21_dir<<21)+ (BKSD_gpio22_dir<<22)+ (BKSD_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
|
||||
(BKSD_gpio24_dir<<24)+ (BKSD_gpio25_dir<<25)+ (BKSD_gpio26_dir<<26)+ (BKSD_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (BKSD_gpio24_dir<<24)+ (BKSD_gpio25_dir<<25)+ (BKSD_gpio26_dir<<26)+ (BKSD_gpio27_dir<<27);; порядок элементов сохраняется. */
|
||||
/* Задаёт BKSD_GPBDIR = (BKSD_gpio32_dir )+ (BKSD_gpio33_dir<<1) + (BKSD_gpio34_dir<<2 )+; данные BKSD_GPBDIR. */
|
||||
#define BKSD_GPBDIR (BKSD_gpio32_dir )+ (BKSD_gpio33_dir<<1) + (BKSD_gpio34_dir<<2 )+ \
|
||||
(BKSD_gpio48_dir<<16)+ (BKSD_gpio49_dir<<17)+ (BKSD_gpio50_dir<<18)+ (BKSD_gpio51_dir<<19)+ \
|
||||
(BKSD_gpio52_dir<<20)+ (BKSD_gpio53_dir<<21)+ \
|
||||
(BKSD_gpio58_dir<<26)+ (BKSD_gpio59_dir<<27)+ \
|
||||
(BKSD_gpio60_dir<<28)+ (BKSD_gpio61_dir<<29)+ (BKSD_gpio62_dir<<30)+ (BKSD_gpio63_dir<<31);
|
||||
(BKSD_gpio48_dir<<16)+ (BKSD_gpio49_dir<<17)+ (BKSD_gpio50_dir<<18)+ (BKSD_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio48_dir<<16)+ (BKSD_gpio49_dir<<17)+ (BKSD_gpio50_dir<<18)+ (BKSD_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(BKSD_gpio52_dir<<20)+ (BKSD_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio52_dir<<20)+ (BKSD_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
|
||||
(BKSD_gpio58_dir<<26)+ (BKSD_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (BKSD_gpio58_dir<<26)+ (BKSD_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
|
||||
(BKSD_gpio60_dir<<28)+ (BKSD_gpio61_dir<<29)+ (BKSD_gpio62_dir<<30)+ (BKSD_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (BKSD_gpio60_dir<<28)+ (BKSD_gpio61_dir<<29)+ (BKSD_gpio62_dir<<30)+ (BKSD_gpio63_dir<<31);; порядок элементов сохраняется. */
|
||||
|
||||
/* Задаёт BKST_GPADIR = (BKST_gpio00_dir ) + (BKST_gpio01_dir<<1) + (BKST_gpio02_dir<<2) + (BKST_gpio03_dir<<3) +; данные BKST_GPADIR. */
|
||||
#define BKST_GPADIR (BKST_gpio00_dir ) + (BKST_gpio01_dir<<1) + (BKST_gpio02_dir<<2) + (BKST_gpio03_dir<<3) + \
|
||||
(BKST_gpio04_dir<<4) + (BKST_gpio05_dir<<5) + (BKST_gpio06_dir<<6) + (BKST_gpio07_dir<<7) + \
|
||||
(BKST_gpio08_dir<<8) + (BKST_gpio09_dir<<9) + (BKST_gpio10_dir<<10)+ (BKST_gpio11_dir<<11)+ \
|
||||
(BKST_gpio19_dir<<19)+ \
|
||||
(BKST_gpio20_dir<<20)+ (BKST_gpio21_dir<<21)+ (BKST_gpio22_dir<<22)+ (BKST_gpio23_dir<<23)+ \
|
||||
(BKST_gpio24_dir<<24)+ (BKST_gpio25_dir<<25)+ (BKST_gpio26_dir<<26)+ (BKST_gpio27_dir<<27);
|
||||
(BKST_gpio04_dir<<4) + (BKST_gpio05_dir<<5) + (BKST_gpio06_dir<<6) + (BKST_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (BKST_gpio04_dir<<4) + (BKST_gpio05_dir<<5) + (BKST_gpio06_dir<<6) + (BKST_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
|
||||
(BKST_gpio08_dir<<8) + (BKST_gpio09_dir<<9) + (BKST_gpio10_dir<<10)+ (BKST_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio08_dir<<8) + (BKST_gpio09_dir<<9) + (BKST_gpio10_dir<<10)+ (BKST_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
|
||||
(BKST_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(BKST_gpio20_dir<<20)+ (BKST_gpio21_dir<<21)+ (BKST_gpio22_dir<<22)+ (BKST_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio20_dir<<20)+ (BKST_gpio21_dir<<21)+ (BKST_gpio22_dir<<22)+ (BKST_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
|
||||
(BKST_gpio24_dir<<24)+ (BKST_gpio25_dir<<25)+ (BKST_gpio26_dir<<26)+ (BKST_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (BKST_gpio24_dir<<24)+ (BKST_gpio25_dir<<25)+ (BKST_gpio26_dir<<26)+ (BKST_gpio27_dir<<27);; порядок элементов сохраняется. */
|
||||
/* Задаёт BKST_GPBDIR = (BKST_gpio32_dir )+ (BKST_gpio33_dir<<1) + (BKST_gpio34_dir<<2 )+; данные BKST_GPBDIR. */
|
||||
#define BKST_GPBDIR (BKST_gpio32_dir )+ (BKST_gpio33_dir<<1) + (BKST_gpio34_dir<<2 )+ \
|
||||
(BKST_gpio48_dir<<16)+ (BKST_gpio49_dir<<17)+ (BKST_gpio50_dir<<18)+ (BKST_gpio51_dir<<19)+ \
|
||||
(BKST_gpio52_dir<<20)+ (BKST_gpio53_dir<<21)+ \
|
||||
(BKST_gpio58_dir<<26)+ (BKST_gpio59_dir<<27)+ \
|
||||
(BKST_gpio60_dir<<28)+ (BKST_gpio61_dir<<29)+ (BKST_gpio62_dir<<30)+ (BKST_gpio63_dir<<31);
|
||||
(BKST_gpio48_dir<<16)+ (BKST_gpio49_dir<<17)+ (BKST_gpio50_dir<<18)+ (BKST_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio48_dir<<16)+ (BKST_gpio49_dir<<17)+ (BKST_gpio50_dir<<18)+ (BKST_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(BKST_gpio52_dir<<20)+ (BKST_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio52_dir<<20)+ (BKST_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
|
||||
(BKST_gpio58_dir<<26)+ (BKST_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (BKST_gpio58_dir<<26)+ (BKST_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
|
||||
(BKST_gpio60_dir<<28)+ (BKST_gpio61_dir<<29)+ (BKST_gpio62_dir<<30)+ (BKST_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (BKST_gpio60_dir<<28)+ (BKST_gpio61_dir<<29)+ (BKST_gpio62_dir<<30)+ (BKST_gpio63_dir<<31);; порядок элементов сохраняется. */
|
||||
|
||||
/* Задаёт PULT_GPADIR = (PULT_gpio00_dir ) + (PULT_gpio01_dir<<1) + (PULT_gpio02_dir<<2) + (PULT_gpio03_dir<<3) +; данные PULT_GPADIR. */
|
||||
#define PULT_GPADIR (PULT_gpio00_dir ) + (PULT_gpio01_dir<<1) + (PULT_gpio02_dir<<2) + (PULT_gpio03_dir<<3) + \
|
||||
(PULT_gpio04_dir<<4) + (PULT_gpio05_dir<<5) + (PULT_gpio06_dir<<6) + (PULT_gpio07_dir<<7) + \
|
||||
(PULT_gpio08_dir<<8) + (PULT_gpio09_dir<<9) + (PULT_gpio10_dir<<10)+ (PULT_gpio11_dir<<11)+ \
|
||||
(PULT_gpio19_dir<<19)+ \
|
||||
(PULT_gpio20_dir<<20)+ (PULT_gpio21_dir<<21)+ (PULT_gpio22_dir<<22)+ (PULT_gpio23_dir<<23)+ \
|
||||
(PULT_gpio24_dir<<24)+ (PULT_gpio25_dir<<25)+ (PULT_gpio26_dir<<26)+ (PULT_gpio27_dir<<27);
|
||||
(PULT_gpio04_dir<<4) + (PULT_gpio05_dir<<5) + (PULT_gpio06_dir<<6) + (PULT_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (PULT_gpio04_dir<<4) + (PULT_gpio05_dir<<5) + (PULT_gpio06_dir<<6) + (PULT_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
|
||||
(PULT_gpio08_dir<<8) + (PULT_gpio09_dir<<9) + (PULT_gpio10_dir<<10)+ (PULT_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio08_dir<<8) + (PULT_gpio09_dir<<9) + (PULT_gpio10_dir<<10)+ (PULT_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
|
||||
(PULT_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(PULT_gpio20_dir<<20)+ (PULT_gpio21_dir<<21)+ (PULT_gpio22_dir<<22)+ (PULT_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio20_dir<<20)+ (PULT_gpio21_dir<<21)+ (PULT_gpio22_dir<<22)+ (PULT_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
|
||||
(PULT_gpio24_dir<<24)+ (PULT_gpio25_dir<<25)+ (PULT_gpio26_dir<<26)+ (PULT_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (PULT_gpio24_dir<<24)+ (PULT_gpio25_dir<<25)+ (PULT_gpio26_dir<<26)+ (PULT_gpio27_dir<<27);; порядок элементов сохраняется. */
|
||||
/* Задаёт PULT_GPBDIR = (PULT_gpio32_dir )+ (PULT_gpio33_dir<<1) + (PULT_gpio34_dir<<2 )+; данные PULT_GPBDIR. */
|
||||
#define PULT_GPBDIR (PULT_gpio32_dir )+ (PULT_gpio33_dir<<1) + (PULT_gpio34_dir<<2 )+ \
|
||||
(PULT_gpio48_dir<<16)+ (PULT_gpio49_dir<<17)+ (PULT_gpio50_dir<<18)+ (PULT_gpio51_dir<<19)+ \
|
||||
(PULT_gpio52_dir<<20)+ (PULT_gpio53_dir<<21)+ \
|
||||
(PULT_gpio58_dir<<26)+ (PULT_gpio59_dir<<27)+ \
|
||||
(PULT_gpio60_dir<<28)+ (PULT_gpio61_dir<<29)+ (PULT_gpio62_dir<<30)+ (PULT_gpio63_dir<<31);
|
||||
(PULT_gpio48_dir<<16)+ (PULT_gpio49_dir<<17)+ (PULT_gpio50_dir<<18)+ (PULT_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio48_dir<<16)+ (PULT_gpio49_dir<<17)+ (PULT_gpio50_dir<<18)+ (PULT_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(PULT_gpio52_dir<<20)+ (PULT_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio52_dir<<20)+ (PULT_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
|
||||
(PULT_gpio58_dir<<26)+ (PULT_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (PULT_gpio58_dir<<26)+ (PULT_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
|
||||
(PULT_gpio60_dir<<28)+ (PULT_gpio61_dir<<29)+ (PULT_gpio62_dir<<30)+ (PULT_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (PULT_gpio60_dir<<28)+ (PULT_gpio61_dir<<29)+ (PULT_gpio62_dir<<30)+ (PULT_gpio63_dir<<31);; порядок элементов сохраняется. */
|
||||
|
||||
/* Задаёт PLT2_GPADIR = (PLT2_gpio00_dir ) + (PLT2_gpio01_dir<<1) + (PLT2_gpio02_dir<<2) + (PLT2_gpio03_dir<<3) +; данные PLT2_GPADIR. */
|
||||
#define PLT2_GPADIR (PLT2_gpio00_dir ) + (PLT2_gpio01_dir<<1) + (PLT2_gpio02_dir<<2) + (PLT2_gpio03_dir<<3) + \
|
||||
(PLT2_gpio04_dir<<4) + (PLT2_gpio05_dir<<5) + (PLT2_gpio06_dir<<6) + (PLT2_gpio07_dir<<7) + \
|
||||
(PLT2_gpio08_dir<<8) + (PLT2_gpio09_dir<<9) + (PLT2_gpio10_dir<<10)+ (PLT2_gpio11_dir<<11)+ \
|
||||
(PLT2_gpio19_dir<<19)+ \
|
||||
(PLT2_gpio20_dir<<20)+ (PLT2_gpio21_dir<<21)+ (PLT2_gpio22_dir<<22)+ (PLT2_gpio23_dir<<23)+ \
|
||||
(PLT2_gpio24_dir<<24)+ (PLT2_gpio25_dir<<25)+ (PLT2_gpio26_dir<<26)+ (PLT2_gpio27_dir<<27);
|
||||
(PLT2_gpio04_dir<<4) + (PLT2_gpio05_dir<<5) + (PLT2_gpio06_dir<<6) + (PLT2_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (PLT2_gpio04_dir<<4) + (PLT2_gpio05_dir<<5) + (PLT2_gpio06_dir<<6) + (PLT2_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
|
||||
(PLT2_gpio08_dir<<8) + (PLT2_gpio09_dir<<9) + (PLT2_gpio10_dir<<10)+ (PLT2_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio08_dir<<8) + (PLT2_gpio09_dir<<9) + (PLT2_gpio10_dir<<10)+ (PLT2_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
|
||||
(PLT2_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(PLT2_gpio20_dir<<20)+ (PLT2_gpio21_dir<<21)+ (PLT2_gpio22_dir<<22)+ (PLT2_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio20_dir<<20)+ (PLT2_gpio21_dir<<21)+ (PLT2_gpio22_dir<<22)+ (PLT2_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
|
||||
(PLT2_gpio24_dir<<24)+ (PLT2_gpio25_dir<<25)+ (PLT2_gpio26_dir<<26)+ (PLT2_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (PLT2_gpio24_dir<<24)+ (PLT2_gpio25_dir<<25)+ (PLT2_gpio26_dir<<26)+ (PLT2_gpio27_dir<<27);; порядок элементов сохраняется. */
|
||||
/* Задаёт PLT2_GPBDIR = (PLT2_gpio32_dir )+ (PLT2_gpio33_dir<<1) + (PLT2_gpio34_dir<<2 )+; данные PLT2_GPBDIR. */
|
||||
#define PLT2_GPBDIR (PLT2_gpio32_dir )+ (PLT2_gpio33_dir<<1) + (PLT2_gpio34_dir<<2 )+ \
|
||||
(PLT2_gpio48_dir<<16)+ (PLT2_gpio49_dir<<17)+ (PLT2_gpio50_dir<<18)+ (PLT2_gpio51_dir<<19)+ \
|
||||
(PLT2_gpio52_dir<<20)+ (PLT2_gpio53_dir<<21)+ \
|
||||
(PLT2_gpio58_dir<<26)+ (PLT2_gpio59_dir<<27)+ \
|
||||
(PLT2_gpio60_dir<<28)+ (PLT2_gpio61_dir<<29)+ (PLT2_gpio62_dir<<30)+ (PLT2_gpio63_dir<<31);
|
||||
(PLT2_gpio48_dir<<16)+ (PLT2_gpio49_dir<<17)+ (PLT2_gpio50_dir<<18)+ (PLT2_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio48_dir<<16)+ (PLT2_gpio49_dir<<17)+ (PLT2_gpio50_dir<<18)+ (PLT2_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(PLT2_gpio52_dir<<20)+ (PLT2_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio52_dir<<20)+ (PLT2_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
|
||||
(PLT2_gpio58_dir<<26)+ (PLT2_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (PLT2_gpio58_dir<<26)+ (PLT2_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
|
||||
(PLT2_gpio60_dir<<28)+ (PLT2_gpio61_dir<<29)+ (PLT2_gpio62_dir<<30)+ (PLT2_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (PLT2_gpio60_dir<<28)+ (PLT2_gpio61_dir<<29)+ (PLT2_gpio62_dir<<30)+ (PLT2_gpio63_dir<<31);; порядок элементов сохраняется. */
|
||||
|
||||
/* Задаёт SHKF_GPADIR = (SHKF_gpio00_dir ) + (SHKF_gpio01_dir<<1) + (SHKF_gpio02_dir<<2) + (SHKF_gpio03_dir<<3) +; данные SHKF_GPADIR. */
|
||||
#define SHKF_GPADIR (SHKF_gpio00_dir ) + (SHKF_gpio01_dir<<1) + (SHKF_gpio02_dir<<2) + (SHKF_gpio03_dir<<3) + \
|
||||
(SHKF_gpio04_dir<<4) + (SHKF_gpio05_dir<<5) + (SHKF_gpio06_dir<<6) + (SHKF_gpio07_dir<<7) + \
|
||||
(SHKF_gpio08_dir<<8) + (SHKF_gpio09_dir<<9) + (SHKF_gpio10_dir<<10)+ (SHKF_gpio11_dir<<11)+ \
|
||||
(SHKF_gpio19_dir<<19)+ \
|
||||
(SHKF_gpio20_dir<<20)+ (SHKF_gpio21_dir<<21)+ (SHKF_gpio22_dir<<22)+ (SHKF_gpio23_dir<<23)+ \
|
||||
(SHKF_gpio24_dir<<24)+ (SHKF_gpio25_dir<<25)+ (SHKF_gpio26_dir<<26)+ (SHKF_gpio27_dir<<27);
|
||||
(SHKF_gpio04_dir<<4) + (SHKF_gpio05_dir<<5) + (SHKF_gpio06_dir<<6) + (SHKF_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (SHKF_gpio04_dir<<4) + (SHKF_gpio05_dir<<5) + (SHKF_gpio06_dir<<6) + (SHKF_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
|
||||
(SHKF_gpio08_dir<<8) + (SHKF_gpio09_dir<<9) + (SHKF_gpio10_dir<<10)+ (SHKF_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio08_dir<<8) + (SHKF_gpio09_dir<<9) + (SHKF_gpio10_dir<<10)+ (SHKF_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
|
||||
(SHKF_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(SHKF_gpio20_dir<<20)+ (SHKF_gpio21_dir<<21)+ (SHKF_gpio22_dir<<22)+ (SHKF_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio20_dir<<20)+ (SHKF_gpio21_dir<<21)+ (SHKF_gpio22_dir<<22)+ (SHKF_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
|
||||
(SHKF_gpio24_dir<<24)+ (SHKF_gpio25_dir<<25)+ (SHKF_gpio26_dir<<26)+ (SHKF_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (SHKF_gpio24_dir<<24)+ (SHKF_gpio25_dir<<25)+ (SHKF_gpio26_dir<<26)+ (SHKF_gpio27_dir<<27);; порядок элементов сохраняется. */
|
||||
/* Задаёт SHKF_GPBDIR = (SHKF_gpio32_dir )+ (SHKF_gpio33_dir<<1) + (SHKF_gpio34_dir<<2 )+; данные SHKF_GPBDIR. */
|
||||
#define SHKF_GPBDIR (SHKF_gpio32_dir )+ (SHKF_gpio33_dir<<1) + (SHKF_gpio34_dir<<2 )+ \
|
||||
(SHKF_gpio48_dir<<16)+ (SHKF_gpio49_dir<<17)+ (SHKF_gpio50_dir<<18)+ (SHKF_gpio51_dir<<19)+ \
|
||||
(SHKF_gpio52_dir<<20)+ (SHKF_gpio53_dir<<21)+ \
|
||||
(SHKF_gpio58_dir<<26)+ (SHKF_gpio59_dir<<27)+ \
|
||||
(SHKF_gpio60_dir<<28)+ (SHKF_gpio61_dir<<29)+ (SHKF_gpio62_dir<<30)+ (SHKF_gpio63_dir<<31);
|
||||
(SHKF_gpio48_dir<<16)+ (SHKF_gpio49_dir<<17)+ (SHKF_gpio50_dir<<18)+ (SHKF_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio48_dir<<16)+ (SHKF_gpio49_dir<<17)+ (SHKF_gpio50_dir<<18)+ (SHKF_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(SHKF_gpio52_dir<<20)+ (SHKF_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio52_dir<<20)+ (SHKF_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
|
||||
(SHKF_gpio58_dir<<26)+ (SHKF_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (SHKF_gpio58_dir<<26)+ (SHKF_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
|
||||
(SHKF_gpio60_dir<<28)+ (SHKF_gpio61_dir<<29)+ (SHKF_gpio62_dir<<30)+ (SHKF_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (SHKF_gpio60_dir<<28)+ (SHKF_gpio61_dir<<29)+ (SHKF_gpio62_dir<<30)+ (SHKF_gpio63_dir<<31);; порядок элементов сохраняется. */
|
||||
|
||||
/* Задаёт LOAD_GPADIR = (LOAD_gpio00_dir ) + (LOAD_gpio01_dir<<1) + (LOAD_gpio02_dir<<2) + (LOAD_gpio03_dir<<3) +; данные LOAD_GPADIR. */
|
||||
#define LOAD_GPADIR (LOAD_gpio00_dir ) + (LOAD_gpio01_dir<<1) + (LOAD_gpio02_dir<<2) + (LOAD_gpio03_dir<<3) + \
|
||||
(LOAD_gpio04_dir<<4) + (LOAD_gpio05_dir<<5) + (LOAD_gpio06_dir<<6) + (LOAD_gpio07_dir<<7) + \
|
||||
(LOAD_gpio08_dir<<8) + (LOAD_gpio09_dir<<9) + (LOAD_gpio10_dir<<10)+ (LOAD_gpio11_dir<<11)+ \
|
||||
(LOAD_gpio19_dir<<19)+ \
|
||||
(LOAD_gpio20_dir<<20)+ (LOAD_gpio21_dir<<21)+ (LOAD_gpio22_dir<<22)+ (LOAD_gpio23_dir<<23)+ \
|
||||
(LOAD_gpio24_dir<<24)+ (LOAD_gpio25_dir<<25)+ (LOAD_gpio26_dir<<26)+ (LOAD_gpio27_dir<<27);
|
||||
(LOAD_gpio04_dir<<4) + (LOAD_gpio05_dir<<5) + (LOAD_gpio06_dir<<6) + (LOAD_gpio07_dir<<7) + /* Продолжает список аргументов, полей или выражение (LOAD_gpio04_dir<<4) + (LOAD_gpio05_dir<<5) + (LOAD_gpio06_dir<<6) + (LOAD_gpio07_dir<<7) +; порядок элементов сохраняется. */ \
|
||||
(LOAD_gpio08_dir<<8) + (LOAD_gpio09_dir<<9) + (LOAD_gpio10_dir<<10)+ (LOAD_gpio11_dir<<11)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio08_dir<<8) + (LOAD_gpio09_dir<<9) + (LOAD_gpio10_dir<<10)+ (LOAD_gpio11_dir<<11)+; порядок элементов сохраняется. */ \
|
||||
(LOAD_gpio19_dir<<19)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio19_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(LOAD_gpio20_dir<<20)+ (LOAD_gpio21_dir<<21)+ (LOAD_gpio22_dir<<22)+ (LOAD_gpio23_dir<<23)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio20_dir<<20)+ (LOAD_gpio21_dir<<21)+ (LOAD_gpio22_dir<<22)+ (LOAD_gpio23_dir<<23)+; порядок элементов сохраняется. */ \
|
||||
(LOAD_gpio24_dir<<24)+ (LOAD_gpio25_dir<<25)+ (LOAD_gpio26_dir<<26)+ (LOAD_gpio27_dir<<27); /* Продолжает список аргументов, полей или выражение (LOAD_gpio24_dir<<24)+ (LOAD_gpio25_dir<<25)+ (LOAD_gpio26_dir<<26)+ (LOAD_gpio27_dir<<27);; порядок элементов сохраняется. */
|
||||
/* Задаёт LOAD_GPBDIR = (LOAD_gpio32_dir )+ (LOAD_gpio33_dir<<1) + (LOAD_gpio34_dir<<2 )+; данные LOAD_GPBDIR. */
|
||||
#define LOAD_GPBDIR (LOAD_gpio32_dir )+ (LOAD_gpio33_dir<<1) + (LOAD_gpio34_dir<<2 )+ \
|
||||
(LOAD_gpio48_dir<<16)+ (LOAD_gpio49_dir<<17)+ (LOAD_gpio50_dir<<18)+ (LOAD_gpio51_dir<<19)+ \
|
||||
(LOAD_gpio52_dir<<20)+ (LOAD_gpio53_dir<<21)+ \
|
||||
(LOAD_gpio58_dir<<26)+ (LOAD_gpio59_dir<<27)+ \
|
||||
(LOAD_gpio60_dir<<28)+ (LOAD_gpio61_dir<<29)+ (LOAD_gpio62_dir<<30)+ (LOAD_gpio63_dir<<31);
|
||||
(LOAD_gpio48_dir<<16)+ (LOAD_gpio49_dir<<17)+ (LOAD_gpio50_dir<<18)+ (LOAD_gpio51_dir<<19)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio48_dir<<16)+ (LOAD_gpio49_dir<<17)+ (LOAD_gpio50_dir<<18)+ (LOAD_gpio51_dir<<19)+; порядок элементов сохраняется. */ \
|
||||
(LOAD_gpio52_dir<<20)+ (LOAD_gpio53_dir<<21)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio52_dir<<20)+ (LOAD_gpio53_dir<<21)+; порядок элементов сохраняется. */ \
|
||||
(LOAD_gpio58_dir<<26)+ (LOAD_gpio59_dir<<27)+ /* Продолжает список аргументов, полей или выражение (LOAD_gpio58_dir<<26)+ (LOAD_gpio59_dir<<27)+; порядок элементов сохраняется. */ \
|
||||
(LOAD_gpio60_dir<<28)+ (LOAD_gpio61_dir<<29)+ (LOAD_gpio62_dir<<30)+ (LOAD_gpio63_dir<<31); /* Продолжает список аргументов, полей или выражение (LOAD_gpio60_dir<<28)+ (LOAD_gpio61_dir<<29)+ (LOAD_gpio62_dir<<30)+ (LOAD_gpio63_dir<<31);; порядок элементов сохраняется. */
|
||||
|
||||
//===========================================================================
|
||||
// No more.
|
||||
|
||||
@@ -1,143 +1,225 @@
|
||||
/* Приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: _RS485 ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef _RS485
|
||||
/* Определяет защитный символ или переключатель _RS485 для последующей компиляции. */
|
||||
#define _RS485
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
|
||||
extern "C" {
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
|
||||
//#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
|
||||
//#include "DSP2833x_Sci.h"
|
||||
//#include "cntrl_adr.h"
|
||||
//#include "params.h"
|
||||
|
||||
/* Начинает условие: RS232_USE_FIFO ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef RS232_USE_FIFO
|
||||
/* Задаёт RS232_USE_FIFO = 1; выбор FIFO для COM_1; COM_2 сохраняет отдельную логику RS485. */
|
||||
#define RS232_USE_FIFO 1
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
/* Задаёт COM_1 = 1; номер первого последовательного порта, SCI-A. */
|
||||
#define COM_1 1
|
||||
/* Задаёт COM_2 = 2; номер второго последовательного порта, SCI-B. */
|
||||
#define COM_2 2
|
||||
|
||||
/* Задаёт MAX_RECEIVE_LENGTH = 400; MAX приём длина. */
|
||||
#define MAX_RECEIVE_LENGTH 400 // 80 //150
|
||||
/* Задаёт MAX_SEND_LENGTH = 400; MAX SEND длина. */
|
||||
#define MAX_SEND_LENGTH 400 //150
|
||||
|
||||
#define TIME_WAIT_RS_BYTE_OUT 1000
|
||||
/* Задаёт TIME_WAIT_RS_BYTE_OUT = 1000; данные TIME_WAIT_RS_BYTE_OUT. */
|
||||
#define TIME_WAIT_RS_BYTE_OUT 1000
|
||||
/* Задаёт TIME_WAIT_RS_LOST_BYTE = 100; данные TIME_WAIT_RS_LOST_BYTE. */
|
||||
#define TIME_WAIT_RS_LOST_BYTE 100
|
||||
/* Задаёт RS_TIME_OUT = (SECOND*10); данные RS_TIME_OUT. */
|
||||
#define RS_TIME_OUT (SECOND*10)
|
||||
|
||||
/* Задаёт Rec_Bloc_Begin = 0x200000; данные Rec_Bloc_Begin. */
|
||||
#define Rec_Bloc_Begin 0x200000
|
||||
/* Задаёт Rec_Bloc_End = 0x2F0000; данные Rec_Bloc_End. */
|
||||
#define Rec_Bloc_End 0x2F0000
|
||||
/* Задаёт Rec_Bloc_Length = (Rec_Bloc_End-Rec_Bloc_Begin); Rec Bloc длина. */
|
||||
#define Rec_Bloc_Length (Rec_Bloc_End-Rec_Bloc_Begin)
|
||||
|
||||
/* Message RS declaration */
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef struct
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Продолжает список аргументов, полей или выражение volatile struct SCI_REGS *SciRegs;; порядок элементов сохраняется. */
|
||||
volatile struct SCI_REGS *SciRegs;
|
||||
|
||||
unsigned int commnumber; // Номер порта
|
||||
unsigned long RS_Length; // Длина пакета
|
||||
/* Объявляет commnumber — данные commnumber. */
|
||||
unsigned int commnumber; // Номер порта
|
||||
/* Объявляет RS_Length — RS длина. */
|
||||
unsigned long RS_Length; // Длина пакета
|
||||
|
||||
unsigned int *pRS_RecvPtr; // Буфер приема
|
||||
unsigned int *pRS_SendPtr; // Буфер посылки
|
||||
unsigned int *pRecvPtr;
|
||||
/* Объявляет pRS_RecvPtr — данные pRS_RecvPtr. Хранит указатель на данные. */
|
||||
unsigned int *pRS_RecvPtr; // Буфер приема
|
||||
/* Объявляет pRS_SendPtr — данные pRS_SendPtr. Хранит указатель на данные. */
|
||||
unsigned int *pRS_SendPtr; // Буфер посылки
|
||||
/* Объявляет pRecvPtr — данные pRecvPtr. Хранит указатель на данные. */
|
||||
unsigned int *pRecvPtr;
|
||||
|
||||
unsigned int RS_PrevCmd; // Предыдущаа комманда
|
||||
unsigned int RS_Cmd; // Текущаа комманда
|
||||
unsigned int RS_Header[MAX_RECEIVE_LENGTH]; // Заголовок
|
||||
unsigned int flag_TIMEOUT_to_Send; // Флаг ожиданиа таймаута на отсылку
|
||||
unsigned int flag_TIMEOUT_to_Receive; // Флаг ожиданиа таймаута на прием
|
||||
unsigned int RS_DataReady; // Флаг готовности RS данных
|
||||
unsigned int buffer[MAX_SEND_LENGTH]; // Буфер дла отсылки по RS
|
||||
/* Объявляет RS_PrevCmd — данные RS_PrevCmd. */
|
||||
unsigned int RS_PrevCmd; // Предыдущаа комманда
|
||||
/* Объявляет RS_Cmd — данные RS_Cmd. */
|
||||
unsigned int RS_Cmd; // Текущаа комманда
|
||||
/* Объявляет RS_Header — данные RS_Header. */
|
||||
unsigned int RS_Header[MAX_RECEIVE_LENGTH]; // Заголовок
|
||||
/* Объявляет flag_TIMEOUT_to_Send — флаг TIMEOUT to Send. */
|
||||
unsigned int flag_TIMEOUT_to_Send; // Флаг ожиданиа таймаута на отсылку
|
||||
/* Объявляет flag_TIMEOUT_to_Receive — флаг TIMEOUT to приём. */
|
||||
unsigned int flag_TIMEOUT_to_Receive; // Флаг ожиданиа таймаута на прием
|
||||
/* Объявляет RS_DataReady — RS данные Ready. */
|
||||
unsigned int RS_DataReady; // Флаг готовности RS данных
|
||||
/* Объявляет buffer — буфер. */
|
||||
unsigned int buffer[MAX_SEND_LENGTH]; // Буфер дла отсылки по RS
|
||||
|
||||
unsigned int addr_answer; // адрес куда отвечать в режиме ведущего
|
||||
unsigned int addr_recive; // адрес по которому нас запросили
|
||||
unsigned int flag_LEADING; // Флаг режима контроллера (по умолчанию ведомый)
|
||||
unsigned long RS_RecvLen;
|
||||
unsigned long RS_SLength; // Длина пакета дла посылки
|
||||
unsigned long RS_SendLen; // Количество байт уже передали
|
||||
char RS_SendBlockMode; // Режим передачи
|
||||
char RS_Flag9bit; // дла RS485????????
|
||||
int BS_LoadOK; // Флаг успешности приема блока
|
||||
/* Объявляет addr_answer — данные addr_answer. */
|
||||
unsigned int addr_answer; // адрес куда отвечать в режиме ведущего
|
||||
/* Объявляет addr_recive — данные addr_recive. */
|
||||
unsigned int addr_recive; // адрес по которому нас запросили
|
||||
/* Объявляет flag_LEADING — флаг LEADING. */
|
||||
unsigned int flag_LEADING; // Флаг режима контроллера (по умолчанию ведомый)
|
||||
/* Объявляет RS_RecvLen — данные RS_RecvLen. */
|
||||
unsigned long RS_RecvLen;
|
||||
/* Объявляет RS_SLength — RS S длина. */
|
||||
unsigned long RS_SLength; // Длина пакета дла посылки
|
||||
/* Объявляет RS_SendLen — данные RS_SendLen. */
|
||||
unsigned long RS_SendLen; // Количество байт уже передали
|
||||
/* Объявляет RS_SendBlockMode — RS Send Block режим. */
|
||||
char RS_SendBlockMode; // Режим передачи
|
||||
/* Объявляет RS_Flag9bit — RS флаг 9 бит. */
|
||||
char RS_Flag9bit; // дла RS485????????
|
||||
/* Объявляет BS_LoadOK — данные BS_LoadOK. */
|
||||
int BS_LoadOK; // Флаг успешности приема блока
|
||||
/* Объявляет RS_FlagBegin — RS флаг Begin. */
|
||||
int RS_FlagBegin;
|
||||
/* Объявляет RS_HeaderCnt — данные RS_HeaderCnt. */
|
||||
int RS_HeaderCnt;
|
||||
/* Объявляет RS_FlagSkiping — RS флаг Skiping. */
|
||||
int RS_FlagSkiping;
|
||||
/* Объявляет curr_baud — curr скорость передачи. */
|
||||
unsigned long curr_baud;
|
||||
/* Объявляет time_wait_rs_out — данные time_wait_rs_out. */
|
||||
unsigned long time_wait_rs_out;
|
||||
/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if RS232_USE_FIFO
|
||||
/* Объявляет fifo_tx_active — данные fifo_tx_active; fifo_rx_guard — данные fifo_rx_guard. volatile требует фактического чтения или записи при каждом доступе. */
|
||||
volatile unsigned int fifo_tx_active, fifo_rx_guard;
|
||||
/* Объявляет fifo_rx_errors — данные fifo_rx_errors; fifo_overflows — данные fifo_overflows. volatile требует фактического чтения или записи при каждом доступе. */
|
||||
volatile unsigned long fifo_rx_errors, fifo_overflows;
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
} RS_DATA;
|
||||
/* Продолжает список аргументов, полей или выражение } RS_DATA;; порядок элементов сохраняется. */
|
||||
} RS_DATA;
|
||||
|
||||
/* Объявляет rs_a — данные rs_a; rs_b — данные rs_b. Память определена в другом модуле. */
|
||||
extern RS_DATA rs_a,rs_b;
|
||||
|
||||
/* Объявляет . Память определена в другом модуле. */
|
||||
extern unsigned int
|
||||
RS_Len[70]; /* Действительнаа длина команды (отладочной) + 1 */
|
||||
RS_Len[70]; /* Действительнаа длина команды (отладочной) + 1 */ /* Продолжает список аргументов, полей или выражение RS_Len[70];; порядок элементов сохраняется. */
|
||||
|
||||
/* Объявляет обработчик RSA_RX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
|
||||
interrupt void RSA_RX_Handler(void);
|
||||
/* Объявляет обработчик RSA_TX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
|
||||
interrupt void RSA_TX_Handler(void);
|
||||
/* Объявляет обработчик RSB_RX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
|
||||
interrupt void RSB_RX_Handler(void);
|
||||
/* Объявляет обработчик RSB_TX_Handler; обслуживает источник прерывания и его аппаратные флаги. */
|
||||
interrupt void RSB_TX_Handler(void);
|
||||
|
||||
/* иницилизациа переменных rs_a,rs_b*/
|
||||
/* иницилизациа переменных rs_a,rs_b*/
|
||||
/* Инициализирует структуры обоих SCI и таблицу длин команд. */
|
||||
void create_uart_vars(char size_cmd15);
|
||||
|
||||
/** Повторнаа инициализациа последовательного порта, используетса после подвиса */
|
||||
/** Настройка режима приема/передачи */
|
||||
/** Повторнаа инициализациа последовательного порта, используетса после подвиса */
|
||||
/** Настройка режима приема/передачи */
|
||||
/* Объявляет интерфейс функции RS_SetBitMode; реализация вызывается через этот прототип. */
|
||||
void RS_SetBitMode(RS_DATA *rs_arr, int n);
|
||||
|
||||
/** Посылка блока байтов.
|
||||
Посылает массива 32-битных целых чисел старшие биты должны быть 0.
|
||||
@precondition Работа ф-ции зависит от макро RS_TRANSMIT_INTR
|
||||
@param buf адрес массива
|
||||
@param len количество байт
|
||||
/** Посылка блока байтов.
|
||||
Посылает массива 32-битных целых чисел старшие биты должны быть 0.
|
||||
@precondition Работа ф-ции зависит от макро RS_TRANSMIT_INTR
|
||||
@param buf адрес массива
|
||||
@param len количество байт
|
||||
@see RS_BSend, RS_TRANSMIT_INTR
|
||||
*/
|
||||
/* Передаёт массив слов через SCI в выбранном режиме упаковки. */
|
||||
int RS_Send(RS_DATA *rs_arr,unsigned int *pBuf, unsigned long len);
|
||||
|
||||
/** Посылка блока упакованных байтов.
|
||||
@precondition Работа ф-ции зависит от макро RS_TRANSMIT_INTR
|
||||
@param buf адрес массива
|
||||
@param len количество 8-битных байт
|
||||
/** Посылка блока упакованных байтов.
|
||||
@precondition Работа ф-ции зависит от макро RS_TRANSMIT_INTR
|
||||
@param buf адрес массива
|
||||
@param len количество 8-битных байт
|
||||
@see RS_Send, RS_TRANSMIT_INTR
|
||||
*/
|
||||
/* Передаёт последовательность 8-битных октетов, упакованных в слова C28x. */
|
||||
int RS_BSend(RS_DATA *rs_arr,unsigned int *pBuf, unsigned long len);
|
||||
|
||||
/** Инициализациа последовательного порта */
|
||||
void setup_uart(char commnumber,unsigned long speed_baud); /* speed_baud - скорость линии в бодах */
|
||||
|
||||
/** Инициализациа последовательного порта */
|
||||
void setup_uart(char commnumber,unsigned long speed_baud); /* speed_baud - скорость линии в бодах */ /* Настраивает выбранный SCI, скорость и обработчики прерываний. */
|
||||
|
||||
/* Объявляет интерфейс функции RS_SetLineMode; реализация вызывается через этот прототип. */
|
||||
void RS_SetLineMode(RS_DATA *rs_arr, int bit, char parity, int stop);
|
||||
/* Объявляет интерфейс функции RS_SetLineSpeed; реализация вызывается через этот прототип. */
|
||||
void RS_SetLineSpeed(RS_DATA *rs_arr, unsigned long speed);
|
||||
|
||||
// Transmit a character from the SCI'
|
||||
/* Задаёт SCI_send = x->SciRegs->SCITXBUF=(unsigned char)(y); SCI send. */
|
||||
#define SCI_send(x,y) x->SciRegs->SCITXBUF=(unsigned char)(y)
|
||||
|
||||
// Ожидание завершениа передачи UART
|
||||
// Ожидание завершениа передачи UART
|
||||
// wait for TRDY =1 for empty state
|
||||
/* Условие компиляции RS232_USE_FIFO: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if RS232_USE_FIFO
|
||||
/* Ожидает завершения аппаратной передачи FIFO и сдвигового регистра SCI. */
|
||||
void RS_FifoWait(RS_DATA *rs_arr);
|
||||
/* Уменьшает защитную паузу RX FIFO по миллисекундному такту. */
|
||||
void RS_FifoTick1ms(void);
|
||||
/* Задаёт RS_Wait4OK = RS_FifoWait(x); данные RS_Wait4OK. */
|
||||
#define RS_Wait4OK(x) RS_FifoWait(x)
|
||||
/* Выбирает альтернативный блок текущего условия компиляции. */
|
||||
#else
|
||||
/* Задаёт RS_Wait4OK = while(!(x->SciRegs->SCICTL2.bit.TXEMPTY)); данные RS_Wait4OK. */
|
||||
#define RS_Wait4OK(x) while(!(x->SciRegs->SCICTL2.bit.TXEMPTY))
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
/** Переключение линии на прием */
|
||||
/** Переключение линии на прием */
|
||||
/* Задаёт RS_Line_to_receive = if(x->commnumber==COM_2) GpioDataRegs.GPBDAT.bit.GPIO34 = 1;; RS Line to приём. */
|
||||
#define RS_Line_to_receive(x) if(x->commnumber==COM_2) GpioDataRegs.GPBDAT.bit.GPIO34 = 1;
|
||||
|
||||
/** Переключение линии на передачу */
|
||||
/** Переключение линии на передачу */
|
||||
/* Задаёт RS_Line_to_send = if(x->commnumber==COM_2) GpioDataRegs.GPBDAT.bit.GPIO34 = 0;; данные RS_Line_to_send. */
|
||||
#define RS_Line_to_send(x) if(x->commnumber==COM_2) GpioDataRegs.GPBDAT.bit.GPIO34 = 0;
|
||||
|
||||
/** Разрешение прерываний по получению символа и ошибкам от UART */
|
||||
/** Разрешение прерываний по получению символа и ошибкам от UART */
|
||||
/* Задаёт enableUARTInt = x->SciRegs->SCICTL2.all=2; разрешение UART Int. */
|
||||
#define enableUARTInt(x) x->SciRegs->SCICTL2.all=2
|
||||
/* Задаёт enableUARTIntW = x->SciRegs->SCICTL2.all=1; разрешение UART Int W. */
|
||||
#define enableUARTIntW(x) x->SciRegs->SCICTL2.all=1
|
||||
|
||||
/* Объявляет интерфейс функции clear_timer_rs_live; реализация вызывается через этот прототип. */
|
||||
void clear_timer_rs_live(RS_DATA *rs_arr);
|
||||
/* Объявляет интерфейс функции test_rs_live; реализация вызывается через этот прототип. */
|
||||
void test_rs_live(RS_DATA *rs_arr);
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
||||
}
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
#endif /* _RS485 */
|
||||
#endif /* _RS485 */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
|
||||
|
||||
@@ -1,22 +1,39 @@
|
||||
/* Коды и объявления команд последовательного загрузчика. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: _BIOS_DSP ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef _BIOS_DSP
|
||||
/* Определяет защитный символ или переключатель _BIOS_DSP для последующей компиляции. */
|
||||
#define _BIOS_DSP
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
|
||||
extern "C" {
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
/* Задаёт BM_PACKED = 1; данные BM_PACKED. */
|
||||
#define BM_PACKED 1
|
||||
/* Задаёт BM_CHAR32 = 0; данные BM_CHAR32. */
|
||||
#define BM_CHAR32 0
|
||||
|
||||
/* Задаёт CHIEF = 1; данные CHIEF. */
|
||||
#define CHIEF 1
|
||||
/* Задаёт SLAVE = 0; данные SLAVE. */
|
||||
#define SLAVE 0
|
||||
|
||||
/* Задаёт ADR_FOR_SPECIAL = 0x100; данные ADR_FOR_SPECIAL. */
|
||||
#define ADR_FOR_SPECIAL 0x100
|
||||
/* Задаёт CMD_MODBUS_3 = 3; данные CMD_MODBUS_3. */
|
||||
#define CMD_MODBUS_3 3
|
||||
/* Задаёт ANS_MODBUS_4 = 4; данные ANS_MODBUS_4. */
|
||||
#define ANS_MODBUS_4 4
|
||||
/* Задаёт CMD_MODBUS_15 = 5; данные CMD_MODBUS_15. */
|
||||
#define CMD_MODBUS_15 5
|
||||
/* Задаёт CMD_MODBUS_6 = 6; данные CMD_MODBUS_6. */
|
||||
#define CMD_MODBUS_6 6
|
||||
/* Задаёт ANS_MODBUS_6 = 7; данные ANS_MODBUS_6. */
|
||||
#define ANS_MODBUS_6 7
|
||||
/* Задаёт CMD_MODBUS_16 = 16; данные CMD_MODBUS_16. */
|
||||
#define CMD_MODBUS_16 16
|
||||
/*
|
||||
|
||||
@@ -27,85 +44,110 @@ CMD_MODBUS_3 = 3,
|
||||
ANS_MODBUS_6 = 7,
|
||||
CMD_MODBUS_16 = 16,
|
||||
*/
|
||||
/* Продолжает список аргументов, полей или выражение enum {; порядок элементов сохраняется. */
|
||||
enum {
|
||||
CMD_LOAD=51, CMD_UPLOAD, CMD_RUN, CMD_XFLASH, CMD_TFLASH,
|
||||
/* Записывает CMD_LOAD значением 51, CMD_UPLOAD, CMD_RUN, CMD_XFLASH, CMD_TFLASH,; данные CMD_LOAD. */
|
||||
CMD_LOAD=51, CMD_UPLOAD, CMD_RUN, CMD_XFLASH, CMD_TFLASH,
|
||||
/* Продолжает список аргументов, полей или выражение CMD_PEEK, CMD_POKE, CMD_INITLOAD, CMD_INIT,CMD_EXTEND,; порядок элементов сохраняется. */
|
||||
CMD_PEEK, CMD_POKE, CMD_INITLOAD, CMD_INIT,CMD_EXTEND,
|
||||
|
||||
|
||||
/* Записывает CMD_VECTOR значением 61,; данные CMD_VECTOR. */
|
||||
CMD_VECTOR=61,
|
||||
/* Продолжает список аргументов, полей или выражение CMD_IMPULSE,; порядок элементов сохраняется. */
|
||||
CMD_IMPULSE,
|
||||
/* стандартные команды */
|
||||
/* стандартные команды */
|
||||
/* Записывает CMD_STD значением 65, CMD_STD_ANS; данные CMD_STD. */
|
||||
CMD_STD=65, CMD_STD_ANS
|
||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
||||
};
|
||||
|
||||
|
||||
/* Записывает false значением 0, true}; данные false. */
|
||||
enum {false=0, true};
|
||||
|
||||
|
||||
/** Возвращает номер комманды, если есть или -1 если транзакций не было */
|
||||
/** Возвращает номер комманды, если есть или -1 если транзакций не было */
|
||||
/* Объявляет интерфейс функции get_command; реализация вызывается через этот прототип. */
|
||||
int get_command(RS_DATA *rs_arr);
|
||||
|
||||
/** Стандартный ответ, без параметров */
|
||||
/** Стандартный ответ, без параметров */
|
||||
/* Объявляет интерфейс функции Answer; реализация вызывается через этот прототип. */
|
||||
void Answer(RS_DATA *rs_arr,int n);
|
||||
|
||||
/* начальные установки (не работает)*/
|
||||
/* начальные установки (не работает)*/
|
||||
/* Объявляет интерфейс функции init; реализация вызывается через этот прототип. */
|
||||
void init(RS_DATA *rs_arr);
|
||||
|
||||
/**@name Комманды
|
||||
* Комманды, вызываемые через последовательный канал*/
|
||||
/**@name Комманды
|
||||
* Комманды, вызываемые через последовательный канал*/
|
||||
//@{
|
||||
|
||||
/** Инициировать загрузку блока.
|
||||
Настраивает прием блока данных */
|
||||
void initload(RS_DATA *rs_arr);
|
||||
/** Инициировать загрузку блока.
|
||||
Настраивает прием блока данных */
|
||||
/* Объявляет интерфейс функции initload; реализация вызывается через этот прототип. */
|
||||
void initload(RS_DATA *rs_arr);
|
||||
|
||||
/** Загрузка блока.
|
||||
Вызываетса после загрузки блока через RS */
|
||||
/** Загрузка блока.
|
||||
Вызываетса после загрузки блока через RS */
|
||||
/* Объявляет интерфейс функции load; реализация вызывается через этот прототип. */
|
||||
void load(RS_DATA *rs_arr);
|
||||
|
||||
/** Выполнить программу в формате Serial Boot.
|
||||
@precondition Должна быть произведена загрузка блока
|
||||
Адрес программы беретса из заголовка и
|
||||
сравниваетса с переменной RecvPtr, заполнаемой в ф-ции load
|
||||
/** Выполнить программу в формате Serial Boot.
|
||||
@precondition Должна быть произведена загрузка блока
|
||||
Адрес программы беретса из заголовка и
|
||||
сравниваетса с переменной RecvPtr, заполнаемой в ф-ции load
|
||||
@see load */
|
||||
void run (RS_DATA *rs_arr);
|
||||
/* Объявляет интерфейс функции run; реализация вызывается через этот прототип. */
|
||||
void run (RS_DATA *rs_arr);
|
||||
|
||||
/** Прочитать ачейку памати */
|
||||
/** Прочитать ачейку памати */
|
||||
/* Объявляет интерфейс функции peek; реализация вызывается через этот прототип. */
|
||||
void peek(RS_DATA *rs_arr);
|
||||
|
||||
/** Записать в ачейку памати */
|
||||
void poke(RS_DATA *rs_arr);
|
||||
/** Записать в ачейку памати */
|
||||
/* Объявляет интерфейс функции poke; реализация вызывается через этот прототип. */
|
||||
void poke(RS_DATA *rs_arr);
|
||||
|
||||
/** Передать блок памати */
|
||||
void upload(RS_DATA *rs_arr);
|
||||
/** Передать блок памати */
|
||||
/* Объявляет интерфейс функции upload; реализация вызывается через этот прототип. */
|
||||
void upload(RS_DATA *rs_arr);
|
||||
|
||||
/** Прошить XILINX.
|
||||
@precondition Должна быть произведена загрузка блока
|
||||
Адрес и длина прошивки беретса из заголовка и
|
||||
сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load,
|
||||
так же смотрит магическое слово в начале прошивки
|
||||
/** Прошить XILINX.
|
||||
@precondition Должна быть произведена загрузка блока
|
||||
Адрес и длина прошивки беретса из заголовка и
|
||||
сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load,
|
||||
так же смотрит магическое слово в начале прошивки
|
||||
@see load */
|
||||
void xflash(RS_DATA *rs_arr);
|
||||
/* Объявляет интерфейс функции xflash; реализация вызывается через этот прототип. */
|
||||
void xflash(RS_DATA *rs_arr);
|
||||
|
||||
/** Прошить TMS.
|
||||
@precondition Должна быть произведена загрузка блока
|
||||
Адрес и длина прошивки беретса из заголовка и
|
||||
сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load
|
||||
/** Прошить TMS.
|
||||
@precondition Должна быть произведена загрузка блока
|
||||
Адрес и длина прошивки беретса из заголовка и
|
||||
сравниваетса с переменными RecvPtr и Length, заполнаемыми в ф-ции load
|
||||
@see load */
|
||||
void tflash(RS_DATA *rs_arr);
|
||||
/* Объявляет интерфейс функции tflash; реализация вызывается через этот прототип. */
|
||||
void tflash(RS_DATA *rs_arr);
|
||||
|
||||
|
||||
/* расширенные команды дла биоса */
|
||||
/* расширенные команды дла биоса */
|
||||
/* Объявляет интерфейс функции extendbios; реализация вызывается через этот прототип. */
|
||||
void extendbios(RS_DATA *rs_arr);
|
||||
|
||||
|
||||
/* Объявляет интерфейс функции write_memory; реализация вызывается через этот прототип. */
|
||||
void write_memory(unsigned long addr, unsigned int data);
|
||||
/* Объявляет интерфейс функции read_memory; реализация вызывается через этот прототип. */
|
||||
unsigned int read_memory(unsigned long addr);
|
||||
|
||||
|
||||
//@}
|
||||
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
||||
}
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
#endif/* _BIOS_DSP */
|
||||
|
||||
#endif/* _BIOS_DSP */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
|
||||
@@ -1,69 +1,105 @@
|
||||
/* Заводские калибровочные значения датчиков. Русские пояснения сохранены в UTF-8. */
|
||||
/* Условие компиляции BALSAM == 167: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 167 //-------------------------------------------------------------
|
||||
/* Объявляет def_cal[][8] = {. Начальное значение задаётся справа от знака равенства. */
|
||||
int def_cal[][8] = {
|
||||
|
||||
// ÁÊÑÑ òðàíñ 100 1 100 2 150 1 150 2
|
||||
0, 0, 0, 0, 455, 441, 2459, 2392, // Áîðò 0
|
||||
0, 0, 0, 0, 462, 439, 2442, 2400, // Áîðò 1
|
||||
// БКСС транс 100 1 100 2 150 1 150 2
|
||||
/* Элемент постоянной таблицы 0, 0, 0, 0, 455, 441, 2459, 2392,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
0, 0, 0, 0, 455, 441, 2459, 2392, // Борт 0
|
||||
/* Элемент постоянной таблицы 0, 0, 0, 0, 462, 439, 2442, 2400,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
0, 0, 0, 0, 462, 439, 2442, 2400, // Борт 1
|
||||
|
||||
// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
4936, 4877, 4972, 4857, 1886, 1898, 2517, 2535, // Áîðò 0
|
||||
4876, 5005, 4876, 4847, 1898, 1873, 2535, 2502, // Áîðò 1
|
||||
// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
/* Элемент постоянной таблицы 4936, 4877, 4972, 4857, 1886, 1898, 2517, 2535,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
4936, 4877, 4972, 4857, 1886, 1898, 2517, 2535, // Борт 0
|
||||
/* Элемент постоянной таблицы 4876, 5005, 4876, 4847, 1898, 1873, 2535, 2502,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
4876, 5005, 4876, 4847, 1898, 1873, 2535, 2502, // Борт 1
|
||||
|
||||
// ÓÌÏ UA UC IA IC 20mA O 4mA O 20mA I 4mA I
|
||||
7580, 7540, 2310, 2420, 1736, 683, 854, 14, // Áîðò 0 1062 1980
|
||||
7580, 7540, 2310, 2420, 1745, 689, 860, 17, // Áîðò 1 1720 2405
|
||||
// УМП UA UC IA IC 20mA O 4mA O 20mA I 4mA I
|
||||
/* Элемент постоянной таблицы 7580, 7540, 2310, 2420, 1736, 683, 854, 14,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
7580, 7540, 2310, 2420, 1736, 683, 854, 14, // Борт 0 1062 1980
|
||||
/* Элемент постоянной таблицы 7580, 7540, 2310, 2420, 1745, 689, 860, 17,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
7580, 7540, 2310, 2420, 1745, 689, 860, 17, // Борт 1 1720 2405
|
||||
|
||||
// ÁÊÑÑÄ 100 Ohm 150 Ohm
|
||||
// БКССД 100 Ohm 150 Ohm
|
||||
/* Элемент постоянной таблицы 1281, 1272, 0, 0, 622, 2263, 0, 0,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
1281, 1272, 0, 0, 622, 2263, 0, 0,
|
||||
|
||||
// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
|
||||
// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
|
||||
/* Элемент постоянной таблицы 1290, 1285, 0, 0, 2045, 2045, 2725, 2725 };; порядок значений совпадает с порядком индексов потребителя. */
|
||||
1290, 1285, 0, 0, 2045, 2045, 2725, 2725 };
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif //---------------------------------------------------------------------
|
||||
|
||||
|
||||
/* Условие компиляции BALSAM == 166: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 166 //-------------------------------------------------------------
|
||||
/* Объявляет def_cal[][8] = {. Начальное значение задаётся справа от знака равенства. */
|
||||
int def_cal[][8] = {
|
||||
|
||||
// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
4936, 4877, 4972, 4857, 1960, 1920, 2610, 2570, // Áîðò 0
|
||||
4876, 5005, 4876, 4847, 1950, 1965, 2600, 2615, // Áîðò 1
|
||||
// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
/* Элемент постоянной таблицы 4936, 4877, 4972, 4857, 1960, 1920, 2610, 2570,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
4936, 4877, 4972, 4857, 1960, 1920, 2610, 2570, // Борт 0
|
||||
/* Элемент постоянной таблицы 4876, 5005, 4876, 4847, 1950, 1965, 2600, 2615,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
4876, 5005, 4876, 4847, 1950, 1965, 2600, 2615, // Борт 1
|
||||
|
||||
// ÓÌÏ UA UC IA IC 20mA O 4mA O 20mA I 4mA I
|
||||
3820, 3790, 3505, 3380, 1718, 673, 854, 14, // Áîðò 0
|
||||
3835, 3785, 3522, 3332, 1697, 653, 860, 17, // Áîðò 1
|
||||
// УМП UA UC IA IC 20mA O 4mA O 20mA I 4mA I
|
||||
/* Элемент постоянной таблицы 3820, 3790, 3505, 3380, 1718, 673, 854, 14,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
3820, 3790, 3505, 3380, 1718, 673, 854, 14, // Борт 0
|
||||
/* Элемент постоянной таблицы 3835, 3785, 3522, 3332, 1697, 653, 860, 17,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
3835, 3785, 3522, 3332, 1697, 653, 860, 17, // Борт 1
|
||||
|
||||
// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
|
||||
// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
|
||||
/* Элемент постоянной таблицы 1281, 1272, 0, 0, 2049, 2050, 2749, 2750 };; порядок значений совпадает с порядком индексов потребителя. */
|
||||
1281, 1272, 0, 0, 2049, 2050, 2749, 2750 };
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif //---------------------------------------------------------------------
|
||||
|
||||
/* Условие компиляции BALSAM == 165: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 165 //-------------------------------------------------------------
|
||||
/* Объявляет def_cal[][8] = {. Начальное значение задаётся справа от знака равенства. */
|
||||
int def_cal[][8] = {
|
||||
|
||||
// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
5130, 4960, 4925, 5070, 1881, 1881, 2506, 2516, // Áîðò 0
|
||||
5020, 5040, 4950, 5030, 1871, 1879, 2507, 2514, // Áîðò 1
|
||||
// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
/* Элемент постоянной таблицы 5130, 4960, 4925, 5070, 1881, 1881, 2506, 2516,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
5130, 4960, 4925, 5070, 1881, 1881, 2506, 2516, // Борт 0
|
||||
/* Элемент постоянной таблицы 5020, 5040, 4950, 5030, 1871, 1879, 2507, 2514,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
5020, 5040, 4950, 5030, 1871, 1879, 2507, 2514, // Борт 1
|
||||
|
||||
// ÓÌÏ UA UC IA IC 20mA O 4mA O 20mA I 4mA I
|
||||
3890, 3865, 5100, 4850, 1730, 675, 854, 14, // Áîðò 0
|
||||
3845, 3800, 3250, 3100, 1044, 0, 860, 17, // Áîðò 1
|
||||
// УМП UA UC IA IC 20mA O 4mA O 20mA I 4mA I
|
||||
/* Элемент постоянной таблицы 3890, 3865, 5100, 4850, 1730, 675, 854, 14,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
3890, 3865, 5100, 4850, 1730, 675, 854, 14, // Борт 0
|
||||
/* Элемент постоянной таблицы 3845, 3800, 3250, 3100, 1044, 0, 860, 17,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
3845, 3800, 3250, 3100, 1044, 0, 860, 17, // Борт 1
|
||||
|
||||
// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
|
||||
// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
|
||||
/* Элемент постоянной таблицы 1289, 1280, 0, 0, 2073, 2071, 2773, 2771 };; порядок значений совпадает с порядком индексов потребителя. */
|
||||
1289, 1280, 0, 0, 2073, 2071, 2773, 2771 };
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif //---------------------------------------------------------------------
|
||||
|
||||
/* Условие компиляции BALSAM == 164: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 164 //-------------------------------------------------------------
|
||||
/* Объявляет def_cal[][8] = {. Начальное значение задаётся справа от знака равенства. */
|
||||
int def_cal[][8] = {
|
||||
|
||||
// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
7573, 7573, 7573, 7573, 1979, 1888, 2592, 2513, // Áîðò 0
|
||||
7573, 7573, 7573, 7573, 1970, 1907, 2584, 2558, // Áîðò 1
|
||||
// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
/* Элемент постоянной таблицы 7573, 7573, 7573, 7573, 1979, 1888, 2592, 2513,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
7573, 7573, 7573, 7573, 1979, 1888, 2592, 2513, // Борт 0
|
||||
/* Элемент постоянной таблицы 7573, 7573, 7573, 7573, 1970, 1907, 2584, 2558,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
7573, 7573, 7573, 7573, 1970, 1907, 2584, 2558, // Борт 1
|
||||
|
||||
// ÓÌÏ UA UC IA IC 20mA O 4mA O 20mA I 4mA I
|
||||
3920, 3905, 3300, 3220, 1015, 0, 854, 14, // Áîðò 0
|
||||
3835, 3785, 5100, 4600, 1750, 680, 860, 17, // Áîðò 1
|
||||
// УМП UA UC IA IC 20mA O 4mA O 20mA I 4mA I
|
||||
/* Элемент постоянной таблицы 3920, 3905, 3300, 3220, 1015, 0, 854, 14,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
3920, 3905, 3300, 3220, 1015, 0, 854, 14, // Борт 0
|
||||
/* Элемент постоянной таблицы 3835, 3785, 5100, 4600, 1750, 680, 860, 17,; порядок значений совпадает с порядком индексов потребителя. */
|
||||
3835, 3785, 5100, 4600, 1750, 680, 860, 17, // Борт 1
|
||||
|
||||
// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
|
||||
// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
|
||||
/* Элемент постоянной таблицы 1266, 1267, 0, 0, 2063, 2040, 2678, 2655 };; порядок значений совпадает с порядком индексов потребителя. */
|
||||
1266, 1267, 0, 0, 2063, 2040, 2678, 2655 };
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif //---------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -71,15 +107,15 @@
|
||||
#if PXXXXX == 1 //-------------------------------------------------------------
|
||||
int def_cal[][6] = {
|
||||
|
||||
// Ñèëîâîé UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
0400, 0400, 0400, 0400, 1950, 1950, 2600, 2600, // Áîðò 0
|
||||
0400, 0400, 0400, 0400, 1950, 1950, 2600, 2600, // Áîðò 1
|
||||
// Силовой UA1 UB1 UA2 UB2 300 1 300 2 400 1 400 2
|
||||
0400, 0400, 0400, 0400, 1950, 1950, 2600, 2600, // Борт 0
|
||||
0400, 0400, 0400, 0400, 1950, 1950, 2600, 2600, // Борт 1
|
||||
|
||||
// ÓÌÏ UA UC IA IC 20mA 4mA
|
||||
0400, 0400, 4800, 4800, 0, 0, 0, 0, // Áîðò 0
|
||||
0400, 0400, 4800, 4800, 0, 0, 0, 0, // Áîðò 1
|
||||
// УМП UA UC IA IC 20mA 4mA
|
||||
0400, 0400, 4800, 4800, 0, 0, 0, 0, // Борт 0
|
||||
0400, 0400, 4800, 4800, 0, 0, 0, 0, // Борт 1
|
||||
|
||||
// ÂÝÏ 380Ô1 380Ô2 300 1 300 2 400 1 400 2
|
||||
// ВЭП 380Ф1 380Ф2 300 1 300 2 400 1 400 2
|
||||
1270, 1270, 0, 0, 1950, 1950, 2600, 2600 };
|
||||
#endif //---------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -1,34 +1,51 @@
|
||||
/* Собственный и универсальный адрес устройства. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: _CNTRL_ADR ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef _CNTRL_ADR
|
||||
/* Определяет защитный символ или переключатель _CNTRL_ADR для последующей компиляции. */
|
||||
#define _CNTRL_ADR
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
|
||||
extern "C" {
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
/** àäðåñ êîíòðîëëåðà äëà ïîñûëêè âñåì ÀÈÍàì */
|
||||
/** адрес контроллера дла посылки всем АИНам */
|
||||
/* Объявляет ADDR_FOR_ALL — данные ADDR_FOR_ALL. Память определена в другом модуле. */
|
||||
extern int ADDR_FOR_ALL;
|
||||
|
||||
/** àäðåñ êîíòðîëëåðà äëà ïîñûëêè îòâåòà */
|
||||
extern const int ADDR_ANSWER;
|
||||
|
||||
/** àäðåñà òåðìèíàëà äëà ïîñûëêè îòâåòà */
|
||||
extern const int ADDR_TERMINAL;
|
||||
/** адрес контроллера дла посылки ответа */
|
||||
/* Объявляет ADDR_ANSWER — данные ADDR_ANSWER. Память определена в другом модуле. */
|
||||
extern const int ADDR_ANSWER;
|
||||
|
||||
/* Àäðåñ êîíòðîëëåðà */
|
||||
/** адреса терминала дла посылки ответа */
|
||||
/* Объявляет ADDR_TERMINAL — данные ADDR_TERMINAL. Память определена в другом модуле. */
|
||||
extern const int ADDR_TERMINAL;
|
||||
|
||||
/* Адрес контроллера */
|
||||
/* Объявляет CNTRL_ADDR — данные CNTRL_ADDR. Память определена в другом модуле. */
|
||||
extern int CNTRL_ADDR;
|
||||
|
||||
/* Óíèâåðñàëüíûé àäðåñ êîíòðîëëåðà */
|
||||
/* Универсальный адрес контроллера */
|
||||
/* Объявляет CNTRL_ADDR_UNIVERSAL — данные CNTRL_ADDR_UNIVERSAL. Память определена в другом модуле. */
|
||||
extern const int CNTRL_ADDR_UNIVERSAL;
|
||||
|
||||
/** Óñòàíîâêà àäðåñà êîíòðîëëåðà äëà ïðîøèâêè */
|
||||
/** Установка адреса контроллера дла прошивки */
|
||||
/* Устанавливает собственный и универсальный адрес для проверки адресованных команд. */
|
||||
void set_cntrl_addr (int cntrl_addr,int cntrl_addr_for_all);
|
||||
|
||||
|
||||
/* Объявляет cntr_addr_c — данные cntr_addr_c. Память определена в другом модуле. */
|
||||
extern int cntr_addr_c;
|
||||
/* Объявляет cntr_addr_c_all — данные cntr_addr_c_all. Память определена в другом модуле. */
|
||||
extern int cntr_addr_c_all;
|
||||
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
||||
}
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
#endif /* _CNTRL_ADR */
|
||||
#endif /* _CNTRL_ADR */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
/* Таблицы и функции вычисления контрольных сумм CRC. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef unsigned short WORD;
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef unsigned char byte;
|
||||
|
||||
|
||||
/* Объявляет интерфейс функции get_crc_ccitt; реализация вызывается через этот прототип. */
|
||||
unsigned int get_crc_ccitt(unsigned int crc, unsigned int *buf, unsigned long size );
|
||||
/* Объявляет интерфейс функции get_crc_16; реализация вызывается через этот прототип. */
|
||||
unsigned int get_crc_16(unsigned int crc,unsigned int *buf,unsigned long size );
|
||||
/* Объявляет интерфейс функции get_crc_16b; реализация вызывается через этот прототип. */
|
||||
unsigned int get_crc_16b(unsigned int crc,unsigned int *buf,unsigned long size );
|
||||
/* Объявляет интерфейс функции get_crc16; реализация вызывается через этот прототип. */
|
||||
int get_crc16(unsigned int *buf, int size );
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
/* Штатный eCAN и отдельный служебный обмен УМП/GAS. Русские пояснения сохранены в UTF-8. */
|
||||
/* Настраивает eCAN, скорость, почтовые ящики и маршрутизацию прерываний для выбранного режима платы. */
|
||||
void InitCan(int Port, int DevNum);
|
||||
/* Упаковывает адрес и технологические слова в штатный CAN-кадр и запускает передачу mailbox. */
|
||||
void CAN_send(int Port, int data[], int Addr);
|
||||
/* Объявляет CAN_input_data — CAN вход данные. Память определена в другом модуле. */
|
||||
extern int CAN_input_data[];
|
||||
|
||||
/* Неблокирующая передача ответов логгера отдельным CAN mailbox. */
|
||||
/* Неблокирующая передача ответов логгера отдельным CAN mailbox. */
|
||||
/* В главном цикле готовит замороженный ответ служебного CAN и отправляет его двухсловными фрагментами. */
|
||||
void UMP_CAN_service(void);
|
||||
|
||||
@@ -1,15 +1,26 @@
|
||||
/* Выбор профиля физически установленной EEPROM при сборке. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: BALSAM167_EEPROM_CONFIG_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef BALSAM167_EEPROM_CONFIG_H
|
||||
/* Определяет защитный символ или переключатель BALSAM167_EEPROM_CONFIG_H для последующей компиляции. */
|
||||
#define BALSAM167_EEPROM_CONFIG_H
|
||||
/* Build-time checkbox: 0 = AT25256B (32 KiB), 1 = M95M02-DR (256 KiB).
|
||||
* This must match the soldered part BEFORE startup loads saved parameters.
|
||||
* CCS: change the value below, then Project > Clean and Rebuild.
|
||||
* Command-line builds may override EEPROM_M95M02 for that build only.
|
||||
* A GUI checkbox cannot change SPI ROM boot or startup initialization.
|
||||
/* Аппаратный профиль выбирается при сборке: 0 — AT25256B (32 КиБ),
|
||||
* 1 — M95M02-DR (256 КиБ). Он обязан соответствовать установленной микросхеме
|
||||
* до загрузки сохранённых параметров при старте.
|
||||
* В CCS измените определение ниже, затем выполните Clean/Rebuild.
|
||||
* Ключ компилятора может переопределить значение только для своей сборки.
|
||||
* Выбор профиля во время работы не меняет загрузку ROM по SPI и начальную адресацию.
|
||||
*/
|
||||
/* Начинает условие: EEPROM_M95M02 ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef EEPROM_M95M02
|
||||
/* Задаёт EEPROM_M95M02 = 0; выбор аппаратной EEPROM при сборке: 0 — AT25256B 32 КиБ, 1 — M95M02 256 КиБ и GAS. */
|
||||
#define EEPROM_M95M02 0
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
/* Условие компиляции EEPROM_M95M02 != 0 и EEPROM_M95M02 != 1: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if EEPROM_M95M02 != 0 && EEPROM_M95M02 != 1
|
||||
/* Останавливает сборку при недопустимой конфигурации: EEPROM_M95M02_must_be_0_or_1. */
|
||||
#error EEPROM_M95M02_must_be_0_or_1
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
@@ -1,49 +1,82 @@
|
||||
/* Накопительный фильтр измерительных каналов. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: _FILTER_BAT2 ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef _FILTER_BAT2
|
||||
/* Определяет защитный символ или переключатель _FILTER_BAT2 для последующей компиляции. */
|
||||
#define _FILTER_BAT2
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
|
||||
extern "C" {
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
/* Задаёт K1_FILTER_BATTER2_1HZ = 0.0000096; данные K1_FILTER_BATTER2_1HZ. */
|
||||
#define K1_FILTER_BATTER2_1HZ 0.0000096
|
||||
/* Задаёт K2_FILTER_BATTER2_1HZ = 1.94468056; данные K2_FILTER_BATTER2_1HZ. */
|
||||
#define K2_FILTER_BATTER2_1HZ 1.94468056
|
||||
/* Задаёт K3_FILTER_BATTER2_1HZ = -0.94471895; данные K3_FILTER_BATTER2_1HZ. */
|
||||
#define K3_FILTER_BATTER2_1HZ -0.94471895
|
||||
|
||||
/* Задаёт K1_FILTER_BATTER2_3HZ = 0.00008766; данные K1_FILTER_BATTER2_3HZ. */
|
||||
#define K1_FILTER_BATTER2_3HZ 0.00008766
|
||||
/* Задаёт K2_FILTER_BATTER2_3HZ = 1.97347532; данные K2_FILTER_BATTER2_3HZ. */
|
||||
#define K2_FILTER_BATTER2_3HZ 1.97347532
|
||||
/* Задаёт K3_FILTER_BATTER2_3HZ = -0.97382594; данные K3_FILTER_BATTER2_3HZ. */
|
||||
#define K3_FILTER_BATTER2_3HZ -0.97382594
|
||||
|
||||
/* Задаёт K1_FILTER_BATTER2_5HZ = 0.00024135; данные K1_FILTER_BATTER2_5HZ. */
|
||||
#define K1_FILTER_BATTER2_5HZ 0.00024135
|
||||
/* Задаёт K2_FILTER_BATTER2_5HZ = 1.95581276; данные K2_FILTER_BATTER2_5HZ. */
|
||||
#define K2_FILTER_BATTER2_5HZ 1.95581276
|
||||
/* Задаёт K3_FILTER_BATTER2_5HZ = -0.95677816; данные K3_FILTER_BATTER2_5HZ. */
|
||||
#define K3_FILTER_BATTER2_5HZ -0.95677816
|
||||
|
||||
/* Задаёт K1_FILTER_BATTER2_10HZ = 0.00094411; данные K1_FILTER_BATTER2_10HZ. */
|
||||
#define K1_FILTER_BATTER2_10HZ 0.00094411
|
||||
/* Задаёт K2_FILTER_BATTER2_10HZ = 1.91126422; данные K2_FILTER_BATTER2_10HZ. */
|
||||
#define K2_FILTER_BATTER2_10HZ 1.91126422
|
||||
/* Задаёт K3_FILTER_BATTER2_10HZ = -0.91504065; данные K3_FILTER_BATTER2_10HZ. */
|
||||
#define K3_FILTER_BATTER2_10HZ -0.91504065
|
||||
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef struct { float k_0;
|
||||
/* Объявляет k_1 — данные k_1. */
|
||||
float k_1;
|
||||
/* Объявляет k_2 — данные k_2. */
|
||||
float k_2;
|
||||
/* Объявляет i_0 — данные i_0. */
|
||||
float i_0;
|
||||
/* Объявляет i_1 — данные i_1. */
|
||||
float i_1;
|
||||
/* Объявляет i_2 — данные i_2. */
|
||||
float i_2;
|
||||
/* Объявляет u_0 — данные u_0. */
|
||||
float u_0;
|
||||
/* Объявляет u_1 — данные u_1. */
|
||||
float u_1;
|
||||
/* Объявляет u_2 — данные u_2. */
|
||||
float u_2;
|
||||
} FILTERBAT;
|
||||
/* Продолжает список аргументов, полей или выражение } FILTERBAT;; порядок элементов сохраняется. */
|
||||
} FILTERBAT;
|
||||
|
||||
|
||||
/* Задаёт DEF_FILTERBAT = { K1_FILTER_BATTER2_3HZ,; данные DEF_FILTERBAT. */
|
||||
#define DEF_FILTERBAT { K1_FILTER_BATTER2_3HZ, \
|
||||
K2_FILTER_BATTER2_3HZ, \
|
||||
K3_FILTER_BATTER2_3HZ, \
|
||||
0,0,0,0,0,0}
|
||||
K2_FILTER_BATTER2_3HZ, /* Продолжает список аргументов, полей или выражение K2_FILTER_BATTER2_3HZ,; порядок элементов сохраняется. */ \
|
||||
K3_FILTER_BATTER2_3HZ, /* Продолжает список аргументов, полей или выражение K3_FILTER_BATTER2_3HZ,; порядок элементов сохраняется. */ \
|
||||
0,0,0,0,0,0} /* Элемент постоянной таблицы 0,0,0,0,0,0}; порядок значений совпадает с порядком индексов потребителя. */
|
||||
|
||||
/* Обновляет скользящий фильтр измерительного канала и его накопленные значения. */
|
||||
float filterbat(FILTERBAT *b, float InpVarCurr);
|
||||
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
||||
}
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
#endif /* _FILTER_BAT2 */
|
||||
#endif /* _FILTER_BAT2 */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
|
||||
|
||||
@@ -1,28 +1,47 @@
|
||||
/* Дополнительная карта GAS 167/v1 только для новой EEPROM M95M02. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: BALSAM167_GAS_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef BALSAM167_GAS_H
|
||||
/* Определяет защитный символ или переключатель BALSAM167_GAS_H для последующей компиляции. */
|
||||
#define BALSAM167_GAS_H
|
||||
/* Подключает "eeprom_config.h": выбор профиля физически установленной EEPROM при сборке. */
|
||||
#include "eeprom_config.h"
|
||||
/* Подключает <stdint.h>: настройки и интерфейс stdint. */
|
||||
#include <stdint.h>
|
||||
|
||||
/* Board profile 167/v1, word addresses, independent of the wire transport.
|
||||
* The original register and UMP addresses remain valid in both builds.
|
||||
* Only the physically fitted M95M02 version exposes the additional regions. */
|
||||
/* Профиль платы 167/v1 использует словные адреса независимо от транспорта.
|
||||
* Штатные адреса технологических регистров и УМП остаются доступными в обеих сборках.
|
||||
* Дополнительные области GAS присутствуют только при установленной M95M02.
|
||||
*/
|
||||
/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if EEPROM_M95M02
|
||||
/* Задаёт GAS167_REG_BASE = 0x5000U; начало псевдонимов 128 технологических регистров GAS, адрес 0x5000. */
|
||||
#define GAS167_REG_BASE 0x5000U
|
||||
/* Задаёт GAS167_REG_COUNT = 128U; число технологических слов GAS; скрытое слово modbus[128] в диапазон не входит. */
|
||||
#define GAS167_REG_COUNT 128U
|
||||
/* Задаёт GAS167_INFO_BASE = 0x5F00U; начало доступного только для чтения дескриптора GAS, адрес 0x5F00. */
|
||||
#define GAS167_INFO_BASE 0x5F00U
|
||||
/* Задаёт GAS167_INFO_WORDS = 8U; длина дескриптора GAS — восемь 16-битных слов. */
|
||||
#define GAS167_INFO_WORDS 8U
|
||||
/* Задаёт GAS167_MAX_WORDS = 124U; максимальная длина чтения GAS — 124 слова; служебный CAN требует чётную длину. */
|
||||
#define GAS167_MAX_WORDS 124U
|
||||
/* Задаёт GAS167_PROFILE_VERSION = 1U; версия карты адресов GAS 167/v1. */
|
||||
#define GAS167_PROFILE_VERSION 1U
|
||||
#define GAS167_CAPABILITIES 7U /* bit 0 RTU, bit 1 service CAN, bit 2 FC06 */
|
||||
#define GAS167_CAPABILITIES 7U /* Бит 0 — RTU, бит 1 — служебный CAN, бит 2 — запись FC06. */ /* Задаёт GAS167_CAPABILITIES = 7U; маска возможностей: бит 0 — RTU, бит 1 — служебный CAN, бит 2 — FC06. */
|
||||
|
||||
/* Called by the main-loop transports under their snapshot IRQ lock.
|
||||
* Capacity: at least GAS167_MAX_WORDS uint16_t words.
|
||||
* RTU reads: 1..124 words; paired service CAN reads: 2..124, even.
|
||||
* Successful reads return their count. Writes/errors return address/value.
|
||||
* error uses Modbus codes 0 (success), 1 (function), 2 (address), 3 (value).
|
||||
* No EEPROM I/O, allocation, or changes to the existing logger. */
|
||||
/* Вызывается транспортами из главного цикла под краткой блокировкой IRQ.
|
||||
* Буфер ответа должен вмещать не меньше GAS167_MAX_WORDS слов uint16_t.
|
||||
* RTU читает 1..124 слова; служебный CAN — чётное число слов 2..124.
|
||||
* Успешное чтение возвращает число слов. Запись или ошибка возвращает адрес/значение.
|
||||
* error: 0 — успех, 1 — функция, 2 — адрес, 3 — значение.
|
||||
* Здесь нет обмена EEPROM, выделения памяти или изменения устройства регистратора.
|
||||
*/
|
||||
/* Проверяет принадлежность адреса одному из двух диапазонов GAS 167/v1; доступно только для M95M02. */
|
||||
int gas167_contains(uint16_t address);
|
||||
/* Проверяет весь запрос FC03/FC06 до доступа к данным и формирует снимок регистров или дескриптора GAS. */
|
||||
unsigned gas167_prepare(unsigned function, uint16_t address, uint16_t value,
|
||||
/* Объявляет can — CAN; reply — данные reply. Хранит указатель на данные. */
|
||||
int can, uint16_t *reply, unsigned *error);
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
/* Последовательный вывод данных канала индикации. Русские пояснения сохранены в UTF-8. */
|
||||
/* Объявляет интерфейс функции kanal_Send; реализация вызывается через этот прототип. */
|
||||
void kanal_Send(int adr, long dat, int dot);
|
||||
|
||||
@@ -1,57 +1,94 @@
|
||||
/* Двухбанковый регистратор событий нагрузки во внешней RAM. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: _LOG_TO_MEM ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef _LOG_TO_MEM
|
||||
#define _LOG_TO_MEM
|
||||
/* Определяет защитный символ или переключатель _LOG_TO_MEM для последующей компиляции. */
|
||||
#define _LOG_TO_MEM
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
/* Задаёт C-соглашение о связывании имён при включении заголовка из C++. */
|
||||
extern "C" {
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
/* Определениa длa работы логгера */
|
||||
/* Определениa длa работы логгера */
|
||||
/* Задаёт LOG_PAGE_START = 0x0200000; данные LOG_PAGE_START. */
|
||||
#define LOG_PAGE_START 0x0200000
|
||||
/* Задаёт LOG_PAGE_LEN = 0xFA00; данные LOG_PAGE_LEN. */
|
||||
#define LOG_PAGE_LEN 0xFA00
|
||||
|
||||
extern int no_write, never_write; // Флаги, чтобы не писать (если что)
|
||||
/* Объявляет no_write — no запись; never_write — never запись. Память определена в другом модуле. */
|
||||
extern int no_write, never_write; // Флаги, чтобы не писать (если что)
|
||||
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef struct
|
||||
{
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Объявляет Start — данные Start. */
|
||||
unsigned long Start;
|
||||
/* Объявляет Finis — данные Finis. */
|
||||
unsigned long Finis;
|
||||
/* Объявляет Adres — данные Adres. */
|
||||
unsigned long Adres;
|
||||
/* Объявляет Circl — данные Circl. */
|
||||
unsigned int Circl;
|
||||
|
||||
/* Продолжает список аргументов, полей или выражение } LOG;; порядок элементов сохраняется. */
|
||||
} LOG;
|
||||
|
||||
/* Объявляет Log — данные Log. Память определена в другом модуле. */
|
||||
extern LOG Log;
|
||||
|
||||
/* Запись словa в памать, где логи лежат */
|
||||
/* Запись словa в памать, где логи лежат */
|
||||
/* Задаёт Log_to_mem = *(int *)(Log.Adres++) = x; данные Log_to_mem. */
|
||||
#define Log_to_mem(x) *(int *)(Log.Adres++) = x
|
||||
|
||||
/* Проверка границы памати дла логов */
|
||||
/* Проверка границы памати дла логов */
|
||||
//#define Test_mem_limit(x) if(Log.Adres > (Log.Finis - (x))) Log.Adres = Log.Start
|
||||
/* Задаёт Test_mem_limit = if(Log.Adres > (Log.Finis - (x))) Log.Adres -=(x); данные Test_mem_limit. */
|
||||
#define Test_mem_limit(x) if(Log.Adres > (Log.Finis - (x))) Log.Adres -=(x)
|
||||
|
||||
/* Очистка памати (обнуление) */
|
||||
/* Очистка памати (обнуление) */
|
||||
/* Обнуляет выделенный диапазон внешней RAM журнала и задаёт границы кольцевого буфера. */
|
||||
void clear_mem();
|
||||
|
||||
/* Логгер УМП: отдельное адресное пространство Modbus, без изменения
|
||||
* 128 технологических регистров. Два банка по 760 записей:
|
||||
* текущий кольцевой журнал и зафиксированный фрагмент отключения. */
|
||||
/* Логгер УМП: отдельное адресное пространство Modbus, без изменения
|
||||
* 128 технологических регистров. Два банка по 760 записей:
|
||||
* текущий кольцевой журнал и зафиксированный фрагмент отключения. */
|
||||
/* Задаёт UMP_LOG_BASE = 0x1000U; данные UMP_LOG_BASE. */
|
||||
#define UMP_LOG_BASE 0x1000U
|
||||
/* Задаёт UMP_LOG_DATA = 0x1010U; UMP LOG данные. */
|
||||
#define UMP_LOG_DATA 0x1010U
|
||||
/* Задаёт UMP_LOG_WORDS = 42U; UMP LOG слова. */
|
||||
#define UMP_LOG_WORDS 42U
|
||||
/* Задаёт UMP_LOG_CAPACITY = 760U; данные UMP_LOG_CAPACITY. */
|
||||
#define UMP_LOG_CAPACITY 760U
|
||||
/* Задаёт UMP_LOG_LIVE_RECORDS = (120U / UMP_LOG_WORDS); данные UMP_LOG_LIVE_RECORDS. */
|
||||
#define UMP_LOG_LIVE_RECORDS (120U / UMP_LOG_WORDS)
|
||||
/* Задаёт UMP_LOG_LIVE = 0x1100U; данные UMP_LOG_LIVE. */
|
||||
#define UMP_LOG_LIVE 0x1100U
|
||||
/* Объявляет ump_dac_ramp — ump ЦАП ramp; ump_dac_duration — ump ЦАП duration; ump_dac_go10 — ump ЦАП go 10; ump_dac_stop10 — ump ЦАП stop 10; ump_dac_position — ump ЦАП position. Память определена в другом модуле. */
|
||||
extern unsigned int ump_dac_ramp, ump_dac_duration, ump_dac_go10, ump_dac_stop10, ump_dac_position;
|
||||
/* Явно инициализирует оба банка регистратора до включения IRQ; повторный старт записи архив не стирает. */
|
||||
void ump_log_init(void);
|
||||
/* Продвигает время регистратора в Timer1 и снимает записи с заданным периодом. */
|
||||
void ump_log_tick(void);
|
||||
/* Обслуживает изменения дискретных входов и выходов из главного цикла. */
|
||||
void ump_log_io(void);
|
||||
/* Обновляет последние CAN-данные и напряжения для следующего снимка регистратора. */
|
||||
void ump_log_can(unsigned int header, unsigned int a, unsigned int b, unsigned int c);
|
||||
/* Регистрирует изменение слова команд после записи по последовательному интерфейсу. */
|
||||
void ump_log_rs(void);
|
||||
/* Проверяет область чтения регистратора и возвращает слова состояния либо архивной записи. */
|
||||
unsigned int ump_log_read(unsigned int address);
|
||||
/* Применяет допустимые команды управления регистратором, сохраняя ограничения адресов. */
|
||||
int ump_log_write(unsigned int address, unsigned int value);
|
||||
|
||||
/* Включает следующий блок только при определённом символе __cplusplus. */
|
||||
#ifdef __cplusplus
|
||||
/* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */
|
||||
}
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
#endif /* _LOG_TO_MEM */
|
||||
#endif /* _LOG_TO_MEM */ /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
|
||||
@@ -1,121 +1,212 @@
|
||||
/* Обработка датчиков, вычисление величин и миллисекундный такт системы. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: _MEASURE ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef _MEASURE
|
||||
/* Определяет защитный символ или переключатель _MEASURE для последующей компиляции. */
|
||||
#define _MEASURE
|
||||
|
||||
/* Выполняет миллисекундный такт датчиков, таймеров связи, регистратора и защиты нагрузки. */
|
||||
interrupt void cpu_timer1_isr_SENS(void);
|
||||
|
||||
/* Объявляет интерфейс функции Init_sensors; реализация вызывается через этот прототип. */
|
||||
void Init_sensors(void);
|
||||
/* Объявляет интерфейс функции Init_sensors_more; реализация вызывается через этот прототип. */
|
||||
void Init_sensors_more(void);
|
||||
/* Объявляет интерфейс функции Init_packMask; реализация вызывается через этот прототип. */
|
||||
void Init_packMask(void);
|
||||
/* Объявляет интерфейс функции Temper_count; реализация вызывается через этот прототип. */
|
||||
void Temper_count(int chan, int ovn);
|
||||
/* Объявляет интерфейс функции Current_count; реализация вызывается через этот прототип. */
|
||||
void Current_count(int chan);
|
||||
/* Объявляет интерфейс функции Power_count; реализация вызывается через этот прототип. */
|
||||
void Power_count(int chan);
|
||||
/* Объявляет интерфейс функции calc_sensor_koef; реализация вызывается через этот прототип. */
|
||||
void calc_sensor_koef(void);
|
||||
/* Объявляет интерфейс функции Is_Voltage_Hi; реализация вызывается через этот прототип. */
|
||||
void Is_Voltage_Hi(void);
|
||||
/* Объявляет интерфейс функции calc_volta_edge; реализация вызывается через этот прототип. */
|
||||
void calc_volta_edge(void);
|
||||
|
||||
/* Объявляет интерфейс функции er_anal; реализация вызывается через этот прототип. */
|
||||
int er_anal(int term, unsigned int * count, long edge, int pre);
|
||||
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef union
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
|
||||
struct
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Битовое поле Tear, ширина 1 бит; данные Tear. */
|
||||
unsigned int Tear :1;
|
||||
/* Битовое поле res, ширина 1 бит; данные res. */
|
||||
unsigned int res :1;
|
||||
/* Битовое поле Wry, ширина 1 бит; данные Wry. */
|
||||
unsigned int Wry :1;
|
||||
/* Битовое поле Out, ширина 1 бит; данные Out. */
|
||||
unsigned int Out :1;
|
||||
/* Битовое поле Over, ширина 1 бит; данные Over. */
|
||||
unsigned int Over :1;
|
||||
/* Битовое поле Hyper, ширина 1 бит; данные Hyper. */
|
||||
unsigned int Hyper :1;
|
||||
/* Битовое поле Contr, ширина 1 бит; данные Contr. */
|
||||
unsigned int Contr :1;
|
||||
/* Битовое поле res2, ширина 1 бит; данные res2. */
|
||||
unsigned int res2 :1;
|
||||
|
||||
/* Битовое поле Stop, ширина 1 бит; данные Stop. */
|
||||
unsigned int Stop :1;
|
||||
/* Битовое поле Ready, ширина 1 бит; данные Ready. */
|
||||
unsigned int Ready :1;
|
||||
/* Битовое поле Discr1, ширина 1 бит; данные Discr1. */
|
||||
unsigned int Discr1 :1;
|
||||
/* Битовое поле Discr2, ширина 1 бит; данные Discr2. */
|
||||
unsigned int Discr2 :1;
|
||||
/* Битовое поле Discr3, ширина 1 бит; данные Discr3. */
|
||||
unsigned int Discr3 :1;
|
||||
/* Битовое поле Discr4, ширина 1 бит; данные Discr4. */
|
||||
unsigned int Discr4 :1;
|
||||
/* Битовое поле Ignor, ширина 1 бит; данные Ignor. */
|
||||
unsigned int Ignor :1;
|
||||
/* Битовое поле Bypas, ширина 1 бит; данные Bypas. */
|
||||
unsigned int Bypas :1;
|
||||
|
||||
/* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
|
||||
} bit;
|
||||
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
|
||||
unsigned int all;
|
||||
|
||||
/* Задаёт Imit = Discr4; данные Imit. */
|
||||
#define Imit Discr4
|
||||
|
||||
/* Продолжает список аргументов, полей или выражение } ERROR;; порядок элементов сохраняется. */
|
||||
} ERROR;
|
||||
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef union
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Продолжает список аргументов, полей или выражение struct; порядок элементов сохраняется. */
|
||||
struct
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Битовое поле Error, ширина 1 бит; ошибка. */
|
||||
unsigned int Error :1;
|
||||
/* Битовое поле Alarm, ширина 1 бит; данные Alarm. */
|
||||
unsigned int Alarm :1;
|
||||
/* Битовое поле OverHeat, ширина 1 бит; данные OverHeat. */
|
||||
unsigned int OverHeat :1;
|
||||
/* Битовое поле SubHeat, ширина 1 бит; данные SubHeat. */
|
||||
unsigned int SubHeat :1;
|
||||
/* Битовое поле OutHeat, ширина 1 бит; данные OutHeat. */
|
||||
unsigned int OutHeat :1;
|
||||
/* Битовое поле Test_lamp, ширина 1 бит; данные Test_lamp. */
|
||||
unsigned int Test_lamp :1;
|
||||
|
||||
/* Продолжает список аргументов, полей или выражение } bit;; порядок элементов сохраняется. */
|
||||
} bit;
|
||||
/* Объявляет all — представление регистра целым словом без разбиения на битовые поля. */
|
||||
unsigned int all;
|
||||
|
||||
/* Продолжает список аргументов, полей или выражение } FLAG;; порядок элементов сохраняется. */
|
||||
} FLAG;
|
||||
|
||||
/* Задаёт NOER = 0xE000; данные NOER. */
|
||||
#define NOER 0xE000//C
|
||||
/* Задаёт EROR = 0x01FF; данные EROR. */
|
||||
#define EROR 0x01FF
|
||||
|
||||
#define READY_FREQ (500.0 * 2)// Ãö
|
||||
#define BLINK_FREQ 2 // Ãö
|
||||
/* Задаёт READY_FREQ = (500.0 * 2); частота основного такта Timer1 в герцах. */
|
||||
#define READY_FREQ (500.0 * 2)// Гц
|
||||
/* Задаёт BLINK_FREQ = 2; данные BLINK_FREQ. */
|
||||
#define BLINK_FREQ 2 // Гц
|
||||
/* Задаёт BLINK_TIME = (READY_FREQ / BLINK_FREQ); данные BLINK_TIME. */
|
||||
#define BLINK_TIME (READY_FREQ / BLINK_FREQ)
|
||||
|
||||
/* Задаёт CANPOWSE = 20; данные CANPOWSE. */
|
||||
#define CANPOWSE 20
|
||||
|
||||
#define ADC_FREQ 3750 //3885.0//777//2000//20000 //777 //3885 // Ãö (777*5)
|
||||
#define DAC_FREQ 200//5 // Ãö
|
||||
/* Задаёт ADC_FREQ = 3750; частота запуска последовательности АЦП в герцах. */
|
||||
#define ADC_FREQ 3750 //3885.0//777//2000//20000 //777 //3885 // Гц (777*5)
|
||||
/* Задаёт DAC_FREQ = 200; частота обновления тока ЦАП в герцах. */
|
||||
#define DAC_FREQ 200//5 // Гц
|
||||
|
||||
/* Задаёт LOAD_TIME = 30; время нарастания тока нагрузки в секундах. */
|
||||
#define LOAD_TIME 30//15 // sec
|
||||
|
||||
/* Объявляет Caliber_time — данные Caliber_time. Память определена в другом модуле. */
|
||||
extern unsigned int Caliber_time;
|
||||
|
||||
/* Задаёт SENS_ERR_WAIT = 10; данные SENS_ERR_WAIT. */
|
||||
#define SENS_ERR_WAIT 10
|
||||
|
||||
/* Задаёт maximum_bright = 10; данные maximum_bright. */
|
||||
#define maximum_bright 10
|
||||
|
||||
/* Задаёт Pi = 3.1415926535897932384626433832795; данные Pi. */
|
||||
#define Pi 3.1415926535897932384626433832795
|
||||
/* Задаёт Pi_2 = 1.5707963267948966192313216916398; данные Pi_2. */
|
||||
#define Pi_2 1.5707963267948966192313216916398
|
||||
|
||||
/* Задаёт ZERO = 27; данные ZERO. */
|
||||
#define ZERO 27
|
||||
|
||||
#define Cooling 5 // (°Ñ) Ãèñòåðåçèñ ïî ñíàòèþ ïåðåãðåâà
|
||||
/* Задаёт Cooling = 5; данные Cooling. */
|
||||
#define Cooling 5 // (°С) Гистерезис по снатию перегрева
|
||||
|
||||
/* Задаёт COSPi6 = 0.86602540378443864676372317075294; данные COSPi6. */
|
||||
#define COSPi6 0.86602540378443864676372317075294
|
||||
|
||||
/* Задаёт RADIX2 = 1.4142135623730950488016887242097; данные RADIX2. */
|
||||
#define RADIX2 1.4142135623730950488016887242097
|
||||
|
||||
#define POWER_380 0 // ïèòàíèå 380Â
|
||||
#define POWER_38O 1 // ïèòàíèå 380Â
|
||||
#define CURRENT 2 // òîê
|
||||
#define VOLTAGE 3 // íàïðàæåíèå
|
||||
#define POWER_31 4 // ïèòàíèå 31Â
|
||||
#define POWER_27 5 // ïèòàíèå 24Â
|
||||
#define POWER_24 6 // ïèòàíèå 24Â
|
||||
#define POWER_15 7 // ïèòàíèå 15Â
|
||||
#define TERMO_AD 8 // òåðìîäàò÷èê ìåëêîñõåìà
|
||||
#define TERMO_RS 9 // òåðìîðåçèñòîð
|
||||
#define TRM_OBEH 10 // òåðìîäàò÷èê îâåí
|
||||
/* Задаёт POWER_380 = 0; данные POWER_380. */
|
||||
#define POWER_380 0 // питание 380В
|
||||
/* Задаёт POWER_38O = 1; данные POWER_38O. */
|
||||
#define POWER_38O 1 // питание 380В
|
||||
/* Задаёт CURRENT = 2; данные CURRENT. */
|
||||
#define CURRENT 2 // ток
|
||||
/* Задаёт VOLTAGE = 3; данные VOLTAGE. */
|
||||
#define VOLTAGE 3 // напражение
|
||||
/* Задаёт POWER_31 = 4; данные POWER_31. */
|
||||
#define POWER_31 4 // питание 31В
|
||||
/* Задаёт POWER_27 = 5; данные POWER_27. */
|
||||
#define POWER_27 5 // питание 24В
|
||||
/* Задаёт POWER_24 = 6; данные POWER_24. */
|
||||
#define POWER_24 6 // питание 24В
|
||||
/* Задаёт POWER_15 = 7; данные POWER_15. */
|
||||
#define POWER_15 7 // питание 15В
|
||||
/* Задаёт TERMO_AD = 8; данные TERMO_AD. */
|
||||
#define TERMO_AD 8 // термодатчик мелкосхема
|
||||
/* Задаёт TERMO_RS = 9; данные TERMO_RS. */
|
||||
#define TERMO_RS 9 // терморезистор
|
||||
/* Задаёт TRM_OBEH = 10; данные TRM_OBEH. */
|
||||
#define TRM_OBEH 10 // термодатчик овен
|
||||
|
||||
/* Объявляет TPL_CANS — данные TPL_CANS; tpl_cans — данные tpl_cans. Память определена в другом модуле. */
|
||||
extern int TPL_CANS,tpl_cans;
|
||||
|
||||
/* Объявляет READY — данные READY. Память определена в другом модуле. */
|
||||
extern int READY;
|
||||
|
||||
/* Объявляет filter — данные filter. Память определена в другом модуле. */
|
||||
extern FILTERBAT filter[];
|
||||
/* Объявляет adc_filter — АЦП filter. Память определена в другом модуле. */
|
||||
extern FILTERBAT adc_filter[];
|
||||
/* Объявляет out_filter — данные out_filter. Память определена в другом модуле. */
|
||||
extern FILTERBAT out_filter[];
|
||||
|
||||
/* Объявляет sens_type — данные sens_type. Память определена в другом модуле. */
|
||||
extern int sens_type[];
|
||||
/* Объявляет ext_temp — данные ext_temp; ext_diag — данные ext_diag. Память определена в другом модуле. */
|
||||
extern int ext_temp[], ext_diag[];
|
||||
|
||||
/* Объявляет Lonely — данные Lonely. Память определена в другом модуле. */
|
||||
extern unsigned long Lonely;
|
||||
/* Объявляет CanPowse — CAN Powse; CanGO — CAN GO. Память определена в другом модуле. */
|
||||
extern unsigned int CanPowse,CanGO;
|
||||
/* Объявляет Maska[][8];. Память определена в другом модуле. */
|
||||
extern unsigned int Maska[][8];
|
||||
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif //_MEASURE
|
||||
|
||||
@@ -1,42 +1,75 @@
|
||||
/* Обработка Modbus, заводские параметры и сохранение настроек. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: MESSAGE_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef MESSAGE_H
|
||||
/* Определяет защитный символ или переключатель MESSAGE_H для последующей компиляции. */
|
||||
#define MESSAGE_H
|
||||
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef unsigned char CHAR;
|
||||
|
||||
#define ANSWER_LEN 0x80 //70 // 16+16+16+16+6
|
||||
#define REPLY_LEN 0x19
|
||||
/* Задаёт ANSWER_LEN = 0x80; данные ANSWER_LEN. */
|
||||
#define ANSWER_LEN 0x80 //70 // 16+16+16+16+6
|
||||
/* Задаёт REPLY_LEN = 0x19; данные REPLY_LEN. */
|
||||
#define REPLY_LEN 0x19
|
||||
|
||||
/* Задаёт byte_hi = byte_1; данные byte_hi. */
|
||||
#define byte_hi byte_1
|
||||
/* Задаёт byte_lo = byte_0; данные byte_lo. */
|
||||
#define byte_lo byte_0
|
||||
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef struct
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
unsigned char Address; // Àäðåñ êîíòðîëëåðà
|
||||
unsigned char Number; // Íîìåð êîìàíäû
|
||||
/* Объявляет Address — адрес. */
|
||||
unsigned char Address; // Адрес контроллера
|
||||
/* Объявляет Number — данные Number. */
|
||||
unsigned char Number; // Номер команды
|
||||
|
||||
/* Продолжает список аргументов, полей или выражение BAITE byte0;; порядок элементов сохраняется. */
|
||||
BAITE byte0;
|
||||
/* Продолжает список аргументов, полей или выражение BAITE byte1;; порядок элементов сохраняется. */
|
||||
BAITE byte1;
|
||||
/* Продолжает список аргументов, полей или выражение BAITE byte2;; порядок элементов сохраняется. */
|
||||
BAITE byte2;
|
||||
/* Продолжает список аргументов, полей или выражение BAITE byte3;; порядок элементов сохраняется. */
|
||||
BAITE byte3;
|
||||
/* Продолжает список аргументов, полей или выражение BAITE byte4;; порядок элементов сохраняется. */
|
||||
BAITE byte4;
|
||||
/* Продолжает список аргументов, полей или выражение BAITE byte5;; порядок элементов сохраняется. */
|
||||
BAITE byte5;
|
||||
/* Продолжает список аргументов, полей или выражение BAITE byte6;; порядок элементов сохраняется. */
|
||||
BAITE byte6;
|
||||
/* Продолжает список аргументов, полей или выражение BAITE byte7;; порядок элементов сохраняется. */
|
||||
BAITE byte7;
|
||||
|
||||
/* Объявляет crc_lo — данные crc_lo. */
|
||||
unsigned char crc_lo;
|
||||
/* Объявляет crc_hi — данные crc_hi. */
|
||||
unsigned char crc_hi;
|
||||
/* Объявляет add_byte — данные add_byte. */
|
||||
unsigned char add_byte;
|
||||
/* Продолжает список аргументов, полей или выражение } CMD_TO_TMS;; порядок элементов сохраняется. */
|
||||
} CMD_TO_TMS;
|
||||
|
||||
extern int modbus[];
|
||||
/* Объявляет modbus — массив технологических регистров; слово int на C28x занимает 16 бит. Память определена в другом модуле. */
|
||||
extern int modbus[];
|
||||
|
||||
/* Обслуживает чтение регистров FC03 с проверкой адреса, длины и формированием ответа RTU. */
|
||||
void ReceiveCommandModbus3(RS_DATA *rs_arr);
|
||||
void ReceiveCommandModbus6(RS_DATA *rs_arr);
|
||||
/* Обслуживает одиночную запись FC06, проверяя доступность регистра и допустимость значения. */
|
||||
void ReceiveCommandModbus6(RS_DATA *rs_arr);
|
||||
/* Объявляет интерфейс функции SendCommandModbus4; реализация вызывается через этот прототип. */
|
||||
void SendCommandModbus4(RS_DATA *rs_arr);
|
||||
void ReceiveAnswerModbus4(RS_DATA *rs_arr);
|
||||
/* Объявляет интерфейс функции ReceiveAnswerModbus4; реализация вызывается через этот прототип. */
|
||||
void ReceiveAnswerModbus4(RS_DATA *rs_arr);
|
||||
|
||||
/* Сохраняет технологические регистры в область параметров, отделённую от загрузочного образа EEPROM. */
|
||||
void Save_params(void);
|
||||
/* Читает сохранённые регистры из области параметров EEPROM и применяет настройки платы. */
|
||||
void Load_params(void);
|
||||
/* Заполняет регистры заводскими значениями; тайм-аут CAN нагрузки по умолчанию равен 600 мс. */
|
||||
void Default_params(void);
|
||||
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif //MESSAGE_H
|
||||
|
||||
@@ -1,172 +1,300 @@
|
||||
/* Адреса устройств, типы плат и псевдонимы технологических регистров. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: PACKAGE ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef PACKAGE
|
||||
/* Определяет защитный символ или переключатель PACKAGE для последующей компиляции. */
|
||||
#define PACKAGE
|
||||
|
||||
/* Задаёт BALSAM = 167; данные BALSAM. */
|
||||
#define BALSAM 167
|
||||
|
||||
/* Условие компиляции BALSAM == 167: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 167
|
||||
/* Задаёт OBOROT = STRAIGHT; данные OBOROT. */
|
||||
#define OBOROT STRAIGHT
|
||||
/* Определяет защитный символ или переключатель CALIB_RS для последующей компиляции. */
|
||||
#define CALIB_RS
|
||||
/* Определяет защитный символ или переключатель OWEN для последующей компиляции. */
|
||||
#define OWEN
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
/* Условие компиляции BALSAM == 166: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 166
|
||||
/* Задаёт OBOROT = REVERSE; данные OBOROT. */
|
||||
#define OBOROT REVERSE
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
/* Условие компиляции BALSAM == 165: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 165
|
||||
/* Задаёт OBOROT = STRAIGHT; данные OBOROT. */
|
||||
#define OBOROT STRAIGHT
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
/* Условие компиляции BALSAM == 164: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 164
|
||||
/* Задаёт OBOROT = REVERSE; данные OBOROT. */
|
||||
#define OBOROT REVERSE
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
/* Определяет защитный символ или переключатель ONBOARDCALIBER для последующей компиляции. */
|
||||
#define ONBOARDCALIBER
|
||||
/* Задаёт TERMOPAIR = 14; данные TERMOPAIR. */
|
||||
#define TERMOPAIR 14
|
||||
/* Задаёт CURRENTOS = (TERMOPAIR*2); данные CURRENTOS. */
|
||||
#define CURRENTOS (TERMOPAIR*2)
|
||||
|
||||
//-----------------------------------------------
|
||||
/* Задаёт adr_TRN1 = 1; данные adr_TRN1. */
|
||||
#define adr_TRN1 1
|
||||
/* Задаёт adr_TRN2 = 2; данные adr_TRN2. */
|
||||
#define adr_TRN2 2
|
||||
/* Задаёт adr_POW1 = 3; данные adr_POW1. */
|
||||
#define adr_POW1 3
|
||||
/* Задаёт adr_POW2 = 4; данные adr_POW2. */
|
||||
#define adr_POW2 4
|
||||
/* Задаёт adr_LOA1 = 5; данные adr_LOA1. */
|
||||
#define adr_LOA1 5
|
||||
/* Задаёт adr_LOA2 = 6; данные adr_LOA2. */
|
||||
#define adr_LOA2 6
|
||||
/* Задаёт adr_ENG1 = 7; данные adr_ENG1. */
|
||||
#define adr_ENG1 7
|
||||
/* Задаёт adr_PULT = 8; данные adr_PULT. */
|
||||
#define adr_PULT 8
|
||||
/* Задаёт adr_SHKF = 9; данные adr_SHKF. */
|
||||
#define adr_SHKF 9
|
||||
//-------------------
|
||||
/* Задаёт adr_REC1 = 0xff; данные adr_REC1. */
|
||||
#define adr_REC1 0xff
|
||||
/* Задаёт adr_REC2 = 0xff; данные adr_REC2. */
|
||||
#define adr_REC2 0xff
|
||||
/* Задаёт adr_INV1 = 0xff; данные adr_INV1. */
|
||||
#define adr_INV1 0xff
|
||||
/* Задаёт adr_INV2 = 0xff; данные adr_INV2. */
|
||||
#define adr_INV2 0xff
|
||||
/* Задаёт adr_BRK1 = 0xff; данные adr_BRK1. */
|
||||
#define adr_BRK1 0xff
|
||||
/* Задаёт adr_BRK2 = 0xff; данные adr_BRK2. */
|
||||
#define adr_BRK2 0xff
|
||||
/* Задаёт adr_ENG2 = 0xff; данные adr_ENG2. */
|
||||
#define adr_ENG2 0xff
|
||||
/* Задаёт adr_PLT1 = 0xff; данные adr_PLT1. */
|
||||
#define adr_PLT1 0xff
|
||||
/* Задаёт adr_PLT2 = 0xff; данные adr_PLT2. */
|
||||
#define adr_PLT2 0xff
|
||||
/* Задаёт adr_DSTR = 0xff; данные adr_DSTR. */
|
||||
#define adr_DSTR 0xff
|
||||
|
||||
//-----------------------------------------------
|
||||
/* Задаёт dsk_COMM = 1; данные dsk_COMM. */
|
||||
#define dsk_COMM 1
|
||||
/* Задаёт dsk_BKSD = 2; данные dsk_BKSD. */
|
||||
#define dsk_BKSD 2
|
||||
/* Задаёт dsk_BKST = 3; данные dsk_BKST. */
|
||||
#define dsk_BKST 3
|
||||
/* Задаёт dsk_EPLT = 4; данные dsk_EPLT. */
|
||||
#define dsk_EPLT 4
|
||||
/* Задаёт dsk_SHKF = 5; данные dsk_SHKF. */
|
||||
#define dsk_SHKF 5
|
||||
/* Задаёт dsk_LOAD = 6; код платы нагрузки. */
|
||||
#define dsk_LOAD 6
|
||||
//-----------------------------------------------
|
||||
|
||||
//-----------------------------------------------
|
||||
/* Задаёт TPL_TRN = 10; данные TPL_TRN. */
|
||||
#define TPL_TRN 10
|
||||
/* Условие компиляции BALSAM == 167: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if BALSAM == 167
|
||||
/* Задаёт TPL_POW = 7; данные TPL_POW. */
|
||||
#define TPL_POW 7
|
||||
/* Задаёт OWEN_DT = 2; данные OWEN_DT. */
|
||||
#define OWEN_DT 2
|
||||
/* Выбирает альтернативный блок текущего условия компиляции. */
|
||||
#else
|
||||
/* Задаёт TPL_POW = 8; данные TPL_POW. */
|
||||
#define TPL_POW 8
|
||||
/* Задаёт OWEN_DT = 0; данные OWEN_DT. */
|
||||
#define OWEN_DT 0
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
/* Задаёт TPL_ENG = 8; данные TPL_ENG. */
|
||||
#define TPL_ENG 8
|
||||
/* Задаёт TPL_SHK = 15; данные TPL_SHK. */
|
||||
#define TPL_SHK 15
|
||||
//-----------------------------------------------
|
||||
|
||||
/* Задаёт Modbus = ((WORDE *)modbus); данные Modbus. */
|
||||
#define Modbus ((WORDE *)modbus)
|
||||
|
||||
/* Задаёт start_error = 0x00; start ошибка. */
|
||||
#define start_error 0x00
|
||||
/* Задаёт start_data = 0x18; start данные. */
|
||||
#define start_data 0x18
|
||||
/* Задаёт start_hi_edge = 0x30; данные start_hi_edge. */
|
||||
#define start_hi_edge 0x30
|
||||
/* Задаёт start_lo_edge = 0x48; данные start_lo_edge. */
|
||||
#define start_lo_edge 0x48
|
||||
|
||||
/* Задаёт sens_error = ((ERROR *)(modbus+start_error)); sens ошибка. */
|
||||
#define sens_error ((ERROR *)(modbus+start_error))
|
||||
/* Задаёт sens_data = (modbus+start_data); sens данные. */
|
||||
#define sens_data (modbus+start_data)
|
||||
/* Задаёт sens_hi_edge = (modbus+start_hi_edge); данные sens_hi_edge. */
|
||||
#define sens_hi_edge (modbus+start_hi_edge)
|
||||
/* Задаёт sens_lo_edge = (modbus+start_lo_edge); данные sens_lo_edge. */
|
||||
#define sens_lo_edge (modbus+start_lo_edge)
|
||||
|
||||
/* Задаёт InputRep0 = Modbus[0].bit.bitA; вход Rep 0. */
|
||||
#define InputRep0 Modbus[0].bit.bitA
|
||||
/* Задаёт InputRep1 = Modbus[0].bit.bitB; вход Rep 1. */
|
||||
#define InputRep1 Modbus[0].bit.bitB
|
||||
/* Задаёт InputRep2 = Modbus[0].bit.bitC; вход Rep 2. */
|
||||
#define InputRep2 Modbus[0].bit.bitC
|
||||
|
||||
/* Задаёт Inputs = Modbus[0x10]; данные Inputs. */
|
||||
#define Inputs Modbus[0x10]
|
||||
/* Задаёт Buttons = Modbus[0x16]; данные Buttons. */
|
||||
#define Buttons Modbus[0x16]
|
||||
|
||||
/* Задаёт Jumpers = modbus[0x17]; данные Jumpers. */
|
||||
#define Jumpers modbus[0x17]
|
||||
|
||||
/* Задаёт bTestLamp = Buttons.bit.bit0; данные bTestLamp. */
|
||||
#define bTestLamp Buttons.bit.bit0
|
||||
/* Задаёт bSecretBt = Buttons.bit.bit1; данные bSecretBt. */
|
||||
#define bSecretBt Buttons.bit.bit1
|
||||
/* Задаёт bTermoCal = Buttons.bit.bit2; данные bTermoCal. */
|
||||
#define bTermoCal Buttons.bit.bit2
|
||||
|
||||
// Ïðèøëî âðåìà!
|
||||
#define DAC_go modbus[0x50] // íà÷àëî çàðàäà
|
||||
#define DAC_stop modbus[0x51] // êîíåö çàðàäà
|
||||
// Пришло врема!
|
||||
/* Задаёт DAC_go = modbus[0x50]; начальный ток нагрузки в мА, технологический регистр 0x50. */
|
||||
#define DAC_go modbus[0x50] // начало зарада
|
||||
/* Задаёт DAC_stop = modbus[0x51]; конечный ток нагрузки в мА, технологический регистр 0x51. */
|
||||
#define DAC_stop modbus[0x51] // конец зарада
|
||||
|
||||
/* LOAD-only persistent CAN timeout (ms), read-only status and attempts. */
|
||||
/* Задаёт LOAD_CAN_TIMEOUT = modbus[0x52]; сохраняемый тайм-аут свежести напряжения CAN в миллисекундах, регистр 0x52. */
|
||||
#define LOAD_CAN_TIMEOUT modbus[0x52]
|
||||
/* Задаёт LOAD_STATUS = modbus[0x7C]; слово состояния защиты нагрузки для чтения, регистр 0x7C. */
|
||||
#define LOAD_STATUS modbus[0x7C]
|
||||
/* Задаёт LOAD_ATTEMPTS = modbus[0x7D]; число попыток пуска для чтения, регистр 0x7D. */
|
||||
#define LOAD_ATTEMPTS modbus[0x7D]
|
||||
|
||||
#define Cancount (modbus+0x60) // ïàóçà ìåæäó I ïîñûëêàìè CAN
|
||||
#define Bright (modbus+0x62) // àðêîñòü ñèãíàëüíûõ ëàìïî÷åê
|
||||
#define Brightness modbus[0x62] // àðêîñòü ñèãíàëüíûõ ëàìïî÷åê
|
||||
/* Задаёт Cancount = (modbus+0x60); данные Cancount. */
|
||||
#define Cancount (modbus+0x60) // пауза между I посылками CAN
|
||||
/* Задаёт Bright = (modbus+0x62); данные Bright. */
|
||||
#define Bright (modbus+0x62) // аркость сигнальных лампочек
|
||||
/* Задаёт Brightness = modbus[0x62]; данные Brightness. */
|
||||
#define Brightness modbus[0x62] // аркость сигнальных лампочек
|
||||
|
||||
#define Owncount modbus[0x63] // ïàóçà ìåæäó îïðîñàìè OWEN
|
||||
/* Задаёт Owncount = modbus[0x63]; данные Owncount. */
|
||||
#define Owncount modbus[0x63] // пауза между опросами OWEN
|
||||
|
||||
/* Задаёт m_FAST = 0; данные m_FAST. */
|
||||
#define m_FAST 0
|
||||
/* Задаёт m_SLOW = 1; данные m_SLOW. */
|
||||
#define m_SLOW 1
|
||||
|
||||
/* Задаёт Zero_lev = (modbus+0x70); данные Zero_lev. */
|
||||
#define Zero_lev (modbus+0x70)
|
||||
|
||||
/* Задаёт DAC_20 = modbus[0x6E]; ЦАП 20. */
|
||||
#define DAC_20 modbus[0x6E]
|
||||
/* Задаёт DAC_04 = modbus[0x6F]; ЦАП 04. */
|
||||
#define DAC_04 modbus[0x6F]
|
||||
|
||||
/* Задаёт DAC_max = modbus[0x78]; ЦАП max. */
|
||||
#define DAC_max() modbus[0x78] // 751//0x0000 804
|
||||
/* Задаёт DAC_min = modbus[0x79]; ЦАП min. */
|
||||
#define DAC_min() modbus[0x79] // 2162//0x0FFF 2373
|
||||
/* Задаёт DAC_cal = modbus[0x7A]; ЦАП cal. */
|
||||
#define DAC_cal() modbus[0x7A]
|
||||
|
||||
/* Задаёт Caliber = (modbus+0x74); данные Caliber. */
|
||||
#define Caliber (modbus+0x74)
|
||||
|
||||
/* Задаёт K380_1 = Caliber[0]; данные K380_1. */
|
||||
#define K380_1 Caliber[0]
|
||||
/* Задаёт K380_2 = Caliber[1]; данные K380_2. */
|
||||
#define K380_2 Caliber[1]
|
||||
|
||||
/* Задаёт KPOW_1 = Caliber[0]; данные KPOW_1. */
|
||||
#define KPOW_1 Caliber[0]
|
||||
/* Задаёт KPOW_2 = Caliber[1]; данные KPOW_2. */
|
||||
#define KPOW_2 Caliber[1]
|
||||
/* Задаёт KPOW_3 = Caliber[2]; данные KPOW_3. */
|
||||
#define KPOW_3 Caliber[2]
|
||||
/* Задаёт KPOW_4 = Caliber[3]; данные KPOW_4. */
|
||||
#define KPOW_4 Caliber[3]
|
||||
|
||||
/* Задаёт NormaU = Caliber[8]; данные NormaU. */
|
||||
#define NormaU Caliber[8]
|
||||
/* Задаёт DeltaU = Caliber[9]; данные DeltaU. */
|
||||
#define DeltaU Caliber[9]
|
||||
|
||||
/* Задаёт TCaliber = (modbus+0x78); данные TCaliber. */
|
||||
#define TCaliber (modbus+0x78)
|
||||
|
||||
/* Задаёт K300_1 = TCaliber[0]; данные K300_1. */
|
||||
#define K300_1 TCaliber[0]
|
||||
/* Задаёт K300_2 = TCaliber[1]; данные K300_2. */
|
||||
#define K300_2 TCaliber[1]
|
||||
/* Задаёт K400_1 = TCaliber[2]; данные K400_1. */
|
||||
#define K400_1 TCaliber[2]
|
||||
/* Задаёт K400_2 = TCaliber[3]; данные K400_2. */
|
||||
#define K400_2 TCaliber[3]
|
||||
|
||||
/* Задаёт K100_1 = TCaliber[0]; данные K100_1. */
|
||||
#define K100_1 TCaliber[0]
|
||||
/* Задаёт K100_2 = TCaliber[1]; данные K100_2. */
|
||||
#define K100_2 TCaliber[1]
|
||||
/* Задаёт K150_1 = TCaliber[2]; данные K150_1. */
|
||||
#define K150_1 TCaliber[2]
|
||||
/* Задаёт K150_2 = TCaliber[3]; данные K150_2. */
|
||||
#define K150_2 TCaliber[3]
|
||||
|
||||
/* Задаёт K100_D = TCaliber[0]; данные K100_D. */
|
||||
#define K100_D TCaliber[0]
|
||||
/* Задаёт K150_D = TCaliber[1]; данные K150_D. */
|
||||
#define K150_D TCaliber[1]
|
||||
|
||||
/* Задаёт LastMode = Modbus[126].all; последний режим платы, технологический регистр 126. */
|
||||
#define LastMode Modbus[126].all
|
||||
|
||||
/* Задаёт Commands = Modbus[127].all; слово команд, технологический регистр 127. */
|
||||
#define Commands Modbus[127].all
|
||||
/* Задаёт cTestLamp = Modbus[127].bit.bit0; данные cTestLamp. */
|
||||
#define cTestLamp Modbus[127].bit.bit0
|
||||
/* Задаёт cDefParam = Modbus[127].bit.bit1; данные cDefParam. */
|
||||
#define cDefParam Modbus[127].bit.bit1
|
||||
/* Задаёт cSaveParam = Modbus[127].bit.bit2; данные cSaveParam. */
|
||||
#define cSaveParam Modbus[127].bit.bit2
|
||||
/* Задаёт cLoadParam = Modbus[127].bit.bit3; данные cLoadParam. */
|
||||
#define cLoadParam Modbus[127].bit.bit3
|
||||
|
||||
/* Задаёт cTermoCal = Modbus[127].bit.bit4; данные cTermoCal. */
|
||||
#define cTermoCal Modbus[127].bit.bit4
|
||||
/* Задаёт cKoefCalc = Modbus[127].bit.bit5; данные cKoefCalc. */
|
||||
#define cKoefCalc Modbus[127].bit.bit5
|
||||
|
||||
/* Задаёт cUMPreset = Modbus[127].bit.bit6; данные cUMPreset. */
|
||||
#define cUMPreset Modbus[127].bit.bit6
|
||||
/* Задаёт cUMPstart = Modbus[127].bit.bit7; данные cUMPstart. */
|
||||
#define cUMPstart Modbus[127].bit.bit7
|
||||
/* Задаёт cInitDac = Modbus[127].bit.bit8; c Init ЦАП. */
|
||||
#define cInitDac Modbus[127].bit.bit8
|
||||
/* Задаёт cCalibrDac = Modbus[127].bit.bit9; c Calibr ЦАП. */
|
||||
#define cCalibrDac Modbus[127].bit.bit9
|
||||
|
||||
/* Задаёт cSecretBt = Modbus[127].bit.bitA; данные cSecretBt. */
|
||||
#define cSecretBt Modbus[127].bit.bitA
|
||||
/* Задаёт cLiteFire = Modbus[127].bit.bitB; данные cLiteFire. */
|
||||
#define cLiteFire Modbus[127].bit.bitB
|
||||
/* Задаёт cRawMeat = Modbus[127].bit.bitC; данные cRawMeat. */
|
||||
#define cRawMeat Modbus[127].bit.bitC
|
||||
|
||||
/* Задаёт cReset = Modbus[127].bit.bitF; c сброс. */
|
||||
#define cReset Modbus[127].bit.bitF
|
||||
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif //PACKAGE
|
||||
|
||||
|
||||
@@ -1,153 +1,282 @@
|
||||
/* Перемычки режима платы, дискретные входы и выходы. Русские пояснения сохранены в UTF-8. */
|
||||
/* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */
|
||||
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
|
||||
|
||||
/* Объявляет Mode — рабочий адрес или режим платы, выбранный перемычками; Desk — аппаратно определённый тип платы; TermoAD — данные TermoAD; TermoRS — данные TermoRS; TermoSW — данные TermoSW. Память определена в другом модуле. */
|
||||
extern int Mode,Desk,TermoAD,TermoRS,TermoSW,Kurrent,Kalibro,Owen;
|
||||
|
||||
/* Объявляет интерфейс функции setup_leds_line; реализация вызывается через этот прототип. */
|
||||
void setup_leds_line(void);
|
||||
/* Объявляет интерфейс функции unsetup_leds_line; реализация вызывается через этот прототип. */
|
||||
void unsetup_leds_line(void);
|
||||
|
||||
/* Задаёт led1_toggle = GpioDataRegs.GPBTOGGLE.bit.GPIO32=1; данные led1_toggle. */
|
||||
#define led1_toggle() GpioDataRegs.GPBTOGGLE.bit.GPIO32=1
|
||||
/* Задаёт led2_toggle = GpioDataRegs.GPBTOGGLE.bit.GPIO48=1; данные led2_toggle. */
|
||||
#define led2_toggle() GpioDataRegs.GPBTOGGLE.bit.GPIO48=1
|
||||
/* Задаёт led1_off = GpioDataRegs.GPBSET.bit.GPIO32=1; данные led1_off. */
|
||||
#define led1_off() GpioDataRegs.GPBSET.bit.GPIO32=1
|
||||
/* Задаёт led2_off = GpioDataRegs.GPBSET.bit.GPIO48=1; данные led2_off. */
|
||||
#define led2_off() GpioDataRegs.GPBSET.bit.GPIO48=1
|
||||
/* Задаёт led1_on = GpioDataRegs.GPBCLEAR.bit.GPIO32=1; данные led1_on. */
|
||||
#define led1_on() GpioDataRegs.GPBCLEAR.bit.GPIO32=1
|
||||
/* Задаёт led2_on = GpioDataRegs.GPBCLEAR.bit.GPIO48=1; данные led2_on. */
|
||||
#define led2_on() GpioDataRegs.GPBCLEAR.bit.GPIO48=1
|
||||
|
||||
|
||||
// READY ---------------------------------------------------------
|
||||
/* Начинает функцию dat_READY; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void dat_READY(int x)
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO61 значением !x; else; аппаратная линия ввода/вывода GPIO61. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBDAT.bit.GPIO61=!x; else
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO59 значением !x; }; аппаратная линия ввода/вывода GPIO59. */
|
||||
GpioDataRegs.GPBDAT.bit.GPIO59=!x; }
|
||||
/* Начинает функцию set_READY; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void set_READY(void)
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO61 значением 1; else; аппаратная линия ввода/вывода GPIO61. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBCLEAR.bit.GPIO61=1; else
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO59 значением 1; }; аппаратная линия ввода/вывода GPIO59. */
|
||||
GpioDataRegs.GPBCLEAR.bit.GPIO59=1; }
|
||||
/* Начинает функцию clear_READY; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void clear_READY(void)
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO61 значением 1; else; аппаратная линия ввода/вывода GPIO61. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBSET.bit.GPIO61=1; else
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO59 значением 1; }; аппаратная линия ввода/вывода GPIO59. */
|
||||
GpioDataRegs.GPBSET.bit.GPIO59=1; }
|
||||
/* Начинает функцию toggle_READY; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void toggle_READY(void)
|
||||
/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO61 значением 1;else; аппаратная линия ввода/вывода GPIO61. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBTOGGLE.bit.GPIO61=1;else
|
||||
/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO59 значением 1;}; аппаратная линия ввода/вывода GPIO59. */
|
||||
GpioDataRegs.GPBTOGGLE.bit.GPIO59=1;}
|
||||
|
||||
// PULT READY -----------------------------------------------------
|
||||
/* Начинает функцию dat_ONLINE; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void dat_ONLINE(int x)
|
||||
/* Записывает GpioDataRegs.GPADAT.bit.GPIO0 значением !x; }; аппаратная линия ввода/вывода GPIO0. */
|
||||
{ GpioDataRegs.GPADAT.bit.GPIO0=!x; }
|
||||
/* Начинает функцию set_ONLINE; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void set_ONLINE(void)
|
||||
/* Записывает GpioDataRegs.GPASET.bit.GPIO0 значением 1; }; аппаратная линия ввода/вывода GPIO0. */
|
||||
{ GpioDataRegs.GPASET.bit.GPIO0=1; }
|
||||
/* Начинает функцию clear_ONLINE; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void clear_ONLINE(void)
|
||||
/* Записывает GpioDataRegs.GPACLEAR.bit.GPIO0 значением 1; }; аппаратная линия ввода/вывода GPIO0. */
|
||||
{ GpioDataRegs.GPACLEAR.bit.GPIO0=1; }
|
||||
/* Начинает функцию toggle_ONLINE; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void toggle_ONLINE(void)
|
||||
/* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO0 значением 1; }; аппаратная линия ввода/вывода GPIO0. */
|
||||
{ GpioDataRegs.GPATOGGLE.bit.GPIO0=1; }
|
||||
|
||||
// LED OUT 1 -----------------------------------------------------
|
||||
/* Начинает функцию dat_LED_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void dat_LED_OUT_1(int x)
|
||||
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
|
||||
/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_BKST || Desk==dsk_COMM); порядок элементов сохраняется. */
|
||||
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO60 значением !x; else; аппаратная линия ввода/вывода GPIO60. */
|
||||
GpioDataRegs.GPBDAT.bit.GPIO60=!x; else
|
||||
/* Проверяет if(Desk==dsk_LOAD) GpioDataRegs.GPADAT.bit.GPIO7=!x; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_LOAD) GpioDataRegs.GPADAT.bit.GPIO7=!x; else
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO60 значением x; }; аппаратная линия ввода/вывода GPIO60. */
|
||||
GpioDataRegs.GPBDAT.bit.GPIO60=x; }
|
||||
/* Начинает функцию set_LED_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void set_LED_OUT_1(void)
|
||||
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
|
||||
/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_BKST || Desk==dsk_COMM); порядок элементов сохраняется. */
|
||||
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO60 значением 1; else; аппаратная линия ввода/вывода GPIO60. */
|
||||
GpioDataRegs.GPBCLEAR.bit.GPIO60=1; else
|
||||
/* Проверяет if(Desk==dsk_LOAD) GpioDataRegs.GPACLEAR.bit.GPIO7=1; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_LOAD) GpioDataRegs.GPACLEAR.bit.GPIO7=1; else
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO60 значением 1; }; аппаратная линия ввода/вывода GPIO60. */
|
||||
GpioDataRegs.GPBSET.bit.GPIO60=1; }
|
||||
/* Начинает функцию clear_LED_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void clear_LED_OUT_1(void)
|
||||
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
|
||||
/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_BKST || Desk==dsk_COMM); порядок элементов сохраняется. */
|
||||
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO60 значением 1; else; аппаратная линия ввода/вывода GPIO60. */
|
||||
GpioDataRegs.GPBSET.bit.GPIO60=1; else
|
||||
/* Проверяет if(Desk==dsk_LOAD) GpioDataRegs.GPASET.bit.GPIO7=1; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_LOAD) GpioDataRegs.GPASET.bit.GPIO7=1; else
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO60 значением 1; }; аппаратная линия ввода/вывода GPIO60. */
|
||||
GpioDataRegs.GPBCLEAR.bit.GPIO60=1; }
|
||||
/* Начинает функцию toggle_LED_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void toggle_LED_OUT_1(void)
|
||||
/* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO7 значением 1; else; аппаратная линия ввода/вывода GPIO7. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPATOGGLE.bit.GPIO7=1; else
|
||||
/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO60 значением 1;}; аппаратная линия ввода/вывода GPIO60. */
|
||||
GpioDataRegs.GPBTOGGLE.bit.GPIO60=1;}
|
||||
|
||||
// LED OUT 2 -----------------------------------------------------
|
||||
/* Начинает функцию dat_LED_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void dat_LED_OUT_2(int x)
|
||||
/* Записывает GpioDataRegs.GPADAT.bit.GPIO1 значением !x; else; аппаратная линия ввода/вывода GPIO1. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPADAT.bit.GPIO1=!x; else
|
||||
/* Проверяет if(Desk==dsk_BKST) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_BKST) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else
|
||||
/* Проверяет if(Desk==dsk_COMM) GpioDataRegs.GPBDAT.bit.GPIO63=!x; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_COMM) GpioDataRegs.GPBDAT.bit.GPIO63=!x; else
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO63 значением x; }; аппаратная линия ввода/вывода GPIO63. */
|
||||
GpioDataRegs.GPBDAT.bit.GPIO63=x; }
|
||||
/* Начинает функцию set_LED_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void set_LED_OUT_2(void)
|
||||
/* Записывает GpioDataRegs.GPACLEAR.bit.GPIO1 значением 1; else; аппаратная линия ввода/вывода GPIO1. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPACLEAR.bit.GPIO1=1; else
|
||||
/* Проверяет if(Desk==dsk_BKST) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_BKST) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else
|
||||
/* Проверяет if(Desk==dsk_COMM) GpioDataRegs.GPBCLEAR.bit.GPIO63=1; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_COMM) GpioDataRegs.GPBCLEAR.bit.GPIO63=1; else
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO63 значением 1; }; аппаратная линия ввода/вывода GPIO63. */
|
||||
GpioDataRegs.GPBSET.bit.GPIO63=1; }
|
||||
/* Начинает функцию clear_LED_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void clear_LED_OUT_2(void)
|
||||
/* Записывает GpioDataRegs.GPASET.bit.GPIO7 значением 1; else; аппаратная линия ввода/вывода GPIO7. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPASET.bit.GPIO7=1; else
|
||||
/* Проверяет if(Desk==dsk_BKST) GpioDataRegs.GPBSET.bit.GPIO62=1; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_BKST) GpioDataRegs.GPBSET.bit.GPIO62=1; else
|
||||
/* Проверяет if(Desk==dsk_COMM) GpioDataRegs.GPBSET.bit.GPIO63=1; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_COMM) GpioDataRegs.GPBSET.bit.GPIO63=1; else
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO63 значением 1; }; аппаратная линия ввода/вывода GPIO63. */
|
||||
GpioDataRegs.GPBCLEAR.bit.GPIO63=1; }
|
||||
/* Начинает функцию toggle_LED_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void toggle_LED_OUT_2(void)
|
||||
/* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO1 значением 1; else; аппаратная линия ввода/вывода GPIO1. */
|
||||
{ if(Desk==dsk_LOAD) GpioDataRegs.GPATOGGLE.bit.GPIO1=1; else
|
||||
/* Проверяет if(Desk==dsk_BKST) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_BKST) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else
|
||||
/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO63 значением 1;}; аппаратная линия ввода/вывода GPIO63. */
|
||||
GpioDataRegs.GPBTOGGLE.bit.GPIO63=1;}
|
||||
|
||||
// RES OUT 1 -----------------------------------------------------
|
||||
/* Начинает функцию dat_RES_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void dat_RES_OUT_1(int x)
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Проверяет if(Desk==dsk_LOAD или Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Записывает GpioDataRegs.GPADAT.bit.GPIO9 значением !x; else; аппаратная линия ввода/вывода GPIO9. */
|
||||
GpioDataRegs.GPADAT.bit.GPIO9=!x; else
|
||||
/* Проверяет if(Desk==dsk_BKSD) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_BKSD) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO58 значением !x; }; аппаратная линия ввода/вывода GPIO58. */
|
||||
GpioDataRegs.GPBDAT.bit.GPIO58=!x; }
|
||||
/* Начинает функцию set_RES_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void set_RES_OUT_1(void)
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Проверяет if(Desk==dsk_LOAD или Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Записывает GpioDataRegs.GPACLEAR.bit.GPIO9 значением 1; else; аппаратная линия ввода/вывода GPIO9. */
|
||||
GpioDataRegs.GPACLEAR.bit.GPIO9=1; else
|
||||
/* Проверяет if(Desk==dsk_BKSD) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_BKSD) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO58 значением 1; }; аппаратная линия ввода/вывода GPIO58. */
|
||||
GpioDataRegs.GPBCLEAR.bit.GPIO58=1; }
|
||||
/* Начинает функцию clear_RES_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void clear_RES_OUT_1(void)
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Проверяет if(Desk==dsk_LOAD или Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Записывает GpioDataRegs.GPASET.bit.GPIO9 значением 1; else; аппаратная линия ввода/вывода GPIO9. */
|
||||
GpioDataRegs.GPASET.bit.GPIO9=1; else
|
||||
/* Проверяет if(Desk==dsk_BKSD) GpioDataRegs.GPBSET.bit.GPIO62=1; else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_BKSD) GpioDataRegs.GPBSET.bit.GPIO62=1; else
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO58 значением 1; }; аппаратная линия ввода/вывода GPIO58. */
|
||||
GpioDataRegs.GPBSET.bit.GPIO58=1; }
|
||||
/* Начинает функцию toggle_RES_OUT_1; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void toggle_RES_OUT_1(void)
|
||||
/* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */
|
||||
{
|
||||
/* Проверяет if(Desk==dsk_LOAD или Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO9 значением 1; else; аппаратная линия ввода/вывода GPIO9. */
|
||||
GpioDataRegs.GPATOGGLE.bit.GPIO9=1; else
|
||||
/* Проверяет if(Desk==dsk_BKSD) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else; последующий оператор выполняется только при истинном условии. */
|
||||
if(Desk==dsk_BKSD) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else
|
||||
/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO58 значением 1;}; аппаратная линия ввода/вывода GPIO58. */
|
||||
GpioDataRegs.GPBTOGGLE.bit.GPIO58=1;}
|
||||
|
||||
// RES OUT 2 -----------------------------------------------------
|
||||
/* Начинает функцию dat_RES_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void dat_RES_OUT_2(int x)
|
||||
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_LOAD || Desk==dsk_EPLT); порядок элементов сохраняется. */
|
||||
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Записывает GpioDataRegs.GPADAT.bit.GPIO3 значением !x; else; аппаратная линия ввода/вывода GPIO3. */
|
||||
GpioDataRegs.GPADAT.bit.GPIO3=!x; else
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO61 значением x; }; аппаратная линия ввода/вывода GPIO61. */
|
||||
GpioDataRegs.GPBDAT.bit.GPIO61=x; }
|
||||
/* Начинает функцию set_RES_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void set_RES_OUT_2(void)
|
||||
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_LOAD || Desk==dsk_EPLT); порядок элементов сохраняется. */
|
||||
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Записывает GpioDataRegs.GPACLEAR.bit.GPIO3 значением 1; else; аппаратная линия ввода/вывода GPIO3. */
|
||||
GpioDataRegs.GPACLEAR.bit.GPIO3=1; else
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO61 значением 1; }; аппаратная линия ввода/вывода GPIO61. */
|
||||
GpioDataRegs.GPBCLEAR.bit.GPIO61=1; }
|
||||
/* Начинает функцию clear_RES_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void clear_RES_OUT_2(void)
|
||||
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_LOAD || Desk==dsk_EPLT); порядок элементов сохраняется. */
|
||||
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Записывает GpioDataRegs.GPASET.bit.GPIO3 значением 1; else; аппаратная линия ввода/вывода GPIO3. */
|
||||
GpioDataRegs.GPASET.bit.GPIO3=1; else
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO61 значением 1; }; аппаратная линия ввода/вывода GPIO61. */
|
||||
GpioDataRegs.GPBSET.bit.GPIO61=1; }
|
||||
/* Начинает функцию toggle_RES_OUT_2; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void toggle_RES_OUT_2(void)
|
||||
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Продолжает список аргументов, полей или выражение { if(Desk==dsk_LOAD || Desk==dsk_EPLT); порядок элементов сохраняется. */
|
||||
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
|
||||
/* Записывает GpioDataRegs.GPATOGGLE.bit.GPIO3 значением 1; else; аппаратная линия ввода/вывода GPIO3. */
|
||||
GpioDataRegs.GPATOGGLE.bit.GPIO3=1; else
|
||||
/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO61 значением 1;}; аппаратная линия ввода/вывода GPIO61. */
|
||||
GpioDataRegs.GPBTOGGLE.bit.GPIO61=1;}
|
||||
|
||||
// START DPTB -----------------------------------------------------
|
||||
/* Начинает функцию dat_START_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void dat_START_DPTB(int x)
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO62 значением x; }; аппаратная линия ввода/вывода GPIO62. */
|
||||
{ GpioDataRegs.GPBDAT.bit.GPIO62=x; }
|
||||
/* Начинает функцию set_START_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void set_START_DPTB(void)
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO62 значением 1; }; аппаратная линия ввода/вывода GPIO62. */
|
||||
{ GpioDataRegs.GPBSET.bit.GPIO62=1; }
|
||||
/* Начинает функцию clear_START_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void clear_START_DPTB(void)
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO62 значением 1; }; аппаратная линия ввода/вывода GPIO62. */
|
||||
{ GpioDataRegs.GPBCLEAR.bit.GPIO62=1; }
|
||||
/* Начинает функцию toggle_START_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void toggle_START_DPTB(void)
|
||||
/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO62 значением 1;}; аппаратная линия ввода/вывода GPIO62. */
|
||||
{ GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;}
|
||||
|
||||
// STOP DPTB -----------------------------------------------------
|
||||
/* Начинает функцию dat_STOP_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void dat_STOP_DPTB(int x)
|
||||
/* Записывает GpioDataRegs.GPBDAT.bit.GPIO58 значением x; }; аппаратная линия ввода/вывода GPIO58. */
|
||||
{ GpioDataRegs.GPBDAT.bit.GPIO58=x; }
|
||||
/* Начинает функцию set_STOP_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void set_STOP_DPTB(void)
|
||||
/* Записывает GpioDataRegs.GPBSET.bit.GPIO58 значением 1; }; аппаратная линия ввода/вывода GPIO58. */
|
||||
{ GpioDataRegs.GPBSET.bit.GPIO58=1; }
|
||||
/* Начинает функцию clear_STOP_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void clear_STOP_DPTB(void)
|
||||
/* Записывает GpioDataRegs.GPBCLEAR.bit.GPIO58 значением 1; }; аппаратная линия ввода/вывода GPIO58. */
|
||||
{ GpioDataRegs.GPBCLEAR.bit.GPIO58=1; }
|
||||
/* Начинает функцию toggle_STOP_DPTB; назначение модуля — перемычки режима платы, дискретные входы и выходы. */
|
||||
static inline void toggle_STOP_DPTB(void)
|
||||
/* Записывает GpioDataRegs.GPBTOGGLE.bit.GPIO58 значением 1;}; аппаратная линия ввода/вывода GPIO58. */
|
||||
{ GpioDataRegs.GPBTOGGLE.bit.GPIO58=1;}
|
||||
|
||||
/* Продолжает список аргументов, полей или выражение extern LONGE DigErr;; порядок элементов сохраняется. */
|
||||
extern LONGE DigErr;
|
||||
|
||||
/* Объявляет интерфейс функции select_tpl_canal; реализация вызывается через этот прототип. */
|
||||
void select_tpl_canal(int n_tpl);
|
||||
/* Объявляет интерфейс функции select_tpl_255; реализация вызывается через этот прототип. */
|
||||
void select_tpl_255(void);
|
||||
|
||||
/* Определяет адрес и тип платы по аппаратным перемычкам и задаёт рабочий режим. */
|
||||
void get_Mode(void);
|
||||
/* Считывает кнопки, обновляет флаги команд и учитывает текущий тип платы. */
|
||||
void get_Buttons(void);
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
/* Обмен и индикация пульта. Русские пояснения сохранены в UTF-8. */
|
||||
//void what_is(void);
|
||||
|
||||
/* Обслуживает периодический обмен и индикацию пульта вместо измерительной платы. */
|
||||
interrupt void cpu_timer1_isr_PULT(void);
|
||||
|
||||
@@ -1,132 +1,194 @@
|
||||
/* Драйвер SPI EEPROM, адресация, страницы и автомат завершения операций. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: __SPISE2P_H__ ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef __SPISE2P_H__
|
||||
|
||||
#define __SPISE2P_H__
|
||||
/* Определяет защитный символ или переключатель __SPISE2P_H__ для последующей компиляции. */
|
||||
#define __SPISE2P_H__
|
||||
|
||||
/* Physical EEPROM layout shared with the linker and SETGUI. */
|
||||
/* Подключает "eeprom_config.h": выбор профиля физически установленной EEPROM при сборке. */
|
||||
#include "eeprom_config.h"
|
||||
/* Подключает "include/balsam167_eeprom_layout.h": настройки и интерфейс balsam167_eeprom_layout. */
|
||||
#include "include/balsam167_eeprom_layout.h"
|
||||
|
||||
// ¨ìêîñòü ïàìàòè â áàéòàõ
|
||||
// Ёмкость памати в байтах
|
||||
/* Preserve compact 16-bit arithmetic for the original 32-KiB build.
|
||||
* Only the large part needs 32-bit word addresses and transfer lengths. */
|
||||
/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
|
||||
#if EEPROM_M95M02
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef unsigned long SE2P_SIZE;
|
||||
/* Выбирает альтернативный блок текущего условия компиляции. */
|
||||
#else
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef unsigned int SE2P_SIZE;
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
/* Задаёт SEEPROM_LEN = BALSAM167_EEPROM_BYTES; данные SEEPROM_LEN. */
|
||||
#define SEEPROM_LEN BALSAM167_EEPROM_BYTES
|
||||
|
||||
#define NULL 0
|
||||
/* Задаёт NULL = 0; данные NULL. */
|
||||
#define NULL 0
|
||||
|
||||
/* Задаёт SIXTEEN_BIT = 15; SIXTEEN бит. */
|
||||
#define SIXTEEN_BIT 15
|
||||
/* Задаёт EIGHT_BIT = 07; EIGHT бит. */
|
||||
#define EIGHT_BIT 07
|
||||
|
||||
/***************************************************************/
|
||||
/* Configurable Parameter for SPI bus Serial EEPROM */
|
||||
/***************************************************************/
|
||||
#define SPISE2P_DATA_WIDTH SIXTEEN_BIT//EIGHT_BIT
|
||||
#define SPISE2P_ADDR_WIDTH SIXTEEN_BIT
|
||||
#define SPIBAUD_REG_VAL 1//12
|
||||
#define SPICLK_PHASE 1
|
||||
#define SPICLK_POLARITY 0
|
||||
|
||||
/***************************************************************/
|
||||
/* Configurable Parameter for SPI bus Serial EEPROM */
|
||||
/***************************************************************/
|
||||
/* Задаёт SPISE2P_DATA_WIDTH = SIXTEEN_BIT; 2 P данные WIDTH. */
|
||||
#define SPISE2P_DATA_WIDTH SIXTEEN_BIT//EIGHT_BIT
|
||||
/* Задаёт SPISE2P_ADDR_WIDTH = SIXTEEN_BIT; данные SPISE2P_ADDR_WIDTH. */
|
||||
#define SPISE2P_ADDR_WIDTH SIXTEEN_BIT
|
||||
/* Задаёт SPIBAUD_REG_VAL = 1; данные SPIBAUD_REG_VAL. */
|
||||
#define SPIBAUD_REG_VAL 1//12
|
||||
/* Задаёт SPICLK_PHASE = 1; SPICLK фаза. */
|
||||
#define SPICLK_PHASE 1
|
||||
/* Задаёт SPICLK_POLARITY = 0; данные SPICLK_POLARITY. */
|
||||
#define SPICLK_POLARITY 0
|
||||
|
||||
/* Задаёт SPIBAUD_RATE = 100000; данные SPIBAUD_RATE. */
|
||||
#define SPIBAUD_RATE 100000
|
||||
//10000000
|
||||
|
||||
/**************************************************************/
|
||||
/**************************************************************/
|
||||
|
||||
|
||||
/* Serial EEPROM Command words, left justified */
|
||||
/* Задаёт SPISE2P_READ_CMD = 0x0300; 2 P чтение CMD. */
|
||||
#define SPISE2P_READ_CMD 0x0300
|
||||
/* Задаёт SPISE2P_WRITE_CMD = 0x0200; 2 P запись CMD. */
|
||||
#define SPISE2P_WRITE_CMD 0x0200
|
||||
/* Задаёт SPISE2P_WRDI_CMD = 0x0400; данные SPISE2P_WRDI_CMD. */
|
||||
#define SPISE2P_WRDI_CMD 0x0400
|
||||
/* Задаёт SPISE2P_WREN_CMD = 0x0600; данные SPISE2P_WREN_CMD. */
|
||||
#define SPISE2P_WREN_CMD 0x0600
|
||||
/* Задаёт SPISE2P_RDSR_CMD = 0x0500; данные SPISE2P_RDSR_CMD. */
|
||||
#define SPISE2P_RDSR_CMD 0x0500
|
||||
/* Задаёт SPISE2P_WRSR_CMD = 0x0100; данные SPISE2P_WRSR_CMD. */
|
||||
#define SPISE2P_WRSR_CMD 0x0100
|
||||
|
||||
/* Задаёт SPISE2P_RDID_CMD = 0x0A00; данные SPISE2P_RDID_CMD. */
|
||||
#define SPISE2P_RDID_CMD 0x0A00
|
||||
|
||||
|
||||
/* Задаёт SPISE2P_DUMMY_DATA = 0x0000; 2 P DUMMY данные. */
|
||||
#define SPISE2P_DUMMY_DATA 0x0000
|
||||
/* Задаёт SPISE2P_BUSY_MASK = 0x01; 2 P BUSY маска. */
|
||||
#define SPISE2P_BUSY_MASK 0x01
|
||||
|
||||
/* Symbolic constant for SPICCR to transfer 8bit or 16 bit value*/
|
||||
/* Задаёт SPISE2P_TFR16BIT = 0x80|(SPICLK_POLARITY<<6)|SIXTEEN_BIT; 2 P 16 бит. */
|
||||
#define SPISE2P_TFR16BIT 0x80|(SPICLK_POLARITY<<6)|SIXTEEN_BIT
|
||||
/* Задаёт SPISE2P_TFR8BIT = 0x80|(SPICLK_POLARITY<<6)|EIGHT_BIT; 2 P 8 бит. */
|
||||
#define SPISE2P_TFR8BIT 0x80|(SPICLK_POLARITY<<6)|EIGHT_BIT
|
||||
|
||||
|
||||
/* Status valus */
|
||||
#define SPISE2P_WRRQ 1 /* Write Requset */
|
||||
#define SPISE2P_RDRQ 2 /* Read request */
|
||||
#define SPISE2P_WRIP 4 /* Write in progress */
|
||||
#define SPISE2P_RDIP 8 /* Read in progress */
|
||||
#define SPISE2P_WRRQ 1 /* Write Requset */ /* Задаёт SPISE2P_WRRQ = 1; данные SPISE2P_WRRQ. */
|
||||
#define SPISE2P_RDRQ 2 /* Read request */ /* Задаёт SPISE2P_RDRQ = 2; данные SPISE2P_RDRQ. */
|
||||
#define SPISE2P_WRIP 4 /* Write in progress */ /* Задаёт SPISE2P_WRIP = 4; данные SPISE2P_WRIP. */
|
||||
#define SPISE2P_RDIP 8 /* Read in progress */ /* Задаёт SPISE2P_RDIP = 8; данные SPISE2P_RDIP. */
|
||||
|
||||
/* Message declaration */
|
||||
typedef struct {
|
||||
unsigned int *dataPtr; /* Data pointer */
|
||||
unsigned long nrData; /* number of data */
|
||||
unsigned long se2pAddr; /* se2pAddr */
|
||||
}SE2P_DATA;
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef struct {
|
||||
unsigned int *dataPtr; /* Data pointer */ /* Объявляет dataPtr — данные Ptr. Хранит указатель на данные. */
|
||||
unsigned long nrData; /* number of data */ /* Объявляет nrData — nr данные. */
|
||||
unsigned long se2pAddr; /* se2pAddr */ /* Объявляет se2pAddr — данные se2pAddr. */
|
||||
/* Продолжает список аргументов, полей или выражение }SE2P_DATA;; порядок элементов сохраняется. */
|
||||
}SE2P_DATA;
|
||||
|
||||
|
||||
/* Object declaration */
|
||||
typedef struct {
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef struct {
|
||||
/* Main loop publishes the descriptor before setting csr; Timer2 consumes it.
|
||||
* Both accesses are volatile so optimization cannot publish the request first. */
|
||||
/* Продолжает список аргументов, полей или выражение SE2P_DATA * volatile msgPtr;; порядок элементов сохраняется. */
|
||||
SE2P_DATA * volatile msgPtr;
|
||||
volatile unsigned int csr; /* control/status register */
|
||||
void (*init)(void *);
|
||||
volatile unsigned int csr; /* control/status register */ /* Объявляет csr — данные csr. volatile требует фактического чтения или записи при каждом доступе. */
|
||||
/* Вызывает void с аргументами (*init)(void *) в текущей последовательности операций. */
|
||||
void (*init)(void *);
|
||||
/* Вызывает void с аргументами (*tick)(void *) в текущей последовательности операций. */
|
||||
void (*tick)(void *);
|
||||
void (*csset)(void);
|
||||
void (*csclr)(void);
|
||||
}SPISE2P_DRV;
|
||||
|
||||
/* Вызывает void с аргументами (*csset)(void) в текущей последовательности операций. */
|
||||
void (*csset)(void);
|
||||
/* Вызывает void с аргументами (*csclr)(void) в текущей последовательности операций. */
|
||||
void (*csclr)(void);
|
||||
/* Продолжает список аргументов, полей или выражение }SPISE2P_DRV;; порядок элементов сохраняется. */
|
||||
}SPISE2P_DRV;
|
||||
|
||||
/* Задаёт SPISE2P_DRV_DEFAULTS = { NULL,; данные SPISE2P_DRV_DEFAULTS. */
|
||||
#define SPISE2P_DRV_DEFAULTS { NULL,\
|
||||
0,\
|
||||
(void (*)(void *))SPISE2P_DRV_init,\
|
||||
(void (*)(void *))SPISE2P_DRV_tick,\
|
||||
(void (*)(void))SPISE2P_DRV_csset,\
|
||||
(void (*)(void))SPISE2P_DRV_csclr}
|
||||
|
||||
0,/* Элемент постоянной таблицы 0,; порядок значений совпадает с порядком индексов потребителя. */ \
|
||||
(void (*)(void *))SPISE2P_DRV_init,/* Продолжает список аргументов, полей или выражение (void (*)(void *))SPISE2P_DRV_init,; порядок элементов сохраняется. */ \
|
||||
(void (*)(void *))SPISE2P_DRV_tick,/* Продолжает список аргументов, полей или выражение (void (*)(void *))SPISE2P_DRV_tick,; порядок элементов сохраняется. */ \
|
||||
(void (*)(void))SPISE2P_DRV_csset,/* Продолжает список аргументов, полей или выражение (void (*)(void))SPISE2P_DRV_csset,; порядок элементов сохраняется. */ \
|
||||
(void (*)(void))SPISE2P_DRV_csclr} /* Продолжает список аргументов, полей или выражение (void (*)(void))SPISE2P_DRV_csclr}; порядок элементов сохраняется. */
|
||||
|
||||
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
|
||||
typedef SPISE2P_DRV *SPISE2P_DRV_handle;
|
||||
|
||||
void SPISE2P_DRV_init(SPISE2P_DRV * );
|
||||
/* Объявляет интерфейс функции SPISE2P_DRV_init; реализация вызывается через этот прототип. */
|
||||
void SPISE2P_DRV_init(SPISE2P_DRV * );
|
||||
/* Продвигает неблокирующий автомат SPI EEPROM: команда, адрес, данные и ожидание завершения записи. */
|
||||
void SPISE2P_DRV_tick(SPISE2P_DRV *);
|
||||
void SPISE2P_DRV_csset(void);
|
||||
/* Объявляет интерфейс функции SPISE2P_DRV_csset; реализация вызывается через этот прототип. */
|
||||
void SPISE2P_DRV_csset(void);
|
||||
/* Объявляет интерфейс функции SPISE2P_DRV_csclr; реализация вызывается через этот прототип. */
|
||||
void SPISE2P_DRV_csclr(void);
|
||||
|
||||
/* Проверяет завершение текущего задания SPI EEPROM перед постановкой следующего. */
|
||||
unsigned int spiSe2pFree(SPISE2P_DRV *se2p);
|
||||
/* Ставит задание записи в SPI-драйвер с учётом состояния занятости EEPROM. */
|
||||
void spiSe2pWrite(SPISE2P_DRV *se2p, SE2P_DATA *data);
|
||||
/* Ставит задание чтения в SPI-драйвер с указателем буфера, длиной и физическим адресом. */
|
||||
void spiSe2pRead(SPISE2P_DRV *se2p, SE2P_DATA *data);
|
||||
|
||||
/* Условие компиляции (SPISE2P_DATA_WIDTH==SIXTEEN_BIT): выбранный блок включается в текущий вариант прошивки. */
|
||||
#if(SPISE2P_DATA_WIDTH==SIXTEEN_BIT)
|
||||
/* Задаёт PROM_LEN = BALSAM167_EEPROM_WORDS; данные PROM_LEN. */
|
||||
#define PROM_LEN BALSAM167_EEPROM_WORDS
|
||||
/* Задаёт PAGE_LEN = (BALSAM167_EEPROM_PAGE_BYTES / 2); данные PAGE_LEN. */
|
||||
#define PAGE_LEN (BALSAM167_EEPROM_PAGE_BYTES / 2)
|
||||
/* Задаёт WORD_LEN = 2; слово LEN. */
|
||||
#define WORD_LEN 2
|
||||
/* Выбирает альтернативный блок текущего условия компиляции. */
|
||||
#else
|
||||
/* Задаёт PROM_LEN = BALSAM167_EEPROM_BYTES; данные PROM_LEN. */
|
||||
#define PROM_LEN BALSAM167_EEPROM_BYTES
|
||||
/* Задаёт PAGE_LEN = BALSAM167_EEPROM_PAGE_BYTES; данные PAGE_LEN. */
|
||||
#define PAGE_LEN BALSAM167_EEPROM_PAGE_BYTES
|
||||
/* Задаёт WORD_LEN = 1; слово LEN. */
|
||||
#define WORD_LEN 1
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
/* Óñòàíîâêà äðàéâåðà ñåðèàëüíîé EEPROM. **
|
||||
** Èíèöèàëèçàöèà SPI è ïðî÷. Òàêæå íàñòðîéêà òàéìåðà. **
|
||||
** Äðàéâåð ðàáîòàåò íà ïðåðûâàíèàõ îò òàéìåðà 2! */
|
||||
/* Установка драйвера сериальной EEPROM. **
|
||||
** Инициализациа SPI и проч. Также настройка таймера. **
|
||||
** Драйвер работает на прерываниах от таймера 2! */
|
||||
/* Объявляет интерфейс функции InitSeeprom; реализация вызывается через этот прототип. */
|
||||
void InitSeeprom(void);
|
||||
|
||||
/* Çàïèñü áëîêà â SEEPROM. Ïàðàìåòðû òàêîâû: **
|
||||
** adres - àäðåñ â åïðîìêå, êóäà ïèñàòü. **
|
||||
** adres = 0..0x8000, åñëè äëèíà ñëîâà 8 áèò **
|
||||
** adres = 0..0x4000, åñëè äëèíà ñëîâà 16 áèò **
|
||||
** buf - óêàçàòåëü íà ïàìàòü, îòêóäà ïèñàòü. **
|
||||
** size - äëèíà áëîêà â áàéòàõ. Ïî-ëþáîìó â áàéòàõ! */
|
||||
/* Запись блока в SEEPROM. Параметры таковы: **
|
||||
** adres - адрес в епромке, куда писать. **
|
||||
** adres = 0..0x8000, если длина слова 8 бит **
|
||||
** adres = 0..0x4000, если длина слова 16 бит **
|
||||
** buf - указатель на памать, откуда писать. **
|
||||
** size - длина блока в байтах. По-любому в байтах! */
|
||||
/* Пишет EEPROM с разделением по физическим страницам; область параметров не пересекает образ прошивки. */
|
||||
void Seeprom_write(SE2P_SIZE adres, unsigned int buf[], SE2P_SIZE size);
|
||||
|
||||
/* ×òåíèå áëîêà èç SEEPROM. Ïàðàìåòðû òàêîâû: **
|
||||
** adres - àäðåñ â åïðîìêå, îòêóäà ÷èòàòü. **
|
||||
** adres = 0..0x8000, åñëè äëèíà ñëîâà 8 áèò **
|
||||
** adres = 0..0x4000, åñëè äëèíà ñëîâà 16 áèò **
|
||||
** buf - óêàçàòåëü íà ïàìàòü, êóäà ÷èòàòü. **
|
||||
** size - äëèíà áëîêà â áàéòàõ. Ïî-ëþáîìó â áàéòàõ! */
|
||||
/* Чтение блока из SEEPROM. Параметры таковы: **
|
||||
** adres - адрес в епромке, откуда читать. **
|
||||
** adres = 0..0x8000, если длина слова 8 бит **
|
||||
** adres = 0..0x4000, если длина слова 16 бит **
|
||||
** buf - указатель на памать, куда читать. **
|
||||
** size - длина блока в байтах. По-любому в байтах! */
|
||||
/* Читает EEPROM порциями; адрес задаётся словами C28x, размер переводится в число передаваемых слов. */
|
||||
void Seeprom_read(SE2P_SIZE adres, unsigned int buf[], SE2P_SIZE size);
|
||||
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
/* Настройка внешней памяти и служебные задержки. Русские пояснения сохранены в UTF-8. */
|
||||
/* Начинает условие: TOOLS_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef TOOLS_H
|
||||
/* Определяет защитный символ или переключатель TOOLS_H для последующей компиляции. */
|
||||
#define TOOLS_H
|
||||
|
||||
/* Настраивает временные параметры внешней шины XINTF Zone7 для RAM регистратора. */
|
||||
void init_zone7(void);
|
||||
/* Формирует задержку в микросекундах через калиброванную функцию DSP28x_usDelay. */
|
||||
void pause_us(unsigned long t);
|
||||
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif //TOOLS_H
|
||||
|
||||
@@ -1,9 +1,18 @@
|
||||
/* Настройки и интерфейс ump_can_protocol. Русские пояснения сохранены в UTF-8. */
|
||||
/* Shared logger protocol; application owns IRQ protection and CAN scheduling. */
|
||||
/* Начинает условие: UMP_CAN_PROTOCOL_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
||||
#ifndef UMP_CAN_PROTOCOL_H
|
||||
/* Определяет защитный символ или переключатель UMP_CAN_PROTOCOL_H для последующей компиляции. */
|
||||
#define UMP_CAN_PROTOCOL_H
|
||||
/* Подключает "log_to_mem.h": двухбанковый регистратор событий нагрузки во внешней RAM. */
|
||||
#include "log_to_mem.h"
|
||||
/* Подключает "ump_tms28335.h": настройки и интерфейс ump_tms28335. */
|
||||
#include "ump_tms28335.h"
|
||||
/* Задаёт UMP_CAN_MARKER = UMP_MARKER; UMP CAN MARKER. */
|
||||
#define UMP_CAN_MARKER UMP_MARKER
|
||||
/* Задаёт UMP_CAN_MAX_WORDS = UMP_MAX_WORDS; UMP CAN MAX слова. */
|
||||
#define UMP_CAN_MAX_WORDS UMP_MAX_WORDS
|
||||
/* Задаёт ump_can_prepare = ump_tms28335_prepare; ump CAN prepare. */
|
||||
#define ump_can_prepare ump_tms28335_prepare
|
||||
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user