SW řešení více PWM kanálů (Atmega 16)

Zdravím, potřeboval bych poradit jak zprovoznit více PWM kanálů nejspíše softwarovou cestou. Jako jedno řešení se mi jeví postupné ukládání hodnot do registru komparátoru (OCR0) ale to bych musel proměnné řadit podle velikosti a s tím by byly problémy.
Nevíte o nějakém elegantnějším řešení ? Budu vděčný za každou radu

No pokusim sa vysvetlit… ked ti nevadi ze to bude bezat v hlavnej slujke programu a askoro nic ine sa neda vyonavat :smiley:

pouzi dva premene napr char … nula, jedna do tychto premenych vlozis cisla a to tak ze sucet tych cisel je vzdy konstantny tj napr. nula=10 , jedna =245, sucet je 255 logicky pojde o osembit pwm.
Teraz nastavis vystupny bit do nuly a zacnes kazdym prechodom slucky znizovat hodnotu premenej nula-1, ak dosiahnes nulu vystupny bit nastavys na jednotku H, a zacnes znoizovat hodnotu premenej jedna-1 ked dosiahnes nulu znova zinicializujes premene nula a jedna… cyklus sa uzavrie a nast vystup do nuly…

ak by si potreboval este nejake ine veci robit okolo toho je mozne nastavit vystupny pin do rezimu vstupu…tym padom dojde len k miernej deformacii vystupneho napetia sposobeneho poklesom na vystupnej filtracnej kapacite teda ked to zatazis vyvokoohmovym vstupom.

Co sa tyka cisel v reg nula a jedna nastavuju vlastne striedu PWM

Tak jde o to že bych měl vytvořit několik PWM kanálu cca 5 a s nimi ovládat výkonové LED diody. A to vše má být ovládáno z PC pomocí seriové linky a jestě dálkovým ovládáním a nevím jestli by to vše stíhalo. Tady by to podle mě dělalo problémy při vyvolání přerušení - prodlužovalo by to periodu ne ?

Ahoj, resil sem stejnej problem.Posilam kus kodu, kterym sem uvladal svitivost RGB ledky.Tedy tri kanaly PWM.Kdyz pridas promeny a zkopirujes kod pro prvni tri kanaly tak si muzes udelat teoreticky libovolnej pocet kanalu PWM.Napsal sem tam i malej komentar na vysvetleni snad to pude pochopit.Kdyztak se optej.Je treba chapat jak funguje PWM klasicky hardwarovi…
SwPwm.txt (2.5 KB)

Do showleeho kódu jsem nekoukal, ale jesli je to ten, co jsme tu dávali nedávno dohromady, tak ten stíhat bude vpoho. Bylo to tam řízený přerušením, takže main byl volnej a uvažovalo se o tom, jesli to zvládne 192ti kanálovou pwm aspoň na 30Hz. Takže 5 kanálů nebude žádnej problém. Záleží ovšem taky na tom, jakou rychlost pwm požaduješ.

Děkuji showleemu za poskytnutí kódu. Funguje to výborně zatím jsem tam přidal pouze jeden kanál takže mám dohromady 4 . Rychlost by měla být taková aby led diody neblikaly což se zatím neděje. Teď je v plánu další oříšek a to příjmání a zpracování dat z IR přijímače a to samé akorát v podání seriové linky a PC. :unamused: