Загрузка скетча в ATtiny84 с помощью Nano как "Arduinio как ISP" перестала работать

attiny uploading arduino-as-isp

Обновление 12/11 Прорабатываем опубликованный ответ.

  • Загрузить сброс внешнего вида - [Работает, мигает правильно.]
  • Убедите себя, что сброс внешнего вида кода надежный указывает на сброс DTR. [Открывал последовательный монитор 5-6 раз, ничего не менялось и не мигало]
  • Крышка 10 мкФ между Arduino Nano RESET и соседним GND. [Готово]
  • Подключите плату обратно, и вы должны увидеть, как светодиод быстро мигает для сброса питания (не DTR). [Быстро мигает так же, как после загрузки скетча на первом шаге]
  • Откройте (или снова откройте) последовательный монитор и убедитесь, что индикатор остается выключенным. [Нет светодиодов]
  • Разорвите элемент СБРОСА любой схемы, которую вы выбрали для отключения DTR reset. Загрузите скетч ArduinoISP [Загружен и проверен, проблем нет]
  • Вы должны увидеть ошибку проверки подписи, подобную этой: [Да, эта ошибка произошла в том же сообщении, что и вы опубликовали]
  • Загрузить пустой скетч [ЭТО РАБОТАЕТ !!!!!]
  • Проверьте, используя один из моих предыдущих скетчей [WOOT! Это работает]

Спасибо, что решили проблему!! (хотя я уже давно купил универсальный программатор, потому что не думал, что когда-нибудь заставлю его работать).

Обновление - 11 / Ноябрь

Как и было предложено, я вынул nano из любой платы, и он свисает с USB-кабеля. Я попытался загрузить скетч по умолчанию.

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

использование настроек:

  • Плата Attiny22/44/84
  • Процессор Attiny84
  • Программатор Arduino как ISP

Я все еще сталкиваюсь с проблемой того, что программатор не отвечает. Сделал это для всех 3 наноматериалов, которые у меня есть в наличии.

===

Обновление - 11 / ноябрь Теперь я стер всю среду IDE со своей машины и перезагрузил ее. Я попытался запрограммировать ATmega168PA вместо tiny. Та же проблема.

Обновление - 10 / ноябрь:

После замены между 2 различными наноразмерными и разными конденсаторами проверьте, работает ли колпачок. Я заметил некоторые изменения в поведении. Nano A терпит неудачу, как показано ниже, однако Nano B терпит неудачу, но сообщение немного отличается. Вместо resp= 0x00 у меня есть resp= 0xFF

Также на Nano B индикатор L не мигает, он горит постоянно, и 10 сообщений getsync отправляются очень быстро.


Мне действительно не помешало бы найти решение, если оно у кого-нибудь есть.

Я пытаюсь загрузить скетч в ATtiny84 с помощью Nano как "Arduinio as ISP". Это сработало на прошлой неделе, тот же скетч, без изменений. Я попытался устранить неполадки:

Поменял чипы ATtiny, поменял между 3 разными Nanos (и даже купил другой, который тоже вышел из строя), я поменял все USB-кабели, поменял все провода. Я установил IDE на разные машины.

Подводя итог, я попробовал:

  • 3 разных компьютера: Linux, Raspberry Pi, Windows 10
  • 7 разных фишек ATtiny84 (у меня их десять, но я не хочу использовать остальные 3 на случай, если это их испортит!)
  • 4 разных наноматериала
  • разные USB-кабели, разные провода, заменены конденсаторы

Я трижды проверил конфигурацию. Кажется, ничто не может решить проблему.

У меня нет проблем ни с одним из Nanos, я могу использовать их напрямую, но, похоже, просто не могу использовать их для ввода в AVR. Он работал с одной и той же конфигурацией в течение нескольких недель, а теперь нет. Я действительно чешу в затылке.

