![DomStudent](/img/default-banner.jpg)
- Видео 16
- Просмотров 2 426
DomStudent
Россия
Добавлен 30 окт 2020
Добро пожаловать в домик к Студенту. Пока что тут разбор программирования микроконтроллеров stm32 для начинающих. Что будет дальше, и куда приведут эти исследования - никому не известно.
Знакомство с шиной I2C на STM32. Часть первая - введение.
Знакомство с шиной I2C на STM32. Часть первая - введение.
Просмотров: 46
Видео
Подключение энкодера при помощи таймера stm32
Просмотров 8422 месяца назад
Подключение энкодера при помощи таймера stm32
Учимся работать с инкрементальным энкодером на STM32
Просмотров 742 месяца назад
Учимся работать с инкрементальным энкодером на STM32
Практическое занятие. Доработка подсветка в автомагнитоле Podofo 4019B
Просмотров 1663 месяца назад
Автоматическое управление яркостью в магнитоле при помощи STM32
Подключение фоторезистора к STM32, или основы АЦП в STM32
Просмотров 833 месяца назад
Подключение фоторезистора к STM32, или основы АЦП в STM32
Основы работы с прерываниями stm23. Таймеры stm32.
Просмотров 733 месяца назад
Основы работы с прерываниями stm23. Таймеры stm32.
Управление MAX7219 при помощи STM32. Часть вторая - практическое применение
Просмотров 303 месяца назад
Управление MAX7219 при помощи STM32. Часть вторая - практическое применение
Управление MAX7219 при помощи STM32. Часть первая - введение.
Просмотров 384 месяца назад
Разбираемся с шиной SPI при работе с STM32
Работа с семисегментным индикатором на STM32.
Просмотров 324 месяца назад
Работа с семисегментным индикатором на STM32.
Подключение кнопки к STM32. Устранение дребезга STM32.
Просмотров 1784 месяца назад
Подключение кнопки к STM32. Устранение дребезга STM32.
Настройка STM32CubeMonitor и работа с ним на примерах
Просмотров 794 месяца назад
Настройка STM32CubeMonitor и работа с ним на примерах
Работа с Git в Visual Studio Code при программировании STM32
Просмотров 364 месяца назад
Работа с Git в Visual Studio Code при программировании STM32
Самодельная отладочная плата для STM32
Просмотров 854 месяца назад
Собираем самодельную отладочную плату для микроконтроллера stm32.
Подготовка рабочего окружения. STM32 + VS Code
Просмотров 4834 месяца назад
Подготовка рабочего окружения. STM32 VS Code
У вас есть возможность просмотреть отладчиком? Я собрал проект в Cub, пробежался по инициализации и обнаружил следующее: Структура заполняется для деления на 4, но! TIM3->CR1 & TIM3->SMCR начиная с 8-го бита задают делитель. TIM3->CR1 - внутреннего сигнала, а TIM3->SMCR - внешнего. В процессе инициализации в кубе происходит запись параметра ClockDivision в регистр TIM3->CR1... Это похоже на косяк куба. Можно попробовать перед включением таймера 3 вставить строку: TIM3->SMCR |= 1<<TIM_SMCR_ETF_Pos; // 2 или TIM3->SMCR |= 2<<TIM_SMCR_ETF_Pos; // 4
Какая-то фигня с комментариями творится на ютубе. @domstudent7541, я ответил по поводу энкодера. Если пощёлкать кнопку "упорядочить" - мой коммент становится виден. Если не будет видно, позже продублирую.
Нужно будет проверить поведение энкодера. Как раз есть G030, распаяный на макетке.
Если вдруг получится обойтись без программного деления на 2 или 4 (в зависимости от настроек) то напишите пожалуйста. Я понимаю что деление на степени двойки для микроконтроллера относительно легко даются за счет сдвигов, но хочется совсем от них избавится
@domstudent7541 , в общем, энкодер из закромов у меня оказался точно такой, как и в видео - 4 отсчёта на щелчёк. К слову, бывает и 2, и сильно редко 1 отсчёт на щелчёк. Делить пришедшие импульсы на 4 у меня микроконтроллер заставить не вышло, а вот на 2 - легко. При инициализации просто нужно выбирать работу не по обоим входам энкодера, а по одному (ENCODERMODE TI1 или TI2). А аппаратный делитель таймера действительно, такое чувство, что не работает от слова совсем. НО!!! Если прескалер таймера после его инициализации установить на 2 ( TIM3->PSC = 0x1UL в моём случае ) - всё работает как нужно, правда с одной оговоркой - после перехода счётчика через ноль (крутнуть энкодер в обратную сторону). До этого, если крутить в плюс, считает по 2 импульса. Творится какая-то магия и ситуация однозначно требует дальнейшего расследования. :) Ах, да, и вторая оговорка тоже есть - после этих манипуляций приходит хана аппартному антидребезгу. В общем, ST-шники в очередной раз где-то набыдлокодили, а расхлёбывать простым пользователям. p.s.: нашёл интересную заметку по этому поводу. efton.sk/STM32/gotcha/g52.html
@@Seriyv0lk Спасибо за исследования! Теперь стало понятно почему и в документации на HAL, да и в самом ХАЛе запрещается выставлять прескейлер отличный от нуля) по поводу ENCODERMODE - это тоже логично и понятно, но деление на 2 и деление на 4 - по сути для процессора одно и то же. Была наивная надежда, что уж в новой то серии микроконтроллеров будет меньше багов. По этому то и отказался от bluePill, она со своим глючным I2C меня в своё время доконала до состояния что забросил на долгое время изучение. Спасибо еще раз, значит привыкаем к новым багам, и двигаемся дальше.
@domstudent7541 в G4 можно сделать, чтобы такой энкодер считал один к одному. Там есть опция ENCODERMODE X1.
Не знаю что задумали в STM ,но у AVR есть спец бит установка которого при захвате сигнала с ноги, проверяется сигнал 4 такта. Если верны все то истина. Может тут нужно реализовать проверку на все 4 импульса?
К сожалению в офф. комьюнити даже предлагают использовать программное деление. Ну и этот вопрос тянется ещё с 2015 года на одном из форумов. community.st.com/t5/stm32-mcus-products/encoder-mode-counter-division-possibilities/td-p/116644 mcu.cz/forum_m/showthread.php?tid=2354
Здравствуйте, можно как то это настроить для работы с китайским ST-LINK v2 программатором?
Добрый день. Хороший вопрос. Пока у меня нет такого счастья, но закажу, поэкспериментирую. Обычно доставка в течении пары недель - если получится - покажу как. Не получится - напишу.
@@domstudent7541 Оки, спасибо
У меня после установки расширения окна "PROJECT MANAGER" и "RESOUSES" пустые и дальше ничего невозможно сделать. Не зря у приложения рейтинг 2.5 звезды.
Не понимаю почему у некоторых не работает. Специально же показал на видео "чистую" установку, в виртуалке, на только что установленной операционной системе. Как вариант - могу повторить то же самое, но без ускорения видео, может для меня какой то шаг очевидный, а его пропускают. Надо такое видео?
@@domstudent7541 , не думаю, что такое видео необходимо. Самая вероятная причина такого - криворукость ST-шников. При чистой установке, скорее всего, оно у всех будет работать. А что делать людям, у которых это просто один из многих дополнительных инструментов? И никаким дополнительным видео эту проблему, к сожалению, не решить. Тут вопрос только к программистам ST.
На счет не решить - мне кажется Вы погорячились, всё таки у VS Code есть огромное преимущество перед другими средами разработки, а именно модульность. Можно просто взять, скачать плагин от ST, проанализировать как именно он взаимодействует со средой разработки, что именно не работает, и исправить баг... Но во первых это потраченное время, во вторых - это конечно же должен делать разработчик этого плагина.
Для опытных программистов , думаю что оно не нужно, а для начинающих все мелькает. Это мое мнение.
Просто если показывать всё-всё-всё, на скорости 1:1, это видео заняло бы более часа. У меня пока что мнение всё равно осталось тем же. ни надо никому такое подробное видео. Если будет желание повторить - то основные мысли главное услышать и понять, а дальше стоп-кадров более чем достаточно. Но всё равно спасибо за критику.
@@domstudent7541 Да я то справлюсь с неудобствами, если уж сильно нужно. У меня есть опыт в программировании на AVR. .Вы зрителей теряете. Для нечинающих ведь расчитано. Вам решать где золотая середина. Я не критикую. Пытаюсь помочь. Успехов вам.
Добрый вам день. Вы делитесь нужной информацией и я вам за это очень благодарен, но есть прозьба. не могли бы вы яснее показывать куда вы нажимаете и что делаете в реальном времени , а не быстро прокоментировав. Иногда кажеться что все само делаеться. Спасибо. Программа так и не увидела пути и не видит *.h
Добрый день. Я пытаюсь найти грань, где видео не будут по часу длиться, но при этом будут содержать максимум полезной информации. Плюс из-за того, что запись ведётся в виртуальной машине, как сделать видимым курсор мыши там - пока еще не придумал. Но если что-то в видео будет непонятно - для этого по немногу делаю сайт, где будет всё то же самое, но в виде текста с картинками. Но... это чуть позже будет готово) По поводу подключаемых файлов после импорта проекта - перезайдите в VS Code. Это к сожалению важно для нормального импорта пока что. Ну и в некоторых других занятиях я так же делаю новый проект с нуля - там можно ещё раз посмотреть. Ну и совсем если всё непонятно - репозиторий, в который всё складываю - открыт для всех, импортируйте мой проект для проверки)
@@domstudent7541 а если включить в настрйках мышки шлейф?
@@domstudent7541 У меня так-же не видит пути к библиотекам .h "Обнаружены ошибки #include на основе сведений, предоставленных параметром configurationProvider. Волнистые линии для этой записи преобразования (C:\Users\Jans\Desktop\Test\G474RE\Core\Src\main.c) отключены.C/C++(1696) не удается открыть источник файл "stm32g4xx_hal.h"C/C++(1696)" Так же было замечено отличие, у вас при генерации проекта в CubeMX создаются 3 папки (core, cmake, Drivers), у меня, что бы я не делал создаются только одна папка Core. Версия CubeMX 6.12 без авторизации аккаунта. Папки FW на чипы подкинуты, может быть проблема в аккаунте? Стоит попробовать более старую версию CubeMX?
здравствуйте, когда следующее видео ?
День добрый! Почти готово, но как объяснять и показывать мысли, которые крутятся в голове пока пишутся довольно простые алгоритмы я не придумал. По этому будет "упрощенный" вариант. И нет, забивать на это дело не планирую совсем. Отличный мотиватор делать что-то новое)
@@domstudent7541 очень круто, жду ))
Не работает, пишет No compiler found in cache file. "Подтверждаем..." Это как? Кудой нажал, ничего не понятно. Ладно с восьмого раза методом научного тыка удалось импортировать проект. О чудо , проект даже собрался. Но вот незадача - не работает отладка. Как вообще программа знает через шо отлаживать(st-link или j-link или ваще jtag программатор?). Идея интересная, но ...Шобы это все заработало, надо минимум диплом масачусетского технологического университета.
Странно, специально сделал видео, на котором все шаги записаны и показаны. По поводу отладки - при импорте проекта в VS Code создается в том числе файл "..\.vscode\launch.json в котором как раз и прописывается как и через что отлаживать. И судя по ошибке " No compiler found in cache file" данный файл у вас по какой то причине либо не сгенерировался, либо сгенерировался неверно. На всякий случай выложил на яндекс-диск все файлы из этой папки. Попробуйте понять в чем отличия. disk.yandex.ru/d/Hdm7XfpXiFb7Kw
@@domstudent7541 очень извиняюсь, что не ответил сразу. Вообщем разобрался что к чему и теперь из кубовского макефайла проект импортируется на ура, собирается и работает как надо. все работает и отладка и прошивка. А вот как создать проект без куба и макефайла? С нуля так сказать . Собрать то я его собрал, он собирается и прошивается, но прерывания не работают, точнее он не заходит в обработчик прерывания. Тот же код , один в один в кейле работает на ура, а тут нет. А с HAL или LL это не интересно. Остался бы в кейле но там такой редактор вырви-глаз. После vscode ваще ни очем.
День добрый @user-cn9sh9md5e . Сначала доделаю видео по работе с MAX7219, потом тогда сделаю видео для продвинутых - создание проекта с нуля, без автоматизации от STM. По прерываниям - странно что не попадаете в обработчик прерывания, я когда проверял как всё тут работает, в том числе и прерывания смотрел - всё отрабатывало корректно. И точки останова, и просмотр памяти, и "live expressions", хотя их надо донастраивать немножко.
@@domstudent7541 Там походу ошибка в startup файле. Я его заменил на скачанный с оф. сайта и огонь, всё завелось и работает прекрано. Спасибо.
К сожалению я забыл добавить в видео сам текст логики программного аккумулятора, который проговорил голосом. Создаём переменную. Мысленно устанавливаем для неё границы - от нуля, до десяти. В бесконечном цикле опрашиваем кнопку, и если кнопка нажата - то увеличиваем значение переменной, пока не доберёмся до максимального - в нашем случае это 10 Если же кнопка отпущена - уменьшаем значение, стремясь к нулю. Что бы не изменить значение этой переменной очень быстро, опрос состояния делаем не чаще чем 1 раз в 10 миллисекунд. Первое изменение значения переменной - мы делаем очень большим - например 5, что бы имитировать гестерезис. По достижении нуля - устанавливаем флаг что кнопка отпущена. По достижении десяти - что кнопка нажата.
Добрый день. Можете выложить в облако для скачивания все установочные файлы (Cube)?
Добрый день. Версии софта, что использованы на видео положил в Яндекс диск. Обновлять - не обещаю. disk.yandex.ru/d/EhcdREjECT1bkA
Я понимаю что этап с очисткой флешки МК можно было пропустить. Но хотелось показать весь путь, который был пройден для получения готового устройства.