|
|
  |
Электрические помехи и STM32, что делать, ваах ! |
|
|
|
Apr 29 2016, 17:00
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
В общем так, при тестировании STM32 в боевых условиях с помехами и наводками, в частности: STM32F03, STM32F207 и д.р. выявилась проблема, которая на микроконтроллерах типа AVR никогда не проявлялась или очень редко проявлялась. Небольшие наводки (естественно выше допустимых по мануалу уровней) по GPIO портам у STM32 вызывают аппаратные сбои ядра, периферии и оперативной памяти. В одних случаях сбоит периферия: слетает инициализация или происходит установка ошибок, лечится банальной но частой переинициализацией по программному таймеру или переинициализацией после отработки некоторых условий. В других случаях происходит сбой ядра и передача управления на HARDFAULT_Handler или BUSFAULT_Handler, где вместо while (true) - поставили простое лечение NVIC_SYSTEM_Reset (). Иногда сбоит оперативная память, теряет данные. Но это все поправимо, если устанавливать контрольные суммы.
Что делать, когда заинициализированный и проверенный WATCHDOG после наводок не сработал, а внутреннее ядро СТАЛО, симптомы именно такие ! В HARDFAUL вхождения не было !!! Проблема не в том, чтобы в оборудовании сделать ПОЛНУЮ гальваноразвязку, как устранить полное зависание и останов ядра после сбоя, если сам WATCHDOG слетает и ядро где-то шляется по адрессам ?
Видел в живую некоторые реализации схемотехники для 8051 микроконтроллера. С внешней микросхемы формирователя на 555 генерился постоянный неуправляемый сброс с определенным периодом и скважностью, остается догадываться что программа организованна по SWITCH CASE программного состояния. Но это достаточно неудобно когда организовываешь протокол обмена например по MODBUS, где циклы сброса с формирователя ассинхроны к пакетам передачи ???
Кто-нибудь знает как вывести STM32 из полного штопора ??????????????????????
|
|
|
|
|
Apr 29 2016, 17:07
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(Сега @ Apr 29 2016, 21:02)  Может быть стоит пересмотреть схемотехнику? Да в том то и дело, надо решить проблему на корню. Помехи могут добраться и до полной гальваноразвязки (не припомню когда было  ) и бронированного корпуса. Кто-нибудь знает как вывести STM из полного штопора. Склалось впечатление о полной остановке ядра.
|
|
|
|
|
Apr 29 2016, 17:14
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(1113 @ Apr 29 2016, 21:09)  где об этом почитать? Absolute maximum ratings ... В каждом Product Specifications pdf на соответствующий микроконтроллер.
|
|
|
|
|
Apr 29 2016, 17:21
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(ViKo @ Apr 29 2016, 21:17)  Как watchdog может сломаться? Это фантастика. Вы где его сбрасываете? Не в прерывании? Таки да, сломался. В прерывании сброс WATCHDOGA я бы додумался поставить лет 15 назад, сейчас не встает вопрос, не школьник, не ставлю.
|
|
|
|
|
Apr 29 2016, 17:28
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(adnega @ Apr 29 2016, 21:20)  А зачем, если у вас такие помехи, что даже ОЗУ портится? Только аппаратное решение напрашивается. Вот. Я об том же, о надежности. А если все-таки дойдет помеха, доберется ?! Потом что капитуляция или как ? Я все грешу на свою несостоятельность, мож что не так делаю  . Вернее ищу дельного совета. Цитата(ViKo @ Apr 29 2016, 21:23)  Independent watchdog? Да, он , не WWDG. Проверил, он работает. Но когда на него надеешься - он сливается.
Сообщение отредактировал картошка - Apr 29 2016, 17:29
|
|
|
|
|
Apr 29 2016, 17:33
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(ViKo @ Apr 29 2016, 21:28)  Так защиту по входам поставьте, если не школьник.  И по питанию тоже.  Не школьник. По земле иногда проходит, по чистой, по GND. Поэтому гальваноразвязка только. Но ответ на вопрос "как выйти из штопора " - дороже гальваноразвязки !!! Выяснилось не по питанию идет. Идет по корпусу железному + рядом провода с индукционными наводками (убрали). Выбросы реактивных цепей, пускатели, частотные приводы. Питание сразу поставили импульсное.
Сообщение отредактировал картошка - Apr 29 2016, 17:39
|
|
|
|
|
Apr 29 2016, 17:41
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(картошка @ Apr 29 2016, 20:28)  Вот. Я об том же, о надежности. А если все-таки дойдет помеха, доберется ?! Потом что капитуляция или как ? Я все грешу на свою несостоятельность, мож что не так делаю  . Помехи классифицируются. От одних помех можно дешево и надежно защититься. От всех помех защититься не возможно. По мере расширения класса подавляемых помех, стоимость защиты увеличивается. При недопустимом уровне помех, когда цифровая схема начинает работать как аналоговая - аналитический аппарат становится другим. Можно назвать это "капитуляцией". Я предлагаю определить помехи, на которые ваше устройство должно адекватно реагировать (работать при помехе; не работать при помехе, но восстанавливать работоспособность после снятия помехи) и проектировать цепи защиты исходя из указанных ограничений. Обычно требования к помехам прописаны в руководящих документах для конкретного типа изделий. Цитата(картошка @ Apr 29 2016, 20:33)  Питание сразу поставили импульсное. Я обычно ставлю импульсное для 5В, затем линейный стабилизатор на 3.3В
|
|
|
|
|
Apr 29 2016, 17:47
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(ViKo @ Apr 29 2016, 21:17)  Как watchdog может сломаться? Это фантастика. Вы где его сбрасываете? Не в прерывании? В STM32F207 их там 3. За бусы фаулты тоже знаем и за другие. Везде поставил NVIC_Reset. Срабатывает иногда в 90 процентах случаев - пока штопор не отлавливает. А в STM32F03 - там только HARDFAULT. Цитата(scifi @ Apr 29 2016, 21:41)  Имеет ли смысл этот вопрос? Если процессор "вошёл в штопор", он может натворить непоправимое, и "выход из штопора" может быть уже не актуальным. То есть нельзя допускать штопор. А по поводу выхода - внешний RESET должен работать. А снятие питания совершенно точно поможет. Ну он только RESETом и выводится. Знаете более или менее надежные системы периодического сброса, проверенные опытом и временем, чтоб без програмной настройки были. Чтоб очень "деревянные" были, электричества не боялись  ?!
|
|
|
|
|
Apr 29 2016, 17:48
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(ViKo @ Apr 29 2016, 20:17)  Как watchdog может сломаться? Это фантастика. Вы где его сбрасываете? Не в прерывании? В STM32F207 их там 3. Если речь идёт о том, что глючит периферия STM, то почему не может произойти сбой таймера-сторожа? Это такой же периферийный модуль. Если остальные наблюдаемые эффекты Вас не смущают, и дело только в WDT, то я рекомендую Вам также поставить внешний таймер. Несмотря на то, что сам я с такими эффектами не сталкивался, в особо ответственных применениях наряду с внутренним WDT, всегда использую ещё и внешний, тем более, что стоит он копейки. Я тоже не так давно был неприятно удивлён, что модуль протоколирования операций на STM32 в условиях сильных помех писал в области Flash, куда ему писать было запрещено. Хотя адреса неоднократно программно проверяются перед записью. Пришлось через Option byte запрещать запись в некоторые сектора. Но само по себе это печально. Пока я ещё верю, что схемотехнически, используя комплексные меры защиты, можно любой микроконтроллер заставить нормально работать в любых условиях. Но знаю несколько человек, которые утверждают, что там где STM32 периодически выходит из строя в результате воздействия мощных электромагнитных помех, AVR работают устойчиво.
|
|
|
|
|
Apr 29 2016, 18:02
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(adnega @ Apr 29 2016, 21:41)  Помехи классифицируются. От одних помех можно дешево и надежно защититься. От всех помех защититься не возможно. По мере расширения класса подавляемых помех, стоимость защиты увеличивается. При недопустимом уровне помех, когда цифровая схема начинает работать как аналоговая - аналитический аппарат становится другим. Можно назвать это "капитуляцией".
Я предлагаю определить помехи, на которые ваше устройство должно адекватно реагировать (работать при помехе; не работать при помехе, но восстанавливать работоспособность после снятия помехи) и проектировать цепи защиты исходя из указанных ограничений. Обычно требования к помехам прописаны в руководящих документах для конкретного типа изделий.
Я обычно ставлю импульсное для 5В, затем линейный стабилизатор на 3.3В С питание аналогично, LM1117-3.3. Помеха ЖЕСТКАЯ ! Резкое изменение потенциала земли в какую-либо сторону в момент резких выбросов ЭНЕРГИИ дальше по схеме. Ответ по поведению внутреностей ядра- имеет право, такое наблюдал, когда напряжение питания на цифровых схемах снижается до уровня работы в неопределенном гистерезисе цифр. уровней. Но тут с питанием все нормульно. Происходит сбой не изменяя вроде внутренего гистерезиса, хотя я уже склоняюсь до подобных представлений. Что посоветуете из проверенных временем "не настраиваемых программно" схем внешнего периодического сброса ?! Цитата(amiller @ Apr 29 2016, 21:48)  Если речь идёт о том, что глючит периферия STM, то почему не может произойти сбой таймера-сторожа? Это такой же периферийный модуль. Если остальные наблюдаемые эффекты Вас не смущают, и дело только в WDT, то я рекомендую Вам также поставить внешний таймер. Несмотря на то, что сам я с такими эффектами не сталкивался, в особо ответственных применениях наряду с внутренним WDT, всегда использую ещё и внешний, тем более, что стоит он копейки. Я тоже не так давно был неприятно удивлён, что модуль протоколирования операций на STM32 в условиях сильных помех писал в области Flash, куда ему писать было запрещено. Хотя адреса неоднократно программно проверяются перед записью. Пришлось через Option byte запрещать запись в некоторые сектора. Но само по себе это печально. Пока я ещё верю, что схемотехнически, используя комплексные меры защиты, можно любой микроконтроллер заставить нормально работать в любых условиях. Но знаю несколько человек, которые утверждают, что там где STM32 периодически выходит из строя в результате воздействия мощных электромагнитных помех, AVR работают устойчиво. Приятно услышать слово от закаленного трудоднями человека.
|
|
|
|
|
Apr 29 2016, 18:08
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(картошка @ Apr 29 2016, 21:02)  Помеха ЖЕСТКАЯ ! Но ей на пути можно и нужно навыставлять барьеров. Неправильным выбором цепей защиты и неверной топологией можно натерпеться даже от средних помех. Если бы вы озвучили параметры помехи и показали схему защиты с топологией, то довольно быстро вам бы показали, где слабое место.
|
|
|
|
|
Apr 29 2016, 18:10
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(ViKo @ Apr 29 2016, 21:04)  Пока есть питание, LSI RC генератор должен работать. А счетчик после него завалить? сомневаюсь. Ну, если вольт 3000 шарахнуть, все может быть. Автор написал, что происходит сброс настроек периферии. Значит и таймер-сторож может отключиться (сбросится в начальное состояние). Может конечно помочь принудительное включение таймера через Option byte, но надежнее проверенный путь - внешний WDT.
|
|
|
|
|
Apr 29 2016, 18:11
|
Знающий
   
Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458

