示例#1
0
文件: light.c 项目: tuzhikov/SURD
// вызываеться из потока 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;
  }
}
示例#2
0
文件: main.c 项目: serikovigor/surd
//------------------------------------------------------------------------------
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();
}
示例#3
0
文件: light.c 项目: serikovigor/surd
//------------------------------------------------------------------------------
// следующая попытка
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();
     }
    }
}