12-25-2014, 11:31 AM
@mikikg,
zanima me kako promjeniti PWM frekvenciju na Attiny MCU, točnije Attiny84.
Htio bih ju podić na 32500 ili više Hz za potrebe step-down pretvarača.
Našao sam PWM.h library za arduino koji funkcionira na Atmega328P, sa njom se vrlo jednostavno može promjeniti frekvencija i može se namjestiti da se Timer0 zadužen za delay() i ostale funkcije di je tajming bitan ne dira.
Kako se to ručno može podesiti ?
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Proučavao sam malo datasheet i ja bi pin PB2 koristio kao PWM izlaz, i ako sam dobro shvatio u TCCR0A registru treba postaviti bitove ovako: 01000001 <- to je phase correct PWM na OCA0, OCAB isključen, WGM01 bit podešen na 0, a WG00 bit podešen na 1.
TCCR0B bi trebalo podesiti na 00001010 <- WGM02 bit podešen na 1, Phase correct PWM, a prescaler podešen na 8 sa 010.
Znači sa ovim postavkama bi trebao dobiti ovo:
TCCR0A 01000001 <- (COM0A1 = 0; COM0A0 = 1; COM0B0 = 0; COM0B1 = 0; 0; 0; WGM01 = 0; WGM00 = 1
//COM0A1 i COM0A0 ovako podešeni postavljaju OCA0 u Compare Match mod.
TCCR0B 00001001 <- (FOC0A = 0; FOC0B = 0; 0; 0; WGM02 = 1; CS02 = 0; CS01 = 0; CS00 = 1
// Ovime se prescaler postavlja na 1 što mi uz clock frekvenciju od 16 MHz daje PWM frekvenciju od 31372,54 Hz
Na pinu PB2 (OCA0) -> Phase correct PWM (WGM02 = 1; WGM01 = 0; WGM00 = 1
Mode 5 u tablici na stranici i frekvenciju od oko 31.4 kHz
Molio bih da neko stručniji kaže koju riječ, da li je ovo dobro.
E sad još jedno važno pitanje, koji tajmer bi na Attiny84 utjecao na funkcije delay() i ostale ?
zanima me kako promjeniti PWM frekvenciju na Attiny MCU, točnije Attiny84.
Htio bih ju podić na 32500 ili više Hz za potrebe step-down pretvarača.
Našao sam PWM.h library za arduino koji funkcionira na Atmega328P, sa njom se vrlo jednostavno može promjeniti frekvencija i može se namjestiti da se Timer0 zadužen za delay() i ostale funkcije di je tajming bitan ne dira.
Kako se to ručno može podesiti ?
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Proučavao sam malo datasheet i ja bi pin PB2 koristio kao PWM izlaz, i ako sam dobro shvatio u TCCR0A registru treba postaviti bitove ovako: 01000001 <- to je phase correct PWM na OCA0, OCAB isključen, WGM01 bit podešen na 0, a WG00 bit podešen na 1.
TCCR0B bi trebalo podesiti na 00001010 <- WGM02 bit podešen na 1, Phase correct PWM, a prescaler podešen na 8 sa 010.
Znači sa ovim postavkama bi trebao dobiti ovo:
TCCR0A 01000001 <- (COM0A1 = 0; COM0A0 = 1; COM0B0 = 0; COM0B1 = 0; 0; 0; WGM01 = 0; WGM00 = 1
![Wink Wink](https://forum.yu3ma.net/images/smilies/wink.gif)
TCCR0B 00001001 <- (FOC0A = 0; FOC0B = 0; 0; 0; WGM02 = 1; CS02 = 0; CS01 = 0; CS00 = 1
![Wink Wink](https://forum.yu3ma.net/images/smilies/wink.gif)
Na pinu PB2 (OCA0) -> Phase correct PWM (WGM02 = 1; WGM01 = 0; WGM00 = 1
![Wink Wink](https://forum.yu3ma.net/images/smilies/wink.gif)
Molio bih da neko stručniji kaže koju riječ, da li je ovo dobro.
E sad još jedno važno pitanje, koji tajmer bi na Attiny84 utjecao na funkcije delay() i ostale ?