Чаму я не павінен грубай сілы PWM?

Так што я гуляў з Attiny45, і гэта адбываецца са мной, што я мог бы перабор PWM на папярэднім дзяленне частоты таймера sysclock/64, то выконваецца код ISR, які ўручную перамыкае выхады або выключаюцца ў залежнасці ад глабальных зменных, устаноўленых у іншых краінах код або праз IO. Пры максімальнай хуткасці sysclock ад 20МГц я Oughta атрымаць годную дазвол, і я буду атрымліваць, каб выкарыстоўваць усе свае кантакты ўводу-вываду, як ШІМ замест двух чып забяспечвае, такім чынам, вялікае пытанне ... чаму б і не? Акрамя выкарыстання на шмат цыклаў sysclock, я сапраўды не бачу недахопаў ... можа хто-небудзь даць мне некаторыя?

6
Хіба ня ATtinyX5 забяспечваюць 3 выходных comparitors, OC0A, OC0B/OC1A (агульны на PB1), OC1B?
дададзена аўтар Hrvoje Hudo, крыніца
дададзена аўтар Dan, крыніца
Я спрабаваў рабіць гэта адзін раз (але з іншым кантролерам). На практыцы вы не атрымаеце чысты пульс. Замест гэтага ён змяняецца ў залежнасці ад часу тактавага цыклу, і запавольваецца, калі ваш кантролер заняты чымсьці іншым.
дададзена аўтар Teresa Ortega, крыніца
ён таксама адчувае сябе непрыгожа - гэта займае <�я> вельмі мала </я> апаратнае забеспячэнне для аднаго канала ШІМ - гэта можа быць у літаральным сэнсе зваротны двайковы лічыльнік аперацыі XOR і залежнасцей ў рэгістр, а таксама некаторыя гадзіны дзялення логікі і, магчыма, аналагічныя ўстаноўкі для выключэння імпульсу таксама. біт стук пакутуе ад непаслядоўным і цяжка дакладна прадказаць тэрміны, а таксама (адносна) інтэнсіўнае выкарыстанне рэсурсаў - выкананне кода, перапыненняў, каналы, сістэмныя гадзіны (якія могуць мець больш магчымасцяў, чым ШИЕ гадзіны) - усё для такой простай функцыі. чаму вам трэба больш каналаў? можа быць больш танным спосабам.
дададзена аўтар lanzo, крыніца

6 адказы

Тры недахопаў Спажываная магутнасці, звязванне таймера і перапыненне іншага кода. Калі вы не клапоціцеся аб нізкіх рэжымах магутнасці, і няма неабходнасці для таймера, і не маеце крытычны кода, які не можа вытрымаць некалькі тактаў для абслугоўвання перапынення, няма недахопаў. Некаторыя праекты досыць простыя і не займаюць дзясятую частку магутнасці мікракантролера, так што не дазваляйце нікому казаць вам, што вы робіце гэта няправільна, скарыстаўшыся таймераў, як гэта. Праграмнае забеспячэнне PWM нармальна, калі яна адпавядае вашым патрэбам.

