Vladimir Medintsev
Vladimir Medintsev
  • 305
  • 4 467 245

Відео

Преобразователь USB - RS232 - UART - RS485. Бюджетно и компактно.
Переглядів 4,8 тис.21 день тому
Преобразователь USB - RS232 - UART - RS485. Компактное и интересное решение с Aliexpress.
ГРИП микроскопа. Дополнение к ролику про распаковку.
Переглядів 1,7 тис.21 день тому
В комментариях к ролику про распаковку микроскопа задали вопрос про глубину резкости. Вот пояснение. Еще больше интересного в телеграмм канале. Канал в телеграмм - t.me/vladimir_medintsev Ролик с распаковкой смотрите тут - ua-cam.com/video/n-decTM6Rbw/v-deo.html
Распаковка. Шкурка змеи. Микроскоп и прочие мелочи.
Переглядів 2,3 тис.28 днів тому
Небольшой рассказ о мелких посылочках, считайте - обзор новинок купленных на АлиЭкспресс. Канал в телеграмм - t.me/vladimir_medintsev
Восстановление работоспособности / как восстановить экран DWIN / что делать если ошибся.
Переглядів 4 тис.Місяць тому
Бывают случаи, когда из-за ошибок конфигурации экраны DWIN превращаются в кирпич. В видео рассказано как восстановить работоспособность экрана при помощи программатора PGT05. Российский торговый представитель: Владимир Мединцев Whatsap 7-918-489-69-72 Telegram t.me/BaS_TeR Техническая поддержка: Владимир Радченко WhatsApp 7(953)859-27-46 Telegram t.me/Radchenko_VB radchenko_vb Канал в те...
Распознавание лиц / модуль HLK-FR1002 для распознавания и идентификации субьектов.
Переглядів 7 тис.Місяць тому
Рассказывается о модуле предназначенном для распознавания лиц и идентификации. Модуль от компании Hi-Link FR1002 Канал в телеграмм - t.me/vladimir_medintsev
Дисплейные модули для проектов Интернета вещей или при чем тут Tuya... #DWIN
Переглядів 3,4 тис.2 місяці тому
#dwin Видео рассказывает о дисплейных модулях производимых компанией DWIN для проектов Интернета вещей. Канал в телеграмм - t.me/vladimir_medintsev Официальный сайт www.dwin-global.com/ Российское представительство www.dwin-global.ru/
Корпуса. Или рассказ о том, как мы искали адекватного производителя и нашли шикарного партнера.
Переглядів 18 тис.2 місяці тому
Корпуса. Или рассказ о том, как мы искали адекватного производителя и нашли шикарного партнера.
BlueTooth модуль для мобильных устройств. Краткий обзор.
Переглядів 6 тис.3 місяці тому
BlueTooth модуль для мобильных устройств. Краткий обзор.
Что такое микроконтроллеры. Объяснение для начинающих.
Переглядів 9 тис.3 місяці тому
Что такое микроконтроллеры. Объяснение для начинающих.
Обзор датчиков присутствия человека от компании Hi-Link
Переглядів 4,1 тис.3 місяці тому
Обзор датчиков присутствия человека от компании Hi-Link
Цифровой датчик температуры для IoT и микроконтроллеров Digital-NTC (NST1001)
Переглядів 5 тис.4 місяці тому
Цифровой датчик температуры для IoT и микроконтроллеров Digital-NTC (NST1001)
Несколько слов о печках puhui или краткий обзор.
Переглядів 3,2 тис.5 місяців тому
Несколько слов о печках puhui или краткий обзор.
Покраска стека (области памяти) Keil uVision
Переглядів 3,9 тис.5 місяців тому
Покраска стека (области памяти) Keil uVision
Сборка на Neoden YY1. Впечатления и выводы после первой сотни плат.
Переглядів 6 тис.5 місяців тому
Сборка на Neoden YY1. Впечатления и выводы после первой сотни плат.
Просто и эффективно. Обучение. Основы микроконтроллеров.
Переглядів 8 тис.5 місяців тому
Просто и эффективно. Обучение. Основы микроконтроллеров.
Расстановка из россыпи компонентов. Neoden YY1.
Переглядів 4,8 тис.6 місяців тому
Расстановка из россыпи компонентов. Neoden YY1.
Новые станочки. От распаковки до первой расстанови. Краткий обзор.
Переглядів 4,5 тис.6 місяців тому
Новые станочки. От распаковки до первой расстанови. Краткий обзор.
Модуль E70-900T14S / Обзор и результаты теста.
Переглядів 4,9 тис.8 місяців тому
Модуль E70-900T14S / Обзор и результаты теста.
Пример кода или структура проекта для отладочной платы HRTIM334
Переглядів 5 тис.8 місяців тому
Пример кода или структура проекта для отладочной платы HRTIM334
Силовые отладочные платы. Обзор и собственное решение.
Переглядів 5 тис.8 місяців тому
Силовые отладочные платы. Обзор и собственное решение.
SigmaDSP ADAU1701. Разбираем работу с портами ввода-вывода.
Переглядів 5 тис.10 місяців тому
SigmaDSP ADAU1701. Разбираем работу с портами ввода-вывода.
SigmaDSP Processor. С чего начать? Быстрый старт и первый проект.
Переглядів 18 тис.10 місяців тому
SigmaDSP Processor. С чего начать? Быстрый старт и первый проект.
Модуль Crowtail-4G SIM A7670E от elecrow.com
Переглядів 4,1 тис.11 місяців тому
Модуль Crowtail-4G SIM A7670E от elecrow.com
Печь П**УЙ T-962. Краткий отзыв и нужно ли ее модифицировать.
Переглядів 4,7 тис.11 місяців тому
Печь П УЙ T-962. Краткий отзыв и нужно ли ее модифицировать.
Книга "FreeRTOS. Операционные системы микроконтроллеров". Как и где купить. Планы на будущее.
Переглядів 10 тис.11 місяців тому
Книга "FreeRTOS. Операционные системы микроконтроллеров". Как и где купить. Планы на будущее.
Заделка наконечников НШВИ. Заделка проводов и клемм.
Переглядів 5 тис.Рік тому
Заделка наконечников НШВИ. Заделка проводов и клемм.
Как мы груз из Китая доставляли. Небольшая распаковка.
Переглядів 4,1 тис.Рік тому
Как мы груз из Китая доставляли. Небольшая распаковка.
Особенности вывода NRST микроконтроллеров.
Переглядів 7 тис.Рік тому
Особенности вывода NRST микроконтроллеров.
Впечатление о выставке ExpoElectronica 2023.
Переглядів 7 тис.Рік тому
Впечатление о выставке ExpoElectronica 2023.

КОМЕНТАРІ

  • @dyomin87
    @dyomin87 8 годин тому

    Здесь есть 2 минуса: 1. Когда определённый иф нужно снабдить элсом - такая возможность уже теряется. 2. Когда окажемся за пределами секции ду-вайл, мы не узнаем, по какому мы там оказались: по хорошему или по плохому. Пожалуй гото с меткой в конце и фалсом - оптимальный вариант.

  • @larklarklark
    @larklarklark 13 годин тому

    Ох как жалко дроселя😊

  • @user-qm5oq5ku2v
    @user-qm5oq5ku2v 13 годин тому

    В результате появился неоден ))

  • @user-yp7zs1ev7w
    @user-yp7zs1ev7w 13 годин тому

    Стопудово работает и проработает лет 50 если его подключить

  • @user-if2dy7qx9g
    @user-if2dy7qx9g 14 годин тому

    Ардуино - это инструмент для каждого. Инструменты бывают разные. С разными достоинствами и недостатками. Во многом результат применения того или другого инструмента зависит от кривизны рук кодера и места их произрастания. В Ардуино есть библиотеки разного качества. Нужно уметь выбрать из многих одну хорошую. Для этого нужны знания и опыт. Совсем не факт, что говнокодеры (гордо именующими себя "профи") напишут лучше. (Из личных наблюдений. В электронике 50 лет, в программировании - 40). С Ардуино знаком, но проекты на Ардуино не делаю, иногда использую библиотеки для ESP32 от Espressif.

  • @user-kz4pf2uz1n
    @user-kz4pf2uz1n 17 годин тому

    Не понятно почему просто не вынести в функцию гарантированной отправки с if(...) return; Компилятор вероятнее всего ее заинлайнит даже без пинка... вместо do while

  • @warez1230
    @warez1230 17 годин тому

    брейк плохой

  • @sergeyfedorovich6685
    @sergeyfedorovich6685 День тому

    лет 20 назад, если не больше начинал с PIC

  • @SevenNightdreemVeryPavlovny
    @SevenNightdreemVeryPavlovny День тому

    Я пишу вызов глобального error_handler со своим кодом вызова. Это здорово помогает при отладке , сразу видно что отвалилось в переферии (имеется ввиду конечно же внешняя)

  • @user-ru1vo9pg4r
    @user-ru1vo9pg4r День тому

    Эта "древность ещё 100 лет отработает.

  • @dpochechuev
    @dpochechuev День тому

    Спасибо за информацию. Пример с SPI не очень показателен. Смотрел как в разных библиотеках сделан например I2C везде поголовно ждутся флаги без всякого таймаута. В основном все ЭТО работает, но зависы случаются. Не все микроконтроллеры имеют такую библиотеку HAL. Писал программу для контроллера gd32f130c8. Обмен по I2C писал сам. Заморочился с отработкой ошибок и таймаутами. Вчера сравнил свой код и получилось практически 1 в 1 как в HAL STM. Еще про вопрос нужно понимать как передавать ошибки по уровням абстракции в программе. На верхнем уровне даем команду сохранить настройки прибора в энергонезависимой. Программа должна анализировать статус, что произошло. И на каком этапе это можно исправить. Например не совпадает контрольная сумма после записи. На уровне записи блока можно попробовать записать еще раз или выбрать другую страницу. Если сработает сторожевая собака нам сложно разобрать, что случилось с системой. Что касаемо spi hal катастрофично режет производительность своими проверками. при тактовой частоте spi в 18-36 Мhz и тут даже готовность проверять не нужно(на это тратится много времени). И даже вызов функции передачи байта занимает намного больше времени. Лучше в одной функции в цикле пихать данные в SPI. Но если снизить частоту до 1-2-4Мhz все работать перестанет. Часто работа дисплея по spi c hal очень медленна. И проверки неоправданны. Переход на регистры ускоряет отрисовку в 2-4 раза. А это очень заметно пользователю. Спасибо, что вы показываете проблемы с разных сторон и предлагаете способы решения.

  • @pgrusha
    @pgrusha День тому

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

    • @VladimirMedintsev
      @VladimirMedintsev День тому

      Реальная разница видна когда пишешь реальный код. Три уровня показанные как пример это не более чем иллюстрация.

    • @pgrusha
      @pgrusha День тому

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

  • @user-eo8uv9yl2p
    @user-eo8uv9yl2p День тому

    Глючный зараза этот hal . Кроме библиотеки usb старался не пользовать.

  • @fizarum
    @fizarum 2 дні тому

    @VladimirMedintsev насчёт кода libopencm3, выше нарисано: "@brief SPI Data Write with Blocking": тоесть указано, что функция блокирующая и программист использующий этот метод должен сам позаботиться о таймауте, может она вообще будет работать в отдельном потоке. Скорее всего это было сделан так, чтобы миниизировать кодовую базу и не брать на себя всякие крайние случаи. Предположу, что расчёт был та какой-нить RTOS

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      @@fizarum Это не метод, а функция. Потоки и Cortex M3? Как программист может заботиться о таймауте, если в функции бесконечный цикл? Если предполагалось что это сделает программист то цикл там не нужен.

    • @fizarum
      @fizarum День тому

      ​@@VladimirMedintsevнаписал в телеграмме, тут Ютуб блочит мои сообщения

  • @sergatmel8242
    @sergatmel8242 2 дні тому

    Спасибо ! Полезная информация.

  • @JingoBo
    @JingoBo 2 дні тому

    По поводу таймаутов и отказа периферии. Сразу выкину за скобки случай с отказом тактирования периферии, будем считать, что источник условно надёжный. Тут всё не так однозначно, периферию нужно делить на ту, которой можно доверять и на ту, которая может отказать из-за внешних факторов. Например spi, который в режиме мастера и тактируется например от внутреннего RC. Нет ни одной причины по которой мы отправили байт и не дождались завершения передачи. Ну вот ни одной. Это пример периферии при работе с которой нет смысла переусложнять код с таймаутами. Приведу второй пример i2c в режиме мастера. В зависимости от внешних факторов (может вообще eeprom не запаян или линии в нуле) мы можем передать с стартовый байт и не дождаться передачи потому что линия занята. Это пример с периферией с которой надо аккуратно. Или запуск кварца и ожидание стабилизации, понятное дело что он может не запуститься, заметьте - опять же это внешний фактор. Теперь расскажу что в принципе таймауты (без ос) моветон так как это забивает обработку главного цикла, такие вещи нужно реализовывать на прерываниях/опросах с использованием автоматов. Понятное дело, что это сильно усложняет код, и поэтому нужно несколько раз подумать, имеется ли внешнее влияние на используемую периферию и нет ли каких то приколов в эрате. Если проблем нет - лучше таймауты не использовать, это самообман в безопасности и не обусловленое усложнение.

  • @JingoBo
    @JingoBo 2 дні тому

    Я когда то писал так же чтобы избавиться от вложенности, но благодаря тому что пишу активно и на ЯП высокого уровня, ну например с#, я понабрал от туда множество правил и приёмов. Один из таких - как можно быстрее выходить из функций. Например инверсия условий и по условию return. Такой приём позволяет писать более читабельный код, вложенность сводится к минимуму. В общем код из трёх строчек который у вас в итоге получился (с break) можно вынести в небольшую static функцию, вместо break - return. Это избавляет от костыльной записи while (0). Можно не заботиться о доп расходах на вызов, компилятор с удовольствием инлайнит такие функции без каких либо прагм.

  • @viv3000
    @viv3000 2 дні тому

    а решение с циклом не лучше сделать так: if (is1 || is2 || is3) { что то }

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      Нет, не лучше.

    • @viv3000
      @viv3000 2 дні тому

      Можете объяснить почему?

    • @viv3000
      @viv3000 2 дні тому

      И я там ошибся не или а и

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      А потому, что обращение к периферии должно происходить последовательно. Операция за операцией. Предложенная вами схема содержит ряд недостатков. Нет гарантии чёткой последовательности выполнения, очень плохая читаемость. Нет возможности прервать выполнение других условий если первое условие ложное. Это не подходит для работы с периферией.

    • @viv3000
      @viv3000 2 дні тому

      @@VladimirMedintsev понял, спасибо за разъяснения, недавно начал заниматься периферией

  • @danilmurashkin5145
    @danilmurashkin5145 2 дні тому

    Инженеры продумывают систему прерываний делают отдельные шины для DMA. Но будем ставить while без tryout. Уххх говнина, впрочем и HAL тоже шлапя, когда дохрена всего и АЛУ рабоатет на симантику HAL. (HAL_LL это другое это уже годнота).

  • @danilmurashkin5145
    @danilmurashkin5145 2 дні тому

    Если нужна абстракция для одиночного действия в функции, можно использовать __STATIC_INLINE

  • @DIY_PLC
    @DIY_PLC 2 дні тому

    ещё.)

  • @Drex_Andrey
    @Drex_Andrey 2 дні тому

    Первая часть видео - очень красивое решение, спасибо! Ну а вторая часть - это да, само собой. Периферия она такая.

  • @chegleeff
    @chegleeff 2 дні тому

    Юзаю FreeRTOS для ESP8266/ESP32, там применение do/while c брейком в проверках это обычное явление. И даже goto label; . Я думал, так все нормальные люди делают.

  • @ArtemKAD1
    @ArtemKAD1 2 дні тому

    Главное правило программиста - никогда не делайте так, как сделано в HAL. Единственное достоинство этой библиотеки в том что она есть. Все остальное - недостатки.

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      @@ArtemKAD1 Разумеется пояснить что именно там не так вы не сможете.

    • @ArtemKAD1
      @ArtemKAD1 2 дні тому

      @@VladimirMedintsev Почему-же, к примеру в этом примере безусловная переиннициализация всего SPI-модуля с последующим таймаутом ожидания обязательно возникающего бита это тупая потеря времени в каждом цикле отправки. Причем если произойдет невероятное событие и таки бит повиснет, то весь контроллер все равно придется пересбросить для прохождение через аппаратный Reset, что в целом эквивалентно сбросу через WDT на вечном цикле. Аналогично с отправкой через ожидание вместо отправки в прерывании/DMA это тоже та часть которая уже должна заставить задуматься что где-то что-то не так.

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      Ну я не увидел там безусловной переинициализации всего модуля. Но то ладно, спорить не буду, вы правы. Лучше бесконечный цикл. Согласен. Просто устал от бесконечных споров с любителями писать "на регистрах". Мне так даже выгоднее. Перевожу очередной проект с регистров на HAL по простой причине, не работает и прочитать задуманное никто не может. Вот и переписываем.

    • @ArtemKAD1
      @ArtemKAD1 2 дні тому

      @@VladimirMedintsev Причем тут "на регистрах"? В HAL работа точно так-же на тех-же регистрах. Только он не имеет отправки 1 символа заставляя каждый символ передавать как единичную строку с настройкой всех параметров передачи в начале каждого символа или выделять временную буферную память под всю передаваемую строку. К примеру, тупой пример чтения куска из spi-flash выглядит так: /// Read flash memory void spiflashRead(U32 addr, U32 nbytes, U8 *data) { start_transmit(); TransmitByteSPI(SPIFLASH_CMD_READ); // Read TransmitByteSPI((U8)(addr>>16)); // Адрес страницы... TransmitByteSPI((U8)(addr>>8)); TransmitByteSPI((U8)(addr)); while(nbytes--) { *data++ = TransmitByteSPI(0); } stop_transmit(); } А теперь прикиньте чего из этого сделает HAL...

    • @ArtemKAD1
      @ArtemKAD1 День тому

      @@VladimirMedintsev Ну вот давайте переведем с "регистров на HAL" обычное чтение из SPI-flash. void spiflashRead(U32 addr, U32 nbytes, U8 *data) { start_transmit(); TransmitByteSPI(SPIFLASH_CMD_READ); TransmitByteSPI((U8)(addr>>16)); TransmitByteSPI((U8)(addr>>8)); TransmitByteSPI((U8)(addr)); while(nbytes--) *data++ = TransmitByteSPI(0); stop_transmit(); } Только оперативку не надо разбазаривать - не резиновая.

  • @pistoletov1974
    @pistoletov1974 2 дні тому

    Владимир, спасибо за видео, но позвольте с вами не согласиться по поводу SPI. Если этот флаг не поднимется то это говорит только об одном - внутренней проблеме камня. Ведь SPI это просто сдвиговый регистр. Флаг поднимается грубо говоря после определенного числи тактов. Если бы это был I2c то так делать преступно. Так как требуется ответ от устройства ACK. В SPI ну улетят данные в воздух и все...Что SPI что U(s)ART с точки зрения передачи не требуют подтверждения.

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      Ну видео же не про SPI. Ну посмотрите как написаны в той же библиотеке функции работы с USART. Там та же картина. Видео немного о другом.

  • @aycon2488
    @aycon2488 2 дні тому

    Я бы использовал декоратор, если нет ооп. А если есть ооп использовал бы паттерн инициализация как объект

  • @michel-7791
    @michel-7791 2 дні тому

    Я например, использую конструкцию switch, строю на ней конечный автомат, завожу переменную состояние, и уже по значению этой переменной можно спокойно мониторить в каком стояния находится твой автомат. Как по мне намного читабельнее. Но вариант do/while, тоже возьму на заметку

  • @vernnms78
    @vernnms78 2 дні тому

    Спасибо за идею! Теперь буду зацикливать функцию обработки ошибок, которая за проход будет вылетать на первом сбое. Делал нечто подобное уже, но в другой реализации. Теперь просто вызывать циклично до тех пор, пока устранится ошибка, либо таймер не сработает.

  • @slonbeskonechen8310
    @slonbeskonechen8310 2 дні тому

    нууу... while до срабатывания watchdog не самое страшное, что бывает..... некоторые весёлые индусы перазагружают watchdog в прерывании от RTC и перезагружают его на 1,9сек, и вот тогда while становится вечным.....

  • @andrewandroid8785
    @andrewandroid8785 2 дні тому

    Для избавления от вложенных if-ов использую такой подход: auto ok=Init(); if(ok) ok=Transmit(); if(ok) ok=Recieve(); Иногда бывает, что статусная переменная (ок) не подходит, например если функции возвращают разные типы. В таком случае создаем булеву переменную, которой присваиваем "успешность", вот так: bool ok = (Init()==...); if(ok) ok = (Transmit()==...); if(ok) ok = (Recieve()==...); ... Буду рад, если помог!

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      Эта конструкция не избавляет нас от выполнения if которые по причине ранее найденной ошибки можно уже не выполнять. Так что...

    • @andrewandroid8785
      @andrewandroid8785 2 дні тому

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

    • @andrewandroid8785
      @andrewandroid8785 2 дні тому

      ​@@VladimirMedintsev Сейчас проверил подобный код для десктопного компилятора (visual studio 2022, ver.17.7.3). Как я и предполагал, после первого же "сбоя" проверка остальных if-ов не производится. Т.е. никаких дополнительных расходов нет. К сожалению, не знаю, как сгенерировать ассемблерный код для МК-компилятора, поэтому проверить не могу. Если сможете проверить - буду признателен.

    • @alexandrdeveloper1242
      @alexandrdeveloper1242 2 дні тому

      Если компилятор "не вывозит", всегда можно писать так: ок = ок && (...) Логическое " И" гарантировано будет оптимизировано даже в самых простых компилятора, т к это очевидно. Впрочем и в случае if оптимизация очевидная.

  • @alexorlovecky6662
    @alexorlovecky6662 2 дні тому

    На мой взгляд всё верно, но с одним НО. Не знаю как у вас, но в моих проектах очень часто, главный функционал завязан на переферию. Причём если эта переферия отказывает, то продолжение "работы" всего устройства теряет смысл. И зачастую нет никакого резона отслеживать все эти возможные проблеммы, так как по любому выход один: прекращение работы + перезагрузка + лог/оповещение пользователю. И вот в таких задачах лично у меня нет никаких "лишних" проверок, но всегда есть сторожевой таймер. Вот личный пример недельной давности, делал сушильную камеру для пластика. Главный сенсор меряет температуру и влажность (не помню точную маркировку). Главная задача ПИД, второстепенная экранчик. И вот этот сенсор любит зависать собака. Ну вот скажите, какой смысл отслеживать всю эту скатерть проверок? Он завис, всё... Но тут есть вторая сторона медали: мы "самодельщики", натягивать супер пупер сложный алгоритм в МК за 1 рубль не нужно. Зачастую, если не хватает процессорного времени, то нужно просто менять МК на чуть более быстрый.

  • @DrOlegLebedev
    @DrOlegLebedev 2 дні тому

    Думаю, по стилистике кода break из фиктианого цикла примерно тож самое, что и goto. Тут надо просто решить для себя, что ты готов осознанно разрушить "школьные догматы стиля ради реально читабельного кода.

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      @@DrOlegLebedev Да, про goto абсолютно верно. Но для некоторых этот оператор как красная тряпка и люди считают, что его необходимо избегать. Хотя и реальных причин объяснить не могут.

    • @DrOlegLebedev
      @DrOlegLebedev 2 дні тому

      Если представить код с кучей проверок в виде графа, то конструкция goto error очевидно является оптимизицией этого графа.

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      @@DrOlegLebedev Согласен. Программисты делятся на две группы. Те, кто использует goto и те, кто стесняется а этом признаться. Согласен. Это решение

  • @user-mirek777
    @user-mirek777 2 дні тому

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

  • @user-ul5ds9uv8u
    @user-ul5ds9uv8u 2 дні тому

    Я бы назвал это лайфхаком, который позволяет избегать вложенных условий. Раньше я достаточно часто использовал эту конструкцию, но в итоге от нее отказался. Уверен, что вы также наиграетесь с ней и просто начнёте писать код по-другому, избегая при этом и вложенных условий, и длинных условий в конструкции if, и вот этих вот "фейковых" циклов.

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      О, интересно, расскажите пожалуйста, как вы обошли необходимость вложенных условий?

    • @johnkoffee
      @johnkoffee 2 дні тому

      а каким образом вы теперь избегаете кучу вложенных условий?

    • @user-ul5ds9uv8u
      @user-ul5ds9uv8u 2 дні тому

      @@VladimirMedintsev вы накидываете в тело цикла условия. Если хоть одно не сработает - вышли из этого цикла, и далее функция вернула какой-то результат. Это очень удобно. Но со временем я стал замечать, что эта конструкция слишком часто стала встречаться в коде. Для кого-то она совершенно не очевидная. Возьмёт мой код какой-нибудь студент, и везде эти циклы. Мне и самому стало не по себе от этих фейковых циклов. По итогу оказалось, что в большинстве случаев они просто не нужны, т.к. из такого цикла все эти условия перетаскиваются в тело функции, в которой был этот цикл, и все работает аналогичным образом: одно из условий не сработало - вышел из функции с кодом ошибки или без него. И цикл этот уже и не нужен. Так же можно написать длинный if...else if...else... так, чтобы не вкладывать дополнительные условия. Логика та же самая. Сначала взвели ret в ошибку, а потом побежали по if...else if... else. И все эти условия от обратного, т.е. никогда все хорошо и можно что-то делать, а когда одно из условий не выполняется и нужно прекратить все это безобразие. Лайфхак с циклом встречается очень редко, я практически никогда его нигде и не видел.

    • @user-ul5ds9uv8u
      @user-ul5ds9uv8u 2 дні тому

      @@VladimirMedintsev аналогичным образом, но без циклов. Здесь ключевая вещь - это условное ветвление, в котором проверки выполняются "от обратного". Предположим, вы создаёте функцию и помещаете в нее такой цикл с набором условий. Зачастую, если приглядеться, то в этом цикле нет никакой необходимости, т.к. этот набор условий может находиться в теле самой функции. Если одна из последовательных проверок не проходит, происходит выход из функции (с кодом ошибки или без в зависимости от логики программы).

  • @oabdn8282
    @oabdn8282 2 дні тому

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

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      Функция это также дополнительные "расходы" в виде стека. Цикл, это всего лишь конструкция языка. Он не может быть странным и если вы не способны признать что эта конструкция выглядит изящнее и легче читается, то ваши лучшие годы в программировании уже позади.

    • @oabdn8282
      @oabdn8282 2 дні тому

      @@VladimirMedintsev я, честно скажу, не являюсь профессиональным разработчиком для микроконтроллеров, однако являюсь профессиональным разработчиком «больших железок». Когда-то на заре развития ПК, когда ресурсов «железа» не хватало, то и мои профессиональные предки тоже экономили на таких мелочах. Время шло, железо становилось мощнее и дешевле, а программы сложнее и дороже. На сегодняшний день в первую очередь в мире «больших железок» важна модульность кода, его расширяемость, возможность адаптировать под меняющиеся требования. Хоть я и новичок в мире «маленьких железок» но мне почему-то кажется, что уже и здесь проблема нехватки ресурсов не так остро стоит, чтобы вкладываться в низкоуровневую оптимизацию с первых строк кода в ущерб структуре кода. Тем более что язык с/с++ сам по себе довольно опасный инструмент, так как человеческий фактор в ошибках довольно высок по сравнению с более современными языками, то как раз структура кода могла бы позволить снизить количество ошибок на этапе разработки и как следствие ускорить доставку проекта до заказчика. Могу ошибаться, но чувство что малые «железки» повторяют в значительной степени путь больших меня не покидает. Возможно, через пяток лет и с++ будет вытеснен какими-то новыми яп или даже уже существующими

  • @ievgenchesnokov1070
    @ievgenchesnokov1070 2 дні тому

    SPI - не устройство, а интерфейс.🙃

    • @VladimirMedintsev
      @VladimirMedintsev 2 дні тому

      Так себе причина зацепиться.

    • @ievgenchesnokov1070
      @ievgenchesnokov1070 2 дні тому

      @@VladimirMedintsev Тщательнее надо, тщательнее..🙂

    • @johnkoffee
      @johnkoffee 2 дні тому

      пойду открою форточку😁

    • @poludenny
      @poludenny 2 дні тому

      Мимо тёщиного дома я без шуток не пройду

  • @ievgenchesnokov1070
    @ievgenchesnokov1070 2 дні тому

    Обработка ошибок - самая сложная тема. В бывшем СССР как-то собрали всесоюзный съезд наладчиков, но и он не смог "придти к общему знаменателю".😕

    • @chegleeff
      @chegleeff 2 дні тому

      В итоге, в 1991 году случился break 😁

    • @AK-ji3qv
      @AK-ji3qv День тому

      ​@@chegleeff abnormal program termination 😂

  • @hanter6441
    @hanter6441 3 дні тому

    👍эхо мощной цевилизациии!

  • @user-pq1om3nk3l
    @user-pq1om3nk3l 4 дні тому

    Судя по дате меньше 30-ти лет

  • @maharian8706
    @maharian8706 5 днів тому

    Ну так а это стране даже гвоздей своих не делают

    • @VladimirMedintsev
      @VladimirMedintsev 5 днів тому

      Вранье, в этой стране есть достаточно много фабрик делающих гвозди. Лгать плохо.

  • @ArtemKAD1
    @ArtemKAD1 5 днів тому

    Зачем искать ключ если у вас есть контрольная сумма? Сразу проверяйте целостность и если содержимое развалено восстанавливайте заводские значения.

  • @user-ic8ne5is9e
    @user-ic8ne5is9e 5 днів тому

    Подскажите, описание на английском сами переводили или наши китайские друзья подготовили английскую версию?

    • @VladimirMedintsev
      @VladimirMedintsev 5 днів тому

      Китайцы дали английскую документацию.

    • @user-ic8ne5is9e
      @user-ic8ne5is9e 5 днів тому

      @@VladimirMedintsev Понял. Надо бы у них тоже попросить.

  • @erlcuba9960
    @erlcuba9960 5 днів тому

    А все таки, может что-то посоветуете? Вы же смогли им воспользоваться? Или это большой секрет? Если был резок, прошу прощения.

  • @aleksejbond172
    @aleksejbond172 7 днів тому

    А всё это время американский космический аппарат Вояджер летит в космосе и до сих пор работает.

  • @savelylive
    @savelylive 8 днів тому

    Нет моделек держателей сменных сопел? ЗЫ нашел у Эдуарда, отбой )

  • @TheAgressor13
    @TheAgressor13 10 днів тому

    Спасибо

  • @incxxxx
    @incxxxx 10 днів тому

    Instead of a long talk that is of little use, you should write and show a specific program that could run DFU and that would be great.

  • @Toking2024
    @Toking2024 10 днів тому

    У радиолюбителей рф и не такие наворованные из мусорников СССР штучки лежат!😂😂😂 Причём чем старее, тем выше ценятся!!!😂😂😂 И называется у них весь этот хлам - ВИНТАЖ😂😂😂😂😂😂

  • @sweden043
    @sweden043 12 днів тому

    реклама aliexpress, ничего дельного, на практике такай лабуда не нужна, или будет использоваться на 1% от возможностей. главное знать теорию и определятся по месту, для чего и зачем, а остальное уже ручками делается.

  • @user-nn4lh4wn9q
    @user-nn4lh4wn9q 12 днів тому

    Друг мой не продаш их?

    • @VladimirMedintsev
      @VladimirMedintsev 12 днів тому

      К сожалению уже все в устройствах. Мы их не в музей покупали.