Свежие обсуждения
Проектирование и моделирование

Кто как расчитывает надёжность проектируемой программы для микроконтроллера?

1 4 6

Тут тема заряжена важная, и бесконечная...
Ну, например, контроль внутренним таймером времени отработки каждой ветви программы...
Например, контроль после входа в прерывание (по адресу возврата в стеке) того, в какой ветви случилось прерывание..т.е. допустимо-ли было в то время там находиться.....
Например, контроль последовательности выполнения, через предусмотренный список флагов/результатов успешно выполненных процедур.....
Например, чем чаще контроллер будет начинать работу с перезапуска (с чистого листа.. , тем лучше.К сожалению, это легко реализуется только в простых задачках..

Каждый тут ваяет по своему разумению и опыту. Основная сложность в том, что, как правило, эти приемы необходимо реализовывать при жестком ограничении ресурсов выбранного контроллера.
Описывать приемы никакого времени не хватит...писать конкретности об этом не любят, поэтому не сложился общепринятый стандарт, у каждого свои приемы и, (полная анархия!!) СВОЯ ТЕРМИНОЛОГИЯ, поэтому обьяснять очень долго и хлопотно....

 

Влезу с суконным рылом в калашный ряд, т.к. не программист
Конкретная ситуация: навороченные электронные часы с коррекцией по GPS, DCF, с выходом на вторичные стрелочные часы, выпускаются серийно. Пошли отказы - при вкл. дрели и пр. в соседнюю розетку часики сбрасываются в нули и идут с нулей дальше. Да, потом они спутник словят, синхронизируются, восстановят время и всё ОК. Ну и как тут можно программными методами победить сбой? ИМХО никак...

 

NPI: Ну и как тут можно программными методами победить сбой? ИМХО никак...
Тут программно никак. Причина на поверхности-пролезание помехи от питающей сети. С ней и надо бороться.

 

Vlad_Petr: Причина на поверхности-пролезание помехи от питающей сети.
Если бы было так просто Помеха была по эфиру!

 

а некоторые родились 18 фев и хотят зачем-то иметь за месяц эту тысячу сообщений.
Проблемы решаются в рабочем порядке на работе, а не на базаре.У всех условия разные.

 

Дон Амброзио: Делаю..Это называется "контроль временной логики".
Дон Амброзио: Делаю. Это называется "контроль запланированности прерываний".
Дон Амброзио: Делаю. Это называется "контроль завершённости транзакций"
И если все это минимизировано по потребным ресурсам, уже можно пойти попить пивка, а затем прийти и внимательно проверить оставшееся: т.е. топологию платы, необходимость/достаточность экранировки, способы подключения внешних сигнальных цепей и цепей питания...все это c учетом электромагнитной обстановки в месте будущей жизни девайса...

 

потом приходит "некто"(тоже из пяти букв) и подаёт контроллеру вместо нормального сигнала все 220 В....и самая отличная программа становится смешной и мёртвой( только в Пт такое сотворили нам )......

 

Crot2: контроллеру вместо нормального сигнала все 220 В А мы этого парня ожидаем с оптопарой на входе.. Меняем оптопару..составляем акт, ищем этого Буратино...далее по принятой в тех кругах схеме..

 

Дон Амброзио: Существуют основанные на теории и подкреплённые практикой принципы разработки программы, которые позволяют с некоторой долей вероятности успеха отслеживать правильность работы программы. Все равно не понимаю как это работает. Например: команда "goto" модифицирует счетчик команд, если в этот момент происходит его сбой, и мы улетаем в неизвестность, как мы узнаем, где мы? И самое главное, куда нам вернуться для корректного продолжения программы? У Вас есть пример реализации данной функции, или конкретный алгоритм, можно посмотреть, если не военн. тайна, конечно?
Дон Амброзио: Странный Вы какой-то Возможно

 

AlexAlcoa: Например: команда "goto" модифицирует счетчик команд, если в этот момент... если не военн. тайна, конечно? Военная тайна состоит в использовании ассемблера. Ибо, в случае С или других языков выше assm, программа непрерывно ныряет в черные ящички операторов языка,а для учета всех нюансов реализации конкретного оператора надо устраивать его разбор по командам assm. Много проще сразу на assm все делать..
Master_153: Это весьма хитрый и профессиональный вопрос Все зависит от стиля программирования идеально подходит только ASM а в библиотеках С много ненадежных дырок