MDG_Lab

PWM на STM32F103

1 сообщение в этой теме

MDG_Lab    2

Здравствуйте! 

Ткните пожалуйста носом начинающего, как в Arduino IDE настроить частоту ШИМ. 

Работаю с STM32F103, функции analogWrite(*); pwmWrite(*); Этими функциями задаю номер порта и коэффициент заполнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Гость иван79
      Автор: Гость иван79
      Добрый день. Начал изучать микроконтроллеры, уроков в интернете на Си достаточно, на ассемблере не так много, может быть кто—то использует ассемблер, и поможет с ответами. Установил keil, в нем пытаюсь что—то писать.
      Вопрос первый у меня такой, как мне отслеживать бит в конфигурационном регистре, например в RCC, в регистре должен установиться флаг, как мне его отследить в цикле? Если конкретнее как прочитать значение этого бита, 0 там или уже 1. Бит бандинг работает только для установки бита или и прочитать можно? Как проще отследить значение бита?
      Или вот второй вопрос, с помощью директивы EQU я дал имя адресу конфигурационного регистра, а как задать имя битам этого регистра?
      Спасибо за помощь
    • Автор: Arseniy Popov
      Добрый день! Необходимо подобрать микроконтроллер, который будет получать команды по serial от esp8266 и димировать RGBW светодиод по следующему алгоритму: 
      https://docs.google.com/document/d/1FkPLiIgxleuDQn8pjihICQGRrMPXbwFzqCt6StQZjhU/edit?usp=sharing
      а также написать для него прошивку на си.
      Отвечать можете в телеграм arsenicum32 или сюда.
      Пишите цену / сроки, находитесь ли в МСК и/или в области.
    • Автор: eestyk
      Имеется микроконтроллер dsPIC30F5011. Хочу реализовать на нём ШИМ через Output Compare Module, так как у этого модуля есть как раз режим PWM. Всё проинициализировал, задал период и коэффициент заполнения ШИМ (duty cycle - 50%), выбрал Timer2. На соответствующей ноге тыкаюсь осциллографом, ничего нет. Не могу понять в чём проблема. Вроде по даташиту настроил правильно.
      #define PERIOD_PWM 12484 #define PERIOD_PWM_div2 6242 WriteTimer2 (0); OpenTimer2 (T2_ON & T2_GATE_OFF & T2_IDLE_STOP & T2_PS_1_8 & T2_32BIT_MODE_OFF & T2_SOURCE_INT, PERIOD_PWM); ConfigIntTimer2 (T2_INT_PRIOR_5 & T2_INT_ON); OpenOC3(OC_IDLE_STOP & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_ENABLE, PERIOD_PWM, PERIOD_PWM_div2); ConfigIntOC3(OC_INT_PRIOR_0 & OC_INT_ON); void __attribute__((interrupt, auto_psv)) _T2Interrupt(void) { IFS0bits.T2IF = 0; // Clear Timer interrupt flag Nop(); } void __attribute__((interrupt, auto_psv)) _OC3Interrupt(void) { IFS1bits.OC3IF = 0; // Clear interrupt flag }  
      dsPic30F5011-5013.pdf
    • Автор: Zhuk72
      Доброго дня всем.
      Такое вот дело, нужно сделать некую железку, функционал сейчас не важен. Имеется на руках плата Nucleo-F401RE и дисплей.
      Поскольку сделан он под Ардуину, а платы Nucleo имеют (в том числе) совместимую с ним разводку разъемов под периферию, дисплей втыкается без переделки, как есть. Все это и красиво и удобно, но вот шина данных, а в данной реализации дисплея используется 8-битная шина, не попадают пин-в-пин с портами МК. Переделка не планируется, надо исходить из то, что есть. Следовательно имеем такую картину:
      LCD_D7 - PA8 LCD_D6 - PB10 LCD_D5 - PB4 LCD_D4 - PB5 LCD_D3 - PB3 LCD_D2 - PA10 LCD_D1 - PC7 LCD_D0 - PA9 Чтобы отправить байт в дисплей, нужно его раскидать побитно. Моя реализация работает, вот так она выглядит:
      void lcd35_setData(unsigned char lcd35_data) { // Share data between data bus pins. unsigned int d7, d6, d5, d4, d3, d2, d1, d0; // Clear data bus pins. GPIOA->BSRR = (GPIO_BSRR_BR10 | GPIO_BSRR_BR9 | GPIO_BSRR_BR8); GPIOB->BSRR = (GPIO_BSRR_BR10 | GPIO_BSRR_BR5 | GPIO_BSRR_BR4 | GPIO_BSRR_BR3); GPIOC->BSRR = GPIO_BSRR_BR7; // Split bits d7 = (unsigned int)((lcd35_data & 0x80) << 1); d6 = (unsigned int)((lcd35_data & 0x40) << 4); d5 = (unsigned int)((lcd35_data & 0x20) >> 1); d4 = (unsigned int)((lcd35_data & 0x10) << 1); d3 = (unsigned int)(lcd35_data & 0x08); d2 = (unsigned int)((lcd35_data & 0x04) << 8); d1 = (unsigned int)((lcd35_data & 0x02) << 6); d0 = (unsigned int)((lcd35_data & 0x01) << 9); // Set data GPIOA->ODR |= (d7 | d2 | d0); GPIOB->ODR |= (d6 | d5 | d4 | d3); GPIOC->ODR |= d1; } Может можно сделать оптимальнее? Это прилично замедляет вывод изображения, особенно если выводить картинку целиком (480*320 по 2 байта на пиксель). Я всегда подстраивал железо под удобство написания кода, а тут вот вынужден извращаться.
      Кстати, гугление по данному экрану (Renesas R61581) выводило только на ардуинистов, неужели никто не подключал его к другим железкам?! Он, говорят, почти совместим с ILI9488. Я бегло прошелся по протоколу оного, да, есть такое, но в команды не углублялся. Вроде все отличие кроется в инициализации.
      P.S. Сейчас вот подумал, может сперва стоило привести lcd35_data к соответствующему типу, а потом уже применять маску и сдвиг.
    • Автор: Holm
      Приветствую!
      Собираю пульсоксиметр на MAX30100. Нашел на просторах интернета готовый код,но под STM32,но на винду хп драйвера не идут.
      Может кто-нибудь помочь переделать код под Ардуино Уно. Отблагодарю))
       



  • Сообщения

    • Я тебе сразу сказал, подходящий готовый усилитель - kicx 1.350. Мощность 1000Вт где-то. Если не нужно 1000Вт, то твой выбор - 100Вт, как ты говоришь, "китайских". По "Советским" замерам это и будет 1-10Вт. То-есть, это то, что ты хочешь! Неужели не понятно? При работе будет 0.1-10Вт в среднем. Но они будут! И есть запас на "чуть-чуть ручку громкости крутануть". Просто усилитель должен соответствовать динамику! А TPA3116D2 (класс Д) и TDA7575B (класс Б) подходят при питании 11-12В на эту нагрузку. Усилитель с меньшим питанием или с меньшей мощностью трудно даже найти под этот динамик. То, что ты пробовал(tda7498\ta2024), на 1Ом даже не рассчитаны! А если у тебя было питание свыше 12В, то ты перегрузил усилитель в 10 раз! Им это и не должно нравится! Неужели не понятно? Мощность прослушивания сильно зависит от оформления. Собери TappedHorn - хватит и 1Вт для комнаты(бас будет телом чувствоваться). Собери закрытый ящик - нужно уже 10-20Вт для "хоть что-то играет". Ну соединишь ты в режиме "САБ" эту tda7498, перегрузишь её в 5 раз, вместо 10 раз. Даже 5Вт хрен отдаст она! И в режиме "САБ" она не работает. TPA3116D2 (класс Д) и TDA7575B работают в режиме "Саб". TPA3116D2 есть готовые PBTL модули с ФНЧ для саба. Если 100Вт китайских не нужно, подаёшь не 11-12В питание, а 9-10В питание. Есть Стерео варианты TPA3116D2 PBTL, можешь взять такой, один усилитель как запасной будет, если дашь питания вольт 15, скорее всего микросхема сгорит. Поэтому, не более 10-11В желательно. TDA7575B я покупал отдельно микросхемы на АЛИ по 1$, готовых модулей нет по-моему. Так что, если печатная плата для тебя проблема, выбор очевиден - TPA3116D2 в режиме PBTL! Не имеет большого значения. Всё равно перегрузка усилителя в 10 раз никак не сравнима с "Уменьшить мощность на 3%", как бы ты тут не грешил..   Это может сработать в TPA3116D2, соединить после дросселей параллельно L+ с R+, L- с R-, это почти как кастрированный PBTL получается (параллельно два моста). Но ещё нужно закоротить 9-10-11 ноги, то-есть левый канал посадить на землю. Тогда микросхема перейдёт в режим "PBTL". Иначе - она сразу сгорит. Другого подключения не дано! Читай даташит внимательно!!!    Ты хоть даташит глянуть можешь? Там всё прекрасно написано и расписано, даже графики есть! В том числе зависимость качества от мощности, то, что желательно слушать не на максимальной мощности, а 10-20Вт. Тут эти "100Вт" больше как максимально-возможно-выдаваемая микросхемой. При превышении которой она взрывается. Ты же не будешь выживать все соки, что бы прям "Чуть-чуть и взорвётся" ? используй на 1-10% усилитель и он тебе спасибо скажет.
    • Вот простая схема  с порогом 5V. Думаю вам хватит её стабильности.
    • Она будет для того чтоб напряжение случайно не скакнуло выше 110вольт.Если надо оба плеча....сделаем оба. Делают и так стабилизацию от отдельной омотки...но она не совсем корректно работает.Не учитывает просадки напряжения в дросселе диодном мосту от нагрузки. Так обычно делают при высоком выходном напряжении ...например в преобразователе 12-220вольт.
    • Реально можно. есть разность потенциалов по высоте. "эл ток - как разность потенциалов магнитного поля" - это Вам сходу не понять. Это другая тема. Солнечного ветра не существует. Это ложь. Хвосты комет - это проявление гравитационного поля. http://forum.if4.ru/index.php?topic=2631.0 http://forum.if4.ru/index.php?topic=2629.0 https://my.mail.ru/community/blog.physics/382801CFC95F49D6.html   https://my.mail.ru/community/blog.physics/382801CFC95F49D6.html А в изоляторах не проходили в школе (и в ВУЗе)? И в проводниках тоже. Этих знаний нет у нашей интернациональной науки. А то, что есть - сильно искажено.   Не адепт. Как я уже сказал - энергии не существует. Есть иерархия уровней энергий. А, значит, закон сохранения другой. Я предлагаю более надёжный, и не разрушительный вариант, в отличие от Вас. 1. Потому что надо уметь понимать новую идею. 2. Потому что наука догматична, и не принимает в свои ряды тех, кто находит в науке ошибки. 3. Потому что эти люди тоже работают над проблемой. И у них другое решение задачи. А Вы списываете друг у друга - и рады однообразию мышления. Зачем? Как говорил робот Бигвелд - есть задача, так реши её! Только дело. Ничего личного. Пока что Вы не задали ни одного правильного вопроса. Возможно, сами мало знаете в области физики. Почему смена времён года? Да ещё зеркально. Официальная физика подтверждает - зима и лето - не от Солнца. Например, в январе Солнце нас греет сильнее. Но официальная физика утверждает, что Земля , наклоняясь, изменяет угол облучения Солнцем. Тем, самым создаются зима и лето. Но это ошибка. На самом деле есть посредник - воздушные массы. 1. Земля наклоняется. (Наклоняется ось Земли.) 2. Воздушные массы меняют направление. 3. Из-за этого зима и лето меняются местами - зеркально.  
    •  Цирк уехал "клоун" остался .  СЕРСАР ты усилитель хоть слушал в реале что бы что то на схему наговаривать ? Это не мое чудо изделие его сделал Виталий . По видео 2012 года на микрофон вебкамеры c910  определил (и слушал на реалтеке по любому  ) ?  Говорю сделай свое видео на камеру со своей системой  распиши звук , а я послушаю по ржу над тобой .  Ты в реале эту AIWA n5 или усилитель слушал Виталия ?  Если нет то гудбай с темы.  Кто его слушал можете подтвердить что он достойно звучит , да и цена 1250р за платку это че дорого , где все детали оригинал и печатка не самопальная ? PS :Пишу как хочу . Пока от тебя вижу только зависть что видос на c910 звучит лучше твоей системы всей вместе взятой .  Твое мнение мне не интересно вообще по звуку . Сам минус поставил , теперь ноет что ему минус влепили в ответку. Пусть в теме напишет хоть один кто слушал этот усилитель "в живую" что он говно как говорит СЕРСАР  и схема полный отстой . Так что иди троллируй в другой теме  к своим друзьям " кТо тЕбя любит читать".  
    • а не правильнее будет использовать нечто типа int8_t например, если точно знаешь, что пишешь для встроенной системы? Ну и мне казалось что в новых стандартах С это даже рекомендовано, вместо всяких short long и very very long unsigned float ))
    • Вообще, зависит от платформы. В компиляторах для 32-ух битных платформ, размер int = 32 бита.
      Лучше всего использовать типы short (16 бит), long (32 бита), ... . У них длина гарантирована.