Пишем программы для микроконтроллеров AVR в среде Code::Blocks 10.5

    Привет, Хабр!

    В этом небольшом топике будет показано как использовать популярную IDE Code::Blocks 10.5 для написания программ для микроконтроллеров семейства AVR фирмы ATMEL.





    И так, начинается все со скачивания свободного GCC — компилятора C для AVR, который под Windows соответственно называется WinAVR.

    Сейчас самой новой версией является версия WinAVR-20100110.
    Этот файл скачиваем с SourceForge.

    Установка WinAVR



    Пакет просто устанавливается куда удобно, но, естественно, русских букв не должно быть в пути. После установки, путь к компилятору нужно добавить в PATH, чтобы все программы знали, что мы теперь гордые обладатели WinAVR.
    На этом все.

    Code::Blocks



    Code::Blocks установлена,
    Запускаем, создаем новый проект, выбираем AVR Project.



    Как видно, здесь много целевых платформ, и это является положительным качеством Code::Blocks.
    Выбираем тип процессора, который нас интересует, устанавливаем частоту тактирования,
    отмечаем галочками типы файлов, которые нам нужны для отладки.



    Пишем простую программу



    Красиво мигаем светодиодами, подключенными к PORTD.


    #include <avr/io.h>
    #include <avr/delay.h>
    int main (void)
    {
    int i=0;
    // set PORTD for output
    DDRD = 0xFF;

    while(1){
    for(i = 1; i <= 128; i = i*2)
    {
    PORTD = i;
    _delay_loop_2(30000);
    }

    for(i = 128; i > 1; i -= i/2)
    { PORTD = i;
    _delay_loop_2(30000);
    }
    }
    return 1;
    }




    нажимаем билд — без ошибок, 2 предупреждения.

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

    Для работы с компилятором из консоли нужен специальный makefile файл, который содержит информацию о типе процессора, тактовой частоте и прочих важных вещах.

    При работе с Code::Blocks необходимость заполнения вручную файла makefile отпадает. Потому как все можно настроить в окне настроек компиляции.
    Здесь же редактируется оптимизация и прочее прочее.



    Code::Blocks очень гибкая среда, которая подойдет многим.
    Подошла и мне, теперь я постоянно пишу в ней код для AVR, это удобно.

    Надеюсь информация была полезной.
    Поделиться публикацией

    Похожие публикации

    Комментарии 37

      +3
      Code::Blocks удобнее AVR Studio?
        +1
        AVR Studio специально создана для разработки под AVR, естественно она удобнее комбайнов типа Code::Blocks, но программировать можно.
          +4
          Code::Blocks, кроме всего прочего, кроссплатформенная
            –1
            Да, потому я ее и использую, кстати не только для программинга AVR :)
              0
                0
                Я в курсе, что AVR Studio можно под вайном пускать. Но тем не менее, в родной ОС предпочитаю плагин к Eclipse.
            0
            Есть еще замечательный плагин для Eclipse. Тоже неплохая альтернатива AVRStudio.
            0
            Установить следует и то и другое.
            В студии 4 было не очень удобно писать на С, но зато можно было отлаживать
            при помощи симулятора.
            Пятая студия пока еще сыровата и тяжеловата, но скоро думаю, у атмеловцев дойдут до нее руки,
            и можно будет переходить на нее.
              0
              Лишь бы они не забили на старое семейство. А то есть предпосылки. Вот что мешало им прикрутить оба симулятора сразу?
                0
                Думаю, они слишком много времени тратят на гонку в 16/32 битном сегменте с теми же lpc, smt.
                Остановились бы и пару месяцев разработчикам дали отладить среду с учетом требований пользователей.
            +12
            Процесс программирования МК AVR одной картинкой(найдена на avrfreaks.net):
            image
              0
              Супер! Я примерно так всё и делаю, только вместо nano — Geany (:
              0
              А чем он лучше AVR студии?
                0
                Извините :) Не прочитал выше
                0
                А я пользуюсь клоном, CodeLite.
                И для программинга avr в том числе. Очень удобно, особенно автодополнение. После авр студио 4 был рай =), а 5-ю я еще не пробовал.
                  0
                  Про Avr Studio 5 на форуме easyelectronics пишут, что она раздутая, код сишных библиотек там фиговенький («помигать светодиодиком стало вместо 1700 байт — 3300»), а Di Halt говорит, что ещё и с поддержкой кристаллов там всё плохо. А у меня после кошмарной Avr Studio 4 вообще желание трогать такое отбило.
                  Лучше уж Geany, Code::Blocks или Codelite использовать. Вроде, даже для Eclipse плагин есть.
                    0
                    Что в 4й студии кошмарного? Зато максимально полная поддержка всех камней, эмуляция и возможность трассировки, работа с отладчиком. Быстрый контроль всех ресурсов. Студия эт не только редактор кода, а еще система моделирования проекта.
                      0
                      Интерфейс стрёмный, редактор кода на уровне notepad, нестабильно работает: подвисает во время симуляции, иногда падает. Конечно, ко всему можно привыкнуть — особенно тебе, электронщику. Тебе, к примеру, Eagle удобным кажется, а я замучался на каждый чих тыкать кнопку в боковой панели или в качестве альтернативы учить стопицот шорткатов, зато в DipTrace освоился влёгкую. Мы из разных племён, и на разработку смотрим по-разному (:
                        0
                        Эмм да похрену на интерфейс, главное возможности. Я студию как симулятор и отладчик использую.

                        А codeblock сотоварищи умеет подцеплять отладку и гонять трассировку по коду? Ставить брейки на события и код? Интегрироваться в симуляционные среды вроде протеуса (хотя и работает через жопу) и Hapsim? Поддрживает генерацию потоков входящих данных через sti скрипты? Может вычислять вычисления таймингов работы потактово и по секундам?

                        Если нет, то нафиг он не нужен, т.к. работа с кодом это не вбивание текста с гламурной подсветочкой, а именно правка, отладка, прогон под трейсом, ловля брейкпоинтами битых векторов и срывов стека, отлов зафачивания памяти и прочий отладочный изврат. Тем более что размер проектов под МК не исчисляется сотнями файлов.

                        А Eagle очень удобен, но интерфейс у него интуитивно понятным не назвать, это факт. Чтобы в нем эффективно работать надо почитать мануал вдумчиво.
                        Во первых там рулят макросы и комбинации команд. Во вторых рулит игловская консоль (это, конечно, не автокадовская, но тоже ничо), ну и в третьих рулят разные мощные скрипты. В Четвертых — бесконечное undo — можно откатить плату до зачаточного состояния.

                        А диптрейс мне вот совсем не понравился. Очень уж у него неудобная навигация по комплектухе. Нет мгновенной форвард аннтотации (приходится обновлять). Ну и множество других шняжек.
                          0
                          Интерфейс к GDB есть, значит можно прицепить отладку, студия убога тем, что это путь в один конец, в AVR. А если хочется шаг влево, то типа ставить еще 100500 разных IDE? У меня все заточено под одну IDE, и на ней я одновременно собираю и GUI-программки под x86, и программки под MIPS архитектуру и под arm всех мастей от линуксовых до cortex'овских, ну и соответственно avr.
                            0
                            Да, уже неплохо. Жаль эмуляции нет. В AVR аппаратная отладка очень тормозная :(

                            Ну не знаю, для меня IDE это не более чем инструмент. Меня не обломает поставить под другой проц, например, Keil или что то еще. Главное чтобы функционал нужный был.
                            0
                            Если говорить именно про С++ под AVR то удобнее писать в Code::Block а вот отлаживать уже потом в студии. Для этом code::block генерирует специальный файл который студия легко подхватывает для отладки.

                              0
                              Хм. У меня написание это 5% остальное катание под отладчиком. Переключаться туда сюда это убиться можно.
                                0
                                А чего там переключатся перешел в соседнее окно делов то :)
                              0
                              Нет, в codeblocks я этим не пользуюсь,
                              даже не знаю насколько там адекватно серьезно отлаживать что-либо.
                              Обычно у меня открыта 2 окна: среда codeblocks и какой-нибудь эмулятор-отладчик,
                              либо сразу загружаю в железо и там уже гоняюсь.
                                0
                                Если бы Eagle на всех заводах брали (для изготовления PCB и монтажа), то он был бы лучшим вариантом. Но, к сожалению, с Eagle приходится возиться с экспортом в «станковые» форматы (GERBER), иначе на заводе Ваш проект не возьмут. А это как минимум неудобно. Поэтому PCAD все-таки ловчее.
                                  0
                                  Зато сдавая гербер ты на 100% уверен в том, что не будет никаких косяков. И получишь то что выдал. Опять же за конвертацию в гербер завод тоже может денежку потребовать.

                                  Тем более выдать гербер из игла это пару раз мышкой кликнуть. Я много раз делал платы на заводе, никаких проблем.
                                    0
                                    Конечно, с экспортом в GERBER особых проблем нет, когда разобрался. Но все равно неудобно. А на заводе они даже твой GERBER ковыряют/правят, поэтому отдавать что GERBER, что PCAD для «точности» — все едино. Денюшку за «подготовку производства» стрясут по-любому, в каком бы формате ты им не слал. Причем GERBER далеко не все заводы привыкли от пользователей брать, ждут PCAD и Altium.
                                      0
                                      С кем ни работал, и с нашими колхозникам и с Ебургом и с китайцами — гербер принимают все.

                                      А кто не принимает гербер?
                                        0
                                        Да вот, один сборщик/монтажник ООО «Мегаполис» сильно удивился, когда я им GERBER прислал. «Ой, а что это?.. Дайте PCAD».
                          0
                          Да, можно отлаживать в студии, но лучше в Proteus или MPLAB.
                            0
                            Гхм протеус глючно убогий слив. Максимум что в нем можно отладить это мигающий диодик. Попробуй, например, отладить в протеусе полный цикл i2c автомата на slave с отработкой перехвата адреса master контроллером.
                            Единственный вариат — подкючение к протеусу аврстудии через VSM плагин, но как то чрезжопно он работает. Вылетает и глючит адски. То ли сырой то ли протеус криво крякнутый. В общем я его снес пару лет назад и с тех пор на него время не терял
                            0
                            i) Кстати, почему «программинг»? Ведь «программирование» же…
                            ii) То, что Code::Blocks именно версии 10.5 — принципиально? Неплохо было бы эту информацию убрать.
                            iii) util/delay.h, а не avr/delay.h. Вообще, неясно, почему использована относительно внутренняя функция _delay_loop_2(), а не _delay_us(), но в случае использования первой корректнее использовать вообще util/delay_util.h.
                            iv) Конечно, это как кому, но лично мне Code::Blocks не очень удобен.
                            v) Так а статья-то о чём?
                              0
                              Принципиально, в ранних версиях нет поддержки AVR.
                              Это демонстрационный пример для мигания светодиодами, функция _delay_loop_2(x) отлично справляется с формирование задержек. Эта небольшая статья описывает среду в которой можно программировать МК, используя gcc-avr компилятор.
                                0
                                Просто мне кажется, что надо было оформить либо топиком-ссылкой, ну или поширше растечься мыслью по асфальту :)

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое