Size: a a a

Maxwell's Demons

2021 October 23

KT

Kirill Trepakov in Maxwell's Demons
Полевик защитить бы от минуса на затворе после интегрирующей цепи.
источник

kaktys Германский... in Maxwell's Demons
Зачем? Ему пофиг
источник

Y

Yaroslav in Maxwell's Demons
А я специально взял NX138, они с встроенным esd супрессором. Просто не хотелось рисовать модель в ltspice, подобрал со схожими параметрами
источник

SA

Sergey Anisimov in Maxwell's Demons
В связи с недостатком времени и информации действительно остановился на таком варианте. Спасибо еще раз.
источник

GZ

Genadi Zawidowski in Maxwell's Demons
Напряжение питания той 5532 было в паспортном диапазоне? Некоторые её от 9 вольт питают и удивляются потом...
источник

KT

Kirill Trepakov in Maxwell's Demons
Не, там +/-12 всё в диапазоне.
источник

jp

jon pedro in Maxwell's Demons
Вы сейчас в ней и сидите так та
источник
2021 October 24

TK

Timur Khasanshin in Maxwell's Demons
Ващет это дифференцирующая, но ладно
источник

D

Dr Zlo in Maxwell's Demons
Кварцы
источник

IF

Imya Familiev in Maxwell's Demons
источник

TN

Timur Nabiulin in Maxwell's Demons
удар пониже пояса
источник

l

linxuil in Maxwell's Demons
Товарищи, кто как в си обрабатывает ошибки и проверяет их в коде?
Может есть на этот счёт шикарные книги, стандарты или видео или может ключевые слова какие то для поиска в интернете?

Если подробнее, в чем вой вопрос
Я вижу две разные темы

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

2) Как вы обрабатывает ошибку, если выявили ее?
Я в разных проектах видел много подходов
2.1) Стараться обрабатывать каждую ошибку и исправлять ее, делать анализ и если не возможно продолжить работу, выдавать подробную причину ошибки пользователю или в лог, но всеми силами стараться сохранить работоспособность программы, не выключая ее - поднимаясь по стеклу вверх до работающей части.
Этот вариант прямо скажем нереален для всех видов ошибок и безумно громоздок в плане описания в коде, плюс слишком много времени тратится на процессинг ошибок, вместо написания главной логики.

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

2.3) Вариант чуть загроможденнее предыдущего. Писать все функции так, чтобы возвращаемое значение в случае корректного процессинга функцией было 0 и далее возвращать код ошибки из функции выше. Например в мейн и там одной строкой макроса проверять на ноль значение и если оно не ноль, так же завершать программу и записывать лог.


ret_code = func();
CHECK_FOR_NULL(ret_code);


2.4) Делать короткий процессинг прямо с возвращаемым значением путем написания к каждому вызову функции, например в стандарте мисра написано, что любой if должен быть с else, поэтому пишем два условия


ret_code = func();
if(ret_code == 0)
{
 /* Do nothing */
}
else
{
 /* Short error processing*/
}
источник

A

Aleksandr in Maxwell's Demons
Наверное не все что вы перечислили есть ошибка. Есть например параметры, значение которых не допустимо, типа нулл указателя. Есть ошибка в коде. Есть допустимые значения, но код их не обрабатывает.
По значениям параметров обычно использую асерты. Они прекрасно описываются и в одном месте. Но это только ловушка.
Для более грубых так сказать обработок использую библиотеку cexception. Кто использует tdd библиотеку Cpputest, с ней знакомы.
Это сишный обработчик исключений try catch.
Таким образом функции возвращают результат логический. Типа скопировал int байт. Но не результат проверки параметров. Одним словом сделала своё дело функция или нет.
источник

A

Aleksandr in Maxwell's Demons
Архитектуру лучше строить так что есть функции ну супер тупые, а есть которые принимают решение.
И да, все параметры всегда проверяю. Практически всегда.
Особенно пришедшие извне
источник

A

Aleksandr in Maxwell's Demons
И пишите тесты) я не пишу строго по tdd. Т. е. Иногда сначала код, а потом тесты) Но порой код теста выявляет не мало нюансов)) ну и покрытие естественно делаю 100 с помощью coverage.
источник

A

Aleksandr in Maxwell's Demons
Почитайте про ассерты на хабре. Про использование исключений даже не знаю. Остальное архитектурные вопросы как обрабатывать и вести себя в случае ошибки.
источник

A

Aleksandr in Maxwell's Demons
Найдите красивую))) библиотеку код которой вам нравится и придерживайтесь её стиля. Я не устаю поражать я tcp стеку cyclonetcp от oryx embedded. Просто шикарна
источник

A

Aleksandr in Maxwell's Demons
Имхо ответы приходят с опытом, точнее формируются с опытом.
Удачи!
источник

IF

Imya Familiev in Maxwell's Demons
парни идите в соседний чат
источник

IF

Imya Familiev in Maxwell's Demons
источник