Як відновити nodemcu нескінченний цикл

Я зробив помилку, завантажуючи init.lua з нескінченним циклом на моїй платі nodemcu/ESP8266.

Потім плата продовжує перезавантажуватися без будь-якої іншої виконаної інструкції.

i = 10
timerId = 0
timerDelay = 30000 -- Milisec
pin = 5
gpio.mode(pin,gpio.INPUT) 
repeat(    
    print(gpio.read(pin))
    i = i + 1
    end)
until i < 5
3

12 Відповіді

Я спробував прошивати дошку

python esptool.py -p /dev/tty.wchusbserial1450 run

python esptool.py -p /dev/tty.wchusbserial1450 write_flash 0x0000 ../nodemcu_latest.bin

І після цього виправити мій код і завантажити його знову і тепер працює відмінно

2
додано
Дякую Марку, хороша порада!
додано Автор jezuz, джерело
Завжди перевіряйте код у файлі, який називається іншим, ніж init.lua саме з цієї причини.
додано Автор Mark McGinty, джерело
Я знайшов, використовуючи флешер інструмент PyFlash, з "очистити спалах" варіант, зробив це.
додано Автор Danny Staple, джерело
+1 до останнього коментаря. Покладіть tmr.alarm() одним пострілом, щоб запустити програму після 2-3 секундної затримки. в init.lua . Це достатньо довго, щоб надіслати файл.remove() для видалення файлу init.lua, якщо ви застрягли в циклі паніки.
додано Автор TerryE, джерело
@jezuz, що є першим рядком для команди run ? Я зробив лише команду write_flash і отримав результат, який я шукав.
додано Автор Arthur Hebert, джерело

What I do is use ESPlorer (Java app) http://esp8266.ru/esplorer/#download

Поки я розбираюся, я маю файл init.lua з назвою init1.lua , якщо ESP перезавантажить його без проблем, просто натисніть init1.lua , що відображається праворуч (після використання кнопки "Перезавантажити" для відображення вмісту файлової системи)

Приємно і легко, коли ви зробили, ви можете клацнути правою кнопкою миші на файлі, щоб перейменувати його назад у init.lua .

1
додано

What I do is use ESPlorer (Java app) http://esp8266.ru/esplorer/#download

Поки я розбираюся, я маю файл init.lua з назвою init1.lua , якщо ESP перезавантажить його без проблем, просто натисніть init1.lua , що відображається праворуч (після використання кнопки "Перезавантажити" для відображення вмісту файлової системи)

Приємно і легко, коли ви зробили, ви можете клацнути правою кнопкою миші на файлі, щоб перейменувати його назад у init.lua .

1
додано

What I do is use ESPlorer (Java app) http://esp8266.ru/esplorer/#download

Поки я розбираюся, я маю файл init.lua з назвою init1.lua , якщо ESP перезавантажить його без проблем, просто натисніть init1.lua , що відображається праворуч (після використання кнопки "Перезавантажити" для відображення вмісту файлової системи)

Приємно і легко, коли ви зробили, ви можете клацнути правою кнопкою миші на файлі, щоб перейменувати його назад у init.lua .

1
додано
--This file is init.lua
local IDLE_AT_STARTUP_MS = 10000;

tmr.alarm(1,IDLE_AT_STARTUP_MS,0,function()
    dofile("program.lua")--Write your program name in dofile
end)

Я використовую цю стратегію, щоб запобігти нескінченному циклу на стартапах, коли виникає помилка. Збережіть цей файл як init.lua і запишіть ваші програми в програму

1
додано
--This file is init.lua
local IDLE_AT_STARTUP_MS = 10000;

tmr.alarm(1,IDLE_AT_STARTUP_MS,0,function()
    dofile("program.lua")--Write your program name in dofile
end)

Я використовую цю стратегію, щоб запобігти нескінченному циклу на стартапах, коли виникає помилка. Збережіть цей файл як init.lua і запишіть ваші програми в програму

1
додано
--This file is init.lua
local IDLE_AT_STARTUP_MS = 10000;

tmr.alarm(1,IDLE_AT_STARTUP_MS,0,function()
    dofile("program.lua")--Write your program name in dofile
end)

Я використовую цю стратегію, щоб запобігти нескінченному циклу на стартапах, коли виникає помилка. Збережіть цей файл як init.lua і запишіть ваші програми в програму

1
додано

У мене була така ж проблема, і я застрягла в циклі while .

Мигаючи різними прошивками працював для мене.

0
додано

У мене була така ж проблема, і я застрягла в циклі while .

Мигаючи різними прошивками працював для мене.

0
додано

У мене була така ж проблема, і я застрягла в циклі while .

Мигаючи різними прошивками працював для мене.

0
додано

Існує не елегантний спосіб відновитися.

Найкраще, що потрібно зробити, це побудувати таким чином, щоб запобігти виникненню аварійного коду. Наприклад, як пропонує TerryE, встановіть одноразовий таймер за допомогою timer.alarm у init.lua , щоб зателефонувати основному коду з достатньо довгою затримкою, яку можна викликати < code> timer.stop у випадку, якщо ви не хочете завантажуватися в основний код.

0
додано

Існує не елегантний спосіб відновитися.

Найкраще, що потрібно зробити, це побудувати таким чином, щоб запобігти виникненню аварійного коду. Наприклад, як пропонує TerryE, встановіть одноразовий таймер за допомогою timer.alarm у init.lua , щоб зателефонувати основному коду з достатньо довгою затримкою, яку можна викликати < code> timer.stop у випадку, якщо ви не хочете завантажуватися в основний код.

0
додано