26.07.2017

Avr Studio 4 Учебник На С

Avr Studio 4 Учебник На С

Учебный Курс. Программирование на Си. Часть 1. Я не раз и не два говорил, что изучение МК надо начинать с ассемблера. Этому был посвящен целый курс на сайте (правда он не очень последовательный, но постепенно я его причесываю до адекватного вида) .

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

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

Видео уроки по программированию для начинающих avr. В программе atmel studio или avr studio. Тема видео урока. Еще он отлично интегрируется в AVR Studio позволяя вести отладку прямо там. Учебник по программированию микроконтроллеров AVR на языке ассемблера. Разработка программ в IDE AVR Studio. Принцип работы ассемблера .

Так что будет вначале Си код, потом то что родил компилятор и как все это работает на самом деле : )С другой стороны у Си сильная сторона это переносимость кода. Если, конечно, писать все правильно. Разделяя алгоритмы работы и их железные реализации в разные части проекта. Тогда для переноса алгоритма в другой МК достаточно будет переписать только интерфейсный слой, где прописано все обращение к железу, а весь рабочий код оставить как есть. И, конечно же, читаемость. Сишный исходник проще понять с первого взгляда (хотя. Этим моментам я тоже буду уделять внимание.

В качестве подопытной железки на которой будет ставиться львинная доля всех примеров будет моя отладочная плата Pin. Board. Дальше все будет разжевано буквально по шагам для старта с полного нуля. Первая программа на Си для AVRВыбор компилятора и установка среды. Для AVR существует множество разных компиляторов Си: В первую очередь это IAR AVR C — почти однозначно признается лучшим компилятором для AVR, т. И этот компилятор мало того, что является дорогущим коммерческим софтом, так еще обладает такой прорвой настроек, что просто взять и скомпилить в нем это надо постраться. У меня с ним правда не срослось дружбы, проект загнивал на странных ошибках на этапе линковки (позже выяснил, что это был кривой кряк).

Полный опенсорц, кроссплатформенный, в общем, все радости жизни. Еще он отлично интегрируется в AVR Studio позволяя вести отладку прямо там, что адски удобно. В общем, я выбрал его. Также есть Code. Vision AVR C — очень популярный компилятор. Стал популярен в связи со своей простотой. Рабочую программу в нем получить можно уже через несколько минут — мастер стартового кода этом сильно способствует, штампуя стандартыне инициализации всяких уартов. Честно говоря, я как то с подозрением к нему отношусь — как то раз приходилось дизасмить прогу написаную этим компилером, каша какая то а не код получалась.

Жуткое количество ненужных телодвижений и операций, что выливалось в неслабый обьем кода и медленное быстродействие. Впрочем, возможно тут была ошибка в ДНК писавшего исходную прошивку. Плюс он хочет денег. Не так много как IAR, но ощутимо. А в деморежиме дает писать не более чем 2кб кода.

В качестве примера используются микроконтроллеры AVR фирмы Atmel.

Кряк конечно есть, но если уж воровать, так миллион, в смысле IAR : ) Еще есть Image Craft AVR C и Micro. C от микроэлектроники. Ни тем ни другим пользоваться не приходилось, но вот SWG очень уж нахваливает Micro. Pascal, мол жутко удобная среда программирования и библиотеки. Думаю Micro. C не хуже будет, но тоже платный. Как я уже сказал, я выбра Win.

AVR по трем причинам: халявный, интегрируется в AVR Studio и под него написана просто прорва готового кода на все случаи жизни. Так что качай себе инсталяху Win.

AVR с официального источника и AVR Studio. Далее вначале ставится студия, потом, сверху, накатывается Win. AVR и цепляется к студии в виде плагина. Cоздание проекта. Итак, студия поставлена, Си прикручен, пора бы и попробовать что нибудь запрограммировать. Начнем с простого, самого простого.

Запускай студию, выбирай там новый проект, в качестве компилятора AVR GCC и вписывай название проекта. Также не забудь поставить галочу Create Folder, чтобы у тебя все сложилось в одной директории.

Ну и укажи место Location, где будет лежать проект. Указывай по короткому пути, что то вроде C: \AVR\ Как показывает практика, чем короче путь тем лучше — меньше проблем при компиляции и линковке проектов. Проц у меня в Pinboard по дефолту ATmega.

Те же у кого в Pin. Board стоит Mega. Открывается рабочее поле с пустым *. Для этого слазь по адресу: Меню Tools — Options — General — File. Tabs и выбираем в выпадающем списке «Filename Only».

Иначе работать будет невозможно — на вкладке будет полный путь файла и на экране будет не более двух трех вкладок. Настройка проекта. Вообще, классическим считается создание make файла в котором бы были описаны все зависимости. И это, наверное, правильно.

Но мне, выросшему на полностью интегрированных IDE вроде u. Vision или AVR Studio этот подход является глубоко чуждым. Поэтому буду делать по своему, все средствами студии. Тыкай в кнопку с шестеренкой. Это настройки твоего проекта, а точнее настройки автоматической генерации make файла.

