|
|
  |
Не стартует STM32 по RESET при включении |
|
|
|
Sep 30 2016, 07:29
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(Сергей Борщ @ Sep 30 2016, 10:18)  Посмотрите на картинку в моем сообщении. Для этих МК скорость нарастания питания не критична. Поэтому "удерживать МК в сбросе" не нужно. Совсем. Убедили )) Но итог от этого не меняется: или небольшой конденсатор (я ставлю 0.01u) для защиты от помех по цепи сброса или нормальный внешний супервизор (возможно даже со встроенным вочдогом). Согласны?
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Sep 30 2016, 08:55
|
Частый гость
 
Группа: Свой
Сообщений: 81
Регистрация: 24-07-14
Из: NA
Пользователь №: 82 352

|
Цитата(Сергей Борщ @ Sep 30 2016, 10:18)  Посмотрите на картинку в моем сообщении. Для этих МК скорость нарастания питания не критична. Поэтому "удерживать МК в сбросе" не нужно. Совсем. Вопрос такой по теме - а при медленном нарастании питания, не сбивается ли внутренний PLL, если он был сразу запущен при старте прошивки ?
--------------------
never know best.
|
|
|
|
|
Sep 30 2016, 09:17
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Forger @ Sep 30 2016, 10:29)  Согласны? Не вижу необходимости во внешнем супервизоре. На небольшой конденсатор согласен  хотя сам просто никуда не подключаю ногу сброса. Ну не наведется на голую двухмиллиметровую ногу такая помеха, чтобы перетягивать 40 кОм встроенной подтяжки в течении более 100 нс. А более короткие импульсы отсекаются встроенным фильтром.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 30 2016, 10:45
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896

|
Цитата(Forger @ Sep 30 2016, 01:26)  Странное там у вас распределение обязанностей - программист ищет косяки схемотехника, обращаясь на соотв. форуме, а что же делает схемотехник? На форумах программистов ищет косяки (если есть) в вашем софте?  В простых устройствах обычно достаточно на вывод NRST повесить лишь один конденсатор 0.01мк (к GND разумеется), внешний резистор там не нужен (он есть внутри МК). Это увеличивает время импульса сброса МК, пока питание не стабилизируется. А в ответственных девайсах, как тут уже заметили, нужен внешний супервизор, особенно, если питание Vdd нарастает слишком медленно. Так что зовите сюда вашего схемотехника, пусть он решает эту проблему 8) Да я и сам вобщем-то и схемотехник и программист и паяльником пользоваться умею, но данное конкретное устройство попало ко мне уже готовым. Почитал все ответы, но прояснения пока так и не наступило... Дополнительно к описанной ситуации есть еще такое наблюдение: если на вход питания устройства повесить большую емкость (2000 мкФ) и не вешать кондер на сброс, то в этом случае тоже все работает нормально.
|
|
|
|
|
Sep 30 2016, 11:25
|
Частый гость
 
Группа: Свой
Сообщений: 81
Регистрация: 24-07-14
Из: NA
Пользователь №: 82 352

|
Цитата(Forger @ Sep 30 2016, 12:01)  Прошивка же не запустится, пока питание не дойдет до безопасной нормы (POR не даст). а при достижении к примеру +3В после запуска прошивки медленное или быстрое плавание питания в пределах нормы (+3...+3.6В) уже не помешают работе PLL ? Цитата(Obam @ Sep 30 2016, 13:54)  Вот-вот, 2000мкФ эт перебор (по габаритам), а танталовых пару по 33..68 мкФ по питанию всегда полезно. я как для наших АРМов от Миландра, так и от STM серий F0 F1 всегда вешал керамику 10мкф (или тантал до 22мкф) + 0.1мкф керамику на каждый вывод питания (разве что батарейное питание пропускал иногда, если места мало) и 10к+0.1мкф на reset и никогда проблем не возникало, питал от линейного стабилизатора всегда, аналог 1117 серии...
--------------------
never know best.
|
|
|
|
|
Sep 30 2016, 11:45
|
Частый гость
 
Группа: Свой
Сообщений: 81
Регистрация: 24-07-14
Из: NA
Пользователь №: 82 352

|
Цитата(Forger @ Sep 30 2016, 14:35)  Это от чего нужно питать камень, чтобы так плавало питание? От батарейки? Это я спрашиваю чисто из теоретических соображений, если будет просадка питания (хоть и в пределах допустимого питания) - то PLL же слетит ? Так то у меня пока проблем таких не возникало, всё что делал было не для батарейного питания (не портативные устройства), но почитав тему - возник такой вот вопрос. Вдруг кто сталкивался уже.. К примеру в наших 1986ВЕ92 есть такая проблема:
это так частота плавает при изменении питания в работе.. Более подробно описано ТУТ (ERRATA) страницы 24-25. Такая же проблема есть и у STM ?
Сообщение отредактировал truppik - Sep 30 2016, 11:52
--------------------
never know best.
|
|
|
|
|
Sep 30 2016, 12:09
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
Цитата(Forger @ Sep 30 2016, 18:35)  Это от чего нужно питать камень, чтобы так плавало питание? От батарейки? От любого автономного источника питания, наличие плохого контакта не должно гробить прошивку, как и работу самого алгоритма чипа. Входное напряжение стабилизатора, через делитель на лапу PVD, её входной ток в пределах 80мка в сторону от VDD, (не в землю!!!). Можно сказать что между VDD и лапой PVD - измерительный мост. Последовательность: сработал внутренний ресет - старт работы ядра чипа, по факту напряжение 1,8в. Активируем прерывание по нарастанию PVD до напряжения нормы для внешнего стабилизатора, особо торопящиеся могут запустить инстал части периферии, потом уход в ожидание прерывания. В прибывании PVD переключаем вектор обработки на спад, и установка нижней границы безопасного уровня напряжения внешнего стаба, перезапуск прерывания. После ожидания внешнего прерывания - код автоматом стартует при выходе из PVD. Можно безопасно выполнять программу. При снижении напряжения внешнего стаба ниже порогового уровня - снова срабатывает PVD. Дальше уже всё зависит от требований надёжности алгоритма. Запасённой энергии во ВНЕШНЕЙ ёмкости на входе внешнего стабилизатора - хватит на 10-500мс. При этом напряжение питания самого чипа будет стабильным. Времени хватит на завершение записи сектора флешпамяти например, или на аварийное гашение внешней периферии с сохранением всех требуемых таймингов. В любом случае после цикла обработки аврала - необходимо произвести программный сброс, либо программное выключение (с бесконечным циклом). Например для векторного движка можно применить только программное выключение, потому как механика ещё вращается. А для системы сбора инфы - достаточно программного сброса. И ещё, вешать большие ёмкости на ноги чипа - нет смысла, но на входное питание стаба - да.
|
|
|
|
|
Sep 30 2016, 14:41
|
Частый гость
 
Группа: Свой
Сообщений: 81
Регистрация: 24-07-14
Из: NA
Пользователь №: 82 352

|
Цитата(AVI-crak @ Sep 30 2016, 15:09)  Последовательность: сработал внутренний ресет - старт работы ядра чипа, по факту напряжение 1,8в. Активируем прерывание по нарастанию PVD до напряжения нормы для внешнего стабилизатора, особо торопящиеся могут запустить инстал части периферии, потом уход в ожидание прерывания. В прибывании PVD переключаем вектор обработки на спад, и установка нижней границы безопасного уровня напряжения внешнего стаба, перезапуск прерывания. После ожидания внешнего прерывания - код автоматом стартует при выходе из PVD. Можно безопасно выполнять программу. При снижении напряжения внешнего стаба ниже порогового уровня - снова срабатывает PVD. Дальше уже всё зависит от требований надёжности алгоритма. Запасённой энергии во ВНЕШНЕЙ ёмкости на входе внешнего стабилизатора - хватит на 10-500мс. При этом напряжение питания самого чипа будет стабильным. Времени хватит на завершение записи сектора флешпамяти например, или на аварийное гашение внешней периферии с сохранением всех требуемых таймингов.
В любом случае после цикла обработки аврала - необходимо произвести программный сброс, либо программное выключение (с бесконечным циклом). Например для векторного движка можно применить только программное выключение, потому как механика ещё вращается. А для системы сбора инфы - достаточно программного сброса.
И ещё, вешать большие ёмкости на ноги чипа - нет смысла, но на входное питание стаба - да. а не проще ли для всего этого ставить просто внешний детектор? к примеру MAX811
--------------------
never know best.
|
|
|
|
|
Sep 30 2016, 15:41
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896

|
Цитата(Сергей Борщ @ Sep 30 2016, 09:39)  Нужно искать причину сбоя, а не костыли городить. Для этого можно загнать процессор в состояние сбоя, подключить отладчик на всем скаку и посмотреть, куда его занесло. Может у вас BOOT0 в программе на ввод настроен и в воздухе болтается, набирает за счет наводок лог. единицу, при провале питания держит эту единицу за счет внутренней емкости вывода и при сбросе уносит вас во встроенный загрузчик. BOOT0 притянут к земле через резюк 10К. Пролейте, плиз, свет на то как подключить отладчик на всем скаку и посмотреть куда МК занесло. У меня никак не получается - отладчик не ругается, но все переменные недоступны.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|