6
дададзена
@Passerby вас гук процілеглы. Так, у тым жа духу, то MCU не можа спаць, калі таймеры працягваюць працаваць. Лепшае, што можна зрабіць, гэта перайсці ў рэжым чакання, які на Attiny дазваляе эканоміць каля 3,8 ма (але калі вы сапраўды клапаціліся пра сілу вы б працуе на 1,8 У, у гэтым выпадку ён толькі эканоміць 0,2 ма), так што калі вы » зноў бесклапотна працуе адзін дыскрэтны святлодыёд пры «цьмяным» 2 Мо я б сказаў, што ў той час як упэўнены, вашы зберажэнні «статыстычна значныя» яны не маюць ніякіх адносіны з інжынернага пункта гледжання.
дададзена аўтар Hrvoje Hudo, крыніца
Майце на ўвазе, што ўсе гэтыя размовы пра «эканоміі энергіі» не мае дачынення, калі вы так моцна, як цьмяна асвятляючы аднаго святлодыёда.
дададзена аўтар Hrvoje Hudo, крыніца
Выкарыстанне праграмнага забеспячэння PWM можа таксама павялічыць спажыванне энергіі, патрабуючы, каб працэсар будзе працаваць на больш высокай хуткасці, чым гадзіны адваротным выпадку былі б неабходныя.
дададзена аўтар firedfly, крыніца
@MathEE Калі працэсар не выконвае інструкцыі, вы можаце даручыць яму ўвайсьці ў рэжым сну нізкай магутнасці. Гэта азначае, што прылада будзе спажываць значна менш энергіі на працягу зададзенага часу. Для некаторых рэжымаў сну Таймер кіруецца ШІМ працягвае працаваць, але, вядома, трохі стукнулася PWM не будзе. Перапынення агульны метад для выхаду з рэжыму чакання.
дададзена аўтар La raison, крыніца
@MathEE Пры выкарыстанні ШІМ апаратнага/таймера, вам не патрэбен працэсар, і вы можаце ператварыць яго ў сон. Гэта дазволіць зэканоміць дастатковую колькасць энергіі. Ён мяркуе, што працэсар працуе на халастым ходу пры выкарыстанні таймера кіруецца ШІМ (і, такім чынам, можна пакласці спаць), а не лічачы цыклаў каманд пры выкананні бітную стукнулася PWM.
дададзена аўтар La raison, крыніца
PWM звязвае таймер на многіх платформах
дададзена аўтар wannabecapablanca, крыніца
Перапыненне прыводзіць мікракантролер з рэжыму паніжанага энергаспажывання, для абслугоўвання код. Апаратны модуль PWM можа апрацоўваць усё значна больш эфектыўна, без чаго чып з LPM. Калі ўсё БУМ выкарыстоўваецца ў асноўным для Шэга са выпадковым узаемадзеяннем з карыстачом, гэта галоўны хіт на энергаспажыванні.
дададзена аўтар Eloise Coramsfield, крыніца
@nickt згаджаючыся з ілжывым здагадкай ня ерэтык.
дададзена аўтар Eloise Coramsfield, крыніца
@nickt, наадварот, тыя слаботочных дадатак, як зацямненне адным святлодыёда здабываць максімальную выгаду ад эканоміі электраэнергіі. Калі ваша мэта мэта складаецца ў тым 3mAh, 2 м у сярэднім ад пастаяннага няспання мікракантролер мае велізарны поспех. На otherhand, 2mAh ударыў па ўжыванні ШІМ 500mA рухавіка, нікчэмна малая.
дададзена аўтар Eloise Coramsfield, крыніца
@jippie Вялікага. Дзякуючы.
дададзена аўтар John Keddy, крыніца
@jippie Так, я разумею, што можна выкарыстоўваць перапыненне, каб выскачыць з спячага рэжыму для эканоміі энергіі - перавага. Я спрабаваў зразумець каментар мінака аб тым, што спажыванне энергіі з'яўляецца недахопам. Я ўпэўнены, што Мінакі нешта на ўвазе, але гэта не для мяне ясна, што PWM апаратныя сродкі будуць спажываць менш энергіі, чым лічыльнік ў спалучэнні з ISR. У рэшце рэшт, модуль PWM проста лічыльнік з дадатковым абсталяваннем.
дададзена аўтар John Keddy, крыніца
Па энергаспажыванні вы маеце на ўвазе таймер з ISR выкарыстоўвае больш энергіі, чым чыста праграмнае рашэнне, ці не так? Таймер з ISR павінна мець прыкладна такі жа спажыванай магутнасці, як з дапамогай спецыялізаванага апаратнага ШІМ.
дададзена аўтар John Keddy, крыніца

Я толькі нядаўна гуляў з вялікай колькасцю PWM пераключэння рэчы харчавання, і вы маеце рацыю, ёсць цалкам абгрунтаваныя прычыны для «біт выбуху» шыротным-імпульснай мадуляцыяй сігналаў. Але адзін з галоўных недахопаў гэтага метаду з'яўляецца тое, калі вам трэба неадкладнае кіраванне з зваротнай сувяззю, генераванага працоўнага цыклу.

Нават пры 20 МГц бартавыя гадзіны, час цыклу 50 НС. Вылічальным, вы павінны атрымаць сігнал кантралюецца, адняць яго з зыходнага ўзроўню, а затым аднавіць генерацыю працоўнага цыклу. Гэта дазволіць стварыць «джиттер», дзе цыкл супярэчлівы. Выкарыстанне бартавы ЛАП не можа быць і гаворкі, але яна з'ядае цыклы. Для таго, каб зрэзаць на гэта, вы можаце дадаць знешнюю ЛАП, але тады вы здзейснілі, можа быць 8 або 12 загваздак ад мікракантролера да знешніх ЛАП для хуткага чытання (у залежнасці ад таго, колькі дазволу вы хочаце). Тады вам не прыйдзецца турбавацца аб дадатковай затрымкі распаўсюджвання сігналу праз пераключэнне кампанентаў.

Калі тое, што вы хочаце хуткае кіраванне з зваротнай сувяззю, гэта цяжка перасягнуць незалежны цыкл ІС. Затрымка з узмацняльніка памылкі на плаце настолькі малая, што вы больш занепакоеныя узмацненнем змяняецца на высокіх частотах. Распаўсюджванне сігналу праз пераключэнне па-ранейшаму той жа самы рызыка, вядома, і павінна быць распрацавана вакол.

Таксама варта адзначыць, што многія пакеты PWM IC маюць функцыі адключэння і адмерлыя ўваходы кіравання часу, якія могуць рабіць сапраўды класныя рэчы, калі ў спалучэнні з мікракантролерам, усё на пакеце 8 або 16 высноў.

Гэта ў значнай ступені залежыць ад вас, каб вырашыць, калі метад трохі челка можа падтрымаць вашыя патрэбы. Вы сапраўды можаце атрымаць частату да вельмі высокай, калі вы выкарыстоўваеце больш нізкі дзельнік. Цыкл вы атрымаеце, будзе паказваць памылку квантавання, але гэта не можа быць нават вялікім справай у залежнасці ад таго, што вы робіце, і як высока вы прыняць рашэнне; але зноў жа, больш высокі дазвол дасягаецца за кошт больш нізкай частоты. Калі вы не патрабуеце імгненнага кантролю з зваротнай сувяззю, і ваша прыкладанне можа апрацоўваць некаторы джиттер, то біт Стук можа быць шлях.

4
дададзена

Пункт наяўнасці апаратных прылад на чыпе, каб вызваліць працэсар для выканання іншых задач. Калі вы выкарыстоўваеце PWM апаратныя сродкі, то вы можаце адначасова выконваць іншыя задачы мікракантролера.

Цяпер я думаю, што вы падабралі на гэты біт, таму што вы пытаецеся пра выкарыстанне ISR замест Забягаючы для/час цыклу пераборам лічыльнік, але зноў-такі той жа самы адказ. Калі мы не зменім шырыню імпульсу, чаму б мы хочам перапыніць нашы іншыя задачы без неабходнасці?

3
дададзена
Таму што мы хочам больш за 3 ШІМ каналаў без дадання да спецыфікацыі.
дададзена аўтар Dan, крыніца
@Ignacio Можа быць, я няправільна разумею пытанне, але я прачытаў гэта, як АП хацеў грубую сілу PWM, а затым у якасці бонуса атрымлівае больш каналаў Шых. Вы маеце рацыю, калі ОП хоча зрабіць гэта, таму што ім трэба больш каналаў.
дададзена аўтар John Keddy, крыніца

Вы можаце лёгка рабіць тое, што вы кажаце, - я зрабіў гэта некалькі разоў. Гэта больш карысна, калі вы хочаце змяніць свой PWM ў прадказальнае час; Вы можаце зрабіць гэта шляхам падліку колькасці цыклаў PWM, і вам спатрэбіцца таймер, каб зрабіць гэта ў любым выпадку.

Тым не менш, існуе кампраміс паміж адрознівальнай здольнасцю ШІМ/# выхадаў супраць колькасці вольнага часу працэсара. Вы дасягне кропкі, дзе вы не маеце дастаткова вольнага працэсара, каб прымусіць яго працаваць.

