уВажаемые коты, подскажите такую С конструкцию: нужно, что бы часть программы выполнялась при совпадении условия в цикле, не выходя из него, но только 1 раз!, что бы при следующих совпадениях условия часть программы уже НЕ выполнялась (т.е. единоразово)
вот то, что я налепил, мож у кого будут какие идеи?
Код: Выделить всё
while ((Data_SICK < Li)||(Data_SICK >Ui)) //пока пришедшие данные вне диапазоне +/-0,01 (работаю только с Float)
{
Sick_data_Correct (_Sick,&Data_SICK); //ПРОВЕРИТЬ РЕАЛЬНЫЕ данные во время движения
if ((fabs(fl_Point_Speed1 - Data_SICK))<0.2) //если разница реального знач.и расчетной Точкой 1<0.2 (для устранения дребезга)
{
SPI_SendBits(_AD5260,CLK_AD5260,Speed_2); //сбросим скорость до 50%. ВОТ СЮДА МНЕ НУЖНО ЗАЙТИ ВСЕГО ОДИН РАЗ!, но по скольку у меня float, и реальное значение может меняться
}; //+/-0,01 при малой скорости движения я сюда могу попасть не один раз, а при большой скорости могу и проскочить, что тоже очень плохо.
if ((fabs(fl_Point_Speed2 - Data_SICK))<0.2) //если разница реального знач.и расчетной Точкой 2<0.2
{
SPI_SendBits(_AD5260,CLK_AD5260,Speed_3); //сбросим скорость до 20%. ЗДЕСЬ АНАЛОГИЧНО.
}
//Здесь оставшаяся часть программы (проверка других датчиков, отправка и прием данных по усарту), при частоте кварца 11059, 1 проход цикла занимает немало времени (точно не
//измерял)
};