На первой странице надо всего лишь вписать частоту на которой будет работать твой МК. Это зависит от фьюз битов, так что считаем что частота у нас 8. Гц. Также обрати внимание на строку оптимизации. Сейчас там стоит - Os это оптимизация по размеру.

Пока оставь как есть, потом можешь попробовать поиграться с этим параметром. Следующим шагом будет настройка путей. Первым делом добавь туда директорию твоего проекта — будешь туда подкладывать сторонние библиотеки. На этом пока все. Жми везде ОК и переходи в исходник. Постановка задачи.

Чистый лист так и подмывает воплотить какую нибудь хитрую задумку, так как банальное мигание диодом уже не вставляет. Давай уж сразу брать быка за рога и реализуем связь с компом — это первым делом что я делаю. Работать будет так: При приходе по COM порту единички (код 0х.

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

То есть Rx контроллера соединяем с Tx конвертера, а Tx конвертера с Rx контроллера. Кроме того, через USART мы теперь сможем достучаться до загрузчика (Pinboard идет с уже прошитым загрузчиком) и прошить наш контроллер не используя программатор. Также накинем джамперы, соединяющие LED1 и LED2. Тем самым мы подключим светодиоды LED1 и LED2 к выводам PD4 и PD5 соотверственно. Получится, в итоге вот такая схема: Подключение остальных выводов, питания, сброса не рассматриваю, оно стандартное. Пишем код. Сразу оговорюсь, что я не буду углубляться конкретно в описание самого языка Си.

Для этого существует просто колоссальное количество материала, начиная от классики «Язык программирования Си» от K& R и заканчивая разными методичками. Одна такая метода нашлась у меня в загашнике, я когда то именно по ней изучал этот язык. Там все кратко, понятно и по делу. Я ее постепенно верстаю и перестаскиваю на свой сайт.

Посмотреть оглавление. Добавляем библиотеки. Первым делом мы добавляем нужные библиотеки и заголовки с определениями.

Ведь Си это универсальный язык и ему надо обьяснить что мы работаем именно с AVR, так что вписывай в исходник строку: Этот файл находится в папке Win. AVR и в нем содержится описание всех регистров и портов контроллера. Причем там все хитро, с привязкой к конкретному контроллеру, который передается компилятором через make файл в параметре MCU и на основании этой переменной в твой проект подключается заголовочный файл с описанием адресов всех портов и регистров именно на этот контроллер. А чтобы директива могла этот файл найти мы и указывали пути к нашему проекту (директория Win.

AVR там уже по дефолту прописана). Главная функция. Программа на языке Си вся состоит из функций. Они могут быть вложенными и вызываться друг из друга в любом порядке и разными способами. Каждая функция имеет три обязательных параметра: Возвращаемое значение, например, sin(x) возвращает значение синуса икс. Как в математике, короче.

Все значения передаваемые и возвращаемые обязаны быть какого либо типа, в зависимости от данных. Любая программа на Си должна содержать функцию main как точку входа в главную прогрмму, иначе это нифига не Си : ). По наличию main в чужом исходнике из миллиона файлов можно понять, что это и есть головная часть программы откуда начинается все. Вот и зададим: 1. Разберем что же мы сделали.

Поэтому GCC на void main(void) ругается Warning’ом. Это не ошибка, работать будет, но я не люблю варнинги. Заглушка, применяется тогда когда не надо ничего передавать или возвращать. Вот такие вот . Хотя это все равно не имеет смысла, т. Я возвращаю нуль.

А компилятор обычно умный и на этот случай код не генерит. Хотя, если извратиться, то из main на МК выйти можно — например вывалиться в секцию бутлоадера и исполнить ее, но тут уже потребуется низкоуровневое ковыряние прошивки, чтобы подправить адреса перехода. Ниже ты сам увидишь и поймешь как это сделать. Вот это уже другой вопрос, в 9.

Сделали, поехали дальше. Добавим переменную, она нам не особо нужна и без нужны вводить переменные не стоит, но мы же учимся. Если переменные добавляются внутри тела функции — то они локальные и существуют только в этой функции. Когда из функции выходишь эти переменные удаляются, а память ОЗУ отдается под более важные нужды. Дело в том, что в двоичном представлении у нас старший бит отводится под знак, а значит в один байт (char) влазит число +1. Обычно знак не нужен.

Так что unsigned. Не более того. Теперь надо проинициализировать порты и UART. Конечно, можно взять и подключить библиотеку и вызвать какой нибудь Uart. Талон Об Откреплении От Старой Поликлиники. Init(9. 60. 0); но тогда ты не узнаешь что же произошло на самом деле. Делаем так: 1. int main(void)?

