AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
10.08.2013, 15:02
|
|
Гражданин KAZUS.RU
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
|
Re: Глюк оптимизатора?
nahimovv, значит я еще не нарывался. У меня в проекте глобальная переменная объявленная без дополнительных спецификаторов изменяется только в прерывании, а в основном цикле проверяется. Программа сохраняет свою работаспособность при любом уровне оптимизации. Значит мне просто повезло.
Загуглил. В самом стандарте Ansi Си ничего не сказано по поводу прерываний и спецификатора volatile. Также пишут что разные компиляторы на это реагируют по разному. Но wss60 прав. Указывать volatile в таких случая желательно.
Последний раз редактировалось Flopix; 10.08.2013 в 15:04.
|
|
|
|
10.08.2013, 15:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Глюк оптимизатора?
Сообщение от Flopix
|
В самом стандарте Ansi Си ничего не сказано по поводу прерываний и спецификатора volatile.
|
Художественный свист. Впрочем, врядли он художественный.
__________________
Сообщение от Flopix
|
Получается что компилятор не считает процедуру прерывания частью программы раз она не вызывается явно и решает что значит эти 2 переменные никогда не изменяются?
|
Нет, дело в другом. Ищите по ключевым словам execution path.
__________________
There's always more than one way to skin a cat.
Последний раз редактировалось tempora; 10.08.2013 в 15:28.
|
|
|
|
10.08.2013, 15:37
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,087
Сказал спасибо: 2,565
Сказали Спасибо 11,899 раз(а) в 5,972 сообщении(ях)
|
Re: Глюк оптимизатора?
Сообщение от Flopix
|
Указывать volatile в таких случая желательно.
|
Если не хотите сюрпризов - не должно быть ничего неявного.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
10.08.2013, 18:46
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Глюк оптимизатора?
Сообщение от Flopix
|
значит я еще не нарывался.
|
Сюда же можно добавить атомарность и барьеры (для конвейерных МК).
Такшта... у вас ещё всё впереди!
|
|
|
|
10.08.2013, 18:51
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Глюк оптимизатора?
Вдогонку. На ИзыйдиЭлектроникс как-то была статья "о вреде volatile". Не могу сказать что я согласен с аффтором, но почитать будет интересно, для общего развития.
|
|
|
|
10.08.2013, 19:29
|
|
Временная регистрация
Регистрация: 18.05.2007
Сообщений: 60
Сказал спасибо: 14
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Re: Глюк оптимизатора?
Кстати, если вы объявили переменную как volatile, то и в других файлах при объявлении этой переменной как внешней тоже нужно указывать, что она volatile. Иначе нарвётесь на грабли, описанные в начале поста.
Например, если в файле main.c есть переменная
Код:
|
volatile int waitTime; |
то и в других файлах, например utils.c, она должна быть объявлена как volatile
Код:
|
extern volatile int waitTime; |
Можно написать так и компилятор сделает свою работу
Код:
|
extern int waitTime; |
но это очередная шишка на вашем лбу
|
|
|
Сказали "Спасибо" Chudilo
|
|
|
10.08.2013, 19:34
|
|
Временная регистрация
Регистрация: 18.05.2007
Сообщений: 60
Сказал спасибо: 14
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
Re: Глюк оптимизатора?
Сообщение от nahimovv
|
Вдогонку. На ИзыйдиЭлектроникс как-то была статья "о вреде volatile". Не могу сказать что я согласен с аффтором, но почитать будет интересно, для общего развития.
|
А можно ссылку в студию?
|
|
|
|
10.08.2013, 19:57
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Глюк оптимизатора?
|
|
|
|
11.08.2013, 09:29
|
|
Вид на жительство
Регистрация: 09.01.2011
Сообщений: 364
Сказал спасибо: 31
Сказали Спасибо 86 раз(а) в 59 сообщении(ях)
|
Re: Глюк оптимизатора?
Сообщение от nahimovv
|
А поиском? Не?
|
Что поиском?
Сообщение от Chudilo
|
ИзыйдиЭлектроникс
|
???
Издеваетесь?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:02.
|
|