Перейти к содержанию
    

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

1 minute ago, ViKo said:

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

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

 

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

2 minutes ago, jcxz said:

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

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

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

Изменено пользователем Шаманъ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 минуты назад, Шаманъ сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 минуту назад, Шаманъ сказал:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

47 минут назад, Шаманъ сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Шаманъ said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

2 hours ago, ViKo said:

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

 

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 minutes ago, serglg said:

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

...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, haker_fox said:

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Aleksandr Baranov said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Aleksandr Baranov said:

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

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

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

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

 

Изменено пользователем k155la3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, haker_fox said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 hours ago, jcxz said:

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

 

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

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

 

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

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

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

SDS00043.png.6a7609642e7b5706882897b468b368ab.png

Изменено пользователем Шаманъ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...