Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 23.07.2017, 21:24  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Выйти из цикла while Keil 5.0

Сообщение от AR_Favorit Посмотреть сообщение
В прерывании, небось, уменьшается-то? Курим модификатор volatile...
Заработало.....
Реклама:
bass1981 вне форума  
Непрочитано 23.07.2017, 21:27  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Выйти из цикла while Keil 5.0

Сообщение от H4LF Посмотреть сообщение
akegor, как это ничего не делается? а выход из функции с возвратом -1
Хотя не знаю, что именно автор этим хочет делать. Может быть это просто таймаут так организован, но тогда наверное лучше так:
PHP код:
while (!(I2C2-›SR1 0x0002))
{
    if(
WATCHDOG_I2C == 0) {return -1;}

не знаю, дальше гадать не буду. А переменную лучше нормально назвать(не капсом).
Сначала так и было но не работало.... )))
bass1981 вне форума  
Непрочитано 23.07.2017, 21:49  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Выйти из цикла while Keil 5.0

bass1981, а теперь смотрите все остальные глобальные переменные, которые используются и в программе и в прерываниях. И это ещё не единственный подводный камень и volatile не везде поможет. Хотя для 32 битных МК этих камней всё-же меньше, чем для восьмибиток.
H4LF вне форума  
Непрочитано 23.07.2017, 22:41  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Выйти из цикла while Keil 5.0

Сообщение от H4LF Посмотреть сообщение
bass1981, а теперь смотрите все остальные глобальные переменные, которые используются и в программе и в прерываниях. И это ещё не единственный подводный камень и volatile не везде поможет. Хотя для 32 битных МК этих камней всё-же меньше, чем для восьмибиток.
Понятненько...
У меня пока второй поток не запускается...
bass1981 вне форума  
Непрочитано 25.07.2017, 13:19  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Выйти из цикла while Keil 5.0

Сообщение от akegor Посмотреть сообщение
ведь кроме ожидания ничего не делается.
Делается. Проверяется таймер безопасности, и если он стал равен 0, а флаг и2ц всё ещё не меняется, значит висим, и чтобы вся программа не висела - выход из ожидания с кодом ошибки.

ЗЫ: Вы что, не ставите такие проверки в своих программах, и если ваша программа ожидает передачи и2ц, скажем ответа от слэйва, а его всё нет, она что, будет ждать вечно?

Сообщение от H4LF Посмотреть сообщение
Хотя не знаю, что именно автор этим хочет делать. Может быть это просто таймаут так организован, но тогда наверное лучше так:
Совершенно верно, как и говорит NewWriter.
Someone вне форума  
Непрочитано 25.07.2017, 13:21  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Выйти из цикла while Keil 5.0

Сообщение от bass1981 Посмотреть сообщение
Сначала так и было но не работало.... )))
Потому что без модификатора volatile компилятор "оптимизировал" значение, которое в цикле не меняется.
Someone вне форума  
Непрочитано 12.08.2017, 02:50  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Выйти из цикла while Keil 5.0

bass1981 чел работает с контроллерами и не знает про волатил... это просто песец...
и насчет незапускающихся задач - дай угадаю - приоритеты разные влепил?
Hives вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Keil MDK 5.0 dosikus Embedd С 72 07.11.2013 20:52
найти файл STM32_init.c (Keil) к библиотеке CMSIS и StdPeriph_Lib Alex_8 ARM 2 01.08.2013 14:20
Keil и сторонние программаторы Qares Embedd С 17 06.02.2013 19:40
Class string in Keil Chudilo Микроконтроллеры, АЦП, память и т.д 18 13.08.2012 13:10
Почему Keil собирает нерабочий hex west329 Микроконтроллеры, АЦП, память и т.д 1 10.07.2009 14:09


Часовой пояс GMT +4, время: 07:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot