Как подключить кварцевый резонатор к ардуино nano
Перейти к содержимому

Как подключить кварцевый резонатор к ардуино nano

  • автор:

Arduino Nano: распиновка, схема подключения и программирование

Плата Arduino Nano — аналог флагманской Uno в миниатюрном размере. На ней предусмотрено всё необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (6 из них могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъём Mini-USB, разъём питания, разъём для внутрисхемного программирования (ICSP) и кнопка сброса.

Видеообзор

Подключение и настройка

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

При выборе платформы выбирайте Arduino Nano.

Если всё получилось — можете смело переходить к экспериментам.

Элементы платы

Микроконтроллер ATmega328P

Сердцем платформы Arduino Nano является 8-битный микроконтроллер семейства AVR — ATmega328P с тактовой частотой 16 МГц. Контроллер предоставляет 32 КБ Flash-памяти для хранения прошивки, 2 КБ оперативной памяти SRAM и 1 КБ энергонезависимой памяти EEPROM для хранения данных.

Микросхема FT232R

Микросхема FTDI FT232R обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к компьютеру Nano определяется как виртуальный COM-порт.

USB-UART преобразователь общается с микроконтроллером ATmega328P по интерфейсу UART через пины 0(RX) и 1(TX) . Рекомендуем не использовать эти контакты в своём проекте.

Светодиодная индикация

Имя светодиода Назначение
RX и TX Мигают при обмене данными между Arduino Nano и ПК.
L Пользовательский светодиод подключённый к 13 пину микроконтроллера. При высоком уровне светодиод включается, при низком – выключается.
ON Наличие питания на Arduino Nano.

Разъём Mini-USB

Разъём Mini-USB предназначен для прошивки платформы с помощью компьютера.

Регулятор напряжения 5 В

Линейный понижающий регулятор напряжения LM1117MPX-5.0 с выходом 5 вольт обеспечивает питание микроконтроллера ATmega328P и другой логики платформы. Максимальный выходной ток составляет 800 мА.

ICSP-разъём для ATmega328

ICSP-разъём предназначен для загрузки прошивки в микроконтроллер ATmega328 через программатор.

Также через контакты ICSP Nano общается с платами расширения по интерфейсу SPI.

Распиновка

Пины питания

VIN: Входной пин для подключения внешнего источника питания с напряжением в диапазоне от 7 до 12 вольт.

5V: Выходной пин от регулятора напряжения на плате с выходом 5 вольт и максимальных током 800 мА. Питать устройство через вывод 5V не рекомендуется — вы рискуете спалить плату.

3.3V: Выходной пин от стабилизатора микросхемы FT232R с выходом 3,3 вольта и максимальных током 50 мА. Питать устройство через вывод 3V3 не рекомендуется — вы рискуете спалить плату.

GND: Выводы земли.

AREF: Пин для подключения внешнего опорного напряжения АЦП относительно которого происходят аналоговые измерения при использовании функции analogReference() с параметром «EXTERNAL».

Порты ввода/вывода

Цифровые входы/выходы: пины 0 – 13
Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.

ШИМ: пины 3 , 5 , 6 , 9 , 10 и 11
Позволяет выводить аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ не меняется и установлена в 8 бит.

АЦП: пины A0 – A7
Позволяет представить аналоговое напряжение в цифровом виде. Разрядность АЦП не меняется и установлена в 10 бит. Диапазон входного напряжения от 0 до 5 В. При подаче большего напряжения — вы убьёте микроконтроллер.

TWI/I²C: пины A4(SDA) и A5(SCL)
Для общения с периферией по интерфейсу I²C. Для работы используйте библиотеку Wire.

SPI: пины 11(MOSI) , 12(MISO) , 13(SCK) и 10(SS)
Для общения с периферией по интерфейсу SPI. Для работы — используйте библиотеку SPI.

UART: пины 0(RX) и 1(TX)
Используется для коммуникации платы Arduino с компьютером или другими устройствами по последовательному интерфейсу. Выводы 0(RX) и 1(TX) соединены с соответствующими USB-UART преобразователя FT232R. Для работы с последовательным интерфейсом — используйте методы библиотеки Serial.

Arduino.ru

На Pro Mini не кварцевый резонатор, а трехвыводный низкоточный керамичеcкий ?

  • Войдите на сайт для отправки комментариев

Ср, 24/05/2017 — 12:05
Зарегистрирован: 24.05.2017

На Pro Mini и некоторых других платах ставится не кварцевый резонатор, а дешевый трехвыводный низкоточный керамичеcкий ?

http://microsin.net/programming/avr/beginning-embedded-electronics-part3.html После прочтения этой статьи, я, чё-то, стал думать, сто эта маленьая хренька как раз резонатор, а не кварц.

  • Войдите на сайт для отправки комментариев

Ср, 24/05/2017 — 12:07
Зарегистрирован: 24.05.2017

Если фьюзы можно прочитать, то тип резонатора будет видно из них ?

  • Войдите на сайт для отправки комментариев

Ср, 24/05/2017 — 14:19

Jeka_M аватар

Зарегистрирован: 06.07.2014

Да, на этом фото керамический резонатор.

На одинаковых платах ардуино разные китайские производители могут ставить разные резонаторы — кто кварцевый, а кто керамический. У меня например на Pro Mini (вот такая) стоит кварцевый резонатор.

Нет, по фьюзам тип резонатора не определяется. Микроконтроллер не может знать, какой резонатор к нему подключён.

  • Войдите на сайт для отправки комментариев

Чт, 25/05/2017 — 06:22

Sanyaba аватар

Зарегистрирован: 27.07.2015

У меня кстати такие Pro Mini и тоже интересно на какой частоте работает такой резонатор, измерить к сожалению нечем, а в IDE шьется как ATmega328 (5V, 16MHz) так и ATmega328 (3.3М, 8MHz) и разницы я не заметил.

  • Войдите на сайт для отправки комментариев

Чт, 25/05/2017 — 11:01
Зарегистрирован: 12.05.2017
Sanyaba пишет:

У меня кстати такие Pro Mini и тоже интересно на какой частоте работает такой резонатор, измерить к сожалению нечем, а в IDE шьется как ATmega328 (5V, 16MHz) так и ATmega328 (3.3М, 8MHz) и разницы я не заметил.

Для 16 и 8 Мгц разные фьюзы, но они вроде запишутся в контроллер только при смене загрузчика http://arduino.ru/forum/apparatnye-voprosy/zamena-kvartsa-na-avr-328#com.

И если загрузить программу, скомпилированную для ATmega328 8MHz в ATmega328 16MHz, то операторы delay() будут выполняться по времени примерно в 2 раза быстрее и последовательный начнет работать не передачу с удвоенной скоростью, те в программе установим скорость 57600, а реальная будет 115200.

Светодиод, рабаотающий с использованием delay(), увеличит частоту мигания вдвое.

Будет ли работать ком-порт на прием не проверял.

Программа для ATmega328-16Мгц, сконфигурированной в IDE как «ATmega328 8MHz»:

void setup(void) < //Serial.begin(115200); // для платы Atmega328-16МГц, которая в IDE установлена как "Atmega328-16МГц" // для платы Atmega328-16МГц, которая в IDE установлена как "Atmega328-8МГц": Serial.begin(57600); // Написано 57600, но Serial monitor будет работать на скорости 115200 pinMode(13,OUTPUT); >void loop(void)

  • Войдите на сайт для отправки комментариев

Чт, 25/05/2017 — 11:48
Зарегистрирован: 12.05.2017
Sanyaba пишет:
интересно на какой частоте работает такой резонатор, измерить к сожалению нечем

Если нет осциллографа , то вместо измерения частоты «ногодрыга» (запись 1 и 0 однотактными командами на выходы) можно использовать delay() и секундомер. Загрузите программу (см выше) и считайте количество миганий светодиода за 60 секунд. Если в меню установлено 16 МГц и 60 миганий в секунду ( Serial.print немного искажает время), то так и есть 16 Мгц. Если 120 импульсов, то реальная частота 8 МГц.

  • Войдите на сайт для отправки комментариев

Чт, 25/05/2017 — 18:52

Sanyaba аватар

Зарегистрирован: 27.07.2015

Спасибо за идею, у меня вышло ~59 миганий при загрузке через IDE с выбором ATmega328 (5V, 16MHz) и ~119 миганий при загрузке как ATmega328 (3.3V, 8MHz).

  • Войдите на сайт для отправки комментариев

Вс, 08/09/2019 — 16:05
Зарегистрирован: 09.03.2019

Спасибо за тему. Столкнулся у себя с такой же проблемой. А именно, первый раз зашил promini правильно на 5 вольтах.Спустя неделю потребовалось подправить код ( отправляю ИК- сигнал) и надо же было прошивать на 3.3 вольтах. Естественно после этого приёмник в мониторе порта на другой ардуинке выдает не то, что надо.

  • Войдите на сайт для отправки комментариев

Вс, 08/09/2019 — 16:09

Jeka_M аватар

Зарегистрирован: 06.07.2014

Не совсем так. Напряжение всё равно какое 5В или 3.3В, дело в тактовой частоте: 16МГц или 8МГц.

  • Войдите на сайт для отправки комментариев

Вс, 08/09/2019 — 16:14
Зарегистрирован: 09.03.2019

Да вот и не видно какая частота нацарапана на кварце. Поэтому и путаюсь с выставкой выбора параметров.

  • Войдите на сайт для отправки комментариев

Вс, 08/09/2019 — 16:19
Зарегистрирован: 26.05.2017
Palbl4 пишет:

Да вот и не видно какая частота нацарапана на кварце. Поэтому и путаюсь с выставкой выбора параметров.

между 8 и 16 МГц различить очень просто — выше дали метод

От того, что вы выбрали неправильные парметры при загрузке скетча — ничего не испортится.

  • Войдите на сайт для отправки комментариев

Вс, 08/09/2019 — 20:20
Зарегистрирован: 09.03.2019
Jeka_M пишет:

Не совсем так. Напряжение всё равно какое 5В или 3.3В, дело в тактовой частоте: 16МГц или 8МГц.

Да,но В IDE нет варианта , поэтому я и говорю о 5в и подразумевается 16мГц. Я говорю о моменте ,когда загружаю скетч.

А в работе не важно какое напряжение подаю , работает чОтко) при обоих напряжениях.

  • Войдите на сайт для отправки комментариев

Вс, 08/09/2019 — 23:21

Jeka_M аватар

Зарегистрирован: 06.07.2014
Palbl4 пишет:

Да,но В IDE нет варианта , поэтому я и говорю о 5в и подразумевается 16мГц. Я говорю о моменте ,когда загружаю скетч.

Лучше делайте наоборот — говорите про тактовую частоту. Потому что именно тактовая частота имеет значение в контексте программирования и прошивки.

Фраза «прошиваю на 3.3В» выглядит глупо, правильно будет «прошиваю на 8МГц».

  • Войдите на сайт для отправки комментариев

Вс, 08/09/2019 — 23:25

Jeka_M аватар

Зарегистрирован: 06.07.2014
Palbl4 пишет:

А в работе не важно какое напряжение подаю , работает чОтко) при обоих напряжениях.

Опять же, не совсем так. На тактовой 8МГц — да, будет работать на обоих напряжениях (3.3В или 5В). А вот на 16МГц на 3.3В может работать нестабильно. Это уже на границе безопасной рабочей зоны:

  • Войдите на сайт для отправки комментариев

Пнд, 09/09/2019 — 09:33
Зарегистрирован: 09.03.2019

Всем спасибо за разъяснения!

  • Войдите на сайт для отправки комментариев

Пнд, 09/09/2019 — 20:11
Зарегистрирован: 22.12.2015
Palbl4 пишет:

