Добрый день, Уважаемые коты. Такая ситуация: Есть МК с загрузчиком, для заливки программы нужно сначало сбросить МК. Нажимать кнопку каждый раз неудобно. Хочется автоматически. В ардуино, например, используется дополнительная линия DTR, могу сделать, но... так не интересно... Пришла такая идея : А что если сброс делать через TX-линию. Суть такая: Во время передачи линия кратковременно падает до нуля - сигнал поступает до МК, а когда линия устанавливается в ноль на продолжительное время (~1сек), то выполняется сброс. Програмно реализовать - за нефиг делать (SetCommBreak/ClearCommBreak), а в липестрической части я не шарю. Нужно что-то типа кондёра + развести TX и Reset с помошью транзистора... Дальше мои мозги не просчитывают...
схема: R1-C1 - время реакции на низкий уровень (не рассчитывал, но можно попробовать 100 кОм, 10 мкФ) R2 = 1 кОм R3 = 10 кОм R4 = 10 кОм C2 = 0,1 мкФ VT1 - BC807 (BC857, BC557, КТ361, КТ3107 или аналогичный)
Детектор пропущенных импульсов, в даташите на NE555 есть схема.
Но правельней конечно через отдельную линию дергать ресет. Т.к. ноль на TXD дольше длительности кадра - это скорее какая-то авария, чем нормальное поведение исправного компорта.
ibiza11 - огромное спасибо!!! Именно то что я искал!
alex2103 писал(а):
А почему нельзя сделать jump на загрузчик из основной программы по приходу определенного кода на RX??
Так пока и делаю, а если зависание или баг в программе или прерывание ненароком вырубилось... Во время отладки такая фигня ненадёжная.
uk8amk писал(а):
Но правельней конечно через отдельную линию дергать ресет. Т.к. ноль на TXD дольше длительности кадра - это скорее какая-то авария, чем нормальное поведение исправного компорта.
Ноль на TX - это штатная ситуация, называется Line break.
Отлично работает!!!! Напряжение на Reset'е. Осцилограмма USB AX (сопротивление входа 100КОм). Break time 500ms, общение с МК на 9600 бод продолжительностью 7 сек. Нижнее напряжение во время сброса = 2вольта. Проседание во время общения до 3.3в. R1=40k R3=47k R2=5k КТ361 C=10мкф Кстати, минамальная скорость общения при такой схеме 4800 бод(в зависимости от характера данных). Меньшие значения перезагружают.
Могу посоветовать уменьшить резистор в цепи базы транзистора, для уменьшения уровня напряжения в режиме сброса и параллельно резистору R1 поставить диод анодом к сигналу Tx для уменьшения просадки во время передачи данных. Вообще желательно поставить триггер Шмитта вместо транзистора, но не обязательно. Они сейчас бывают в SOT23-5.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения