Compare ve Capture Modda Yazdıklarım Simule olmuyor

Başlatan ferhatmacin, 07 Şubat 2013, 19:20:52

ferhatmacin

Arkadaşlar merhabalar, pic programlamaya biraz çalışıyordum da kaynak kitabımda yazan şeyi aynen uyguladım.Şöyleki  compare modu kullanarak bir ledi  500 ms  yakıp söndürmeye çalıştım  fakat isis de simule bi türlü olmadı   hiçbişi olmamış gibi davranıyor  pic16f877 .   Cvplarınızı  bekliyorum.
Resim:
Yazdığım Kod:
#include <htc.h>
void main(void) // Ana fonksiyon alanı
{
TRISB=0x00; // PORTB çıkıĢ olarak ayarlanıyor
PORTB=0x00; // PORTB sıfırlanıyor
TMR1CS=0; // Timer1 Harici kaynaktan besleniyor
T1SYNC=0; // Senkronizasyon yok
TMR1ON=1; // Timer1 açılıyor
CCP1M0=1; // CCP1 compare modunda, timer1 resetlenecek
CCP1M1=1;
CCP1M2=0;
CCP1M3=1;
CCPR1H=500/256; // 500'e eĢitlenecek
CCPR1L=500%256;
CCP1IF=0; // CCP1 ve CCP2 kesme bayrakları temizleniyor
CCP1IE=1; // CCP1 ve CCP2 kesme izinleri veriliyor
PEIE=1; // Yardımcı kesme izni veriliyor
GIE=1; // Genel kesme izni veriliyor
for(;;);
}
static void interrupt // Kesme fonksiyonu
isim(void) // Kesme fonksiyon ismi (önemsiz)
{
char i,j; // DeğiĢkenler tanımlanıyor
if(CCP1IF) // CCP1 kesmesi varsa
{
i++; // DeğiĢken bir artırılıyor
if(i==1) // DeğiĢken 1 ise RB0=1 olur
RB0=1;
else if(i==2) // DeğiĢken 2 ise RB0=0 olur
{
RB0=0;
i=0;
}
CCP1IF=0; // Yeni CCP1 kesmesi için bayrak temizleniyor
}

ferhatmacin

Peki, ben de en azından biri anlar diye tahmin etmiştim ama  canınız sağolsun  ;D

ferhatmacin

Aradan baya zaman geçti  yok mu bi babayiğit  elektronikçi  sorunumun  nedenini  söyleyebilecek  ;D

ferhatmacin

Arkadaşlar gerçekten uzun bir müddettir çalışamıyorum  pic'e bu konu yüzünden.  Bu sorunu çözebilmem lazım.Varsa bi babayiğit lütfen bi el  atsın.

Erol YILMAZ


LukeSkywalker

Simülasyonda çalışır compare modu. Capture da çalışır. Compare dediğin şey timerın aldığı değerleri CCP registerlarındaki veri ile karşılaştırmaktan ve buna göre çıkış üretmekten ibaret.

sadogan

#6
Merhaba
Açıklamalarında tmr1 harici clock şecli olduğu belirtmissin.Tmr1 için harci clock bağlanmamış
bu sebeple kesme olusmaz.

for(;;); <--
}
static void interrupt // Kesme fonksiyonu
isim(void) // Kesme fonksiyon ismi (önemsiz)
{

for(;;);  programın burda bekliyor