Нужно настроить шим на 30кгц примерно, прочитал тут как можно сделать на arduino. Но фиг знает как конфигурируется порт внутри ардуино иде. Кто знает где найти исходник analogWrite или как сделать шим 30 кгц на atmega328?
тебе прям ровно надо? если нет или ДШ читай и калькулируй или, если самому лень: КодеВижнАВР (например) при создании нового проекта настрой как надо таймер и он тебе выдаст что надо в регистры вписать (уже готовый код, который ардуина должна понять). если надо точно — ещё придётся или тактовой частотой играть (подбором кварца (или внешнего RC осциллятора)) или настройкой регистра отвечающего за частоту внутреннего генератора — в зависимости от того, чем тактируется контроллер) можно частоту не трогать, а ограничить размер ШИМа (изменить число, при котором будет обнуляться счетчик), но такое изменение придется учитывать при расчетах т.к. 100% заполнения тоже будет при другом значении регистра.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Выходную частоту легко посчитать. Например для FAST PWM разделите тактовую частоту контроллера на коэффициент деления предделителя, затем получившиеся разделите на максимальное значение счетчика +1. Это и будет частота ШИМ.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
F_CPU=16000000 M=100; число градаций PWM PB2/OC1B=OUT; выход сигнала OCR1A=F_CPU/30000-1; период сигнала OCR1B=N*F_CPU/30000/M-1;N=1...M-1; длительность сигнала TCCR1A=COM1B1|WGM11|WGM10; TCCR1B=WGM13|WGM12|CS10; режим FAST PWM 15; F_CPU/1
За счет буфера изменение значений будет в момент BOTTOM, поэтому можно обойтись без прерываний.
1 - Нужно рассчитывать значения. a) Рассчитываем время такта МК. 1/F_CPU = t. Пусть частота кварца 16 МГц. Значит один такт выполняется за 0.0000000625. b) 1/30000 = 0,00003333333 до бесконечности. Берем 33,3 микросекунды. с) 0,0000333/0.0000000625 = ~ 533 такта. Но, чтобы получить нужную частоту, смена уровней должна быть в два раза выше рассчетного значения. Значит, ~ 267 тактов. 2 - Есть такая программа AVR Calc. Вводишь частоту или времянку, получаешь готовые цифры.
Последний раз редактировалось Demiurg Пн сен 18, 2017 07:08:03, всего редактировалось 1 раз.
Нужно настроить шим на 30кгц примерно, прочитал тут как можно сделать на arduino. Но фиг знает как конфигурируется порт внутри ардуино иде. Кто знает где найти исходник analogWrite или как сделать шим 30 кгц на atmega328?
Такие вещи на ардуинках не приветствуются (ибо там таймеры сконфигурированы под системные функции - самостоятельным вмешательством в конфигурацию можно где-нибудь в ином месте прожку "запороть", даже не подозревая про то - попандос может случится в самом неожиданном месте, когда функции измерения времени или чего "штатно" использующее таймера встретятся ). Надо брать "чистый" АВР (или иное) и писать на ассемблере или на Си. Как альтернатива - внешний "малолапый" МК собственно с ШИМ (типа ATTiny25/45/85), последовательным интерфейсом и самодельной системой команд для того интерфейса и собственно ардуинка, управляющая тем "переферийным с мозгами" МК согласно того самопального протокола.
Сейчас этот форум просматривают: Starichok51 и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения