Jump to content

    

Watchdog и Supervisor

Здравствуйте

Возникла следующая задача.

Есть устройство, которое необходимо переводить в режим ожидания (фактически отключать все основные потребители - SoC, периферию, etc..)

 

1.) Когда устройство переходит в режим ожидания (by software).

Нужно разбудить устройство по толчку (на борту есть LSM9DS0), пока думаю прицепиться к CTRL_REG3_XM.

То есть физический толчок -> прерывание -> GPIO High -> контроллер или супервайзер -> загрузка SoC.

 

2.) В активном режиме работы, SoC должен по I2C / UART перепрограммировать таймер сброса(watchdog), каждые N секунд.

Если этого не происходит - считаем устройство зависшим и делаем аппаратный рестарт.

Было бы неплохо, сначала попробовать мягкий software рестарт (GPIO / I2C / whatever), подождать N секунд и рубануть уже EN или питание.

 

Я понимаю, что проблему можно решить выделенным микроконтроллером. Так же хотелось бы его шить по UART прямо с SoC.

Взываю к коллективному разуму, в поисках оптимального решения / микросхемы / возможных подводных камней.

 

P.S. Микроэлектроника, SMD, температура -40 ~ +125.

Edited by psyhologic

Share this post


Link to post
Share on other sites
Только что, psyhologic сказал:

Я понимаю, что проблему можно решить выделенным микроконтроллером.

Какую проблему?

Share this post


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

Какую проблему?

Обе. Использовать как watchdog, им же ловить interrupt от IMU и запускать загрузку SoC.

Share this post


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

Обе. Использовать как watchdog, им же ловить interrupt от IMU и запускать загрузку SoC.

Это не проблема. Это задача которую можно решать массой возможных способов начиная от микропроцессора до чего нибудь аналогового на россыпи операционников.
Проблема появляется там где наложенные ограничения не позволяют решить проблему имеющимися средствами.

Вот ограничений я пока не вижу. Не нравиться проц значит делать на жёсткой логике. Нужен меньше объём и не проц то CPLD какое нибудь. 

Т.е. где та проблема которую нужно решить???

Share this post


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

Это не проблема. Это задача которую можно решать массой возможных способов начиная от микропроцессора до чего нибудь аналогового на россыпи операционников.
Проблема появляется там где наложенные ограничения не позволяют решить проблему имеющимися средствами.

Вот ограничений я пока не вижу. Не нравиться проц значит делать на жёсткой логике. Нужен меньше объём и не проц то CPLD какое нибудь. 

Т.е. где та проблема которую нужно решить???

Разумеется, неразрешимой проблемы тут нет.

Раздел вроде называется «В помощь начинающему», а так как я не являюсь специалистом по микроконтроллерам, я изложил своё видение «проблемы» и возможные варианты решения.

То, что вам кажется очевидным, не всегда очевидно новичку.

 

1.)    Реализация пробуждения устройства из standby режима по сигналу IMU.

  • a.)   Программируем IMU на отклик по акселерометру
  • b.)  Сообщаем контроллеру, что устройство переходит в standby.
  • c.)   Контроллер следит за INT2_XM и когда видит там HIGH – открывает mosfet питания.
  • d.)  Контроллер переходит в standby режим
  • e.)  SoC загружается 

2.)    Реализация watchdog.

  • a.)  SoC загружается и переводит контроллер в режим watchdog
  • b.)  Каждые N секунд, SoC должен послать контроллеру keepalive (I2C/UART)
  • c.)  Если контроллер видит X пропусков keepalive сигналов – подаёт LOW на EN вход SoC
  • d.)  Контроллер переходит в standby режим

Давайте я переформулирую изложенное в вопросы:

  1.     Есть ли альтернатива контроллеру для этих 2 задач ?
  2.     Какой микроконтроллер лучше выбрать? Хочется программировать по UART, чтобы не заморачиваться с прошивкой на фабрике (лишний тех. процесс). Температурный режим -40 / +125
  3.     Задачу c watchdog наверняка можно решить готовым чипом, если да то каким ?
  4.     Задачу c standby наверняка можно решить готовым чипом, если да то каким ?
  5.     Возможно, кто то сталкивался с подобной задачей, если да - как вы её решали ?
  6.     Корректна ли вышеизложенная логика работы контроллера на ваш взгляд ?

