Заменить предохранители Arduino Uno (может ли Arduino Uno заменить свои собственные предохранители?)
На данный момент я использую только Arduino Uno, включая его 328p (нет другого внешнего чипа для программирования).
Я хотел бы заменить его предохранители на внутренние часы с частотой 8 МГц (потому что тогда я перенесу 328p из Arduino Uno), и для простоты я хотел бы сделать это из Arduino IDE.
Вот что я пробовал:
Я создал новую запись в файле boards.txt, скопированную из Uno, изменил предохранители, например:
atmega328p.name=Atmega328p atmega328p.upload.tool=avrdude atmega328p.upload.protocol=arduino atmega328p.upload.maximum_size=32256 atmega328p.upload.maximum_data_size=2048 atmega328p.upload.speed=115200 atmega328p.bootloader.tool=avrdude atmega328p.bootloader.low_fuses=0x62 atmega328p.bootloader.high_fuses=0xD9 atmega328p.bootloader.extended_fuses=0xFF atmega328p.bootloader.unlock_bits=0x3F atmega328p.bootloader.lock_bits=0x0F atmega328p.bootloader.file=optiboot/optiboot_atmega328.hex atmega328p.build.mcu=atmega328p atmega328p.build.f_cpu=8000000L atmega328p.build.board=AVR_UNO atmega328p.build.core=arduino atmega328p.build.variant=standard
Я выбрал эту плату в разделе Инструменты > Плата: Atmega328p
Я попытался загрузить любой скетч (а не загрузить с помощью программатора, поскольку у меня нет другого чипа, подключенного к Arduino Uno), надеясь, что он изменит фьюзы во время (успешного) процесса Загрузки.
Я думаю, что это не сработало (когда я перемещаю 328p за пределы Uno, оно не работает).
Как я могу изменить предохранители для Arduino Uno непосредственно из Arduino IDE, чтобы включить внутренние часы с частотой 8 МГц?
PS: "Инструменты > Записать загрузчик" не удается, но я думаю, что это нормально, так как есть только Arduino Uno, и никакой другой микросхемы/нечего использовать в качестве "Программатора":
avrdude: stk500_recv(): программатор не отвечает
avrdude: stk500_getsync() попытка 1 из 10: не синхронизировано: resp=0x03
@Basj, 👍2
3 ответа
Лучший ответ:
Вам нужен программатор, чтобы прожигать предохранители. Если у вас есть другой Arduino, вы можете использовать Arduino в качестве примера скетча ISP в среде IDE. Вы не можете сжечь предохранители, просто используя USB-кабель, как вы загружаете код. Единственная причина, по которой вообще можно общаться с чипом, заключается в том, что есть еще один чип для преобразования его в последовательный порт и загрузчик на 328P, позволяющий загружать код через последовательный порт.
Как упоминалось в другом ответе, кажется, что Arduino Uno не может заменить свои собственные предохранители.
Вот как я это сделал:
- Я использовал Nano (нагруженный «Arduino as ISP») в качестве программатора для Uno с этим классическим подключением (за исключением того, что в моем случае левая плата, программатор, — это Nano):
Я добавил это в
boards.txt
(источник здесь):############################################################## atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock) atmega328bb.upload.protocol=arduino atmega328bb.upload.maximum_size=30720 atmega328bb.upload.maximum_data_size=2048 atmega328bb.upload.speed=57600 atmega328bb.upload.tool=avrdude atmega328bb.bootloader.tool=arduino:avrdude atmega328bb.bootloader.low_fuses=0xE2 atmega328bb.bootloader.high_fuses=0xDA atmega328bb.bootloader.extended_fuses=0x05 atmega328bb.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex atmega328bb.bootloader.unlock_bits=0x3F atmega328bb.bootloader.lock_bits=0x0F atmega328bb.build.mcu=atmega328p atmega328bb.build.f_cpu=8000000L atmega328bb.build.core=arduino atmega328bb.build.variant=standard atmega328bb.build.board=AVR_BARE
Я использовал "Программист: Arduino как ISP", затем "Записать загрузчик", затем "Загрузить с помощью программатора" с любым скетчем.
Затем фьюзы программируются на внутреннюю частоту 8 МГц, и мы можем вынуть ATmega328p из Uno и перенести ее на макетную плату! Работаем :)
Это технически возможно, но сложно.
Сначала вам нужно подключить Arduino с помощью перемычек таким образом, чтобы 328P мог использовать свой разъем ICSP для перепрограммирования 16U2/8U2 через собственный разъем этого чипа. Установив правильную пользовательскую прошивку, вы можете перемонтировать плату, чтобы 16U2 менял предохранители 328P при загрузке и повторно загружал прошивку перед переключением на свою обычную функцию. Тогда нужно просто перепрограммировать 328P на 16U2 с помощью оригинальной прошивки DFU, и вуаля! Arduino, поменявший собственные предохранители!
Если вам просто нужно заменить предохранители без программатора ICSP, это можно сделать с помощью программирование чипа 16U2 непосредственно через его USB-порт (хотя технически это не квалифицируется как Uno "само программирование").
- Atmega328p — переход на низкое энергопотребление 1,8 В с использованием генератора 4 МГц — прошивка загрузчика
- Arduino Uno считывние предохранителей
- Последовательная связь Arduino и AVR через USB
- Заставить TCNT оставаться ниже OCRxA на ATmega328P
- Программирование низкобайтового предохранителя для atmega328 в Arduino Uno
- Об управлении светодиодом с помощью кнопки с помощью ATmega328P
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
- Не удается снова загрузиться после смены платы
Спасибо за ваш ответ. Просто убедитесь: 1) действительно ли Arduino Uno не может заменить * свои собственные * предохранители?, @Basj
2) если я использую Nano в качестве программатора (Arduino в качестве интернет-провайдера) для программирования Uno, во время какого процесса будут изменены предохранители? Во время "Записать загрузчик" или во время "Загрузить с программатором"?, @Basj