|
Цитата(картошка @ Apr 29 2016, 20:33)  Не школьник. По земле иногда проходит, по чистой, по GND. Поэтому гальваноразвязка только. Но ответ на вопрос "как выйти из штопора " - дороже гальваноразвязки !!! Выяснилось не по питанию идет. Идет по корпусу железному + рядом провода с индукционными наводками (убрали). Выбросы реактивных цепей, пускатели, частотные приводы. Питание сразу поставили импульсное. Что-то слабо верится. Поставьте плату в отдельный экранированный корпус, нормально защитите все входы/выходы (продольный резистор + шотки земля-питание) (питание в т.ч - стабилитрон), нормально разведите плату (4-х слойка со слоями земли и питания+правильная разводка) и в такой блок можно будет напрямую молниями пулять без всяких сбоев, независимимо от процессора. Мы делали блоки контроля тока ОПН - там импульсы напряжений до сотен кВ с токами до 100 кА с крутыми фронтами - и все нормально работало без сбоев. Да еще и питаться умело от этих самых импульсов. А гальваноразвязку тоже с умом делать нужно, от высокочастотных помех она не спасет - фильтры нужны.
|
|
|
|
|
Apr 29 2016, 18:20
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(adnega @ Apr 29 2016, 21:57)  Уж если речь идет об STM32, то советую пролистать AN3307. Печалит одно только существование документа... На ровной дороге такие документы не составляются, видимо как способ увести внимание что грабли из чужого огорода у ST немного получилось. Все еще надеюсь найти совет по штопору. В AVR при компиляции программ я в конце BIN файла обычно JMP 0 ставил, а тут некуда. Возможно ядро и работает, но ГДЕ-ТО там, а WATCHDOG завял. Может в оперативку в конец сгенерировать код на NVIC_Reset ???
|
|
|
|
|
Apr 29 2016, 18:34
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(картошка @ Apr 29 2016, 21:20)  Печалит одно только существование документа... Дык, вы его полистайте и печаль пройдет. В документе написано про надежную софтовую часть. Как тестировать, что тестировать. Или вы считаете, что этого делать не стоит, т.к. есть прекрасный AVR? При этом нужно понимать, что аппаратная часть должна быть исправная. И софт и железо - это параллельные вещи. Из личного: я одновременно использовал в работе и AVR, и STM32. Всяко бывало... но AVR частенько выдерживал 12В на входе. Ну как выдерживал? - пин выгорит, а все остальное продолжает работать. У STM32 при ахтунге на входе сразу КЗ по питанию. При этом если ток по питанию не ограничивать, камень будет греться, но продолжает работать. Собственно, как к этому относиться? В начале меня это очень сильно печалило - шаг влево, шаг вправо, МК в помойку. Но когда потребовалось делать ответственную аппаратуру, то такое поведение МК мне очень понравилось. Сразу можно сказать, что МК не исправен, а не эксплуатировать полу-рабочее изделие. Это накладывает сильный отпечаток на разработку. Согласитесь, разница очевидна? С одной стороны: "если я не позабочусь о помехе и ее энергия попадет на пин, то получу полностью убитое изделие". С другой стороны: "наплевать на помеху, поставлю внешнюю кувыркалку, чтоб она в случае чего перезапускала софт; один пин отгорит - не жалко - их еще много".
|
|
|
|
|
Apr 29 2016, 18:52
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(rudy_b @ Apr 29 2016, 22:11)  Что-то слабо верится. Поставьте плату в отдельный экранированный корпус, нормально защитите все входы/выходы (продольный резистор + шотки земля-питание) (питание в т.ч - стабилитрон), нормально разведите плату (4-х слойка со слоями земли и питания+правильная разводка) и в такой блок можно будет напрямую молниями пулять без всяких сбоев, независимимо от процессора.
Мы делали блоки контроля тока ОПН - там импульсы напряжений до сотен кВ с токами до 100 кА с крутыми фронтами - и все нормально работало без сбоев. Да еще и питаться умело от этих самых импульсов.
А гальваноразвязку тоже с умом делать нужно, от высокочастотных помех она не спасет - фильтры нужны. Согласен, что схемотехника не годится. Аналоговые цепи были в схеме ? Использовалась общая земля или только гальваноразвязанные линии ??? Цитата(adnega @ Apr 29 2016, 22:34)  Дык, вы его полистайте и печаль пройдет. В документе написано про надежную софтовую часть. Как тестировать, что тестировать. Или вы считаете, что этого делать не стоит, т.к. есть прекрасный AVR? При этом нужно понимать, что аппаратная часть должна быть исправная. И софт и железо - это параллельные вещи.
Из личного: я одновременно использовал в работе и AVR, и STM32. Всяко бывало... но AVR частенько выдерживал 12В на входе. Ну как выдерживал? - пин выгорит, а все остальное продолжает работать. У STM32 при ахтунге на входе сразу КЗ по питанию. При этом если ток по питанию не ограничивать, камень будет греться, но продолжает работать. Собственно, как к этому относиться? В начале меня это очень сильно печалило - шаг влево, шаг вправо, МК в помойку. Но когда потребовалось делать ответственную аппаратуру, то такое поведение МК мне очень понравилось. Сразу можно сказать, что МК не исправен, а не эксплуатировать полу-рабочее изделие.
Это накладывает сильный отпечаток на разработку. Согласитесь, разница очевидна? С одной стороны: "если я не позабочусь о помехе и ее энергия попадет на пин, то получу полностью убитое изделие". С другой стороны: "наплевать на помеху, поставлю внешнюю кувыркалку, чтоб она в случае чего перезапускала софт; один пин отгорит - не жалко - их еще много". Софтовой части нет шансов вылезти из ступора - ядро не передает управления и все ватчдоги - отвалились, в софт безопастности меня STM за эти 6 лет подковал. А когда программа укатила в неизвестно куда , посторю - заинициализированный ватчдог в УЛЕТЕ ? Что посоветуете как управление вернуть, если оно ни на один вектор не приходит ? Пины не выгорают в нашем случае есть ограничители. Волновые распространение сигнала в соответствующей среде и по одному проводу, не буду дискутировать. Со всеми проблемами AVR знаком и STM уже лет 6 мучаю успешно. Вопрос открыт, что можно сделать такое, чтобы вернуть управление ядра не через внешний сброс; при полном штопоре и реально отвалившемся ватчдоге ??????
Сообщение отредактировал картошка - Apr 29 2016, 18:58
|
|
|
|
|
Apr 29 2016, 19:04
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(картошка @ Apr 29 2016, 21:52)  Вопрос открыт, что может быть такое в ядре, чтоб вернуть управление не через внешний сброс, при полном штопоре и реально отвалившемся ватчдоге ?????? Тогда встречный вопрос: как загнать ядро в такое состояние? Например, я тестировал свой пульт с сенсорными кнопками. Через 1.5 мм оргстекла водил кисточкой с 6 кВ на кончике. Сенсорная кнопка - это площадка меди? подключенная напрямую к пину МК (stm32f042k6t6). Итого: пульт жив, а в блоке питания ATTEN TPR3005T-3C перестал показывать дисплей канала, от которого запитывал пульт.
|
|
|
|
|
Apr 29 2016, 19:12
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(Огурцов @ Apr 29 2016, 22:27)  как бы посмотреть схему и плату ? хотя бы чтобы так не делать Схема плохая, с точки зрения подвода, много внешних проводов и неправильная заводка земли. Но микроконтроллер, только временами сбоит, было принято решение довести программную часть до оптимального со стороны безопастности - помехи усилили, поставили рядом провода с индукционными импульсными наводками - 12 вольтовые импульсные сигналы сблизили с межплатным обменом по SPI где уровни 3 вольта. С этого и приступили к испытаниям программы. Ну этим пока и закончили  ... Глохнет заведенный ватчдог, Хардфаултов - нет, управление ядра - неизвестно где ходит ??? Шо делать ?
|
|
|
|
|
Apr 29 2016, 19:37
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(adnega @ Apr 29 2016, 23:04)  Тогда встречный вопрос: как загнать ядро в такое состояние? Например, я тестировал свой пульт с сенсорными кнопками. Через 1.5 мм оргстекла водил кисточкой с 6 кВ на кончике. Сенсорная кнопка - это площадка меди? подключенная напрямую к пину МК (stm32f042k6t6). Итого: пульт жив, а в блоке питания ATTEN TPR3005T-3C перестал показывать дисплей канала, от которого запитывал пульт. Думаю просто. Припаиваешь к цифровой земле 1 метр провода , один выход генератора цепляешь на самый отдаленный край провода земляного. Другим концом с генератора замыкаешь на тот же провод рядом, подальше от MPU естественно. Помучайте это земляной провод импульсами от генератора. Думаю эффект не заставит долго себя ждать. Если не получится, поискрите второй конец ближе к MPU. Если не получится, поставьте вместо керамики и танталов на плате MPU только электролитик индукционный какой на 3 вольтового питания . И проделайте тоже самое с землей и генератором снова. Цитата(adnega @ Apr 29 2016, 21:57)  Уж если речь идет об STM32, то советую пролистать AN3307. Вот меня уже направляли на путь правильный... Цитата(ViKo @ Apr 29 2016, 23:14)  Есть NMI в STM32. Пользуетесь? Если в программе есть петля типа goto here ...  Но понял я что по NMI я промазал.... Люблю котов !!! Не поставил обработчик по NMI  ... The data bus width is 36 bits because 4 bits are available for parity check (1 bit per byte) in order to increase memory robustness, as required for instance by Class B or SIL norms. The parity bits are computed and stored when writing into the SRAM. Then, they are automatically checked when reading. If one bit fails, an NMI is generated.If a failure is detected on the HSE clock, the HSE oscillator is automatically disabled, a clock failure event is sent to the break input of the advanced-control timers (TIM1) and general-purpose timers (TIM15, TIM16 and TIM17) and an interrupt is generated to inform the software about the failure (Clock Security System Interrupt CSSI), allowing the MCU to perform rescue operations. The CSSI is linked to the Cortex-M0 NMI (Non-Maskable Interrupt) exception vector.
Сообщение отредактировал картошка - Apr 29 2016, 19:42
|
|
|
|
|
Apr 29 2016, 21:15
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(ViKo @ Apr 30 2016, 00:18)  Чем встроенный watchdog хуже внешнего? Точнее, что мешает сделать такой же качественный? А то, что в STM32 его можно отключить, да, это не очень надежное решение. Вот тем и хуже, что его отключить можно. Вотчдог должен быть неотключаемым ни программно ни каким-либо сбросом, он должен работать всегда, без необходимости его включения конфигурированием чего-либо программно. Т.е. - только простой железный внешний WD может быть надёжным. Ну это конечно после вправления рук схемотехнику по части правильной разводки и борьбы с помехами. Мы во всех своих устройствах в обязательном порядке ставим внешний WD. Цитата(картошка @ Apr 30 2016, 00:20)  В AVR при компиляции программ я в конце BIN файла обычно JMP 0 ставил, а тут некуда. Кто-ж Вам в ARM это делать мешает?? Только это всё - борьба с ветряными мельницами. Вам надо брать учебник по схемотехнике и садиться за учёбу. При кривой схеме и разводке никакие программные ухищрения не помогут.
|
|
|
|
|
Apr 30 2016, 04:57
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(картошка @ Apr 29 2016, 22:12)  Шо делать ? Начать с исправления вот того: Цитата Схема плохая, с точки зрения подвода, много внешних проводов и неправильная заводка земли.
|
|
|
|
|
Apr 30 2016, 07:03
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(картошка @ Apr 29 2016, 19:12)  Схема плохая ну вот и интересно, вдруг мы делаем так же Цитата(картошка @ Apr 29 2016, 19:12)  управление ядра - неизвестно где ходит ??? Шо делать ? а отладчик тоже не подключается ?
|
|
|
|
|
Apr 30 2016, 13:17
|
Знающий
   
Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458

