Учебный Курс. Программирование на Си. Часть 1. Я не раз и не два говорил, что изучение МК надо начинать с ассемблера. Этому был посвящен целый курс на сайте правда он не очень последовательный, но постепенно я его причесываю до адекватного вида. D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5:hardcore2-avr-list3.jpg' alt='Программирование Микроконтроллеров На Си Книги' title='Программирование Микроконтроллеров На Си Книги' />Программирование Микроконтроллеров На Си ШарпПрограммирование. В принципе программу на языке Си можно написать в любом виде, даже. AVR на микроконтроллере int short. В книге рассмотрено программирование на языке С микроконтроллеров AVR с использованием компилятора WinAVR, а также. Да, это сложно, результат будет не в первый день, но зато ты научишься понимать что происходит у тебя в контроллере. Будешь знать как это работает, а не по обезьяньий копировать чужие исходники и пытаться понять почему оно вдруг перестало работать. Кроме того, Си намного проще натворить быдлокода, который вылезет вилами в самый неподходящий момент. Поэтому я решил пойти с другой стороны сделать обучалку по Си, но с показом его нижнего белья. Хороший программист эмбеддер всегда крепко держит свою железку за шкварник, не давая ей ни шагу ступить без разрешения. Так что будет вначале Си код, потом то что родил компилятор и как все это работает на самом деле С другой стороны у Си сильная сторона это переносимость кода. Если, конечно, писать все правильно. Разделяя алгоритмы работы и их железные реализации в разные части проекта. Тогда для переноса алгоритма в другой МК достаточно будет переписать только интерфейсный слой, где прописано все обращение к железу, а весь рабочий код оставить как есть. И, конечно же, читаемость. Сишный исходник проще понять с первого взгляда хотя. Программирование Микроконтроллеров На Си С НуляВидео уроки по программированию для начинающих avr микроконтроллеры на си. В программе atmel studio или avr studio. Тема видео. Программирование микроконтроллеров на Си. Форум программистов и сисадминов Киберфорум Форум программистов C С для. Микроконтроллер на C C. Видео урок по программированию микроконтроллеров avr на си. Тема урока изучаем директивы условной компиляции. Программирование микроконтроллеров PIC16PIC18 на языке C. Статья вторая. Базовые сведения о платформе. Первая программа. C/099.gif' alt='Программирование Микроконтроллеров На Си' title='Программирование Микроконтроллеров На Си' />Этим моментам я тоже буду уделять внимание. В качестве подопытной железки на которой будет ставиться львинная доля всех примеров будет моя отладочная плата Pin. Board. Дальше все будет разжевано буквально по шагам для старта с полного нуля. Первая программа на Си для AVRВыбор компилятора и установка среды. Для AVR существует множество разных компиляторов Си В первую очередь это IAR AVR C почти однозначно признается лучшим компилятором для AVR, т. И этот компилятор мало того, что является дорогущим коммерческим софтом, так еще обладает такой прорвой настроек, что просто взять и скомпилить в нем это надо постраться. У меня с ним правда не срослось дружбы, проект загнивал на странных ошибках на этапе линковки позже выяснил, что это был кривой кряк. Полный опенсорц, кроссплатформенный, в общем, все радости жизни. Еще он отлично интегрируется в AVR Studio позволяя вести отладку прямо там, что адски удобно. В общем, я выбрал его. Также есть Code. Vision AVR C очень популярный компилятор. Стал популярен в связи со своей простотой. Рабочую программу в нем получить можно уже через несколько минут мастер стартового кода этом сильно способствует, штампуя стандартыне инициализации всяких уартов. Честно говоря, я как то с подозрением к нему отношусь как то раз приходилось дизасмить прогу написаную этим компилером, каша какая то а не код получалась. Жуткое количество ненужных телодвижений и операций, что выливалось в неслабый обьем кода и медленное быстродействие. Впрочем, возможно тут была ошибка в ДНК писавшего исходную прошивку. Плюс он хочет денег. Не так много как IAR, но ощутимо. А в деморежиме дает писать не более чем 2кб кода. Кряк конечно есть, но если уж воровать, так миллион, в смысле 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 и на основании этой переменной в твой проект подключается заголовочный файл с описанием адресов всех портов и регистров именно на этот контроллер. Ускоренный курс языка Си. В то же время, в целях ясности и простоты, следует вс же уделять внимание и стилю написания программного кода. Типичная структура программы на языке Си. Включение заголовочных файлов include lt avrio. Макродекларации define PI 3. Определение типа данныхtypedefstruct. Также комментарии могут быть использованы для временного исключения программных отрезков. Примеры двух методов комментариев. Однострочный комментарий Комментарием считается текст, находящийся после двух наклонных черт. Многострочный комментарий. Начало и конец комментария прописывается наклонными чертами и звздочками. Данные. Типы данных. Базовые типы данных языка Си. Тип Минимум Максимум Bitte Baite signed char 1. Слово signed, находящееся в скобках, использовать не обязательно, так как по умолчанию типы данных биполярные. Вместо этого используются массивы типа char их описание последует далее и алфавит ASCII, где у каждой буквы и знака имеется свой порядковый номер. Имена переменных могут содержать буквы латинского алфавита, номера и символ подчркивания. Имя не может начинаться с цифры. При декларировании переменной перед ней пишется тип данных. При присвоении значения переменной используется знак равно. Пример использования переменных. Присвоение c значения переменной. Значения констант не меняются в течение программы. Пример использования. Структура является комбинированным типом данных. Тип декларируется ключевым словом typedef. Пример структуры при создании и использовании типа данных. Декларирование нового пункта типа данныхtypedefstruct. Массивы могут быть многомерными таблица, куб и т. Пример использования одно и многомерных массивов. Декларирование одно и многомерного массиваchar text. Значения выражений могут быть присвоены переменным, их так же можно использовать в качестве параметров функции, а так же в различных условных предложениях. Примеры использования арифметических операций. Возведение в модуль, умножение и присвоение значения x получает значение 9. Оператор присваивания сложения x получает значение 1. Суффиксный декремент x получает значение 1. Логические операторы. Логические операторы логическое отрицание NOT, логическое И и логическое ИЛИ. Примеры использования. Отрицание c получит значение false, потому что а имеет значение true. Логическое И c получит значение false, так как один из операндов неверный. Логическое ИЛИ c получит значение true, так как один из операндов верный. Тип данных bool происходит из языка Си и в языке Си он отсутствует потому, что вместо него используются целые числа, где 0 имеет значение false и любое другое число значение true. Но для удобства в библиотеке Домашней Лаборатории используется вс же boolи определяется как unsigned char. Константа true имеет значение 1 и false значение 0. Операторами сравнения являются равенство, неравенство, больше, больше или равно, меньше lt и меньше или равно. Примеры использования. Больше, чем оператор сравнения, что true Скобки вокруг оператора только для ясности. Неравенство Результат false. Арифметический, логический операторы и оператор сравнения b получится false, так как операнд первого логического И неверный. Побитовые операторы. Побитовые операторы используются для манипуляций с данными в бинарных цифровых системах. Побитовые операторы схожи с логическими операторами, но отличаются тем, что операции выполняются с каждым битом отдельно, а не со всем числом. В языке Си побитовыми операторами являются инверсия, И, ИЛИ. Подробнее о них расскажет глава регистров AVR. У функции могут быть параметры, и она может вернуть одно значение. Если функция не возвращает значение, е тип void. Если у функции нет параметра, следует при использовании старого компилятора языка Си, прописать void вместо декларации параметров. Пример функции сложения и функции без возвращения. Декларация функции с двумя параметрами типа int Функция возвращает значение типа intint sumint a,int b. В программном коде функция должна быть задекларирована до места вызова. Пример вызова функции сложения. Вызов функции сложения Параметрами является переменная и значение константы. Вызов функции отключения Параметры отсутствуют. Ключевым словом условного оператора является if. Пример использования. Выражение верное и оператор будет выполнен, так как 2 1 больше, чем 2if21 2 x 5. Если x равен 5 и y 3, то выполняется следующий отрезок программыifx 5 y 3. Для этого требуется использовать ключевое слово else после условного оператора if. Пример использования. Оператор ветвления для сравнения yswitchy. Цикл выполняется до тех пор, пока i меньше, чем 5. В конце каждого цикла i увеличивается на единицуfori 0 i lt 5 i. Оператор continue начинает следующий цикл без выполнения последующего кода. Различием является то, что вывод производится в массив, указанный аргументом buffer, а не в стандартный выход в микроконтроллерах это обычно последовательный интерфейс. У функции имеется меняющееся количество аргументов, которые форматируются в соответствии с форматом. В текстовой строке формата маркер англ. В конец составленного текста автоматически добавляется нулевой байт, который обозначает окончание текстовой строки. Пользователь должен обеспечить, чтобы длинна составляемого текста и нулевого байта не превышала длину массива. Функция sprintf облегчает составление фраз и предложений из переменных разного типа. Функция возвращает длину текста, сохраннного в массиве длина не содержит нулевой байт. В случае ошибки возвращается отрицательное число. Количество маркеров должно совпадать с числом аргументов и их типы должны сочетаться. Так же аргументы должны быть представлены в том же порядке, что и маркеры. Для аргументов различного типа существуют маркеры соответствующего формата. Маркер Описание Пример c Char a i или d Integer 1. Real number 3. Text пример X Hexadecimal number 0x. F Утилиты общего назначения. В библиотеке стандартных функций stdio. Например, с их помощью можно преобразовывать текст в числа, соединять тексты и сравнивать их и многое другое. Сначала следует ввести число в генератор случайных чисел, на основании которого будет сгенерирован массив случайных чисел. Массив, основанный на одном номере, всегда одинаковый. Чтобы получить более случайный результат, функция может быть введена из значения, взятого из разъединенного АЦП.