Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн дек 03, 2012 13:26:37
wellcom
Может после установки 4й после 6й поставить новый пакет WINAVR ?
Может после установки 4й после 6й поставить новый пакет WINAVR ?
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Как то мне повезло, у меня дружат 4,5,6 студия никаких конфликтов.все в разных папках стоят внутри одной общей папки AVR.Только вот после обновления программатора дракон до новой версии старая перестает его воспринимать, говорит нужно обновление.wellcom писал(а): Вот никак не могу их связать. Когда стоит 4-тая без 6 все работает (STK500 шьет без проблем), как только ставлю 6-ю, 4-тая перестает видеть программатор,
Да, есть такое. Не первый раз слышу.vitalik_1984 писал(а):Только вот после обновления программатора дракон до новой версии старая перестает его воспринимать, говорит нужно обновление.
Вроде прокатывает туда-сюда его обновлять.vitalik_1984 писал(а):или чего получше.
Как оказалось не всегда работает. В некоторых случаях компилятор не лезет во все файлы и как следствие - ошибка в выполнении кода. Советуют даже, где можно и где нельзя, вставлять конструкции типа:#define F_CPU 16000000UL // Или какую вам надо и не забивайте себе голову и другим.
Код: Выделить всё
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
Все. При компилировании уже везде расчет будет вестись от установленной частоты. И не надо много думать…В меню Project=>[Имя проекта] Propeties… в закладке Toolchain жмем Configuration Manager… Active solution configuration: устанавливаем в Release, то же и в строке Configuration. Close.
Дальше, непосредственно настройки компилятора. AVR/GNU C Compiler =>Symbols в поле Defined symbols (-D) добавляем строку F_CPU=16000000UL, в General снимаем галочку против Default char type is unsigned (-funsigned-char), в Optimization в поле Optimization Level выбираем Optimize for size (-Os). Дальше в AVR/GNU Assembler=> General в Assembler Flags: прописываем -DF_CPU=16000000UL.
Ды ну.... правда? или шутишь?passer_by писал(а):hex полученный при компиляции тестового прогона в Atmel Studio 6 почти на 30% меньше чем тот же код (символ в символ) в четверке.
ага, теперь если вы отдадите свой проект другому человеку, то он не сможет его откомпелить, или ему придеться лезть в настройки и править, а это еще знать надо гдеpasser_by писал(а):Наверное где то было, не нашел. Ну котятам, типа меня пригодится.
Задался проблемой - работа в Atmel Studio 6. Бред в общем то, но как оказалась весьма полезно покопаться для общего понимания работы компиляторов и написания кода.
Ни как не мог найти где в Atmel Studio 6 устанавливается тактовая частота кристалла. Предложение типа:Как оказалось не всегда работает. В некоторых случаях компилятор не лезет во все файлы и как следствие - ошибка в выполнении кода. Советуют даже, где можно и где нельзя, вставлять конструкции типа:#define F_CPU 16000000UL // Или какую вам надо и не забивайте себе голову и другим.И о чудо, при очередном гугленье нашел, вы не поверите где, на сайте «Рукодельница. Дамское Счастье»,Код: Выделить всё
#ifndef F_CPU #define F_CPU 16000000UL #endifуважаю кошечек:
Все. При компилировании уже везде расчет будет вестись от установленной частоты. И не надо много думать…В меню Project=>[Имя проекта] Propeties… в закладке Toolchain жмем Configuration Manager… Active solution configuration: устанавливаем в Release, то же и в строке Configuration. Close.
Дальше, непосредственно настройки компилятора. AVR/GNU C Compiler =>Symbols в поле Defined symbols (-D) добавляем строку F_CPU=16000000UL, в General снимаем галочку против Default char type is unsigned (-funsigned-char), в Optimization в поле Optimization Level выбираем Optimize for size (-Os). Дальше в AVR/GNU Assembler=> General в Assembler Flags: прописываем -DF_CPU=16000000UL.
P.S. Еще плюс всех этих изысков - hex полученный при компиляции тестового прогона в Atmel Studio 6 почти на 30% меньше чем тот же код (символ в символ) в четверке.
Вообще дефайн #define F_CPU 1600000UL приводит к созданию ключа -DF_CPU=16000000UL посмотрите ключи в журнале компиляции. Так что не так важно каким образом будет он назначен.passer_by писал(а):И о чудо, при очередном гугленье нашел, вы не поверите где, на сайте «Рукодельница. Дамское Счастье»,уважаю кошечек:
Все. При компилировании уже везде расчет будет вестись от установленной частоты. И не надо много думать…В меню Project=>[Имя проекта] Propeties… в закладке Toolchain жмем Configuration Manager… Active solution configuration: устанавливаем в Release, то же и в строке Configuration. Close.
Дальше, непосредственно настройки компилятора. AVR/GNU C Compiler =>Symbols в поле Defined symbols (-D) добавляем строку F_CPU=16000000UL, в General снимаем галочку против Default char type is unsigned (-funsigned-char), в Optimization в поле Optimization Level выбираем Optimize for size (-Os). Дальше в AVR/GNU Assembler=> General в Assembler Flags: прописываем -DF_CPU=16000000UL.
P.S. Еще плюс всех этих изысков - hex полученный при компиляции тестового прогона в Atmel Studio 6 почти на 30% меньше чем тот же код (символ в символ) в четверке.
Код: Выделить всё
#ifndef F_CPU
/* prevent compiler error by supplying a default */
# warning "F_CPU not defined for <util/delay.h>"
# define F_CPU 1000000UL
#endif ключевое слово Если... А вдруг...Главное если где то требуется данная константа
Ошибочка где то у вас вышла..... Я тут губу раскатал, неимоверными усилиями скачал и установил AVRSTUDIO6.....passer_by писал(а):hex полученный при компиляции тестового прогона в Atmel Studio 6 почти на 30% меньше чем тот же код (символ в символ) в четверке.