Содержание
Урок 1. Первый проект
Урок 2. Управление кнопками
Урок 3. Подключение LCD
Урок 4. Использование ШИМ
Урок 5. Таймеры
Урок 6.1. Статическая индикация
Урок 6.2. Динамическая индикация
Урок 7.1. Генерация звука
Урок 7.2. Генерация звука. Продолжение
Урок 8.1. Передача данных через UART
Урок 8.2. Передача данных через UART. Продолжение»
Урок 9. Передача данных через SPI
Урок 10. Изучение АЦП. Простой вольтметр
Урок 11. Получение синуса при помощи ШИМ
Урок 12. Измерение температуры
Урок 13. Внешние прерывания.
Урок 14. Использование отладчика
Урок 15.1. Управление инкрементальным энкодером
Урок 15.2. Управление громкостью, при помощи энкодера
Урок 16. Управление RGB светодиодом
Урок 17. Использование ИК
Урок 18.1. Знакомство с графическим дисплеем
Урок 18.2 Вывод изображения на графический дисплей
Урок 18.3 Вывод русскоязычного текста
Урок 19. Формирование сигнала, при помощи ЦАП (R2R)
Урок 20. Опрос матричной клавиатуры
Урок 21. Сторожевой таймер
Урок 22.1 Воспроизведение wav. Введение.
Урок 22.2 Воспроизведение wav. Продолжение.
Урок 23.1 Работа с внешней памятью
Урок 23.2 Работа с файловой системой Fat

Как бы это странно не звучало, но я никогда в жизни не использовал фирменную софтину от Atmel для написания прошивок. Изначально пользовался Eclipse, но в связи с тем, что для CodeVision было больше примеров, то до сих пор с ним и работал. Но все же интерес перевесил и я решил узнать, так ли страшен Atmel Studio как его малюют 🙂 Для простоты можно мигнуть светодиодом, заодно и описать впечатления.

studio

Первое что бросается в глаза дизайн унаследованный от Visual Studio, не знаю кому как, а мне он привычен и рвотных позывов не наблюдается. Далее стандартная процедура File-New project. С типом проекта тоже никаких заморочек, микроконтроллер 8 битный, аргументов против GCC тоже никаких не имеется 🙂

projectmain

С железом тоже все понятно, а вот за даташит отдельное спасибо. Кстати, довольно удобно прикинуть, сколько у какого микроконтроллера памяти и оперативы.

chooseyourdestiny

Сгенерился пустой проект, заголовочный файл немного отличается от CodeVision, но в целом это ничуть не смущает.

#include 
int main(void)
{
while(1)
{

}
}

Первое куда я полез — искать где настраивается частота камня, полазил в настройках нигде нет. Очевидно настраивается в коде проекта, в конце концов так и оказалось. Непривычно.

#define F_CPU 8000000
#include 

Название библиотеки задержек гуглится просто util/delay.h. Очень удобным показалось, то что при наборе кода предлагается автодополнение. После Visual C# этой штуки жутко не хватает в CAVR. В итоге за 5 минут набросал кусочек кода

#define F_CPU 8000000

#include 
#include 

int main(void)
{
DDRB=0xFF;
PORTB=0x00;

while(1)
{
PORTB=0x01;
_delay_ms(200);
PORTB=0x00;
_delay_ms(200);
}
}

Протеус подтвердил работоспособность прошивки.
proteus_astudio

Что же я хотел сказать этой статьей? То, что важно разобраться с основными принципами работы микроконтроллера. Для начинающего радиолюбителя впринципе не важно в чем писать. Если вы будете понимать, что откуда берется, то вам не составит труда, перенести проект в любую другую среду.

ЗЫ ради прикола сравнил размер такой же прошивки в CAVR, оказалось что GCC сгенерил Hex вполтора раза меньше O_o.

58 комментариев: Работа с Atmel Studio 6

  • Алексей:

    Ну это логично. Без цикла программа просто отработала раз и закончилась.

  • Роман:

    Не знал куда написать, поэтому пишу сюда. Как сделать так чтобы прерывание таймера по совпадению с B не прерывало прерывание по совпадению с A? Прерывание А выполняется по времени меньше чем B. Т.е. как заставить эти два прерывания работать вместе? А то получается что во время работы прерывания по В не работает прерывание по А.

  • Алексей:

    Документация на ATtiny2313, страница 48, раздел 6.1. Черным по белому написано, что прерывание по Т0 COMPA имеет выше приоритет чем В. В таблице это 14 и 15 вектора. Еще вопросы есть?

  • Роман:

    Да, почему в моём случае наоборот и может ли одно прерывание прервать другое?

  • admin:

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

  • ether:

    Вроде ж в авр вложенные прерывания по умолчанию запрещены при входе в обработчик аппаратно включается глобальный запрет прерываний (сбрасывается флаг 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 есть? Если есть, то где? Заранее спасибо.

  • admin:

    Я уже давно перестал следить за обновками CAVR, в последний раз, около года назад можно было вынуть из CAVR coff файл и открыть его в AS6, но помоему оно работало через одно место. Как сейчас все изменилось не могу сказать.

  • Андрей:

    Хорошо, а устанавливать вместе AVR Studio 6 и AVR Studio 4, можно? И пользоваться чем нужно?

  • admin:

    Андрей, смотря с сегодняшней позиции, в пользу AS6
    за:
    Крупными проектами я бы несомненно стал бы заниматься в AS, мне нравится его редактор, мне понравилось как просто добавлялись проекты LUFA, нравится то что он бесплатный, код оптимизируется лучше чем в CAVR.

    против:
    у меня он никак не уживается на одной машине с Visual studio, а отдельную виртуалку держать для этого лень. отсутствие нативных библиотек, тормозит когда нужно по быстрому что то сляпать.

    Под avr studio4 я не писал, поэтому ничего не могу сказать, зато все эти годы я им пользовался как прошивайкой, это в нем работает просто замечательно. Для проверки идей мне хватает обрезанного CAVR

  • Таня:

    Atmel Studio 6 сильно отличается от ее же 7ой ?

  • admin:

    7 не доводилось пользоваться

  • dehkanin:

    Здравствуйте.
    Вот я, «почесавши репу» и собрав металлодетектор, задумался над возможностью обучения программирования для составления прошивок.
    Ну а перед началом реализации сей задумки открыл уже отработанные прошивки (в AtmelStudio) и задумался над содержимым. открылись 2 колонки слева-символы, иногда даже читаемые и несущие смысл, справа -строки: адрес строки и набор символов, скорее всего в шестнадцатиричной системе кодирования. Меняю содержимое строки в правой колонке, вижу, происходящие в связи с этим изменения в символах левой колонки.
    Однако! Каждая строка кода заканчивается кодом какого-то символа, которая, наверное, является проверочной? По крайней мере попытка поставить «абы-чо» реагируется красным цветом.
    Вот что это такое?
    Где бы про это прочитать?
    И как бы сделать правильно?

  • admin:

    почитайте про hex формат в гугле

  • pyzhman:

    «GCC сгенерил Hex вполтора раза меньше»
    Потому, что код GCC голый, а CV в шапке программы делает довольно полезные вещи.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Счетчик
Яндекс.Метрика