Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: friedrich - 23 Ocak 2006, 21:09:22

Başlık: 16F877 de iki kanalda aynı anda PWM oluşturmak
Gönderen: friedrich - 23 Ocak 2006, 21:09:22
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.
Başlık: 16F877 de iki kanalda aynı anda PWM oluşturmak
Gönderen: tnen - 23 Ocak 2006, 21:37:28
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
Başlık: 16F877 de iki kanalda aynı anda PWM oluşturmak
Gönderen: friedrich - 25 Ocak 2006, 03:10:43
çok teşekkür ederim, yazdıklarınızı deneyeceğim.
Başlık: 16F877 de iki kanalda aynı anda PWM oluşturmak
Gönderen: friedrich - 27 Ocak 2006, 01:03:22
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.