/* Перемычки режима платы, дискретные входы и выходы. Русские пояснения сохранены в UTF-8. */ /* Подключает "DSP2833x_Device.h": поставляемое TI описание Device для семейства C2833x. */ #include "DSP2833x_Device.h" // DSP281x Headerfile Include File /* Подключает "filter_bat2.h": накопительный фильтр измерительных каналов. */ #include "filter_bat2.h" /* Подключает "measure.h": обработка датчиков, вычисление величин и миллисекундный такт системы. */ #include "measure.h" /* Подключает "RS485.h": приём и передача SCI-A/SCI-B, упаковка команд и FIFO первого порта. */ #include "RS485.h" /* Подключает "message.h": обработка Modbus, заводские параметры и сохранение настроек. */ #include "message.h" /* Подключает "package.h": адреса устройств, типы плат и псевдонимы технологических регистров. */ #include "package.h" /* Подключает "pulto.h": обмен и индикация пульта. */ #include "pulto.h" /* Подключает "peripher.h": перемычки режима платы, дискретные входы и выходы. */ #include "peripher.h" /* Подключает "GPIO_table.h": таблица назначения GPIO и макросы аппаратных сигналов платы. */ #include "GPIO_table.h" /* Объявляет Mode — рабочий адрес или режим платы, выбранный перемычками; Desk — аппаратно определённый тип платы; TermoAD — данные TermoAD; TermoRS — данные TermoRS; TermoSW — данные TermoSW. Начальное значение задаётся справа от знака равенства. */ int Mode,Desk,TermoAD=0,TermoRS=0,TermoSW=0,Kurrent=0,Kalibro=0,Owen=0; /* Объявляет INcount0 — данные INcount0; INcount1 — данные INcount1. Начальное значение задаётся справа от знака равенства. */ unsigned int INcount0=0,INcount1=0; /* Продолжает список аргументов, полей или выражение LONGE DigErr;; порядок элементов сохраняется. */ LONGE DigErr; /* Объявляет MUX_GPIO32 — выбор функции вывода 32; MUX_GPIO48 — выбор функции вывода 48; DIR_GPIO32 — данные DIR_GPIO32; DIR_GPIO48 — данные DIR_GPIO48. */ int MUX_GPIO32,MUX_GPIO48,DIR_GPIO32,DIR_GPIO48; /* Начинает функцию setup_leds_line; назначение модуля — перемычки режима платы, дискретные входы и выходы. */ void setup_leds_line() /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Записывает MUX_GPIO32 значением GpioCtrlRegs.GPBMUX1.bit.GPIO32; выбор функции вывода 32. */ MUX_GPIO32 = GpioCtrlRegs.GPBMUX1.bit.GPIO32; /* Записывает MUX_GPIO48 значением GpioCtrlRegs.GPBMUX2.bit.GPIO48; выбор функции вывода 48. */ MUX_GPIO48 = GpioCtrlRegs.GPBMUX2.bit.GPIO48; /* Записывает DIR_GPIO32 значением GpioCtrlRegs.GPBDIR.bit.GPIO32; данные DIR_GPIO32. */ DIR_GPIO32 = GpioCtrlRegs.GPBDIR.bit.GPIO32; /* Записывает DIR_GPIO48 значением GpioCtrlRegs.GPBDIR.bit.GPIO48; данные DIR_GPIO48. */ DIR_GPIO48 = GpioCtrlRegs.GPBDIR.bit.GPIO48; /* Разрешение записи в защищённые регистры периферии. */ EALLOW; /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO32 значением 0; аппаратная линия ввода/вывода GPIO32. */ GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO48 значением 0; аппаратная линия ввода/вывода GPIO48. */ GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 0; /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO32 значением 1; аппаратная линия ввода/вывода GPIO32. */ GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO48 значением 1; аппаратная линия ввода/вывода GPIO48. */ GpioCtrlRegs.GPBDIR.bit.GPIO48 = 1; /* Закрытие доступа к защищённым регистрам периферии. */ EDIS; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Начинает функцию unsetup_leds_line; назначение модуля — перемычки режима платы, дискретные входы и выходы. */ void unsetup_leds_line() /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Разрешение записи в защищённые регистры периферии. */ EALLOW; /* Записывает GpioCtrlRegs.GPBMUX1.bit.GPIO32 значением MUX_GPIO32; аппаратная линия ввода/вывода GPIO32. */ GpioCtrlRegs.GPBMUX1.bit.GPIO32 = MUX_GPIO32; /* Записывает GpioCtrlRegs.GPBMUX2.bit.GPIO48 значением MUX_GPIO48; аппаратная линия ввода/вывода GPIO48. */ GpioCtrlRegs.GPBMUX2.bit.GPIO48 = MUX_GPIO48; /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO32 значением DIR_GPIO32; аппаратная линия ввода/вывода GPIO32. */ GpioCtrlRegs.GPBDIR.bit.GPIO32 = DIR_GPIO32; /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO48 значением DIR_GPIO48; аппаратная линия ввода/вывода GPIO48. */ GpioCtrlRegs.GPBDIR.bit.GPIO48 = DIR_GPIO48; /* Закрытие доступа к защищённым регистрам периферии. */ EDIS; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Определяет адрес и тип платы по аппаратным перемычкам и задаёт рабочий режим. */ void get_Mode() /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Разрешение записи в защищённые регистры периферии. */ EALLOW; /* Оставляет биты маски GpioCtrlRegs.GPAMUX1.all значением 0xFF000000; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPAMUX1.all &= 0xFF000000; // 00—11 /* Оставляет биты маски GpioCtrlRegs.GPAMUX2.all значением 0xFF00003F; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPAMUX2.all &= 0xFF00003F; // 19—27 /* Оставляет биты маски GpioCtrlRegs.GPBMUX1.all значением 0xFFFFFFC0; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPBMUX1.all &= 0xFFFFFFC0; // 32—34 /* Оставляет биты маски GpioCtrlRegs.GPBMUX2.all значением 0x000FF000; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPBMUX2.all &= 0x000FF000; // 48—53, 58—63 /* Записывает GpioCtrlRegs.GPADIR.bit.GPIO20 значением 0; аппаратная линия ввода/вывода GPIO20. */ GpioCtrlRegs.GPADIR.bit.GPIO20 = 0; /* Записывает GpioCtrlRegs.GPADIR.bit.GPIO21 значением 0; аппаратная линия ввода/вывода GPIO21. */ GpioCtrlRegs.GPADIR.bit.GPIO21 = 0; /* Записывает GpioCtrlRegs.GPADIR.bit.GPIO22 значением 0; аппаратная линия ввода/вывода GPIO22. */ GpioCtrlRegs.GPADIR.bit.GPIO22 = 0; /* Записывает GpioCtrlRegs.GPBDIR.bit.GPIO51 значением 0; аппаратная линия ввода/вывода GPIO51. */ GpioCtrlRegs.GPBDIR.bit.GPIO51 = 0; /* Закрытие доступа к защищённым регистрам периферии. */ EDIS; /* Записывает Mode значением 1; рабочий адрес или режим платы, выбранный перемычками. */ Mode = 1; /* Увеличивает Mode значением 1 * !GpioDataRegs.GPADAT.bit.GPIO21; рабочий адрес или режим платы, выбранный перемычками. */ Mode += 1 * !GpioDataRegs.GPADAT.bit.GPIO21; /* Увеличивает Mode значением 2 * !GpioDataRegs.GPADAT.bit.GPIO20; рабочий адрес или режим платы, выбранный перемычками. */ Mode += 2 * !GpioDataRegs.GPADAT.bit.GPIO20; /* Увеличивает Mode значением 4 * !GpioDataRegs.GPADAT.bit.GPIO22; рабочий адрес или режим платы, выбранный перемычками. */ Mode += 4 * !GpioDataRegs.GPADAT.bit.GPIO22; /* Увеличивает Mode значением 8 * !GpioDataRegs.GPBDAT.bit.GPIO51; рабочий адрес или режим платы, выбранный перемычками. */ Mode += 8 * !GpioDataRegs.GPBDAT.bit.GPIO51; /* Проверяет if( (Mode==adr_POW1) или (Mode==adr_POW2)) Desk = dsk_COMM; последующий оператор выполняется только при истинном условии. */ if( (Mode==adr_POW1)||(Mode==adr_POW2)) Desk = dsk_COMM; /* Проверяет if( (Mode==adr_TRN1) или (Mode==adr_TRN2)) Desk = dsk_BKST; последующий оператор выполняется только при истинном условии. */ if( (Mode==adr_TRN1)||(Mode==adr_TRN2)) Desk = dsk_BKST; /* Проверяет if( (Mode==adr_LOA1) или (Mode==adr_LOA2)) Desk = dsk_LOAD; последующий оператор выполняется только при истинном условии. */ if( (Mode==adr_LOA1)||(Mode==adr_LOA2)) Desk = dsk_LOAD; /* Проверяет if (Mode==adr_ENG1) Desk = dsk_BKSD; последующий оператор выполняется только при истинном условии. */ if (Mode==adr_ENG1) Desk = dsk_BKSD; /* Проверяет if (Mode==adr_PULT) Desk = dsk_EPLT; последующий оператор выполняется только при истинном условии. */ if (Mode==adr_PULT) Desk = dsk_EPLT; /* Проверяет if (Mode==adr_SHKF) Desk = dsk_SHKF; последующий оператор выполняется только при истинном условии. */ if (Mode==adr_SHKF) Desk = dsk_SHKF; /* Проверяет if( (Desk==dsk_COMM) или (Desk==dsk_LOAD)) Kurrent = 1; последующий оператор выполняется только при истинном условии. */ if( (Desk==dsk_COMM)||(Desk==dsk_LOAD)) Kurrent = 1; /* Проверяет if( (Desk==dsk_BKSD) или (Desk==dsk_BKST)) TermoRS = 1; последующий оператор выполняется только при истинном условии. */ if( (Desk==dsk_BKSD)||(Desk==dsk_BKST)) TermoRS = 1; /* Проверяет if( (Desk==dsk_COMM) или (Desk==dsk_SHKF)) TermoAD = 1; последующий оператор выполняется только при истинном условии. */ if( (Desk==dsk_COMM)||(Desk==dsk_SHKF)) TermoAD = 1; /* Проверяет if( (Desk==dsk_COMM) или (Desk==dsk_BKST)) TermoSW = 2; последующий оператор выполняется только при истинном условии. */ if( (Desk==dsk_COMM)||(Desk==dsk_BKST)) TermoSW = 2; /* Проверяет if (Desk==dsk_BKSD) TermoSW = 1; последующий оператор выполняется только при истинном условии. */ if (Desk==dsk_BKSD) TermoSW = 1; /* Включает следующий блок только при определённом символе CALIB_RS. */ #ifdef CALIB_RS /* Проверяет if (Desk!=dsk_EPLT) Kalibro = 1; последующий оператор выполняется только при истинном условии. */ if (Desk!=dsk_EPLT) Kalibro = 1; /* Выбирает альтернативный блок текущего условия компиляции. */ #else /* Проверяет if( (Desk==dsk_COMM) или (Desk==dsk_SHKF) или; последующий оператор выполняется только при истинном условии. */ if( (Desk==dsk_COMM)||(Desk==dsk_SHKF)|| /* Записывает Kalibro значением 1; данные Kalibro. */ (Desk==dsk_LOAD) ) Kalibro = 1; /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* Включает следующий блок только при определённом символе OWEN. */ #ifdef OWEN /* Проверяет if (Desk==dsk_COMM) Owen = OWEN_DT; последующий оператор выполняется только при истинном условии. */ if (Desk==dsk_COMM) Owen = OWEN_DT; /* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */ #endif /* Сбрасывает аппаратный сигнал через clear_LED_OUT_1();. */ clear_LED_OUT_1(); /* Сбрасывает аппаратный сигнал через clear_LED_OUT_2();. */ clear_LED_OUT_2(); /* Сбрасывает аппаратный сигнал через clear_RES_OUT_1();. */ clear_RES_OUT_1(); /* Сбрасывает аппаратный сигнал через clear_RES_OUT_2();. */ clear_RES_OUT_2(); /* Разрешение записи в защищённые регистры периферии. */ EALLOW; /* Вызывает switch с аргументами (Desk) в текущей последовательности операций. */ switch(Desk) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Ветвь выбора для dsk_COMM; выполняется при совпадении селектора switch. */ case dsk_COMM: GpioCtrlRegs.GPADIR.all = COMM_GPADIR; /* Записывает GpioCtrlRegs.GPBDIR.all значением COMM_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPBDIR.all = COMM_GPBDIR; break; /* Ветвь выбора для dsk_BKSD; выполняется при совпадении селектора switch. */ case dsk_BKSD: GpioCtrlRegs.GPADIR.all = BKSD_GPADIR; /* Записывает GpioCtrlRegs.GPBDIR.all значением BKSD_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPBDIR.all = BKSD_GPBDIR; break; /* Ветвь выбора для dsk_BKST; выполняется при совпадении селектора switch. */ case dsk_BKST: GpioCtrlRegs.GPADIR.all = BKST_GPADIR; /* Записывает GpioCtrlRegs.GPBDIR.all значением BKST_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPBDIR.all = BKST_GPBDIR; break; /* Ветвь выбора для dsk_EPLT; выполняется при совпадении селектора switch. */ case dsk_EPLT: GpioCtrlRegs.GPADIR.all = PLT2_GPADIR; /* Записывает GpioCtrlRegs.GPBDIR.all значением PLT2_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPBDIR.all = PLT2_GPBDIR; break; /* Ветвь выбора для dsk_LOAD; выполняется при совпадении селектора switch. */ case dsk_LOAD: GpioCtrlRegs.GPADIR.all = LOAD_GPADIR; /* Записывает GpioCtrlRegs.GPBDIR.all значением LOAD_GPBDIR; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPBDIR.all = LOAD_GPBDIR; /* Записывает GpioDataRegs.GPASET.bit.GPIO3 значением 1; break; аппаратная линия ввода/вывода GPIO3. */ GpioDataRegs.GPASET.bit.GPIO3=1; break; /* Ветвь выбора для dsk_SHKF; выполняется при совпадении селектора switch. */ case dsk_SHKF: GpioCtrlRegs.GPADIR.all = SHKF_GPADIR; /* Записывает GpioCtrlRegs.GPBDIR.all значением SHKF_GPBDIR; break; представление регистра целым словом без разбиения на битовые поля. */ GpioCtrlRegs.GPBDIR.all = SHKF_GPBDIR; break; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Закрытие доступа к защищённым регистрам периферии. */ EDIS; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Начинает функцию select_tpl_255; назначение модуля — перемычки режима платы, дискретные входы и выходы. */ void select_tpl_255(void) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Проверяет if(Desk==dsk_BKSD); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_BKSD) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Задаёт BKSD_A_tpl_255 = ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3)); данные BKSD_A_tpl_255. */ #define BKSD_A_tpl_255 ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3)) /* Записывает GpioDataRegs.GPACLEAR.all значением BKSD_A_tpl_255; представление регистра целым словом без разбиения на битовые поля. */ GpioDataRegs.GPACLEAR.all = BKSD_A_tpl_255; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Проверяет if(Desk==dsk_COMM); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_COMM) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Задаёт COMM_A_tpl_255 = ((1L<<27) + (1L<<24) + (1L<<25)); данные COMM_A_tpl_255. */ #define COMM_A_tpl_255 ((1L<<27) + (1L<<24) + (1L<<25)) /* Задаёт COMM_B_tpl_255 = ((1L<<(49-32)) + (1L<<(52-32))); данные COMM_B_tpl_255. */ #define COMM_B_tpl_255 ((1L<<(49-32)) + (1L<<(52-32))) /* Записывает GpioDataRegs.GPASET.all значением COMM_A_tpl_255; представление регистра целым словом без разбиения на битовые поля. */ GpioDataRegs.GPASET.all = COMM_A_tpl_255; /* Записывает GpioDataRegs.GPBSET.all значением COMM_B_tpl_255; представление регистра целым словом без разбиения на битовые поля. */ GpioDataRegs.GPBSET.all = COMM_B_tpl_255; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Проверяет if(Desk==dsk_BKST); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_BKST) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Задаёт BKST_A_tpl_zero = ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3) + (1L<<1) + (1L<<8) + (1L<<6) + (1L<<0) + (1L<<27) + (1L<<24)); данные BKST_A_tpl_zero. */ #define BKST_A_tpl_zero ((1L<<11) + (1L<<9) + (1L<<7) + (1L<<3) + (1L<<1) + (1L<<8) + (1L<<6) + (1L<<0) + (1L<<27) + (1L<<24)) /* Задаёт BKST_B_tpl_zero = ((1L<<(53-32)) + (1L<<(50-32))); данные BKST_B_tpl_zero. */ #define BKST_B_tpl_zero ((1L<<(53-32)) + (1L<<(50-32))) /* Записывает GpioDataRegs.GPASET.all значением BKST_A_tpl_zero; представление регистра целым словом без разбиения на битовые поля. */ GpioDataRegs.GPASET.all = BKST_A_tpl_zero; /* Записывает GpioDataRegs.GPBSET.all значением BKST_B_tpl_zero; представление регистра целым словом без разбиения на битовые поля. */ GpioDataRegs.GPBSET.all = BKST_B_tpl_zero; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } } /* Начинает функцию select_tpl_canal; назначение модуля — перемычки режима платы, дискретные входы и выходы. */ void select_tpl_canal(int n_tpl) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Объявляет GPIO_A_tpl_set — аппаратная линия ввода/вывода GPIO_A_tpl_set. Начальное значение задаётся справа от знака равенства. */ unsigned long GPIO_A_tpl_set = 0; /* Объявляет GPIO_B_tpl_set — аппаратная линия ввода/вывода GPIO_B_tpl_set. Начальное значение задаётся справа от знака равенства. */ unsigned long GPIO_B_tpl_set = 0; /* Проверяет if(Desk==dsk_BKSD); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_BKSD) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Проверяет if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<11); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<11); /* Проверяет if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<9); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<9); /* Проверяет if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<7); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<7); /* Проверяет if(!(n_tpl&0x08)) GPIO_A_tpl_set|=(1L<<3); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x08)) GPIO_A_tpl_set|=(1L<<3); /* Записывает GpioDataRegs.GPASET.all значением GPIO_A_tpl_set; представление регистра целым словом без разбиения на битовые поля. */ GpioDataRegs.GPASET.all = GPIO_A_tpl_set; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Проверяет if(Desk==dsk_BKST); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_BKST) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Проверяет if(n_tpl==0) GpioDataRegs.GPACLEAR.bit.GPIO11=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==0) GpioDataRegs.GPACLEAR.bit.GPIO11=1; /* Проверяет if(n_tpl==1) GpioDataRegs.GPACLEAR.bit.GPIO9=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==1) GpioDataRegs.GPACLEAR.bit.GPIO9=1; /* Проверяет if(n_tpl==2) GpioDataRegs.GPACLEAR.bit.GPIO7=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==2) GpioDataRegs.GPACLEAR.bit.GPIO7=1; /* Проверяет if(n_tpl==3) GpioDataRegs.GPACLEAR.bit.GPIO3=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==3) GpioDataRegs.GPACLEAR.bit.GPIO3=1; /* Проверяет if(n_tpl==4) GpioDataRegs.GPACLEAR.bit.GPIO1=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==4) GpioDataRegs.GPACLEAR.bit.GPIO1=1; /* Проверяет if(n_tpl==5) GpioDataRegs.GPACLEAR.bit.GPIO8=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==5) GpioDataRegs.GPACLEAR.bit.GPIO8=1; /* Проверяет if(n_tpl==6) GpioDataRegs.GPACLEAR.bit.GPIO6=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==6) GpioDataRegs.GPACLEAR.bit.GPIO6=1; /* Проверяет if(n_tpl==7) GpioDataRegs.GPACLEAR.bit.GPIO0=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==7) GpioDataRegs.GPACLEAR.bit.GPIO0=1; /* Проверяет if(n_tpl==8) GpioDataRegs.GPACLEAR.bit.GPIO27=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==8) GpioDataRegs.GPACLEAR.bit.GPIO27=1; /* Проверяет if(n_tpl==9) GpioDataRegs.GPACLEAR.bit.GPIO24=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==9) GpioDataRegs.GPACLEAR.bit.GPIO24=1; /* Проверяет if(n_tpl==10) GpioDataRegs.GPBCLEAR.bit.GPIO53=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==10) GpioDataRegs.GPBCLEAR.bit.GPIO53=1; /* Проверяет if(n_tpl==11) GpioDataRegs.GPBCLEAR.bit.GPIO50=1; последующий оператор выполняется только при истинном условии. */ if(n_tpl==11) GpioDataRegs.GPBCLEAR.bit.GPIO50=1; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Проверяет if(Desk==dsk_COMM); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_COMM) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Проверяет if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<27); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x01)) GPIO_A_tpl_set|=(1L<<27); /* Проверяет if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<24); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x02)) GPIO_A_tpl_set|=(1L<<24); /* Проверяет if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<25); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x04)) GPIO_A_tpl_set|=(1L<<25); /* Проверяет if(!(n_tpl&0x08)) GPIO_B_tpl_set|=(1L<<(49-32)); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x08)) GPIO_B_tpl_set|=(1L<<(49-32)); /* Проверяет if(!(n_tpl&0x10)) GPIO_B_tpl_set|=(1L<<(52-32)); последующий оператор выполняется только при истинном условии. */ if(!(n_tpl&0x10)) GPIO_B_tpl_set|=(1L<<(52-32)); /* Записывает GpioDataRegs.GPACLEAR.all значением GPIO_A_tpl_set; представление регистра целым словом без разбиения на битовые поля. */ GpioDataRegs.GPACLEAR.all = GPIO_A_tpl_set; /* Записывает GpioDataRegs.GPBCLEAR.all значением GPIO_B_tpl_set; представление регистра целым словом без разбиения на битовые поля. */ GpioDataRegs.GPBCLEAR.all = GPIO_B_tpl_set; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } } /* Считывает кнопки, обновляет флаги команд и учитывает текущий тип платы. */ void get_Buttons() /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Объявляет butt — данные butt. Начальное значение задаётся справа от знака равенства. */ unsigned long butt =0; /* Объявляет fluf — данные fluf. Начальное значение задаётся справа от знака равенства. */ unsigned long fluf =0; /* Проверяет if(Desk==dsk_BKSD); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_BKSD) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Записывает bTestLamp значением !GpioDataRegs.GPBDAT.bit.GPIO50; данные bTestLamp. */ bTestLamp = !GpioDataRegs.GPBDAT.bit.GPIO50; /* Записывает bSecretBt значением !GpioDataRegs.GPBDAT.bit.GPIO49; данные bSecretBt. */ bSecretBt = !GpioDataRegs.GPBDAT.bit.GPIO49; /* Записывает InputRep0 значением bTestLamp; вход Rep 0. */ InputRep0 = bTestLamp; /* Записывает InputRep1 значением bSecretBt; вход Rep 1. */ InputRep1 = bSecretBt; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO0) butt +=0x0001; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO0) butt +=0x0001; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO2) butt +=0x0002; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO2) butt +=0x0002; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO10)butt +=0x0004; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO10)butt +=0x0004; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO4) butt +=0x0008; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO4) butt +=0x0008; /* Записывает Inputs.all значением butt; представление регистра целым словом без разбиения на битовые поля. */ Inputs.all = butt; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Ничего такого в действительности нет if(Desk==dsk_BKST) { bSecretBt = !GpioDataRegs.GPBDAT.bit.GPIO63; InputRep1 = bSecretBt; return; } */ /* Проверяет if(Desk==dsk_COMM); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_COMM) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Записывает bSecretBt значением !GpioDataRegs.GPBDAT.bit.GPIO53; данные bSecretBt. */ bSecretBt = !GpioDataRegs.GPBDAT.bit.GPIO53; /* Записывает bTermoCal значением er_anal(!GpioDataRegs.GPBDAT.bit.GPIO50, &INcount0, 0xFFFF, 0); данные bTermoCal. */ bTermoCal = er_anal(!GpioDataRegs.GPBDAT.bit.GPIO50, &INcount0, 0xFFFF, 0); /* Записывает InputRep1 значением bSecretBt; вход Rep 1. */ InputRep1 = bSecretBt; /* Записывает InputRep2 значением bTermoCal; вход Rep 2. */ InputRep2 = bTermoCal; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Проверяет if(Desk==dsk_EPLT); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_EPLT) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Сохраняет предыдущее состояние TESTLAMP, пока накопитель INcount0 не достигнет одного из порогов; 1000 — число опросов главного цикла, а не миллисекунды. Краткий провал GPIO26 больше не переключает передачу с тестовых масок на рабочие. */ bTestLamp = er_anal(GpioDataRegs.GPADAT.bit.GPIO26, &INcount0, 1000, bTestLamp); /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO27) butt +=0x0001; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO27) butt +=0x0001; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO24) butt +=0x0002; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO24) butt +=0x0002; /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO53) butt +=0x0004; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPBDAT.bit.GPIO53) butt +=0x0004; /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO50) butt +=0x0008; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPBDAT.bit.GPIO50) butt +=0x0008; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO26) butt +=0x0010; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO26) butt +=0x0010; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO23) butt +=0x0020; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO23) butt +=0x0020; /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO52) butt +=0x0040; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPBDAT.bit.GPIO52) butt +=0x0040; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO4 ) butt +=0x0080; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO4 ) butt +=0x0080; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO25) butt +=0x0100; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO25) butt +=0x0100; /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO49) butt +=0x0200; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPBDAT.bit.GPIO49) butt +=0x0200; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO11) butt +=0x0400; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO11) butt +=0x0400; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO5 ) butt +=0x0800; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO5 ) butt +=0x0800; /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO48) butt +=0x1000; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPBDAT.bit.GPIO48) butt +=0x1000; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO10) butt +=0x2000; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO10) butt +=0x2000; // Секретный вход /* Записывает Inputs.all значением butt; представление регистра целым словом без разбиения на битовые поля. */ Inputs.all = butt; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Проверяет if(Desk==dsk_LOAD); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_LOAD) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Проверяет if(!GpioDataRegs.GPADAT.bit.GPIO6) butt +=0x0001; последующий оператор выполняется только при истинном условии. */ if(!GpioDataRegs.GPADAT.bit.GPIO6) butt +=0x0001; // OMEGA /* Проверяет if(!GpioDataRegs.GPADAT.bit.GPIO8) butt +=0x0002; последующий оператор выполняется только при истинном условии. */ if(!GpioDataRegs.GPADAT.bit.GPIO8) butt +=0x0002; // Start_1 /* Проверяет if(!GpioDataRegs.GPADAT.bit.GPIO11) butt +=0x0004; последующий оператор выполняется только при истинном условии. */ if(!GpioDataRegs.GPADAT.bit.GPIO11) butt +=0x0004; // Res_in /* Записывает Inputs.all значением butt; представление регистра целым словом без разбиения на битовые поля. */ Inputs.all = butt; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Проверяет if(Desk==dsk_SHKF); последующий оператор выполняется только при истинном условии. */ if(Desk==dsk_SHKF) /* Открывает составной блок или описание полей; следующие строки принадлежат этому уровню вложенности. */ { /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO53) fluf += 0x0000010; else butt += 0x0001; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPBDAT.bit.GPIO53) fluf += 0x0000010; else butt += 0x0001; /* Проверяет if(GpioDataRegs.GPBDAT.bit.GPIO52) fluf += 0x0000040; else butt += 0x0002; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPBDAT.bit.GPIO52) fluf += 0x0000040; else butt += 0x0002; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO2) fluf += 0x0001000; else butt += 0x0004; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO2) fluf += 0x0001000; else butt += 0x0004; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO4) fluf += 0x0002000; else butt += 0x0008; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO4) fluf += 0x0002000; else butt += 0x0008; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO6) fluf += 0x0004000; else butt += 0x0010; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO6) fluf += 0x0004000; else butt += 0x0010; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO0) fluf += 0x0008000; else butt += 0x0020; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO0) fluf += 0x0008000; else butt += 0x0020; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO8) fluf += 0x0010000; else butt += 0x0040; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO8) fluf += 0x0010000; else butt += 0x0040; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO10) fluf += 0x0020000; else butt += 0x0080; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO10) fluf += 0x0020000; else butt += 0x0080; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO3) fluf += 0x0040000; else butt += 0x0100; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO3) fluf += 0x0040000; else butt += 0x0100; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO5) fluf += 0x0080000; else butt += 0x0200; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO5) fluf += 0x0080000; else butt += 0x0200; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO7) fluf += 0x0100000; else butt += 0x0400; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO7) fluf += 0x0100000; else butt += 0x0400; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO1) fluf += 0x0200000; else butt += 0x0800; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO1) fluf += 0x0200000; else butt += 0x0800; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO11) fluf += 0x0400000; else butt += 0x1000; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO11) fluf += 0x0400000; else butt += 0x1000; /* Проверяет if(GpioDataRegs.GPADAT.bit.GPIO9) fluf += 0x0800000; else butt += 0x2000; последующий оператор выполняется только при истинном условии. */ if(GpioDataRegs.GPADAT.bit.GPIO9) fluf += 0x0800000; else butt += 0x2000; /* Записывает DigErr.all значением fluf; представление регистра целым словом без разбиения на битовые поля. */ DigErr.all = fluf; /* Записывает Inputs.all значением butt; представление регистра целым словом без разбиения на битовые поля. */ Inputs.all = butt; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ } /* Записывает butt значением 1 * !GpioDataRegs.GPADAT.bit.GPIO21; данные butt. */ butt = 1 * !GpioDataRegs.GPADAT.bit.GPIO21; /* Увеличивает butt значением 2 * !GpioDataRegs.GPADAT.bit.GPIO20; данные butt. */ butt += 2 * !GpioDataRegs.GPADAT.bit.GPIO20; /* Увеличивает butt значением 4 * !GpioDataRegs.GPADAT.bit.GPIO22; данные butt. */ butt += 4 * !GpioDataRegs.GPADAT.bit.GPIO22; /* Увеличивает butt значением 8 * !GpioDataRegs.GPBDAT.bit.GPIO51; данные butt. */ butt += 8 * !GpioDataRegs.GPBDAT.bit.GPIO51; /* Записывает Jumpers значением butt; данные Jumpers. */ Jumpers = butt; /* Закрывает текущий блок или список полей; следующие операторы относятся к внешнему уровню. */ }