#1 Програмування Arduino » проверка if переписывает переменную » 2018-07-24 00:16:16

Vitalik_sce
відповідей: 13

Здравствуйте
Когда выполняется функция save_set();  значение переменной alarm встает в 255
Если убрать проверку if  ((alarm != 0) && (set[8] == 1))  тогда работает верно
если ее переделать на if  ((set[8] == 1) && (alarm != 0)) тогда тоже этого глюка нет
В чем проблема?

volatile int set[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
volatile int alarm = 0;
/*
....
*/

void setup() 
{
/*
....
*/
save_set(); 
}//setup

void turnbip_call(int turnbip_num, int turnbip_long, int turnp_cou)
{
  if (!turnb_s)
  {
  turnb_n = turnbip_num;
  turnb_l = turnbip_long;
  turnb_c = ((turnb_l * 2) * turnb_n);
  turnp_c = turnp_cou;
  digitalWrite(turns_pin, LOW);
  
  if  ((alarm != 0) && (set[8] == 1))  {digitalWrite(sirena_pin, LOW); } 
  
  }
}

void save_set()
{
  for (int i = 0; i < 10; i++)
  {set[i] = EEPROM.read(31+i);}
}

void loop () 
{
/*
....
*/
}

Підвал форуму