Да,но В IDE нет варианта ,

почему нету? у меня есть и даже совсем без кварца

Добавляешь в boards.txt

a328p_8MHz.name=atmega328p (8 MHz) a328p_8MHz.upload.protocol=arduino a328p_8MHz.upload.maximum_size=32256 a328p_8MHz.upload.speed=115200 a328p_8MHz.bootloader.low_fuses=0xe2 a328p_8MHz.bootloader.high_fuses=0xde a328p_8MHz.bootloader.extended_fuses=0x5 a328p_8MHz.bootloader.path=optiboot a328p_8MHz.bootloader.file=a328p_8MHz_e2_de_5.hex a328p_8MHz.build.mcu=atmega328p a328p_8MHz.build.f_cpu=8000000L a328p_8MHz.build.core=arduino a328p_8MHz.build.variant=standard

вот и сам a328p_8MHz_e2_de_5.hex

:107E0000F894112484B714BE81FFF0D085E08093EC :107E1000810082E08093C00088E18093C10086E009 :107E20008093C20088E08093C4008EE0C9D0259A78 :107E300086E028E13EEF91E03093850020938400B6 :107E400096BBB09BFECF1D9AA8958150A9F7CC2474 :107E5000DD2488248394B5E0AB2EA1E19A2EF3E0D3 :107E6000BF2EA2D0813461F49FD0082FAFD002384A :107E700011F0013811F484E001C083E08DD089C095 :107E8000823411F484E103C0853419F485E0A6D06E :107E900080C0853579F488D0E82EFF2485D0082F5E :107EA00010E0102F00270E291F29000F111F8ED060 :107EB00068016FC0863521F484E090D080E0DECF89 :107EC000843609F040C070D06FD0082F6DD080E0AC :107ED000C81680E7D80618F4F601B7BEE895C0E0EA :107EE000D1E062D089930C17E1F7F0E0CF16F0E70C :107EF000DF0618F0F601B7BEE89568D007B600FCBB :107F0000FDCFA601A0E0B1E02C9130E011968C915C :107F1000119790E0982F8827822B932B1296FA01C5 :107F20000C0187BEE89511244E5F5F4FF1E0A03849 :107F3000BF0751F7F601A7BEE89507B600FCFDCFD5 :107F400097BEE89526C08437B1F42ED02DD0F82EF8 :107F50002BD03CD0F601EF2C8F010F5F1F4F849187 :107F60001BD0EA94F801C1F70894C11CD11CFA9403 :107F7000CF0CD11C0EC0853739F428D08EE10CD03F :107F800085E90AD08FE07ACF813511F488E018D0E6 :107F90001DD080E101D065CF982F8091C00085FF72 :107FA000FCCF9093C60008958091C00087FFFCCF5E :107FB0008091C00084FD01C0A8958091C6000895FD :107FC000E0E6F0E098E1908380830895EDDF803271 :107FD00019F088E0F5DFFFCF84E1DECF1F93182F83 :107FE000E3DF1150E9F7F2DF1F91089580E0E8DF49 :067FF000EE27FF270994B3 :0400000300007E007B :00000001FF
  • Войдите на сайт для отправки комментариев

