Site Loader

Программирование микроконтроллеров AVR: от Arduino к ассемблеру (Юрий Ревич)

1 126 ₽

800 ₽

+ до 168 баллов

Бонусная программа

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

Офлайн

Цена на сайте может отличаться от цены в магазинах сети. Внешний вид книги может отличаться от изображения на сайте.

В наличии в 103 магазинах. Смотреть на карте

Цена на сайте может отличаться от цены в магазинах сети. Внешний вид книги может отличаться от изображения на сайте.

Рассмотрено практическое программирование микроконтроллеров AVR, в том числе популярной платформы Arduino. Рассказано, как выйти за рамки ограничений Arduino, когда следует применять прямое программирование на ассемблере, а когда использовать языки высокого уровня.

Изложены общие принципы устройства микроконтроллеров AVR и их программирования, система команд, программирование таймеров, арифметические операции, память, интерфейсы, режимы энергосбережения и сторожевой таймер, программы реального времени, обмен данными с персональным компьютером. Особое внимание уделено переносу типичных Arduino-проектов на ассемблер.

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

Для учащихся, инженерно-технических работников и радиолюбителей.

На товар пока нет отзывов

Поделитесь своим мнением раньше всех

Как получить бонусы за отзыв о товаре

1

Сделайте заказ в интернет-магазине

2

Напишите развёрнутый отзыв от 300 символов только на то, что вы купили

3

Дождитесь, пока отзыв опубликуют.

Если он окажется среди первых десяти, вы получите 30 бонусов на Карту Любимого Покупателя. Можно писать неограниченное количество отзывов к разным покупкам – мы начислим бонусы за каждый, опубликованный в первой десятке.

Правила начисления бонусов

Если он окажется среди первых десяти, вы получите 30 бонусов на Карту Любимого Покупателя. Можно писать неограниченное количество отзывов к разным покупкам – мы начислим бонусы за каждый, опубликованный в первой десятке.

Правила начисления бонусов

Книга «Программирование микроконтроллеров AVR: от Arduino к ассемблеру» есть в наличии в интернет-магазине «Читай-город» по привлекательной цене. Если вы находитесь в Москве, Санкт-Петербурге, Нижнем Новгороде, Казани, Екатеринбурге, Ростове-на-Дону или любом другом регионе России, вы можете оформить заказ на книгу Юрий Ревич «Программирование микроконтроллеров AVR: от Arduino к ассемблеру» и выбрать удобный способ его получения: самовывоз, доставка курьером или отправка почтой.

Чтобы покупать книги вам было ещё приятнее, мы регулярно проводим акции и конкурсы.

Урок 21. BASCOM-AVR и Arduino

Не так давно я заинтересовалась популярной платформой для разработки электронных устройств, это – Arduino. Сначала эта платформа  мне очень понравилась ввиду её простоты, универсальности и удобства. Свою написанную программу можно оперативно загрузить в микроконтроллер по COM или USB порту, не прибегая к помощи программатора.  Я собрала себе клон Arduino под названием FreeduinoMax232. И начала изучать для себя невиданную среду программирования Processing, начала писать на ней простенькие программки для мигания светодиодами и прочими вещами. Но моя радость была не долгой. Во-первых, потому что для меня Processing жутко неудобная среда и язык программирования C в ней мне не по душе. Во-вторых, размер программ (скетчей) написанных в Processing жутко большой, например программа, которая просто мигает светодиодом, занимает 890 байт Flash памяти микроконтроллера. Это много, и с этим можно сразу забыть маленькие микроконтроллеры серии Attiny.

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

Моя самодельная плата Arduino:

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

Начиная с версии 2.0, в BASCOM-AVR включена поддержка Arduino, для использования его как программатора, который программирует сам себя. Давайте разберемся, как нам программировать Arduino из BASCOM-AVR. Для начала запустим BASCOM-AVR и пройдём в меню настроек по цепочке

Options – Programmer, вот так:

Далее увидим следующую картину:

