Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2016, 09:14   #1
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию Помогите, пожалуйста. Проблема в коде.

Не могу понять проблему в коде! Подскажите мне, пожалуйста, в чем проблема. В коде есть фрагмент, который должен выполняться с определенной периодичностью, но постоянно. Но он почему-то выполняется всегда ровно 11 раз и всё. Причем, программа в цикл входит каждый раз, но свои функции в этом цикле не выполняет. Причем, я хочу сказать, тут не просто изменилось значение переменной "DATA_send_id" (например - обнуление), а отправка НЕ ОСУЩЕСТВЛЯЕТСЯ. Почему 11 раз условие выполняется, а потом всё?

Проблемный фрагмент:
Код:
//===========================================================================      
      if (COUNT_cycle == 10)  // Отправка сообщения статуса
      {                                       
        printf("%s\r\n", COM_send_id);     // Отправка ID
        delay_ms(100);
        printf("%s\r\n", DATA_send_id);
        delay_ms(100);
                
        COUNT_cycle = 0;  
      }  
      
//===========================================================================
Основной цикл:
Код:
/===========================================================================
// Основной цикл программы
while (1)
  {      
      PORTB.2 = 1;
      delay_ms(200);
      PORTB.2 = 0;
      delay_ms(100);
      COUNT_cycle++;

//===========================================================================      
      if (COUNT_cycle == 10)  // Отправка сообщения статуса
      {                                       
        printf("%s\r\n", COM_send_id);     // Отправка ID
        delay_ms(100);
        printf("%s\r\n", DATA_send_id);
        delay_ms(100);
                
        COUNT_cycle = 0;  
      }  
      
//===========================================================================
                
  }
Сообщите мне, какую еще информацию я должен предоставить - я выложу еще.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 25.02.2016, 09:23   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А смысл цикла в чем? Зачем 10 раз ждать по 300мс ничего не делая?

Цитата:
Сообщите мне, какую еще информацию я должен предоставить - я выложу еще.
SSCCE
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.02.2016, 09:28   #3
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А смысл цикла в чем? Зачем 10 раз ждать по 300мс ничего не делая?
Это программа для микроконтроллера, там есть смысл в таких задержках.

Ну и че ты спросил про смысл и замолчал, типа сумничал тут: "а смысл в чем?" и сдулся.
даешь высокое напряжение

Последний раз редактировалось Vova777; 25.02.2016 в 11:14.
Vova777 вне форума Ответить с цитированием
Старый 25.02.2016, 11:14   #4
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

вроде ни каких операторов для выхода из цикла не вижу, должен выполнятся вечно.

Не поясните что это за конструкция?
PORTB.2 = 1;
SAMOUCHKA вне форума Ответить с цитированием
Старый 25.02.2016, 12:11   #5
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
вроде ни каких операторов для выхода из цикла не вижу, должен выполнятся вечно.
Тем не менее, после 10-11 раз действия в цикле больше не выполняются. Но программа в цикл входит.

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
Не поясните что это за конструкция?
PORTB.2 = 1;
Это в среде CodeVisionAVR означает следующее: "порт В, пин 2, установить единицу (высокий уровень)"
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 25.02.2016, 12:56   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Ну и че ты спросил про смысл и замолчал, типа сумничал тут: "а смысл в чем?" и сдулся.
А что говорить-то если проблема явно не в одном этом коде, а в том, что его окружает?
Покажите полный короткий пример где это воспроизводится.

Что в отладчике видно?

А про смысл вопрос не в задержках, а в том почему статус надо выводить только каждый 10 раз.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста, исправить ошибку в коде Eliz1 Общие вопросы C/C++ 3 26.11.2015 15:51
Друзья, помогите, пожалуйста, найти ошибку в коде C# vorobvorob C# (си шарп) 2 16.05.2015 16:38
Помогите пожалуйста исправить ошибки в коде Nata Golden rose Общие вопросы C/C++ 6 18.05.2014 23:28
Помогите пожалуйста найти ошибки в коде. Slo Помощь студентам 1 12.12.2013 21:58
Помогите найти ошибку в коде, пожалуйста Gobl1n Паскаль, Turbo Pascal, PascalABC.NET 3 30.11.2008 17:44