Share this post


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

Это не проблема.

Это таки проблема, потому что у автора устройство, требующее аж сперва лишь "попробовать сбросить", а ежели не помогло, то и выключения питания, которое ведь тоже имеет право не помочь.

Share this post


Link to post
Share on other sites
Только что, Plain сказал:

Это таки проблема, потому что у автора устройство, требующее аж сперва лишь "попробовать сбросить", а ежели не помогло, то и выключения питания, которое ведь тоже имеет право не помочь.

Устройство которое это делает не является проблемой. Можно даже поднимать трупик не один раз :))) Но тогда придётся ставить свой процессор со своей логикой обработки.

Вот например https://www.analog.com/media/en/technical-documentation/data-sheets/ADM8316_8318_8319_8320_8321_8322.pdf
Решает все вопросы кроме двойного способа оживления.

Ещё тут https://www.digikey.com/products/en/integrated-circuits-ics/pmic-supervisors/691?FV=2dc09fb%2C3f0001b%2C3f002ce%2C3f002df%2Cffe002b3&quantity=1&ColumnSort=1000011&page=2&stock=1&k=watchdog&pageSize=25&pkeyword=watchdog

Если же есть задача всё же изощрённого оживления то любой проц с подходящим энергопотреблением и мелким корпусом.
Конкретика проца больше зависит от местности и удобство доставаемости, а так же знаний программера.

Процики тут: https://www.digikey.com/products/en/integrated-circuits-ics/embedded-microcontrollers/685?k=controller&k=&pkeyword=controller&sv=1&sf=0&FV=3f003fa%2C3f00420%2C3f00425%2C3f00446%2C3f0001b%2C3f002ce%2C3f002d5%2C3f002df%2C3f002e0%2C3f002e6%2C3f002e9%2C3f00376%2C3f00393%2C4880065%2C4880013%2C4880003%2C4880041%2C488005e%2Cii4|2208%2Cii5|2208%2Cii6|2208%2Cffe002ad&quantity=1&ColumnSort=1000011&page=1&stock=1&pageSize=25

 

Но вот на счёт программирования на лету watchdog таймера это нужно будет сильно подумать чтобы он не сбросил устройство во время перепрограммирования.

Share this post


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

Разумеется, неразрешимой проблемы тут нет.

Раздел вроде называется «В помощь начинающему», а так как я не являюсь специалистом по микроконтроллерам, я изложил своё видение «проблемы» и возможные варианты решения.

Ага. Только забыли задать вопросы :) ПО этому я и уточнял что из всего этого является проблемой.

Цитата
  1.     Есть ли альтернатива контроллеру для этих 2 задач ?
  2.     Какой микроконтроллер лучше выбрать? Хочется программировать по UART, чтобы не заморачиваться с прошивкой на фабрике (лишний тех. процесс). Температурный режим -40 / +125
  3.     Задачу c watchdog наверняка можно решить готовым чипом, если да то каким ?
  4.     Задачу c standby наверняка можно решить готовым чипом, если да то каким ?
  5.     Возможно, кто то сталкивался с подобной задачей, если да - как вы её решали ?
  6.     Корректна ли вышеизложенная логика работы контроллера на ваш взгляд ?

1. Если хитрым перезапуском который вначале мягкий потом питанием то скорее всего нет. Если отказаться от этого то чуть выше я кинул ссылки. Но процик может выйти дешевле. Либо делать на россыпи.

2. Ссылки кинул. Но перепрограммировать watchdog таймер на лету может оказаться не очень простой задачей.

3. Выше ссылки.

4. Тем же.

6. Логика вполне корректна на мой взгляд.

 

Share this post


Link to post
Share on other sites

ИМХО, в реализации Watchdog есть слабое место - "SoC загружается и переводит контроллер в режим watchdog". А если не загрузится?

По опыту могу сказать, что всякие готовые внешние WD создают проблемы при производстве, т.к. во время тестирования и загрузки

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

заметно дороже мелкого МК.

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

в результате ужал "хотелки" и обошелся парой транзисторов.

 

Share this post


Link to post
Share on other sites
1 час назад, Plain сказал:

которое ведь тоже имеет право не помочь.

Мудрая мысль... а если живы контроллер и модем, можно диагностировать проблемы с SoC. Надо думать.

Те чипы, что прислал MegaVolt похоже решат на сейчас все мои проблемы с головой.

 

2 часа назад, Plain сказал:

сперва лишь "попробовать сбросить"

FS sync / FS unmount / restart попробовать минимально выполнить.

Share this post


Link to post
Share on other sites
1 час назад, MegaVolt сказал:

Устройство которое это делает не является проблемой. Можно даже поднимать трупик не один раз :))) Но тогда придётся ставить свой процессор со своей логикой обработки.

Вот например https://www.analog.com/media/en/technical-documentation/data-sheets/ADM8316_8318_8319_8320_8321_8322.pdf
Решает все вопросы кроме двойного способа оживления.

Ещё тут https://www.digikey.com/products/en/integrated-circuits-ics/pmic-supervisors/691?FV=2dc09fb%2C3f0001b%2C3f002ce%2C3f002df%2Cffe002b3&quantity=1&ColumnSort=1000011&page=2&stock=1&k=watchdog&pageSize=25&pkeyword=watchdog

Если же есть задача всё же изощрённого оживления то любой проц с подходящим энергопотреблением и мелким корпусом.
Конкретика проца больше зависит от местности и удобство доставаемости, а так же знаний программера.

Процики тут: https://www.digikey.com/products/en/integrated-circuits-ics/embedded-microcontrollers/685?k=controller&k=&pkeyword=controller&sv=1&sf=0&FV=3f003fa%2C3f00420%2C3f00425%2C3f00446%2C3f0001b%2C3f002ce%2C3f002d5%2C3f002df%2C3f002e0%2C3f002e6%2C3f002e9%2C3f00376%2C3f00393%2C4880065%2C4880013%2C4880003%2C4880041%2C488005e%2Cii4|2208%2Cii5|2208%2Cii6|2208%2Cffe002ad&quantity=1&ColumnSort=1000011&page=1&stock=1&pageSize=25

 

Но вот на счёт программирования на лету watchdog таймера это нужно будет сильно подумать чтобы он не сбросил устройство во время перепрограммирования.

Спасибо огромное, думаю эти чипы решат мои проблемы !

А чем эти процики шьються на фабрике и дома поиграться ? они вроде не EEPROM.

 

Share this post


Link to post
Share on other sites
1 час назад, aaarrr сказал:

ИМХО, в реализации Watchdog есть слабое место - "SoC загружается и переводит контроллер в режим watchdog". А если не загрузится?

По опыту могу сказать, что всякие готовые внешние WD создают проблемы при производстве, т.к. во время тестирования и загрузки

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

заметно дороже мелкого МК.

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

в результате ужал "хотелки" и обошелся парой транзисторов.

 

Про производства / отладки да - проблемы с watchdog актуальны, подумаю как. На дев борде можно вместо мосфета  R0 перемычку бросить для отладки я думаю.

Боюсь транзисторами не обойдусь.

Share this post


Link to post
Share on other sites
2 часа назад, psyhologic сказал:

Спасибо огромное, думаю эти чипы решат мои проблемы !

А чем эти процики шьються на фабрике и дома поиграться ? они вроде не EEPROM.

Вроде бы в опциях я выбирал Flash чтобы были. Они разные по этому шьются по разному и нужно каждое семейство отдельно разбираться. Ну или кто подскажет.
А обычно они используют те же пользовательские ножки но для программирования. Это если ножек мало может быть проблемой для перепрошивке в схеме. 

Share this post


Link to post
Share on other sites

А подскажите что-то из недорогих контроллеров automotive класса с выделенным UART для перепрошивки (dev board) до 5$ ?

Для production ATtiny - "не в бровь, а в глаз", смотрю пока как их шить.

Share this post


Link to post
Share on other sites
20 часов назад, MegaVolt сказал:

Вроде бы в опциях я выбирал Flash чтобы были. Они разные по этому шьются по разному и нужно каждое семейство отдельно разбираться. Ну или кто подскажет.
А обычно они используют те же пользовательские ножки но для программирования. Это если ножек мало может быть проблемой для перепрошивке в схеме. 

Остановился на STM8, так как их банально намного проще шить. Ещё раз, спасибо вам большое за подсказку с ADM8316 !

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