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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

AVRStudio косяк :(

Непрочитано 26.04.2010, 12:27  
Classic001
Временная регистрация
 
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Classic001 на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

Сообщение от Pavlike Посмотреть сообщение
В теле цикла я хочу каждые 4 минуты писать в EPROM.
Пишите. Никто не препядствует. Код полностью рабочий.
Реклама:
Classic001 вне форума  
Непрочитано 26.04.2010, 12:29  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

Сообщение от Classic001 Посмотреть сообщение
Каким именно образом прерывание, настроенное на возникновение раз в секунду может срабатывать несколько раз за 100 мс ?
Пардон, не вникал. Вы правы, хотя изначально в программу закладывается мина: пройдет время, и решит автор, что 1 сек - много, и сделает 100мс; а про допуск в виде некорректного условия (== вместо ›=) уже и забудет)
testerplus вне форума  
Непрочитано 26.04.2010, 12:32  
Classic001
Временная регистрация
 
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Classic001 на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

Сообщение от testerplus Посмотреть сообщение
При раскомментированном sek=1 код проверки условия и всего содержимого опреаторных скобок if {} выкидывается.
Забавно. Подтверждаю. Но до этого момента ни разу не сталкивался.
Сообщение от testerplus Посмотреть сообщение
Я по профессии занимаюсь поиском ошибок в чужих прораммах.
А я по жизни слишком ленивый чтобы исправлять ошибки. Поэтому пользуюсь симулятором и стараюсь их не делать =)
Classic001 вне форума  
Непрочитано 26.04.2010, 12:33  
Classic001
Временная регистрация
 
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Classic001 на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

Сообщение от testerplus Посмотреть сообщение
Пардон, не вникал.
Я тоже. Потому сразу с вами и согласился =)

Кстати, инициализация как "uint8_t sek=1;" работает и без volatile

Сообщение от testerplus Посмотреть сообщение
Кстати, что Вы имеете ввиду под "стандартным уровнем оптимизации"?
Сообщение от testerplus Посмотреть сообщение
-oS
Если "S" не стандартный, то что ?

Последний раз редактировалось Classic001; 26.04.2010 в 12:36.
Classic001 вне форума  
Непрочитано 26.04.2010, 12:43  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

Сообщение от Classic001 Посмотреть сообщение
Забавно. Подтверждаю. Но до этого момента ни разу не сталкивался.
Кстати, отсутствие volatile делает код неработоспособным не только тогда, когда код сравнения выкидывается, т.е. когда sek=1 раскомментирована. Когда она закомментирована, и код сравнения остается, программа также не будет работать. Обратите внимание на листинг: в сравнении участвует не переменная sek, а регистр r18, куда значение переменной копируется до входа в while(). Т.е. условие не сработает, даже когда sek будет равна 240.

Цитата:
Кстати, инициализация как "uint8_t sek=1;" работает и без volatile
Только код сравнения все равно выкидывается.

Цитата:
Если "S" не стандартный, то что ?
"-Os", -- optimize for space
testerplus вне форума  
Непрочитано 26.04.2010, 12:45  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

Сообщение от Pavlike Посмотреть сообщение
Возникло еще пару вопросов:
1. Варианты оптимизации стоят только в свойствах проекта? (- Os) И где можно почитать описание про это(раньше туда не залазил), я так понимаю - это не в описании AVRStudio а в компиляторе.
AVR Studio - это оболочка. А про ключи компилятора нужно читать в описании компилятора.
Цитата:
2. Возможно ли поместить глобальную переменную в регистр? без использования памяти.
Это тоже есть в описании компилятора: читайте про квалификатор register.
testerplus вне форума  
Непрочитано 26.04.2010, 12:52  
Classic001
Временная регистрация
 
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Classic001 на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

Сообщение от testerplus Посмотреть сообщение
Только код сравнения все равно выкидывается.
Код комплируется, но неработает из-за того, что
Сообщение от testerplus Посмотреть сообщение
в сравнении участвует не переменная sek, а регистр r18
Так что вы правы.
Classic001 вне форума  
Непрочитано 26.04.2010, 13:01  
Pavlike
Временная регистрация
 
Регистрация: 16.05.2005
Адрес: Киев
Сообщений: 58
Сказал спасибо: 38
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Pavlike на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc.pdf

Описание GCC стр 92:
3.10 Options That Control Optimization
Буду изучать!
Pavlike вне форума  
Непрочитано 26.04.2010, 13:30  
Pavlike
Временная регистрация
 
Регистрация: 16.05.2005
Адрес: Киев
Сообщений: 58
Сказал спасибо: 38
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Pavlike на пути к лучшему
По умолчанию 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.
Pavlike вне форума  
Непрочитано 26.04.2010, 13:53  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: AVRStudio косяк :(

Сообщение от Pavlike Посмотреть сообщение
register unsigned char sek asm ("r16");
Во-первых, из описания: "Typically, it should be possible to use r2 through r15 that way."
Во-вторых, где volatile?
testerplus вне форума  
Сказали "Спасибо" testerplus
Pavlike (26.04.2010)
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с AVRstudio jafarkiller Микроконтроллеры, АЦП, память и т.д 9 08.04.2010 21:42


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.