Интересны мир программирования! Полезная серия видео! Всем рекомендую посмотреть прошлые ролики!!!
@ДмитроПерший5 жыл бұрын
Учитывая, что у TFT 2.8" на ILI9341 нет аппаратного управления яркостью (как ни странно и что печально; даже у Адафрут, не говоря уже о китайских клонах; видно пожадничали на встроенный ШИМ), пришлось реализовывать через таймер на STM-ке. Всё просто, в течении 0,5 сек гасишь яркость до нуля, подгружаешь картинку и поднимаешь яркость в течении 0,5 сек до максимума. Очень хорошо смотрится, если нужно менять контрастные картинки. Нет резкого перехода. Лайк за видео.
@serb_off8 жыл бұрын
Спасибо большое за урок!
@narodstream5528 жыл бұрын
Я рад, что Вам понравилось!
@raven88675 жыл бұрын
Спасибо Вам за уроки!Мог бы 1000 лайков поставил!
@januszstrzelewicz57318 жыл бұрын
Today, I not much remember of the Russian language (I had lessons in primary school), but great to watch your manual. Good job! Finally made sense instructions about the Cube and Keil. I look forward to more advanced projects :-)
@narodstream5528 жыл бұрын
Thank you so much for your high appreciation of my work! I shall continue to try for you! Teraz mam zamiar spróbować jeszcze więcej! Dziękuję bardzo za wysoką ocenę mojej pracy!
@MrMosetwo5 жыл бұрын
Спасибо за Видео. Очень полезно А можно ешё видосики про PWM? например как управлять моторчиком и джойстиком?
@dkoxperiakoziukov38087 жыл бұрын
Очень наглядно. Спасибо. Я думаю, что все бы сказали спасибо если бы Вы поделились опытом работы с RTC в различных режимах энергопотребления микроконтроллера stm32F4xx, а так же резервирования аварийного питания. Для меня пока остается открытой тема работы таймера реального времени без питания на контроллере. Вывод vbat подключен к банку конденсаторов и нет возможности подключить к нему батарейку опционально. Я не уверен, что заряда кондеров хватит надолго.
@leesohaeng8 жыл бұрын
nice example for stm32 user~!
@seppneimusser57235 жыл бұрын
Wsö atlitschna, balschoje spasiba!
@koliakrasnoff6 жыл бұрын
Как Вам удается писать русские комментарии на 9:55? У меня кейл русский не поддерживает, заменяет знаками вопроса. Вы русификатор ставили или включили русский язык в настройках? Или при скачивании кейла надо было указать страну?
@VadRov5 жыл бұрын
Поставить в настройках редактора кодировку utf-8: edit->configuration->editor->encoding->encode in utf-8 ...
@ВикторШехматов-ч5ч3 жыл бұрын
Скоро НГ, смотрю это в 2021. Можно самому через микроконтролер и транзисторы режимы для гирлянды пользовательские сделать
@Jensiru8 жыл бұрын
Почему пишется TIM4->CCR1=i ? В гугле парень написал htim4.Instance->CCR1=i и тоже заработало. Вопрос быть может не про саму строку, а больше о том, что такое CCR1 и почему выбрано именно оно. В РМ пишется: TIMx capture/compare register 1 (TIMx_CCR1) (ТАБЛИЦА) Bits 31:16 CCR1[31:16]: High Capture/Compare 1 value (on TIM2 and TIM5). Bits 15:0 CCR1[15:0]: Low Capture/Compare 1 value If channel CC1 is configured as output: CCR1 is the value to be loaded in the actual capture/compare 1 register (preload value). It is loaded permanently if the preload feature is not selected in the TIMx_CCMR1 register (bit OC1PE). Else the preload value is copied in the active capture/compare 1 register when an update event occurs. The active capture/compare register contains the value to be compared to the counter TIMx_CNT and signaled on OC1 output. If channel CC1is configured as input: CCR1 is the counter value transferred by the last input capture 1 event (IC1). Урок то для новичков предназначен, плохо что не рассказали про этот регистр и табличку в РМ текста выше. Запомнить то можно всё как пишется, но вот понять сложно почему именно так, а не как-то иначе. Правильнее было бы рассказывать и показывать как надо работать с документацией! Видел уроки в которых вместо обращения к документации, просто бегали по всем файлам и копировали всё подряд, но ведь для новичка важно понять почему и зачем одно надо делать, а другое - нет. Странно, после просмотра видео аж расстроился, неужели в HAL нету просто одной функции в которой и будут задаваться все параметры ШИМ? Т.е. чтобы не писать целую кучу IF и считать всё в голове (ведь это надо знать, что нужно что-то считать), а написать одну строчку и радоваться. Как пример для понимания та же функция HAL_Delay. За урок премного благодарен, в любом случае информации по HAL ещё не много, а здесь уже разжёвывается. До выхода урока делал всё так же, но без IF, поэтому ничего и не работало. Думал, функция может какая есть, чтобы задавать параметры.
@narodstream5528 жыл бұрын
+Сергей Аксенов -> Указатель на свойство класса, а точка ставится в случае использования свойства стркутуры. Видимо где то заранее объявлен был экземпляр класса. Самое главное, что работает.
@Jensiru8 жыл бұрын
+narod stream Ну да, работает:) Сделал себе так, вроде чутка проще: if(iCCR1=i; // зажигаем else if((i>=16384) && (iCCR1=32768-i; else if((i>=32768) && (iCCR2=i-32768; else if((i>=49152) && (iCCR2=65536-i; else if((i>=65536) && (iCCR3=i-65536; else if((i>=81920) && (iCCR3=98304-i; else if((i>=98304) && (iCCR4=i-98304; else TIM4->CCR4=131072-i; Другие цифры и изменил условие на >=, чтобы не уменьшать значения. Если захочется сделать так: зажигаем светодиод долго и плавно, а гасим быстро и плавно. Это тоже с условиями надо будет возиться? Никаких функций задержек нету ведь?
@aerotachka7 жыл бұрын
Работает конечно, но TIM4 ->CCR1 это 'из CMSIS. И мы делаем не очень хороший с точки зрения стиля и сопровождаемости кода замес из HAL и CMSIS. В HAL для этих целей есть свои инструменты. В данном случае использовать макрос __HAL_TIM_SET_COMPARE (&htim4, i); Описание всего это дела в мануале по HAL, глава TIM Firmware driver defines
@ДимаПигарь-б4и8 жыл бұрын
Здравствуйте, можете объяснить как связаны Prescaler, Counter Mode и Pulse для PWM?
@АндрейИ-ф3л5 жыл бұрын
8:47 В левой части экрана список функций. Владимир, скажите, пожалуйста, чем отличается ***_Init от ***_MspInit ?
@narodstream5525 жыл бұрын
А разве в документации нет описания функций?
@narodstream5525 жыл бұрын
Без MSP - функция инициализации PWM полностью. (Initializes the TIM PWM Time Base according to the specified parameters in the TIM_HandleTypeDef and initializes the associated handle.) C MSP - низкоуровневая часть инициализации, часть полной инициализации (в нашем случае она вообще пустая) (Init the low level hardware : GPIO, CLOCK, NVIC and DMA)
@АндрейИ-ф3л5 жыл бұрын
@@narodstream552 , спасибо. Я не смог найти тот файл документации, который вы показываете в видео. А в файле для STM32F0 функции вообще не описаны. www.st.com/content/ccc/resource/technical/document/user_manual/2f/77/25/0f/5c/38/48/80/DM00122015.pdf/files/DM00122015.pdf/jcr:content/translations/en.DM00122015.pdf
@АндрейИ-ф3л5 жыл бұрын
Нашел для F4, но это тоже не он. www.st.com/content/ccc/resource/technical/document/user_manual/2f/71/ba/b8/75/54/47/cf/DM00105879.pdf/files/DM00105879.pdf/jcr:content/translations/en.DM00105879.pdf
@АндрейИ-ф3л5 жыл бұрын
Виноват. Есть расшифровка функций.
@zakharpopov827 Жыл бұрын
Зачем задержка не понял, что там бешено будет меняться?
@РазДва-ш8о3 жыл бұрын
В видео так удачно получилось, что выбранный таймер задействует ногу микроконтроллера на которой сидит светодиод. А что делать если все встроенные таймеры на задействуют ногу на который светодиод находится?
@РазДва-ш8о3 жыл бұрын
У меня STM32F410RB. В итоге пришлось воспользоваться таймером 1, запустить с помощью него ШИМ и кинуть перемычку с задействованной ножки на анод светодиода LD2, установленного непосредственно на плате. Все прекрасно работает. Спасибо за урок.
@spindle8534 жыл бұрын
Комрады.... А можно ли передать rcc1, rcc2, ит.д. В другую функцию как параметр? Я пробовал у меня не получилось ничего.
@YuriyIY8 жыл бұрын
Для того, чтоб каждый раз не тыркать ресет на плате, надо в кейле настроить флэшер. Идем меню Flash, далее Configure Flash Tools, в открывшемся окошечке вкладка Utilites, кнопка Settings. И там поставить чекбокс Reset and Run. Теперь, после заливки прошивки, проект будет стартовать, т.к. контроллер будет сбрасываться.
@narodstream5528 жыл бұрын
+Юрий Яремчук Огромное спасибо! Я как раз искал данный функционал! Я где-то слышал об этом, кстати тоже у какого-то блогера, но он только оговорился об этом но к сожалению не объяснил, где именно и как это включить. В следующем занятии я так и поступлю и объясню популярно, как именно это настроить. Ещё раз огромное спасибо Вам за данную информацию!
@YuriyIY8 жыл бұрын
narod stream И хотелось бы посмотреть, как измерить таймером параметры входного сигнала. Длительность импульса, период и т.д. Спасибо. :-) Очень мало полезной инфы по HAL, а тут такой канал рядом, а я и не нашел. Загадка.
@alexmueller10417 жыл бұрын
Если нужно перенести все настройки из предыдущего проекта, не нужно ничего менять в файлах и и копировать. Лучше сделать все прям v Кубе. 1. Открыть Проект , опции которого нужно перенести в новый проект. 2. нажать в Кубе save the Project in new file 3. Здесь поменять имя проекта и указать новое место локализации. 4. Нажать ОК. ( При необходимости внести дополнительные изменения в переферию в Кубе) 5. Генерировать код
@narodstream5527 жыл бұрын
Данным образом проект порой переносится некорректно. То есть те файлы, которые мы создавали самостоятельно и ко которых Куб ничего не знает, он не переносит. По крайней мере раньше было так, может теперь и исправили. Я привык делать именно ручным копирование, считаю это надёжным. Всё равно спасибо за информацию. Может, быть, кому-то будет полезно делать именно по методу, оглашенному Вами.
@ГригорийМир-ю3ч2 жыл бұрын
почему так много кода а можно это сделать switch ?
@ivanrusev22706 жыл бұрын
Ну вообщем вы профессионал а я деллитант
@leibmark5 жыл бұрын
Спасибо!
@МаксимВолкович-р4л7 жыл бұрын
Уроки очень полезные так как есть готовый работающий пример. Но мне не хватает теории.
@narodstream5527 жыл бұрын
Теории очень много по контроллерам STM. Я ещё не по одному железу такой поддержки не видел. Вам, видимо, не теории не хватает, а умения в ней разобраться. Смотрите дальше данные уроки, я всё равно порой, если есть возможность, объясняю , где и каким образом я нахожу в документации необходимые для разработки решений позиции. Правда, делаю я это кратко, чтобы не терять наше драгоценное время, так как ещё очень много нереализованных проектов, по которым уже написано очень много сценариев и кода.
@МаксимВолкович-р4л7 жыл бұрын
Попутно вашим урокам буду подтягивать теорию самостоятельно если будут вопросы. Ничего в этом страшного нету.
@musckowit7 жыл бұрын
HAL по сути framework и это ни то, что может дать теорию, но только поверхностные знания.
@igorm65855 жыл бұрын
Почти всегда люди путают скважность и коэффициент заполнения (величина, обратная скважности) :-) Если период единички равен периоду нуля, то коэффициент заполнения равен 0.5, а вот скважность равна 2. Ведь скважность - это отношение периода следования (повторения) импульсов к длительности импульса.
@volodymyrkyrieiev42735 жыл бұрын
Здравствуйте, Владимир. У меня есть задача, в которой нужно управлять 2мя электроклапанами. Сигнал - 7.2мс импульс, после которого ШИМ 25% с частотой 20кГц. Я пробую включать таймер в реж PWM с прерываниями с 100% заполнением и переполнением по 7.2 мс. В прерывании меняю параметры ARR и CCR чтобы частота ШИМа была 20кГц ну и заполнение нужное мне и выключаю прерывания. Первая проблема с которой столкнулся - если пробую выключить таймер во время первого импульса 7.2мс, то ничего не выходит, на выходе все равно 1, и вторая проблема, то, что при включении таймера не всегда получаю этот первый импульс......причем это как то хаотично. Включаю таймер в прерывании по переполнению другого таймера (к которому подключен энкодер), а выключаю в прерывании от кнопки
@narodstream5525 жыл бұрын
К сожалению, передо мной пока такие задачи не стояли, поэтому не могу подсказать, это надо время, чтобы всё это переварить и реализовать.
@ivanrusev22706 жыл бұрын
я любитель программирования AVR.уже 4 года учусь.Если бы не AVR .Мне бы было труднее освоить информацию.STM32 лучше и гибче функционал и быстрее.Я не программист.Я Электрик.Но мне это интересно.Хот и не всё и не всегда понимаю процессы в AVR и в STM32.Спасибо таким как вы.Я думаю нет никаких больших денег.Которые вам платили.На этом большие деньги не заработаешь.Есть у меня два проекта на AVR.Хотел бы перенести на STM32
@egorkomogortsev37008 жыл бұрын
Уважаемый, а не подскажите как включить в кейле всплывающие подсказки (автозаполнение). Не знаю как правильно это называется(
@narodstream5528 жыл бұрын
+rover abaddon Здравствуйте! Были уже такие вопросы, но я не знаю как. У меня они сами собой работают. Может версии кейлов как-то различаются.
@ВасилийПетров-л1й6 жыл бұрын
а если ножки шима не выходят на диод? например в stm32f103? как плавно помигать в таком случае?
@narodstream5526 жыл бұрын
Дрыгать ножкой, изменяя скважность.
@ВасилийПетров-л1й6 жыл бұрын
ни один из четырех таймеров на плате не имеет канала с номером ножки диода!
@narodstream5526 жыл бұрын
Значит дрыгаем ножкой без таймера - программно: Подняли уровень, подождали, опустили уровень подождали и т.д.
@МаксимГалкин-ы7у5 жыл бұрын
Здравствуйте. Сделано в точности как у Вас в видео, но есть одна неувязочка, когда мы игрались с одним светодиодом. И такая проблема: Светодиод работает только в режиме повышения яркости, потом он скидывается резко в ноль и опять повышает яркость. Выглядит так, как будто он просто не заходит во второй цикл for и просто игнорирует его. то есть постоянно крутится в первом цикле Программа написана в TrueStudio. Все Ваши другие уроки работали без проблем. Урок из текстового варианта работает так же хорошо. Проблема именно в описанной ситуации Можете что подсказать по данному поводу? Спасибо
@narodstream5525 жыл бұрын
Здравствуйте! Надо смотреть проект.
@МаксимВолкович-р4л7 жыл бұрын
По готовому делать это хорошо. Но не хватает описания как работать с документацией.
@narodstream5527 жыл бұрын
Да и так уже уроки огромные, если буду объяснять, как читать книги, то, я думаю будут ещё втрое больше. Будем считать, что читать мы уже умеем, если пришли программировать такие контроллеры.
@ДимаПигарь-б4и8 жыл бұрын
объясните мне пожалуйста, как правильно посчитать и настроить таймер, чтобы импульс был один раз в секунду?
@narodstream5528 жыл бұрын
Посмотреть на какой шине находится таймер, посмотреть частоту данной шины, но скорей всего для таймеров это отдельная частота (смотрится в Clock Configuration в Cube. И соответствующим образом настроить делитель и период. В уроке по таймерам я рассказывал, как именно, подробно.
@oleksandrlisovyi63148 жыл бұрын
Здравствуйте! Пробовал по Вашему примеру реализовать плавно мигающий светодиод на мк STM32F030C8Т6. В результате часть кода просто не работает, точнее работает только одна часть кода, где светодиод должен плавно гаснуть либо загораться. В зависимости от написанного кода части программы работают по разному, но не так, как нужно. Пишу в system workbench. Не подскажете в чем может быть проблема? Может это сам компилятор код оптимизирует так?
@narodstream5528 жыл бұрын
Скорей всего не в этом дело. Видимо под такой контроллер как-то по другому надо организовывать код.
@oleksandrlisovyi63148 жыл бұрын
Ради эксперимента решил скомпилировать тот же код с теми же настройками cubemx только в keil. Результат меня удивил - занимает почти в 2 раза меньше (в SW .hex файл занимает 25 кб, в keil тот же код занимает 14 кб), код скомпилированный в SW работает неверно, в то время как код скомпилированный в keil делает то - что нужно.
@Jensiru8 жыл бұрын
Странная штука, пример с одним светодиодом и на дискавери не пашет как надо, тоже через СВ компилирую. Дело не в контроллере походу. for(int i=0; iCCR1=i; for(int d=0; d0; i--) { TIM4->CCR1=i; for(int d=0; d
@Jensiru8 жыл бұрын
Всё, разобрался, дело в оптимизации компилятора, в св4стм32 включена оптимизация кода и это действует даже на HAL функции. Вот решение проблемы, можно выставить без оптимизации или лучше -О1. Оптимизацию лучше включать при заливке уже полностью готовой программы, дабы сэкономить место и всё. Enabling Optimization After importing a workspace/project, optimization seems to be disabled by default. The code size of the built project can be significantly reduced by enabling Optimization. To enable compiler optimization, do the following (click image on right to enlarge): Open project properties dialog by selecting from menu Select “C/C++ Build” » “Settings” from menu tree on the left Select the “Tool Settings” tab In this tab, select “Optimize for size (-Os)” for both the “MCU GCC Compiler” AND “MCU G++ Compiler” See image on right for details, click to enlarge! Пруф: wiki.modtronix.com/doku.php?id=tutorials:nz32:ide:sw4stm32-with-nz32-boards#enabling_optimization
@msdesignru8 жыл бұрын
неплохо, вы профессиональный эмбеддер или только хобби?
@narodstream5528 жыл бұрын
+msdesign(dot)ru В плане микроконтроллеров - просто увлекаюсь.
@english4fun8 жыл бұрын
+narod stream понял, жаль
@alexanderkalashnikov20676 жыл бұрын
А что не видно? Хекса боится, как огня.
@ДавааАймаа8 жыл бұрын
Здравствуйте! по вашему примеру попробовал настроить ШИМ на stm32f052, всё работает, только вот амплитуда сигнала на ножке почему то 1.5В, не доскажите в чем проблема? пытаюсь открыть мосфет транзистор, 1.5В не хватает в итоге транзистор нагревается и выгорает(
@narodstream5528 жыл бұрын
Здравствуйте! Даже не в курсе. Странно как-то. Не должно такого быть. Амплитуда по идее должна быть 3.3 в
@alexanderkalashnikov20676 жыл бұрын
Эо ослом снималось, или вольтметром?
@ГеоргийОрлов-г5в6 жыл бұрын
Как вы пишите комментарии на русском? У меня кириллицу забивает знаками вопроса. Драйверы ставили?
@vitalimitko51686 жыл бұрын
Нашел у Вас 2 урока по таймерам, этот и 5тый. Маловато инфы по работе с таймерами. Там функционала как у дурака фантиков. Вы ограничились приметивным прерыванием и шим. А тема очень широкая и требовательная.
@narodstream5526 жыл бұрын
Я ограничился тем, чем мы собирались пользоваться в следующих уроках, а остальное потихоньку наросло)
@МаксимВолкович-р4л7 жыл бұрын
А если перед практическим уроком записывать урок теории. Можно ли так?
@narodstream5527 жыл бұрын
Тут на то, что есть времени не хватает, хоть прекращай это неблагодарное занятие. Но пока терплю.
@igorm65855 жыл бұрын
IMHO проще было не кучу констант в Экселе набивать, а писать константы в коде типа 65536, 2*65536L, 3*65536L, ... Препроцессор при компиляции сам бы их вычислил, а код был бы нагляднее.
@narodstream5525 жыл бұрын
Я поделился своими мыслями, Вы своими. Пока предъява не массовая.
@ShakirovRuslan7 жыл бұрын
apply - эплай
@GypsyRewind6 жыл бұрын
supply - сопли
@LinArt6 жыл бұрын
Предлагаю Сотрудничество, занимаюсь авто электроникой , Могу ваш канал популяризировать а вы мой
@narodstream5526 жыл бұрын
К сожалению, пока нет времени этим заниматься.
@LinArt6 жыл бұрын
Жаль как будете готовы к сотрудничеству сообщите удачи вам.
@RockPANDOR6 жыл бұрын
прекрасный обучающий курс но извините за критику - надо сперва написать алгоритм или граф карандашом на бумажке и показать стрелочками,как должна работать программа,где она ветвится,попытаться заранее рассчитать все задержки (хотя бы приблизительно) и только после этого набивать код. Сложную программу методом тыка и последовательного многократного перепрошивания вы не напишите, это любительство Ни в коем случае не в обиду,просто рисуйте алгоритм перед написанием программы. может даже сделайте пару видео по теории разработки алгоритмов. польза для канала сразу будет заметна.