Входы и выходы pro micro
Содержание
Подключение и настройка
STEMTera — как и её прообраз Arduino Uno — состоит из двух частей, каждая из которых управляется отдельным микроконтроллером.
- Первая построена на микроконтроллере ATmega328P и повторяет архитектуру Arduino. Это означает полную совместимость с Arduino Shield-ами.
- Вторая — базируется на микроконтроллере ATmega32U2, который служит для связи микроконтроллера ATmega328 с USB-портом компьютера.
В отличии от Arduino Uno, на STEMTera выведены пины микроконтроллера ATmega32U2, которыми можно управлять через Atmel Studio.
Рассмотрим более подробно оба варианта подключения.
Пример работы ATmega328
- Соедините STEMTera с компьютером по USB-кабелю. На плате должен загореться светодиод «ON».
-
Соберите на новоиспечённой макетной плате первый эксперимент из набора Матрёшка — маячок.
-
Для программирования платформы STEMTera в операционной системе Windows скачайте и установите на компьютер интегрированную среду разработки Arduino — Arduino IDE. В диспетчере устройств платформа должна определиться как COM-порт с именем .
После загрузки примера, светодиод на пине и встроенный светодиод , начнут мигать раз в секунду. Это значит всё получилось и можно смело переходить к экспериментам на Arduino.
Пример работы ATmega32u2
Микроконтроллер ATmega32U2 при стандартной прошивке обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера.
Но в отличии от Arduino Uno, на STEMTera выведены пины микроконтроллера ATmega32U2.
После перепрошивки STEMTera не будет определяться как виртуальный в диспетчере устройств и микроконтроллер ATmega328 будет недоступен. Для восстановления доступа, прошейте ATme32U2 стандартной прошивкой.
Повторим эксперимент «маячок», но на этот раз мозгом устройства будет ATmega32U2.
Соедините STEMtera с компьютером по USB-кабелю. На плате должен загореться светодиод «ON».
Откройте «Диспетчер устройств» Windows и раскройте вкладку «Порты (COM и LPT)». Вы должны увидеть следующую картину:
Запустите плату STEMtera в режиме программирования Atmega32U2. Для этого с помощью провода «папа-папа» замкните пин с землёй.По истечению — секунд снимите провод «папа-папа»
Обратите внимание плата STEMtera определилась как устройство :
Повторите задание «маячок». Но светодиод вместо пина, подключите к пину .
Для работы STEMtera с микроконтроллером ATmega32U2 в операционной системе Windows скачайте и установите на компьютер интегрированную среду разработки микроконтроллеров семейства AVR — Atmel Studio.
Прошейте платформу примером приведённым ниже:blink
// подключаем необходимые библиотеки
#include
#define F_CPU 16000000
#include
#include
int main(void)
{
// порт B в режим выхода
DDRB = 0xFF;
// устанавливаем нули на выходе
PORTB = 0x00;
while (1)
{
// зажигаем светодиод
PORTB |= (1
Это значит всё получилось и можно дальше продолжать программировать более серьёзными программами.
Описание пинов Ардуино
Пины Ардуино используются для подключения внешних устройств и могут работать как в режиме входа (INPUT), так и в режиме выхода (OUTPUT). К каждому входу может быть подключен встроенный резистор 20-50 кОм с помощью выполнения команды pinMode () в режиме INPUT_PULLUP. Допустимый ток на каждом из выходов – 20 мА, не более 40 мА в пике.
Для удобства работы некоторые пины совмещают в себе несколько функций:
- Пины 0 и 1 – контакты UART (RХ и TX соответственно) .
- Пины c 10 по 13 – контакты SPI (SS, MOSI, MISO и SCK соответственно)
- Пины A4 и A5 – контакты I2C (SDA и SCL соответственно).
Цифровые пины платы Uno
Пины с номерами от 0 до 13 являются цифровыми. Это означает, что вы можете считывать и подавать на них только два вида сигналов: HIGH и LOW. С помощью ШИМ также можно использовать цифровые порты для управления мощностью подключенных устройств.
Пин ардуино | Адресация в скетче | Специальное назначение | ШИМ |
Цифровой пин 0 | RX | ||
Цифровой пин 1 | 1 | TX | |
Цифровой пин 2 | 2 | Вход для прерываний | |
Цифровой пин 3 | 3 | Вход для прерываний | ШИМ |
Цифровой пин 4 | 4 | ||
Цифровой пин 5 | 5 | ШИМ | |
Цифровой пин 6 | 6 | ШИМ | |
Цифровой пин 7 | 7 | ||
Цифровой пин 8 | 8 | ||
Цифровой пин 9 | 9 | ШИМ | |
Цифровой пин 10 | 10 | SPI (SS) | ШИМ |
Цифровой пин 11 | 11 | SPI (MOSI) | ШИМ |
Цифровой пин 12 | 12 | SPI (MISO) | |
Цифровой пин 13 | 13 | SPI (SCK)
К выходу также подсоединен встроенный светодиод (есть в большинстве плат Arduino) |
Аналоговые пины Arduino Uno
Аналоговые пины Arduino Uno предназначены для подключения аналоговых устройств и являются входами для встроенного аналого-цифрового преобразователя (АЦП), который в ардуино уно десятиразрядный.
Пин | Адресация в скетче | Специальное назначение |
Аналоговый пин A0 | A0 или 14 | |
Аналоговый пин A1 | A1 или 15 | |
Аналоговый пин A2 | A2 или 16 | |
Аналоговый пин A3 | A3 или 17 | |
Аналоговый пин A4 | A4 или 18 | I2C (SCA) |
Аналоговый пин A5 | A5 или 19 | I2C (SCL) |
Дополнительные пины на плате
- AREF – выдает опорное напряжения для встроенного АЦП. Может управляться функцией analogReference().
- RESET – подача низкого сигнала на этом входе приведет к перезагрузке устройства.
Общее описание
ATmega32/64/M1/C1 — маломощный 8-битный КМОП микроконтроллер, выполненный на основе RISC ЦПУ AVR. За счет выполнения большинства инструкций за один цикл синхронизации микроконтроллеры ATmega32/64/M1/C1 достигают производительности 1 MIPS/МГц, что предоставляет разработчику возможность оптимизации соотношения потребляемой мощности и быстродействия обработки.
Ядром AVR поддерживаются обширный набор инструкций и 32 рабочих регистра общего назначения. Все 32 регистра напрямую подключены к арифметико-логическому устройству (АЛУ), что позволяет указывать в одной инструкции два разных рабочих регистра и выполнять такую инструкцию за один цикл синхронизации. Результирующая архитектура обладает более высокой эффективностью выполнения программного кода и на порядок превосходит по быстродействию исполнения кода программы обычные CISC-микроконтроллеры.
Микроконтроллеры ATmega32/64/M1/C1 содержат 32/64 кбайт внутрисистемно-программируемой флэш-памяти с возможностями чтения во время записи, 1024/2048 байт ЭСППЗУ, 2048/4096 байт статического ОЗУ, 27 линий ввода-вывода общего назначения, 32 рабочих регистра общего назначения, один контроллер силового каскада электродвигателя, два конфигурируемых таймера-счетчика с режимами сравнения и ШИМ, один УАПП с аппаратным LIN-контроллером, 11-канальный 10-битный АЦП с двумя дифференциальными входными каскадами с программируемым усилением, 10-битный ЦАП, программируемый сторожевой таймер с отдельным внутренним генератором, последовательный порт SPI и встроенная отладочная система.
Микроконтроллеры могут быть программно переведены в один из четырех экономичных режимов работы. В режиме холостого хода (Idle) останавливается ЦПУ, но продолжают работу статическое ОЗУ, таймеры-счетчики, порты SPI, контроллер CAN, интерфейс LIN/УАПП и система прерываний. В режиме отключения (Power-down) сохраняется содержимое регистров, но останавливается генератор, запрещая работу все остальных функций микроконтроллера вплоть до следующего прерывания или аппаратного сброса. В режиме снижения шума АЦП (ADC Noise Reduction) останавливается ЦПУ и все модули ввода-вывода, за исключением АЦП, что позволяет минимизировать влияние цифрового шума на результат преобразования. В дежурном режиме (Standby) продолжает работу кварцевый генератор, а остальная часть микроконтроллера бездействует. Использование этого режима позволяет добиться очень быстрого возобновления нормального функционирования микроконтроллера.
Микроконтроллеры выпускаются по технологии высокоплотной энергонезависимой памяти. Встроенная флэш-память поддерживает возможность внутрисистемного перепрограммирования через последовательный интерфейс SPI, с помощью обычного программатора энергонезависимой памяти или под управлением встроенной загрузочной программы, исполняемой ядром AVR. Загрузочная программа может использовать любой интерфейс для загрузки кода программы в сектор прикладной программы флэш-памяти. Флэш-память допускает продолжение выполнения кода из загрузочного сектора во время обновления сектора прикладной программы, тем самым, добиваясь действительной поддержки возможности чтения во время записи. Объединение в одном кристалле 8-битного RISC ЦПУ и внутрисистемно-самопрограммируемой флэш-памяти делает микроконтроллеры ATmega32/64/M1/C1 универсальным и недорогим инструментом для разработки множества встраиваемых систем управления.
Добавление устройств АТмега
Есть один нюанс по работе с эти чипом — нам нужно внести некоторые изменений в один файл, чтобы дальше можно было бы программировать микроконтроллеры Arduino ATmega8.
Вносим следующие изменения в файл hardware/arduino/boards.txt:
atmega8o.name=ATmega8 (optiboot 16MHz ext) atmega8o.upload.protocol=arduino atmega8o.upload.maximum_size=7680 atmega8o.upload.speed=115200 atmega8o.bootloader.low_fuses=0xbf atmega8o.bootloader.high_fuses=0xdc atmega8o.bootloader.path=optiboot50 atmega8o.bootloader.file=optiboot_atmega8.hex atmega8o.bootloader.unlock_bits=0x3F atmega8o.bootloader.lock_bits=0x0F atmega8o.build.mcu=atmega8 atmega8o.build.f_cpu=16000000L atmega8o.build.core=arduino:arduino atmega8o.build.variant=arduino:standard ############################################################## a8_8MHz.name=ATmega8 (optiboot 8 MHz int) a8_8MHz.upload.protocol=arduino a8_8MHz.upload.maximum_size=7680 a8_8MHz.upload.speed=115200 a8_8MHz.bootloader.low_fuses=0xa4 a8_8MHz.bootloader.high_fuses=0xdc a8_8MHz.bootloader.path=optiboot a8_8MHz.bootloader.file=a8_8MHz_a4_dc.hex a8_8MHz.build.mcu=atmega8 a8_8MHz.build.f_cpu=8000000L a8_8MHz.build.core=arduino a8_8MHz.build.variant=standard ############################################################## a8_1MHz.name=ATmega8 (optiboot 1 MHz int) a8_1MHz.upload.protocol=arduino a8_1MHz.upload.maximum_size=7680 a8_1MHz.upload.speed=9600 a8_1MHz.bootloader.low_fuses=0xa1 a8_1MHz.bootloader.high_fuses=0xdc a8_1MHz.bootloader.path=optiboot a8_1MHz.bootloader.file=a8_1MHz_a1_dc.hex a8_1MHz.build.mcu=atmega8 a8_1MHz.build.f_cpu=1000000L a8_1MHz.build.core=arduino a8_1MHz.build.variant=standard ############################################################## a8noboot_8MHz.name=ATmega8 (no boot 8 MHz int) a8noboot_8MHz.upload.maximum_size=8192 a8noboot_8MHz.bootloader.low_fuses=0xa4 a8noboot_8MHz.bootloader.high_fuses=0xdc a8noboot_8MHz.build.mcu=atmega8 a8noboot_8MHz.build.f_cpu=8000000L a8noboot_8MHz.build.core=arduino a8noboot_8MHz.build.variant=standard
Таким образом, если мы перейдем в меню Сервис → Плата, то увидим устройства:
- ATmega8 (optiboot 16MHz ext)
- ATmega8 (optiboot 8 MHz int)
- ATmega8 (optiboot 1 MHz int)
- ATmega8 (no boot 8 MHz int)
Делаем ISP программатор из Arduno Uno
После двойной проверки схемы прошивки загрузчика, прежде чем подключать ее к Arduino Uno, вы должны настроить Arduino Uno для работы в качестве программатора ISP (In-circuit Serial Programmer, внутрисхемный последовательный программатор). Подключите Arduino Uno к компьютеру и запустите Arduino IDE. Затем выполните шаги, как показано на следующих скриншотах.
- Укажите, что подключена обычная плата Arduino Uno.
Определение платы, подключенной к компьютеру - Укажите назначение платы Arduino Uno как Arduino ISP.
Назначение режима работы Arduino Uno в качестве ISP программатора - Откройте скетч Arduino ISP.
Скетч Arduino ISPСкетч Arduino ISP - Загрузите скетч Arduino ISP в Arduino Uno.
Загружаем скетч Arduino ISP в Arduino Uno - Когда вы увидите сообщение «done uploading» (загрузка завершена), ваша плата Arduino Uno будет готова работать в качестве ISP программатора, и будет способна понимать и отвечать на инструкции от Arduino IDE.
Arduino Uno готова работать в качестве ISP программатора
Характеристики Arduino Nano
Микроконтроллер | Atmel ATmega168 или ATmega328 |
---|---|
Рабочее напряжение (логическая уровень) | 5 В |
Входное напряжение (рекомендуемое) | 7-12 В |
Входное напряжение (предельное) | 6-20 В |
Цифровые Входы/Выходы | 14 (6 из которых могут использоваться как выходы ШИМ) |
Аналоговые входы | 8 |
Постоянный ток через вход/выход | 40 mAh с одного вывода и 500 mAh со всех выводов |
Флеш-память | 16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика |
ОЗУ | 1 Кб (ATmega168) или 2 Кб (ATmega328) |
EEPROM | 512 байт (ATmega168) или 1 Кб (ATmega328) |
Тактовая частота | 16 МГц |
Размеры | 1.85 см x 4.2 см |
В первую очередь в разговоре о характеристиках нужно отметить, что Нано выпускается в различных версиях и самые распространённые:
- Nano v.2;
- Nano v.3.
Главное отличие – в самом микроконтроллере. Младшая версия использует Atmega168, Atmega328. Основные отличия чипов – это объём Flash-памяти:
- mega 328: Flash-память – 32 кб, ПППЗУ – 1024 и ОЗУ – 2 кб;
- mega 168: Flash-память – 16 кб, ПППЗУ – 512 и ОЗУ – 1 кб.
ПППЗУ — это перепрограммируемые запоминающее устройство.
Главный конкурент Arduino Nano по размеру – это Arduino Micro. В целом они похожи, но у «микро» интерфейс SPI разведен на другие пины, как и шина I2C, а также изменено количество выводов прерываний. В целом, платы похожи размерами, но различны соотношения сторон, а также некоторые схемотехнические нюансы.
Arduino Nano имеет 8 аналоговых входов, они могут использоваться как цифровой выход, 14 цифровых из которых 6 могут работать как широтно-импульсный модулятор (ШИМ), еще два задействованы под I2C и 3 под SPI.
В противоположном конце платы от разъёма микро-юсб расположена колодка Arudino ICSP для прошивки микроконтроллера.
ШИМ выходы и транзисторы помогут вам: регулировать обороты двигателя, яркость светодиодов, мощность нагревателей и многое другое. А аналоговые входы позволят читать значения с аналоговых датчиков, таких как:
- фоторезисторы;
- терморезисторы;
- термопары;
- измерители влажности;
- датчики давления и другие.
Выходы Digital 2 и 3 могут быть использованы для внешних прерываний
Это такие сигналы, которые сообщают микроконтроллеру о каком-либо важном событии. По этим сигналам вызывается программа обработки прерывания и выполняются необходимые действия, например, выход из режима энергосбережения и выполнение вычислений
На базе платы Nano получится отличный миниатюрный программатор Arduino ISP, для прошивки целого ряда контроллеров.
Pinout
This core has three different pinout options:
- Standard: The default pinout, and is based on the original AVR pinout.
- Bobuino: Basically an Arduino UNO pinout setting. This pinout version is great for using with shields or code that’s written for the Arduino UNO, as the pin functions stay the same (MOSI on D11, MISO on D12, SCK on D13).
- Sanguino: This pinout is common on older 3D printer controllers such as the Sanguino, RepRap Sanguinololu, and RepRap Gen7. This pinout is also known as «avr_developers».
Please have a look at the () files for detailed info. Pick your favorite!Click to enlarge:
MightyCore Standard pinout | MightyCore Bobuino pinout | MightyCore Sanguino pinout |
---|---|---|