Здравствуйте! Учусь программировать микроконтроллеры AVR.Хочу узнать у практиков можно ли в своей программе запрограммировать Reset или это делается только аппаратно? Я если да,то подскажите как? Спасибо заранее!
Здравствуйте! Учусь программировать микроконтроллеры AVR.Хочу узнать у практиков можно ли в своей программе запрограммировать Reset или это делается только аппаратно? Я если да,то подскажите как? Спасибо заранее!
Сообщетсво, подскажите пожалуйста, у кого есть опыт использования KMS - knowledge management system системы управления знаниями... Читать далее
Всем привет. Подскажите кто знает, iBypasser при нажатии A5 bypass через Ардуино пишет установить phyton 2.7.18, хотя он... Читать далее
Ребят, есть тут у нас кто по грузовым 24в плотно занимается? Я сам ооочень редко с ними сталкиваюсь. Всё что приезжали вроде... Читать далее
Добрый день. Имею icopy не могу занести трутон после замены сенсора. Считываю данные. Прописываю все на месте. Трутона нет. Face... Читать далее
Всем привет! Подскажите какой модуль для сотовой связи сейчас можно выбрать для поделки с учётом возможности купить? В идеале,... Читать далее
Всем здравствуйте У меня вопрос , касающийся электрики Произошла такая ситуация , в общем , вели провода на доп розетку... Читать далее
Комментарии: 21
Indr1x
не до конца понятно что вы спрашиваете. что значит запрограмировать reset? сбросить контроллер? использовать ногу reset как gpio?
Filatov
В процессе выполнения моей программы мне нужно сбрасывать контроллер для перезапуска его работы.В даташите я кроме сторожевого таймера,сброса по пониженному питанию и сброса по получению питания я ничего больше не нашел.И все это не то.Поэтому решил спросить у опытных может всё-таки есть решения
Byte
Можно через WDT резетнуть: void ResetFunc() { cli(); wdt_enable(WDTO_15MS); Включили вочдог с 15ms интервалом while(1); //…и застряли в цикле. } Можно просто дёрнуть ResetHandler. Примерно так: void(* ResetFunc) (void) = 0; // Объявили. ... ResetFunc(); // — вызвали, ушли в reset. Лучше через WDT. Прыжок на 0 адрес не посбрасывает таймеры и т.д., могут быть, гхм, внезапности.
Nikolay
Через WDT есть нюанс - быстро сбросить не получится. Нужно будет выждать время WDT. Проще тогда уж сделать функцию которая отключит всю критическую периферию (таймеры и т.д.) и уже прыгнет на 0.
Byte
Ну 15мс погоды не сделают, думаю. Зато не будет болеть голова: «А всё ли я отключил».
Humka
А чего это таймеры не инициализируются как надо что-ли?
Byte
Регистры не обнулятся, данные в обработчиках прерываний не изменятся… а сброс через WDT полностью аналогичен дёрганию NRST.
Indr1x
дернуть ногу reset через транзистор
Nikolay
Вопрос был программно.
Indr1x
не вижу. https://t.me/ru_electronics/176279
Byte
https://t.me/ru_electronics/176194
Andrey
Выполнить недопустимую инструкцию ? Через транзистор подключить делитель на затвор нога и ресет по пору или низкому напряжению
Byte
…, зависнуть и перезагрузиться вочдогом? Интересный план, но слишком долгий. Проще уж сразу вочдогом. Ну и с недопустимыми инструкциями/операциями сложно. Делить на ноль не получится, а остальное себя будет непрогнозируемо вести :)
Andrey
Ну вообщем согласен Можно внешне самому же ресет свой же дернуть
Byte
Уже обсуждалось.
Andrey
Чем плохо ?
Byte
https://t.me/ru_electronics/176291
Andrey
Железный хард ресет Да там можно поставить микрофет 2х2 в цепь задержки старта кондер и резистор Но это дело каждого, я бы в критической ситуации со временем и необходимостью дёрнул бы свой ресет На самом деле если ресет идёт при определённом пройденном времени какждый раз , rc и Мосфетом опять же , и есть аппаратные вотчдогикоторые дергают ресет
Byte
WDT выполняет абсолютно те же действия, что и при дёргании NRST. Тоже уже обсуждалось . А если глянуть на блоксхему МК — станет понятно, как он это делает ;)
Andrey
Задержку можно сократить я вот к чему если делать это хардварно когда нужно
Sanchez
Запустить функцию по адресу 0, активировать собаку (wdt) и подождать.