Watchdog или как подружить ардуино со сторожевым псом

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Почему бы не записать скетч/blink прямо программатором, в обход загрузчика? а то может переходиник неисправен... другого объяснения просто нет.

bwn
Offline
Зарегистрирован: 25.08.2014

Irinka, попробуйте отсюда (#39) бут залить на ту, которая не работает. Может с кварцем китайским проблемы?

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Спасибо всем. Оставила на зап.части)

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

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

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня тоже одна роботдиновская с microusb заглючила. Вроде перешивается, всё чин по чину, потом в какой-то момент - фигак и "programmer is not responding". Из микроюсб вытаскиваешь кабель, вставляешь назад - шьется.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017
Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

del

bwn
Offline
Зарегистрирован: 25.08.2014

На второй кварцы стоят. На первой похоже керамика. Если не требуется точные интервалы отмерять, то разницы не заметите. ИМХО.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Irinka пишет:

     

В обеих платаз загрузчики Uno (для работы с Watchdog)

а плату выбираете UNO? При записи скетча... не ну а чё, может нано выбирали )))
100500 что железку выбираете nano, аналогичная картина когда на нано поставил загрузчик от blheli )))

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Цитата:
а плату выбираете UNO?

Увы, да)))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Irinka пишет:

Цитата:
а плату выбираете UNO?

Увы, да)))

Граф сказал графине, а не хотите ли Вы кофейку? ...Отнюдь )))

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Скажите где лучше взять закгрузчик актуальцный для меге2560?

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

Доброго времени суток. Успешно прошил черную Nano при помощи Uno.

При первой пробе прошивки я решил подключить Nano не к цифровым портам Uno, а к 6-ти отдельным пинам ICSP (обозначил стрелками).

Типа всё по феншую) Само собой распиновку проверил, сравнил, совпадает. Но так прошить загрузчик не смог.

Подключился через цифровые порты Uno и всё пошло как по маслу. Почему?

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Потому что вы соединили два ресета на уно и на нано вместе я думаю)) а так нельзя делать. Надо ресет с той платы которую прошиваете подключить на пин уно. какой именно пин не помню он указывается в прошивке ISP

Emeljanowich
Emeljanowich аватар
Offline
Зарегистрирован: 30.04.2015

Reset прошиваемой к пину 10 прошивающей. Актуальный загрузчик лучше брать из самой среды ардуино версии постарше.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Здравствуйте. Нечаянно коснулась пальцем до пина кварца, атмега328 зависла. А как же Watchdog? Или так и должно быть....?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Irinka пишет:

Здравствуйте. Нечаянно коснулась пальцем до пина кварца, атмега328 зависла. А как же Watchdog? Или так и должно быть....?

на каком скетче?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Собачка электрическая, что б заработала включить надо :)

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

да хоть на мигании светодиодом, вачдок вклчюен 8 сек

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Irinka пишет:

да хоть на мигании светодиодом, вачдок вклчюен 8 сек

не может быть

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017
#include <avr/wdt.h>

// the setup function runs once when you press reset or power the board
void setup() {
  wdt_disable();
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
  wdt_enable(WDTO_8S);
}

// the loop function runs over and over again forever
void loop() {
  wdt_reset(); 
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  wdt_reset(); 
}

Касаюсь кварца и всё, тишина...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

то-есть светодиод постоянно горит?

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Смотря в какой момент попадет, либо горит постоянно, либо не горит постоянно)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

пропаяйте кварц и два конденсатора

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

и через 8 секунд не оживает ?

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Не оживает

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Собака, значить, дохлая. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Собака, значить, дохлая. 

тут либо непропай либо бельё французское )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

либо бельё французское )))

Точно!!!  Понапокупают себе шелковых трусов, а потом ардуина вешаеца от этого. 

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Если убираю строчку wdt_reset() то перезагружается.

Если коснуться XTAL2, всё работает, если коснуться XTAL1 - то зависает.

Я спросила так, ради интереса, должно ли так быть.

- Доктор, у меня, если надавить вот здесь, болит. - А если не надавливать, не болит? - Нет. - Ну так и не надавливайте. С вас 1000 рублей.

 

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Irinka пишет:

#include <avr/wdt.h>

// the setup function runs once when you press reset or power the board
void setup() {
  wdt_disable();
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
  wdt_enable(WDTO_8S);
}

// the loop function runs over and over again forever
void loop() {
  wdt_reset(); 
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  wdt_reset(); 
}

Касаюсь кварца и всё, тишина...

из любопытства попробовал на своей китайской UNO - работает

на спаяной макетке (тестовая для прошивки МК через SPI) atmega328p - работает

 

Ищите неконтакт/непропай

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Вас поняла, спасибо)))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andycat пишет:

Ищите неконтакт/непропай

я бы всё таки французское бельё со счетов не сбрасывал )))

извиняюсь за мой французский, сэмулировал, есть становлюсь на одну ногу кварца, то после сброса ватчдогом setup и loop отрабатывают до установки вывода на светодиод в низкий уровень, а вот если на другую ногу, то даже setup не проходит, естественно и ватчдог не активен, то есть микропроцессор вешается на первых тактах, когда ватчдог еще не активен

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Это по научному называется "срыв генерации".  Ну или у тебя тоже стринги француские. 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

или на теле какие то сильные помехи, или у меня кожа не электропроводная

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Это по научному называется "срыв генерации".  Ну или у тебя тоже стринги француские. 

1. да, 155 логика этим не грешила

2. не, лучше, здесь ручная работа )))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em пишет:

2. не, лучше, здесь ручная работа )))

Вязаные?  Или ажурные кованые?

bwn
Offline
Зарегистрирован: 25.08.2014

DetSimen пишет:

Или ажурные кованые?

Выше бери, чугунные, литые, аля решетка Летнего сада.)))
Если не видел, когда будешь, полюбопытствуй.

vlad072
Offline
Зарегистрирован: 01.08.2017

В setup инициализирован таймер на 4с, но есть пару участков кода, которые гипотетически при определённых условиях могут исполняться большее время. Вопрос: можно ли "на ходу" менять таймаут следующим образом?

#include <avr/wdt.h>

void setup() {
  wdt_reset(); wdt_enable(WDTO_4S);
  //...
}

void loop() {
  wdt_reset()
  //...

  wdt_reset(); wdt_enable(WDTO_8S);
  // участок, кторый может "задуматься" 
  wdt_reset(); wdt_enable(WDTO_4S);

  //...
}

p.s. при вызове wdt_enable() счётчик не сбрасывается?

alexbel620017
Offline
Зарегистрирован: 26.03.2017

Также мучался с этими WDT, а потом сочинил схемку на ATTiny85 и втыкаю его сейчас во все проекты как "собаку" - ещё не было случая что бы из какого-нибудь зависания не выдернуло ардуину....

bwn
Offline
Зарегистрирован: 25.08.2014

alexbel620017 пишет:

Также мучался с этими WDT, а потом сочинил схемку на ATTiny85 и втыкаю его сейчас во все проекты как "собаку" - ещё не было случая что бы из какого-нибудь зависания не выдернуло ардуину....

А некоторые хирурги умеют гланды удалять, через опу, электролобзиком.
Кста, схемка на 555 будет на порядок дешевле. А еще спецмикрухи имеются. 
И примеров хотелось бы, из каких зависаний штатная собака не выдергивает?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

bwn пишет:

еще спецмикрухи имеются. 

Одна из, везде леплю, где нужна, MAX813L