Тёмный
No video :(

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

Vladimir Medintsev
Подписаться 36 тыс.
Просмотров 42 тыс.
50% 1

Видео для начинающих. Рассказывается о том, что создание своей собственной библиотеки для микроконтроллеров позволяющей работать со сторонними чипами и сенсорами является не сложным делом. В видео показаны основные моменты создания собственной библиотеки на примере работы с магнитометром LIS3MDL.
Канал в телеграмм - t.me/vladimir_...
Канал Яндекс.Дзен - zen.yandex.ru/...
Канал на RuTube - rutube.ru/chan...
Канал на RU-vid - / vladimirmedintsev
------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------

Опубликовано:

 

23 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 199   
@vmlnn
@vmlnn 3 дня назад
Спасибо большое! Не всё понятно в мелочах, но общее представление имеется!!!
@danielfedorov7241
@danielfedorov7241 Год назад
Хорошо бы показать финалочку - создание из этого статической библиотеки. Честно говоря, ожидал именно этого
@user-bx3qg8js3b
@user-bx3qg8js3b 4 года назад
Владимир, спасибо. Вы ,как всегда, на высоте.
@user-gh4tc2wo5k
@user-gh4tc2wo5k 4 года назад
Т.е. по сути мы пишем "драйвер" к определённой внешней периферии. Это полезно, т.к. в ходе написания более подробно изучаешь саму периферию. А если взять готовую библиотеку, некоторые моменты можешь упустить. И потом будешь не понимать, почему работает не так, как тебе надо. Спасибо за видео.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Да, безусловно это правильнее называть драйвером.
@danilv.l.2501
@danilv.l.2501 4 года назад
Владимир, спасибо. Важная и интересная тема.
@MegaTraxxas
@MegaTraxxas 3 года назад
Очень актуальная тема для меня, спасибо!
@user-gf3se1un5l
@user-gf3se1un5l 4 года назад
Лайк сразу, только за освещение темы.
@leoned1797
@leoned1797 3 года назад
Спасибо, делаете полезные видео. Самое сложное,для меня, это заставить себя внимательно читать документацию. Буду ориентируясь на вас писать драйвер для внешнего АЦП.
@remontlive
@remontlive 4 года назад
Здравствуйте, очень хотел как раз такое видео где вы подробно описываете создание библиотеки, я бы даже несколько таких видео с удовольствием посмотрел бы спасибо огромное!
@finskiymaster
@finskiymaster 4 года назад
Спасибо, как всегда - очень интересно и познавательно. Думаю, всем было бы интересно посмотреть на практическое сравнение этих библиотек. Например, инициализация и вывод в UART банального ”hello, world!". Сравнить по простоте и удобстве написания кода, занимаемому объему и скорости выполнения.
@holor777
@holor777 4 года назад
Владимир, спасибо! Очень полезная информация!
@kazimiralmazov2245
@kazimiralmazov2245 4 года назад
Сразу лайк не глядя ролика. Знаю, что познавательно будет. Спасибо.
@sergeigranin7345
@sergeigranin7345 3 года назад
спасибо за урок, сильно поможет скачать файлы уроковой библиотеки - для меня удобно повторить пошагово с бумагой и видео - быстрее прилипнет к мозгу
@AndySm1973
@AndySm1973 3 года назад
Огромное спасибо!
@prashkd7684
@prashkd7684 3 года назад
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
@eric13hoop
@eric13hoop 4 года назад
Дядя, если вы хотите стать главным СТэМщиком русского ютубу - не пропадай те так на долго.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 4 года назад
Когда учат архитекторов им показывают работы лучших архитекторов мира, художники изучают картины лучших мастеров, музыканты великие произведения... И только программистам не повезло((
@olegpetroff6186
@olegpetroff6186 4 года назад
абсолютно точно, при чем в микроконтроллерах нет программистов, там электронщики думающие, что они программисты!
@user-ot5js1gy5j
@user-ot5js1gy5j 4 года назад
@@olegpetroff6186 Погромисты ПК думают что они лучше знают как лучше писать код для микроконтроллеров , а воз и ныне там.
@leharuso
@leharuso 4 года назад
@@user-ot5js1gy5j , они и правда лучше знают как писать код правильно. Но микроконтроллер об этом не знает. :)
@user-gf3se1un5l
@user-gf3se1un5l 4 года назад
Каждый суслик агроном. Тем не менее лайк за попытку освещения этой темы. Кто знает как лучше с удовольствием посмотрел бы их "картины" и "архитектуру". Ссылки плиз.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 4 года назад
@@user-gf3se1un5l мне в разное время большие толчки в развитии дали знакомство с minix, FreeRTOS, TNeo, glib, qp framework и книжка его автора, ну и "Wilson G. - Beautiful code"
@arzamas1988
@arzamas1988 4 года назад
Доброго дня! Спасибо за видео. Я, обычно, дефайны констант беру с гитхаба, так как перебивать это лень. Конечно, если используемая микра есть на гите.
@cdeblog
@cdeblog 3 года назад
Лучше не делать константы макросами, а вот адреса регистров лучше сделать перечислением, тогда ещё на этапе компиляции будет выполнена проверка, главное не забыть включить это предупреждение.
@avi-crakhome2524
@avi-crakhome2524 4 года назад
Не расшаривать через хедер структуры внутреннего использования!!! На этом нужно было сделать акцент, потому как это очень важно. Начинающие все как один повторяют эту ошибку (я не исключение). Потому что оно само собой получается. У вас это уже пройденный этап, но для юного создателя библиотек - очень важно.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 4 года назад
Ошибка начинающих программистов - это лазить в такие структуры напрямую, а не через АПИ. А описывать их в ашниках если пишешь на С-ях придется, язык не имеет полноценных средств для инкапсуляции. Будешь скрывать проблем на ровном месте создашь...
@avi-crakhome2524
@avi-crakhome2524 4 года назад
@@user-bc7tm8vw9g Не надо вообще их светить. Должно быть несколько расшаренных функций с простым и понятным интерфейсом: запустить, уронить в сон, получить/отправить данные. Иначе это не библиотека будет, а нечто размазанное по всем папкам.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 4 года назад
@@avi-crakhome2524 ну а структура описывающая "класс" драйвера нужна? А если несколько микросхем надо обслуживать? И если она всё-таки нужна, то её тоже скрывать?
@avi-crakhome2524
@avi-crakhome2524 4 года назад
@@user-bc7tm8vw9g Давайте определимся в возможностях библиотеки. Либо она всё делает сама(драйвер), и выдаёт готовые данные в расшаренную структуру(только данные!!!). Либо ваш вариант - библиотека которая поддерживает всё и вся, но требующая внешнего управления. Лично мне нравится когда оно само работает.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 4 года назад
@@avi-crakhome2524 Пусть само работает, я тоже за это. А причем здесь расшаривание? У меня вот все само работает, но объект драйвера со всеми его кишками виден всем. Оч удобно для отладки. Никаких проблем с созданием статического объекта драйвера. Никаких проблем со множественными объектами драйвера. Если что-то не предусмотрел, то в крайнем случае можно грязно залезть внутрь ручками, хотя и крайне не рекомендуется - так сказать под личную ответственность)
@borisov_dmitry
@borisov_dmitry 4 года назад
Очень полезное видео, особенно как для начинающего stm"щика, после ардуино , библиотеки больная тема.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Есть такой эффект. :-)
@kazimiralmazov2245
@kazimiralmazov2245 4 года назад
@@VladimirMedintsev хорошобы отдельную тему как подключать библиотеки проектов и прописывать пути этих библиотек в Keil
@Okaboka96
@Okaboka96 4 года назад
Увидел ваше видео, поставил лайк
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Да прибудет с вами сила.
@redtex
@redtex 4 года назад
@@VladimirMedintsev Аминь.
@sozdatelEd
@sozdatelEd 4 года назад
@@VladimirMedintsev ДА БУДЕТ ТАК!!!
@user-bn2qp6sh8r
@user-bn2qp6sh8r 3 года назад
Не поспешил ?
@user-rx4rp5yb5j
@user-rx4rp5yb5j 4 года назад
Спасибо большое!!!
@Xrustaller
@Xrustaller 3 года назад
Аааа не могу прям :D Ай ту си! А не "ай два си", просто прям ухо режет ахаххаха (не в придирку сказано)
@uyrouygjhvljygv741
@uyrouygjhvljygv741 3 года назад
супер. хорошее видео. но я ничего не понял .Но очень интересно. :)
@vitalip2293
@vitalip2293 4 года назад
Класс!👍
@mcvladoc8818
@mcvladoc8818 4 года назад
Спасибо
@mvxburov
@mvxburov 2 года назад
"освоил язык С...ну или думаешь, что освоил" :D я уже год не могу определиться в этом вопросе
@alntruisrtbredford
@alntruisrtbredford Год назад
ага, а потом сталкиваешься с Objective-C и понимаешь, что ты ничего не понимаешь, и что это какая-то страшная жесть для пытки людей)
@ArthurIslamRU
@ArthurIslamRU 4 года назад
Добрый день Уважаемый Владимир! Как ваши дела? Ждём новых лекций!
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Спасибо огромное. Все очень хорошо. Следующий ролик выйдет в воскресенье.
@efiron
@efiron Год назад
Вот так просто, функциями, на понятном языке объяснить новичкам, как подключить и обработать данные датчика. А потом начинается, тут программно датчик прикрутил, тут Master Modbus RTU задействовал и Slave ModbusTCP на внешку в серверу, а еще драйвер Ethernet накинул, библиотеку таймеров в ООП накидал, данные расплодились - надо обработку баз данных подключить, переменные подчистить и ссылки на место в массиве прописать. Через месяц смотришь, десяток другой файлов по функционалу уже лежат в проекте и 6-7 тыс. строк уже наклавиатурены... А ведь еще только начал..
@NeussMsk
@NeussMsk 3 года назад
Спасибо за видео! Подскажите, пожалуйста, как в кейле включить всплывающие подсказки?
@BB-ti9bf
@BB-ti9bf 4 года назад
Пишите свои библиотеки, ибо чужие это кот в мешке, возможно с глюками, каждый из которых, вас ставит в полный тупик, поскольку не вы это писали. Сие - главная болезнь ардуинщиков. P. S. Не зазорно юзать китайские библиотеки инициализации китайских дисплеев, так как их по ходу делали рептилоиды, и без шаманства и черной магии они не инициализируются. Отправляем в недокументированные регистры недокументированные команды... Китайцы.... Ну и всякие обкатанные и проверенные, типа работы с SD, USB (он настолько сложен, что лучше не углубляться, там пропасть инкапсуляций)
@myvin2887
@myvin2887 Год назад
Так и не понял, а где тут именно библиотека.
@oleksiilive2084
@oleksiilive2084 4 года назад
Расскажите как правильно читать datasheet документы. Для меня найти в документе нужные данные - это вообще проблема ещё та. Изучаю неделями, пока начнёт что-то получаться. Может это проблема знания английского?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Давайте честно, ну сколько слов необходимо знать чтобы прочитать даташит? Ну там технический английский. Ну 400-600 слов максимум в словарном запасе. Это способен выучить каждый человек. Там более что вам не надо говорить, вам надо просто прочитать. Но как-нибудь расскажу в ролике для начинающих.
@oleksiilive2084
@oleksiilive2084 4 года назад
@@VladimirMedintsev К примеру. На днях обзавёлся Attiny13 для мелких задач. Режим сна запустил почти сразу, а вот вывести с этого состояния так и не смог, теперь датчик работы двигателя автомобиля работает на постоянной основе (прерывание от работы катушки, и таймер замеряющий промежутки) I2C выдаёт обороты и реле включаемое при запущенном моторе. Режим сна так и не работает, потому как не могу с него выйти по внешнему прерыванию. Уже задолбался datasheet штудировать
@DmitroVialkov
@DmitroVialkov 4 года назад
Чтение даташитов. это банальный навык. Скажем так, первые три идут проблемно... Следующие три, ты замечаешь, что уже знаешь, что где находится в даташите, и знаешь почти все слова. Поэтому гараздо проще становиться. Ну и дальше уже ты спокойно берешь и читаешь. Маленький совет насчет того, чтобы лучше читать даташиты, начинай писать комментарии к своему коду на английском... Учитуй, что в техническом тексте используются только простые времена. Поэтому быстро привыкаешь. Используются термины, которые и так переносяться на русский язык, и ты их, скорей всего, уже знаешь. Обычно проблема больше моральная... "Я не знаю английский, поэтому не смогу читать даташиты", тебе ее нужно превратить в "Я могу читать даташиты, поэтому пора начинать читать и книги"
@Nidvoraich
@Nidvoraich 4 года назад
@@VladimirMedintsev я знаю инглиш достаточно хорошо. Но просьбу поддерживаю. Нам в институте однажды преподаватель дал хороший совет - прежде, чем начинаешь читать какой-то учебник или пособие - прочитай всё оглавление, чтоб уложить в голове структуру повествования. С документацией по МК всё несколько сложнее, потому что там само оглавление объёмом с учебник :) Алексея Кластер (возможно, знаком Вам) в своём видео об СТМ ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-FM0gGSAf8f4.html тоже говорил, что несмотря на свой богатейший опыт работы с МК - при изучении СТМ32 первые пару недель просто хватался за голову и ничего не понимал. И он в видео посоветовал начать изучение со структуры МК и его внутренних связей. По крайней мере, для него это стало неким озарением. Ну и работа с регистрами, конечно же. Очень хотелось бы узнать Ваш опыт в этом плане. Даже если видео сведётся к теме "Основы работы микроконтроллера СТМ32" - всё равно будет очень хорошо и крайне полезно взглянуть на СТМ сквозь призму Вашего понимания!
@cb_q
@cb_q 4 года назад
@@oleksiilive2084 странно что вы не разобрались в datasheet для AVR. они довольно поостые - описание одного мк в одном файле. у ATTiny13 три режима сна - Idle, ADC Noise Reduction, Power-Down. в datasheet есть таблица с прерываниями, которые могут пробудить ото сна мк в каждом режиме (7.1. Sleep Modes). вы хотите выходить из сна по какому прерыванию?
@cb_q
@cb_q 4 года назад
21:45 12 строка >*(uint8_t *)data = answer[1]; но data уже имеет тип uint8_t*, зачем приводить к тому же типу? подстраховка или остаточные артефакты после правок?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Это не приведение типа. Там * это ссылка на 1й элемент массива.
@cb_q
@cb_q 4 года назад
@@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/
@alekseibutyaev2318
@alekseibutyaev2318 Год назад
Бит филд Это следующий уровень програмирования.. избавляет кол от всяких OR AND
@ebjikkolu4757
@ebjikkolu4757 4 года назад
Добрый день,Владимир . Скажите ,вы плату сами проектировали и заказывали? Я столкнулся с проблемой ,у меня есть микросхема от емкостного тачскрина в корпусе QFN с шагом ножек 0,40мм .Я не могу нигде найти болванки (pcb) с такими параметрами .Вижу 2 варианта,либо проектировать и заказывать такое посадочное место ,либо пытаться подпаяться к ножкам с помощью очень тонкого провода
@ebjikkolu4757
@ebjikkolu4757 4 года назад
Пардон ,писал коммент на 2 минуте видео ,вопрос снят
@VladimirMedintsev
@VladimirMedintsev 4 года назад
:-)
@AngorSTV1
@AngorSTV1 4 года назад
Хотелось бы увидеть как эту библиотеку использовать в других проектах. Я сам проф на Java и у нас есть сборщик зависимостей Gradle , есть ли что то подобное для stm ide ?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Слава Господу нет необходимости в таких инструментах для STM. Тут все гораздо проще. Ну если кто-то специально себе жизнь не усложняет.
@AngorSTV1
@AngorSTV1 4 года назад
Vladimir Medintsev где хранить готовые библиотеки и как их подключать в проект?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Это не проект для ПК. Тут нет кросплатформенности и прочих заморочек. Тут нет виртуальных машин. Железо рядом. Вы от него не изолированы. Вы где драйвер клавиатуры у себя на ПК храните? Тут просто файл который вы подключаете к проекту. Нет серьезно, а вот CMSIS, LL, HAL, AI, LWIP и прочие библиотеки вы где храните? В файлах. Как подключаете? #include "libname.h" В языке Си как библиотеки подключать? Кинуть файлы в папку, вписать include и пользуй.
@ahmetozdemir7173
@ahmetozdemir7173 2 года назад
Спасибо тебе за видео. Я не мог понять пределы диапазона измерения магнитной величины для этой модели. В пояснениях; Выбираемые магнитные полные шкалы ± 4 / ± 8 / ± 12 / 16G. Например; Что означает ± 4? Означает ли это, что он определяет диапазоны от -4 до +4? например, обнаруживает ли он +2Gauss? или величина магнитного поля Земли в моем районе; 47 микротесла (0,47 gauss). Может ли этот модуль обнаружить?
@VladimirMedintsev
@VladimirMedintsev 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 микротесла не готово. Поэтому мы не можем видеть это числовое значение в выводе. Как я могу сформулировать векторные значения, чтобы получить это числовое значение?
@Didar.Kussain
@Didar.Kussain 4 года назад
👍
@cb_q
@cb_q 4 года назад
поделитесь, пожалуйста, практиками тестирования кода. т.е. библиотека написана, но нужно проверить её работу во всех возможных случаях (для того чтобы обнаружить и исправить все баги, которые в ней есть еще до начала её использования).
@cb_q
@cb_q 4 года назад
неужели никто никак не тестирует свой код..? не верю!
@chipsoft1
@chipsoft1 4 года назад
@@cb_q Тут git-ом некоторые не пользуются ввиду отсутствия надобности, а вы про тесты :) Я использую gtest и gmock для тестов. Можно полностью съемулировать поступление данных с SPI, CAN и прочих шин данных не имея самого железа. Ну и для теста функция соответствующим образом должна быть написана.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Я вам крамольную штуку щас скажу. Тут все зависит от того, что конкретно надо тестировать. В данном самом примитивном примере все тестирование было в файле main.c проверяешь, смотришь. Тем самым и тестируешь. Математику обработки и фильтрации мы тестируем обычно на ПК. Там проще организовать ввод вывод. Так, что тут ембед тут нет такого овертеста как для ПК. Тут в основном заранее знаешь где будет засада. Тут нет неправильного ввода пользователя, а большинство ошибок оборудования тебя быстро отправят в hard fault так что тут чуть проще. Проще еще и потому что почти всегда пишешь и тут же тестируешь прям на железе наблюдая как оно переключается и взаимодействует. Вот лично я вообще не пишу в отрыве от железа, не интересно.
@cb_q
@cb_q 4 года назад
@@chipsoft1 спасибо, посмотрю.
@cb_q
@cb_q 4 года назад
@@VladimirMedintsev да, надо было сразу уточнить, меня интересуют тесты библиотек у которых довольно сложная логика, т.е. в разных начальных условиях разный результат.
@Nidvoraich
@Nidvoraich 4 года назад
Спасибо за видео! Вы упомянули си++. Скажите, пожалуйста, комфортно ли писать под СТМ на C++? Или пока это будет связано с кучей ограничений и костылями?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Тут вопрос не в комфорте, а в смысле. С++ это прежде всего обьекты. Ну вот хоть стреляйте я не вижу смысла и необходимости тянуть обьекты в микроконтроллеры. Ну к примеру представьте себе обьект I2C куча строк кода чтобы сделать его свойства, а при этом из всей концепции будут торчать рога DMA. Ну если кратко смысла в таком нет абсолютно. Прозрачности не добавит, код перегрузит.
@OlegBovykin
@OlegBovykin 4 года назад
@@VladimirMedintsev Это для простых программ лапша на C прекрасно живет. А что-то более сложное давно пишется на c++. Абстракции сильно помогают развязывать функционал, а нормальная развязка позволяет легко использовать автоматизированное тестирование как в части логики выполнения программы, так и на железе.
@Nidvoraich
@Nidvoraich 4 года назад
@@VladimirMedintsev спасибо за ответ! Я ещё году в 2000 переполз с С на С++, и всё это время привык мыслить объектно-ориентированно. Постоянно при ковырянии с МК хочется написать класс, объединяющий в себе все общие по смыслу данные и методы их обработки. Дело скорее не в работе с периферией, а в удобстве промежуточной обработки полученных данных. И в этом плане строка "#ifdef __cplusplus", создаваемая самим Кубом, очень интригует и каждый раз манит поиграться с С++ в МК (уж коли сами СТМ предполагают такой расклад), но всё же есть сомнения - стоит ли убивать кучу времени, чтоб хотя бы просто пересобрать проект под плюсы... Потому и спросил)
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Проект под плюсы, ну вполне реально если сильно хочется. Только писать больше придется. Кстати вы с плюсами столкнетесь когда AI Keros подключите или TouchGFX. Если какую-либо из этих библиотек используете то есть смысл сразу на C++ и весь проект вести.
@Nidvoraich
@Nidvoraich 4 года назад
@@VladimirMedintsev спасибо за наводку! Так будет куда больше стимула разобраться :)
@alexeykorchevnyy3109
@alexeykorchevnyy3109 3 года назад
объясните, как из 0f плюс единичка получается 8F
@alexandreabramtsev9160
@alexandreabramtsev9160 3 года назад
возми 2 твоих числа 0F и 8F и переведи их в двоичную систему. Ты увидешь что они "единичкой" отличаются - 00001111 и 10001111
@user-vh4kf8vb8p
@user-vh4kf8vb8p 3 года назад
Он же по русски сказал, добавим единичку в старшем бите, старшего байта. Что тут может быть не понятного?
@user-bn2qp6sh8r
@user-bn2qp6sh8r 3 года назад
@@user-vh4kf8vb8p вдарим битом по байту , товарищи !!!
@chipsoft1
@chipsoft1 4 года назад
Честно говоря, это врядли можно назвать библиотекой. Это просто функции по работе с магнитометром для конкретной конфигурации железа, не более. Библиотека она на то и библиотека, чтобы она была написа один раз и использоваться во множестве проектов с различной конфигурацией железа. Если в каждый раз нужно править исходный код тела такой библиотеки под конкретное железо, то это уже не библиотека. Я бы вынес специфические функции для конкретного процессора в отдельный bsp.c файл и в самой библиотеке использовал абстрактные функции из этого файла. Таким образом можно было бы использовать такую библиотеку абсолютно с любым процессором (даже и не АРМом), а сама библиотека ничего не знала бы о том, с каким процессором она вообще работает. Все что нужно для подключения к новому процессору - создать свой bsp файл.
@user-gf3se1un5l
@user-gf3se1un5l 4 года назад
А не могли бы Вы осветить это подробнее и на примере? Очень интересует, как писать эффективно.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
@@user-gf3se1un5l Он предлагает выделить несколько уровней. В одном файле вся физика, привязанная к конкретному железу, в другом абстракция обслуживающая данные. По сути в данном случае такой подход не целесообразен. Ну хоть по той причине что времени потребуется очень много, сильно оторваться от железа для облегчения портируемости не получится. Я бы понял это в случае с дисплеем. Там реально есть что выносить в абстракции, но тоже спорно т. к. снизится скорость работы.
@user-gf3se1un5l
@user-gf3se1un5l 4 года назад
@@VladimirMedintsev спасибо за быстрый ответ и разъяснения (суть уловил), не ожидал. Откровенно говоря пока плаваю в этой области и смотрю как делают другие (тоже по разному) т.к. мк не основная деятельность (к сожалению) и проекты редкие. В свое время, на этапе выбора платформы отказался от ардуино и начал с stm32 периферию в том числе с дма освоил, freertos использовал. Кстати есть вопрос который возможно станет темой нового видеовыпуска. Не совсем хорошо догоняю как на freertos реализовать конечный автомат (может и смешно, но мне не смешно) периферия работает и пересылает данные в другие задачи посредством очередей. Но не могу понять, как реализовать, скажем так, цикл который выполняется до определенных событий, после чего переход в другой цикл, в котором все крутится, до определенных событий, потом третий, четвертый... Без ос можно было бы сделать на свич-кейсах условием перехода была бы переменная флагов. А как сделать подобное на ос? На семафорах? Если можно осветите принцип в следующем видео, думаю будет полезно многим.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
@@user-gf3se1un5l Есть хороший пример того, что имел ввиду Денис. Это библиотека LWIP. Я не смог вспомнить лучшего примера портируемости.
@user-gf3se1un5l
@user-gf3se1un5l 4 года назад
@@VladimirMedintsev почитав другие Ваши комментарии и обоснования выбора си и именно такого стиля написания библиотек. Не стал ПОКА заморачиваться темой портируемости, т.к., действительно, есть другие темы которые позволят быстрее делать проекты. Спасибо за Ваши ответы.
@DmitriyParubov
@DmitriyParubov 10 месяцев назад
Простите, но я это пехну сюды)))) У меня такая проблема возникла. Ардуино мега, на ней CD модуль, GPS, Oied дисплей, Барометр DPS310, Кнопка сброса высоты, nRF24L01 Модуль с CD модулем отказался работать по SPI , Пришлось через сериал1 меги принять сериал с ардуино нано на которой установил nRF24L01( он принимает коррекцию высоты с базы, что то типо псевдо ртк ) Этот сигнал при включении сразу принимается, А ПОСЛЕ ВЫКЛЮЧЕНИЯ БАЗЫ ЧЕРЕЗ ЭННОЕ ВРЕМЯ, СИГНАЛ ВСЁ ЕЩЁ МЕЛЬТИШИТ В ПОРТУ МЕГИ СЕКУНД 20, а так же записывается на карту, В ЧЕМ МОЖЕТ БЫТЬ ПРОБЛЕМА ???
@ibrag2012
@ibrag2012 4 года назад
Десь бачив прикольне рішення від STM: вони бітові мапи ховають в union, а ще в С є офігезна річ enum: дозволяє робити конкретний тип, наприклад "контрольні_регістри".
@intelektum
@intelektum 4 года назад
А почему HAL, а не LL ? По мне так LL поинтереснее.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Чем поинтереснее? Ну а на самом деле я уже делал отдельное видео на этот счет.
@user-ds8od1bx1u
@user-ds8od1bx1u 4 года назад
Владимир доброго времени суток сколько смотрю ваши видео не пойму почему простой обыватель которого заинтересовала тема микроконтроллеров и он хочет этим заняться натыкается на гору кода и кучу видео с кодом в котором ни бум бум и никто не может внятно объяснить от начала до конца как и с чего начать даже продукт stm который надо поставить на ПК и сконфигурировать это просто не правильно поскольку человек когда имеет желание с чего-то начать натыкается на гору непонятного и бросает это дело С уважением Сергей
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Я не знаю. Что в данном видео было вам не понятно?
@sozdatelEd
@sozdatelEd 4 года назад
А если пекаря пустить пилотировать самолёт, то он там тоже будет ни бум бум. Так и обычный обыватель. Есть чёткая последовательность действий и этапов обучения, пройдя которую обычный обыватель начнёт понимать кучу кода. Начинайте с азов и шагайте по мере обучения. Есть много книг по основам программирования и много старей в интернете и куча видео для начинающих на youtube. Не лезьте сразу в дебри. Начните с простого. Гугл при запросе "stm с чего начать" выдаёт годные ссылки на статьи и на 3 адекватных видеоролика.
@Dmitriy_KIPiA
@Dmitriy_KIPiA 4 года назад
@@VladimirMedintsev Буквы))))))))
@DmitroVialkov
@DmitroVialkov 4 года назад
Наверно по той причине, что человек, которого вы описали, пытается искать не то и не там. Блоги, видео 5 минутные и пр. это НЕ СИСТЕМНАЯ ИНФОРМАЦИЯ. Если хочется найти что-то с самого начала, то тут стоит искать как раз такие видео или лучше книги. Они существуют. Правда иногда устаревают по причинам постоянно меняющегося мира, а никто не будет переписывать видео "Установка и знакомство с IDE"при выпуске каждой версии. А иногда отличия существенны. ну и смотреть видео, например по написанию библиотеки, без понимания, а что такое библиотеки, и языка программирования не стоит. Будет. как для меня просмотр урока по арабскому языку. Ну... и из того, на что я натыкался, для начинающих с STM32, оптимальным будет книжка Александра Тарасова themagicsmoke.ru/books/c_for_embedded_systems/ И канал "Народ стрим" ru-vid.com/show-UCXgs4exdtMpz4ccBZS3Yp4g А у Владимира тут темы даже помеченые для новичков, более продвинуты обычно... Я бы их называл "для практикующих новичков".
@pavelboboshkin3898
@pavelboboshkin3898 4 года назад
@@alexandrl.5131 В мозгу автоматически включилась проверка орфографии и расставила все недостающие знаки препинания.
@user-qi2sl4pm2k
@user-qi2sl4pm2k 3 года назад
А если даташита нет, тогда как ?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
А если даташита нет, то зачем вам эта микросхема в вашем изделии? Вы ее как собираетесь использовать? Сейчас на все есть даташиты.
@JackNmD
@JackNmD 3 года назад
@@VladimirMedintsev вот я сейчас на ардуине собираю что-то типа компрессора, датчик давления на 10 атм стоит около 1500 рублей, а у китайцев есть брелок, в шинах давление мерить на 15атм, 100 рублей + доставка 50. Вот зачем микросхема без даташита. Я конечно попробую его прикрутить по i2c, надеюсь получится. yadi.sk/i/wPEv9ryy1XwmOA Это всё, что о нем известно после прозвонки мультиметром... Кстати ось через о пишется, а не Xasi, тоесть Xosi по русски или Xaxis по англ. Я в программировании полный нуб и просмотр вашего подробного видео серьёзно поубавило у меня уверенности, что брелок подключить удасться...
@ResistanceLion
@ResistanceLion Год назад
Надеялся видео про этику, а не методологию
@skeydee
@skeydee 2 года назад
"Ай два си" прям режет ухо... Ну хоть не "и два це". Но лучше называйте вещи своими именами - "ай ту си".
@VladimirMedintsev
@VladimirMedintsev 2 года назад
Я буду называть вещи так, как мне привычно и нравится. Если это ввзывает у вас сильное неприятие, то поставьте отметку не рекомендовать видео с этого канала и они не будут вас беспокоить.
@skeydee
@skeydee 2 года назад
@@VladimirMedintsev зачем же так категорично. Не просто так подписан на Ваш канал - мне нравятся ваши видео, очень много интересной и познавательной информации, неприятия нет. Просто сделал небольшое замечание - в любой сфере есть устоявшиеся понятия и правила произношения, это как тОрты и тортЫ.
@50z10_patpat
@50z10_patpat 2 года назад
Айдвасі це ще ок. З рештою, в вашому оточенні навряд чи є багато людей які читають назви музичних гуртів як блінк ван хандред ейті ту або сам фоті ван. Існує цілий культ людей, які називають це "квадратною шиною", або просто "квадратом" спираючись на вікі. Від такого не то шоб шось ріже - вуха відпадають
@50z10_patpat
@50z10_patpat 2 года назад
Тільки чомусь як мова заходить за англійську назву то всі кажуть ай ту сі, а не i squared c
@alntruisrtbredford
@alntruisrtbredford Год назад
@@50z10_patpat как кому удобно так и называют же, главное что понятно. А так соглашусь с Вами, начавший возмущаться человек, которому режет ухи что-то, наверное каждый раз произносит АрЭс фор хандред ейти файв и ЭйПиАй вместо простого апи. Эстеты, хрен с них взять?! )))
@OlegBovykin
@OlegBovykin 4 года назад
"Я слишком стар чтобы искать библиотеки на гитхабе" - эта фраза прекрасно показывает насколько мир эмбеддед разработки отстает от всего остального программирования. Как все любят ругать ардуинщиков, а в своем глазу бревна не замечают. Куб из коробки генерирует код, который уже построен по принципу лапши: Выделение мест для вставки пользовательского кода комментариями - это ли не прекрасно? Для сравнения можно посмотреть на Rust, который еще молодой, но уже более правильно подходит к организации экосистемы, абстракций и библиотек. Библиотеки для Rust почти всегда имеют нормальную документацию и ридми. Cи до такого никогда уже не дойдет.
@VladimirMedintsev
@VladimirMedintsev 4 года назад
я этот комментарий когда начал читать думал будет щас какая-то идея, а нет, в итоге страдания сектанта от Rust. Умные слова и прочие рекламные проспекты. Очень похоже на свидетелей иеговы. Вы покажите хоть один серьезный проект для МК на этом Rust. Производители МК тоже не торопятся этот 'проект' поддерживать. Так что вы с этим языком там сами как-нибудь. Рассказывайте друг другу как все хорошо. А мы пока работать будем.
@OlegBovykin
@OlegBovykin 4 года назад
​@@VladimirMedintsev Тут скорее секта староверов эмбеддеров. Вы не видите идеи в нормальной организации экосистемы вокруг языка? Вы не видите идеи в выделении абстракций? Или вы считаете, что экосистема у C просто отличная и соответствует 21 веку? Или вы считаете, что код, который генерит куб - это супер классный код? Насчет производителей вы тоже не правы, как минимум несколько оплачивают работы по написанию периферии их микроконтроллеров под раст. Защищать старые (плохие для 21 века) привычки любой ценой не смотря на достижения остального человечества так себе история. Да, раст пока не полностью готов для боевого использования, но Си уже устарел для боевого использования в 21 веке. Крупный эмбед пишут на C++, а не на Си, а сделать проект из куба на плюсах это тот еще танец с бубном. Кстати, а что вы думаете насчет mbed os?
@VladimirMedintsev
@VladimirMedintsev 4 года назад
Я более 30 лет плотно наблюдаю за происходящим в программировании. И конечно же за эти годы мода на языки программирования менялась. Появлялись новые языки, развивалась философия подхода к программированию. Это порождает моду. Вы бы видели с каким жаром и пламенем в сердце несколько лет назад отстаивали честь своего языка приверженцы питона. Теперь я наблюдаю истерику людей прочитавших статью о Rust. А в итоге скажу вам так. Нам не шашечки, нам делать реальные проекты. И в настоящее время эти проекты прекрасно работают на Си. Нет совсем не потому что Си такой хороший язык, а потому что написаны тонны библиотек, создана вся необходимая инфраструктура и инструментарий. И до тех пор, пока не будет поддержки Rust от производителей микроконтроллеров и пока не будет создана вся остальная среда никто из серьезных разработчиков ничего менять не будет. Нет ну правда, сколько мне надо чтобы изучить Rust и перейти? Ну не меньше пол-года. А чтобы более менее серьезно? Да и год и полтора. А кто за меня будет деньги зарабатывать все это время? А что делать с поддержкой старых проектов, а написанного ранее? Да не смешите, мир слишком инерционен. Еще очень и очень долго все будет в нынешнем состоянии. За это время Rust успеет умереть и морально устареть. А люди все еще будут писать на Си. Что касается mbedOS я ее не использую. Я использую FreeRTOS и segger embOS. О причинах я писал уже не один раз. FreeRTOS имеет версию safe которая имеет необходимые мне сертификаты, и эти операционки поддерживаются STMicroelectronics.
@evgeniysvinovsky326
@evgeniysvinovsky326 4 года назад
МК нужно программить на ассемблере.
@evgeniysvinovsky326
@evgeniysvinovsky326 4 года назад
@@VladimirMedintsev а что уже питон не в моде?
@Diamond8822
@Diamond8822 4 года назад
Спасибо
@negodiaysamsonoff9616
@negodiaysamsonoff9616 4 года назад
Спасибо
Далее
🖥️Играю в Cyberpunk на Ардуино!
18:22