Использование Nodemcu для программирования Attiny85
У меня есть плата разработчика для моего attiny85. при подключении его к компьютеру я получаю сообщение "неизвестное USB-устройство (ошибка запроса дескриптора устройства)". хотя у меня есть необходимые драйверы, поэтому я подумал о том, чтобы попробовать использовать мой nodemcu. Попробовал подключить SPI (к nodemcu hmiso; hmosi; hcslk; hcs) и загрузить, используя "arduino как ISP" и совместимые настройки (https://www.hackster.io/arjun/programming-attiny85-with-arduino-uno-afb829). нажатие "записать загрузочный файл" с помощью этого способа приводит к ошибкам:
"avrdude: stk500_recv(): программатор не отвечает
avrdude: stk500_getsync() попытка 1 из 10: не синхронизировано: соответственно = 0x03
......
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() попытка 10 из 10: не синхронизировано: соответственно = 0x03
Ошибка при записи загрузчика ".
***РЕДАКТИРОВАТЬ:
После изменения строки (#define USE_OLD_STYLE_WIRING) в Arduino Sp (из примера) код ошибки немного изменился, и он появляется намного быстрее:
"Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), плата: "ATtiny25 / 45 / 85, ATtiny85, внутренняя 8 МГц"
avrdude: stk500_getsync() попытка 1 из 10: не синхронизировано: соответственно = 0x04
avrdude: stk500_getsync() попытка 2 из 10: не синхронизировано: соответственно = 0x30
avrdude: stk500_getsync() попытка 3 из 10: не синхронизировано: соответственно = 0x61
avrdude: stk500_getsync() попытка 4 из 10: не синхронизировано: соответственно = 0x67
avrdude: stk500_getsync() попытка 5 из 10: не синхронизировано: соответственно = 0xc1
avrdude: stk500_getsync() попытка 6 из 10: не синхронизировано: соответственно = 0xc4
avrdude: stk500_getsync() попытка 7 из 10: не синхронизировано: соответственно = 0xc5
avrdude: stk500_getsync() попытка 8 из 10: не синхронизировано: соответственно = 0xa1
avrdude: stk500_getsync() попытка 9 из 10: не синхронизировано: соответственно = 0xcc
avrdude: stk500_getsync() попытка 10 из 10: не синхронизировано: соответственно = 0xe2
Ошибка при записи загрузчика ".
Любая помощь о том, как использовать nodemcu для программирования attiny85, будет большой благодарностью
@tal itshak, 👍3
Обсуждение1 ответ
Лучший ответ:
Модификации скетча Arduino sp.ino
Я внес следующие изменения в файл ArduinoISP.ino, который существует в IDE версии 1.8.13, и загрузил его на плату NodeMCU.
Короче говоря, я прокомментировал (с помощью #if 0) сердцебиение, ошибку и т. Д., Связанные с этим. Невыполнение этого требования приводит к перезагрузке платы по причинам, которые, вероятно, были бы очевидны, если бы я исследовал это, но я этого не сделал, и поскольку я не планирую использовать светодиоды, а вы, возможно, и нет, я решил, что передам это вам раньше.
Я изменил RESET на SS, который на NodeMCU равен D8.
Почему код, связанный со светодиодом, вызывает сброс настроек
... Из любопытства я просто пошел и посмотрел спецификации ESP-12F и ESP8266EX. GPIO7, GPIO8, GPIO9 все отправляются на SPI-флэш-память ESP-12F (хранилище программ), поэтому якобы манипулирование ими мешает способности модулей продолжать выполнение из SPI-flash. Вероятно, по этой причине они не перенаправляются на контакты NodeMCU. Так что вот и ответ на этот вопрос.
Различия
@@ -70,7 +70,7 @@
// Стандартная конфигурация контактов.
#ifndef ARDUINO_HOODLOADER2
-#define RESET 10 // Используйте пин 10 для сброса целевого значения, а не SS
+#define RESET SS // Используйте вывод 10 для сброса целевого значения, а не SS
#define LED_HB 9
#define LED_ERR 8
#define LED_PMODE 7
@@ -216,15 +216,17 @@
#endif
void setup() {
SERIAL.begin(BAUDRATE);
+#if 0
pinMode(LED_PMODE, OUTPUT);
pulse(LED_PMODE, 2);
pinMode(LED_ERR, OUTPUT);
pulse(LED_ERR, 2);
pinMode(LED_HB, OUTPUT);
pulse(LED_HB, 2);
+#endif
}
@@ -276,6 +278,7 @@
}
void loop(void) {
+#if 0
// активен ли pmode?
if (pmode) {
digitalWrite(LED_PMODE, HIGH);
@@ -291,6 +294,7 @@
// зажечь индикатор сердцебиения
heartbeat();
+#endif
if (SERIAL.available()) {
avrisp();
}
Подключение NodeMCU к ISP ATtiny85 ISP
Плата подключается к ATtiny85 следующим образом:
NODEMCU 3.3V -> ATTINY85 PIN 8
NODEMCU GND -> ATTINY85 PIN 4
NODEMCU D5 -> ATTINY85 PIN 7
NODEMCU D6 -> ATTINY85 PIN 6
NODEMCU D7 -> ATTINY85 PIN 5
NODEMCU D8 -> ATTINY85 PIN 1
На NodeMCU вы найдете все 6 из них вместе справа.
Проверка функционирования AVRDUDE
avrdude -P /dev/ttyUSB0 -c stk500v1 -b 19200 -p attiny85
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e930b (probably t85)
avrdude: safemode: Fuses OK (E:FF, H:DF, L:71)
avrdude done. Thank you.
Я играл с этим чипом, так что не удивляйтесь, что у меня нет таких же значений предохранителей, как у вас.
Большое спасибо! Комментирование светодиодных частей в коде привело к различию., @tal itshak
Хорошая сделка. Я подумывал о том, чтобы просто поместить только это, но хотел сделать его немного более полным. Чтобы было понятно, изменение определения контактов для светодиодов на не вызывающие проблем контакты также будет работать. Я могу отредактировать его позже, чтобы предложить и, возможно, добавить изображение проводки, если у меня будет время сделать чистое изображение., @timemage
- NodeMCU - Vin контакт как выход 5V?
- Как заставить 5-вольтовое реле работать с NodeMCU
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- ESP8266 не подключается к Wi-Fi
- Разве в узле MCU v3 (LoLin) нет встроенного светодиода?
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
как вы предотвратили сброс NodeMCU? попробуйте другой контакт, затем io15 для сброса цели, @Juraj
Привет, спасибо за ответ, первое, что я попробовал, был GPIO5, но безуспешно: (, @tal itshak
как вы можете предотвратить автоматический сброс NodeMCU?, @Juraj
вы имеете в виду использование конденсатора от RST до GND? Я попробовал использовать конденсатор, хотя он и был 22 мкФ, но не сработал, @tal itshak
Использование 10 мкФ также не сработало и не пыталось перепрошить загрузчик с помощью cmd, @tal itshak