Şimdi Ara

CCS Kodundaki Eksiği Çözemedim

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir (1 Mobil) - 2 Masaüstü1 Mobil
5 sn
27
Cevap
0
Favori
1.254
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Sorun çözülmüştür.
    Sorun osilatörün kondansatöründen kaynaklanıyormuş. Değiştirince düzeldi. Teşekkürler herkese.



    Arkadaşlar aşağıdaki kod uygulamada nedense çalışmıyor. Çalışmayan kısmın delay kodundan kaynaklandığını düşünüyorum. Sizce neden çalışmıyor ?

     
    #include "C:\Users\EmteR\Documents\CCS C WORKSPACE\PWM Generator 16f877\main.h"
    #use delay(clock=20000000)

    void main()
    {
    double yak=50000;
    double sondur=50000;
    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);

    while(1)
    {
    output_high(pin_d0);
    delay_ms(yak);
    output_low(pin_d0);
    delay_ms(sondur);
    }
    }


    Devre Şeması;
     CCS Kodundaki Eksiği Çözemedim



    < Bu mesaj bu kişi tarafından değiştirildi emter -- 17 Mart 2013; 2:44:20 >







  • hocam bilmiyorsam bağışla ama dauble yak=50000; ne oluyo?
  • quote:

    Orijinalden alıntı: secollah

    hocam bilmiyorsam bağışla ama dauble yak=50000; ne oluyo?
    double türünde yak adında bir değer oluşturdum. O değer kadar geciktirme yapmaya çalıştım. Yanlış mı oldu ki ?
  • quote:

    Orijinalden alıntı: emter

    double türünde yak adında bir değer oluşturdum. O değer kadar geciktirme yapmaya çalıştım. Yanlış mı oldu ki ?

    Alıntıları Göster
    bende işi pek bilmiyorum ama yanlış olmuş delay_ms(msdegeri); seklinde gecikme olustur.hemde o değerler hiçbir ise yaramıyor galiba
  • quote:

    Orijinalden alıntı: secollah

    bende işi pek bilmiyorum ama yanlış olmuş delay_ms(msdegeri); seklinde gecikme olustur.hemde o değerler hiçbir ise yaramıyor galiba

    Alıntıları Göster
    #include "C:\Users\EmteR\Documents\CCS C WORKSPACE\PWM Generator 16f877\main.h" 
    #use delay(clock=20000000)

    void main()
    {
    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);

    while(1)
    {
    output_high(pin_d0);
    delay_ms(50000);
    output_low(pin_d0);
    delay_ms(50000);
    }
    }

    50 sn aralıkla yanıp sönerler




  • quote:

    Orijinalden alıntı: secollah

    bende işi pek bilmiyorum ama yanlış olmuş delay_ms(msdegeri); seklinde gecikme olustur.hemde o değerler hiçbir ise yaramıyor galiba

    Alıntıları Göster
    Watchdog kapalı mı default olarak?
  • quote:

    Orijinalden alıntı: Uykusuz.

    Watchdog kapalı mı default olarak?

    Alıntıları Göster
    uykusuz hocam benim yazdıklarım doğru mu? bende bilgi alıyım
  • quote:

    Orijinalden alıntı: Uykusuz.

    Watchdog kapalı mı default olarak?

    Alıntıları Göster
    Hiç bir fikrim yok desem :) Nasıl ayarlıyoruz onu ?
  • quote:

    Orijinalden alıntı: emter

    Hiç bir fikrim yok desem :) Nasıl ayarlıyoruz onu ?

    Alıntıları Göster
    neyi nasıl ayarlıyoruz zamanı ise 1 sn=1000ms
  • quote:

    Orijinalden alıntı: secollah

    neyi nasıl ayarlıyoruz zamanı ise 1 sn=1000ms

    Alıntıları Göster
    Uykusuz'un sorduğu Watchdog ayarını nasıl yapıyoruz yada kontrol ediyoruz.
    Malesef led yanıp sönmuyor. Gecıkmesız dırek cıkıs verdıgımde led yanıyor ama delay ıle yak sondur yapmaya calsıtıgımda hıcbırsey olmuyor.



    < Bu mesaj bu kişi tarafından değiştirildi emter -- 15 Mart 2013; 20:54:25 >
  • quote:

    Orijinalden alıntı: emter

    Uykusuz'un sorduğu Watchdog ayarını nasıl yapıyoruz yada kontrol ediyoruz.
    Malesef led yanıp sönmuyor. Gecıkmesız dırek cıkıs verdıgımde led yanıyor ama delay ıle yak sondur yapmaya calsıtıgımda hıcbırsey olmuyor.

    Alıntıları Göster
    C:\Users\EmteR\Documents\CCS C WORKSPACE\PWM Generator 16f877\main.h bu dosyaya giriyorsun orada wdt yazar açılımı watchdogtimer dır.nowdt ise kapalı konumdadır.
  • quote:

    Orijinalden alıntı: secollah

    C:\Users\EmteR\Documents\CCS C WORKSPACE\PWM Generator 16f877\main.h bu dosyaya giriyorsun orada wdt yazar açılımı watchdogtimer dır.nowdt ise kapalı konumdadır.

    Alıntıları Göster
    Aşağıdaki şekilde görünüyor dosya
     
    #include <16F877.h>
    #device adc=8

    #FUSES NOWDT //No Watch Dog Timer
    #FUSES LP //Low power osc < 200 khz
    #FUSES NOPUT //No Power Up Timer
    #FUSES NOPROTECT //Code not protected from reading
    #FUSES NOBROWNOUT //No brownout reset
    #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES NOCPD //No EE protection
    #FUSES NOWRT //Program memory not write protected
    #FUSES NODEBUG //No Debug mode for ICD

    #use delay(clock=20000000)
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)




  • quote:

    Orijinalden alıntı: emter

    Aşağıdaki şekilde görünüyor dosya
     
    #include <16F877.h>
    #device adc=8

    #FUSES NOWDT //No Watch Dog Timer
    #FUSES LP //Low power osc < 200 khz
    #FUSES NOPUT //No Power Up Timer
    #FUSES NOPROTECT //Code not protected from reading
    #FUSES NOBROWNOUT //No brownout reset
    #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES NOCPD //No EE protection
    #FUSES NOWRT //Program memory not write protected
    #FUSES NODEBUG //No Debug mode for ICD

    #use delay(clock=20000000)
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)


    Alıntıları Göster
    1. olarak wdt sigortan kapalı yani bir kitlenme olursa yazılımda otomatik resetlemeyecek
    2.olarak osilatörün 4MHzdir büyük ihtimal delay(clock=20000000)kısmını delay(clock=4000000) ile değiştir
    3.olarak #FUSES LP kısmını #FUSES XT olarak değiştir
    4.olarak set_tris_d(0x00); komutunu while(1) komutunun üstüne ekleyerek dene




  • quote:

    Orijinalden alıntı: secollah

    1. olarak wdt sigortan kapalı yani bir kitlenme olursa yazılımda otomatik resetlemeyecek
    2.olarak osilatörün 4MHzdir büyük ihtimal delay(clock=20000000)kısmını delay(clock=4000000) ile değiştir
    3.olarak #FUSES LP kısmını #FUSES XT olarak değiştir
    4.olarak set_tris_d(0x00); komutunu while(1) komutunun üstüne ekleyerek dene


    1. NOWDT yazan kısmı WDT olarak değiştirdim.
    2. Osilatörüm 20Mhzlik.
    3. Bu kısmıda düzelttim.
    4. Ekledim.

    Sonuç: Yine tık yok :)
  • quote:

    Orijinalden alıntı: emter

    quote:

    Orijinalden alıntı: secollah

    1. olarak wdt sigortan kapalı yani bir kitlenme olursa yazılımda otomatik resetlemeyecek
    2.olarak osilatörün 4MHzdir büyük ihtimal delay(clock=20000000)kısmını delay(clock=4000000) ile değiştir
    3.olarak #FUSES LP kısmını #FUSES XT olarak değiştir
    4.olarak set_tris_d(0x00); komutunu while(1) komutunun üstüne ekleyerek dene


    1. NOWDT yazan kısmı WDT olarak değiştirdim.
    2. Osilatörüm 20Mhzlik.
    3. Bu kısmıda düzelttim.
    4. Ekledim.

    Sonuç: Yine tık yok :)

    Alıntıları Göster
    sen d0 portunu kullanarak led yakıp söndürmek istiyorsun galiba osilatörün 20MHz lik eğer böyle istiyorsan basit program yazabilirim.




  • quote:

    Orijinalden alıntı: secollah

    sen d0 portunu kullanarak led yakıp söndürmek istiyorsun galiba osilatörün 20MHz lik eğer böyle istiyorsan basit program yazabilirim.

    Alıntıları Göster
    sen bu devreyi gerçektemi uyguluyorsun yoksa simülasyonda mı?
  • quote:

    Orijinalden alıntı: secollah

    sen d0 portunu kullanarak led yakıp söndürmek istiyorsun galiba osilatörün 20MHz lik eğer böyle istiyorsan basit program yazabilirim.

    Alıntıları Göster
    Aslında istediğim şey d0 portundan pwm sinyali üretmek.
    Ama sinyal üretip üretmedıgımı led baglayarak denemek ıstıyorum ılk olarak.
    ZAhmet olmazsa yazmanı beklıyorum. Denerim bende.
    Gerçekte uyguluyorum.



    < Bu mesaj bu kişi tarafından değiştirildi emter -- 15 Mart 2013; 21:16:33 >
  • quote:

    Orijinalden alıntı: emter

    Aslında istediğim şey d0 portundan pwm sinyali üretmek.
    Ama sinyal üretip üretmedıgımı led baglayarak denemek ıstıyorum ılk olarak.
    ZAhmet olmazsa yazmanı beklıyorum. Denerim bende.
    Gerçekte uyguluyorum.

    Alıntıları Göster
    yazarım ama kullandığın pic 20mhzlik mi öle birseyler okumustum bir ara 16f877 le 4 mhz ve 20 mhz olabiliyormuş daha önce 20mhz ile çalıştı mı?
  • quote:

    Orijinalden alıntı: secollah

    yazarım ama kullandığın pic 20mhzlik mi öle birseyler okumustum bir ara 16f877 le 4 mhz ve 20 mhz olabiliyormuş daha önce 20mhz ile çalıştı mı?

    Evet kullandığım pic 20mhz lik. Daha önce zamanlı hiç bir uygulama çalıştırmadım açıkcası. Ama direk çıkış vererek led yaktım. rs232 ile pcden veri gönderdim.
  • quote:

    Orijinalden alıntı: secollah

    yazarım ama kullandığın pic 20mhzlik mi öle birseyler okumustum bir ara 16f877 le 4 mhz ve 20 mhz olabiliyormuş daha önce 20mhz ile çalıştı mı?

    Alıntıları Göster
    eğer daha önce o osilatör ile çalışıyor ise main.h dosyasındaki ayarları ilk olarak xt yerine hs yap

    sonra main.c dosyasını tamamen bununla değiştir.
     
    C:\Users\EmteR\Documents\CCS C WORKSPACE\PWM Generator 16f877\main.h

    void main()
    {

    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);
    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);

    set_tris_d(0x00);

    while(1)
    {

    output_high(pin_d0);
    delay_ms(750);
    output_low(pin_d0);
    delay_ms(750);
    }

    }
    ben olayı tam olarak anlamadım pwm yapmak istiyorsun ama galiba pek fazla bilgin yok istersen recep çelikkayanın derslerini izleyebilirsin onda vardı pwm dersi




  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.