Я использую:

  • ATtiny core Дэвида А. Меллиса
  • Платы: Attiny24/44/84
  • Процессор: Attiny84
  • Тактовая частота: Внутренняя 1 МГц
  • Программатор: Arduinio как ISP
  • "Загрузка с помощью программатора"

Подробные сообщения об ошибках:

Arduino: 1.8.13 (Linux), Board: "ATtiny24/44/84, ATtiny84, Internal 1 MHz"

/home/rick/arduino-1.8.13/arduino-builder -dump-prefs -logger=machine -hardware /home/rick/arduino-1.8.13/hardware -hardware /home/rick/.arduino15/packages -hardware /home/rick/Arduino/hardware -tools /home/rick/arduino-1.8.13/tools-builder -tools /home/rick/arduino-1.8.13/hardware/tools/avr -tools /home/rick/.arduino15/packages -built-in-libraries /home/rick/arduino-1.8.13/libraries -libraries /home/rick/Arduino/libraries -fqbn=attiny:avr:ATtinyX4:cpu=attiny84,clock=internal1 -vid-pid=1A86_7523 -ide-version=10813 -build-path /tmp/arduino_build_476590 -warnings=default -build-cache /tmp/arduino_cache_440110 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=/home/rick/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=/home/rick/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -prefs=runtime.tools.arduinoOTA.path=/home/rick/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=/home/rick/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs=runtime.tools.avr-gcc.path=/home/rick/arduino-1.8.13/hardware/tools/avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/home/rick/arduino-1.8.13/hardware/tools/avr -verbose /home/rick/Arduino/Light_detector_Example/Light_detector_Example.ino
/home/rick/arduino-1.8.13/arduino-builder -compile -logger=machine -hardware /home/rick/arduino-1.8.13/hardware -hardware /home/rick/.arduino15/packages -hardware /home/rick/Arduino/hardware -tools /home/rick/arduino-1.8.13/tools-builder -tools /home/rick/arduino-1.8.13/hardware/tools/avr -tools /home/rick/.arduino15/packages -built-in-libraries /home/rick/arduino-1.8.13/libraries -libraries /home/rick/Arduino/libraries -fqbn=attiny:avr:ATtinyX4:cpu=attiny84,clock=internal1 -vid-pid=1A86_7523 -ide-version=10813 -build-path /tmp/arduino_build_476590 -warnings=default -build-cache /tmp/arduino_cache_440110 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=/home/rick/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=/home/rick/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -prefs=runtime.tools.arduinoOTA.path=/home/rick/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=/home/rick/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs=runtime.tools.avr-gcc.path=/home/rick/arduino-1.8.13/hardware/tools/avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/home/rick/arduino-1.8.13/hardware/tools/avr -verbose /home/rick/Arduino/Light_detector_Example/Light_detector_Example.ino
Using board 'ATtinyX4' from platform in folder: /home/rick/.arduino15/packages/attiny/hardware/avr/1.0.2
Using core 'arduino' from platform in folder: /home/rick/arduino-1.8.13/hardware/arduino/avr
Detecting libraries used...
/home/rick/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=attiny84 -DF_CPU=1000000L -DARDUINO=10813 -DARDUINO_attiny -DARDUINO_ARCH_AVR -I/home/rick/arduino-1.8.13/hardware/arduino/avr/cores/arduino -I/home/rick/.arduino15/packages/attiny/hardware/avr/1.0.2/variants/tiny14 /tmp/arduino_build_476590/sketch/Light_detector_Example.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
Alternatives for SendOnlySoftwareSerial.h: [SendOnlySoftwareSerial]
ResolveLibrary(SendOnlySoftwareSerial.h)
  -> candidates: [SendOnlySoftwareSerial]
/home/rick/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=attiny84 -DF_CPU=1000000L -DARDUINO=10813 -DARDUINO_attiny -DARDUINO_ARCH_AVR -I/home/rick/arduino-1.8.13/hardware/arduino/avr/cores/arduino -I/home/rick/.arduino15/packages/attiny/hardware/avr/1.0.2/variants/tiny14 -I/home/rick/Arduino/libraries/SendOnlySoftwareSerial /tmp/arduino_build_476590/sketch/Light_detector_Example.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
Using cached library dependencies for file: /home/rick/Arduino/libraries/SendOnlySoftwareSerial/SendOnlySoftwareSerial.cpp
Generating function prototypes...
/home/rick/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=attiny84 -DF_CPU=1000000L -DARDUINO=10813 -DARDUINO_attiny -DARDUINO_ARCH_AVR -I/home/rick/arduino-1.8.13/hardware/arduino/avr/cores/arduino -I/home/rick/.arduino15/packages/attiny/hardware/avr/1.0.2/variants/tiny14 -I/home/rick/Arduino/libraries/SendOnlySoftwareSerial /tmp/arduino_build_476590/sketch/Light_detector_Example.ino.cpp -o /tmp/arduino_build_476590/preproc/ctags_target_for_gcc_minus_e.cpp -DARDUINO_LIB_DISCOVERY_PHASE
/home/rick/arduino-1.8.13/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_476590/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch...
/home/rick/arduino-1.8.13/hardware/tools/avr/bin/avr-g++ -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=attiny84 -DF_CPU=1000000L -DARDUINO=10813 -DARDUINO_attiny -DARDUINO_ARCH_AVR -I/home/rick/arduino-1.8.13/hardware/arduino/avr/cores/arduino -I/home/rick/.arduino15/packages/attiny/hardware/avr/1.0.2/variants/tiny14 -I/home/rick/Arduino/libraries/SendOnlySoftwareSerial /tmp/arduino_build_476590/sketch/Light_detector_Example.ino.cpp -o /tmp/arduino_build_476590/sketch/Light_detector_Example.ino.cpp.o
Compiling libraries...
Compiling library "SendOnlySoftwareSerial"
Using previously compiled file: /tmp/arduino_build_476590/libraries/SendOnlySoftwareSerial/SendOnlySoftwareSerial.cpp.o
Compiling core...
Using precompiled core: /tmp/arduino_cache_440110/core/core_attiny_avr_ATtinyX4_cpu_attiny84,clock_internal1_8328ca5f502560caf6997d9e8039b097.a
Linking everything together...
/home/rick/arduino-1.8.13/hardware/tools/avr/bin/avr-gcc -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=attiny84 -o /tmp/arduino_build_476590/Light_detector_Example.ino.elf /tmp/arduino_build_476590/sketch/Light_detector_Example.ino.cpp.o /tmp/arduino_build_476590/libraries/SendOnlySoftwareSerial/SendOnlySoftwareSerial.cpp.o /tmp/arduino_build_476590/../arduino_cache_440110/core/core_attiny_avr_ATtinyX4_cpu_attiny84,clock_internal1_8328ca5f502560caf6997d9e8039b097.a -L/tmp/arduino_build_476590 -lm
/home/rick/arduino-1.8.13/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_476590/Light_detector_Example.ino.elf /tmp/arduino_build_476590/Light_detector_Example.ino.eep
/home/rick/arduino-1.8.13/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/arduino_build_476590/Light_detector_Example.ino.elf /tmp/arduino_build_476590/Light_detector_Example.ino.hex
Using library SendOnlySoftwareSerial in folder: /home/rick/Arduino/libraries/SendOnlySoftwareSerial (legacy)
/home/rick/arduino-1.8.13/hardware/tools/avr/bin/avr-size -A /tmp/arduino_build_476590/Light_detector_Example.ino.elf
Sketch uses 1666 bytes (20%) of program storage space. Maximum is 8192 bytes.
Global variables use 152 bytes (29%) of dynamic memory, leaving 360 bytes for local variables. Maximum is 512 bytes.
/home/rick/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude -C/home/rick/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf -v -pattiny84 -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:/tmp/arduino_build_476590/Light_detector_Example.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/rick/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf"
         User configuration file is "/home/rick/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude done.  Thank you.