Про Ардуино и не только

Arduino ATmega328P тактирование от внутреннего RC-генератора

При написании публикации про ATtiny85 я обратил внимание на то, как реализовано изменение частоты микроконтроллера: достаточно выбрать нужное значение тактовой частоты в меню IDE Ардуино и затем выполнить команду «Записать загрузчик». А почему бы не сделать так же для Ардуино? Чтобы можно было простыми действиями настроить ее на тактирование либо от внешнего резонатора на 16МГц, либо от внутреннего RC-генератора на 8МГц. Кстати при тактировании от внутреннего генератора микроконтроллер можно извлечь из Ардуино, тем самым значительно снизить энергопотребление. В общем, тема весьма интересная, подробности под катом.

Что нужно знать о тактировании AVR микроконтроллеров

AVR микроконтроллеры способны работать с различными источниками тактового сигнала. Это может быть внешний резонатор, RC-цепочка (внутренняя или внешняя), а так же внешний сигнал синхронизации. Источник тактирования выбирается исходя из требований к устройству. Так для построения точных микроконтроллерных систем следует использовать внешние кварцевые или керамические резонаторы, так как они обладают высокой стабильностью и не чувствительны к изменениям температуры. В этом плане им уступают генераторы на основе времязадающей RC-цепочки: они менее стабильны и чувствительны к изменениям температуры и напряжения. С другой стороны внутренний RC-генератор присутствует практически во всех AVR микроконтроллерах и его использование будет наиболее простым и экономичным решением в системах, не предъявляющих высоких требований к стабильности тактового сигнала.

