Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

ATmega328 WDT 8 sec

Аппаратный watchdog ATmega328p на 8 sec (не завешивает микроконтроллер при старте)

Пользовательские блоки не подходящее под другие разделы
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Аватара пользователя
maxxir
Рядовой
Сообщения: 11
Зарегистрирован: 14.09.2020{, 10:23}
Репутация: 0
Откуда: Тольятти
Имя: Макс
Контактная информация:

ATmega328 WDT 8 sec

#1

Сообщение maxxir » 06.01.2021{, 19:22}

Как понял "собаку" аппаратную на Mega328P/UNO/Nano и тд. стандартный блок Сергея подымает не корректно.
Проверено на совместимость с optiboot Arduino UNO/Nano или если вы вообще не пользуетесь загрузчиком.
Используемая версия FLProg 7.3.0.

Прикладываю свои элементы.

WDT_M328P_8sec_(Code_-_Basic).ubi - собственно само включение WDT на 8 сек.
WDT_CHK_RESET_(Code_-_Basic).ubi - это только для проверки работы WDT, при включении в проект "завешивает"
систему через 4 сек. Итого перезагрузка системы идет через 4+8 = 12 сек.

termoregulyator_ universal_v04.flp - Как пример использования блоков прикладываю немного доработанный "напильником" проект Грачика универсального термостата на DS18B20/DHT11/DHT22.

Ну и до кучи:
M328p_EMC_IMMUNE_(Code_-_Basic).ubi - для увеличения помехоустойчивости все неиспользуемые выводы микроконтроллера
переводим на выход с логическим "0" (это редко кто делает, а зря :smile38: ).


PS (Для тех кто хочет понять как это работает в коде).

Оно не подвешивает систему при старте, т.к. перед стартом основной программной секции
запускается программный код который сбрасывает флаг WDRF в SFR MCUSR и выключает "собаку" до старта setup() Arduino кода.
(По идее этот флаг должен обрабатывать загрузчик бутлоадера, но это реализовано не во всех загрузчиках или его вообще нет)

Код: Выделить всё

uint8_t mcusr_mirror __attribute__ ((section (".noinit")));

void get_mcusr(void) __attribute__((naked)) __attribute__((section(".init3")));
void get_mcusr(void)
{
	mcusr_mirror = MCUSR;
	MCUSR = 0;
	wdt_disable();
}
Ну а далее в setup() происходит ре-инициализация "собаки"

Код: Выделить всё

