Arduino Nano — программатор не отвечает после загрузки WDT

Я перешел по ссылке примера для WDT. Код был скопирован как есть и успешно загружен в Nano.

Теперь, когда я хочу загрузить другой код, я получаю сообщение об ошибке: avrdude: stk500_recv(): программист не отвечает.

Можно ли это отменить?

код:

#include <avr/wdt.h>

#define led 13 // контакт 13 подключен к светодиоду на Arduino Uno

void setup()
{
  pinMode(led, OUTPUT);      // устанавливаем режим вывода
  digitalWrite(led, HIGH);   // включаем светодиод (HIGH - уровень напряжения)
  delay(100);                // ждем десятую долю секунды
  digitalWrite(led, LOW);    // выключаем светодиод, понижая напряжение
  delay(100);                // ждем десятую долю секунды
}

void loop(){
  wdt_enable(WDTO_15MS);     // включаем сторожевой таймер
                             // сработает через 15 мс без сброса

  while(1)
  {
// wdt_reset(); // раскомментируем, чтобы избежать перезагрузки
  }
}

, 👍0

Обсуждение

измените загрузчик в Nano на новый, в котором нет этой проблемы. и вам следует включить wdt в настройке и сбросить его в цикле., @Juraj


2 ответа


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

1

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

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

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

  1. Выберите плату/порт и т. д., готовые к загрузке.
  2. Отключите плату
  3. Удерживайте кнопку сброса
  4. Подключите плату.
  5. Нажмите кнопку загрузки в IDE. 6 Как только avrdude будет запущен (это программа, которая выполняет фактическую загрузку) - как только компиляция завершится, отпустите кнопку сброса.

Если вы все сделали правильно, вы сможете правильно загрузить файл. Если нет, вам придется повторить попытку, начиная с шага 1.

,

2

Если программа WDT работает, когда вы пытаетесь загрузить новую, возможно, она блокирует загрузчик. Попробуйте удерживать кнопку сброса, пока нажимаете кнопку загрузки IDE, и отпустите кнопку сброса, как только увидите запуск avrdude. Чтобы добиться правильного танца на пуговицах, может потребоваться несколько попыток.

Обновление:

Что такое avrdude?

Это программа на вашем компьютере, которая загружает скомпилированный образ в Arduino. Вы увидите его работающим в нижней панели Arduino IDE.

,

что такое «аврдуде»?, @Guy . D