Настройка микроконтроллера на работу с тем или иным источником тактового сигнала осуществляется установкой конфигурационных битов (фьюзов) при помощи программатора. Применительно к нашей ситуации установка фьюзов происходит при выполнении команды «Записать загрузчик» из меню IDE Ардуино, значения фьюзов берутся из файла boards.txt. Он же отвечает за добавление новых пунктов в меню Инструменты. Поэтому доработка IDE Ардуино для добавления в нее меню выбора частоты начинается с редактирования файла boards.txt

Редактирование файла boards.txt

Перейдите в каталог Arduino_dir\hardware\arduino\avr\, где Arduino_dir — это каталог, в который установлена среда разработки Ардуино. У меня этот путь выглядит так: d:\Arduino\arduino-1.6.12\hardware\arduino\avr\. Перед внесением изменений в файл boards.txt я рекомендую сделать его резервную копию. Теперь открываем файл boards.txt в текстовом редакторе (подойдет notepad++ или другой, поддерживающий кодировку UTF-8, чтобы не было проблем с отображением русских букв в IDE Ардуино) и добавляем в него строку menu.clock=Тактирование

Редактирование boards.txt Ардуино

Затем находим секцию для Ардуино Уно (я опишу порядок действий применительно к Ардуино Уно, но таким же образом можно скорректировать секции других плат с поправкой на микроконтроллер):

  1. скорость загрузки — uno.upload.speed;
  2. значения фьюзов — uno.bootloader.low_fuses, .high_fuses, .extended_fuses;
  3. имя файла загрузчика — uno.bootloader.file;
  4. частоту микроконтроллера — uno.build.f_cpu.

uno.menu.clock.external16=Внешний резонатор 16МГц
uno.menu.clock.external16.upload.speed=115200
uno.menu.clock.external16.bootloader.low_fuses=0xFF
uno.menu.clock.external16.bootloader.high_fuses=0xDE
uno.menu.clock.external16.bootloader.extended_fuses=0xFF
uno.menu.clock.external16.bootloader.file=optiboot/optiboot_atmega328.hex
uno.menu.clock.external16.build.f_cpu=16000000L

uno.menu.clock.internal8=Внутренний RC-генератор 8МГц
uno.menu.clock.internal8.upload.speed=57600
uno.menu.clock.internal8.bootloader.low_fuses=0xE2
uno.menu.clock.internal8.bootloader.high_fuses=0xDE
uno.menu.clock.internal8.bootloader.extended_fuses=0xFF
uno.menu.clock.internal8.bootloader.file=optiboot/optiboot_atmega328_8.hex
uno.menu.clock.internal8.build.f_cpu=8000000L

uno.menu.clock.internal1=Внутренний RC-генератор 1МГц
uno.menu.clock.internal1.upload.speed=4800
uno.menu.clock.internal1.bootloader.low_fuses=0x62
uno.menu.clock.internal1.bootloader.high_fuses=0xDE
uno.menu.clock.internal1.bootloader.extended_fuses=0xFF
uno.menu.clock.internal1.bootloader.file=optiboot/optiboot_atmega328_1.hex
uno.menu.clock.internal1.build.f_cpu=1000000L

Для наглядности я приведу скриншот моего файла boards.txt, каким он был и каким стал после выполнения описанных изменений:

Редактирование boards.txt Ардуино

