Спасибо! Подписался. Качество изложения и представленных материалов, на мой взгляд, лучшее из просмотренных мной. Хотел сделать что-то для управления argb "на коленке", а здесь уже все есть на 99%).
@AlexZjustLetter-NotWar2 жыл бұрын
ВПН пашет, теперь можно посмотреть про работу лампочек) очень доходчиво, спасибо, буду разбираться дальше
@tupoy_ytub_uberi_psevdonim2 жыл бұрын
Ты лучший просто, мне так повезло найти кого то у кого то же f401-ый.
@artsiomkazlouski51279 ай бұрын
Очень интересно… но посмотрю потом)
@edba7410 Жыл бұрын
Пытался повторить по видео, для stm32f103c8t6, но у меня почему-то нет файлов проекте CMakeLists.txt, CMakeLists_template.txt и ещё нескольких. Можете подсказать, где что нужно установить, чтобы они сгенерировались?
@smert_okupantam7 ай бұрын
в Ардуино ИДЕ есть такое? вы уже добавили?
@v0lm0ntg Жыл бұрын
Интересная ситуация. На Nucleo F446, таймер не останавливается, молотит без остановки вечность ( с любой конфигурацией DMA и разным количеством диодов ).
@CrazyGeeks Жыл бұрын
Да, там действительно косяк есть такой, ещё встречается и на других камнях Там на определённом количестве диодов таймер тоже не останавливается Я кажется пытался починить эту проблему, но ничего не вышло Пока ещё собираю обратную связь, пока нет времени на починку, особенно не всплывает пока никаких проектов, чтоб целенаправленно починить Я в основном всё на F103 и F401 тестил, так что на других сериях могут проблемы вылезать, да Но в какой-то момент это случится ) Даже были потуги в многоканальную передачу, возможно оно увидит опен-сурс
@easystm68652 жыл бұрын
Интересно, подпишусь
@mexanik240 Жыл бұрын
Добрый день. Пробую запустить на STM32F030. Вроде все по инструкции сделал но генерации нету. Эту библиотеку на такой камень можно натянуть?
@sergey705 Жыл бұрын
Спасибо за либку. Как раз проверил на ней G030K6T6 с али. Единственный непонятный момент - линейка 8 светодиодов, дефайн NUM_PIXELS ставлю 8 - работает только 2 диода, ставлю 32 - работают все 8
@CrazyGeeks Жыл бұрын
Да, там есть некоторое количество багов, например при определённом количестве диодов цепочка зацикливается и не останавливается На разных камнях разные шины - поэтому автоподбор клоков не работает - не было возможности проверить это всё прям везде Пока просто нет времени чинить, но это обязательно случится )) А с количеством - может ошибка с размером ячейки у дма
@sergey705 Жыл бұрын
@@CrazyGeeks косяк был найден. В настройках таймера (дма) сначала сделал как на сайте - длина данных: периферия - слово, память - байт. Поставил слово-слово (как в этом видео) и все заработало ) Правда с примером змейки (из видео) с задержкой в 1 мс чуть эпилепсию не словил
@janedoe6182 Жыл бұрын
Почему подтягивающий резистор, а не пуш-пулл режим? Адресная лента отлично работатет от импульсов амплитудой 3.3В
@CrazyGeeks Жыл бұрын
Обычно МК питается от дохлых ЛДО, которые дают 3.0 Вольта и ниже. А лента питается от БП 5.1 Вольта, например. Вот и выходит, что логика совершенно не согласуется
@janedoe6182 Жыл бұрын
@@CrazyGeeks А что за ЛДО такие? Вот у меня NodeMCU, питается через USB от длиинного провода, на котором теряется 0.5 вольта. Потом LDO HT7333 делает из 4.5 вольт 3.3, и питает ESP, который кушает до 450мА в моменты передачи по Wi-Fi. И лента подключена без подтяжки, а просто через килоомный резистор, чтобы вывод случайно не пожечь. И все работает. Я думаю, если ты эту свою подтяжку уберешь, у тебя тоже заработает. Ну а если LDO из 5 вольт 3.3 не может сделать, то это не подтяжки надо, а LDO менять.
@ArthurIslamRU2 жыл бұрын
Красавчик
@paulokaydan Жыл бұрын
привет. подскажи пожалуйста какой можно взять найменьший по габаритам микроконтроллер, который бы справился с адресной лентой и при этом не был слишком избыточньім в плане своей производительности?
@CrazyGeeks Жыл бұрын
ну можно в сторону G0 посмотреть, ядро М0 должно всё потянуть
@kostiantynhordii32449 ай бұрын
День добрый. Решил повторить ваш проект, установил все, прошел по инструкции, но почему-то период тактов на ленту не 1,25 а 5 us. Можете подсказать в чем дело? Или хотя бы где искать проблему?) nucleo-l476rg
@drollery63992 жыл бұрын
В Атмегах есть SPI, обрезаешь входной провод, и кидаешь в регистр по 8 бит. Работает на частоте 800КГц спокойно. По прерыванию, от SPI. Код основной крутится, не замечая прерывание. Не надо грязи, на эти МК лить. С этим ОМНОМ они справяться. Для этого и сделаны. STM32 нужны эхолоты делать(где экран только отнимет половину мощности), автомобильные блоки управления вполне для STM работа, медицинские приборы, и другое сложное оборудование(промышленное). Рулить лентой с помощью STM это забивать гвозди, микроскопом. В принципе можно, но так по дурацки. Хотя для начинающих самое оно, как пример. Но не надо при этом невзначай кидать какашки на Атмеги 🙂 По ходу так сказать, для красного словца.
@CrazyGeeks2 жыл бұрын
Я долго думал, что ответить, но вот созрел Тут встаёт ключевой вопрос о том, как эти прерывания блокируют выполнение кода, ведь в Cortex-M есть DMA всё таки, который позволяет "вкинуть пачку данных и забыть" Да и занимать целый SPI в камнях с малым количеством выводов это очень расточительно Про автомобильные блоки и медицинские устройства тоже не согласен. Сравните количество и разнообразие периферии просто. В AVR её считай нет На что-то простое мне например проще F0 повесить, потому что AVR-GCC я не изучал, на ардуино мне писать зашкварно, на стм мне задачу решить быстрее. А по производительности F0 будет едва быстрее 328 меги Не говоря уже о том, что атмега сейчас местами тупо дороже, чем F0/L0 Естественно использовать ARM исключительно для отрисовки адрески это бред. Но кто говорит про использование в самостоятельном виде? Открою секрет: та адреска, что у меня висит за спиной в новостных роликах, управляется ардуинкой. Потому что ничего другого от неё и не нужно, мне дешевле по времени перед записью накидать цвета и прошить, чем изобретать свой контроллер на стм. Вот у меня есть устройство, под которое эта библиотека и разрабатывалась: Там и 2 USB: один Host, другой Device (на UART я проприетарный протокол городить не хочу), всё это общается по SPI с ESP32, по SDIO с SD-картой, и т.д. Для другого коммерческого устройства готовлю многоканальный вариант (16 и более каналов адрески) Прошлой зимой ко мне заказчик пришёл, дал задачку на портирование arduino-прошивки на STM, с добавлением доп. функционала Потому что AVR это такая вещь, что по-отдельности всё работает, а всё вместе - нет. Я так же к STM и пришёл. У меня на 32u4 тупо не работала связка USB + USB Host Shield (MAX3421E) + Адреска + ESP32 Вот и все доводы
@alee-j8q Жыл бұрын
а что делать если я уперся в динамическую память? мне нужно рулить 720-ю светодиодами при помощи arduino nano. это 5 метров ленты (144 ЛЕДа на метр).
@SevenNightdreemVeryPavlovny Жыл бұрын
Внезапно STM ещё и дешевле получается, а дма канал это вообще песня, повесил на него что надо и переключай контекст. Огромная разгрузка ядра
@bozhkou4 ай бұрын
@@CrazyGeeks Расскажи как у тебя работает USB CDC + Твоя библиотека в stm? А в самой массовой f103c8? DMA не мешает? По отдельности работает) А вместе - нет (где-то такое про avr написано было))) Для управления светодиодами раз пол года - сойдет такой подход. Для реального использования (не коммерческого, а даже для себя любимого) всяко удобнее воткнул девайс - отправил пару команд и радуйся, чем изобретать кусок кода, а через пол года еще кусок, а перед новым годом чего-то необычного захотелось и пропал на неделю коддинга спецэффектов. И если вдруг станет вопрос постановки на "коммерческие" рельсы (типа куму, свату, брату собрать устройство) каждый раз гонять "в гости" и прошивать?... Рил, если подключается к МК какое-то устройство, то оно должно по какому-то алгоритму и интерфейсу управляться и возможно это моё ИМХО, но управление должно быть чуть более юзер френдлии чем кусок кода, куча драйверов, проводочки и немного софта на несколько гигов и ты готов )))...
@SloRez1182 жыл бұрын
Спасибо за видео! Сделай видео про виртуальные таймеры.
@olegafanasiev99592 жыл бұрын
Все сделал так, как в видео. Плата stm32f102c8t6 отладочная. Сколько таймеры не менял, полная тишина(( Осцилогр молчит. использовал в тч и ножку PB10 T2ch3 (FT). Тишина. в чем может быть дело ? (файлы библиотеки кидал в core\inc и core\Src\ соответственно напрямую) дебажится без ошибок. К +5 подтягивал.
@CrazyGeeks2 жыл бұрын
Что отладка программы говорит?
@olegafanasiev99592 жыл бұрын
@@CrazyGeeks знать бы, куда там смотреть еще, в отладке) я только могу ошибки посмотреть, их нет...
@КириллРеутов-д4у2 жыл бұрын
ситуация такая есть гироскутерный контроллер, прошивка+пароль от нее, как клонировать эту прошивку, чтобы записать на другой контроллер. Прошивка меняется при вводе пароля(думаю что защита от копирования есть
@CrazyGeeks2 жыл бұрын
А что за контроллер? Какая микросхема стоит?
@КириллРеутов-д4у2 жыл бұрын
@@CrazyGeeks stm32f103rct6
@КириллРеутов-д4у2 жыл бұрын
То есть до ввода пароля я спокойно могу клонировать прошивку, как только ввожу пароль, на прошивке разблокируются некоторые нужные функции, но прошивка уходит в защиту от копирования
@КириллРеутов-д4у2 жыл бұрын
@@CrazyGeeks есть какие нибудь мысли у вас?
@CrazyGeeks2 жыл бұрын
Ну это пароль верхнего уровня скорее, на самой прошивке СТМ пароля быть не может Напишите мне в ЛС в ВК, так удобнее будет) vk.me/crazy_geeks
@ptaengineering53172 жыл бұрын
Супер! Спасибо тебе за твой труд! Подскажи, а на плате STM32F 102C8T6 на какой пин подключать ?
@CrazyGeeks2 жыл бұрын
Какой выставлен в кубике, на тот и подключать, разницы то нет )
@levik911112 жыл бұрын
Спасибо, может душню, но ошибочка в расчете, в блоке где про частоту. 72 000 000 / 800 000 - должно быть
@CrazyGeeks2 жыл бұрын
На 800, да Ну, что уж теперь
@levik911112 жыл бұрын
@@CrazyGeeks да так просто написал, что б кто еще только разбирается голову не ломал почему у него не сходится)
@tupoy_ytub_uberi_psevdonim2 жыл бұрын
PS осциллограф вообще ничего не видит на выходе ШИМ. Я использовал режим PUSH PULL для тестов.
@CrazyGeeks2 жыл бұрын
А ножка точно та? Скорость ножки какая стоит?
@tupoy_ytub_uberi_psevdonim2 жыл бұрын
@@CrazyGeeks Тактирования? Максимальная стоит. А таймер настроен на 800 КГц, светодиоды исправно ловят команды. У меня осциллограф цифровой по юсб и он несколько глючный, часто тормозит так сильно, что по 5 секунд обновляется поле с осциллограммой. Я уже думаю он просто сломался.
@CrazyGeeks2 жыл бұрын
Ну вот в осциллографе скорее всего дело Если как я понимаю у вас всё работает
@olegafanasiev99592 жыл бұрын
PUSH PULL ? а Open drain не работал ?
@sergbo311411 ай бұрын
Не знаю у меня это работает на плис. В плисине есть память и она 30 раз в секунду обновляет данные из своей памяти. А уже в плис льешь из МК когда тебе хочется. Хоть одним пикселем, хоть сразу всей матрицой. Как по мне эта задача слишком тупая для МК.
@ГеннадийФомин-л3й2 жыл бұрын
12:47 - это скорее всего блэкпил. Блю на f103.
@АзатХакимов-ь3э Жыл бұрын
Отлично мне интересноэ, а ты можешь более научно или подробнее обьяснить просто тяжело термины понимать которые впервый раз слышишь, не именно этот ролик а вообще, собрался учится на stm программировать понимать бы мне как новичку, Ардуино я почти прошел все курсы Алекса Гайвера, начать бы как то stm чик
@bozhkou4 ай бұрын
Как выпилить DMA из библиотеки?
@bozhkou4 ай бұрын
По поводу питания. Если светодиодов не много, то для избежания влияния "фазы луны", "уровня прилива в мексиканском заливе" и тп. Можно не поднять, а опустить) У меня до 100 диодов. У блюпилл на 5v на плате есть. Туда диод припаял, и потом питание ленты. Т.е. тупо срезал около 0,5в по питанию. Итого: 4,5*0,3=1,35в и при 0,7 = 3,15в. Это входит в диапазон. Повторяю, так можно делать только при небольшом количестве диодов, т.к. диоды будут горячие. У меня два 4007 и 98 диодов. Белый на всю яркость при всех включенных - нагревает до 80 градусов за 1,5 минуты.
@vernnms782 жыл бұрын
Несправедливо: у умных настоящих инженеров каналы с мизерными подписками.
@tupoy_ytub_uberi_psevdonim2 жыл бұрын
Все завелось после того как я пересчитал для таймера число сброса, у меня вышло 105-1 при частоте 84 МГц. В видео я не увидел этот момент но прочитал из оригинальной статьи англоязычной. Функции заполнения ленты придумаю как нибудь уже сам.
@CrazyGeeks2 жыл бұрын
Странно, должно само считаться
@tupoy_ytub_uberi_psevdonim2 жыл бұрын
@@CrazyGeeks главное работает и я понял как переносить библиотеку на разные микроконтроллеры STM. Вот жаль пока не очень понял принцип работы DMA и переключение между буферами. Довольно сложно осмыслить)
@gin871002 жыл бұрын
Не заработало. Нужно плясать с бубном. и что за функция void main(void) ? Откуда ее вызывать?
@CrazyGeeks2 жыл бұрын
а какой МК у вас? на разных сериях по-разному немного всё работает, так что надо вот это для начала понять void main(void) это ни что иное как главный цикл в примере он просто для наглядности обозначен
@gin871002 жыл бұрын
@@CrazyGeeks камень c8t6. Главная функция обычно int main(void). Что значит не возвращаемая. А главный цикл while(1){}
@Saurelius Жыл бұрын
@@gin87100 Обычно функция main() при выплнении программы в среде ос возвращает код завершения, который явлеятся целым числом, по этому указан тип int. В случае с МК возвращать код ни к чему - программа одна, отчитываться не кому. Потому и void, что ничего не возвращает и return не используется.
@АлександрШабалин-э2з Жыл бұрын
Подписался. У меня C++ головного мозга. Оберну-ка я драйвер в класс.
@Scherbakov2 жыл бұрын
👍
@ciklomat11 ай бұрын
Очень странная реализация использовать байт для отправки одного бита. Шим с переменным заполнением может решить проблему быстрее и проще. 300 байт озу на 100 светодиодов
@CrazyGeeks11 ай бұрын
Это и есть шим с переменным заполнением. 300 байт - откуда такая цифра? Протокол 24-битный, значит на каждый диод нужно 24 разных скважности. Для разгрузки процессорного времени используется DMA, который берёт 32-битные указатели, значит на каждый диод будет 24*4 = 96 байт Итого на 100 светодиодов выйдет 9.600 байт Применённый подход с прерываниями по половинкам DMA отправки позволяет как раз использовать 300 байт на массив цвета, плюс 48*4 = 192 байта на буфер скважностей
@USER-ruzer20002 жыл бұрын
Ребят, есть вменяемая литература на РУССКОМ ЯЗЫКЕ по описанию стм32, а именно регистров, функций, команд, описании HAL LL CMSIS ?
@redtex2 жыл бұрын
Переведёшь - будет.
@USER-ruzer20002 жыл бұрын
@@redtex ладно, а что тогда по английски посоветуете?
@redtex2 жыл бұрын
@@USER-ruzer2000 Найди канл Vladimir Medintsev, там посоветуют.
@USER-ruzer20002 жыл бұрын
@@redtex Я в его телеграмканале спрашивал. Не ответили. Ситуация как с мужем при неверной жене, все вокруг знают, но ему никто не скажет.
@CrazyGeeks2 жыл бұрын
Универсальной литературы, панацеи по всем вопросам нет. Ну либо я про такое не в курсе Есть например Mastering STM32, которую перевели, можно с неё начать, она по HAL Пока твёрдой уверенности с HAL не будет - глубже будет больно лезть Всё остальное в AppNotes да в Programming Manual-ах прописано, все они лежат на сайте ST у каждого камня в разделе "Documentation" Некоторые переводят, надо по номерам искать Какие-то учебные материалы, подборки литературы есть у моего товарища Олега Волкова kzbin.info/door/zZKTNVpcMSALU57G1THoVw Другие каналы и ресурсы я у себя в статье указывал crazygeeks.ru/ardu-to-stm32/#%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8 Сам я не по литературе учился, а на реальных задачах, всю инфу порционно, по требованию изучал, либо интуитивно, методом тыка
@andrew34827 ай бұрын
Такую либу родили еще лет 7 назад
@sozdatelEd2 жыл бұрын
О чем будет канал? Что в будущем?
@CrazyGeeks2 жыл бұрын
Всё так же об embedded. STM32 и прочая электроника Пока переношу статьи с сайта в видеоформат, дальше думаю и над другими форматами
@sozdatelEd2 жыл бұрын
@@CrazyGeeks embedded очень разросся. Может возможно обозначить направления по которым будут материалы? Или рассказать какие устройства будут разобраны в будущих видеороликах?
@CrazyGeeks2 жыл бұрын
@@sozdatelEd мне интересны Cortex-M. В первую очередь STM32, но и другие серии тоже: GD32, Миландр, NXP и прочее Пощупать хочется ПЛИС, Cortex-A, MIPS, и другое Пока ресурсов и компетенций таких просто нет, но всё впереди)
@sozdatelEd2 жыл бұрын
@@CrazyGeeks ясненько. Будем посмотреть
@redtex2 жыл бұрын
Откуда адреса у сдвиговых регистров?
@CrazyGeeks2 жыл бұрын
Как таковых адресов ж нет Адреса мнимые, потому что сигнал по цепочке последовательно передаётся 1 диод имеет мнимый адрес 1, 2ой мнимый 2, и т.д. Я думал, что это слишком очевидно, чтоб пояснять в ролике)
@redtex2 жыл бұрын
@@CrazyGeeks Сдвиговые регистры имеют каскадное включение. У каскада есть только номер каскада и отношение к другому как младшему или старшему.
@tarasbarbos90352 жыл бұрын
Всё чудесно, но неясно чем таймеры в AVR не подходят. А, и ещё, что за гамма-коррекция такая? Публика жаждет подробностей :)
@CrazyGeeks2 жыл бұрын
В AVR нет DMA) Вот и всё) А гамма-коррекция должна как-то цвета подстраивать, не я реализовывал, поэтому сказать ничего не могу
@svbHiTek Жыл бұрын
Почисти систему охлаждения ноута, а то у тебя проц в 100 долбится.
@ptaengineering53172 жыл бұрын
Вот такая ошибка при дебаге, я нуб, не понимаю куда копать.... 'RCC_CFGR_PPRE2' undeclared (first use in this function); did you mean 'RCC_D1CFGR_HPRE'? ARGB.c /h750_test/Core/Src line 140 C/C++ Problem
@CrazyGeeks2 жыл бұрын
это у вас проц H750? там вероятно другая система тактирования можно попробовать заменить на то, что он предлагает
@ptaengineering53172 жыл бұрын
@@CrazyGeeks заменил, ошибка компилятора пропала, но - сигнал вообще не формируется ни при pul&push ни при opendrain. Хотя, на stm32f103 все завелось супер. В чем может быть дело ?
@CrazyGeeks2 жыл бұрын
@@ptaengineering5317 А прерывания по DMA прилетают?
@ptaengineering53172 жыл бұрын
@@CrazyGeeks Спасибо, все завелось ! Подскажи, у меня после ПИНа стоит мосфет (н- канальный), он инвертирует сигнал, в каком месте библиотеке мне нужно поравить, что бы инвертировать сигнал ?
@edba7410 Жыл бұрын
@@ptaengineering5317 А можно для stm32f103 куда-нибудь исходники выложить. А то пытался по видео делать, но у меня почему-то не все файлы в проекте присутствуют. Нет файлов CMakeLists.txt, CMakeLists_template.txt и ещё нескольких. И не пойму, где что нужно указать, чтобы они сгенерировались.