Вышла новая версия AtmelStudio 6.2

Вышла новая версия AtmelStudio 6.2. Интересно, чем порадуют на этот раз? Новыми фишками? И наверное новыми багами :)

Читать дальше

Atmel® TECH ON TOUR

11 июля 2013 г., г. Санкт-Петербург;
Holiday Inn Московские ворота
Московский проспект, 97A


Не упустите возможность изучить на практике, как снизить энергопотребление ваших систем, используя микроконтроллеры Atmel® и наши беспроводные и сенсорные решения. Многое из того, что вы узнаете на занятиях, можно будет применить в целом ряде ваших задач. Например, в узлах управления технологическими процессами, используемых в системах мониторинга и управления на производстве, или в микроконтроллерных системах общего назначения, в которых требуются как беспроводные, так и сенсорные пользовательские интерфейсы.

Программа мероприятия:

Читать дальше

Мегаклон программатор AVRISP MKII для микроконтроллеров AVR.

AVR
Долгое время я программировал микроконтроллеры AVR клоном программатором STK500. Он прекрасно уживается с AvrStudio4. И работает прямо из среды этой программы. Так что я программировал AVR чипы и был очень счастлив. Но время шло и появилась AtmelStudio5, потом AtmelStudio6

Читать дальше

fabs из math.h в Atmel Studio 6

Подскажите, знатоки!

Понадобилось недавно взять модуль от некоего выражения, в результате которого получается число с плавающей точкой. Подключил math.h, дабы заюзать оттуда fabs, но не тут-то было. При компиляции получил «Error 8: undefined reference to `fabs'».

В опциях линкера -lm сделал. При вычислении выражения, от которого берется модуль, используется sqrt — так оно работает, а fabs нет.

Я, конечно, по-быстрому накидал свою функцию, которая возвращает модуль, но в чём же загвоздка-то?

Настройки компилятора в Atmel Studio 6 и отладка на симуляторе - грабли

Интересная, но, в общем, неудивительная вещь при отладке — возможно, кому-то пригодится.

Заметил, что при пошаговом выполнении программы оказываюсь в той функции, которая в этот момент (да и вообще в данной конфигурации программы) не вызывается. Причем оказываюсь не в начале функции, а где-то в середине. Заинтересовался — какого, собственно?

Настройки компилятора (оптимизация) были следующие:
— уровень оптимизации -O2
— галки стояли на «Pack structure members together (-fpack-struct)» и «Prepare functions for garbage collection (-ffunction-sections)»

Попробовал поиграться с уровнями оптимизации — без толку. Выключаю -ffunction-sections — всё нормально. А жаба душит, включение этой опции даёт уменьшение размера почти в два раза.

В хелпе написано следующее:
"-ffunction-sections: Prepare functions for garbage collection, if a function is never used, its memory will be scrapped"
То бишь, если функция нигде не используется, то под неё вроде бы память не выделяется. Оно и логично, сборка мусора и все такое.

То, что меня удивило: при включенной опции — при попадании программы в середину нигде не использующейся функции выхожу я из неё буквально на следующем шаге и туда, куда мне и надо. Посмотрел окно «disassembly» — там, куда я попадаю, Сишный текст строчки из НЕИСПОЛЬЗУЕМОЙ функции есть, а ассемблерные инструкции все как надо (там идет сброс флага и выход из ИСПОЛЬЗУЕМОЙ функции, в которую я заходил и как раз должен из неё выйти) Что за ерунда — так и не понял, может, кто точно знает и расскажет? В железе пока не пробовал, но судя по ассемблерному тексту, все должно работать правильно.

В общем, резюмирую — при отладке этой опцией компилятора надо пользоваться аккуратно, а лучше не пользоваться.

Да, чуть не забыл, при использовании -ffunction-sections в опциях линкера должно быть включено «Garbage collect unused sections (-Wl--gc-sections)», а то толку от использования -ffunction-sections не будет.

Для интересующихся, про настройки компилятора и линкера: Optimisations of AVR programs using avr-gcc

Atmel Studio 6 топик-ссылка

На сайте Atmel доступна для скачивания бета Atmel Studio 6. Это, насколько я понял, замена AVR Studio. Поддерживаются платформы AVR и ARM. Прямые ссылки для скачивания (предоставлены пользователем QBasic, за что ему отдельное спасибо): http://www.atmel.com/Images/as6installer-6.0.1703-full.exe http://www.atmel.com/Images/as6installer-6.0.1703-small.exe