Я рэкамендую замацоўваць вобласць бачнасці да вольнага штыфта, а затым усталяваўшы, што кантактны высокія ў пачатку ISR і нізкія ў канцы. Гэта дазволіць вам убачыць частку часу вашай падпраграма выкарыстоўвае.

1
дададзена

Праграмнае забеспячэнне PWM не вельмі рэсурсаёмістыя, калі робіцца ў правільным кірунку, як, выкарыстоўваючы <�моцны> Binary Code Modulation . З гэтай мілай і просты тэхнікі, вы можаце мець шмат каналаў SoftPWM без вялікай нагрузкі на працэсар.

0
дададзена
Я выкарыстаў варыяцыю BCM для святлодыёдаў, і яны добра для цвёрдых узроўняў, але падыход з улікам мільгане дрэнна, калі чаргуецца ўзровень яркасці паміж 127 і 128. Альтэрнатыўным падыходам для 256 ўзроўню Шэга павінны мець прабег перапынення напрыклад, адзін раз кожныя 256 цыклаў, і маюць кожнае перапыненне запісу святлодыёдаў у два разы, 16 цыклаў адзін ад аднаго. На палову цыклаў (пераменны), напісаць біт 3 біт, а затым 7. На палове астатку, напісаць біт 2, а затым 6 і г.д. на 1/16, проста напісаць нуль і рабіць іншую апрацоўку.
дададзена аўтар firedfly, крыніца
Звязана рэалізацыя двайковага кода мадуляцыі мае той недахоп, што выхад, значэнне якога змяняецца ад 127 да 128 будзе нізкім для 255 паслядоўных імпульсаў, і адно значэнне якога змяняецца ад 128 да 127 будзе высокім на 255 паслядоўных цыклаў. Акрамя таго, калі прылада кіруецца мае нераўнамернае павярнуць ўключэння/выключэння паводзіны, ШІМ будзе паводзіць сябе лінейна на працягу большай часткі свайго дыяпазону, у той час як ВСМ не будзе. Некаторыя варыяцыі на ВСМ можа быць карысным, але яго абмежаванні часта павінны быць прызнаныя і разгледжаны.
дададзена аўтар firedfly, крыніца
Нязначны Ніт: ШІМ ставіцца да некалькіх схемах мадуляцыі прыватнасці, у якім пастаянны ўзровень выхаднога сігналу будзе прадстаўлены пульсовой хваляй з пэўным рабочым цыклам, а частата хвалі не залежыць ад узроўню, прадстаўленага; схемы адрозніваюцца толькі ў тым, як <�я> змены у выходным узроўні будуць прадстаўлены. Binary Code Modulation з'яўляецца членам больш агульнага класа <�я> мадуляцыі працоўнага цыклу схемы.
дададзена аўтар firedfly, крыніца
Хаця вы заўважылі добра, што BCM не з'яўляецца рашэннем для ўсяго, ён будзе мець справу з большасцю прыбораў досыць добра і з вельмі нізкай загрузкай працэсара. Часцей за ўсё, верагодна, будзе зацямненне святлодыёдаў. Калі яркасць лінейнасці неабходна ў гэтым выпадку, то як PWM і BCM спатрэбіцца табліца карэкцыі.
дададзена аўтар TheFaderJockey, крыніца

Асабіста я знайшоў PWMs таймер хутчэй і паслядоўна (у поўным дыяпазоне 256, калі вам не трэба такі дазвол, праграмнае забеспячэнне [ «грубай сілы»] можа быць хутчэй), і, калі я патрэбны больш за 2 I паспрабаваў мяккую PWMing нароўні з жорсткімі і ШІМ wan't вельмі гладка, так што я вырашыў зрабіць усё PWM у праграмным забеспячэнні і гэта апынулася вялікім.
Адзінае, калі рабіць і прамежкавыя вылічэнні/апрацоўкі/перапынення, якія займаюць трохі часу, мяккія ШІМ-кіёскаў і можа быць вельмі прыкметным.

0
дададзена