Tahan teha sujuvalt muutuva duty-cyclega pwmi (lambi süttimine ja kustutamine). Mõtlesin, et kuna PWMi perioodi lugemiseks kasutatakse TMR2-e, siis iga perioodi lõpus tekib ju tema katkestus ja siis olekski õige hetk uus duty väärtus registritesse laadida. Aga...Microchip vist ei arva nii. Katkestustesse laskutakse ja registrid laetakse ka (kontrolliks lasin saata ossile sobival hetkel signaali) kuid PWMi CCPR1H registrit ei laeta.
Kui nüüd teha sama asja asünkroonselt iga 10 ms tagant, hakkab PWMi periood kenasti muutuma. PAraku siis tuli vilgub, kuna laadimine on asünkroonne.
Datasheet väidab, et CCPR1L ja CCP1CON võib kirjutada alati ja mida iganes kuid asi läheb arvesse alles siis kui TRM2 saab võrdseks PR2-ga ehk kui periood lõppeb. Just sel hetkel laen mina uue väärtuse.
OK, ehk see ei loe aga peaks minema arvesse järgmise perioodi alguses. Paraku miskipärast ei lähe.
Ma ei saa enam pihta sellele loogikale.
Keegi näeb viga?
Tähh!
/Felch
Kui nüüd teha sama asja asünkroonselt iga 10 ms tagant, hakkab PWMi periood kenasti muutuma. PAraku siis tuli vilgub, kuna laadimine on asünkroonne.
Datasheet väidab, et CCPR1L ja CCP1CON võib kirjutada alati ja mida iganes kuid asi läheb arvesse alles siis kui TRM2 saab võrdseks PR2-ga ehk kui periood lõppeb. Just sel hetkel laen mina uue väärtuse.
OK, ehk see ei loe aga peaks minema arvesse järgmise perioodi alguses. Paraku miskipärast ei lähe.
Ma ei saa enam pihta sellele loogikale.
Keegi näeb viga?
Tähh!
/Felch
Comment