void setup(){
	wdt_enable(WDTO_8S);
	wdt_reset();
..
Без первого фрагмента кода выше микропроцессор гарантированно уходит на перезагрузку через ~16 mseс
после старта программы (те. идёт вечная мнгновенная перезагрузка до момента повторного отключения/включения питания).
Вложения
termoregulyator_ universal_v04.flp
(1.17 МБ) 21 скачивание
M328p_EMC_IMMUNE_(Code_-_Basic).ubi
(9.31 КБ) 18 скачиваний
WDT_CHK_RESET_(Code_-_Basic).ubi
(7.46 КБ) 16 скачиваний
WDT_M328P_8sec_(Code_-_Basic).ubi
(14.23 КБ) 18 скачиваний

Аватара пользователя
Rovki
Полковник
Сообщения: 3850
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 175
Откуда: Чехов
Имя: Анатолий
Контактная информация:

ATmega328 WDT 8 sec

#2

Сообщение Rovki » 06.01.2021{, 21:18}

Зависания актуальны на есп . А туда можно использовать ваши блоки ?
Электронщик до мозга костей и не только

Аватара пользователя
maxxir
Рядовой
Сообщения: 11
Зарегистрирован: 14.09.2020{, 10:23}
Репутация: 0
Откуда: Тольятти
Имя: Макс
Контактная информация:

ATmega328 WDT 8 sec

#3

Сообщение maxxir » 06.01.2021{, 21:36}

Rovki писал(а):
06.01.2021{, 21:18}
Зависания актуальны на есп . А туда можно использовать ваши блоки ?
Нет, подобного рода вставка актуальна только для AVR Mega.

Отправлено спустя 39 секунд:
ESP только внешний супервайзер.

Аватара пользователя
Rovki
Полковник
Сообщения: 3850
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 175
Откуда: Чехов
Имя: Анатолий
Контактная информация:

ATmega328 WDT 8 sec

#4

Сообщение Rovki » 06.01.2021{, 21:39}

maxxir писал(а):
06.01.2021{, 21:37}
Rovki писал(а):
06.01.2021{, 21:18}
Зависания актуальны на есп . А туда можно использовать ваши блоки ?
Нет, подобного рода вставка актуальна только для AVR Mega.

Отправлено спустя 39 секунд:
ESP только внешний супервайзер.
Понятно ,так и думал ,но уточнил ...Спасибо
Электронщик до мозга костей и не только

Аватара пользователя
Di123
Лейтенант
Сообщения: 473
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 6
Имя: Дмитрий

ATmega328 WDT 8 sec

#5

Сообщение Di123 » 08.01.2021{, 12:21}

на нано не работает
точнее работает как зависатель
4 сек моргает и тишина потом

2021-01-08_161945.png
2021-01-08_161945.png (1.24 КБ) 580 просмотров
Отправлено спустя 10 минут 17 секунд:
ясно на 328РВ не работает
а на 168 можете реализовать нечто подобное ?

Аватара пользователя
maxxir
Рядовой
Сообщения: 11
Зарегистрирован: 14.09.2020{, 10:23}
Репутация: 0
Откуда: Тольятти
Имя: Макс
Контактная информация:

ATmega328 WDT 8 sec

#6

Сообщение maxxir » 08.01.2021{, 16:59}

Di123 писал(а):
08.01.2021{, 12:32}
на нано не работает
точнее работает как зависатель
4 сек моргает и тишина потом


2021-01-08_161945.png

Отправлено спустя 10 минут 17 секунд:
ясно на 328РВ не работает
а на 168 можете реализовать нечто подобное ?
Верно этот элемент чисто для проверки "зависания" через 4 сек + через 8 сек следует сброс микроконтроллера от WDT.
На 88/168 надо проверить - думаю все должно работать как и на 328.
328PB - не разу не держал в лапах, ничего про него не могу сказать. А что среда FLProg его поддерживает ?
Там где надо больше UART портов, RAM/ROM обычно использую ATmega 644p/1284p.

Аватара пользователя
Di123
Лейтенант
Сообщения: 473
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 6
Имя: Дмитрий

ATmega328 WDT 8 sec

#7

Сообщение Di123 » 09.01.2021{, 04:56}

на 168 тоже не работает
если один блок вытащить то так же она отключается через 4 сек и всё
если добавить ещё второй блок то так же отключается через 4 сек и потом дико начинает моргать 13 светодиод
теже симптомы как и у 328РВ были
2021-01-09_085235.png
2021-01-09_085235.png (1.42 КБ) 465 просмотров
флпрог подерживает потомучто она совместима с обычной 328

Отправлено спустя 7 минут 58 секунд:
на уно работает
только в таком случае от вашего блока нет никакого смысла ибо тут уже есть аналогичный пользовательский блок в котором при этом ещё можно и время выбрать на перезагрузку

Аватара пользователя
maxxir
Рядовой
Сообщения: 11
Зарегистрирован: 14.09.2020{, 10:23}
Репутация: 0
Откуда: Тольятти
Имя: Макс
Контактная информация:

ATmega328 WDT 8 sec

#8

Сообщение maxxir » 09.01.2021{, 11:45}

Должно перезагружаться через 12 сек а не через 4.
Что то там у 168 не так идет. Какой загрузчик на 168?
Если там не optiboot вполне может быть.

Отправлено спустя 3 минуты 18 секунд:
У меня работает этот метод на 168/328/644/1284/2560/2561.
В Eclipse AVR plugin, C make, Arduino, да и FLProg.
Видимо у ВАС c загрузчиком нестыковка.. :smile37:

Аватара пользователя
Di123
Лейтенант
Сообщения: 473
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 6
Имя: Дмитрий

ATmega328 WDT 8 sec

#9

Сообщение Di123 » 09.01.2021{, 12:06}

168 это у меня промини там обычный загрузчик как и у всех

на уно работает потомучто туда я заливал оптибут , точнее я в промини 328 залил от уно из ИДЕ и на ней этот блок работает ну собственно он у меня и работал раньше на ней от другого пользователя на вачдог

под 168 оптибута вроде как несуществует

Аватара пользователя
maxxir
Рядовой
Сообщения: 11
Зарегистрирован: 14.09.2020{, 10:23}
Репутация: 0
Откуда: Тольятти
Имя: Макс
Контактная информация:

ATmega328 WDT 8 sec

#10

Сообщение maxxir » 09.01.2021{, 12:24}

Di123 писал(а):
09.01.2021{, 12:06}
168 это у меня промини там обычный загрузчик как и у всех

на уно работает потомучто туда я заливал оптибут , точнее я в промини 328 залил от уно из ИДЕ и на ней этот блок работает ну собственно он у меня и работал раньше на ней от другого пользователя на вачдог

под 168 оптибута вроде как несуществует
Тут покопайтесь вроде есть.
Вложения
optiboot_all_hex-bootloaders_from_mightycore_21_01_19.7z
(73.46 КБ) 5 скачиваний

Аватара пользователя
Di123
Лейтенант
Сообщения: 473
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 6
Имя: Дмитрий

ATmega328 WDT 8 sec

#11

Сообщение Di123 » 09.01.2021{, 13:42}

а для чего там уарты с разной скоростью ?

Отправлено спустя 50 секунд:
если мне прошивать через ИДЕ исп

Аватара пользователя
maxxir
Рядовой
Сообщения: 11
Зарегистрирован: 14.09.2020{, 10:23}
Репутация: 0
Откуда: Тольятти
Имя: Макс
Контактная информация:

ATmega328 WDT 8 sec

#12

Сообщение maxxir » 10.01.2021{, 01:29}

Di123 писал(а):
09.01.2021{, 13:43}
а для чего там уарты с разной скоростью ?

Отправлено спустя 50 секунд:
если мне прошивать через ИДЕ исп
115200 надо выбирать скорее всего

Ответить

Вернуться в «Другое»