CCS C İLE 18f452 yi 40 mhz de çalıştırmak

Başlatan povulon, 25 Kasım 2018, 13:11:42

povulon

Merhaba

18f452 işlemciyi 10 mhz kristal ile pll kullanarak 40 mhz çıkartarak işlem yapmak istiyorum

Bunu denemek  için aşağıdaki basit kodu kullandım




#include <18F452.h>
#fuses H4, NOLVP, NOWDT, NOPROTECT
//Add other fuses you need
#USE DELAY (CLOCK=40MHz)

void main(void)
{
    //with a suitable 10MHz crystal, chip is now running 40Mhz

    while (TRUE)
    {
         output_toggle(PIN_B0); //test by toggling pin 1/second
         delay_ms(1000);
    }
}

Ccs c 5.042 versiyon program kullanıyorum
Hex kodunu yüklemek için delab pic kit 2 programcıyı kullanıyorum

Programı yükledikten sonra. Led yanma süresi 4 sn  ve sönme süreside 4 sn oluyor çok yavaş. Anlayamadım

Proteusta denedim led yanma süresi 1 sn sönme süresi 1 sn normal çalışıyor

Lütfen yardımlarınızı rica ediyorum

volsrht

bende bu soruyla alakalı bir soru sorma istiyorum . İşmecinin pll ile 40 mhz de çalıştığını nasıl anlarız.

pic18f452 20 mhz de osc ilede 1sn gecikme yapsak gecikme süresi 1 sn

40 mhzde de yapsak delay_ms(1000) yine 1 sn olacak

nasıl ayırt edeceğiz

ziyaretci

Fuses ayarlarınızı aşağıdaki ayarlar ile kontrol edin.

https://www.picproje.org/index.php/topic,69817.msg535933.html#msg535933

@omereliusuk tarafından verilen cevap:

#include <18F452.h>
#device ADC=10

#FUSES OSCSEN                  //Oscillator switching is enabled
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOBROWNOUT              //No brownout reset
#FUSES BORV20                  //Brownout reset at 2.0V
#FUSES STVREN                  //Stack full/underflow will cause reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOCPB                    //No Boot Block code protection
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTC                  //Configuration registers not write protected
#FUSES NOWRTB                  //Boot block not write protected
#FUSES NOWRTD                  //Data EEPROM not write protected
#FUSES NOEBTR                  //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads

#use delay(clock=40MHz,crystal=10MHz)

RaMu

Kodu oluştururken File menüsünden Project Wizard kısmını kullanın,
ayarlarda Clock ve Crystal seçeneklerini doğru girin yeterli.
Yukarıdaki mesajdada bahsedildiği gibi aslında sadece usedelay içinde bu iş hallediliyor,
use delay dan önce fuses kısmında Pll ile ilgili ne yazdığınızın bir önemi kalmaz,
CcsC usedelay da ne görürse o noktadan itibaren usedelay da yazan geçerli olur.
Usedelay a yazacaklarınızın kısaca anlamı:
https://www.picproje.org/index.php/topic,59489.msg460551.html#msg460551

Ayrıca datasheet te hangi kristal ve clock değerlerini seçebileceğiniz yazar.

CcsC olamayacak bir crystal clock değeri girdiğinizde
derlemeden sonra size derleme sonucu alt pencerede warning ile uyarı verir.


Sizin programda derleyiciye ben 40MHz kristal kullanıyorum deyip kod ürettirip,
devreyede yanlışlıkla 10MHz kristal takmış gibi devre çalışıyor
dolayısıyla delay kısımları 4te1 hızda çalışmış oluyor.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Bahadır AYDINOĞLU

40 MHz'de çalışıp-çalışmadığını anlamak için timer kurup osiloskopta bakabilirsiniz.