Şimdi Ara

CCS Kodundaki Eksiği Çözemedim

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
27
Cevap
0
Favori
1.267
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?
  • 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 ?
  • bende işi pek bilmiyorum ama yanlış olmuş delay_ms(msdegeri); seklinde gecikme olustur.hemde o değerler hiçbir ise yaramıyor galiba
  • #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
  • Watchdog kapalı mı default olarak?
  • uykusuz hocam benim yazdıklarım doğru mu? bende bilgi alıyım
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • Hiç bir fikrim yok desem :) Nasıl ayarlıyoruz onu ?
  • neyi nasıl ayarlıyoruz zamanı ise 1 sn=1000ms
  • 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 >
  • 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.
  • 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)
  • 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 :)
  • 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.
  • sen bu devreyi gerçektemi uyguluyorsun yoksa simülasyonda mı?
  • 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 >
  • 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.
  • 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.