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

  Рет қаралды 40,986

Vladimir Medintsev

Vladimir Medintsev

3 жыл бұрын

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

Пікірлер: 197
@danielfedorov7241
@danielfedorov7241 Жыл бұрын
Хорошо бы показать финалочку - создание из этого статической библиотеки. Честно говоря, ожидал именно этого
@user-bx3qg8js3b
@user-bx3qg8js3b 3 жыл бұрын
Владимир, спасибо. Вы ,как всегда, на высоте.
@MegaTraxxas
@MegaTraxxas 3 жыл бұрын
Очень актуальная тема для меня, спасибо!
@danilv.l.2501
@danilv.l.2501 3 жыл бұрын
Владимир, спасибо. Важная и интересная тема.
@holor777
@holor777 3 жыл бұрын
Владимир, спасибо! Очень полезная информация!
@user-gf3se1un5l
@user-gf3se1un5l 3 жыл бұрын
Лайк сразу, только за освещение темы.
@leoned1797
@leoned1797 3 жыл бұрын
Спасибо, делаете полезные видео. Самое сложное,для меня, это заставить себя внимательно читать документацию. Буду ориентируясь на вас писать драйвер для внешнего АЦП.
@AndySm1973
@AndySm1973 3 жыл бұрын
Огромное спасибо!
@user-gh4tc2wo5k
@user-gh4tc2wo5k 3 жыл бұрын
Т.е. по сути мы пишем "драйвер" к определённой внешней периферии. Это полезно, т.к. в ходе написания более подробно изучаешь саму периферию. А если взять готовую библиотеку, некоторые моменты можешь упустить. И потом будешь не понимать, почему работает не так, как тебе надо. Спасибо за видео.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да, безусловно это правильнее называть драйвером.
@sergeigranin7345
@sergeigranin7345 3 жыл бұрын
спасибо за урок, сильно поможет скачать файлы уроковой библиотеки - для меня удобно повторить пошагово с бумагой и видео - быстрее прилипнет к мозгу
@user-rx4rp5yb5j
@user-rx4rp5yb5j 3 жыл бұрын
Спасибо большое!!!
@remontlive
@remontlive 3 жыл бұрын
Здравствуйте, очень хотел как раз такое видео где вы подробно описываете создание библиотеки, я бы даже несколько таких видео с удовольствием посмотрел бы спасибо огромное!
@vitalip2293
@vitalip2293 3 жыл бұрын
Класс!👍
@finskiymaster
@finskiymaster 3 жыл бұрын
Спасибо, как всегда - очень интересно и познавательно. Думаю, всем было бы интересно посмотреть на практическое сравнение этих библиотек. Например, инициализация и вывод в UART банального ”hello, world!". Сравнить по простоте и удобстве написания кода, занимаемому объему и скорости выполнения.
@arzamas1988
@arzamas1988 3 жыл бұрын
Доброго дня! Спасибо за видео. Я, обычно, дефайны констант беру с гитхаба, так как перебивать это лень. Конечно, если используемая микра есть на гите.
@kazimiralmazov2245
@kazimiralmazov2245 3 жыл бұрын
Сразу лайк не глядя ролика. Знаю, что познавательно будет. Спасибо.
@negodiaysamsonoff9616
@negodiaysamsonoff9616 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
@NeussMsk
@NeussMsk 3 жыл бұрын
Спасибо за видео! Подскажите, пожалуйста, как в кейле включить всплывающие подсказки?
@cdeblog
@cdeblog 3 жыл бұрын
Лучше не делать константы макросами, а вот адреса регистров лучше сделать перечислением, тогда ещё на этапе компиляции будет выполнена проверка, главное не забыть включить это предупреждение.
@uyrouygjhvljygv741
@uyrouygjhvljygv741 3 жыл бұрын
супер. хорошее видео. но я ничего не понял .Но очень интересно. :)
@user-bc7tm8vw9g
@user-bc7tm8vw9g 3 жыл бұрын
Когда учат архитекторов им показывают работы лучших архитекторов мира, художники изучают картины лучших мастеров, музыканты великие произведения... И только программистам не повезло((
@olegpetroff6186
@olegpetroff6186 3 жыл бұрын
абсолютно точно, при чем в микроконтроллерах нет программистов, там электронщики думающие, что они программисты!
@user-ot5js1gy5j
@user-ot5js1gy5j 3 жыл бұрын
@@olegpetroff6186 Погромисты ПК думают что они лучше знают как лучше писать код для микроконтроллеров , а воз и ныне там.
@leharuso
@leharuso 3 жыл бұрын
@@user-ot5js1gy5j , они и правда лучше знают как писать код правильно. Но микроконтроллер об этом не знает. :)
@user-gf3se1un5l
@user-gf3se1un5l 3 жыл бұрын
Каждый суслик агроном. Тем не менее лайк за попытку освещения этой темы. Кто знает как лучше с удовольствием посмотрел бы их "картины" и "архитектуру". Ссылки плиз.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 3 жыл бұрын
@@user-gf3se1un5l мне в разное время большие толчки в развитии дали знакомство с minix, FreeRTOS, TNeo, glib, qp framework и книжка его автора, ну и "Wilson G. - Beautiful code"
@ArthurIslamRU
@ArthurIslamRU 3 жыл бұрын
Добрый день Уважаемый Владимир! Как ваши дела? Ждём новых лекций!
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Спасибо огромное. Все очень хорошо. Следующий ролик выйдет в воскресенье.
@user-lo6or9xq8q
@user-lo6or9xq8q 3 жыл бұрын
Очень полезное видео, особенно как для начинающего stm"щика, после ардуино , библиотеки больная тема.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Есть такой эффект. :-)
@kazimiralmazov2245
@kazimiralmazov2245 3 жыл бұрын
@@VladimirMedintsev хорошобы отдельную тему как подключать библиотеки проектов и прописывать пути этих библиотек в Keil
@Xrustaller
@Xrustaller 3 жыл бұрын
Аааа не могу прям :D Ай ту си! А не "ай два си", просто прям ухо режет ахаххаха (не в придирку сказано)
@avi-crakhome2524
@avi-crakhome2524 3 жыл бұрын
Не расшаривать через хедер структуры внутреннего использования!!! На этом нужно было сделать акцент, потому как это очень важно. Начинающие все как один повторяют эту ошибку (я не исключение). Потому что оно само собой получается. У вас это уже пройденный этап, но для юного создателя библиотек - очень важно.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 3 жыл бұрын
Ошибка начинающих программистов - это лазить в такие структуры напрямую, а не через АПИ. А описывать их в ашниках если пишешь на С-ях придется, язык не имеет полноценных средств для инкапсуляции. Будешь скрывать проблем на ровном месте создашь...
@avi-crakhome2524
@avi-crakhome2524 3 жыл бұрын
@@user-bc7tm8vw9g Не надо вообще их светить. Должно быть несколько расшаренных функций с простым и понятным интерфейсом: запустить, уронить в сон, получить/отправить данные. Иначе это не библиотека будет, а нечто размазанное по всем папкам.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 3 жыл бұрын
@@avi-crakhome2524 ну а структура описывающая "класс" драйвера нужна? А если несколько микросхем надо обслуживать? И если она всё-таки нужна, то её тоже скрывать?
@avi-crakhome2524
@avi-crakhome2524 3 жыл бұрын
@@user-bc7tm8vw9g Давайте определимся в возможностях библиотеки. Либо она всё делает сама(драйвер), и выдаёт готовые данные в расшаренную структуру(только данные!!!). Либо ваш вариант - библиотека которая поддерживает всё и вся, но требующая внешнего управления. Лично мне нравится когда оно само работает.
@user-bc7tm8vw9g
@user-bc7tm8vw9g 3 жыл бұрын
@@avi-crakhome2524 Пусть само работает, я тоже за это. А причем здесь расшаривание? У меня вот все само работает, но объект драйвера со всеми его кишками виден всем. Оч удобно для отладки. Никаких проблем с созданием статического объекта драйвера. Никаких проблем со множественными объектами драйвера. Если что-то не предусмотрел, то в крайнем случае можно грязно залезть внутрь ручками, хотя и крайне не рекомендуется - так сказать под личную ответственность)
@eric13hoop
@eric13hoop 3 жыл бұрын
Дядя, если вы хотите стать главным СТэМщиком русского ютубу - не пропадай те так на долго.
@Okaboka96
@Okaboka96 3 жыл бұрын
Увидел ваше видео, поставил лайк
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да прибудет с вами сила.
@redtex
@redtex 3 жыл бұрын
@@VladimirMedintsev Аминь.
@sozdatelEd
@sozdatelEd 3 жыл бұрын
@@VladimirMedintsev ДА БУДЕТ ТАК!!!
@user-bn2qp6sh8r
@user-bn2qp6sh8r 3 жыл бұрын
Не поспешил ?
@Didar.Kussain
@Didar.Kussain 3 жыл бұрын
👍
@ebjikkolu4757
@ebjikkolu4757 3 жыл бұрын
Добрый день,Владимир . Скажите ,вы плату сами проектировали и заказывали? Я столкнулся с проблемой ,у меня есть микросхема от емкостного тачскрина в корпусе QFN с шагом ножек 0,40мм .Я не могу нигде найти болванки (pcb) с такими параметрами .Вижу 2 варианта,либо проектировать и заказывать такое посадочное место ,либо пытаться подпаяться к ножкам с помощью очень тонкого провода
@ebjikkolu4757
@ebjikkolu4757 3 жыл бұрын
Пардон ,писал коммент на 2 минуте видео ,вопрос снят
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
:-)
@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 микротесла не готово. Поэтому мы не можем видеть это числовое значение в выводе. Как я могу сформулировать векторные значения, чтобы получить это числовое значение?
@AngorSTV1
@AngorSTV1 3 жыл бұрын
Хотелось бы увидеть как эту библиотеку использовать в других проектах. Я сам проф на Java и у нас есть сборщик зависимостей Gradle , есть ли что то подобное для stm ide ?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Слава Господу нет необходимости в таких инструментах для STM. Тут все гораздо проще. Ну если кто-то специально себе жизнь не усложняет.
@AngorSTV1
@AngorSTV1 3 жыл бұрын
Vladimir Medintsev где хранить готовые библиотеки и как их подключать в проект?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Это не проект для ПК. Тут нет кросплатформенности и прочих заморочек. Тут нет виртуальных машин. Железо рядом. Вы от него не изолированы. Вы где драйвер клавиатуры у себя на ПК храните? Тут просто файл который вы подключаете к проекту. Нет серьезно, а вот CMSIS, LL, HAL, AI, LWIP и прочие библиотеки вы где храните? В файлах. Как подключаете? #include "libname.h" В языке Си как библиотеки подключать? Кинуть файлы в папку, вписать include и пользуй.
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
Пишите свои библиотеки, ибо чужие это кот в мешке, возможно с глюками, каждый из которых, вас ставит в полный тупик, поскольку не вы это писали. Сие - главная болезнь ардуинщиков. P. S. Не зазорно юзать китайские библиотеки инициализации китайских дисплеев, так как их по ходу делали рептилоиды, и без шаманства и черной магии они не инициализируются. Отправляем в недокументированные регистры недокументированные команды... Китайцы.... Ну и всякие обкатанные и проверенные, типа работы с SD, USB (он настолько сложен, что лучше не углубляться, там пропасть инкапсуляций)
@mvxburov
@mvxburov 2 жыл бұрын
"освоил язык С...ну или думаешь, что освоил" :D я уже год не могу определиться в этом вопросе
@alntruisrtbredford
@alntruisrtbredford Жыл бұрын
ага, а потом сталкиваешься с Objective-C и понимаешь, что ты ничего не понимаешь, и что это какая-то страшная жесть для пытки людей)
@cb_q
@cb_q 3 жыл бұрын
21:45 12 строка >*(uint8_t *)data = answer[1]; но data уже имеет тип uint8_t*, зачем приводить к тому же типу? подстраховка или остаточные артефакты после правок?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Это не приведение типа. Там * это ссылка на 1й элемент массива.
@cb_q
@cb_q 3 жыл бұрын
@@VladimirMedintsev , *(uint8_t *)data равноценно *data (т.к. data имеет тип uint8_t*), я это имел ввиду. либо вообще можно было написать data[0] = answer[1]
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@cb_q Да, так тоже можно. Но код получается разный. Компилятор эти случаи переваривает по разному. Вы откомпилируйте и посмотрите. Очень занимательное времяпрепровождение.
@chipsoft1
@chipsoft1 3 жыл бұрын
@@VladimirMedintsev Вот специально взял ARM gcc 9.2 - разницы никакой в коде не увидел. Проверял тут: godbolt.org/
@efiron
@efiron Жыл бұрын
Вот так просто, функциями, на понятном языке объяснить новичкам, как подключить и обработать данные датчика. А потом начинается, тут программно датчик прикрутил, тут Master Modbus RTU задействовал и Slave ModbusTCP на внешку в серверу, а еще драйвер Ethernet накинул, библиотеку таймеров в ООП накидал, данные расплодились - надо обработку баз данных подключить, переменные подчистить и ссылки на место в массиве прописать. Через месяц смотришь, десяток другой файлов по функционалу уже лежат в проекте и 6-7 тыс. строк уже наклавиатурены... А ведь еще только начал..
@cb_q
@cb_q 3 жыл бұрын
поделитесь, пожалуйста, практиками тестирования кода. т.е. библиотека написана, но нужно проверить её работу во всех возможных случаях (для того чтобы обнаружить и исправить все баги, которые в ней есть еще до начала её использования).
@cb_q
@cb_q 3 жыл бұрын
неужели никто никак не тестирует свой код..? не верю!
@chipsoft1
@chipsoft1 3 жыл бұрын
@@cb_q Тут git-ом некоторые не пользуются ввиду отсутствия надобности, а вы про тесты :) Я использую gtest и gmock для тестов. Можно полностью съемулировать поступление данных с SPI, CAN и прочих шин данных не имея самого железа. Ну и для теста функция соответствующим образом должна быть написана.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Я вам крамольную штуку щас скажу. Тут все зависит от того, что конкретно надо тестировать. В данном самом примитивном примере все тестирование было в файле main.c проверяешь, смотришь. Тем самым и тестируешь. Математику обработки и фильтрации мы тестируем обычно на ПК. Там проще организовать ввод вывод. Так, что тут ембед тут нет такого овертеста как для ПК. Тут в основном заранее знаешь где будет засада. Тут нет неправильного ввода пользователя, а большинство ошибок оборудования тебя быстро отправят в hard fault так что тут чуть проще. Проще еще и потому что почти всегда пишешь и тут же тестируешь прям на железе наблюдая как оно переключается и взаимодействует. Вот лично я вообще не пишу в отрыве от железа, не интересно.
@cb_q
@cb_q 3 жыл бұрын
@@chipsoft1 спасибо, посмотрю.
@cb_q
@cb_q 3 жыл бұрын
@@VladimirMedintsev да, надо было сразу уточнить, меня интересуют тесты библиотек у которых довольно сложная логика, т.е. в разных начальных условиях разный результат.
@alekseibutyaev2318
@alekseibutyaev2318 11 ай бұрын
Бит филд Это следующий уровень програмирования.. избавляет кол от всяких OR AND
@Nidvoraich
@Nidvoraich 3 жыл бұрын
Спасибо за видео! Вы упомянули си++. Скажите, пожалуйста, комфортно ли писать под СТМ на C++? Или пока это будет связано с кучей ограничений и костылями?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Тут вопрос не в комфорте, а в смысле. С++ это прежде всего обьекты. Ну вот хоть стреляйте я не вижу смысла и необходимости тянуть обьекты в микроконтроллеры. Ну к примеру представьте себе обьект I2C куча строк кода чтобы сделать его свойства, а при этом из всей концепции будут торчать рога DMA. Ну если кратко смысла в таком нет абсолютно. Прозрачности не добавит, код перегрузит.
@OlegBovykin
@OlegBovykin 3 жыл бұрын
@@VladimirMedintsev Это для простых программ лапша на C прекрасно живет. А что-то более сложное давно пишется на c++. Абстракции сильно помогают развязывать функционал, а нормальная развязка позволяет легко использовать автоматизированное тестирование как в части логики выполнения программы, так и на железе.
@Nidvoraich
@Nidvoraich 3 жыл бұрын
@@VladimirMedintsev спасибо за ответ! Я ещё году в 2000 переполз с С на С++, и всё это время привык мыслить объектно-ориентированно. Постоянно при ковырянии с МК хочется написать класс, объединяющий в себе все общие по смыслу данные и методы их обработки. Дело скорее не в работе с периферией, а в удобстве промежуточной обработки полученных данных. И в этом плане строка "#ifdef __cplusplus", создаваемая самим Кубом, очень интригует и каждый раз манит поиграться с С++ в МК (уж коли сами СТМ предполагают такой расклад), но всё же есть сомнения - стоит ли убивать кучу времени, чтоб хотя бы просто пересобрать проект под плюсы... Потому и спросил)
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Проект под плюсы, ну вполне реально если сильно хочется. Только писать больше придется. Кстати вы с плюсами столкнетесь когда AI Keros подключите или TouchGFX. Если какую-либо из этих библиотек используете то есть смысл сразу на C++ и весь проект вести.
@Nidvoraich
@Nidvoraich 3 жыл бұрын
@@VladimirMedintsev спасибо за наводку! Так будет куда больше стимула разобраться :)
@oleksiilive2084
@oleksiilive2084 3 жыл бұрын
Расскажите как правильно читать datasheet документы. Для меня найти в документе нужные данные - это вообще проблема ещё та. Изучаю неделями, пока начнёт что-то получаться. Может это проблема знания английского?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Давайте честно, ну сколько слов необходимо знать чтобы прочитать даташит? Ну там технический английский. Ну 400-600 слов максимум в словарном запасе. Это способен выучить каждый человек. Там более что вам не надо говорить, вам надо просто прочитать. Но как-нибудь расскажу в ролике для начинающих.
@oleksiilive2084
@oleksiilive2084 3 жыл бұрын
@@VladimirMedintsev К примеру. На днях обзавёлся Attiny13 для мелких задач. Режим сна запустил почти сразу, а вот вывести с этого состояния так и не смог, теперь датчик работы двигателя автомобиля работает на постоянной основе (прерывание от работы катушки, и таймер замеряющий промежутки) I2C выдаёт обороты и реле включаемое при запущенном моторе. Режим сна так и не работает, потому как не могу с него выйти по внешнему прерыванию. Уже задолбался datasheet штудировать
@DmitroVialkov
@DmitroVialkov 3 жыл бұрын
Чтение даташитов. это банальный навык. Скажем так, первые три идут проблемно... Следующие три, ты замечаешь, что уже знаешь, что где находится в даташите, и знаешь почти все слова. Поэтому гараздо проще становиться. Ну и дальше уже ты спокойно берешь и читаешь. Маленький совет насчет того, чтобы лучше читать даташиты, начинай писать комментарии к своему коду на английском... Учитуй, что в техническом тексте используются только простые времена. Поэтому быстро привыкаешь. Используются термины, которые и так переносяться на русский язык, и ты их, скорей всего, уже знаешь. Обычно проблема больше моральная... "Я не знаю английский, поэтому не смогу читать даташиты", тебе ее нужно превратить в "Я могу читать даташиты, поэтому пора начинать читать и книги"
@Nidvoraich
@Nidvoraich 3 жыл бұрын
@@VladimirMedintsev я знаю инглиш достаточно хорошо. Но просьбу поддерживаю. Нам в институте однажды преподаватель дал хороший совет - прежде, чем начинаешь читать какой-то учебник или пособие - прочитай всё оглавление, чтоб уложить в голове структуру повествования. С документацией по МК всё несколько сложнее, потому что там само оглавление объёмом с учебник :) Алексея Кластер (возможно, знаком Вам) в своём видео об СТМ kzbin.info/www/bejne/fH6TmHqJdstrnJY тоже говорил, что несмотря на свой богатейший опыт работы с МК - при изучении СТМ32 первые пару недель просто хватался за голову и ничего не понимал. И он в видео посоветовал начать изучение со структуры МК и его внутренних связей. По крайней мере, для него это стало неким озарением. Ну и работа с регистрами, конечно же. Очень хотелось бы узнать Ваш опыт в этом плане. Даже если видео сведётся к теме "Основы работы микроконтроллера СТМ32" - всё равно будет очень хорошо и крайне полезно взглянуть на СТМ сквозь призму Вашего понимания!
@cb_q
@cb_q 3 жыл бұрын
@@oleksiilive2084 странно что вы не разобрались в datasheet для AVR. они довольно поостые - описание одного мк в одном файле. у ATTiny13 три режима сна - Idle, ADC Noise Reduction, Power-Down. в datasheet есть таблица с прерываниями, которые могут пробудить ото сна мк в каждом режиме (7.1. Sleep Modes). вы хотите выходить из сна по какому прерыванию?
@myvin2887
@myvin2887 10 ай бұрын
Так и не понял, а где тут именно библиотека.
@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 вдарим битом по байту , товарищи !!!
@DmitriyParubov
@DmitriyParubov 8 ай бұрын
Простите, но я это пехну сюды)))) У меня такая проблема возникла. Ардуино мега, на ней CD модуль, GPS, Oied дисплей, Барометр DPS310, Кнопка сброса высоты, nRF24L01 Модуль с CD модулем отказался работать по SPI , Пришлось через сериал1 меги принять сериал с ардуино нано на которой установил nRF24L01( он принимает коррекцию высоты с базы, что то типо псевдо ртк ) Этот сигнал при включении сразу принимается, А ПОСЛЕ ВЫКЛЮЧЕНИЯ БАЗЫ ЧЕРЕЗ ЭННОЕ ВРЕМЯ, СИГНАЛ ВСЁ ЕЩЁ МЕЛЬТИШИТ В ПОРТУ МЕГИ СЕКУНД 20, а так же записывается на карту, В ЧЕМ МОЖЕТ БЫТЬ ПРОБЛЕМА ???
@intelektum
@intelektum 3 жыл бұрын
А почему HAL, а не LL ? По мне так LL поинтереснее.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Чем поинтереснее? Ну а на самом деле я уже делал отдельное видео на этот счет.
@ibrag2012
@ibrag2012 3 жыл бұрын
Десь бачив прикольне рішення від STM: вони бітові мапи ховають в union, а ще в С є офігезна річ enum: дозволяє робити конкретний тип, наприклад "контрольні_регістри".
@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 по англ. Я в программировании полный нуб и просмотр вашего подробного видео серьёзно поубавило у меня уверенности, что брелок подключить удасться...
@chipsoft1
@chipsoft1 3 жыл бұрын
Честно говоря, это врядли можно назвать библиотекой. Это просто функции по работе с магнитометром для конкретной конфигурации железа, не более. Библиотека она на то и библиотека, чтобы она была написа один раз и использоваться во множестве проектов с различной конфигурацией железа. Если в каждый раз нужно править исходный код тела такой библиотеки под конкретное железо, то это уже не библиотека. Я бы вынес специфические функции для конкретного процессора в отдельный bsp.c файл и в самой библиотеке использовал абстрактные функции из этого файла. Таким образом можно было бы использовать такую библиотеку абсолютно с любым процессором (даже и не АРМом), а сама библиотека ничего не знала бы о том, с каким процессором она вообще работает. Все что нужно для подключения к новому процессору - создать свой bsp файл.
@user-gf3se1un5l
@user-gf3se1un5l 3 жыл бұрын
А не могли бы Вы осветить это подробнее и на примере? Очень интересует, как писать эффективно.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@user-gf3se1un5l Он предлагает выделить несколько уровней. В одном файле вся физика, привязанная к конкретному железу, в другом абстракция обслуживающая данные. По сути в данном случае такой подход не целесообразен. Ну хоть по той причине что времени потребуется очень много, сильно оторваться от железа для облегчения портируемости не получится. Я бы понял это в случае с дисплеем. Там реально есть что выносить в абстракции, но тоже спорно т. к. снизится скорость работы.
@user-gf3se1un5l
@user-gf3se1un5l 3 жыл бұрын
@@VladimirMedintsev спасибо за быстрый ответ и разъяснения (суть уловил), не ожидал. Откровенно говоря пока плаваю в этой области и смотрю как делают другие (тоже по разному) т.к. мк не основная деятельность (к сожалению) и проекты редкие. В свое время, на этапе выбора платформы отказался от ардуино и начал с stm32 периферию в том числе с дма освоил, freertos использовал. Кстати есть вопрос который возможно станет темой нового видеовыпуска. Не совсем хорошо догоняю как на freertos реализовать конечный автомат (может и смешно, но мне не смешно) периферия работает и пересылает данные в другие задачи посредством очередей. Но не могу понять, как реализовать, скажем так, цикл который выполняется до определенных событий, после чего переход в другой цикл, в котором все крутится, до определенных событий, потом третий, четвертый... Без ос можно было бы сделать на свич-кейсах условием перехода была бы переменная флагов. А как сделать подобное на ос? На семафорах? Если можно осветите принцип в следующем видео, думаю будет полезно многим.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@user-gf3se1un5l Есть хороший пример того, что имел ввиду Денис. Это библиотека LWIP. Я не смог вспомнить лучшего примера портируемости.
@user-gf3se1un5l
@user-gf3se1un5l 3 жыл бұрын
@@VladimirMedintsev почитав другие Ваши комментарии и обоснования выбора си и именно такого стиля написания библиотек. Не стал ПОКА заморачиваться темой портируемости, т.к., действительно, есть другие темы которые позволят быстрее делать проекты. Спасибо за Ваши ответы.
@user-ds8od1bx1u
@user-ds8od1bx1u 3 жыл бұрын
Владимир доброго времени суток сколько смотрю ваши видео не пойму почему простой обыватель которого заинтересовала тема микроконтроллеров и он хочет этим заняться натыкается на гору кода и кучу видео с кодом в котором ни бум бум и никто не может внятно объяснить от начала до конца как и с чего начать даже продукт stm который надо поставить на ПК и сконфигурировать это просто не правильно поскольку человек когда имеет желание с чего-то начать натыкается на гору непонятного и бросает это дело С уважением Сергей
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Я не знаю. Что в данном видео было вам не понятно?
@sozdatelEd
@sozdatelEd 3 жыл бұрын
А если пекаря пустить пилотировать самолёт, то он там тоже будет ни бум бум. Так и обычный обыватель. Есть чёткая последовательность действий и этапов обучения, пройдя которую обычный обыватель начнёт понимать кучу кода. Начинайте с азов и шагайте по мере обучения. Есть много книг по основам программирования и много старей в интернете и куча видео для начинающих на youtube. Не лезьте сразу в дебри. Начните с простого. Гугл при запросе "stm с чего начать" выдаёт годные ссылки на статьи и на 3 адекватных видеоролика.
@Dmitriy_KIPiA
@Dmitriy_KIPiA 3 жыл бұрын
@@VladimirMedintsev Буквы))))))))
@DmitroVialkov
@DmitroVialkov 3 жыл бұрын
Наверно по той причине, что человек, которого вы описали, пытается искать не то и не там. Блоги, видео 5 минутные и пр. это НЕ СИСТЕМНАЯ ИНФОРМАЦИЯ. Если хочется найти что-то с самого начала, то тут стоит искать как раз такие видео или лучше книги. Они существуют. Правда иногда устаревают по причинам постоянно меняющегося мира, а никто не будет переписывать видео "Установка и знакомство с IDE"при выпуске каждой версии. А иногда отличия существенны. ну и смотреть видео, например по написанию библиотеки, без понимания, а что такое библиотеки, и языка программирования не стоит. Будет. как для меня просмотр урока по арабскому языку. Ну... и из того, на что я натыкался, для начинающих с STM32, оптимальным будет книжка Александра Тарасова themagicsmoke.ru/books/c_for_embedded_systems/ И канал "Народ стрим" kzbin.info/door/Xgs4exdtMpz4ccBZS3Yp4g А у Владимира тут темы даже помеченые для новичков, более продвинуты обычно... Я бы их называл "для практикующих новичков".
@pavelboboshkin3898
@pavelboboshkin3898 3 жыл бұрын
@@alexandrl.5131 В мозгу автоматически включилась проверка орфографии и расставила все недостающие знаки препинания.
@ResistanceLion
@ResistanceLion Жыл бұрын
Надеялся видео про этику, а не методологию
@skeydee
@skeydee Жыл бұрын
"Ай два си" прям режет ухо... Ну хоть не "и два це". Но лучше называйте вещи своими именами - "ай ту си".
@VladimirMedintsev
@VladimirMedintsev Жыл бұрын
Я буду называть вещи так, как мне привычно и нравится. Если это ввзывает у вас сильное неприятие, то поставьте отметку не рекомендовать видео с этого канала и они не будут вас беспокоить.
@skeydee
@skeydee Жыл бұрын
@@VladimirMedintsev зачем же так категорично. Не просто так подписан на Ваш канал - мне нравятся ваши видео, очень много интересной и познавательной информации, неприятия нет. Просто сделал небольшое замечание - в любой сфере есть устоявшиеся понятия и правила произношения, это как тОрты и тортЫ.
@50z10_patpat
@50z10_patpat Жыл бұрын
Айдвасі це ще ок. З рештою, в вашому оточенні навряд чи є багато людей які читають назви музичних гуртів як блінк ван хандред ейті ту або сам фоті ван. Існує цілий культ людей, які називають це "квадратною шиною", або просто "квадратом" спираючись на вікі. Від такого не то шоб шось ріже - вуха відпадають
@50z10_patpat
@50z10_patpat Жыл бұрын
Тільки чомусь як мова заходить за англійську назву то всі кажуть ай ту сі, а не i squared c
@alntruisrtbredford
@alntruisrtbredford Жыл бұрын
@@50z10_patpat как кому удобно так и называют же, главное что понятно. А так соглашусь с Вами, начавший возмущаться человек, которому режет ухи что-то, наверное каждый раз произносит АрЭс фор хандред ейти файв и ЭйПиАй вместо простого апи. Эстеты, хрен с них взять?! )))
@OlegBovykin
@OlegBovykin 3 жыл бұрын
"Я слишком стар чтобы искать библиотеки на гитхабе" - эта фраза прекрасно показывает насколько мир эмбеддед разработки отстает от всего остального программирования. Как все любят ругать ардуинщиков, а в своем глазу бревна не замечают. Куб из коробки генерирует код, который уже построен по принципу лапши: Выделение мест для вставки пользовательского кода комментариями - это ли не прекрасно? Для сравнения можно посмотреть на Rust, который еще молодой, но уже более правильно подходит к организации экосистемы, абстракций и библиотек. Библиотеки для Rust почти всегда имеют нормальную документацию и ридми. Cи до такого никогда уже не дойдет.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
я этот комментарий когда начал читать думал будет щас какая-то идея, а нет, в итоге страдания сектанта от Rust. Умные слова и прочие рекламные проспекты. Очень похоже на свидетелей иеговы. Вы покажите хоть один серьезный проект для МК на этом Rust. Производители МК тоже не торопятся этот 'проект' поддерживать. Так что вы с этим языком там сами как-нибудь. Рассказывайте друг другу как все хорошо. А мы пока работать будем.
@OlegBovykin
@OlegBovykin 3 жыл бұрын
​@@VladimirMedintsev Тут скорее секта староверов эмбеддеров. Вы не видите идеи в нормальной организации экосистемы вокруг языка? Вы не видите идеи в выделении абстракций? Или вы считаете, что экосистема у C просто отличная и соответствует 21 веку? Или вы считаете, что код, который генерит куб - это супер классный код? Насчет производителей вы тоже не правы, как минимум несколько оплачивают работы по написанию периферии их микроконтроллеров под раст. Защищать старые (плохие для 21 века) привычки любой ценой не смотря на достижения остального человечества так себе история. Да, раст пока не полностью готов для боевого использования, но Си уже устарел для боевого использования в 21 веке. Крупный эмбед пишут на C++, а не на Си, а сделать проект из куба на плюсах это тот еще танец с бубном. Кстати, а что вы думаете насчет mbed os?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Я более 30 лет плотно наблюдаю за происходящим в программировании. И конечно же за эти годы мода на языки программирования менялась. Появлялись новые языки, развивалась философия подхода к программированию. Это порождает моду. Вы бы видели с каким жаром и пламенем в сердце несколько лет назад отстаивали честь своего языка приверженцы питона. Теперь я наблюдаю истерику людей прочитавших статью о Rust. А в итоге скажу вам так. Нам не шашечки, нам делать реальные проекты. И в настоящее время эти проекты прекрасно работают на Си. Нет совсем не потому что Си такой хороший язык, а потому что написаны тонны библиотек, создана вся необходимая инфраструктура и инструментарий. И до тех пор, пока не будет поддержки Rust от производителей микроконтроллеров и пока не будет создана вся остальная среда никто из серьезных разработчиков ничего менять не будет. Нет ну правда, сколько мне надо чтобы изучить Rust и перейти? Ну не меньше пол-года. А чтобы более менее серьезно? Да и год и полтора. А кто за меня будет деньги зарабатывать все это время? А что делать с поддержкой старых проектов, а написанного ранее? Да не смешите, мир слишком инерционен. Еще очень и очень долго все будет в нынешнем состоянии. За это время Rust успеет умереть и морально устареть. А люди все еще будут писать на Си. Что касается mbedOS я ее не использую. Я использую FreeRTOS и segger embOS. О причинах я писал уже не один раз. FreeRTOS имеет версию safe которая имеет необходимые мне сертификаты, и эти операционки поддерживаются STMicroelectronics.
@evgeniysvinovsky326
@evgeniysvinovsky326 3 жыл бұрын
МК нужно программить на ассемблере.
@evgeniysvinovsky326
@evgeniysvinovsky326 3 жыл бұрын
@@VladimirMedintsev а что уже питон не в моде?
@Diamond8822
@Diamond8822 3 жыл бұрын
Спасибо
@mcvladoc8818
@mcvladoc8818 3 жыл бұрын
Спасибо
小女孩把路人当成离世的妈妈,太感人了.#short #angel #clown
00:53
STM32 DMA ч.1
26:54
MBDLB
Рет қаралды 1,3 М.
🖥️Играю в Cyberpunk на Ардуино!
18:22
AlexGyver
Рет қаралды 1,2 МЛН
Как работает автопилот на Lixiang L9 Max
0:34
Семен Ефимов
Рет қаралды 16 М.