STM32. PWM на практике. Проверяем себя осциллографом. Переходим с Arduino на STM32.

  Рет қаралды 10,913

Олег Волков

Олег Волков

Күн бұрын

Пікірлер
@timsystemsTS
@timsystemsTS 4 жыл бұрын
сколько копаюсь - более понятного объяснения не встречал! ждем видосы про уарт с проверкой целостности пакета. Продолжайте в том же духе!
@Solderingironspb
@Solderingironspb 4 жыл бұрын
Спасибо) я как раз сейчас с усартом разбираюсь. Заходите в группу вк, мы там бывает обсуждаем насущные вопросы по темам) Ссылка в описании.
@proman8078
@proman8078 2 жыл бұрын
Очень крутое объяснение ШИМ
@qrtgfqrtgf1574
@qrtgfqrtgf1574 4 жыл бұрын
Спасибо, что так подробно объясняешь.
@sasha-bj5tt
@sasha-bj5tt 4 жыл бұрын
Только я что-то изучу, как по этой теме выходит подробный урок. 👍
@kuimovigor4121
@kuimovigor4121 Ай бұрын
Огромное спасибо 🙏
@edmelectronics4110
@edmelectronics4110 3 жыл бұрын
Можете сделать урок по работе с таймерами - переполнение и сравнение и внутреннее прерывание / типы /? Считаю, что это фундаментальная тема в изучении контроллера.
@Solderingironspb
@Solderingironspb 3 жыл бұрын
Это можно все сделать. Я просто сейчас пока с ремонтом и переездом очень занят. Как с этими делами разберусь, так начну снова снимать видео.
@edmelectronics4110
@edmelectronics4110 3 жыл бұрын
@@Solderingironspb ОК
@NeussMsk
@NeussMsk 4 жыл бұрын
Timerclock это не частота МК. Это частота шины таймера. А шина за делителем висит и может отличаться от частоты МК
@Solderingironspb
@Solderingironspb 4 жыл бұрын
Спасибо! Хорошее замечание). Да...я не учел, что мы же частоту APB1 и APB2 тоже менять можем...
@DIY_PLC
@DIY_PLC Жыл бұрын
Смотрю на гитхабе есть modbus расскажи пожалуйста про него ооочень надо.
@Solderingironspb
@Solderingironspb Жыл бұрын
Там у меня функции для формирования запросов от мастера к слейву. Потом может преобразователь usart->rs485 спаяю и в рамках практики покажу, как работать с ним
@DIY_PLC
@DIY_PLC Жыл бұрын
@@Solderingironspb Преобразователи 485е нескольких видов есть тут вопросов нет. Нужен модбас на стм32. Моя версия не стабильно работает опыта мало еще видимо.
@Solderingironspb
@Solderingironspb Жыл бұрын
В режиме мастера нужно правильно задать вопрос устройству + рассчитать crc16. А потом просто слушать, что прилетит, согласно протоколу. Разберемся, но чуть позже. Пока не до этого
@DIY_PLC
@DIY_PLC Жыл бұрын
Попробуй из iso646.h or bitor итд.)
@androkauzi3278
@androkauzi3278 13 күн бұрын
Vielen Dank!!!
@DIY_PLC
@DIY_PLC Жыл бұрын
С указателями еще можно делать так для упрощения #define Ts p->Ts
@kooba6205
@kooba6205 2 жыл бұрын
Подскажите пожалуйста, с периодом понятно TIM2->CCR1=..., а вот как изменять частоту в цыкле?
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Регистр PSC и ARR
@ascuber4650
@ascuber4650 4 жыл бұрын
00:15 - это проблема не ардуины (как железки), а софтового ядра. А именно функция analogWrite() так написана. Посмотрите файл wiring_analog.c и все поймете. В этом случае надо просто использовать регистры таймера напрямую, а не эту функцию.
@Solderingironspb
@Solderingironspb 4 жыл бұрын
Под словом "arduino", я и имел ввиду оболочку для AVR.
@ascuber4650
@ascuber4650 4 жыл бұрын
@@Solderingironspb оболочка, если Вы имеете ввиду IDE, тоже ни при чем. И компилятор, и вся остальная "обвязка". Кроме ядра, ну или можно сказать, набора пользовательских функций, библиотеки. У них (разработчиков) задача просто иная стояла - максимально все упростить для пользователя и убрать рутину под капот. В результате - очень низкий порог вхождения и в итоге - широкая распространенность. Ну а обратная сторона - в том числе и то, что Вы описали.
@Solderingironspb
@Solderingironspb 4 жыл бұрын
Да, я не про IDE с компилятором, а именно про ядро и библиотеки) К примеру, у меня коллега берет ардуино уно, сносит с них ардуиновский загрузчик, ставит кварц на 20 Мгц и программирует их уже на чистом си в atmel studio. Пишет свои библиотеки и четко понимает, что и как работает. При таком подходе, я вообще ничего плохого к атмегам не имею) такое хоть в промышленность. А по поводу ардуино...я все еще считаю, что ардуино - это прекрасная возможность начать что-то делать. Люблю именно за быстрый старт, за то, что за год работы с ней, можно действительно наклепать множество интересных проектов (главное голову включать). И я считаю правильным, что если человек начнет изучение мира мк именно с ардуино. Нужно всегда идти от простого к сложному, иначе развитие будет ну очень медленным)
@ВалентинСысоев-л6ъ
@ВалентинСысоев-л6ъ Жыл бұрын
Сделал всё по видео, но почему то у меня светодиоды не включаются.
@nikolaystepanets2483
@nikolaystepanets2483 Жыл бұрын
Может светодиоды неправильно подключены. У меня подключение через резистор к плюсу 3.3 вольт Сделал все почти как в видео (на STM32F030) - вроде работает.
@andrejkomockij329
@andrejkomockij329 4 жыл бұрын
Странно, что итерация на осциллограмме заметна глазу. Или я что-то упустил?
@us3eo
@us3eo 4 жыл бұрын
А какую максимальную частоту так можно генерировать на выводе стмки? Платка тоже Blu Pill
@Solderingironspb
@Solderingironspb 4 жыл бұрын
36 МГц
@AE-systems
@AE-systems 4 жыл бұрын
Добрый день, а как сместить начало импульса, чтобы один канал стартанул с 0 мксек, а канал 2 стартанул с 10мксек, то есть сдвинуты относительно друг друга на 10 мксек
@AE-systems
@AE-systems 4 жыл бұрын
Без использования задержки делей
@Solderingironspb
@Solderingironspb 4 жыл бұрын
Здравствуйте. Именно 10 микросекунд, а не миллисекунд?
@AE-systems
@AE-systems 4 жыл бұрын
@@Solderingironspb ну это как пример, а так задача состоит в смещение на определенное время в миллисекундах, без использования делея
@Solderingironspb
@Solderingironspb 4 жыл бұрын
Попробуйте так (Не тестировал.) uint8_t flag_start; //очередь старта unsigned long Time; // переменная времени int main(void) { flag_start = 1; Time = HAL_GetTick(); while (1) { if (flag_start == 1) { TIM2->CCR2 = 1023; //задаем значение шим Time = HAL_GetTick(); // запоминаем время flag_start = 2; // очередь сдвигаем на +1 } if (flag_start == 2 && HAL_GetTick() - Time >= 10) //если с прошлого момента прошло 10 мс и очередь настала { Time = HAL_GetTick(); //запоминаем время TIM2->CCR3 = 1023; //задаем значение шим flag_start = 3; // очередь сдвигаем на +1(чтоб не перезапускать шим каждые 10 мс) } } }
@AE-systems
@AE-systems 4 жыл бұрын
Спасибо, попробую и отпишусь
@DIY_PLC
@DIY_PLC Жыл бұрын
Если заранее написать программу, а потом просто рассказать на видео то будет гораздо быстрее.
DIY COMPUTER from scratch!
25:03
Vectozavr
Рет қаралды 2,2 МЛН
Quando eu quero Sushi (sem desperdiçar) 🍣
00:26
Los Wagners
Рет қаралды 15 МЛН
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН
Мен атып көрмегенмін ! | Qalam | 5 серия
25:41
STM32: PWM шаг за шагом на STM32CubeIDE
10:51
G1Tech
Рет қаралды 30 М.
Изучаю STM32!
20:26
Лёша Кластер
Рет қаралды 199 М.
STM32 Таймеры. Введение
24:48
MBDLB
Рет қаралды 3,6 М.
Библиотека для адресных RGB лент STM32
20:04
STM32 PWM на практике.
9:50
Vladimir Medintsev
Рет қаралды 19 М.
Запускаем ШИМ на любом пине Ардуино!
12:56
Заметки Ардуинщика
Рет қаралды 74 М.
Quando eu quero Sushi (sem desperdiçar) 🍣
00:26
Los Wagners
Рет қаралды 15 МЛН