Jump to content

    

Странное поведение STM32F042

1 minute ago, ViKo said:

А с конденсатором 1000 мкФ на разъеме питания можете картины показать?

Конечно, но попозже, сейчас убегаю...

 

Да, вот еще, в состоянии зависания МК потребляет около 4мА (может немного меньше - полностью отключить физически все остальное на плате не могу). При замыкании сброса на землю потребление уменьшается до 2.2мА, когда сброс отпускаю опять те же 4мА, и ничего не перезапускается.

2 minutes ago, jcxz said:

Как тут уже советовали: первым делом убедитесь, что проблемы не программные (кривая прошивка вашего девайса). 90% всех проблем в МК-шных девайсах - программные

Согласен. Но я вот не могу придумать как программно завесить МК, чтобы он не реагировал на сброс?

Ну и судя по состоянию ног до основной программы дело при сбое не доходит - т.е. код инициализации GPIO не исполняется.

Edited by Шаманъ

Share this post


Link to post
Share on other sites
22 минуты назад, Шаманъ сказал:

Да, вот еще, в состоянии зависания МК потребляет около 4мА (может немного меньше - полностью отключить физически все остальное на плате не могу). При замыкании сброса на землю потребление уменьшается до 2.2мА, когда сброс отпускаю опять те же 4мА, и ничего не перезапускается.

А что на входе BOOT происходит при этих манипуляциях?

Share this post


Link to post
Share on other sites
41 минуту назад, Шаманъ сказал:

Согласен. Но я вот не могу придумать как программно завесить МК, чтобы он не реагировал на сброс?

Ну и судя по состоянию ног до основной программы дело при сбое не доходит - т.е. код инициализации GPIO не исполняется.

А почему Вы думаете, что он не реагирует? ПО может просто виснуть при повторных сбросах (которые вызваны не включением, а именно сигналом сброса).

Например: При включении питания содержимое какой-то области памяти (или регистров периферии) всегда определённое. Старт программы завязан на это изначальное состояние. А если состояние не соответствует - что-то в программе виснет. Вот у Вас при первом включении программа стартует, что-то частично успевает изменить в памяти и тут происходит сброс. А при повторном старте содержимое уже не такое, что после первого вкл. питания.

Share this post


Link to post
Share on other sites
47 минут назад, Шаманъ сказал:

Ну и судя по состоянию ног до основной программы дело при сбое не доходит - т.е. код инициализации GPIO не исполняется.

Значит виснет код до инициализации GPIO. Возможно....

Share this post


Link to post
Share on other sites
1 hour ago, Шаманъ said:

Конечно, но попозже, сейчас убегаю...

Схему лучше покажите, чтобы в угадайку не играть.

Share this post


Link to post
Share on other sites

Например, не запускается кварцевый генератор. Как он там, кстати?

Share this post


Link to post
Share on other sites

долго я тут читал и увидел истину в последнем посте. :-)

2 hours ago, ViKo said:

Например, не запускается кварцевый генератор. Как он там, кстати?

 

Именно так у меня выглядело, когда не мог запустить кварц.

А это происходит ведь в самом начале.

 

 

Share this post


Link to post
Share on other sites
17 minutes ago, serglg said:

Именно так у меня выглядело, когда не мог запустить кварц.

...

используется внутренний ОГ

Share this post


Link to post
Share on other sites
13 hours ago, haker_fox said:

Не совсем понятно, что имел в виду автор топика. Но я в упор не понмаю, как МК может не реагировать на внешний аппаратный сброс?

 

Отчего же? Лично наблюдал такое. Устройство не начинало работать как должно даже после внешнего аппаратного сброса, а только после "power cycle".

Share this post


Link to post
Share on other sites
1 hour ago, Aleksandr Baranov said:

Отчего же? Лично наблюдал такое. Устройство не начинало работать как должно даже после внешнего аппаратного сброса, а только после "power cycle".

Ну и?))) А что происходило-то?

Share this post


Link to post
Share on other sites

ТС надо сделать "пустую" программу с while(1) { PORT_PINX ^=  PORT_PINX; } и "всеми" настройками по умолчанию.

Что тут неоднократно и предлагали. Есть гипотеза, что при повторных "дребезговых" сбросах программа-FW ТС  "влетает" в какой-то

специфический участок (или режим работы с зациклом). Почему не отрабатывает WD ? А он используется ? (пардон, ветку не вычитал), и с каким таймаутом ?

Может при этих (непонятных) настройках таймаут 5 минут ?

Отличие питания по USB - ограничение ейного тока.

Share this post


Link to post
Share on other sites
2 hours ago, Aleksandr Baranov said:

Отчего же? Лично наблюдал такое. Устройство не начинало работать как должно даже после внешнего аппаратного сброса, а только после "power cycle".

Ну, схем сброса полно. В том числе "импульсный", последовательно через конденсатор. Девайс, тем или иным образом, "подсох" :)

Уменьшилась длительность или амплитуда сбросного напряжения по лапе Reset. 

Как вариант - это очень военный процессор, который уже увидел цель, а препятствий в этом случае, вроде какого-то ресета,:biggrin: быть не может 

 

Edited by k155la3

Share this post


Link to post
Share on other sites
1 hour ago, haker_fox said:

Ну и?))) А что происходило-то?

Ну так, тиристорный эффект.

Share this post


Link to post
Share on other sites
23 hours ago, jcxz said:

А почему Вы думаете, что он не реагирует? ПО может просто виснуть при повторных сбросах (которые вызваны не включением, а именно сигналом сброса).

 

Вот! Огромное спасибо за правильную мысль :) Похоже я решил проблему. Вчера проверить не было времени, но не давала покоя одна мысль - при активном резете МК потреблял меньше, чем при неактивном - т.е. он что-то выполнял, и, соответственно, Ваша мысль была очень вероятным кандидатом на реальную картину. А подходящее место в программе было только одно. Так оно по всему и получилось. Вход в основную программу из загрузчика осуществлялся через сброс МК. Добавил контроль при входе, чтобы сброс был именно программный и все стало работать стабильно (по крайней мере как не старался завесить не смог, со старым загрузчиком, который без этой проверки, вешается достаточно просто через помехи в питании).

Остался правда один вопрос - как мог происходить в этом месте сбой для меня по прежнему загадка (ибо та проверка предназначена для выявления повреждения или отсутствия основной программы, а она присутствовала в нормальном виде всегда).

 

On 5/30/2019 at 12:05 PM, ViKo said:

А с конденсатором 1000 мкФ на разъеме питания можете картины показать?

Не знаю актуально ли, но как-то так (сброс не подключал):

SDS00043.png.6a7609642e7b5706882897b468b368ab.png

Edited by Шаманъ

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now