2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: проблемы с подключением ft232
Сообщение05.12.2024, 20:29 


15/12/22
198
Dmitriy40 в сообщении #1663729 писал(а):
Именно про это я и говорил с самого начала

да, я это помню, просто сразу не сообразил

 Профиль  
                  
 
 Re: проблемы с подключением ft232
Сообщение06.12.2024, 21:40 


15/12/22
198
Dmitriy40 в сообщении #1663581 писал(а):
Сделайте чтобы девайс начинал передачу только по получении контрольного символа (или сообщения) по TxD

в общем, так работает нормально

Dmitriy40
меня заинтересовал вопрос, как можно контролировать ножки МК при его включении, не могли бы Вы что нибудь посоветовать по этому поводу?
у МК есть режим "сторожевая собачка", т.е. он перегружается если вовремя не сбросить счётчик, это нужно чтобы девайс незаметно не вырубился. Но при перезагрузке непонятно как будут "плясать" сигналы на ножках. Из за этого могут быть проблемы. С конденсатором понятно, но он будет сглаживать фронты и спады импульсов, не уверен что это оптимальное решение. Нельзя ли как то сделать, чтобы некоторые выводы на время перезагрузки например занулялись, а потом работали как обычные выводы?

 Профиль  
                  
 
 Re: проблемы с подключением ft232
Сообщение06.12.2024, 23:12 
Заслуженный участник


20/08/14
11867
Россия, Москва
Missir
Во-первых перезапуск по собаке (watchdog) принципиально отличается от перезапуска по внешнему сигналу reset и от проседания напряжения питания (brownout) и от включения питания, это всё разные перезапуски. И во многих МК их можно различить по битам состояния в регистрах статуса.
Во-вторых, я уже говорил, состояние ножек под ресетом обычно z-состояние, но бывает есть и специальные fuses которые указывают нужные уровни (но обычно лишь слабую подтяжку к питанию).
В-третьих, я не уверен, но кажется у некоторых МК сброс по собаке проходит только на внутреннее вычислительное ядро и не затрагивает периферийных устройств, в частности портов. Вот такой вот хитрый сброс. Потому что сброс по собаке это лишь гарантия (и не 100%) от зависания программы, не более. В этом случае ножки сохраняют своё значение до перенастройки уже прикладной программой. Но если честно не помню в каком МК такое видел, на практике не сталкивался (или собаку не использовал, всё же она далеко не панацея, хотя при аккуратном использовании надёжность конечно повышает).

В итоге, 99% за то что и по собаке и по любому сбросу все ножки уйдут в z состояние, вплоть до инициализации прикладной программой. За небольшими исключениями (например ножек задействованных в прошивке по протоколу ISP, который обычно работает под ресетом, или встроенного загрузчика, запускаемого до старта прикладной программы). В любом случае лучше свериться с докой на конкретный МК, это там обязательно оговаривается.
Ну и Вы так и не сказали вроде что у Вас за МК. Или я пропустил.

Если нужен какой-то гарантированный уровень на ножке при ресете - ставьте внешнюю подтяжку на этот нужный уровень. Такую, чтобы потом МК легко её перетянул когда выдаст желаемый уровень. Обычно 10кОм-100кОм-1МОм хватает, ещё слабее лучше не стоит, даже 1МОм многовато, наводки будут ловиться (да и постоянная RC при 10пФ вывода и 1МОм уже 10мкс, это бывает многовато). Не забывайте про подтяжку к питанию, если она используется при работе, то подтяжка к нулю должна быть раз в 5-10 сильнее (сопротивление меньше), иначе не перетянет.

 Профиль  
                  
 
 Re: проблемы с подключением ft232
Сообщение07.12.2024, 01:20 


15/12/22
198
Dmitriy40 в сообщении #1663892 писал(а):
Потому что сброс по собаке это лишь гарантия (и не 100%)

как это не 100%, что он может не сбросится? или потом не загрузится?
вообще я использую простейшие 8-битные контроллеры AVR, но этот вопрос насколько я понимаю общий
что же тогда, внешний reset делать со счётчиком? Понятно, что не для этой схемы, а в целом. Здесь проще, если контроллер перестанет работать - сразу перестанут поступать данные

 Профиль  
                  
 
 Re: проблемы с подключением ft232
Сообщение07.12.2024, 05:07 
Заслуженный участник


