ccs c de pwm sorunu(yardım)

nanit

Üye
Katılım
21 Ocak 2011
Mesajlar
159
Puanları
1
Yaş
33
arkadaşlar evde kendi başıma ccs c ögrenmeye çalışıyorum pwm metodunu uygularken şöyle bir sorunlar karşılaştım
HTML:
#include <16f877A.h>
#use delay(clock=20000000)
#fuses xt,noprotect,nodebug
#use fast_io(c)
void main(void)
{      int16 a=125;
      set_tris_c(0x00);
      setup_timer_2(T2_DIV_BY_4,250,1);
      setup_CCP1(CCP_PWM);
      setup_CCP2(CCP_OFF);
      set_PWM1_duty(0);
    while(1)
         {           
           if (a>=250)
             a=250;
            set_PWM1_duty(a);
            delay_us(10);
         }
         }
şeklinde yapınca çalışmıyor
HTML:
#include <16f877A.h>
#use delay(clock=20000000)
#fuses xt,noprotect,nodebug
#use fast_io(c)
void main(void)
{      int16 a=125;
      set_tris_c(0x00);
      setup_timer_2(T2_DIV_BY_4,250,1);
      setup_CCP1(CCP_PWM);
      setup_CCP2(CCP_OFF);
      set_PWM1_duty(0);
    while(1)
         {           
         if (a>=250)
            a=250;
           setup_timer_2(T2_DIV_BY_4,250,1);
            set_PWM1_duty(a);
           }
         }
şeklinde yazınca çalışıyor aralarındaki fark nedir birdiğeride baktıgım çogu örnekte 1. kod dizilimi gibi birinci koldlamada eksiklik nedir bunları bulamadım arkadaşlar
 
valla bu 2.deki yazım şekli bence yanliş. Sürekli timer setup yazmak , timerin sürekli yeniden başlamasına sebeb olmaz mı? Oluşturdugun PWM nin frekansına bakma şansın olursa baksana istediğin frekansta mı?
 
bence a degerini artırmak istemişsin ama unutmussun. Whilwnin altı bir a++ istiyor gibi. 2.de timeri sürekli yeniden başlattıgın düzgün olmayan bir kare dalga görüyor olabilrisn. Aklıma bşka birşey gelmiyor. Ayrıca 2. foksiyonda gecikme koymamıssın , 2 fonksiyana mslik gecikmeler koyupm aslında PWM olusturup olusturmagını görebilrsin. Mesala 1.snye gecikme yazsan , sonrada oraya bir led bağlasan bak bakalım 1. saniyede bir mi yanıyor , yoksa istedigin frekansta bir pwm çıktıgın led sürekli aktif mi ?
 
bence a degerini artırmak istemişsin ama unutmussun. Whilwnin altı bir a++ istiyor gibi. 2.de timeri sürekli yeniden başlattıgın düzgün olmayan bir kare dalga görüyor olabilrisn. Aklıma bşka birşey gelmiyor. Ayrıca 2. foksiyonda gecikme koymamıssın , 2 fonksiyana mslik gecikmeler koyupm aslında PWM olusturup olusturmagını görebilrsin. Mesala 1.snye gecikme yazsan , sonrada oraya bir led bağlasan bak bakalım 1. saniyede bir mi yanıyor , yoksa istedigin frekansta bir pwm çıktıgın led sürekli aktif mi ?
evet aslında programı ilk yazarken butonlarla artırma yapıcaktım ama sonradan çalışmayınca sildim hangi koddan dolayı hata veriyor diye ama hata o kodların eksik olması degil sorun başka birşey 2. kod dizimi çalışıyor bütün örnek kodlar 1.si gibiyken bende çalışmadı 1.sinde hiç çalışmıyor
 
Son düzenleme:
dogru olan 2. kod çünkü ccs de sonsuz döngünün içinde timerları bir daha set etmek gerekiyor...set etmezsen çalışmaz....
 
dogru olan 2. kod çünkü ccs de sonsuz döngünün içinde timerları bir daha set etmek gerekiyor...set etmezsen çalışmaz....

Böyle bir şeye kesinlikle katılmıyorum. Ben CCS C ile ticari projeler yapan biri olarak yaklaşık 10 tane proje gerçekleştirdim. CCP ile ilgili timer2 frekansını hiçbir zaman ikinci kez ayarlamadım. Kodlarım da her zaman while içinde çalişir , lütfen bilginizi gözden geciriniz...
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst