Шановні друзі!
26 та 31 грудня магазин працюватиме до 16 години. 1 та 2 січня магазин працювати не буде.
Вітаємо всіх з Різдвом та Новим Роком!
Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

Програмне «покращення» Arduino UNO до двоядерної плати

2021-11-30

Всі статті →

У статті описано спосіб встановлення альтернативного завантажувача, який дозволяє програмувати другий мікроконтролер ATmega16U2 на платі Arduino UNO, перетворюючи її на «двопроцесорну» плату з апаратною підтримкою USB, що відкриває деякі можливості, доступні лише в Leonardo-сумісних платах. Також це дає доступ до справжньої апаратної багатозадачності. Ті, хто давно «в темі» Arduino, мабуть, здогадалися про що мова, але цей текст призначений у першу чергу для тих, хто незнайомий з завантажувачем HoodLoader2.

Не всі Arduino однаково корисні.

Arduino - відкрита платформа, тому існує безліч плат різного рівня сумісності й функціональності. Історично найпоширенішою є Arduino UNO. Але й тут асортимент настільки широкий, що новачкам іноді важко зрозуміти, як може існувати стільки версій того самого виробу, через що часто виникають типові запитання про те, чим відрізняється дешева плата Arduino від більш дорогої чи оригінальної італійської плати. Звісно, можна говорити про якість пайки, зручність DIP або SMD корпусу мікроконтролера, але можливо одна з найсуттєвіших відмінностей полягає в тому, яким чином забезпечується зв’язок USB-UART. Найчастіше це СH340 (переважно в дешевих платах) або ATmega16U2 (зазвичай у більш дорогих платах). Перший — чіп, спеціально призначений для цієї задачі, другий - мікроконтролер, запрограмований відповідним чином. Причому його використання - явний перебір, що підтверджує хоча б той факт, що у попередніх поколіннях Arduino UNO для цієї задачі цілком вистачало удвічі менш потужного мікроконтролера ATmega8U2, який теж не використовувався на межі своїх можливостей.

Ці міркування приводять нас до логічної думки, що невикористані завантажувачем ATmega16U2 ресурси могли би бути витрачені з користю у той час, коли він не використовується за основним призначенням (завантаження скетчів).

Можливості HoodLoader2.

Проєкт Hoodloader2 - це альтернативний неофіційний завантажувач, створений користувачем NicoHood. Крім програмування основного мікроконтролера ATmega328, цей завантажувач дозволяє також програмувати ATmega16U2, на який він і встановлюється. Що залишиться доступним після встановлення завантажувача:

  • 12Кб flash, бо 4Кб із 16 використає сам завантажувач
  • 500 байт RAM
  • 500 байт EEPROM
  • апаратна підтримка USB
  • можливість керувати діодами TX і RX на платі Arduino UNO
  • 7 пінів загального призначення, бо далеко не всі піни ATmega16U2 виведені на платі
  • можливість обміну даними з основним мікроконтролером ATmega328 за інтерфейсом Serial

Деталі показані на схемі зі сторінки проєкту.

Встановлення завантажувача.

Обережно, покращено! Якщо на цьому етапі щось піде не так, є ризик одержати неробочу плату. Автор не несе відповідальності за ваші дії. Рекомендується прочитати також офіційну документацію HoodLoader2 перед виконанням будь-яких маніпуляцій.

Прошивка завантажувача можлива кількома способами, але найпростіший - використати другу плату Arduino як програматор. Для цього спочатку треба завантажити в неї цей скетч. Після чого живлення вимикається й друга плата підключається згідно схеми (взято з офіційної документації).

  • 328 - 16u2
  • GND - GND
  • 5V - 5V
  • MOSI - MOSI
  • MISO - MISO
  • SCK - SCK
  • PIN10 - 16u2 RESET

Зверніть увагу, що під час прошивки завантажувача живлення на цільову плату подаватиметься з плати-програматора, яка буде підключена за допомогою USB. Перед підключенням перевірте правильність підключення й переконайтеся, що до цільової плати більш нічого не під'єднано. Розмістіть плати на надійній поверхні, щоб під час прошивки якийсь контакт випадково не розірвався, бо це потенційно може призвести до втрати завантажувача й неможливості завантажувати скетчі на цільову плату. Коли все готово й плата-програматор підключена до USB, у вас є близько 10 секунд для відкриття Serial порту, де можна прослідкувати за процесом.

Коли все завершиться, можна вимкнути плату-програматор.

Встановлення підтримки плати в Arduino IDE.

Додайте посилання https://raw.githubusercontent.com/NicoHood/HoodLoader2/master/package_NicoHood_HoodLoader2_index.json до списку додаткових плат у діалозі налаштувань.

Відкрийте менеджер плат і встановіть HoodLoader2. Відтак у вас доступні для програмування обидва мікроконтролери. Не забудьте обрати потрібний перед завантаженням скетчу.

Для переводу ATmega16U2 в режим завантажувача слід двічі замкнути піни reset, однократне замикання reset перезапускає скетч (не плутати з кнопкою reset основного мікроконтролера, для ATmega16U2 слід використовувати відповідні піни роз’єму ICSP, який розташований поблизу нього).

Як видно з меню вибору плат, завантажувач HoodLoader2 підтримує також Leonardo-сумісні плати на ATmega32U4 й застарілі плати UNO з ATmega8U2 на борту, щоправда, в останньому випадку лишається не так вже й багато вільних ресурсів.

Висновки.

Доступ до другого мікроконтролера робить можливим одночасне виконання двох скетчів на одній платі, тобто ви одержуєте апаратну багатозадачність. Фактично у вас буде дві плати в одній: Arduino UNO + Arduino Leonardo. Ну добре, півтори плати, бо ATmega16U2 звісно поступається ATmega32U4, до того ж далеко не всі його виводи й пам’ять будуть доступні. Можна використовувати таку «двоядерну» архітектуру для створення пристроїв USB або коли доречно перекласти частину обчислень на інший мікроконтролер.

Ваша оцінка статті:

Відмінно
Добре
Задовільно
Погано
Дуже погано

Загальна оцінка:

Оцінка "Програмне «покращення» Arduino UNO до двоядерної плати"
5 з 5
зроблена на основі 3 оцінок 3 клієнтських відгуків.

Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Radiolis
19.08.2022 21:07:44
Не так багато можна взяти із цього мода. Половина контактів не розведена і до них важко підпаюватись (PD0, PD1, PD6, PC2, PC4, PC5, PC6, PC7, PB0).PD2, PD3 PD4 PD5 зайняті у складі цільової плати. Незрозуміло як користуватись UART-ом, який підключений до 2-х МК.Виведені контакти у складі інтерфейсу ICSP, можна використовувати як інтерфейс SPI або як 3-х цифрових контакта, або для переривання.Чотири контакти PB4, PB5, PB6, PB7 можна використовувати як цифрові контакти, переривання, 1 таймер. Доступний 1 із 4-х ШИМ.Доступно взагалі 7 контактів.
Игорка
25.05.2022 13:45:26
Полезная статья, руки чешутся ))
С
19.12.2021 19:44:02
Крута стаття. Надiюсь, покажеш колись приклади такого використання.
оплата картами Visa і MasterCard