// вызываеться из потока 0.5 sec. static void checksumProject(void) { const BYTE TimeDelay = 5; static BYTE step = Null; static BYTE timeCall = 0; static BOOL choiceFlash = false; /* ///////////// test ///////////// if(DK[CUR_DK].tumblerAUTO) DK[CUR_DK].PROJ->CRC32 = 0; //ломаем CRC32 //////////// END /////////////// */ if(step==Null) { if(++timeCall>TimeDelay){ // проверка проекта 1 раз 5 сек timeCall = 0; if(!validProjectRAM()){ // проблемы с проектов в ОЗУ // запись в журнал проверки RAM if(!choiceFlash)Event_Push_Str("Авария CRC проекта 1 RAM!"); if(choiceFlash)Event_Push_Str("Авария CRC проекта 2 RAM!"); if(!validProjectALL(choiceFlash)){ // проблемы с проектом в флешь if(!choiceFlash){Event_Push_Str("Авария CRC проекта копия 1!");choiceFlash = true;} // проверка второй копии if(!validProjectALL(choiceFlash)){ Event_Push_Str("Авария CRC проекта копия 2!"); DK_HALT(); step=One; // уходим в отключение return; } return; } } } } else if(step==One) // авария все отключаем { DK_HALT(); } else // dafault { step=Null; timeCall = 0; } }
//------------------------------------------------------------------------------ void Check_DS() { if (abs(WAIT_1S_COUNT-DS_INTS_COUNT)>5){ //ales dbg_puts("Clock error!!!!!"); Event_Push_Str("Часы (DS1390) не работают!!!"); // #ifndef DEBUG DK_HALT(); #endif } Clear_DS_COUNTS(); }
//------------------------------------------------------------------------------ // следующая попытка static void Next_Try(bool b) { if (!DK[CUR_DK].no_FAULT) if (b) { //все отключаем if (reboot_tryes<PROJ[CUR_DK].guard.restarts) { reboot_tryes++; if (chan_faults!=FT_RED_CONFL) { POWER_SET(false); // off rele SIGNAL_OFF(); Save_LET(); // for (int i_dk=0; i_dk<dk_num; i_dk++) { CUR_DK = i_dk; Init_DK(); DK_ALARM_OC(); } // DK_MAIN(); light_machine.work=false; // } else { Save_LET(); for (int i_dk=0; i_dk<dk_num; i_dk++) { CUR_DK = i_dk; //Init_DK(); //DK_ALARM_YF(); } DK_MAIN(); } Next_Try_wait = true; chan_faults=FT_NO; tn_task_sleep(100); } else { DK_HALT(); } } }