Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Можно ли обойтись без кнопки в бутлодере
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
alux
... а то в приборе на панели кнопки "Reset" не предусмотрено, а разбирать прибор для перепрошивки как-то не практично. Вариант с WatchDog тоже не подходит. Т.е. по включению питания попадаем на загрузчик, анализировать причину сброса, и если в течении определенного времени не будет команд, то сброс по WD. Можно ли сделать так :
1)Вектор сброса и таблица прерываний в начале памяти программ
2)В прерывании UART анализировать входные данные. Если "P" - вход в режим программирования от OSP (avr911), то прыжок по адресу загрузчика, и обработка последующих команд. Если последующие команды не поступили, то можно ресет по WD. Т.е. прибор программируется только при подключении к терминалу и подачей соответствующей команды. Насколько это будет надежно? Как застраховаться от ложных срабатываний в случае использования UART в других целях?
sensor_ua
Бутлоадер лучше держать в секции для бутлоадера весь. А так как по факту после его применения нужно рестартовать, то выход из него прямо на вектор 0. А вот как входить, тут есть варианты - по влючению питания -
ноу-хау. Отдаю. http://caxapa.ru/76325.html?hilite=%ED%EE%F3-%F5%E0%F3
Ещё входить можно по сигналу Bbreak
alux
Цитата(sensor_ua @ Jul 19 2007, 10:35) *
А вот как входить, тут есть варианты - по влючению питания -
ноу-хау. Отдаю. http://caxapa.ru/76325.html?hilite=%ED%EE%F3-%F5%E0%F3
Ещё входить можно по сигналу Bbreak

Простите, не понял:
"На вывод Tx камня вешаем подтяжку 100 кОм и от ноги на джампер на общий ставим 10 кОм. При включении ставим ногу на вход, смотрим, не установлен ли джампер, принимаем решение, потом переводим ногу на выход..."
Подробнее, пожалуйста вторую часть первого предложения. Что куда подключать? Не пойму смысла этих манипуляций. Получается, чтобы перепрошить, надо разбирать корпус и менять перемычки?
И что такое сигнал Bbreak ?
sensor_ua
Если просто не хватает ног, а не в целях неразборности прибора, то описанный способ экономит один пин для получения сигнала о принудительном входе в бутлодырь после сброса.
Bbreak - это ошибочка - сигнал называется Break - выдаётся в COM-порт. Выглядит как длинный логический ноль, не помню сколько минимум, но вроде не меньше длительности 3-х байт. Виндовс умеет. Пользоваться можно только по месту, потому как (насколько я знаю), удалёно не передаётся. Нажимаете в проге кнопу - у Вас генерится Break, Вы перевключаете питание прибора, бутлодырь находит, что у него после сброса на входе Break, и не передаёт управление основной программе. Далее могут быть вариации с таймаутами и прочими способами выхода из бутлодыря
alux
Цитата(sensor_ua @ Jul 19 2007, 12:07) *
Нажимаете в проге кнопу - у Вас генерится Break, Вы перевключаете питание прибора, бутлодырь находит, что у него после сброса на входе Break, и не передаёт управление основной программе. Далее могут быть вариации с таймаутами и прочими способами выхода из бутлодыря

Ну и чем этот вариант лучше, чем тот, что я описал в первом посте с WatchDog? Я ж говорил, чтобы без перевключения питания.
Сергей Борщ
Цитата(alux @ Jul 19 2007, 13:06) *
Ну и чем этот вариант лучше, чем тот, что я описал в первом посте с WatchDog? Я ж говорил, чтобы без перевключения питания.
Как заметил sensor_ua тут много разных ноу-хау. Дарю свою, которую в свое время еще в ru.embedded подсказал vmp: Все порты ввода-вывода после сброса всегда настроены на ввод. Берете какую-либо ногу, которая при нормальной работе должна быть настроена на вывод (например, на ней светодиод). Загрузчик при старте проверяет направление этой ноги. Если нога настроена на вывод - он переходит в режим программирования. Если нога настроена на ввод - он проверяет контрольную сумму программы. Если совпала - старт программы. Если не совпала - он переходит в режим ожидания команды начала программирования по интерфейсу связи. Программа, в нормальном режиме получив команду "вход в режим программирования" просто переходит по адресу BOOT_RESET, т.е. на начало загрузчика. Единственное - надо внимательно следить за инициализацией, т.е. загрузик должен отключить все прерывания, которые могу быть в основной программе.
_artem_
При включении ком кабеля от компютера на его ТХ всегда есть напряжение - сдетектируйте его с помошью одного транзистора и подавайте на вход микро.
Или сделайте специальный кабель для бутлоадера - две ноги на 9 дсаб коннекторе замкните на стороне кабеля а на стороне микро проверяйте на их замыкание при вставленном кабеле. При обеих вариантах - вставляйте кабель до включения питания .\
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.