PIC'in farklı periyottaki pılse'ları alamaması

Başlatan fatihvelid, 31 Mayıs 2007, 20:15:33

fatihvelid

Merhaba Arkadaşlar, 18F8722 kullanarak INT0'dan gelen pulsları almaya çalışıyorum. Pulse geldiği halde, pulse'nin periyodunu değiştirdiğimde pulseları görmüyor. Interrupt geldiğinde INT0IF'yi 0'a çekiyorum.

Nedendir? Bir öneriniz var mı ?
Kainatta her canlı "DNA" diliyle yazılmış bir programdır...

bigbey

1. int. geldikten sonra tekrar interrupt bekler duruma gelme süren pulse süresinden uzun olabilir. o nedenle peryod değişince (frekans yükselince) gelen interrup'u değerlendirmede harcadığın süre, iki pulse arasındaki süreden daha uzun olabilir.
TA6R

fatihvelid

LATB.F0'ı 1 yaptıktan sonra daha iyi olmaya başladı ama bazı darbeleri kaçırıyor.  Ayrıca PIC 40 Mhz'de çalışıyor.
0-1-0 geçişinin çok kısa zamanda gerçekleşmesinden kaynaklanıyor olabilir mi ?
RB0'a Pull-down direnci bağlı.

Deneme amaçlı bir kod yazdım.Ve denedim. Sorun aynı.Kod aşağıda.


Alıntı Yap
void interrupt()
{
PORTB = 0;
if(INTCON.INT0IF)
{
PORTB.F2 = 1;
Delay_ms(10);
PORTB.F2 = 0;
INTCON.INT0IF = 0;
}
}

void main() {
TRISB = 1;
LATB.F0 =1;
PORTB = 0;
INTCON.INT0IE = 1;
INTCON.F7 = 1;
INTCON.F6 = 1;
while(1);
}


Kainatta her canlı "DNA" diliyle yazılmış bir programdır...

fatihvelid

Çözdüm. Yazılımda sorun yokmuş. Gelen darbenin seviyesi bazen 1'i bulmuyormuş. İlginiz için teşekkürler.
Kainatta her canlı "DNA" diliyle yazılmış bir programdır...