20/08/14
11867
Россия, Москва
Missir в сообщении #1663902 писал(а):
как это не 100%, что он может не сбросится? или потом не загрузится?
Некоторые несознательные товарищи (речь не о Вас) любят сувать сброс собаки в прерывания. Тогда вполне вероятна ситуация когда основная программа висит (обычно из-за ошибки программиста, не аппаратной, вечный цикл без выхода), а прерывания щёлкают нормально и сбрасывают собаку. Или не висит, а выполняет произвольный код (сбой счётчика команд или векторный переход не туда или возврат с испорченным стеком), но в этом случайном потоке команд не попадается недопустимая команда (приводящая к останову или сбросу), а прерывания щёлкают и сбрасывают собаку ... Менее вероятно, но тоже в принципе возможна ситуация когда сброс собаки в основной программе, но происходит сбой (уже по любой причине) и программу уносит в произвольную область (где и кода может не быть, данные) и выполняет случайные команды, но теперь среди них достаточно часто попадается команда сброса собаки ...
В более продвинутых МК бывает делают достаточно узкое "окно" для сброса собаки, не просто "не реже", но и "не чаще". Программисту мороки жуть, так и хочется в прерывание поставить ... и налетают на вышесказанное.
В AVR (да и во многих других) можно включить вариант когда собака вызывает сброс лишь при втором срабатывании, а первое вызывает её родное прерывание. Типа последний шанс программе одуматься. И если в этом прерывании поставить сброс собаки ... Ну понятно, да. Правда для AVR для этого там надо ставить не просто сброс, а перенастройку собаки обратно на прерывание, это вряд ли кто додумается сделать, так что это маловероятно (кто понимает что надо перенастроить собаку тот обычно уже понимает что и зачем делает).
Ну и плюс бывают столь страшные глюки когда и собака сбивается (например сбой тактирования именно того генератора что работает и на собаку). Поэтому кстати для собаки обычно делают отдельный генератор, не отключаемый пока включена собака. И затрудняют процедуру отключения собаки (а иногда и вообще запрещают до следующего сброса, однажды включил и привет, не заткнёшь). Но ведь аппаратные глюки бывают разные ... Может и собачий RC генератор заткнуться, и собака сброситься сама по себе, и период измениться, и ... Весьма маловероятно, но полностью не исключено.
По хорошему собака, при аккуратном применении (например не в прерывании), это лишь гарантия выхода из вечного цикла, куда программа попала по ошибке программиста. От других ошибок она защищает хуже, хотя обычно и защищает.

И да, внешняя собака заметно надёжнее. Но опять же, если её правильно сделать и правильно ей управлять (сбрасывать). Например собака в виде одновибратора (RC плюс компаратор) ненадёжна: она или вообще не сработает (если вывод МК её сброса залипнет) или поставит МК под вечный ресет и не снимет его, либо выдаст всего один импульс сброса, который может и не сбросить МК (схемотехник ошибся и поставил не тот номинал, или ошибся пайщик и впаял не то, тесты выходного ОТК ведь редко проверяют срабатывание собаки). Надёжнее делать генератор, заторможенный пока программа (самый внешний цикл в main) работает.

По встроенной собаке МК разумеется перезапустится (если собака не в режиме прерываний), с этим проблем нет.
Единственная проблема может быть если программист чрезмерно умный и сделал определение причины сброса и что-то напортачил со сбросом от собаки ... Бывает. МК то сбросится, не вопрос, но дальше вотчина программиста, а он ... На это чаще налетают продвинутые начинающие, которые типа "уже всё знают", но реального опыта мало. Пытаются сделать круто, но недостаток опыта мешает помнить все возможные засады и в результате ... как раз и нарабатывается нужный опыт, разной ценой. ;-)


По выводам. В AVR выводы встают в z состояние под ресетом. Исключения если и есть, то редки (и возможно лишь на отдельных старых и больших кристаллах, с 64+ ногами, их много, все не помню, но там точно были самые разные странности). Лучше конечно свериться с докой на конкретный МК (раздел IO Ports, там смотреть альтернативные функции, там есть таблицы с логическими функциями всех управляющих выводом сигналов).
Если используется программный загрузчик (как в той же ардуино или свой), то он может настраивать выводы под себя, это надо учитывать.

-- 07.12.2024, 05:28 --

Dmitriy40 в сообщении #1663911 писал(а):
По встроенной собаке МК разумеется перезапустится (если собака не в режиме прерываний), с этим проблем нет.
Хотя ... Можно придумать ситуацию, вполне кстати реальную, когда и не запустится. Например с управляемой внешней кренкой (стабилизатором), которая отключается при уходе программы в спячку, для экономии тока потребления (от батареи/аккумулятора). В AVR есть такое понятие как ток потребления под ресетом и он в разы выше тока в глубокой спячке и если напортачить (схемотехнику), то может оказаться что выключенная кренка не обеспечивает достаточно тока под ресетом (и для начала работы программы) и МК из спячки от собаки свалится в brownout (вероятно навсегда, до снятия питания). И если от внешнего сброса ещё можно аппаратно включить кренку, то от внутреннего (собаки) нельзя, его снаружи не видно (без специальных мер типа выделения специального вывода под это). Проще всего лечится второй маломощной кренкой (или неким её аналогом на рассыпухе) на чуть меньшее напряжение, работающей когда выключена основная. Решение в виде увеличения кондёров по питанию чтобы их типа хватило на старт программы ненадёжно (вдруг не хватит, ёмкость упала, или это уже не первый сброс подряд или температура экстремальна). Представляете сколько всего надо помнить чтобы предусмотреть такой вариант и ещё и не забыть вписать его в контрольные тесты на производстве ...

-- 07.12.2024, 05:37 --

И да, извините что лезу в дебри, тем более с серийным производством, пока оно у себя любимого на столе и управляет не пуском баллистической ракеты, можно и наплевать, а вот когда оно клепается серийно на продажу ... мороки на порядки больше. У меня бывало что контрольные тесты занимали больше времени чем пайка (и прошивка). А иногда ещё и калибровка плюсом нужна (потому что сильно дешевле схемного решения).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group