Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F4 и PORTG вывод 11
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ЮКОР
STM32F437II.
Столкнулся с проблемой, которая по началу и не предполагалась. Прошу отнестись серьёзно, хоть она связана с простым чтением цифровогоо порта.
Есть мех. селектор (переключатель), который подключается к выводам порта G.
Ползунок этого переключателя заземлён, выводы переключательной группы подключены к выводам микроконтроллера, которые сконфигурированы на pull UP.
Переключаю, определяю, что на выводе (входе порта) логический ноль, выполняю свои действия.
Задачка казалась бы тривиальная. Практически всё работает, кроме вывода PG11.
Но! Не тут то было. Не смог понять в чём проблема.

Теперь описание схемы.
Выводы селектора подключены к выводам порта G. Опрашиваю состояние порта G.
Если переключатель в положении, когда PG11 в нуле, программа вылетает.
Для других выводов такой проблемы нет. Конфигурация выводов идеинтичная.
Ошибок в логике не может быть.

Ненормальность проявляется также и в том, что после работы платы с подключенным переключателем, программа микроконтроллера не стартует после включения питания. Помогает только принудительный ресет.
Если же не подключать переключатель, то программы на новых (девственных) платах нормально стартуют.
Если отсоединить переключатель от плат, на которых был подключен переключатель при прошивке, то программа также не стартует.

В errata информации по этой проблеме не нашёл.

Заранее спасибо за рекомендации.

Golikov A.
чуднО, по описанию ничего особенного. Приведите вашу инициализацию выводов, чисто на всякий случай, вдруг все же что-то упускаете...

что еще за периферия работает в проце? пробовали все кроме этого отрубить?
Corvus
Саму ножку прозвонили с соседними и с землёй и питанием? Может банальная закоротка на плате.
mantech
Цитата(Corvus @ Jul 31 2015, 19:54) *
Саму ножку прозвонили с соседними и с землёй и питанием? Может банальная закоротка на плате.


Или на вывод сконфить, да диодом помигать... laughing.gif
ЮКОР
Цитата(Corvus @ Jul 31 2015, 19:54) *
Саму ножку прозвонили с соседними и с землёй и питанием? Может банальная закоротка на плате.


Закоротка исключена.
Сигналы смотрел осциллографом.

Цитата(Golikov A. @ Jul 31 2015, 19:47) *
чуднО, по описанию ничего особенного. Приведите вашу инициализацию выводов, чисто на всякий случай, вдруг все же что-то упускаете...

что еще за периферия работает в проце? пробовали все кроме этого отрубить?


Это всё в начале программы. То что написал, простой и банальгый тест на работоспосбность.
Инициализацию перрифеиии просмотрел. Нет внештатных конфигураций PG11.

Не хочется быть первооткрывателем по багам.

Всегда считал, что причина проблем в моей собственной кривизне рук и откуда они растут.
Но это не тот случай.
Golikov A.
может там что сильно искрит или перемыкает все же, что там за выключатель-переключатель.... ?
ЮКОР
Цитата(Golikov A. @ Jul 31 2015, 21:09) *
может там что сильно искрит или перемыкает все же, что там за выключатель-переключатель.... ?


Обычный поворотный переключатель.
Как я писал раньше, закорачивает сигналы порта G на землю (ползунок).
Вводы порта - входы, пулап резисторы включены. При переключении есть конечно дребезг. Не думаю, что это он вырубает микроконтроллер.
Соседние с PG11 выводы работают. Только с PG11 какая-то странность.
Да и то, что микроконтроллер перестаёт стартовать после включения питания очень напрягает.
Проверено на нескольких платах. Симптомы одни и теже.

Golikov A.
а в поддержку пробовали писать? их должна история заинтересовать. Особенно если у вас некоторая выборка по платам имеется.

напишите потом, что ответят, очень интересно.


ЮКОР
Цитата(Golikov A. @ Aug 2 2015, 20:20) *
а в поддержку пробовали писать? их должна история заинтересовать. Особенно если у вас некоторая выборка по платам имеется.

напишите потом, что ответят, очень интересно.

Я обнаружил, что при редактировании старой программы оставил внешнее прерывание на выводе PG11.
Программы обработки прерывания не было поэтому программа вылетала.
С этим разобрался. Всё-таки руки кривые.

А вот то, что микроконтроллер не стартует после включения питания, осталось.
На новых платах всё запускается сразу. На двух первых, которых немного помучил, запускается только от внешнего ресета.
Пробовал менять уровни BOR STM утилитой. Не помогает.
Golikov A.
а есть способы узнать на каком моменте?
попробуйте диодики позажигать, докуда программа доходит, может она в настройках PLL виснет, а может у вас еще какие старые прерывания остались?:
ЮКОР
Цитата(Golikov A. @ Aug 3 2015, 09:48) *
а есть способы узнать на каком моменте?
попробуйте диодики позажигать, докуда программа доходит, может она в настройках PLL виснет, а может у вас еще какие старые прерывания остались?:


Но от внешнего ресета программа стартует. И ток потребления возрастает и светодиоды мигают как надо.
Не очень хочется аппаратный watch-dog разрешать, потом его надо будет постоянно обнулять.
Что-то здесь совсем простое, но пока понять не могу.

В цепи ресета R=100кОм и С=0.33 мкФ.
bugdesigner
Цитата(ЮКОР @ Aug 3 2015, 11:30) *
В цепи ресета R=100кОм и С=0.33 мкФ.

А если просто подтяжку reset сделать, без конденсатора? Чем внутренний ресет не устраивает?
ЮКОР
Цитата(bugdesigner @ Aug 3 2015, 12:17) *
А если просто подтяжку reset сделать, без конденсатора? Чем внутренний ресет не устраивает?


На плате стоит микросхема SDRAM. При упрощённом программном тестировании я исключил конфигурацию контроллера SDRAM и самой микросхемы.
Так, на всякий случай, раскомментировал этот кусок и программа начала запускаться после включения питания.

Пока не совсем понял почему. Потом дойдёт.


Тем не менее, всем спасибо за помощь.
ВОПРОС снимаю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.