Программирование микроконтроллеров для начинающих. Визуальное проектирование, язык C, ассемблер ( C

У нас вы можете скачать книгу Программирование микроконтроллеров для начинающих. Визуальное проектирование, язык C, ассемблер ( C в fb2, txt, PDF, EPUB, doc, rtf, jar, djvu, lrf!

Приведены готовые рецепты для программирования основных функций современной микроэлектронной аппаратуры: Особое внимание уделяется обмену данными микроэлектронных устройств с персональным компьютером, приводятся примеры программ.

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

Для учащихся, инженерно-технических работников и радиолюбителей. Микроконтроллеры, их возникновение и применение Предыстория микроконтроллеров Электроника в греческом стиле Почему AVR? Система команд AVR Команды передачи управления и регистр SREG Команды проверки-пропуска Команды логических операций Команды сдвига и операции с битами Команды арифметических операций Команды пересылки данных Команды управления системой Выполнение типовых процедур на ассемблере О стеке, локальных и глобальных переменных Глава 7.

Арифметические операции Стандартные арифметические операции Умножение многоразрядных чисел Деление многоразрядных чисел Операции с дробными числами Генератор случайных чисел Операции с числами в формате BCD Отрицательные числа в МК Глава 8. Программирование таймеров 8- и разрядные таймеры Формирование заданного значения частоты Отсчет времени Точная коррекция времени Частотомер и периодомер Частотомер Периодомер Управление динамической индикацией LED-индикаторы и их подключение Программирование динамической индикации Таймеры в режиме PWM Глава 9.

Команды Atmel AVR Арифметические и логические команды Команды операций с битами Команды сравнения Команды передачи управления Команды безусловного перехода и вызова подпрограмм Команды проверки-пропуска и команды условного перехода Команды переноса данных Команды управления системой Приложение 3. Словарь часто встречающихся аббревиатур и терминов Соответствие терминов на русском их переводу на английский Соответствие терминов на английском их переводу на русский Литература Предметный указатель.

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

Для этого, при помощи левостороннего сдвига битов разряов числа 1, создается битовая маска которую мы накладываем на содержимое регистра управления каналами порта DDRD при помощи битовой операции " " логическое ИЛИ. К каналам PD0 и PD1 ножки 2 и 3 чипа у нас подключены светодиоды, свечением которых мы и будем управлять. Также данную запись можно записать вот так: Более развернуто данную строку можно записать так: По завершению приведенных команд все начинается снова в бесконечном цикле " while 1 ".

Самое сложное к пониманию здесь это, пожалуй, работа с установкой нужных битов в портах. Более подробно данная тема освещена в статье: Работа с регистрами AVR микроконтроллера на Си, битовые операции. Если у вас уже настроена среда Geany то для компиляции достаточно нажать на панели инструментов кнопку "Compile". Для компиляции файла с программой на Си в консоли нужно выполнить команду:. Для извлечения данных и построения файла прошивки в формате Intel Hex нужно нажать в Geany кнопку "Build".

Из консоли получить нужный файл можно при помощи команды:. Теперь, когда у нас есть файл с прошивкой в формате Intel HEX останется записать его содержимое прошить во флешь-памяти микроконтроллера, выполнить эту операцию можно нажав в подготовленной нами среде Geany кнопку "Run or view current file" Execute. В консоли выполнить прошивку можно при помощи avrdude командой для ATmega8 параметр "-p m8", программатор USBAsp "-c usbasp":.

Сразу после прошивки на МК будет послана команда сброса RESET и программа начнет выполняться в кристалле, о чем будут свидетельствовать помигивающие светодиоды. Это поможет обнаружить ошибки и замечания если что-то не будет работать так как нужно. Герберт Шилдт - Полный справочник по C: Это оцифрованные электронные версии книг с очень удобной навигацией, которые были найдены в сети. Все права на содержимое этих книг принадлежат их авторам.

По возможности купите себе хороший и свежий справочник по Си в бумажном виде для удобного обучения и работы. По приведенной выше ссылке можно почитать документацию на английском языке прямо на сайте или же скачать ее одним файлом в форматах HTML и PDF, там есть вся необходимая информация по использованию библиотеки avr-libc для программирования AVR микроконтроллеров.

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

В этом видео программатор USBAsp уже отключен, а питание схемы на микроконтроллере осуществляется от батареи КРОНА с напряжением 9В через схему стабилизатора напряжения которая обеспечивает на выходе стабильные 5В. Не слишком ли сложно для новичков работать с портами побитно через сдвиги и логические операции?

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

Чем раньше будущий разработчик программ для МК ознакомится с этой информацией - тем лучше, поскольку при программировании МК и периферии очень часто придется иметь дело с отдельными битами и не важно на каком языке пишется программа - на Си или Ассемблере.

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

Банально на примерах из одной байтных чисел. И я бы не советовал новичькам такую литературу как Язык программирования C c Керниган и Ричи, там материал подан для тех кто знает поднаготную С и просто хочет закрепить свою базу.

В самом крайнем случае можно посоветовать литературу из разряда С для чайников как по мне там уж больно для даунов все расписано - она даст возможность постепенно въехать в курс. Для серьйозной разработки софта для МК обязательно нужно знать асемблер и ещё какойнить высокоуровневый язык в данном случае Си. Для ардуиншиков хватит и простого Си, ведь как я понял ардуино это всеголишь задефайненый Си? Цель данной статьи - это скорее дать возможность "пощупать" как все работает, а по программированию сейчас доступно очень много литературы и материалов, было бы желание и время для изучения.

При разработке программ в среде Ардуино оболочка прячет от пользователя много разной нужной "черновой" работы, многое делается "за кулисами" чтобы обезопасить пользователя от ошибки и упростить процесс написания программы. Итого около тактов для Risk процессора. Неужели просто бит записать за один такт он не умеет и нет такой команды? Компилятор языка C AVR GCC трансформирует их так, что операция левостороннего сдвига числа 1 получит константный эквивалент "0b", поэтому исполняемый код после компиляции будет идентичен скомпилированному коду следующей команды:.

Тем не менее, иногда случается так что некоторые из этих оптимизаций могут быть не очень удачными в плане производительности. Конструкции кода на Си, в которых выявлены большие потери ресурсов CPU, можно заменить более производительными вставками идентичного по назначению кода на языке Ассемблера.

Пример вставки ассемблерного кода в Си, в котором вызываем оператор "nop" No OPeration, утилизирует один такт CPU не выполнив никакой операции:. Рассмотрим еще один пример. Имеются две конструкции, в которых устанавливаем значения четырех регистров порта:.

Из первой конструкции легко понять какие регистры порта будут установлены, чего не скажешь о второй. В AVRStudio или консольном симуляторе simulavr можно поэкспериментировать с производительностью различных конструкций кода на Си и Ассемблере, можно понаблюдать за значениями счетчика циклов CPU, расчетным временем выполнения, а также за состоянием памяти, регистров и т.

Спасибо за подробные ответы. Еще вопрос если PORTD часть выводов настроено на ввод, а часть на вывод это не влияет на маски, налагаемые на регистры? Можете выполнить эксперимент с программой, которая приведена в статье: Теперь пин PD1, к которому подключен один из светодиодов, будет настроен на ввод по умолчанию , в цикле программы в регистре PORTD соответствующий бит этого пина будет то устанавливаться 1 то сбрасываться 0 но светодиод не будет мелькать поскольку пин сконфигурирован на ввод в регистре DDRD.

А зачем нужны эти логические элементы, если можно обойтись без них. Поскольку константа PB1 имеет значение 1, то выполнив левосторонний сдвиг числа 1 на 1 позицию получим число , которое и будет записано в PORTB - светодиод засветится.

Posted In русском