Замена кварца с 16Мгц на 8Мгц. Как и чем перешить бутлоадер

Двигайтесь по шагам.

  • Запишите с проверкой скетч ArduinoISP.
  • Дайте команду на запись загрузчика без подключения второй платы. Если Arduino as ISP не распознается, то ищите в чем ошибка.
  • После того как Arduino as ISP будет распознаваться, подключайте к ней вторую плату.

Покажите из лога строку запуска avrdude ?

Попробовал и на винде и на линукс. Все отлично пишется без конденсатора.

Конфигурации

  1. Windows 7 x64 Ultimate, Arduino IDE 1.8.3 portable

  2. Linux - Fedora 35, Arduino IDE 1.8.19

Платы в обоих случаях Nano + Nano, обе китайские. Подключение через ICSP + RST на пин 10

Диагностические сообщения ИДЕ, кому интересно:

Спойлер
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/arduino-builder -dump-prefs -logger=machine -hardware /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware -hardware /home/dmit/.arduino15/packages -hardware /home/dmit/Arduino/hardware -tools /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/tools-builder -tools /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -tools /home/dmit/.arduino15/packages -built-in-libraries /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/libraries -libraries /home/dmit/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328 -vid-pid=1A86_7523 -ide-version=10819 -build-path /tmp/arduino_build_275821 -warnings=all -build-cache /tmp/arduino_cache_992117 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -prefs=runtime.tools.avr-gcc.path=/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -prefs=runtime.tools.arduinoOTA.path=/home/dmit/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=/home/dmit/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -verbose /home/dmit/Arduino/sketch_sep26a/sketch_sep26a.ino
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/arduino-builder -compile -logger=machine -hardware /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware -hardware /home/dmit/.arduino15/packages -hardware /home/dmit/Arduino/hardware -tools /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/tools-builder -tools /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -tools /home/dmit/.arduino15/packages -built-in-libraries /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/libraries -libraries /home/dmit/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328 -vid-pid=1A86_7523 -ide-version=10819 -build-path /tmp/arduino_build_275821 -warnings=all -build-cache /tmp/arduino_cache_992117 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -prefs=runtime.tools.avr-gcc.path=/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr -prefs=runtime.tools.arduinoOTA.path=/home/dmit/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=/home/dmit/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -verbose /home/dmit/Arduino/sketch_sep26a/sketch_sep26a.ino
Using board 'nano' from platform in folder: /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/arduino/avr
Using core 'arduino' from platform in folder: /home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/arduino/avr
Detecting libraries used...
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/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=10819 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/arduino/avr/cores/arduino -I/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_275821/sketch/sketch_sep26a.ino.cpp -o /dev/null
Generating function prototypes...
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/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=10819 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/arduino/avr/cores/arduino -I/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_275821/sketch/sketch_sep26a.ino.cpp -o /tmp/arduino_build_275821/preproc/ctags_target_for_gcc_minus_e.cpp
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_275821/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch...
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/arduino/avr/cores/arduino -I/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_275821/sketch/sketch_sep26a.ino.cpp -o /tmp/arduino_build_275821/sketch/sketch_sep26a.ino.cpp.o
Compiling libraries...
Compiling core...
Using precompiled core: /tmp/arduino_cache_992117/core/core_arduino_avr_nano_cpu_atmega328_75feadb4b2305574d9567c720914a268.a
Linking everything together...
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr/bin/avr-gcc -Wall -Wextra -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o /tmp/arduino_build_275821/sketch_sep26a.ino.elf /tmp/arduino_build_275821/sketch/sketch_sep26a.ino.cpp.o /tmp/arduino_build_275821/../arduino_cache_992117/core/core_arduino_avr_nano_cpu_atmega328_75feadb4b2305574d9567c720914a268.a -L/tmp/arduino_build_275821 -lm
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr/bin/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /tmp/arduino_build_275821/sketch_sep26a.ino.elf /tmp/arduino_build_275821/sketch_sep26a.ino.eep
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/arduino_build_275821/sketch_sep26a.ino.elf /tmp/arduino_build_275821/sketch_sep26a.ino.hex
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr/bin/avr-size -A /tmp/arduino_build_275821/sketch_sep26a.ino.elf
Sketch uses 932 bytes (3%) of program storage space. Maximum is 30720 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr/bin/avrdude -C/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -P/dev/ttyUSB1 -b19200 -Uflash:w:/tmp/arduino_build_275821/sketch_sep26a.ino.hex:i 

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/home/dmit/arduino-1.8.19-linux64/arduino-1.8.19/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/home/dmit/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB1
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/tmp/arduino_build_275821/sketch_sep26a.ino.hex"
avrdude: writing flash (932 bytes):

Writing | ################################################## | 100% 1.24s

avrdude: 932 bytes of flash written
avrdude: verifying flash memory against /tmp/arduino_build_275821/sketch_sep26a.ino.hex:
avrdude: load data flash data from input file /tmp/arduino_build_275821/sketch_sep26a.ino.hex:
avrdude: input file /tmp/arduino_build_275821/sketch_sep26a.ino.hex contains 932 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.77s

