| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
AVRStudio косяк :(
26.04.2010, 12:27
|
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AVRStudio косяк :(
Сообщение от Pavlike
|
|
В теле цикла я хочу каждые 4 минуты писать в EPROM.
|
Пишите. Никто не препядствует. Код полностью рабочий.
|
|
|
|
26.04.2010, 12:29
|
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: AVRStudio косяк :(
Сообщение от Classic001
|
|
Каким именно образом прерывание, настроенное на возникновение раз в секунду может срабатывать несколько раз за 100 мс ?
|
Пардон, не вникал. Вы правы, хотя изначально в программу закладывается мина: пройдет время, и решит автор, что 1 сек - много, и сделает 100мс; а про допуск в виде некорректного условия (== вместо ›=) уже и забудет)
|
|
|
|
26.04.2010, 12:32
|
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AVRStudio косяк :(
Сообщение от testerplus
|
|
При раскомментированном sek=1 код проверки условия и всего содержимого опреаторных скобок if {} выкидывается.
|
Забавно. Подтверждаю. Но до этого момента ни разу не сталкивался.
Сообщение от testerplus
|
|
Я по профессии занимаюсь поиском ошибок в чужих прораммах.
|
А я по жизни слишком ленивый чтобы исправлять ошибки. Поэтому пользуюсь симулятором и стараюсь их не делать =)
|
|
|
|
26.04.2010, 12:33
|
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AVRStudio косяк :(
Сообщение от testerplus
|
|
Пардон, не вникал.
|
Я тоже. Потому сразу с вами и согласился =)
Кстати, инициализация как "uint8_t sek=1;" работает и без volatile
Сообщение от testerplus
|
|
Кстати, что Вы имеете ввиду под "стандартным уровнем оптимизации"?
|
Сообщение от testerplus
|
|
-oS
|
Если "S" не стандартный, то что ?
Последний раз редактировалось Classic001; 26.04.2010 в 12:36.
|
|
|
|
26.04.2010, 12:43
|
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: AVRStudio косяк :(
Сообщение от Classic001
|
|
Забавно. Подтверждаю. Но до этого момента ни разу не сталкивался.
|
Кстати, отсутствие volatile делает код неработоспособным не только тогда, когда код сравнения выкидывается, т.е. когда sek=1 раскомментирована. Когда она закомментирована, и код сравнения остается, программа также не будет работать. Обратите внимание на листинг: в сравнении участвует не переменная sek, а регистр r18, куда значение переменной копируется до входа в while(). Т.е. условие не сработает, даже когда sek будет равна 240.
|
Цитата:
|
|
Кстати, инициализация как "uint8_t sek=1;" работает и без volatile
|
Только код сравнения все равно выкидывается.
|
Цитата:
|
|
Если "S" не стандартный, то что ?
|
"-Os", -- optimize for space
|
|
|
|
26.04.2010, 12:45
|
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: AVRStudio косяк :(
Сообщение от Pavlike
|
Возникло еще пару вопросов:
1. Варианты оптимизации стоят только в свойствах проекта? (- Os) И где можно почитать описание про это(раньше туда не залазил), я так понимаю - это не в описании AVRStudio а в компиляторе.
|
AVR Studio - это оболочка. А про ключи компилятора нужно читать в описании компилятора.
|
Цитата:
|
|
2. Возможно ли поместить глобальную переменную в регистр? без использования памяти.
|
Это тоже есть в описании компилятора: читайте про квалификатор register.
|
|
|
|
26.04.2010, 12:52
|
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AVRStudio косяк :(
Сообщение от testerplus
|
|
Только код сравнения все равно выкидывается.
|
Код комплируется, но неработает из-за того, что
Сообщение от testerplus
|
|
в сравнении участвует не переменная sek, а регистр r18
|
Так что вы правы.
|
|
|
|
26.04.2010, 13:01
|
|
|
Временная регистрация
Регистрация: 16.05.2005
Адрес: Киев
Сообщений: 58
Сказал спасибо: 38
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: AVRStudio косяк :(
http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc.pdf
Описание GCC стр 92:
3.10 Options That Control Optimization
Буду изучать!
|
|
|
|
26.04.2010, 13:30
|
|
|
Временная регистрация
Регистрация: 16.05.2005
Адрес: Киев
Сообщений: 58
Сказал спасибо: 38
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: AVRStudio косяк :(
Написал так:
register unsigned char sek asm ("r16");
и так:
inline register unsigned char sek asm ("r16");
Все равно компилятор перед циклом перегоняет R16 в R24 и сравнивает уже R24 (пробовал вместо R16 - R5 результат тот же)..
Остается только оптимизация?
Где я неправ?
Нашел:
volatile register unsigned char sek asm ("r16");
Опция -О3
Последний раз редактировалось Pavlike; 26.04.2010 в 13:50.
|
|
|
|
26.04.2010, 13:53
|
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: AVRStudio косяк :(
Сообщение от Pavlike
|
|
register unsigned char sek asm ("r16");
|
Во-первых, из описания: "Typically, it should be possible to use r2 through r15 that way."
Во-вторых, где volatile?
|
|
|
|
Сказали "Спасибо" testerplus
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Помогите с AVRstudio
|
jafarkiller |
Микроконтроллеры, АЦП, память и т.д |
9 |
08.04.2010 21:42 |
Часовой пояс GMT +4, время: 19:26.
|
|