Таким образом мы описали меню из трех пунктов, для каждого из них указали скорость загрузки скетчей, значения фьюзов, имя файла загрузчика (об этом чуть позже) и частоту микроконтроллера. При помощи онлайн калькулятора вы можете расшифровать приведенные значения фьюзов и увидеть, как происходит выбор источника тактирования. И что для получения тактовой частоты 1МГц при работе от внутреннего RC-генератора используется деление частоты на 8 (фьюз CKDIV8).

Сохраните файл в кодировке UTF-8 без BOM и запустите IDE. Если все сделано правильно, то при выборе платы Arduino Uno вам станет доступно меню Инструменты->Тактирование. Но этих изменений пока еще мало. Если сейчас выбрать в меню, например, Внутренний RC-генератор 8МГц и выполнить запись загрузчика, то новые значения фьюзов, конечно, запишутся в микроконтроллер и он начнет работать с внутренним RC-генератором. Но мы потеряем возможность загружать в Ардуино новые скетчи, потому что записанный в нее загрузчик рассчитан на частоту 16МГц. Выход — скомпилировать загрузчик для работы на частотах 8МГц и 1МГц. Если у вас нет желания заморачиваться с компиляцией загрузчика, то можете скачать уже скомпилированные файлы отсюда, поместить их в каталог Arduino_dir\hardware\arduino\avr\bootloaders\optiboot\ и перейти к пункту Изменение частоты и источника тактирования Ардуино. А кому интересно могут скомпилировать их самостоятельно. О том как это сделать описано далее.

Что такое Optiboot

Optiboot — это загрузчик для AVR микроконтроллеров, созданный Питером Найтом (Peter Knight). В его основу легли труды нескольких разработчиков и групп (Jason P. Kyle, Arduino group, Spiff , AVR-Libc group, Ladyada), впоследствии он значительно развился. Загрузчик получился настолько удачным, что компания-разработчик Ардуино стала использовать его в своей плате Ардуино Уно. С недавнего времени Optiboot является официальным загрузчиком и для других плат на базе ATmega328p (Нано, Мини). По сравнению с использовавшимся в них старым загрузчиком Optiboot обладает рядом преимуществ:

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

Компиляция Optiboot для работы на частотах 8МГц и 1МГц

  1. скачайте IDE версии 1.0.6;
  2. распакуйте архив и перейдите каталог \arduino-1.0.6\hardware\;
  3. скопируйте или переместите каталог tools в Arduino_dir\hardware\arduino\ вашей рабочей IDE;
  4. IDE 1.0.6 больше не нужна, ее можно удалить.

Как подключить кварцевый резонатор к ардуино nano

Во всех проектах (скетчах) Arduino частота кварцевого резонатора устанавливается при выборе платы, и не предусматривается никакой опции для изменения тактовой частоты системы (константа F_CPU). С этой проблемой я столкнулся, когда пытался скомпилировать скетч CardKeyBoard.ino для мини-клавиатуры M5stack [2]. На этой клавиатуре кварцевый резонатор отсутствует, используется 8 МГц внутренней тактовой частоты ATmega328P, установленный фьюзами. По этой причине было необходимо поменять значение F_CPU с 16000000 на 8000000.

После поиска в интернете нашел 3 способа изменения F_CPU.

1. Включить опцию подробного вывода процесса компиляции. Это делается через меню Файл -> Настройки -> установить галочки «Показать подробный вывод».

enable verbose output

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

Здесь приведен кусок большого вывода лога компиляции скетча CardKeyBoard.ino. Опцию -DF_CPU=16000000L необходимо поменять на -DF_CPU=8000000L, иначе в библиотеке Adafruit NeoPixel не работает управление трехцветным светодиодом по последовательному протоколу [3].

C:\arduino-1.8.13\arduino-builder -dump-prefs -logger=machine -hardware C:\arduino-1.8.13\hardware -hardware C:\Users\user\AppData\Local\Arduino15\ packages -tools C:\arduino-1.8.13\tools-builder -tools C:\arduino-1.8.13\ hardware\tools\avr -tools C:\Users\user\AppData\Local\Arduino15\packages -built-in-libraries C:\arduino-1.8.13\libraries -libraries C:\Users\user\ OneDrive\Документы\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -ide-version=10813 -build-path C:\Users\user\AppData\Local\Temp\arduino_build_461155 -warnings=none -build-cache C:\Users\user\AppData\Local\Temp\arduino_cache_496329 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\arduino-1.8.13\ hardware\tools\avr -verbose C:\asm\CardKeyBoard\CardKeyBoard.ino C:\arduino-1.8.13\arduino-builder -compile -logger=machine -hardware C:\arduino-1.8.13\ hardware -hardware C:\Users\user\AppData\Local\Arduino15\packages -tools C:\arduino-1.8.13\tools-builder -tools C:\arduino-1.8.13\hardware\tools\avr -tools C:\Users\user\AppData\Local\Arduino15\packages -built-in-libraries C:\arduino-1.8.13\libraries -libraries C:\Users\user\OneDrive\Документы\Arduino\ libraries -fqbn=arduino:avr:nano:cpu=atmega328old -ide-version=10813 -build-path C:\Users\user\AppData\Local\Temp\arduino_build_461155 -warnings=none -build-cache C:\Users\user\AppData\Local\Temp\arduino_cache_496329 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\arduino-1.8.13\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\arduino-1.8.13\hardware\ tools\avr -verbose C:\asm\CardKeyBoard\CardKeyBoard.ino Using board 'nano' from platform in folder: C:\arduino-1.8.13\hardware\arduino\avr Using core 'arduino' from platform in folder: C:\arduino-1.8.13\hardware\arduino\avr Detecting libraries used. "C:\\arduino-1.8.13\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.13\\hardware\\ arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.13\\hardware\\arduino\\avr\\variants\\ eightanaloginputs" "C:\\Users\\user\\AppData\\Local\\Temp\\arduino_build_461155\\ sketch\\CardKeyBoard.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE Alternatives for Adafruit_NeoPixel.h: [Adafruit_NeoPixel@1.10.0] ResolveLibrary(Adafruit_NeoPixel.h) -> candidates: [Adafruit_NeoPixel@1.10.0] "C:\\arduino-1.8.13\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\arduino-1.8.13\\hardware\\ arduino\\avr\\cores\\arduino" "-IC:\\arduino-1.8.13\\hardware\\arduino\\avr\\variants\\ eightanaloginputs" "-IC:\\Users\\user\\OneDrive\\Документы\\Arduino\\libraries\\ Adafruit_NeoPixel" "C:\\Users\\user\\AppData\\Local\\Temp\\arduino_build_461155\\ sketch\\CardKeyBoard.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE Alternatives for Wire.h: [Wire@1.0] ResolveLibrary(Wire.h) -> candidates: [Wire@1.0] . "C:\\arduino-1.8.13\\hardware\\tools\\avr/bin/avr-size" -A "C:\\Users\\user\\AppData\\Local\\Temp\\arduino_build_461155/CardKeyBoard.ino.elf" Скетч использует 6758 байт (21%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 259 байт (12%) динамической памяти, оставляя 1789 байт для локальных переменных. Максимум: 2048 байт. 

2. Импортировать скетч в Microchip Studio (бывшая Atmel Studio), тогда можно будет штатными опциями поменять F_CPU и скомпилировать проект в среде Microchip Studio.

3. Поменять определение платы в файле boards.txt , указав там новое значение для F_CPU. Пример:

nano.name=CardKeyBoard (Nano, f_cpu изменена с 16 на 8 МГц) nano.upload.tool=avrdude
nano.upload.protocol=arduino nano.bootloader.tool=avrdude nano.bootloader.unlock_bits=0x3F nano.bootloader.lock_bits=0x0F
nano.build.f_cpu=8000000L nano.build.board=AVR_NANO nano.build.core=arduino nano.build.variant=eightanaloginputs .

[Ссылки]

1. Почему я не люблю Arduino.
2. CardKB full-featured QWERTY keyboard site:docs.m5stack.com.
3. WS2811: микросхема для управления трехцветным RGB-светодиодом.

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

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