pic'i xtal'siz çalıştırmak?

Başlatan mustafa_cmbz, 08 Nisan 2008, 21:25:22

mustafa_cmbz

arkadaşlar daha önce üzerinde deneme yaptığım ve saglamlığından emin olduğum 1 adet rf alıcı verici modül ile bildiğimiz tv kumandalarını kaybolduğunda yerini tespit etmek için bir devre tasarladım (kardeşimin teknoloji tasarım ödevi) 9v ile çalışan plastik kutusu biraz kaba bir kumanda edindikten sonra devreyi de tasarladım fakat pcb ufak olsun diye smd 16f628 kullandım (12f675 kullanacaktım ama buralarda yok vaktimde kısıtlıydı oyuzden)  yerden tasarruf etmek için pic'in 15. ve 16. ayaklarına crystal bağlamadım vericide 4mhz'lik bir krıstal var ama alıcıda krıstal yok devreyi bu şekilde çalıştırdığımda alıcıdaki buzzer'i öttüremiyorum acaba bu sorun alıcıda krıstal kullanamamamdanmı yoksa ben pic'in içindeki osc'i aktif edemedim mi?

acaba 16f628'in içindeki osc aktif etmek için programın başına ne yazmalıyım? ben programlayıcıdan denedim ama yapamadım yardımcı olurmusunuz?...kolay gelsin..

Maxim

hangi derleyiciyi kullanıyorsunuz ?

Andromeda

programlama esnasında osilatör seçeneklerinde INT RC seçeneği seçilecek
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

mustafa_cmbz

basic kullanıyorum hocam ...

bir sorun daha olacak. aşağıdaki resimde benim pic'i programlama için kullandığım d149 programlama kartının programında pic config. kısmına ait resimi var.oradan osc  kutucuğunu tıkladığımda aşağıya doğru 3-4 tane özellik çıkıyor acaba bunların ne anlama geldiklerini açıklayabilirmiyiz?


POWER

@mustafa_cmbz
prağramın başına,
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak.
satırını ilave edersen dahili osc yi aktif etmiş olursun.Bu satırda hangi osc yi seçersen,pice proğramı yüklemek için kullandığın proğram o osc yi seçer.istersen proğramı pice göndermeden o seçenekten istediğin osilatör tipini seçebilirsin.
TB6BKG

iyonosfer

ERCLK : external RC osilatör (dışarıdan kapasiteve direnc kullanılarak yapılan osilatö) ve osc pinlerinden diğeride CLOCK out oluyor
ERIO: yukarıdakiyle aynı, ama diğer osc pini normal giriş çıkış portu olarak kullanılıyor
IRRCCLK: internal osilatör, clock out var
IRRCIO: internel osilatör clock out yok (senin kullanacağın bu)
LP: low power osilatör < 200 khz
XT: kristal osilatör ~4mhz
HS: High speed (yüksek hızlı ) kristal >4mhz

senin irrcio secmen gerekiyor
Blog Sayfam: www.teknobakis.com

Ankaralı

Peki dahili osilatörü kullandık . Bu osilatör pinlerini nasıl I/O olarak kullanıcaz? Teşekkürler...
@ NEXYS2

Maxim

Alıntı yapılan: "QarizmaCocuq"Peki dahili osilatörü kullandık . Bu osilatör pinlerini nasıl I/O olarak kullanıcaz? Teşekkürler...

dahili osc yi seçtiğiniz zaman osc pinleri otomatik olarak I/O oluyor

mustafa_cmbz

arkadaşlar konjuyu yalış başlık altında mı tartışıyoruz bilmiyorum ama benim kurduğum alıcı devresinde smd 16f628 var vericide de normal 16f628 var acaba benım unuttuğum bişeymi var bu picler ile ilgili... alıcıyı krıstalsiz çalıştırıyorum programdan led'i tuşları tararken yanıp sönsün diyorum led açılışta yanıyor bir daha da sönmüyor...gelen data'yıda algılamıyor...2 pic'i de kristalsiz çalıştırdım olmadı...sizce sorun nerede..kodları öğlen eve gittiğimde yayınlıyacağım enbuyuk korkum kodlar...kolay gelsin..

Lütfi AYYILDIZ

Muhtemelen seri iletişim komutlarını kullanıyorsunuzdur. Bu gibi işlemlerde zaman çok önemlidir.Dahili osilatör kullandığınız zaman picin datasheetinde de belirtilmiştir 4 Mhz in toleranslı olduğu. Pic bu osilatörün toleransını da kullanır. Normalde pause 1000 dersiniz ama pic tam olarak 1000  ms değilde yaklaşık(fazla veya eksik) olarak 1000 ms bekler. Bu normalde pekde önemli değildir ama seri uygulamalarda zamana dayalı olduğu için önem arz etmektedir.Bu sebeple XT kristal kullanmalısınız. Manchaster kodlama sistemini kullanırsanır modülünüzde buna uyumluysa sanırım probleminiz ortadan kalkar ama bu programda biraz zorlayabilir sizi.Kolay gelsin...

mustafa_cmbz

verici:

CMCON=7  
 

SYMBOL CIKIS=PORTB.5 
SYMBOL LED=PORTA.1 
SYMBOL BUTON1=PORTB.0
SYMBOL BUTON2=PORTB.1

 VERICI VAR BYTE
 VERICI=0
 PAUSE 50
 LOW CIKIS
 CLEAR
BASLA:

	IF PORTB.0=1 THEN
	VERICI=50
    HIGH  LED
	PAUSE 50
	LOW  LED
	GOSUB GONDER
     ENDIF
       PAUSE 150
       
 IF PORTB.1=1 THEN
	VERICI=60
    HIGH  LED
	PAUSE 100
	LOW  LED
	GOSUB GONDER
     ENDIF
  
  PAUSE 200
    GOTO BASLA
   
    
 
 


GONDER:
SEROUT2 CIKIS,396,["M","U","S","T","I",VERICI]
SEROUT2 CIKIS,396,["M","U","S","T","I",VERICI]
SEROUT2 CIKIS,396,["M","U","S","T","I",VERICI]
SEROUT2 CIKIS,396,["M","U","S","T","I",VERICI]
VERICI=0
PAUSE 200

LOW CIKIS
RETURN
[/color]



alıcı:

     
CMCON=7     'COMPARATÖR OFF
SYMBOL LED=PORTA.3
SYMBOL BUZER=PORTB.6 
SYMBOL GIRIS=PORTA.1

 ALICI VAR BYTE
 ALICI=0
  HIGH LED
  LOW GIRIS
  CLEAR
  
 BASLA:
SERIN2 GIRIS,396,[WAIT("MUSTI"),ALICI]
IF ALICI=50 THEN  ANA
LOW LED
PAUSE 100
HIGH LED
PAUSE 100
 
IF ALICI=60 THEN ANA2
PAUSE 200

GOTO BASLA



ANA:
HIGH BUZER
HIGH   LED
PAUSE 200
LOW BUZER
LOW LED
PAUSE 200
GOTO BASLA

ANA2:
HIGH BUZER
HIGH   LED
PAUSE 500
LOW BUZER
LOW LED
PAUSE 500
GOTO BASLA
[/color]


arkadaşlar program budur acaba neden böyle bişey yaptı daha önce denedim 4 röle ile kontrol devresi yapmıştım çalışmıştı...kodda bir yanlışlık varmı?

karbal656

Eğer tüm program yukardaki gibi ise.   :)
Burada gördüğüm kadarıyla TRIS tanımlamaları yok.pinlerin girişmi çıkış mı olduğunu belirtmemişsin.