Problem uploading to board.  See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

My setup

  • Подключенные VCC и GND
  • Белый провод (контакт 9) -> D13
  • Желтый провод 1 (контакт 8) -> D12
  • Красный провод (вывод 7) -> D11
  • Желтый провод 2 (контакт 4) -> D10
  • 10 Конденсатор между RST и Gnd

Единственное изменение, которое я помню, - это добавление библиотеки для SerialOutOnly. Но я выполнил чистую установку на Windows и Rasberry только с библиотеками ATtiny, и она по-прежнему выполняется в то же время.

Люди пропустили мой комментарий, поэтому я загрузил вторую фотографию всего макета. Он питается от двух проводов, которые были вне кадра на первой фотографии.

, 👍2

Обсуждение

Да, АТтини - это хлебная ложка. Я использовал https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json эта ссылка для настройки плат Attiny. Затем я использую Attiny24 / 44 / 84, процессор Attiny84 и внутреннюю тактовую частоту 1 МГц., @Rick Dearman

Да, у меня есть конденсатор между gnd и reset., @Rick Dearman

Я отредактировал вопрос, чтобы улучшить заголовок и теги. Вывод avrdude не выглядит подробным. вы включили в настройках подробный режим для загрузки?, @Juraj

Да, как для компиляции, так и для загрузки., @Rick Dearman

Это звучит действительно неприятно. Но если это работало раньше, должно быть, что-то изменилось, чтобы заставить его не работать сейчас (извините, это очевидно). Вы практически исключили компьютерную сторону вещей, протестировав ее с помощью различных настроек. Вы убедились, что на всех Nanos загружен скетч “ArduinoISP”, а предохранители ATtiny соответствуют ожидаемой настройке? Не могли бы вы добавить фотографию вашей установки?, @StarCat

Судя по вашей фотографии, я думаю, что ваш ATtiny84 не подключен (подключен к неправильным шинам питания). Положительные (красные) и отрицательные (синие) направляющие с обеих сторон макета обычно не соединены., @StarCat

В верхней части макета, за пределами рисунка, есть два провода, соединяющие питание и заземление с обеих сторон., @Rick Dearman

После всех приведенных здесь предложений и комментариев я не уверен, что предложить вам сделать сейчас, кроме создания видео, показывающего все, что вы делаете на протяжении всего процесса, включая часть нанесения скетча arduino sp.ino на nano. Чтобы было ясно, сами сообщения об ошибках находятся в avrdude, который не может связаться с скетчем arduinoisp.ino. Вы могли бы и, возможно, должны для проверки работоспособности снять nano прямо с платы и увидеть, что получаете совершенно другое сообщение об ошибке. Если вы этого не сделаете, значит, что-то не так с загруженным скетчем arduinoisp.ino., @timemage

Если arduinoisp.ino загружен правильно, к нему вообще ничего не подключено, с правильными параметрами, указанными при загрузке, вы получите сбой при проверке подписи устройства, а не ошибку синхронизации, которую вы получаете сейчас., @timemage

Вам все равно потребуется выполнить сброс с помощью cap no gnd, cut trace или hard pullup без подключения других проводов. Я сделал это здесь, используя подтягивание на 62 Ом (вместо колпачка), и оно вело себя так, как ожидалось. То есть не удалось проверить сигнатуру устройства (не подключенную) и * НЕ * ошибку синхронизации протокола stk500v1. Затем я подключил к нему t85, и это тоже сработало нормально. Я / мог бы / написать все это, но я глубоко подозреваю, что если я это сделаю, вы вернетесь со словами "все еще не работает" из-за того, что там происходит что-то, чего мы не можем видеть., @timemage

Что ж, я рад, что у тебя это работает. Однако мне неясно, что изменилось по сравнению с тем, что вы делали раньше, до сих пор., @timemage