avrdude: verifying ...
avrdude: 932 bytes of flash verified

avrdude done.  Thank you.

PS
Думаю, сообщество мне простит отсутствие видео. Если честно, сам я не вижу в таком “доказательстве” никакого смысла - так к чему тратить время. Все равно при записи за кадром остается много факторов, таких как конфигурация компьютера или настройки аврдудки, и на самом деле с видео или без него нам только остается верить в добросовестность автора. Надеюсь вы мне верите и без роликов :slight_smile:

Я - верю.

Но тогда тем более странно, потому, что у меня на трех разных компах - двух ноутах и одном стационарном без конденсатора НЕ работает. :wink: Что я и показал в видео.


PS: позицию по поводу роликов не могу разделить. Мне кажется что доказательная ценность видео стоит 5 минут съемок.

1 лайк

У меня есть одно предположение на этот счет… дело в том что у меня “нано-программатор” - выделенная плата, которая хранится отдельно и используется только в этом качестве. Скетч “Arduino_as_ISP” залит в нее еще в 17 или 18 году и с тех не обновлялся. Сейчас я заглянул в ИДЕ и помоему этот скетч стал значительно больше и сложнее. Возможно в последних версиях что-то неудачно “подкрутили”, что и объясняет разное поведение.

Чисто умозрительно ребут программатора в начале прошивки не должен ломать процесс. Ведь программатор у нас чисто программный и в любом случае стартует не сразу. Как известно, ИДЕ ждет ответа программатора несколько десятков секунд и только потом выдает ошибку. Так что при правильном начале сессии задержка на ребут никак не должна мешать процессу.

Добавка - в принципе, мою идею легко проверить - надо взять еще одну Нану, залить в нее свежий вариант Ардуино-как-ИСП кода и попробовать что-нибудь прошить. Но сейчас у меня на работе с собой только эти две платы и рисковать своим работающим программатором я не буду :slight_smile: Только вечером.

как в эту нану (Programmer) заливался код?
или так, в нане (Programmer) сидит загрузчик?

Ежели ко мне тоже вопрос, то:

  1. я включил комп,
  2. достал две старые наны (с давно и многократно перепаянными диодами :wink: ),
  3. проверил на работоспособность, одновил IDE до последней версии (2.2.1 вроде?),
  4. собрал стенд для видео.
  5. Загрузил в одну из них Arduino as ISP,
  6. подключил вторую и в нее загрузил “блинк”,
  7. увидел, что они синхронно мигают LED_BUILTIN,
  8. подключил диод на D3,
  9. снял видео.

до классических “12 шагов” не хватает медалек и принесения все навязчивых извинений! :wink: :wink: :wink: (шутка для тех, кто понимает)

я так понимаю, посредством загрузчика который уже сидел в ней?

А кстати - тема! Нужно проверить, как ведет себя Arduino as ISP прошитый через Arduino as ISP.
Может в этом дело?
Найду минунку - проверю. Вчера было немного времени, а сегодня уже бегаю целый день… :frowning:

За давностью лет уверенности нет, но скорее всего через стандартный загрузчик. До такого изврата, чтобы прошивать скетч Ардуино_как_Исп через другой Ардуино_как_Исп - я бы не додумался.

Ты про 707ого? Он сам ответит, надеюсь. Я вчера прошивал через USB, само собой.

Там дальше есть абзац про конденсатор на программируемой плате-
The 10µF electrolytic capacitor connected to RESET and GND of the programming board is needed only for the boards that have an interface between the microcontroller and the computer’s USB, like Mega, UNO, Mini, Nano. Boards like Leonardo, Esplora and Micro, with the USB directly managed by the microcontroller, don’t need the capacitor.

Между Reset и GND на программируемой плате смысл есть, но вот между Reset и +5В на плате программатора я сокральный смысл не понимаю - зашунтировать резистор ???..

А что будет, если на пин rst коротко подать LOW? А если с конденсатором?

зависит от того, когда это делать.

Может что бы чутка дольше подержать плату “программатор” в ресете после сброса ее DTR-ом, чтобы ПО правильно нашупала ее? Тогда моя версия с наличием загрузчика не вписывается…
Не знаю, тут нужен эксперемент с осликом, у меня нет ща такой возможности.

Блин, признаю, это я херню спорол, конечно на GND )))
Исправил

такс, один слился Ж)
Теперь осталось Дракулу еще раз спросить, ГДЕ он ставил свой кондер.
Держись, @Komandir , мы их дожимаем :slight_smile:

Я не слился, я поправился схематически )))

Когда вместо логов выкладывают скриншоты, то это считается плохо. А здесь вообще видео, на котором мало что подробно разглядишь кроме моргающего светодиода.
Возможно более познавательно было бы выкладывание ПОЛНЫХ логов (ключ -v -v -v -v ) Тогда было бы видно, что дудка посылает и что получает в ответ, и возможно стало бы понятно в каком случае она общается с бутлоадером а в каком с Arduino as ISP

1 лайк