Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 09 05, 22:20. Visos datos yra GMT + 2 valandos.
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
datenblate kazkaip miglotai aprasyta OC0A/OC0B, OC1A/OC1B kurie dirba kaip komplementarus isejimai, bet isbandes kelis mode negavau rezimo, kad dirbtu visi 4 vienu metu, dirba tik 2 kanalai ir viskas.
kas isaiskins kaip priversti veikti visus 4 kanalus vienu metu, pasidalinsiu ideja kaip pasidaryti pigu ir navarotna Stepperiu microstep valdikli [b]be papildomu isoriniu loginiu IC[/b]
Zejau ta datasheeta, kuriame raso, kad ATtiny2313 turi 4pwm, bet programuojasi tik du pwm OC0x ir OC1x, katrie turi komplementarius isejimus (man to uztenka idejai realizuoti), bet pajungus led'us sviecia tik du ir biski neaisku kiek tuos isejimus galesiu valdyti per PORTx bitu nustatyma. Aisku, galima apkabinetu kruva papildomu loginiu elementu, bet pakolkas degu ideja tu elementu atsikratyti ir vietoje brangiu ir nepatikimu Allegro naudoti mC + mosfetai. Vietoje pyzdavojimosi, geriau pateik savo super duper pavyzduka 70..200kHz koreguotos fazes greito PWM su papildoma galimybe valdyti OCxx pinus (idejos realizacijai tinka laikinai juos paverciant iejimais), tik reikia kad pvz OC0A generuotu viena PWM seka, OC1B butu jo inversija, OC1A generuotu kita PWM seka, o OC1B atatinkamai jo inversija.
Su AVR tik pradedu, tad ir visiskai zalias.
Siaip jei paimtume tarkim 45 datasheeto lentele tai galima pastebet, kad OC1A ir OC1B bus identiski savo isejimu. Taip pat jei nagrinetume 46 lentele tai ten nera vienodu WGM bitu kombinaciju, kuriose skirtusi TOP. Taigi ko gero viena taimeri galima naudoti tik vienam veikimo rezimui. Nors gal kas geriau ismano uz mane ir paneigs tai..?
issinagrinejau abi lentutes, kiek uzteko kantrybes, ir suradau savo klaida, dabar veikia visi 4 kanalai, tik kazkokia nesamone dedas, PWM veikia jei pastoviai keiti OCRxx reiksmes (atnaujini), WTF?
Kazka cia labai sudetingai aprasineji programoj..
OC1A ir OC1B naudojasi tuo paciu dazniu, gali skirtis tik A ir B plociai
su oc0n tas pat. Seip reiktu patikslint klausima kas norima kad butu tuose pwm kanaluose
_________________ Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau
visi 4 kanalai ir turi veikt tuo paciu dazniu, tik skirtis uzpildymas nuo 0 iki max, priklausomai kokios poliarizacijos ir kiek sroves turi teket per variklio apvija. nelygu koks pajungimas bi/unipoliarinis, skiriasi tik galios driveris.
Ir taip sudetingai rasai
Reik naudot fast pwm (gal), tarkim daznis priklausys nuo TOP reiksmes, pagal wgm reiksmes lentelei issirenkam "fast pwm top=0xFF", aisku daznio pasirinkimas kuklus tokiu atveju, jis butu didesnis jei rinktis "top=0cr0a".
Tarkim naudojam 16M kvarca, dalinam dazni is 256, tuomet F=16M/256*256=976Hz
timer0 inicializacija:
unsigned char a, b; a=100; b=50; TCCR0A=0b10100011; TCCR0B=0b00000100;
cia-Clear OC0A on Compare Match, set OC0A at TOP, Clear OC0B on Compare Match, set OC0B at TOP, Fast PWM TOP 0xFF, clkI/O/256 (From prescaler).
OCR0A=a; OCR0B=b;
a ir b keiciant keiciasi impulsu plotis, galima keist tiesiogiai rasant ir i ocr reiksmes. 100 ir 50 tik kaip pavyzdys.
Timer1 analogiskai tik reiktu atkreipt demesi kad ten 16bit, ir top galima nustatyt pagal ICR, kas leistu pasiekt ivairesni dazni paliekant laisvus naudojimui ocrA ir ocrB.
_________________ Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau
mano ideja nenaudot jokio prescaller, todel PWM dazniis TOP=0xff atveju butu 20MHz/4(cia kiek suprantu IO clk = FClk/4)/256 kas butu apie 19.5kHz, kas isbedos pakankamai daugeliui varikliuku, o jei PWM taktinasi tiesiai nuo FClk, tai apie 98kHz, kas dar stebuklingiau.
belieka tik timer1 ijungt 8bit rezima, nes man to per akis.
tiesa, naudojant PhaseCorrectPWM, periodas gaunasi ne 255, o 510 clk ciklu.
dar, kaip patyrusio, noriu paklaust del 0 reiksmes, ten kazkas uzsiminta, kad tokiu atveju issijungia PWM pakopa ir reikia tiesiogiai pina valdyt, ar neteisingai supratau. is bedos tiks ir 1 vietoj nulio.