, который нужно переписать в папку C:\Program Files\Atmel\Atmel Studio 6.0\tools\STK500\xml и перезапустить студио 6. После данных действий атмега128 шьется вроде нормально.
Проблема с сообщением СпойлерError 1 attempt to use poisoned "SIG_OUTPUT_COMPARE1A" G:\...\AVR\Proekts\AVRST5_test\AVRGCC1\AVRGCC1\Source\portable\GCC\ATMega323\port.c 456 7 AVRGCC1 так же решена. Нужно заменить старое название вектора прерываний на новое, см. файл iomXXX.h, там есть и старое название и 2 новых,однако старое название через #pragma определено для такого вида сообщения.
Вот никак не могу их связать. Когда стоит 4-тая без 6 все работает (STK500 шьет без проблем), как только ставлю 6-ю, 4-тая перестает видеть программатор,
Как то мне повезло, у меня дружат 4,5,6 студия никаких конфликтов.все в разных папках стоят внутри одной общей папки AVR.Только вот после обновления программатора дракон до новой версии старая перестает его воспринимать, говорит нужно обновление.
так можно дообновляться, помним ведь, что в нем простые смертные Мк использованы. Уж лучше добавить Мк в список пятой/шестой студии.Как было показано выше.
Наверное где то было, не нашел. Ну котятам, типа меня пригодится. Задался проблемой - работа в 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% меньше чем тот же код (символ в символ) в четверке.
_________________ Если птичка уже в одном прыжке от тебя, всё-таки побереги свой нос, может она за оконным стеклом???
Наверное где то было, не нашел. Ну котятам, типа меня пригодится. Задался проблемой - работа в 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% меньше чем тот же код (символ в символ) в четверке.
ага, теперь если вы отдадите свой проект другому человеку, то он не сможет его откомпелить, или ему придеться лезть в настройки и править, а это еще знать надо где а если у меня в работе 4-6 проектов и везде разные частоты кварца, каждый раз лезть и править при загрузки НЕТ увольте. трахаться я буду по желанию, а не по обходимости. дефайн надо определять не в главном хидер файле а в главном сишном файле. впрочем решать все одно вам, делайте как вам удобней.
Да я и не спорю. И наверное правильнее делать такие настройки "в главном сишном файле". Но я ж писал - это для котят. Которые еще не очень соображают как написать этот самый сишный файл. А попробовать писать очень хочется. Поправляйте, будем учится дальше.
_________________ Если птичка уже в одном прыжке от тебя, всё-таки побереги свой нос, может она за оконным стеклом???
И о чудо, при очередном гугленье нашел, вы не поверите где, на сайте «Рукодельница. Дамское Счастье», уважаю кошечек:
Цитата:
В меню 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 посмотрите ключи в журнале компиляции. Так что не так важно каким образом будет он назначен. Главное если где то требуется данная константа ,где то перед использованием внутри хидеров нужно прописать
Код:
#ifndef F_CPU /* prevent compiler error by supplying a default */ # warning "F_CPU not defined for <util/delay.h>" # define F_CPU 1000000UL #endif
Так когда вдруг выдаст предупреждение и назначит по умолчанию, можно и error прописать без назначения по умолчанию.Хотя такой вариант и сам не сможет откомпилироваться из-за ошибки. А в мэйне дефайн по любому применится для всего проекта. И еще # defineF_CPU1000000UL нужно писать перед хидером, в котором он нужен.
hex полученный при компиляции тестового прогона в Atmel Studio 6 почти на 30% меньше чем тот же код (символ в символ) в четверке.
Ошибочка где то у вас вышла..... Я тут губу раскатал, неимоверными усилиями скачал и установил AVRSTUDIO6..... И обломался ..... Да экономия есть..... маленькая....., но не то что у вас получилось..... Да в принципе - 30% - это и не реально.... скорее всего чегото гдето вы не досмотрели.....
AVRST4
AVRST6
зы Сейчас глянул еще раз на вашу картинку AVR_6 и почемуто она выглядит совсем по другому чем у меня..... может это не выходного файла параметры.....
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения