Приветствую. Ничего не предвещало беды, и до сегодняшнего дня _delay_ms (V) работало как часы и не вызывало проблем, но сегодня этот кусок дерьма потребовал от меня "целочисленную константу". В чём прикол? Как исправить? Можно ли сбросить как-то все настройки программы на первоначальные? Поможет ли установка Atmel Studio 5/6/7?
Добавлено after 51 second: Переустановка программы не помогла.
А простая переустановка и не поможет. Надо для начала и автоматическую деинсталяцию и удаление вручную остатков делать. Возможно на ПК еще какие-то варианты GCC были позднее установлены (из ардуинки к примеру или еще из чего) да прописались где-то... или диск... сбойнул...
В общем поковырялся ещё пару часов. Снёс всё начисто. ОС Win7 64. Установил 4.19, WinAVR. В чистом виде всё это дело не компилит, хз почему, нужен AVR Toolchain. Это у всех так или только у меня? Ставлю его. И вот тут и зарыта собака, delay.h компилятор берёт из тулчейна, я его переименовал и закинул delay.h из WinAVR. Теперь код _delay_ms (V) работает как на 4.18, на который кстати у меня AVR Toolchain не требовался и на WinXP не установлен с 4.18. В чём прикол с этим AVR Toolchain не знаю, разбираться пока лень, если кто в курсе пишите.
C:\Program Files (x86)\Atmel\AVR Tools\AVR Toolchain\avr\include\util\delay.h Там есть описание поведения (у меня 4.18), судя по нему, использовать переменную можно, но... Настоятельно рекомендуют передавать на вход константное выражение, которое может быть вычислено на этапе компиляции, и не отключать оптимизации. В противном случае вы получите разжиревший бинарник и сильно (даже в разы) увеличенные задержки, из за арифметики с double в рантайме.
вообще-то все уже на таймерах и прерываниях сидят, а если очень нужны задержки, то кто-то давным-давно написал либу на асме без использования регистров. лично я не помню уже где ее взял, но пользуюсь при необходимости
вы получите разжиревший бинарник и сильно (даже в разы) увеличенные задержки, из за арифметики с double в рантайме.
Для небольшого кода это не особо важно, мне просто нужно было по быстрому проверить железо. Я написал небольшой хидер со своими функциями delay, на будущее. А по сути, как оказалось, виновата не студия, а используемые библиотеки. В 4.19 используется по умолчанию библиотека Toolchain, в 4.18 WinAVR, и у них разные delay.h. Можно в 4.19 в настройках проекта указать пути к WinAVR, и всё будет как в старых версиях студии. Думаю тему можно закрывать на этом.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения