Как создавать библиотеки для микроконтроллеров. На реальном примере работы с магнитометром LIS3MDL.

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ก.ย. 2024
  • Видео для начинающих. Рассказывается о том, что создание своей собственной библиотеки для микроконтроллеров позволяющей работать со сторонними чипами и сенсорами является не сложным делом. В видео показаны основные моменты создания собственной библиотеки на примере работы с магнитометром LIS3MDL.
    Канал в телеграмм - t.me/vladimir_...
    Канал Яндекс.Дзен - zen.yandex.ru/...
    Канал на RuTube - rutube.ru/chan...
    Канал на TH-cam - / vladimirmedintsev
    ------------------------------------------
    Если вы хотите поддержать автора канала номер карты Сбер:
    2202-2023-2480-4008
    ------------------------------------------

ความคิดเห็น • 170

  • @vmlnn
    @vmlnn หลายเดือนก่อน +1

    Спасибо большое! Не всё понятно в мелочах, но общее представление имеется!!!

  • @danielfedorov7241
    @danielfedorov7241 ปีที่แล้ว +5

    Хорошо бы показать финалочку - создание из этого статической библиотеки. Честно говоря, ожидал именно этого

  • @ИгорьРубацкий-ч1о
    @ИгорьРубацкий-ч1о 4 ปีที่แล้ว +4

    Владимир, спасибо. Вы ,как всегда, на высоте.

  • @MegaTraxxas
    @MegaTraxxas 3 ปีที่แล้ว +4

    Очень актуальная тема для меня, спасибо!

  • @danilv.l.2501
    @danilv.l.2501 4 ปีที่แล้ว +2

    Владимир, спасибо. Важная и интересная тема.

  • @СергейТимошенко-о3ю
    @СергейТимошенко-о3ю 4 ปีที่แล้ว +4

    Лайк сразу, только за освещение темы.

  • @remontlive
    @remontlive 4 ปีที่แล้ว +1

    Здравствуйте, очень хотел как раз такое видео где вы подробно описываете создание библиотеки, я бы даже несколько таких видео с удовольствием посмотрел бы спасибо огромное!

  • @ДмитроПерший
    @ДмитроПерший 4 ปีที่แล้ว +5

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

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +1

      Да, безусловно это правильнее называть драйвером.

  • @leoned1797
    @leoned1797 4 ปีที่แล้ว +1

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

  • @AndySm1973
    @AndySm1973 3 ปีที่แล้ว +2

    Огромное спасибо!

  • @holor777
    @holor777 4 ปีที่แล้ว +1

    Владимир, спасибо! Очень полезная информация!

  • @finskiymaster
    @finskiymaster 4 ปีที่แล้ว +1

    Спасибо, как всегда - очень интересно и познавательно. Думаю, всем было бы интересно посмотреть на практическое сравнение этих библиотек. Например, инициализация и вывод в UART банального ”hello, world!". Сравнить по простоте и удобстве написания кода, занимаемому объему и скорости выполнения.

  • @kazimiralmazov2245
    @kazimiralmazov2245 4 ปีที่แล้ว +2

    Сразу лайк не глядя ролика. Знаю, что познавательно будет. Спасибо.

  • @sergeigranin7345
    @sergeigranin7345 4 ปีที่แล้ว

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

  • @prashkd7684
    @prashkd7684 4 ปีที่แล้ว +4

    Would you be able to add English Captions please? Just from watching the video i can tell this is a very well explained process on writing firmware for the sensor and would love to understand and follow the process

  • @Okaboka96
    @Okaboka96 4 ปีที่แล้ว +2

    Увидел ваше видео, поставил лайк

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +4

      Да прибудет с вами сила.

    • @redtex
      @redtex 4 ปีที่แล้ว

      @@VladimirMedintsev Аминь.

    • @sozdatelEd
      @sozdatelEd 4 ปีที่แล้ว

      @@VladimirMedintsev ДА БУДЕТ ТАК!!!

    • @олегспирин-р4р
      @олегспирин-р4р 4 ปีที่แล้ว

      Не поспешил ?

  • @ЮристЧастнойПракитки
    @ЮристЧастнойПракитки 4 ปีที่แล้ว +7

    Когда учат архитекторов им показывают работы лучших архитекторов мира, художники изучают картины лучших мастеров, музыканты великие произведения... И только программистам не повезло((

    • @olegpetroff6186
      @olegpetroff6186 4 ปีที่แล้ว +5

      абсолютно точно, при чем в микроконтроллерах нет программистов, там электронщики думающие, что они программисты!

    • @ВладимирМ-е6ь
      @ВладимирМ-е6ь 4 ปีที่แล้ว +2

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

    • @leharuso
      @leharuso 4 ปีที่แล้ว +8

      @@ВладимирМ-е6ь , они и правда лучше знают как писать код правильно. Но микроконтроллер об этом не знает. :)

    • @СергейТимошенко-о3ю
      @СергейТимошенко-о3ю 4 ปีที่แล้ว +1

      Каждый суслик агроном. Тем не менее лайк за попытку освещения этой темы. Кто знает как лучше с удовольствием посмотрел бы их "картины" и "архитектуру". Ссылки плиз.

    • @ЮристЧастнойПракитки
      @ЮристЧастнойПракитки 4 ปีที่แล้ว +1

      @@СергейТимошенко-о3ю мне в разное время большие толчки в развитии дали знакомство с minix, FreeRTOS, TNeo, glib, qp framework и книжка его автора, ну и "Wilson G. - Beautiful code"

  • @borisov_dmitry
    @borisov_dmitry 4 ปีที่แล้ว +5

    Очень полезное видео, особенно как для начинающего stm"щика, после ардуино , библиотеки больная тема.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      Есть такой эффект. :-)

    • @kazimiralmazov2245
      @kazimiralmazov2245 4 ปีที่แล้ว +2

      @@VladimirMedintsev хорошобы отдельную тему как подключать библиотеки проектов и прописывать пути этих библиотек в Keil

  • @НиколайПр-з3в
    @НиколайПр-з3в 4 ปีที่แล้ว +1

    Спасибо большое!!!

  • @arzamas1988
    @arzamas1988 4 ปีที่แล้ว +1

    Доброго дня! Спасибо за видео. Я, обычно, дефайны констант беру с гитхаба, так как перебивать это лень. Конечно, если используемая микра есть на гите.

  • @avi-crakhome2524
    @avi-crakhome2524 4 ปีที่แล้ว +8

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

    • @ЮристЧастнойПракитки
      @ЮристЧастнойПракитки 4 ปีที่แล้ว

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

    • @avi-crakhome2524
      @avi-crakhome2524 4 ปีที่แล้ว

      @@ЮристЧастнойПракитки Не надо вообще их светить. Должно быть несколько расшаренных функций с простым и понятным интерфейсом: запустить, уронить в сон, получить/отправить данные. Иначе это не библиотека будет, а нечто размазанное по всем папкам.

    • @ЮристЧастнойПракитки
      @ЮристЧастнойПракитки 4 ปีที่แล้ว

      @@avi-crakhome2524 ну а структура описывающая "класс" драйвера нужна? А если несколько микросхем надо обслуживать? И если она всё-таки нужна, то её тоже скрывать?

    • @avi-crakhome2524
      @avi-crakhome2524 4 ปีที่แล้ว

      @@ЮристЧастнойПракитки Давайте определимся в возможностях библиотеки. Либо она всё делает сама(драйвер), и выдаёт готовые данные в расшаренную структуру(только данные!!!). Либо ваш вариант - библиотека которая поддерживает всё и вся, но требующая внешнего управления.
      Лично мне нравится когда оно само работает.

    • @ЮристЧастнойПракитки
      @ЮристЧастнойПракитки 4 ปีที่แล้ว

      @@avi-crakhome2524 Пусть само работает, я тоже за это. А причем здесь расшаривание? У меня вот все само работает, но объект драйвера со всеми его кишками виден всем. Оч удобно для отладки. Никаких проблем с созданием статического объекта драйвера. Никаких проблем со множественными объектами драйвера. Если что-то не предусмотрел, то в крайнем случае можно грязно залезть внутрь ручками, хотя и крайне не рекомендуется - так сказать под личную ответственность)

  • @eric13hoop
    @eric13hoop 4 ปีที่แล้ว +2

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

  • @uyrouygjhvljygv741
    @uyrouygjhvljygv741 4 ปีที่แล้ว +3

    супер. хорошее видео. но я ничего не понял .Но очень интересно. :)

  • @vitalip2293
    @vitalip2293 4 ปีที่แล้ว +1

    Класс!👍

  • @cdeblog
    @cdeblog 4 ปีที่แล้ว +4

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

  • @mcvladoc8818
    @mcvladoc8818 4 ปีที่แล้ว +1

    Спасибо

  • @Xrustaller
    @Xrustaller 4 ปีที่แล้ว +6

    Аааа не могу прям :D Ай ту си! А не "ай два си", просто прям ухо режет ахаххаха
    (не в придирку сказано)

  • @BB-ti9bf
    @BB-ti9bf 4 ปีที่แล้ว +3

    Пишите свои библиотеки, ибо чужие это кот в мешке, возможно с глюками, каждый из которых, вас ставит в полный тупик, поскольку не вы это писали. Сие - главная болезнь ардуинщиков.
    P. S. Не зазорно юзать китайские библиотеки инициализации китайских дисплеев, так как их по ходу делали рептилоиды, и без шаманства и черной магии они не инициализируются. Отправляем в недокументированные регистры недокументированные команды... Китайцы....
    Ну и всякие обкатанные и проверенные, типа работы с SD, USB (он настолько сложен, что лучше не углубляться, там пропасть инкапсуляций)

  • @mvxburov
    @mvxburov 2 ปีที่แล้ว +2

    "освоил язык С...ну или думаешь, что освоил" :D
    я уже год не могу определиться в этом вопросе

    • @alntruisrtbredford
      @alntruisrtbredford ปีที่แล้ว

      ага, а потом сталкиваешься с Objective-C и понимаешь, что ты ничего не понимаешь, и что это какая-то страшная жесть для пытки людей)

  • @efiron
    @efiron ปีที่แล้ว +2

    Вот так просто, функциями, на понятном языке объяснить новичкам, как подключить и обработать данные датчика.
    А потом начинается, тут программно датчик прикрутил, тут Master Modbus RTU задействовал и Slave ModbusTCP на внешку в серверу, а еще драйвер Ethernet накинул, библиотеку таймеров в ООП накидал, данные расплодились - надо обработку баз данных подключить, переменные подчистить и ссылки на место в массиве прописать.
    Через месяц смотришь, десяток другой файлов по функционалу уже лежат в проекте и 6-7 тыс. строк уже наклавиатурены...
    А ведь еще только начал..

  • @ArthurIslamRU
    @ArthurIslamRU 4 ปีที่แล้ว

    Добрый день Уважаемый Владимир! Как ваши дела? Ждём новых лекций!

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +2

      Спасибо огромное. Все очень хорошо. Следующий ролик выйдет в воскресенье.

  • @myvin2887
    @myvin2887 ปีที่แล้ว +2

    Так и не понял, а где тут именно библиотека.

  • @NeussMsk
    @NeussMsk 3 ปีที่แล้ว

    Спасибо за видео! Подскажите, пожалуйста, как в кейле включить всплывающие подсказки?

  • @Didar.Kussain
    @Didar.Kussain 4 ปีที่แล้ว +1

    👍

  • @oleksiilive2084
    @oleksiilive2084 4 ปีที่แล้ว +2

    Расскажите как правильно читать datasheet документы. Для меня найти в документе нужные данные - это вообще проблема ещё та. Изучаю неделями, пока начнёт что-то получаться. Может это проблема знания английского?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +6

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

    • @oleksiilive2084
      @oleksiilive2084 4 ปีที่แล้ว

      @@VladimirMedintsev К примеру. На днях обзавёлся Attiny13 для мелких задач. Режим сна запустил почти сразу, а вот вывести с этого состояния так и не смог, теперь датчик работы двигателя автомобиля работает на постоянной основе (прерывание от работы катушки, и таймер замеряющий промежутки) I2C выдаёт обороты и реле включаемое при запущенном моторе. Режим сна так и не работает, потому как не могу с него выйти по внешнему прерыванию. Уже задолбался datasheet штудировать

    • @DmitroVialkov
      @DmitroVialkov 4 ปีที่แล้ว +5

      Чтение даташитов. это банальный навык.
      Скажем так, первые три идут проблемно... Следующие три, ты замечаешь, что уже знаешь, что где находится в даташите, и знаешь почти все слова. Поэтому гараздо проще становиться. Ну и дальше уже ты спокойно берешь и читаешь.
      Маленький совет насчет того, чтобы лучше читать даташиты, начинай писать комментарии к своему коду на английском... Учитуй, что в техническом тексте используются только простые времена. Поэтому быстро привыкаешь. Используются термины, которые и так переносяться на русский язык, и ты их, скорей всего, уже знаешь.
      Обычно проблема больше моральная... "Я не знаю английский, поэтому не смогу читать даташиты", тебе ее нужно превратить в "Я могу читать даташиты, поэтому пора начинать читать и книги"

    • @cb_q
      @cb_q 4 ปีที่แล้ว

      @@oleksiilive2084 странно что вы не разобрались в datasheet для AVR. они довольно поостые - описание одного мк в одном файле. у ATTiny13 три режима сна - Idle, ADC Noise Reduction, Power-Down. в datasheet есть таблица с прерываниями, которые могут пробудить ото сна мк в каждом режиме (7.1. Sleep Modes).
      вы хотите выходить из сна по какому прерыванию?

    • @YuriyIY
      @YuriyIY 4 ปีที่แล้ว +1

      @@Nidvoraich Кто-то что-то спутал? Даня - это Крастер. А Класте - это Лёха.

  • @alekseibutyaev2318
    @alekseibutyaev2318 ปีที่แล้ว

    Бит филд Это следующий уровень програмирования.. избавляет кол от всяких OR AND

  • @cb_q
    @cb_q 4 ปีที่แล้ว +1

    21:45
    12 строка
    >*(uint8_t *)data = answer[1];
    но data уже имеет тип uint8_t*, зачем приводить к тому же типу? подстраховка или остаточные артефакты после правок?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      Это не приведение типа. Там * это ссылка на 1й элемент массива.

    • @cb_q
      @cb_q 4 ปีที่แล้ว +1

      @@VladimirMedintsev ,
      *(uint8_t *)data равноценно *data (т.к. data имеет тип uint8_t*), я это имел ввиду.
      либо вообще можно было написать data[0] = answer[1]

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      @@cb_q Да, так тоже можно. Но код получается разный. Компилятор эти случаи переваривает по разному. Вы откомпилируйте и посмотрите. Очень занимательное времяпрепровождение.

    • @chipsoft1
      @chipsoft1 4 ปีที่แล้ว

      @@VladimirMedintsev Вот специально взял ARM gcc 9.2 - разницы никакой в коде не увидел. Проверял тут: godbolt.org/

  • @chipsoft1
    @chipsoft1 4 ปีที่แล้ว +8

    Честно говоря, это врядли можно назвать библиотекой. Это просто функции по работе с магнитометром для конкретной конфигурации железа, не более. Библиотека она на то и библиотека, чтобы она была написа один раз и использоваться во множестве проектов с различной конфигурацией железа. Если в каждый раз нужно править исходный код тела такой библиотеки под конкретное железо, то это уже не библиотека. Я бы вынес специфические функции для конкретного процессора в отдельный bsp.c файл и в самой библиотеке использовал абстрактные функции из этого файла. Таким образом можно было бы использовать такую библиотеку абсолютно с любым процессором (даже и не АРМом), а сама библиотека ничего не знала бы о том, с каким процессором она вообще работает. Все что нужно для подключения к новому процессору - создать свой bsp файл.

    • @СергейТимошенко-о3ю
      @СергейТимошенко-о3ю 4 ปีที่แล้ว

      А не могли бы Вы осветить это подробнее и на примере? Очень интересует, как писать эффективно.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      @@СергейТимошенко-о3ю Он предлагает выделить несколько уровней. В одном файле вся физика, привязанная к конкретному железу, в другом абстракция обслуживающая данные. По сути в данном случае такой подход не целесообразен. Ну хоть по той причине что времени потребуется очень много, сильно оторваться от железа для облегчения портируемости не получится. Я бы понял это в случае с дисплеем. Там реально есть что выносить в абстракции, но тоже спорно т. к. снизится скорость работы.

    • @СергейТимошенко-о3ю
      @СергейТимошенко-о3ю 4 ปีที่แล้ว

      @@VladimirMedintsev спасибо за быстрый ответ и разъяснения (суть уловил), не ожидал. Откровенно говоря пока плаваю в этой области и смотрю как делают другие (тоже по разному) т.к. мк не основная деятельность (к сожалению) и проекты редкие. В свое время, на этапе выбора платформы отказался от ардуино и начал с stm32 периферию в том числе с дма освоил, freertos использовал. Кстати есть вопрос который возможно станет темой нового видеовыпуска. Не совсем хорошо догоняю как на freertos реализовать конечный автомат (может и смешно, но мне не смешно) периферия работает и пересылает данные в другие задачи посредством очередей. Но не могу понять, как реализовать, скажем так, цикл который выполняется до определенных событий, после чего переход в другой цикл, в котором все крутится, до определенных событий, потом третий, четвертый... Без ос можно было бы сделать на свич-кейсах условием перехода была бы переменная флагов. А как сделать подобное на ос? На семафорах? Если можно осветите принцип в следующем видео, думаю будет полезно многим.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      @@СергейТимошенко-о3ю Есть хороший пример того, что имел ввиду Денис. Это библиотека LWIP. Я не смог вспомнить лучшего примера портируемости.

    • @СергейТимошенко-о3ю
      @СергейТимошенко-о3ю 4 ปีที่แล้ว +1

      @@VladimirMedintsev почитав другие Ваши комментарии и обоснования выбора си и именно такого стиля написания библиотек. Не стал ПОКА заморачиваться темой портируемости, т.к., действительно, есть другие темы которые позволят быстрее делать проекты. Спасибо за Ваши ответы.

  • @ebjikkolu4757
    @ebjikkolu4757 4 ปีที่แล้ว

    Добрый день,Владимир . Скажите ,вы плату сами проектировали и заказывали? Я столкнулся с проблемой ,у меня есть микросхема от емкостного тачскрина в корпусе QFN с шагом ножек 0,40мм .Я не могу нигде найти болванки (pcb) с такими параметрами .Вижу 2 варианта,либо проектировать и заказывать такое посадочное место ,либо пытаться подпаяться к ножкам с помощью очень тонкого провода

    • @ebjikkolu4757
      @ebjikkolu4757 4 ปีที่แล้ว

      Пардон ,писал коммент на 2 минуте видео ,вопрос снят

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      :-)

  • @ahmetozdemir7173
    @ahmetozdemir7173 2 ปีที่แล้ว

    Спасибо тебе за видео. Я не мог понять пределы диапазона измерения магнитной величины для этой модели. В пояснениях; Выбираемые магнитные полные шкалы ± 4 / ± 8 / ± 12 / 16G.
    Например; Что означает ± 4? Означает ли это, что он определяет диапазоны от -4 до +4? например, обнаруживает ли он +2Gauss? или величина магнитного поля Земли в моем районе; 47 микротесла (0,47 gauss). Может ли этот модуль обнаружить?

    • @VladimirMedintsev
      @VladimirMedintsev  2 ปีที่แล้ว +2

      Bu doğru. Dünyanın manyetik alanının büyüklüğü, yönü ve değişimi algılanır. Bunu ölçebilirsin.

    • @ahmetozdemir7173
      @ahmetozdemir7173 2 ปีที่แล้ว

      @@VladimirMedintsev Спасибо за ответ. Я думаю, что невозможно увидеть числовой эквивалент величины магнитного поля Земли на выходных контактах этой модели. например; Значение вроде 47 микротесла не готово. Поэтому мы не можем видеть это числовое значение в выводе. Как я могу сформулировать векторные значения, чтобы получить это числовое значение?

  • @AngorSTV1
    @AngorSTV1 4 ปีที่แล้ว

    Хотелось бы увидеть как эту библиотеку использовать в других проектах. Я сам проф на Java и у нас есть сборщик зависимостей Gradle , есть ли что то подобное для stm ide ?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      Слава Господу нет необходимости в таких инструментах для STM. Тут все гораздо проще. Ну если кто-то специально себе жизнь не усложняет.

    • @AngorSTV1
      @AngorSTV1 4 ปีที่แล้ว +1

      Vladimir Medintsev где хранить готовые библиотеки и как их подключать в проект?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +3

      Это не проект для ПК. Тут нет кросплатформенности и прочих заморочек. Тут нет виртуальных машин. Железо рядом. Вы от него не изолированы. Вы где драйвер клавиатуры у себя на ПК храните? Тут просто файл который вы подключаете к проекту. Нет серьезно, а вот CMSIS, LL, HAL, AI, LWIP и прочие библиотеки вы где храните? В файлах. Как подключаете? #include "libname.h"
      В языке Си как библиотеки подключать? Кинуть файлы в папку, вписать include и пользуй.

  • @DmitriyParubov
    @DmitriyParubov 11 หลายเดือนก่อน

    Простите, но я это пехну сюды)))) У меня такая проблема возникла. Ардуино мега, на ней CD модуль, GPS, Oied дисплей, Барометр DPS310, Кнопка сброса высоты, nRF24L01 Модуль с CD модулем отказался работать по SPI , Пришлось через сериал1 меги принять сериал с ардуино нано на которой установил nRF24L01( он принимает коррекцию высоты с базы, что то типо псевдо ртк ) Этот сигнал при включении сразу принимается, А ПОСЛЕ ВЫКЛЮЧЕНИЯ БАЗЫ ЧЕРЕЗ ЭННОЕ ВРЕМЯ, СИГНАЛ ВСЁ ЕЩЁ МЕЛЬТИШИТ В ПОРТУ МЕГИ СЕКУНД 20, а так же записывается на карту, В ЧЕМ МОЖЕТ БЫТЬ ПРОБЛЕМА ???

  • @ibrag2012
    @ibrag2012 4 ปีที่แล้ว +5

    Десь бачив прикольне рішення від STM: вони бітові мапи ховають в union, а ще в С є офігезна річ enum: дозволяє робити конкретний тип, наприклад "контрольні_регістри".

  • @cb_q
    @cb_q 4 ปีที่แล้ว

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

    • @cb_q
      @cb_q 4 ปีที่แล้ว

      неужели никто никак не тестирует свой код..? не верю!

    • @chipsoft1
      @chipsoft1 4 ปีที่แล้ว

      @@cb_q Тут git-ом некоторые не пользуются ввиду отсутствия надобности, а вы про тесты :) Я использую gtest и gmock для тестов. Можно полностью съемулировать поступление данных с SPI, CAN и прочих шин данных не имея самого железа. Ну и для теста функция соответствующим образом должна быть написана.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +1

      Я вам крамольную штуку щас скажу. Тут все зависит от того, что конкретно надо тестировать. В данном самом примитивном примере все тестирование было в файле main.c проверяешь, смотришь. Тем самым и тестируешь. Математику обработки и фильтрации мы тестируем обычно на ПК. Там проще организовать ввод вывод. Так, что тут ембед тут нет такого овертеста как для ПК. Тут в основном заранее знаешь где будет засада. Тут нет неправильного ввода пользователя, а большинство ошибок оборудования тебя быстро отправят в hard fault так что тут чуть проще.
      Проще еще и потому что почти всегда пишешь и тут же тестируешь прям на железе наблюдая как оно переключается и взаимодействует. Вот лично я вообще не пишу в отрыве от железа, не интересно.

    • @cb_q
      @cb_q 4 ปีที่แล้ว

      @@chipsoft1 спасибо, посмотрю.

    • @cb_q
      @cb_q 4 ปีที่แล้ว +1

      @@VladimirMedintsev да, надо было сразу уточнить, меня интересуют тесты библиотек у которых довольно сложная логика, т.е. в разных начальных условиях разный результат.

  • @alexeykorchevnyy3109
    @alexeykorchevnyy3109 4 ปีที่แล้ว +1

    объясните, как из 0f плюс единичка получается 8F

    • @alexandreabramtsev9160
      @alexandreabramtsev9160 4 ปีที่แล้ว +1

      возми 2 твоих числа 0F и 8F и переведи их в двоичную систему. Ты увидешь что они "единичкой" отличаются - 00001111 и 10001111

    • @ПомощникПомощника-в1б
      @ПомощникПомощника-в1б 4 ปีที่แล้ว +3

      Он же по русски сказал, добавим единичку в старшем бите, старшего байта. Что тут может быть не понятного?

    • @олегспирин-р4р
      @олегспирин-р4р 4 ปีที่แล้ว +2

      @@ПомощникПомощника-в1б вдарим битом по байту , товарищи !!!

  • @СергейЧеботарь-ь4т
    @СергейЧеботарь-ь4т 4 ปีที่แล้ว +2

    Владимир доброго времени суток сколько смотрю ваши видео не пойму почему простой обыватель которого заинтересовала тема микроконтроллеров и он хочет этим заняться натыкается на гору кода и кучу видео с кодом в котором ни бум бум и никто не может внятно объяснить от начала до конца как и с чего начать даже продукт stm который надо поставить на ПК и сконфигурировать это просто не правильно поскольку человек когда имеет желание с чего-то начать натыкается на гору непонятного и бросает это дело
    С уважением Сергей

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว

      Я не знаю. Что в данном видео было вам не понятно?

    • @sozdatelEd
      @sozdatelEd 4 ปีที่แล้ว +2

      А если пекаря пустить пилотировать самолёт, то он там тоже будет ни бум бум. Так и обычный обыватель. Есть чёткая последовательность действий и этапов обучения, пройдя которую обычный обыватель начнёт понимать кучу кода. Начинайте с азов и шагайте по мере обучения. Есть много книг по основам программирования и много старей в интернете и куча видео для начинающих на youtube. Не лезьте сразу в дебри. Начните с простого. Гугл при запросе "stm с чего начать" выдаёт годные ссылки на статьи и на 3 адекватных видеоролика.

    • @Dmitriy_KIPiA
      @Dmitriy_KIPiA 4 ปีที่แล้ว

      @@VladimirMedintsev Буквы))))))))

    • @DmitroVialkov
      @DmitroVialkov 4 ปีที่แล้ว +1

      Наверно по той причине, что человек, которого вы описали, пытается искать не то и не там. Блоги, видео 5 минутные и пр. это НЕ СИСТЕМНАЯ ИНФОРМАЦИЯ. Если хочется найти что-то с самого начала, то тут стоит искать как раз такие видео или лучше книги.
      Они существуют. Правда иногда устаревают по причинам постоянно меняющегося мира, а никто не будет переписывать видео "Установка и знакомство с IDE"при выпуске каждой версии. А иногда отличия существенны.
      ну и смотреть видео, например по написанию библиотеки, без понимания, а что такое библиотеки, и языка программирования не стоит. Будет. как для меня просмотр урока по арабскому языку.
      Ну... и из того, на что я натыкался, для начинающих с STM32, оптимальным будет книжка Александра Тарасова themagicsmoke.ru/books/c_for_embedded_systems/
      И канал "Народ стрим" th-cam.com/channels/Xgs4exdtMpz4ccBZS3Yp4g.html
      А у Владимира тут темы даже помеченые для новичков, более продвинуты обычно... Я бы их называл "для практикующих новичков".

    • @pavelboboshkin3898
      @pavelboboshkin3898 4 ปีที่แล้ว

      @@alexandrl.5131 В мозгу автоматически включилась проверка орфографии и расставила все недостающие знаки препинания.

  • @intelektum
    @intelektum 4 ปีที่แล้ว

    А почему HAL, а не LL ? По мне так LL поинтереснее.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +1

      Чем поинтереснее? Ну а на самом деле я уже делал отдельное видео на этот счет.

  • @КонстантинНиколаевич-р3е
    @КонстантинНиколаевич-р3е 4 ปีที่แล้ว

    А если даташита нет, тогда как ?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +7

      А если даташита нет, то зачем вам эта микросхема в вашем изделии? Вы ее как собираетесь использовать? Сейчас на все есть даташиты.

    • @JackNmD
      @JackNmD 4 ปีที่แล้ว

      @@VladimirMedintsev вот я сейчас на ардуине собираю что-то типа компрессора, датчик давления на 10 атм стоит около 1500 рублей, а у китайцев есть брелок, в шинах давление мерить на 15атм, 100 рублей + доставка 50. Вот зачем микросхема без даташита. Я конечно попробую его прикрутить по i2c, надеюсь получится. yadi.sk/i/wPEv9ryy1XwmOA Это всё, что о нем известно после прозвонки мультиметром... Кстати ось через о пишется, а не Xasi, тоесть Xosi по русски или Xaxis по англ. Я в программировании полный нуб и просмотр вашего подробного видео серьёзно поубавило у меня уверенности, что брелок подключить удасться...

  • @ResistanceLion
    @ResistanceLion ปีที่แล้ว

    Надеялся видео про этику, а не методологию

  • @skeydee
    @skeydee 2 ปีที่แล้ว +3

    "Ай два си" прям режет ухо... Ну хоть не "и два це". Но лучше называйте вещи своими именами - "ай ту си".

    • @VladimirMedintsev
      @VladimirMedintsev  2 ปีที่แล้ว +6

      Я буду называть вещи так, как мне привычно и нравится. Если это ввзывает у вас сильное неприятие, то поставьте отметку не рекомендовать видео с этого канала и они не будут вас беспокоить.

    • @skeydee
      @skeydee 2 ปีที่แล้ว +4

      @@VladimirMedintsev зачем же так категорично. Не просто так подписан на Ваш канал - мне нравятся ваши видео, очень много интересной и познавательной информации, неприятия нет. Просто сделал небольшое замечание - в любой сфере есть устоявшиеся понятия и правила произношения, это как тОрты и тортЫ.

    • @50z10_patpat
      @50z10_patpat 2 ปีที่แล้ว

      Айдвасі це ще ок. З рештою, в вашому оточенні навряд чи є багато людей які читають назви музичних гуртів як блінк ван хандред ейті ту або сам фоті ван. Існує цілий культ людей, які називають це "квадратною шиною", або просто "квадратом" спираючись на вікі. Від такого не то шоб шось ріже - вуха відпадають

    • @50z10_patpat
      @50z10_patpat 2 ปีที่แล้ว +1

      Тільки чомусь як мова заходить за англійську назву то всі кажуть ай ту сі, а не i squared c

    • @alntruisrtbredford
      @alntruisrtbredford ปีที่แล้ว +1

      @@50z10_patpat как кому удобно так и называют же, главное что понятно. А так соглашусь с Вами, начавший возмущаться человек, которому режет ухи что-то, наверное каждый раз произносит АрЭс фор хандред ейти файв и ЭйПиАй вместо простого апи. Эстеты, хрен с них взять?! )))

  • @OlegBovykin
    @OlegBovykin 4 ปีที่แล้ว +1

    "Я слишком стар чтобы искать библиотеки на гитхабе" - эта фраза прекрасно показывает насколько мир эмбеддед разработки отстает от всего остального программирования. Как все любят ругать ардуинщиков, а в своем глазу бревна не замечают. Куб из коробки генерирует код, который уже построен по принципу лапши: Выделение мест для вставки пользовательского кода комментариями - это ли не прекрасно?
    Для сравнения можно посмотреть на Rust, который еще молодой, но уже более правильно подходит к организации экосистемы, абстракций и библиотек. Библиотеки для Rust почти всегда имеют нормальную документацию и ридми. Cи до такого никогда уже не дойдет.

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +8

      я этот комментарий когда начал читать думал будет щас какая-то идея, а нет, в итоге страдания сектанта от Rust. Умные слова и прочие рекламные проспекты. Очень похоже на свидетелей иеговы. Вы покажите хоть один серьезный проект для МК на этом Rust. Производители МК тоже не торопятся этот 'проект' поддерживать. Так что вы с этим языком там сами как-нибудь. Рассказывайте друг другу как все хорошо. А мы пока работать будем.

    • @OlegBovykin
      @OlegBovykin 4 ปีที่แล้ว +1

      ​@@VladimirMedintsev Тут скорее секта староверов эмбеддеров. Вы не видите идеи в нормальной организации экосистемы вокруг языка? Вы не видите идеи в выделении абстракций? Или вы считаете, что экосистема у C просто отличная и соответствует 21 веку? Или вы считаете, что код, который генерит куб - это супер классный код? Насчет производителей вы тоже не правы, как минимум несколько оплачивают работы по написанию периферии их микроконтроллеров под раст. Защищать старые (плохие для 21 века) привычки любой ценой не смотря на достижения остального человечества так себе история. Да, раст пока не полностью готов для боевого использования, но Си уже устарел для боевого использования в 21 веке. Крупный эмбед пишут на C++, а не на Си, а сделать проект из куба на плюсах это тот еще танец с бубном.
      Кстати, а что вы думаете насчет mbed os?

    • @VladimirMedintsev
      @VladimirMedintsev  4 ปีที่แล้ว +17

      Я более 30 лет плотно наблюдаю за происходящим в программировании. И конечно же за эти годы мода на языки программирования менялась. Появлялись новые языки, развивалась философия подхода к программированию. Это порождает моду. Вы бы видели с каким жаром и пламенем в сердце несколько лет назад отстаивали честь своего языка приверженцы питона. Теперь я наблюдаю истерику людей прочитавших статью о Rust.
      А в итоге скажу вам так. Нам не шашечки, нам делать реальные проекты. И в настоящее время эти проекты прекрасно работают на Си. Нет совсем не потому что Си такой хороший язык, а потому что написаны тонны библиотек, создана вся необходимая инфраструктура и инструментарий. И до тех пор, пока не будет поддержки Rust от производителей микроконтроллеров и пока не будет создана вся остальная среда никто из серьезных разработчиков ничего менять не будет. Нет ну правда, сколько мне надо чтобы изучить Rust и перейти? Ну не меньше пол-года. А чтобы более менее серьезно? Да и год и полтора. А кто за меня будет деньги зарабатывать все это время? А что делать с поддержкой старых проектов, а написанного ранее? Да не смешите, мир слишком инерционен. Еще очень и очень долго все будет в нынешнем состоянии. За это время Rust успеет умереть и морально устареть. А люди все еще будут писать на Си.
      Что касается mbedOS я ее не использую. Я использую FreeRTOS и segger embOS. О причинах я писал уже не один раз. FreeRTOS имеет версию safe которая имеет необходимые мне сертификаты, и эти операционки поддерживаются STMicroelectronics.

    • @evgeniysvinovsky326
      @evgeniysvinovsky326 4 ปีที่แล้ว

      МК нужно программить на ассемблере.

    • @evgeniysvinovsky326
      @evgeniysvinovsky326 4 ปีที่แล้ว

      @@VladimirMedintsev а что уже питон не в моде?

  • @Diamond8822
    @Diamond8822 4 ปีที่แล้ว +1

    Спасибо

  • @negodiaysamsonoff9616
    @negodiaysamsonoff9616 4 ปีที่แล้ว +1

    Спасибо