Я думаю, что это могла быть "повторная загрузка" Arduinio как провайдера??, @Rick Dearman

Хех, ну, я думаю, мы никогда этого не узнаем. Вообще говоря, скетч arduino sp.ino сам по себе надежен. Процесс его использования не очень понятен большинству людей в первые пару раз., @timemage


2 ответа


Лучший ответ:

0

Различия в моем окружении

В данный момент у меня нет под рукой обычного Nano на ATtiny84.

Для наших целей я использую ATTiny44, который, по сути, является тем, что есть у вас, только с меньшим объемом памяти. Nano, который я использую, - это клон Nano, который я модифицировал с помощью ATmega328PB, а не обычного 328P. Чтобы немного запутать ситуацию, он запускает обычный загрузчик UNO (а не NANO). Загрузчик лжет о сигнатуре чипа (говоря, что это 328P) и использует скорость передачи данных UNO 115200, а не 57600 у Nano. Таким образом, вы увидите на моих скриншотах / примерах и пунктах меню "UNO" вместо "Nano", "328PB" вместо "328P" и "ATTiny44" вместо "ATtiny84".

Эти различия несущественны.

Укрепите доверие к своему механизму устранения сбоев

Загрузить сбросить код внешнего вида

Удалите все внешние схемы из вашего Nano. Все означает ВСЕ. Это включает в себя и все, что вы сделали, чтобы победить reset.

Выберите Arduino Nano в меню Инструменты / Платы. Выберите порт вашего Arduino Nano в меню Сервис / Порт.

Загрузите следующий скетч:


void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  static bool led_state;
  static size_t toggle_counter;

  if (toggle_counter < 20LU * 6) {
    led_state = !led_state;
    digitalWrite(LED_BUILTIN, led_state);
    delay(50);
    ++toggle_counter;
  }
}

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

Загрузчик optiboot от Nano мигает встроенным светодиодом pin 13 три раза, но это очень короткое событие, и, возможно, его трудно отличить от действия часов SPI (что также происходит на выводе 13). Напротив, трудно не заметить мигание, которое производит этот код.

Убедите себя, что сброс внешнего вида кода надежный указывает на сброс DTR.

Откройте (или снова откройте) последовательный монитор и убедитесь, что он делает это снова. Близко и Повторно открывайте последовательный монитор столько раз, сколько захотите, пока не почувствуете себя комфортно и не увидите четкую индикацию перезагрузки платы.

Установите схему сброса-отключения DTR для проверки.

Отсоедините плату от сети и установите выбранную вами схему сброса, препятствующую сбросу.

Типичным предложением является ограничение на 10 мкФ между Arduino Nano RESET и соседним GND. Убедитесь, что у вас нет электролитического колпачка задом наперед.

Я часто использую жесткую тягу около 60 Ом.

Подключите плату обратно, и вы должны увидеть, как светодиод быстро мигает для сброса питания (не DTR).

Убедите себя, что DTR reset потерпел поражение.

Откройте (или снова откройте) последовательный монитор и убедитесь, что индикатор остается выключенным. Повторно открывайте последовательный монитор сколько угодно раз и убедитесь, что светодиод остается выключенным.

Загрузите скетч arduinoisp.ino

ПРИМЕЧАНИЕ: На момент написания текущей версией IDE является 1.8.13. Тем не менее, все , что здесь сказано, должно быть найдено для старых и, вероятно, будущих выпусков IDE / arduinoisp.ino.

В среде IDE в меню File/Examples/11.ArduinoISP выберите скетч ArduinoISP. В его текущей версии из IDE 1.8.13 он не требует никаких изменений для заводской версии ATtiny84 (A) (или практически любого AVR), то есть со значениями предохранителей конфигурации по умолчанию.

Разорвите элемент СБРОСА любой схемы, которую вы выбрали для отключения DTR reset.

Загрузите скетч ArduinoISP.

Вы должны увидеть, что светодиод НЕ мигает быстро в течение 6 секунд, как это было ранее. Это должно указывать на то, что вы успешно загрузили скетч arduinoisp.ino.

Повторно подключите ветвь СБРОСА любой схемы, которую вы выбрали для отключения сброса DTR.

Попробуйте запрограммировать (без подключенного целевого чипа), чтобы убедиться, что вы не получаете ошибок СИНХРОНИЗАЦИИ.

Откройте новый пустой скетч.

Выберите настройки вашей целевой микросхемы в меню Платы. Это ваш Д. Следует выбрать "плату" Mellis ATtiny84. Или в более общем смысле: любая совместимая "плата" из любого пакета поддержки платы, которая поддерживает любой AVR, с которым вы хотите это сделать.

Убедитесь, что порт вашего Arduino Nano по-прежнему выбран в меню Сервис / Порт.

В меню Инструменты / Программатор выберите "Arduino как ISP". За исключением некоторых усилий по интернационализации, в нем должно быть сказано именно это. В нем не должно быть написано "ArduinoISP" или "ArduinoISP.org ". Да, люди из Arduino обычно ПЛОХО разбираются в выборе имен.

Выберите "Загрузить с помощью программатора".

Вы должны увидеть ошибку проверки подписи, подобную этой:

avrdude: AVR device initialized and ready to accept instructions

An error occurred while uploading the sketch
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x00ffff
avrdude: Expected signature for ATtiny44 is 1E 92 07
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Возможно, вам потребуется включить "Подробный" для загрузки в настройках.

Поскольку вы ничего не подключили к выводам SPI, возвращаемая сигнатура устройства будет чистым мусором. Здесь важно то, что вы получили сбой сигнатуры устройства, а НЕ ошибку синхронизации. Ошибка синхронизации представляет собой неспособность avrdude взаимодействовать с реализацией arduino sp.ino sketch протокола программирования STK500v1. То, что вы видите здесь, - это успешная связь STK500v1 (с arduinoiso.ino), сообщающая о вполне разумной неспособности идентифицировать чип (который вы еще даже не подключили).

Подключите свой ATtiny84 (или что-то еще)

Отключите устройство Nano от сети и подключите к нему AVR. За исключением вашей попытки использовать VIN, я не заметил ничего плохого в вашей проводке.

ATtiny84 должен быть подключен следующим образом:

Nano 5V (not VIN) to ATTiny84 pin  1
Nano GND          to ATTiny84 pin 14
Nano PIN 13       to ATTiny84 pin  9
Nano PIN 12       to ATTiny84 pin  8
Nano PIN 11       to ATTiny84 pin  7
Nano PIN 10       to ATTiny84 pin  4

Или в более широком смысле для любого ISP, поддерживающего AVR tiny / mega:

Nano 5V (not VIN) to ALL AVR (A)VCCs.
Nano GND          to ALL AVR GNDs
Nano PIN 13       to AVR (U)SCK
Nano PIN 12       to AVR MISO
Nano PIN 11       to AVR MOSI
Nano PIN 10       to AVR RESET

Возможно, вы захотите добавить подтягивающий резистор из сброса целевого AVR в его VCC. Это не должно быть необходимо для использования с arduinoisp.ino sketch, но может понадобиться для работы на макете. Вы также можете добавить разделительный колпачок между VCS вашего AVR и GND. Однако мне это никогда не было нужно только для программирования на макетной плате без пайки.

Обычно я не использую макетные силовые рейки при программировании устройств AVR с одиночными выводами VCC и GND.

В любом случае, как правило, ваше соединение должно быть коротким. На самом деле они не должны быть длиннее 20 см и обычно могут быть меньше половины этого размера. Храните их вместе с GND, где это возможно. Ваш сигнал SCK, вероятно, должен получать наибольшее внимание. Я не вижу ничего плохого в длине ваших соединений.

Загрузка

Подключите устройство Nano (и подключенный к нему AVR) обратно к USB.

Убедитесь, что индикатор питания на Nano не погас, что он не отключается от шины USB и что на ощупь он не горячий. Что ничто не пахнет странно.

Выберите все, что вы хотите загрузить. Пустой скетч подойдет для тестовой загрузки.

Убедитесь, что Tools/Port является портом Nano. Убедитесь, что программатор по-прежнему является "Arduino as ISP". Убедитесь, что "плата" по-прежнему соответствует тому, какой она должна быть для вашего целевого чипа (не для Nano).

Выберите "Загрузить с помощью программатора".

Вы должны получить успешный результат, который будет выглядеть примерно так:

/home/user/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude -C/home/user/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf -v -pattiny44 -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:/tmp/arduino_build_656744/sketch_nov12b.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/user/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf"
         User configuration file is "/home/user/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATtiny44
         Chip Erase delay              : 4500 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : possible i/o
         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     6     4    0 no        256    4      0  4000  4500 0xff 0xff
           flash         65     6    32    0 yes      4096   64     64  4500  4500 0xff 0xff
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    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.02s

avrdude: Device signature = 0x1e9207 (probably t44)
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_656744/sketch_nov12b.ino.hex"
avrdude: writing flash (286 bytes):

Writing | ################################################## | 100% 0.46s

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

Reading | ################################################## | 100% 0.22s

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

avrdude done.  Thank you.

Приведенное выше было сгенерировано с использованием процесса, описанного с моей несколько иной настройкой.

Поскольку в IDE все правильно, если вы получаете ошибку синхронизации сейчас, у вас , вероятно, возникла проблема с подключением, которая приводит к сбою Nano, препятствуя его способности выполнять реализацию stk500v1. Это было частью идеи, стоявшей за указанием вашего VIN-соединения в исходном сообщении:

Vin is not 5V

,

Это дало мне краткий проблеск надежды, но я внес это изменение, и оно не сработало. Я попробовал несколько разных AT84 и Nanos., @Rick Dearman

Если вы внимательно посмотрите, видите ли вы, что индикатор L мигает так же, как во время сброса? Другими словами, действительно ли ваша задержка СБРОСА выполняет свою работу?, @timemage

Да, индикатор L мигает, когда я пытаюсь загрузить скетч., @Rick Dearman

Да, это было бы похоже на SCK. К чему я клоню, так это к тому, что при сбросе он будет мигать три раза. Если он делает что-то конкретное, когда вы пытаетесь загрузить, это означает, что ограничение не удерживает сброс от снижения., @timemage

Я не понимаю, что вы имеете в виду. Я вынул конденсатор и попробовал еще раз. Мигание кажется одинаковым, независимо от того, вставлен колпачок или нет. Я попробовал другой конденсатор. Тот же результат., @Rick Dearman

Это было бы незаметно, когда вы запускаете arduino.ino sketch. Было бы проще протестировать скетч, который вообще ничего не делал. Таким образом, если бы вы открыли последовательный монитор и увидели, что он вообще мигает, вы бы точно знали, что он сбрасывается. В любом случае, за исключением бита VIN, ваша проводка выглядит нормально для программирования. Как бы то ни было, я обычно использую около 60 Ом между сопротивлением между сбросом и 5 В, а не конденсатор 10 мкФ для заземления, просто потому, что у меня есть блок замены резисторов, который я использую постоянно., @timemage


2

Судя по вашему изображению, похоже, что ваш ATtiny84 не подключен к сети (подключен к отключенным шинам питания).

Положительные (красные) и отрицательные (синие) направляющие с обеих сторон макета обычно не соединены. Вам следует либо вручную подключить направляющие питания на противоположных сторонах макетной платы, либо подключить контакты питания ATtiny (1 и 14) к соответствующей направляющей на другой стороне платы. Смотрите ниже (приношу извинения за грубый рисунок).

,

Мощность не была видна на первой фотографии, она была вне кадра., @Rick Dearman