Обычно программы микроконтроллера ATmega, написанные на С или Ассемблере загружаются в микроконтроллер через интерфейс ICSP с помощью программатора (рис. 1.2). Возможно, самая важная особенность Arduino - непосредственное программирование через USB-порт, без дополнительного программатора. Эту функцию обеспечивает загрузчик Arduino, записанный в микроконтроллер ATmega на заводе-изготовителе, и позволяющий загружать пользовательскую программу на плату Arduino по последовательному порту USART.
В случае Arduino Uno и Mega 2560 интерфейсом между кабелем USB и контактами USART на основном микроконтроллере служит дополнительный контроллер (ATmega 16U2 или 8U2 в зависимости от версии платы). На плате Arduino Leonardo установлен основной микроконтроллер ATmega 32U4, имеющий встроенный контроллер USB. В более старых платах Arduino функцию сопряжения между последовательным портом ATmega и интерфейсом USB выполняла специальная микросхема.
Загрузчик - это фрагмент программного кода, который записан в зарезервированное пространство памяти программы Arduino. Микроконтроллеры AVR обычно программируются с помощью ICSP, который взаимодействует с микроконтроллером через последовательный периферийный интерфейс (SPI). Этот способ предполагает наличие программатора, например, STK500 или ISP MKII ( см. рис. 1.2).
Рис. 1.2. AVR программатор ISP MKII
Сразу после включения платы Arduino запускается загрузчик, который работает в течение нескольких секунд. Если за это время загрузчик получает команду программирования от IDE по последовательному интерфейсу UART, то он загружает программу в свободную область памяти микроконтроллера. Если такая команда не поступает, запускается последняя программа, находящаяся в памяти Arduino.
- 31 -
При подаче команды загрузки от IDE Arduino вспомогательный контроллер (ATmega 16U2 или 8U2 в случае Arduino Uno) сбрасывает основной микроконтроллер, подготавливая его к загрузке. Затем внешний компьютер начинает отправлять код программы, который микроконтроллер получает через соединение UART.
Загрузчики занимают в памяти довольно много места, потому что они реализуют простое программирование через USB без внешних аппаратных средств. Однако у них есть два основных недостатка: + они занимают место в памяти (приблизительно 2 Кбайт), которое могло бы пригодиться при написании программ; + при наличии загрузчика выполнение вашей программы всегда будет задерживаться на несколько секунд при начальной загрузке, поскольку загрузчик обрабатывает запрос на программирование.
Если у вас есть программатор (или другая плата Arduino, запрограммированная как программатор), то можно удалить загрузчик из своего контроллера ATmega и программировать его с помощью внешнего программатора.
1.5. Цифровые и аналоговые контакты ввода-вывода
У контроллеров Arduino к большинству контактов ввода-вывода можно подключить внешние схемы. Все контакты могут служить цифровыми входами и выходами. Часть контактов Arduino могут также действовать в качестве аналоговых входов. Многие из контактов работают в режиме мультиплексирования и выполняют дополнительные функции: различные коммуникационные интерфейсы, последовательные интерфейсы, широтно-импульсные модуляторы и внешние прерывания.
1.6. Источники питания
Для большинства проектов достаточно 5-вольтового питания, получаемого по кабелю USB. Однако, при необходимости разработки автономного устройства, схема способна работать от внешнего источника от 6 до 20 В (рекомендуется напряжение 7-12 В). Внешнее питание может подаваться через разъем DC или на контакт Vin.
У Arduino есть встроенные стабилизаторы на 5 и 3,3 В:
• напряжение 5 В используется для всех логических элементов на плате, уровень на цифровых контактах ввода-вывода находится в пределах 0-5 В;
• напряжение 3,3 В выведено на отдельный контакт для подключения внешних устройств.
1.7. Платы Arduino
Мы не будем рассматривать все существующие платы Arduino, т. к. их очень много и постоянно выпускаются все новые с различными функциями. Кратко опишем лишь некоторые из фирменных плат Arduino.
- 32 -
Arduino Uno (рис. 1.3) - основная плата линейки Arduino, она будет использоваться в большинстве примеров книги. Плата укомплектована микроконтроллером ATmega 328 и микросхемой 16U2 преобразователя USB. Микроконтроллер ATmega 328 может быть выполнен в исполнении DIP или SMD.
Рис. 1.3. Плата Arduino Uno
На плате Leonardo (рис. 1.4) установлен контроллер 32U4 со встроенным интерфейсом USB. Это уменьшает стоимость изделия и дает возможность использовать плату в качестве USB-устройства, например как эмулятор джойстика или клавиатуры.
Вы узнаете, как работать с этими функциями, в главе 6.
На плате Arduino Mega 2560 (рис. 1.5) установлен контроллер ATmega 2560, имеющий 54 цифровых входа-выхода, что позволяет подключать еще больше устройств. У Arduino Mega 2560 увеличено число аналоговых входов и последовательных портов (четыре против одного у Arduino Uno).
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии