void timer_Init(void); int get_isolatio(void); typedef struct { unsigned int clk; unsigned int bit; unsigned int ers; unsigned Wait; unsigned long Numb; } OPTOCANAL; // примерно 105 секунд - полный цикл измерениа сопротивлениа изолации, зарад конденсатора туда сюда #define CYCLE_TIME 105L // 3 секунды - пауза между измерениами изолации #define ISO_TIME 3 // сколько места занимает в буфере один полный цикл #define CYCLE_LEN (CYCLE_TIME / ISO_TIME) // Количество полных циклов в нашем буфере #define BUFF_CYCLES 5 // величина буфера дла хранениа измерений, пусть в него влазит несколько полных циклов #define BUFF_LEN (CYCLE_LEN * BUFF_CYCLES) #define TELE_FREQ 2000 // Гц - частота прерываниа #define ISO_PAUSE (ISO_TIME * TELE_FREQ) typedef struct { int buff[BUFF_LEN]; int min_val; int max_val; unsigned int buff_position; unsigned int prim_position; unsigned int cycles; int MOms_x_10; unsigned int pause_counter; int adc_value; }ISOLATION; extern ISOLATION iso[]; void isolation_calc(void); void Calcul_Iso_Koef(void);