|
Цитата(картошка @ Apr 29 2016, 21:52)  Согласен, что схемотехника не годится. Аналоговые цепи были в схеме ? Использовалась общая земля или только гальваноразвязанные линии ??? Да, были. И гальваническая развязка от токонесущего проводника тоже, но и без нее все работало, разница лишь в опасности для оператора. Кстати сталкивался и с палеными ногами на stm32f207. Нога отваливается, остальное продолжает работать без проблем. Но это как повезет. По уму, полезно во все NMI прописать сброс.
|
|
|
|
|
Apr 30 2016, 20:02
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 25-09-08
Пользователь №: 40 477

|
На STM32L151, который был расположен прямо возле эл. двигателя и аналогично зависал, помог отказ от использования PLL.
|
|
|
|
|
May 5 2016, 12:13
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(jcxz @ Apr 30 2016, 00:15)  Только это всё - борьба с ветряными мельницами. Вам надо брать учебник по схемотехнике и садиться за учёбу. При кривой схеме и разводке никакие программные ухищрения не помогут. Эх, хороший совет. Но схему и плату не я рисовал. Схему запретили трогать и давать какие-либо рекомендации по поводу надежности и улучшения ее работы - под страхом физической расправы с последующим увольнением с работы. Ну нет худа без добра, за это время стал специалистом по программным костылям. Специалистом изменения магнитопроницаемости физического ваккума програмным способом на расстоянии по фотографии. Цитата(johnshadow @ Apr 30 2016, 23:02)  На STM32L151, который был расположен прямо возле эл. двигателя и аналогично зависал, помог отказ от использования PLL. Хороший совет. Ведь внутренняя система PLL по любому сделана по схеме НАПРЯЖЕНИЕ-ЧАСТОТА с цифровым счетчиком и цифровым компаратором обратной связи. Любая помеха наводит на накопительную RC цепь приличную наводку или ее изменение. Цитата(khach @ May 1 2016, 13:40)  В таких сложных случаях спасет только второй (медленный) ватчдог с ключем по питанию процессора. Приходилось такое ваять в схеме с тиратроном- помехи от тиратрона бывают запредельные и сбивают все что можно. При этом схемотехника и экранирование силы быле сделаны правильно- второй ватчдог срабатывал только при спонтанных пробоях тиратрона (то ли от космических частиц, то ли от износа) короче это было аварийное событие, но проц после этого оживал. Спасибо. Правильно приняли - что береженного Бог бережет.
Сообщение отредактировал картошка - May 5 2016, 12:14
|
|
|
|
|
May 5 2016, 13:14
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(Огурцов @ Apr 30 2016, 11:03)  ну вот и интересно, вдруг мы делаем так же
а отладчик тоже не подключается ? У меня ST-LINK/2 , отладчик отваливается при любом удобном случае, задетектировать место зависания не удается, импульс и полный сбой, что с отладчиком что без него. Даже когда отладку делаешь через ноутбук работающих от своих батарей в режиме полной гальваноразвязки, збои - реже. Разрабатываемое устройство работает с реактивными цепями накапливающими токи в свою индуктивность до одного-полутора килоампера. Поэтому E = (L * (I*I)) / 2; - (L = 5 - 20 uh) большие импульсные помехи. Слив всю энергию в емкость 10 нанофарад можем получить 67 Кволльта на нем, все зависит от добротности реактивности пораждающюю обратною ЭДС. Длина волны (скорость нарастания/спада) пораждаемая этим разрядом уже три раза превысила импульс пораждаемые гармоники рентгеновского спекта. Поэтому длина полны может быть и сантиметр и миллиметр, все зависит от магнитной проницаемости среды и формы конструкции. Главная ошибка это отсутствие гальваноразвязки, искушение использовать встроенные в ARM ADC периферию ! Схему разрабатывал не я. Неоднократно предупреждал и расчитывал возможные помехи.
|
|
|
|
|
May 5 2016, 15:35
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673

|
Цитата(Alechek @ May 5 2016, 18:53)  Вам немного не про это. Пускай отваливается. Хоть вообще его не подключать. ПОСЛЕ зависания подключится отладчиком удается? Нет. Не удается. Даже при неправильной конфигурации периферии, если забыл законфигурировать CLK или обратился в несуществующей памяти, частенько бывает чтобы вывести STM32 из состояния внутрененего покоя, нужно на BOOT0 - 1 подать, чтоб злокод написаный не выполнялся. Это касательно отладки через SWD, не JTAG. Ввиду творческого порыва и смелого духа, на JTAG пинов не резервируем, только SWD.
|
|
|
|
|
May 5 2016, 19:48
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-11-10
Пользователь №: 60 998

|
Цитата(khach @ May 5 2016, 18:53)  О, экспериментальная физика высоких энергий или лазерная техника. Отличное поле для топтания по граблям. При понимании процессов и грамотном проектировании проблемы решаются. При неграмотном - знаю людей, спаливших более 5 дорогих осциллографов (к сожалению один из них был нашим). На вопрос, ну хотя бы после второго задумались бы, ответ - это осциллографы некачественные. И положительный пример - в электрофизических установке с большими импульсными токами все прекрасно работает. Но там меры приняты на этапе проектирования. Ситуации конечно всякие бывают. Приходилось и программно обрабатывать нештатные ситуации с помехами по входам в чужой схеме (мне скинули уже готовую плату, долго потом наверное им икалось...), при этом ситуация осложнялась высокими требованиями к джиттеру синхронизации процесса, а помеха как раз по синхроимпульсу приходила.
|
|
|
|
|
May 6 2016, 05:09
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(картошка @ May 5 2016, 18:13)  Схему запретили трогать и давать какие-либо рекомендации по поводу надежности и улучшения ее работы - под страхом физической расправы с последующим увольнением с работы. Ну нет худа без добра, за это время стал специалистом по программным костылям. Вас там не уважают как спеца или схемотехник чей-то родственник? На заре моей карьеры работал я в конторе, где тоже местный царёк ни в какую не хотел менять схемотехнику заведомо ущербную (что было очевидно всем коллегам). Он на использовании старого кривого оборудования получал хорошие откаты не вкладывая ни копья в исправление схемных проблем. А мне также приходилось бороться с ветряными мельницами - ставил костыль за костылём, а баги всё новые вылезали. На простой задаче пришлось наворотить такого.... Один хрен - прошло совсем немного времени с моего ухода оттуда и всё то оборудование заказчикам пришлось выкинуть - из говна конфетку не сделаешь ни какими программными ухищрениями. Сейчас жалею только что раньше не уволился. Жалею о бессмысленно потраченном времени, которое мог-бы посвятить полезным делам. Так что - если такое отношение - не теряйте времени зря. PS: На текущей работе, к моему мнению как программиста, схемотехники и начальство прислушиваются. Если надо - устраиваем дискуссии и меняем схему по моему требованию. Потому что ПО то писать мне, а без ПО железка никому не нужна. Так и должно быть. Ну конечно если Вы не студент без опыта работы и если соображаете в схемотехнике конечно.
|
|
|
|
|
May 6 2016, 10:41
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(jcxz @ May 6 2016, 08:09)  На текущей работе, к моему мнению как программиста, схемотехники и начальство прислушиваются. Если надо - устраиваем дискуссии и меняем схему по моему требованию. Потому что ПО то писать мне, а без ПО железка никому не нужна. Так и должно быть. Ну конечно если Вы не студент без опыта работы и если соображаете в схемотехнике конечно. Я вообще считаю, что программист должен быть ведущим темы. Именно он должен ставить задачи схемотехнику. И это вопрос не уважения, а вопрос правильности организации. Ну например надо закрутить двигатель - я это могу сделать несколькими способами и от этого будет изменена схемотехника. Или мне надо померить период импульса - я буду решать что за процессор и на какую ногу подать сигнал. Ну и так далее ... Но именно поэтому программист должен хорошо, а не поверхностно разбираться в схемотехнике, быть неплохим инженером и иметь хороший кругозор.
|
|
|
|
|
May 6 2016, 16:30
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(Огурцов @ May 6 2016, 18:33)  а на самом деле таки да, только не один, а два - с двух сторон - линия же двунаправленная На самом деле достаточно одного Код # FTDI Target # ---- ------ # 1 - Vref ----------------- Vcc # 3 - nTRST - # 4 - GND ----------------- GND # 5 - TDI ---/\470 Ohm/\--- SWDIO # 7 - TMS - # 9 - TCK ----------------- SWCLK # 11 - RTCK - # 13 - TDO ----------------- SWDIO # 15 - nSRST - - - - - - - - - nRESET # Как работает думаю понятно из "схемы". Я уже не один раз воспользовался таким методом, ибо у меня только JTAG адаптер на FT2232D, а нужно было работать с контроллерами у которых только SWD.
|
|
|
|
|
May 6 2016, 20:04
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(Огурцов @ May 6 2016, 21:38)  вообще, вроде бы вопрос был про swd-swd, а не про jtag-swd khach писал: Цитата Jtag сделан давно....................Проблема в том, что в новых таргетах Jtag не выведен, только SWD. Я просто предложил вариант решения этой проблемы с помощью давно сделанного JTAGa и резистора
|
|
|
|
|
May 7 2016, 10:24
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(khach @ May 7 2016, 12:39)  Ну и как это решение трансформировать в оптическую световодную развязку? Что то не приходилось наблюдать двунаправленных световодов, если не использовать совсем уж навороченные приемопередатчики. Может я Вас не правильно понял, но Вы сказали, что JTAG с опторазвязкой у Вас уже есть? Если так, то предложенное решение успешно конвертирует имеющийся JTAG в SWD. В JTAGe нет двунаправленных линий, потому откуда появляются двунаправленные световоды мне не понятно. В схеме задействовано две линии в направлении от JTAGa к SWD и одна обратно, все однонаправленные. Цитата Еще задержка в световоде приводит к неработоспособности таких простых схем на резисторах- получаем кольцевой генератор а не линию связи. Не получаем, т.к. на другом конце линии не соединяются - там отдельные входы и выходы и никаких кольцевых генераторов. Цитата В JTAGe с этим разобрались используя адаптивный клокинг, а в SWD как быть? Может просто попробовать  ? Как по мне это можно было сделать быстрее, чем ушло времени на описание проблем.
|
|
|
|
|
May 7 2016, 10:40
|
Гуру
     
Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741

|
Цитата(Шаманъ @ May 7 2016, 12:24)  Может я Вас не правильно понял, но Вы сказали, что JTAG с опторазвязкой у Вас уже есть? Если так, то предложенное решение успешно конвертирует имеющийся JTAG в SWD. JTAG оптический то есть, но на новых таргетах JTAG-а нет. Только SWD. Никакой конверсии JTAG в SWD нет- то что сигналы разведены на одном и том же разьеме это никакя не конверсия, т.к алгоритм работы интерфейса совсем другой, т.е просто процессор отладчика программируется по-другому при смене режимов. Соотвествено SWD c развязкой не работает. Я пробовал повторить схему гальваноразвязанного SWD не на Si8662BC, как в оригинале, а на ADUM- не заработало, да и по напряжению развязка на микросхемах слабовата- максимум до 1 КВ в реале, очень полезна отлаживать силовые преобразователи, но все равно бесполезна при отладке контроллеров тиратронов или БП азотных импульсных лазеров.
|
|
|
|
|
May 7 2016, 12:09
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(khach @ May 7 2016, 13:40)  JTAG оптический то есть, но на новых таргетах JTAG-а нет. Только SWD. Никакой конверсии JTAG в SWD нет- то что сигналы разведены на одном и том же разьеме это никакя не конверсия, т.к алгоритм работы интерфейса совсем другой, т.е просто процессор отладчика программируется по-другому при смене режимов. Соотвествено SWD c развязкой не работает. От же ж, а прочитать внимательно то, что я написал? Может несколько раз  Я указал с чем это работает, и я в курсе, что JTAG и SWD это разные вещи, но вот связи с тем, почему оно работать не должно не вижу. Используется три линии JTAGa, в штатном режиме, а чем они управляются это уже другой вопрос (у меня оно работает с OpenOCD/FT2232D). Подключите Вашу опторазвязку к указанному мной варианту и все заработает, вот так: gdb<->OpenOCD<->USB<->FT2232D<->JTAG<->развязка<->JTAG<->схема с резистором<->SWD Надеюсь теперь понятно (в этом варианте двухнаправленная развязка НЕ НУЖНА - только в одну сторону)? Если нет, то у меня закончились варианты как объяснить еще... P.S. Если Вас раздражает слово JTAG можете его заменить на что угодно, т.к. в данном случае это просто набор сигналов  .
Сообщение отредактировал Шаманъ - May 7 2016, 12:11
|
|
|
|
|
May 7 2016, 12:40
|
Гуру
     
Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741

|
Цитата(Шаманъ @ May 7 2016, 14:09)  Подключите Вашу опторазвязку к указанному мной варианту и все заработает, вот так: gdb<->OpenOCD<->USB<->FT2232D<->JTAG<->развязка<->JTAG<->схема с резистором<->SWD Да не работает оно так. Читаем для SWD http://infocenter.arm.com/help/index.jsp?t...b/BEHCBIJE.htmlКод Tos -5ns 5ns SWDIO Output skew to falling edge SWDCLK Tis 4ns - Input Setup time required between SWDIO and rising edge SWDCLK Tih 1ns - Input Hold time required between SWDIO and rising edge SWDCLK Вот эти времена и не выполняются из за задержек в оптике. В обычном JTAG http://infocenter.arm.com/help/index.jsp?t...h/Babfagff.htmlКод Tbsod - 6.0ns TDI and TMS valid from TCK (falling) Tbsis 15.0ns - TDO setup to TCK (rising) Tbsih 6.0ns - TDO hold from TCK (rising) ограничения по времени более мягкие и главное действуют только в одну сторону по времени, и их можно оботи с помощью adaptive clocking http://infocenter.arm.com/help/index.jsp?t...f/I1011184.htmlХотя это надо только для длинных световодов или медленных оптических преобразователей.
|
|
|
|
|
May 7 2016, 14:13
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(khach @ May 7 2016, 15:40)  Да не работает оно так. Вы пробовали? (Да/Нет)? Цитата Читаем для SWD http://infocenter.arm.com/help/index.jsp?t...b/BEHCBIJE.htmlКод Tos -5ns 5ns SWDIO Output skew to falling edge SWDCLK Это совсем не при делах, ибо задержки PROBE->TARGET на всех линиях одинаковые. Цитата Код Tis 4ns - Input Setup time required between SWDIO and rising edge SWDCLK Tih 1ns - Input Hold time required between SWDIO and rising edge SWDCLK Эти требования легко выполняются при снижении частоты SWDCLK. Нет там никаких проблем.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|