16F877 de iki kanalda aynı anda PWM oluşturmak

Başlatan friedrich, 23 Ocak 2006, 21:09:22

friedrich

Selam, klavyeden girilen tuş değerlerine göre farklı duty lere sahip PWM elde etmek istiyorum(RS232 yi kullanarak). Petek rumuzlu arkadaş sayesine seri haberleşmeyi hallettik ama 16F877 nin iki pwm kanalı aynı anda sürekli olarak değişen ve farklı duty lere sahip pwm ler üretemiyor. ya da bazen bir kanal  çalışırken diğeri çalışamıyor. Donamın olarak PIC böyle birşeye müsade etmiyor mu diye düşünüyorum. Bu konuda bilgisi olan arkadaşlar yardımcı olursanız sevinirim, şimdiden teşekkür ederim.

tnen

16f877 de 2 kanal PWM var bunları ilk basta ayarlarsan olur.


include "modedefs.bas"

DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bit
duty1   var byte
duty2   var byte
frekans1    var word
frekans2    var word
duty1 = 100
duty2 = 150
frekans1 = 1000
frekans2 = 2000
main:
'istenirse burada frekanslar ve duty
'degerleri bir degişkene bağlı olarak değiştirile bilir.
HPWM 1,duty1,frekans1  
HPWM 2,duty2,frekans2
goto main
end

friedrich

çok teşekkür ederim, yazdıklarınızı deneyeceğim.

friedrich

setup_timer_2(T2_DIV_BY_4, 100, 0);
set_pwm1_duty(50);
set_pwm2_duty(70);
son  iki komutu ardarda kullanmamıyoruz anladığım kadarıyla, aralarında gecikme olunca çalışabiliyorlar.

set_pwm1_duty(50);
delay_ms(10);
set_pwm2_duty(70);

bunun sebebi nedir bilmiyorum, ilginize teşekkür ederim.