Спасибо! Подписался. Качество изложения и представленных материалов, на мой взгляд, лучшее из просмотренных мной. Хотел сделать что-то для управления argb "на коленке", а здесь уже все есть на 99%).
Спасибо за либку. Как раз проверил на ней G030K6T6 с али. Единственный непонятный момент - линейка 8 светодиодов, дефайн NUM_PIXELS ставлю 8 - работает только 2 диода, ставлю 32 - работают все 8
Да, там есть некоторое количество багов, например при определённом количестве диодов цепочка зацикливается и не останавливается На разных камнях разные шины - поэтому автоподбор клоков не работает - не было возможности проверить это всё прям везде Пока просто нет времени чинить, но это обязательно случится )) А с количеством - может ошибка с размером ячейки у дма
@@CrazyGeeks косяк был найден. В настройках таймера (дма) сначала сделал как на сайте - длина данных: периферия - слово, память - байт. Поставил слово-слово (как в этом видео) и все заработало ) Правда с примером змейки (из видео) с задержкой в 1 мс чуть эпилепсию не словил
Интересная ситуация. На Nucleo F446, таймер не останавливается, молотит без остановки вечность ( с любой конфигурацией DMA и разным количеством диодов ).
Да, там действительно косяк есть такой, ещё встречается и на других камнях Там на определённом количестве диодов таймер тоже не останавливается Я кажется пытался починить эту проблему, но ничего не вышло Пока ещё собираю обратную связь, пока нет времени на починку, особенно не всплывает пока никаких проектов, чтоб целенаправленно починить Я в основном всё на F103 и F401 тестил, так что на других сериях могут проблемы вылезать, да Но в какой-то момент это случится ) Даже были потуги в многоканальную передачу, возможно оно увидит опен-сурс
В Атмегах есть SPI, обрезаешь входной провод, и кидаешь в регистр по 8 бит. Работает на частоте 800КГц спокойно. По прерыванию, от SPI. Код основной крутится, не замечая прерывание. Не надо грязи, на эти МК лить. С этим ОМНОМ они справяться. Для этого и сделаны. STM32 нужны эхолоты делать(где экран только отнимет половину мощности), автомобильные блоки управления вполне для STM работа, медицинские приборы, и другое сложное оборудование(промышленное). Рулить лентой с помощью STM это забивать гвозди, микроскопом. В принципе можно, но так по дурацки. Хотя для начинающих самое оно, как пример. Но не надо при этом невзначай кидать какашки на Атмеги 🙂 По ходу так сказать, для красного словца.
Я долго думал, что ответить, но вот созрел Тут встаёт ключевой вопрос о том, как эти прерывания блокируют выполнение кода, ведь в 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 Вот и все доводы
@@CrazyGeeks Расскажи как у тебя работает USB CDC + Твоя библиотека в stm? А в самой массовой f103c8? DMA не мешает? По отдельности работает) А вместе - нет (где-то такое про avr написано было))) Для управления светодиодами раз пол года - сойдет такой подход. Для реального использования (не коммерческого, а даже для себя любимого) всяко удобнее воткнул девайс - отправил пару команд и радуйся, чем изобретать кусок кода, а через пол года еще кусок, а перед новым годом чего-то необычного захотелось и пропал на неделю коддинга спецэффектов. И если вдруг станет вопрос постановки на "коммерческие" рельсы (типа куму, свату, брату собрать устройство) каждый раз гонять "в гости" и прошивать?... Рил, если подключается к МК какое-то устройство, то оно должно по какому-то алгоритму и интерфейсу управляться и возможно это моё ИМХО, но управление должно быть чуть более юзер френдлии чем кусок кода, куча драйверов, проводочки и немного софта на несколько гигов и ты готов )))...
Все завелось после того как я пересчитал для таймера число сброса, у меня вышло 105-1 при частоте 84 МГц. В видео я не увидел этот момент но прочитал из оригинальной статьи англоязычной. Функции заполнения ленты придумаю как нибудь уже сам.
@@CrazyGeeks главное работает и я понял как переносить библиотеку на разные микроконтроллеры STM. Вот жаль пока не очень понял принцип работы DMA и переключение между буферами. Довольно сложно осмыслить)
Пытался повторить по видео, для stm32f103c8t6, но у меня почему-то нет файлов проекте CMakeLists.txt, CMakeLists_template.txt и ещё нескольких. Можете подсказать, где что нужно установить, чтобы они сгенерировались?
День добрый. Решил повторить ваш проект, установил все, прошел по инструкции, но почему-то период тактов на ленту не 1,25 а 5 us. Можете подсказать в чем дело? Или хотя бы где искать проблему?) nucleo-l476rg
Отлично мне интересноэ, а ты можешь более научно или подробнее обьяснить просто тяжело термины понимать которые впервый раз слышишь, не именно этот ролик а вообще, собрался учится на stm программировать понимать бы мне как новичку, Ардуино я почти прошел все курсы Алекса Гайвера, начать бы как то stm чик
ситуация такая есть гироскутерный контроллер, прошивка+пароль от нее, как клонировать эту прошивку, чтобы записать на другой контроллер. Прошивка меняется при вводе пароля(думаю что защита от копирования есть
То есть до ввода пароля я спокойно могу клонировать прошивку, как только ввожу пароль, на прошивке разблокируются некоторые нужные функции, но прошивка уходит в защиту от копирования
Обычно МК питается от дохлых ЛДО, которые дают 3.0 Вольта и ниже. А лента питается от БП 5.1 Вольта, например. Вот и выходит, что логика совершенно не согласуется
@@CrazyGeeks А что за ЛДО такие? Вот у меня NodeMCU, питается через USB от длиинного провода, на котором теряется 0.5 вольта. Потом LDO HT7333 делает из 4.5 вольт 3.3, и питает ESP, который кушает до 450мА в моменты передачи по Wi-Fi. И лента подключена без подтяжки, а просто через килоомный резистор, чтобы вывод случайно не пожечь. И все работает. Я думаю, если ты эту свою подтяжку уберешь, у тебя тоже заработает. Ну а если LDO из 5 вольт 3.3 не может сделать, то это не подтяжки надо, а LDO менять.
привет. подскажи пожалуйста какой можно взять найменьший по габаритам микроконтроллер, который бы справился с адресной лентой и при этом не был слишком избыточньім в плане своей производительности?
@@CrazyGeeks Тактирования? Максимальная стоит. А таймер настроен на 800 КГц, светодиоды исправно ловят команды. У меня осциллограф цифровой по юсб и он несколько глючный, часто тормозит так сильно, что по 5 секунд обновляется поле с осциллограммой. Я уже думаю он просто сломался.
По поводу питания. Если светодиодов не много, то для избежания влияния "фазы луны", "уровня прилива в мексиканском заливе" и тп. Можно не поднять, а опустить) У меня до 100 диодов. У блюпилл на 5v на плате есть. Туда диод припаял, и потом питание ленты. Т.е. тупо срезал около 0,5в по питанию. Итого: 4,5*0,3=1,35в и при 0,7 = 3,15в. Это входит в диапазон. Повторяю, так можно делать только при небольшом количестве диодов, т.к. диоды будут горячие. У меня два 4007 и 98 диодов. Белый на всю яркость при всех включенных - нагревает до 80 градусов за 1,5 минуты.
Все сделал так, как в видео. Плата stm32f102c8t6 отладочная. Сколько таймеры не менял, полная тишина(( Осцилогр молчит. использовал в тч и ножку PB10 T2ch3 (FT). Тишина. в чем может быть дело ? (файлы библиотеки кидал в core\inc и core\Src\ соответственно напрямую) дебажится без ошибок. К +5 подтягивал.
@@CrazyGeeks embedded очень разросся. Может возможно обозначить направления по которым будут материалы? Или рассказать какие устройства будут разобраны в будущих видеороликах?
@@sozdatelEd мне интересны Cortex-M. В первую очередь STM32, но и другие серии тоже: GD32, Миландр, NXP и прочее Пощупать хочется ПЛИС, Cortex-A, MIPS, и другое Пока ресурсов и компетенций таких просто нет, но всё впереди)
Не знаю у меня это работает на плис. В плисине есть память и она 30 раз в секунду обновляет данные из своей памяти. А уже в плис льешь из МК когда тебе хочется. Хоть одним пикселем, хоть сразу всей матрицой. Как по мне эта задача слишком тупая для МК.
Как таковых адресов ж нет Адреса мнимые, потому что сигнал по цепочке последовательно передаётся 1 диод имеет мнимый адрес 1, 2ой мнимый 2, и т.д. Я думал, что это слишком очевидно, чтоб пояснять в ролике)
Универсальной литературы, панацеи по всем вопросам нет. Ну либо я про такое не в курсе Есть например Mastering STM32, которую перевели, можно с неё начать, она по HAL Пока твёрдой уверенности с HAL не будет - глубже будет больно лезть Всё остальное в AppNotes да в Programming Manual-ах прописано, все они лежат на сайте ST у каждого камня в разделе "Documentation" Некоторые переводят, надо по номерам искать Какие-то учебные материалы, подборки литературы есть у моего товарища Олега Волкова ua-cam.com/channels/zZKTNVpcMSALU57G1THoVw.html Другие каналы и ресурсы я у себя в статье указывал 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 Сам я не по литературе учился, а на реальных задачах, всю инфу порционно, по требованию изучал, либо интуитивно, методом тыка
а какой МК у вас? на разных сериях по-разному немного всё работает, так что надо вот это для начала понять void main(void) это ни что иное как главный цикл в примере он просто для наглядности обозначен
@@gin87100 Обычно функция main() при выплнении программы в среде ос возвращает код завершения, который явлеятся целым числом, по этому указан тип int. В случае с МК возвращать код ни к чему - программа одна, отчитываться не кому. Потому и void, что ничего не возвращает и return не используется.
Очень странная реализация использовать байт для отправки одного бита. Шим с переменным заполнением может решить проблему быстрее и проще. 300 байт озу на 100 светодиодов
Это и есть шим с переменным заполнением. 300 байт - откуда такая цифра? Протокол 24-битный, значит на каждый диод нужно 24 разных скважности. Для разгрузки процессорного времени используется DMA, который берёт 32-битные указатели, значит на каждый диод будет 24*4 = 96 байт Итого на 100 светодиодов выйдет 9.600 байт Применённый подход с прерываниями по половинкам DMA отправки позволяет как раз использовать 300 байт на массив цвета, плюс 48*4 = 192 байта на буфер скважностей
Вот такая ошибка при дебаге, я нуб, не понимаю куда копать.... '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
@@CrazyGeeks заменил, ошибка компилятора пропала, но - сигнал вообще не формируется ни при pul&push ни при opendrain. Хотя, на stm32f103 все завелось супер. В чем может быть дело ?
@@CrazyGeeks Спасибо, все завелось ! Подскажи, у меня после ПИНа стоит мосфет (н- канальный), он инвертирует сигнал, в каком месте библиотеке мне нужно поравить, что бы инвертировать сигнал ?
@@ptaengineering5317 А можно для stm32f103 куда-нибудь исходники выложить. А то пытался по видео делать, но у меня почему-то не все файлы в проекте присутствуют. Нет файлов CMakeLists.txt, CMakeLists_template.txt и ещё нескольких. И не пойму, где что нужно указать, чтобы они сгенерировались.
Спасибо! Подписался. Качество изложения и представленных материалов, на мой взгляд, лучшее из просмотренных мной. Хотел сделать что-то для управления argb "на коленке", а здесь уже все есть на 99%).
ВПН пашет, теперь можно посмотреть про работу лампочек) очень доходчиво, спасибо, буду разбираться дальше
Спасибо за либку. Как раз проверил на ней G030K6T6 с али. Единственный непонятный момент - линейка 8 светодиодов, дефайн NUM_PIXELS ставлю 8 - работает только 2 диода, ставлю 32 - работают все 8
Да, там есть некоторое количество багов, например при определённом количестве диодов цепочка зацикливается и не останавливается
На разных камнях разные шины - поэтому автоподбор клоков не работает - не было возможности проверить это всё прям везде
Пока просто нет времени чинить, но это обязательно случится ))
А с количеством - может ошибка с размером ячейки у дма
@@CrazyGeeks косяк был найден. В настройках таймера (дма) сначала сделал как на сайте - длина данных: периферия - слово, память - байт. Поставил слово-слово (как в этом видео) и все заработало ) Правда с примером змейки (из видео) с задержкой в 1 мс чуть эпилепсию не словил
Ты лучший просто, мне так повезло найти кого то у кого то же f401-ый.
Очень интересно… но посмотрю потом)
Интересная ситуация. На Nucleo F446, таймер не останавливается, молотит без остановки вечность ( с любой конфигурацией DMA и разным количеством диодов ).
Да, там действительно косяк есть такой, ещё встречается и на других камнях
Там на определённом количестве диодов таймер тоже не останавливается
Я кажется пытался починить эту проблему, но ничего не вышло
Пока ещё собираю обратную связь, пока нет времени на починку, особенно не всплывает пока никаких проектов, чтоб целенаправленно починить
Я в основном всё на F103 и F401 тестил, так что на других сериях могут проблемы вылезать, да
Но в какой-то момент это случится )
Даже были потуги в многоканальную передачу, возможно оно увидит опен-сурс
В Атмегах есть SPI, обрезаешь входной провод, и кидаешь в регистр по 8 бит. Работает на частоте 800КГц спокойно. По прерыванию, от SPI. Код основной крутится, не замечая прерывание. Не надо грязи, на эти МК лить. С этим ОМНОМ они справяться. Для этого и сделаны. STM32 нужны эхолоты делать(где экран только отнимет половину мощности), автомобильные блоки управления вполне для STM работа, медицинские приборы, и другое сложное оборудование(промышленное). Рулить лентой с помощью STM это забивать гвозди, микроскопом. В принципе можно, но так по дурацки. Хотя для начинающих самое оно, как пример. Но не надо при этом невзначай кидать какашки на Атмеги 🙂 По ходу так сказать, для красного словца.
Я долго думал, что ответить, но вот созрел
Тут встаёт ключевой вопрос о том, как эти прерывания блокируют выполнение кода, ведь в 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
Вот и все доводы
а что делать если я уперся в динамическую память? мне нужно рулить 720-ю светодиодами при помощи arduino nano. это 5 метров ленты (144 ЛЕДа на метр).
Внезапно STM ещё и дешевле получается, а дма канал это вообще песня, повесил на него что надо и переключай контекст. Огромная разгрузка ядра
@@CrazyGeeks Расскажи как у тебя работает USB CDC + Твоя библиотека в stm? А в самой массовой f103c8? DMA не мешает? По отдельности работает) А вместе - нет (где-то такое про avr написано было)))
Для управления светодиодами раз пол года - сойдет такой подход. Для реального использования (не коммерческого, а даже для себя любимого) всяко удобнее воткнул девайс - отправил пару команд и радуйся, чем изобретать кусок кода, а через пол года еще кусок, а перед новым годом чего-то необычного захотелось и пропал на неделю коддинга спецэффектов. И если вдруг станет вопрос постановки на "коммерческие" рельсы (типа куму, свату, брату собрать устройство) каждый раз гонять "в гости" и прошивать?... Рил, если подключается к МК какое-то устройство, то оно должно по какому-то алгоритму и интерфейсу управляться и возможно это моё ИМХО, но управление должно быть чуть более юзер френдлии чем кусок кода, куча драйверов, проводочки и немного софта на несколько гигов и ты готов )))...
в Ардуино ИДЕ есть такое? вы уже добавили?
12:47 - это скорее всего блэкпил. Блю на f103.
Спасибо за видео! Сделай видео про виртуальные таймеры.
Все завелось после того как я пересчитал для таймера число сброса, у меня вышло 105-1 при частоте 84 МГц. В видео я не увидел этот момент но прочитал из оригинальной статьи англоязычной. Функции заполнения ленты придумаю как нибудь уже сам.
Странно, должно само считаться
@@CrazyGeeks главное работает и я понял как переносить библиотеку на разные микроконтроллеры STM. Вот жаль пока не очень понял принцип работы DMA и переключение между буферами. Довольно сложно осмыслить)
Пытался повторить по видео, для stm32f103c8t6, но у меня почему-то нет файлов проекте CMakeLists.txt, CMakeLists_template.txt и ещё нескольких. Можете подсказать, где что нужно установить, чтобы они сгенерировались?
Добрый день.
Пробую запустить на STM32F030.
Вроде все по инструкции сделал но генерации нету. Эту библиотеку на такой камень можно натянуть?
Красавчик
День добрый.
Решил повторить ваш проект, установил все, прошел по инструкции, но почему-то период тактов на ленту не 1,25 а 5 us.
Можете подсказать в чем дело?
Или хотя бы где искать проблему?)
nucleo-l476rg
Интересно, подпишусь
Супер! Спасибо тебе за твой труд! Подскажи, а на плате STM32F 102C8T6 на какой пин подключать ?
Какой выставлен в кубике, на тот и подключать, разницы то нет )
Спасибо, может душню, но ошибочка в расчете, в блоке где про частоту. 72 000 000 / 800 000 - должно быть
На 800, да
Ну, что уж теперь
@@CrazyGeeks да так просто написал, что б кто еще только разбирается голову не ломал почему у него не сходится)
Отлично мне интересноэ, а ты можешь более научно или подробнее обьяснить просто тяжело термины понимать которые впервый раз слышишь, не именно этот ролик а вообще, собрался учится на stm программировать понимать бы мне как новичку, Ардуино я почти прошел все курсы Алекса Гайвера, начать бы как то stm чик
Подписался. У меня C++ головного мозга. Оберну-ка я драйвер в класс.
ситуация такая есть гироскутерный контроллер, прошивка+пароль от нее, как клонировать эту прошивку, чтобы записать на другой контроллер. Прошивка меняется при вводе пароля(думаю что защита от копирования есть
А что за контроллер? Какая микросхема стоит?
@@CrazyGeeks stm32f103rct6
То есть до ввода пароля я спокойно могу клонировать прошивку, как только ввожу пароль, на прошивке разблокируются некоторые нужные функции, но прошивка уходит в защиту от копирования
@@CrazyGeeks есть какие нибудь мысли у вас?
Ну это пароль верхнего уровня скорее, на самой прошивке СТМ пароля быть не может
Напишите мне в ЛС в ВК, так удобнее будет) vk.me/crazy_geeks
Несправедливо: у умных настоящих инженеров каналы с мизерными подписками.
Почему подтягивающий резистор, а не пуш-пулл режим? Адресная лента отлично работатет от импульсов амплитудой 3.3В
Обычно МК питается от дохлых ЛДО, которые дают 3.0 Вольта и ниже. А лента питается от БП 5.1 Вольта, например. Вот и выходит, что логика совершенно не согласуется
@@CrazyGeeks А что за ЛДО такие? Вот у меня NodeMCU, питается через USB от длиинного провода, на котором теряется 0.5 вольта. Потом LDO HT7333 делает из 4.5 вольт 3.3, и питает ESP, который кушает до 450мА в моменты передачи по Wi-Fi. И лента подключена без подтяжки, а просто через килоомный резистор, чтобы вывод случайно не пожечь. И все работает. Я думаю, если ты эту свою подтяжку уберешь, у тебя тоже заработает. Ну а если LDO из 5 вольт 3.3 не может сделать, то это не подтяжки надо, а LDO менять.
привет. подскажи пожалуйста какой можно взять найменьший по габаритам микроконтроллер, который бы справился с адресной лентой и при этом не был слишком избыточньім в плане своей производительности?
ну можно в сторону G0 посмотреть, ядро М0 должно всё потянуть
Такую либу родили еще лет 7 назад
PS осциллограф вообще ничего не видит на выходе ШИМ. Я использовал режим PUSH PULL для тестов.
А ножка точно та? Скорость ножки какая стоит?
@@CrazyGeeks Тактирования? Максимальная стоит. А таймер настроен на 800 КГц, светодиоды исправно ловят команды. У меня осциллограф цифровой по юсб и он несколько глючный, часто тормозит так сильно, что по 5 секунд обновляется поле с осциллограммой. Я уже думаю он просто сломался.
Ну вот в осциллографе скорее всего дело
Если как я понимаю у вас всё работает
PUSH PULL ? а Open drain не работал ?
Как выпилить DMA из библиотеки?
По поводу питания. Если светодиодов не много, то для избежания влияния "фазы луны", "уровня прилива в мексиканском заливе" и тп. Можно не поднять, а опустить)
У меня до 100 диодов. У блюпилл на 5v на плате есть. Туда диод припаял, и потом питание ленты. Т.е. тупо срезал около 0,5в по питанию. Итого: 4,5*0,3=1,35в и при 0,7 = 3,15в. Это входит в диапазон. Повторяю, так можно делать только при небольшом количестве диодов, т.к. диоды будут горячие. У меня два 4007 и 98 диодов. Белый на всю яркость при всех включенных - нагревает до 80 градусов за 1,5 минуты.
Все сделал так, как в видео. Плата stm32f102c8t6 отладочная. Сколько таймеры не менял, полная тишина(( Осцилогр молчит. использовал в тч и ножку PB10 T2ch3 (FT). Тишина. в чем может быть дело ? (файлы библиотеки кидал в core\inc и core\Src\ соответственно напрямую) дебажится без ошибок. К +5 подтягивал.
Что отладка программы говорит?
@@CrazyGeeks знать бы, куда там смотреть еще, в отладке) я только могу ошибки посмотреть, их нет...
О чем будет канал? Что в будущем?
Всё так же об embedded.
STM32 и прочая электроника
Пока переношу статьи с сайта в видеоформат, дальше думаю и над другими форматами
@@CrazyGeeks embedded очень разросся. Может возможно обозначить направления по которым будут материалы? Или рассказать какие устройства будут разобраны в будущих видеороликах?
@@sozdatelEd мне интересны Cortex-M. В первую очередь STM32, но и другие серии тоже: GD32, Миландр, NXP и прочее
Пощупать хочется ПЛИС, Cortex-A, MIPS, и другое
Пока ресурсов и компетенций таких просто нет, но всё впереди)
@@CrazyGeeks ясненько. Будем посмотреть
Не знаю у меня это работает на плис. В плисине есть память и она 30 раз в секунду обновляет данные из своей памяти. А уже в плис льешь из МК когда тебе хочется. Хоть одним пикселем, хоть сразу всей матрицой. Как по мне эта задача слишком тупая для МК.
Откуда адреса у сдвиговых регистров?
Как таковых адресов ж нет
Адреса мнимые, потому что сигнал по цепочке последовательно передаётся
1 диод имеет мнимый адрес 1, 2ой мнимый 2, и т.д.
Я думал, что это слишком очевидно, чтоб пояснять в ролике)
@@CrazyGeeks Сдвиговые регистры имеют каскадное включение. У каскада есть только номер каскада и отношение к другому как младшему или старшему.
Ребят, есть вменяемая литература на РУССКОМ ЯЗЫКЕ по описанию стм32, а именно регистров, функций, команд, описании HAL LL CMSIS ?
Переведёшь - будет.
@@redtex ладно, а что тогда по английски посоветуете?
@@USER-ruzer2000 Найди канл Vladimir Medintsev, там посоветуют.
@@redtex Я в его телеграмканале спрашивал. Не ответили.
Ситуация как с мужем при неверной жене, все вокруг знают, но ему никто не скажет.
Универсальной литературы, панацеи по всем вопросам нет. Ну либо я про такое не в курсе
Есть например Mastering STM32, которую перевели, можно с неё начать, она по HAL
Пока твёрдой уверенности с HAL не будет - глубже будет больно лезть
Всё остальное в AppNotes да в Programming Manual-ах прописано, все они лежат на сайте ST у каждого камня в разделе "Documentation"
Некоторые переводят, надо по номерам искать
Какие-то учебные материалы, подборки литературы есть у моего товарища Олега Волкова
ua-cam.com/channels/zZKTNVpcMSALU57G1THoVw.html
Другие каналы и ресурсы я у себя в статье указывал
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
Сам я не по литературе учился, а на реальных задачах, всю инфу порционно, по требованию изучал, либо интуитивно, методом тыка
Всё чудесно, но неясно чем таймеры в AVR не подходят.
А, и ещё, что за гамма-коррекция такая? Публика жаждет подробностей :)
В AVR нет DMA) Вот и всё)
А гамма-коррекция должна как-то цвета подстраивать, не я реализовывал, поэтому сказать ничего не могу
Не заработало. Нужно плясать с бубном. и что за функция void main(void) ? Откуда ее вызывать?
а какой МК у вас? на разных сериях по-разному немного всё работает, так что надо вот это для начала понять
void main(void) это ни что иное как главный цикл
в примере он просто для наглядности обозначен
@@CrazyGeeks камень c8t6. Главная функция обычно int main(void). Что значит не возвращаемая. А главный цикл while(1){}
@@gin87100 Обычно функция main() при выплнении программы в среде ос возвращает код завершения, который явлеятся целым числом, по этому указан тип int. В случае с МК возвращать код ни к чему - программа одна, отчитываться не кому. Потому и void, что ничего не возвращает и return не используется.
Очень странная реализация использовать байт для отправки одного бита. Шим с переменным заполнением может решить проблему быстрее и проще. 300 байт озу на 100 светодиодов
Это и есть шим с переменным заполнением.
300 байт - откуда такая цифра? Протокол 24-битный, значит на каждый диод нужно 24 разных скважности.
Для разгрузки процессорного времени используется DMA, который берёт 32-битные указатели, значит на каждый диод будет 24*4 = 96 байт
Итого на 100 светодиодов выйдет 9.600 байт
Применённый подход с прерываниями по половинкам DMA отправки позволяет как раз использовать 300 байт на массив цвета, плюс 48*4 = 192 байта на буфер скважностей
👍
Почисти систему охлаждения ноута, а то у тебя проц в 100 долбится.
Для ЛГБТ лент😂
Вот такая ошибка при дебаге, я нуб, не понимаю куда копать....
'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
это у вас проц H750? там вероятно другая система тактирования
можно попробовать заменить на то, что он предлагает
@@CrazyGeeks заменил, ошибка компилятора пропала, но - сигнал вообще не формируется ни при pul&push ни при opendrain. Хотя, на stm32f103 все завелось супер. В чем может быть дело ?
@@ptaengineering5317 А прерывания по DMA прилетают?
@@CrazyGeeks Спасибо, все завелось ! Подскажи, у меня после ПИНа стоит мосфет (н- канальный), он инвертирует сигнал, в каком месте библиотеке мне нужно поравить, что бы инвертировать сигнал ?
@@ptaengineering5317 А можно для stm32f103 куда-нибудь исходники выложить. А то пытался по видео делать, но у меня почему-то не все файлы в проекте присутствуют. Нет файлов CMakeLists.txt, CMakeLists_template.txt и ещё нескольких. И не пойму, где что нужно указать, чтобы они сгенерировались.