Здесь, в выпадающем списке сверху, где “Programmer” нужно выбрать “ARDUINO”. Также в выпадающем списке “COM-port” выберите порт к которому у вас подключена плата Arduino. В поле “BAUD” выберите “19200”. Всё это уже показано на скрине выше. После установки всех этих настроек нажмите кнопку “Ok”. Теперь можно писать программу и прошивать её в плату! Для тестирования, давайте напишем классическую “мигалку” светодиода подключённого к PORTB.5 микроконтроллера (на платах Arduino там уже есть светодиод под названием L).

Исходный код программы:

$regfile = "m8def.dat"
$crystal = 16000000
Config Portb.5 = Output
Do
Portb.5 = 1
Wait 1
Portb.5 = 0
Wait 1
Loop
End

После написание программы откомпилируем её, для этого пройдем по цепочке Program – Compile или-же просто нажмём клавишу F7. После компиляции программы можно прошивать её в нашу Arduino, пройдём по цепочке Program – Send to chip – Program.

И увидим окно программы программатора:

Теперь чтобы прошить нашу программу остался один шаг, это пройти по цепочке Chip – Write buffer into chip, или нажать на следующею кнопку:

После этого начнётся прошивка Arduino, при этом светодиоды TX и RX на плате будут быстро мигать. После прошивки, внизу окна, где техническая информация появятся сообщения:

Поздравляю! Мы успешно прошили плату Arduino из BASCOM-AVR, мы их подружили!

Светодиод L на плате должен весело мигать:

 

Кстати, размер программы “мигалки” написанной в BASCOM-AVR составил всего лишь 192 байта, намного меньше и лучше чем в Processing, правда?

Этот метод прошивки можно использовать на всех платах Arduino и их клонах. Но помните про распиновку выводов, BASCOM-AVR знает только “настоящие” порты и пины микроконтроллеров, не “Ардуиновские”! В файлах к статье вы можете найти исходник и файл прошивки программы «мигалки».

Теги:
  • Микроконтроллер
  • Arduino
  • BASCOM-AVR
  • AVR
Аппаратное обеспечение

— в чем разница/связь между AVR и Arduino?

спросил

Изменено 3 года, 10 месяцев назад

Просмотрено 42к раз

Недавно я заинтересовался аппаратным программированием, но еще не начал.

Я немного поискал и имею смутное представление:

Arduino представляет собой комбинацию обоих чипов. и макетная плата.

AVR — это один чип, и вам нужно купить макетная плата для начала.

Верно это утверждение или нет?

  • оборудование
  • ардуино
  • авр

0

AVR — это всего лишь микросхема интегральной схемы производства Atmel. Это выглядит примерно так:

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

Arduino — это процессор AVR со специальным кодом, который позволяет использовать среду Arduino для простого программирования и загрузки кода. Все, что вам нужно, это USB-кабель для программирования и связи с ним. Это выглядит примерно так:


(источник: mitchellpage.com.au)

Технически макетная плата выглядит так и может быть полезна при работе с Arduino. Это не обязательно необходимо для любого решения, но полезно.

Если вы задаете подобные вопросы, вам следует ознакомиться с учебными пособиями по Arduino на сайте adafruit. Они очень простые и научат вас тому, что вам нужно знать, чтобы начать.

0

AVR — архитектура процессора. Это дизайн того, как процессор должен работать, как x86 и ARM. Atmel продает аппаратное обеспечение с архитектурой AVR в 8-, 16- и 32-разрядной архитектуре через такие продукты, как ATTiny, ATMEGA и т. д.

Arduino продает платы, предназначенные для любителей, которые могут быстро собрать что-то вместе с небольшим знанием базового оборудования. . Эти платы обычно имеют ATMEGA.

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

AVR — микроконтроллер семейства ATMEL, используемый в Arduino. ARM — это микропроцессор. Большинство плат Arduino поставляются с контроллерами AVR. Недавно был запущен Arduino Due, основанный на процессоре ARM. Надеюсь, этого достаточно, чтобы разобраться между AVR, ARM, Arduino(‘,’)

То, что вы сказали правильно — AVR — это семейство микросхем, используемых в Arduino. Существует целая куча 8-битных AVR с различными конфигурациями флэш-памяти, оперативной памяти, периферийных устройств и выводов, а также множество различных плат и клонов Arduino.

Однако, в то время как программное обеспечение для AVR обычно разрабатывается на языке ассемблера, C или Basic и загружается в микросхему с помощью аппаратного программатора, Arduino включает в себя кросс-платформенную IDE (см. страницу Википедии), которая разработана для того, чтобы упростить начало работы. . Программное обеспечение разработано на C-подобном языке (примерно на основе Processing) и поддерживает загрузку программного обеспечения на устройство с помощью всего лишь USB-кабеля.

К чему все это сводится? Arduino поможет вам быстрее приступить к работе, и вы быстрее увидите результаты (и они становятся очень популярными в сообществе производителей и любителей) — плюс Arduino Sheild, которые подключаются для обеспечения дополнительных функций, являются бонусом. Получение чипа, макетной платы и программатора (возможно) даст вам немного больше возможностей и гибкости, а травление ваших собственных печатных плат (опционально) — это взрыв!

1

Если использовать аналогию, Arduino похож на программную среду, а микроконтроллер AVR похож на язык программирования.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Использование библиотек Arduino для обычного кода AVR

Как получить определения для

неопределенная ссылка

Сообщение неопределенная ссылка на 'xxxxxxxxx' означает, что компоновщик не может найти фактическое определение (а не просто объявление) для рассматриваемой функции.

Если компоновщик не может найти определение функции, это определение обычно находится в файле lib (например, *.so или *.dll) или в исходном файле (например, *.cpp или *.c ). Для вашего Arduino вам нужно указать avr-gcc скомпилировать и связать файлы Arduino *.cpp. Вам нужны все исходные файлы из ядра Arduino.

 ARDCOREDIR = <моя папка arduino>/hardware/arduino/cores/arduino
 

Судар дал хороший совет, выступая за использование Makefile для AVR, который настроен на включение функций Arduino определений . (Я приведу ссылку на свою и объясню ее ниже.)

В моем make-файле я обработал эту операцию следующим образом:

 # CPP_SOURCE_FILES — это ранее определенная переменная, содержащая исходные файлы моего проекта.
CPP_SOURCE_FILES += $(отфильтровать $(ARDCOREDIR)/main.cpp, $(подстановочный знак $(ARDCOREDIR)/*.cpp))
 

Обратите внимание, что я пропустил файл main.cpp, потому что файл main.cpp Arduino определяет main() , и я хочу определить его самостоятельно в своих собственных файлах проекта.

Необходимые файлы заголовков

Конечно, вы также должны передать avr-gcc флаг включения для заголовков arduino:

 -I$(ARDCOREDIR)
 

И вы должны включить файл Ardhuino.h в фактический код вашего проекта:

 #include 
 

Файл заголовка Arduino.h будет включать в себя все остальные файлы заголовков Arduino, включая файл выводов, в котором содержатся определения контактов Arduino. Разные платы Arduino должны иметь разные файлы распиновки, поэтому определите, какой тип вы используете, и скажите avr-gcc включить каталог, содержащий соответствующий файл распиновки. Если вы используете стандартный Arduino (UNO), используйте следующее:

 -I$(ARDCOREDIR)/../../варианты/стандарт
 

My Makefile

В процессе сборки необходимо не только реализовать несколько инструкций, описанных выше, но и знать, как создать файл .hex, который будет запрограммирован на Arduino (или AVR). Поэтому рекомендуется использовать make-файл.

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

Пример короткого (не базового) Makefile для одного проекта на моей машине:

 # Это имя создаваемого файла. (Это также имя моего основного исходного файла без расширения файла.)
ЦЕЛЬ = температура
# создаем переменную, относящуюся только к этому проекту
MY_OWN_LIBRARY_DIR = /usr/home/MJ/Arduino/libraries/mj_midi
# "EXTRAINCDIRS" - это переменная, используемая базовым make-файлом. Базовый make-файл создает флаг компилятора -I для каждого элемента в списке EXTRAINCDIRS.
EXTRAINCDIRS = $(MY_OWN_LIBRARY_DIR)
# указать *.c исходные файлы, относящиеся к моему проекту
СРЦ =
# указать исходные файлы *.cpp, относящиеся к моему проекту
PSRC = temp.

alexxlab

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

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