На самом деле реалного кода тут всего пять последних строк. Все что #define это макроязык препроцессора. Почти та же ботва, что и в Ассемблере, но синтаксис несколько иной. В первой строке мы говорим что вместо XTAL можно смело подставлять 8.

L— указание типа, мол long — это тактовая частота процессора. В HI делается сдвиг икса (входной параметр макроса) восемь раз в вправо, в результате от него останется только старший байт. А в LO мы делаем побитовое И с числом 0.

Програмирование в AVR Studio 5 с самого начала. Часть 1 » Журнал практической электроники Датагор (Datagor Practical Electronics Magazine). Каждый человек, который только начинает осваивать программирование микроконтроллеров, да и вообще программирование, упирается сразу в несколько вопросов: 1. Какой микроконтроллер выбрать для максимально быстрого освоения? Какой основной инструмент (программу) использовать для начала работы? Какие аппаратные средства доступны для начала программирования?

Какую литературу использовать? Где общаться и получать вразумительные советы? Когда я начинал, то сам столкнулся с этими вопросами.

Начал искать литературу и решил, что надо начинать с PIC- ов. Перевес в сторону PIC- ов определился из за небольшого количества команд микропроцессоров среднего семейства  — всего 3. AVR, и наличием IDE  — интегрированной среды разработки MPLAB. К сожалению, до последнего времени для микроконтроллеров AVR не было удобной интегрированной среды разработки, многие пользовались AVR Studio 4, кто то писал на C в IAR, для отладки пользовались дополнительными программами, все зависило от личных приоритетов. В этом году компания ATMEL наконец то «родила» IDE — AVR Studio 5 для программирования микроконтроллеров AVR.

Много критических замечаний было сказано в адрес этой программы, но она существует и работает, возможно, компания со временем учтет все критические замечания, и сделает программу более гибкой, совершенной и не такой большой по размеру. Конечно по объему это монстр — инсталлируемый файл занимает 6. МБайт. Но, есть в ней и определенные удобства в работе, и не только для начинающих! Программа ориентирована для работы в среде C, но ассемблер поддерживается полностью. Выбор микроконтроллера определяется теми задачами, которые вы перед собой поставили.

Микроконтроллеры AVR имеют «избыточный» набор команд, и поэтому большинство программистов используют в среднем около 4. С другой стороны, когда требуется нетипичное решение, дополнительные команды могут оказаться весьма кстати, позволяя значительно сократить объем программы. Технология производства микроконтроллеров сегодня одинакова как для PIC так и для AVR  — RISC (Reduced Instruction Set Computer) — микроконтроллеры с сокращенным набором команд. Большинство из них имеют флеш- память, которая позволяет многократно их перезаписывать. Кроме этого микроконтроллеры AVR работают в 4 раза быстрее микроконтроллеров PIC.

Для начала, чтобы начать писать программы, нужно скачать интегрированную среду разработки AVR Studio 5(Прямая ссылка на as. Mb), будет работать, пока не смениться билд.)А чтобы наглядно видеть результат своей работы, не используя паяльник или макетную плату достаточно установить программу Proteus v.

AVR Studio 5 поддерживает программатор STK- 5. Рекомендую книгу: Джон Мортон.

Вводный курс». Советы вы можете получать на любом форуме, где так или иначе затронуты темы по микроконтроллерам. Главное на форумах правильно формулировать вопросы, чтобы четко получать ответы. Абстрактные вопросы не приветствуются, и скорее всего вместо ответа вы получите жесткую критику, или ваш вопрос останется без внимания! Скачать AVR Studio 5 можно, например, с официального сайта после бесплатной регистрации. Proteus вместе с патчем можно найти в Сети. AVR Studio 5. Создание проекта. Примечание: AVR Studio «не любит» русских названий, поэтому проекты должны быть с английской транскрипцией.

Старайтесь размещать проекты по кратчайшему пути к основному диску, избегать ветвлений в путях доступа к файлам проекта. Запускаем программу, после некоторого «молчания» появляется окно: В левом верхнем углу кликаем New Project. Но для того, чтобы правильно писать, нужно соблюдать определенные правила. В следующей статье рассмотрим, как это сделать.

Самоучитель AVR Studio. В настоящее время микроконтроллеры AVR фирмы ATMEL получили весьма широкое распространение. Это обусловлено небольшой стоимостью, развитой периферией, доступностью и удобством средств разработки.

Несомненным достоинством процессоров этой серии является возможность внутрисхемного программирования с использованием интерфейса SPI. Для начала работы с этими микроконтроллерами необходимо обзавестись какими либо средствами осуществляющими внутрисхемное программирование. Существует достаточно большое количество различных конструкций программаторов, но на первоначальном этапе вполне подойдет адаптер STK2. В данной статье я попытаюсь подробно описать процесс сборки этого адаптера. Причем настоятельно рекомендую повторить конструкцию именно так, как описано, а не на куске макетной платы.

Рекомендация вытекает из шести летнего использования адаптера собранного на чем попало.