Как бы это странно не звучало, но я никогда в жизни не использовал фирменную софтину от Atmel для написания прошивок. Изначально пользовался Eclipse, но в связи с тем, что для CodeVision было больше примеров, то до сих пор с ним и работал. Но все же интерес перевесил и я решил узнать, так ли страшен Atmel Studio как его малюют 🙂 Для простоты можно мигнуть светодиодом, заодно и описать впечатления.
Первое что бросается в глаза дизайн унаследованный от Visual Studio, не знаю кому как, а мне он привычен и рвотных позывов не наблюдается. Далее стандартная процедура File-New project. С типом проекта тоже никаких заморочек, микроконтроллер 8 битный, аргументов против GCC тоже никаких не имеется 🙂
С железом тоже все понятно, а вот за даташит отдельное спасибо. Кстати, довольно удобно прикинуть, сколько у какого микроконтроллера памяти и оперативы.
Сгенерился пустой проект, заголовочный файл немного отличается от CodeVision, но в целом это ничуть не смущает.
#include <avr/io.h> int main(void) { while(1) { } } |
Первое куда я полез — искать где настраивается частота камня, полазил в настройках нигде нет. Очевидно настраивается в коде проекта, в конце концов так и оказалось. Непривычно.
#define F_CPU 8000000 #include <avr/io.h> |
Название библиотеки задержек гуглится просто util/delay.h. Очень удобным показалось, то что при наборе кода предлагается автодополнение. После Visual C# этой штуки жутко не хватает в CAVR. В итоге за 5 минут набросал кусочек кода
#define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> int main(void) { DDRB=0xFF; PORTB=0x00; while(1) { PORTB=0x01; _delay_ms(200); PORTB=0x00; _delay_ms(200); } } |
Протеус подтвердил работоспособность прошивки.
Что же я хотел сказать этой статьей? То, что важно разобраться с основными принципами работы микроконтроллера. Для начинающего радиолюбителя впринципе не важно в чем писать. Если вы будете понимать, что откуда берется, то вам не составит труда, перенести проект в любую другую среду.
ЗЫ ради прикола сравнил размер такой же прошивки в CAVR, оказалось что GCC сгенерил Hex вполтора раза меньше O_o.
Ну это логично. Без цикла программа просто отработала раз и закончилась.
Не знал куда написать, поэтому пишу сюда. Как сделать так чтобы прерывание таймера по совпадению с B не прерывало прерывание по совпадению с A? Прерывание А выполняется по времени меньше чем B. Т.е. как заставить эти два прерывания работать вместе? А то получается что во время работы прерывания по В не работает прерывание по А.
Документация на ATtiny2313, страница 48, раздел 6.1. Черным по белому написано, что прерывание по Т0 COMPA имеет выше приоритет чем В. В таблице это 14 и 15 вектора. Еще вопросы есть?
Да, почему в моём случае наоборот и может ли одно прерывание прервать другое?
одно прерывание может прерывать другое. если не хотите этого, запрещайте прерывания при входе в обработчик и разрешайте при выходе
Вроде ж в авр вложенные прерывания по умолчанию запрещены при входе в обработчик аппаратно включается глобальный запрет прерываний (сбрасывается флаг I в SREG). А уже при выходе — прерывания разрешаются (устанавливается флаг I). Если надо вложенные прерывания — то при входе в обработчик нужно их глобально разрешить командой sei();
ether, огромное спасибо!
В нный раз обращаюсь к вам за помощью, так вот: как убрать вот такой ворнинг, который появляется при инициализации массива в atmel studio 6
extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
погоды он не делает, но глаза мозолит…
Вопрос снят
Отладка проектов CVAVR в AVR Studio 6 как AVR Studio 4 есть? Если есть, то где? Заранее спасибо.
Я уже давно перестал следить за обновками CAVR, в последний раз, около года назад можно было вынуть из CAVR coff файл и открыть его в AS6, но помоему оно работало через одно место. Как сейчас все изменилось не могу сказать.
Хорошо, а устанавливать вместе AVR Studio 6 и AVR Studio 4, можно? И пользоваться чем нужно?
Андрей, смотря с сегодняшней позиции, в пользу AS6
за:
Крупными проектами я бы несомненно стал бы заниматься в AS, мне нравится его редактор, мне понравилось как просто добавлялись проекты LUFA, нравится то что он бесплатный, код оптимизируется лучше чем в CAVR.
против:
у меня он никак не уживается на одной машине с Visual studio, а отдельную виртуалку держать для этого лень. отсутствие нативных библиотек, тормозит когда нужно по быстрому что то сляпать.
Под avr studio4 я не писал, поэтому ничего не могу сказать, зато все эти годы я им пользовался как прошивайкой, это в нем работает просто замечательно. Для проверки идей мне хватает обрезанного CAVR
Atmel Studio 6 сильно отличается от ее же 7ой ?
7 не доводилось пользоваться
Здравствуйте.
Вот я, «почесавши репу» и собрав металлодетектор, задумался над возможностью обучения программирования для составления прошивок.
Ну а перед началом реализации сей задумки открыл уже отработанные прошивки (в AtmelStudio) и задумался над содержимым. открылись 2 колонки слева-символы, иногда даже читаемые и несущие смысл, справа -строки: адрес строки и набор символов, скорее всего в шестнадцатиричной системе кодирования. Меняю содержимое строки в правой колонке, вижу, происходящие в связи с этим изменения в символах левой колонки.
Однако! Каждая строка кода заканчивается кодом какого-то символа, которая, наверное, является проверочной? По крайней мере попытка поставить «абы-чо» реагируется красным цветом.
Вот что это такое?
Где бы про это прочитать?
И как бы сделать правильно?
почитайте про hex формат в гугле
«GCC сгенерил Hex вполтора раза меньше»
Потому, что код GCC голый, а CV в шапке программы делает довольно полезные вещи.