/* Обработка датчиков, вычисление величин и миллисекундный такт системы. Русские пояснения сохранены в 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 /* Задаёт 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 /* Задаёт 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 /* Задаёт Cooling = 5; данные Cooling. */ #define Cooling 5 // (°С) Гистерезис по снатию перегрева /* Задаёт COSPi6 = 0.86602540378443864676372317075294; данные COSPi6. */ #define COSPi6 0.86602540378443864676372317075294 /* Задаёт RADIX2 = 1.4142135623730950488016887242097; данные RADIX2. */ #define RADIX2 1.4142135623730950488016887242097 /* Задаёт 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