Kod bu şekilde. frekans 16 kHz'de sabit. duty cycle'ı istediğim gibi değiştirebiliyorum. Sorunum şu frekans devre için yetersiz kalıyor. Frekansı 32kHz yada 64 kHz'e arttırmam gerekiyor. nasıl yapabilirim ?
quote:
//MK
const int pot_pin = A0; const int feedback = A1; int pot = 0; int cikti = 0; int vout = 0; int vpot = 0; int duty = 1; int bosluk = 510; int i=0;
void setup() { cli(); // stop interrupts TCCR1A = 0xF2 ; // phase correct (mode 1010, ICR1 controls period) TCCR1B = 0x01 ; // prescale by 1, change to 0x12 for prescale by 8 TIMSK1 = 0x01 ; // overflow interrupt ICR1 = 500 ; // 31.25us cycle time, 32kHz PWM but 64kHz drive pulses (differential) OCR1A = 125-100 ; // example U drive OCR1B = 125 ; GTCCR = 0x83 ; // clear and halt prescalers TCNT1 = 0xFFFF ; // synchronize counters exactly. GTCCR = 0x00 ; // allow prescalers to fly sei(); // allow interrupts pinMode(pot_pin, INPUT); pinMode(feedback, INPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); Serial.begin(9600);
}
ISR(TIMER1_OVF_vect){
OCR1A=bosluk; //dutyi buradan ayarla OCR1B=511-bosluk; }
void loop(){
oku(); //potansiyometreden istenen gerilim ve cikistan alinan gerilimi okutuyoruz
Sorunum şu frekans devre için yetersiz kalıyor.
Frekansı 32kHz yada 64 kHz'e arttırmam gerekiyor. nasıl yapabilirim ?