PIC18F2550 CAPTURE MODÜLÜ

Başlatan NicolaTesla, 30 Eylül 2018, 22:09:35

NicolaTesla

Herkese iyi akşamlar. xc8 ile frekans ölçümü için yazdığım program aslında çalışıyor fakat kafama takılan bir soru var.

#pragma config PLLDIV = 5      // PLL Prescaler Selection bits (Divide by 5 (20 MHz oscillator input))
#pragma config CPUDIV = OSC1_PLL2// System Clock Postscaler Selection bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
#pragma config USBDIV = 2      // USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN = 1) (USB clock source comes from the 96 MHz PLL divided by 2)

// CONFIG1H
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator (HS))


Config ayarlamalarının bir kısmı bu şekilde. Aslında kafamda soru işareti oluşturan kısım.

freq = (20000000.00) / (4.00 * 8.00 * ((double)t2 - (double)t1) / 16.00);

Programda hesabı yapan kodlardan bir alıntı yukarıdaki gibi.

Kafama takılan soru şu. Şimdi PIC'e bağladığım kristal 20MHz, config ayarlarında görüldüğü üzere bu frekansı HS modunda yani PLL'ye gerek duymadan kullanmaktayım.

#pragma config CPUDIV = OSC1_PLL2 burada giriş frekansını direkt olarak kullanabilmemiz gerekirken, yukarıdaki freq değişkeninde yer alan, 4'ü oraya eklemezsem yani PIC16 serisindeki gibi komut işlem hızını 4'e bölmezsem, ölçtüğüm frekans normalin tam 4 katı çıkıyor. Simulasyonu da proteus'ta değil kurduğum devrede yapıyorum. Kullandığım PIC'in veri sayfasına baktığımda da bu frekansın 4'e bölünmemesi gerekiyor. Bu konuda fikirlerinizi veya bilgilerinizi almak isterim.

NicolaTesla

Konu hakkında fikir yürütebilecek kimse yok mu gerçekten?

ertan

Merhaba;
 Bana kalırsa bu tarz durumlarda bu yöntemi yapman sağlıklı değil. PLL özelliğini kullanırsam işlemci kendi içinde bu olayı hallediyor. Veri sayfasında hangi alanda 4'e bölünmemesi gerektiği yeri bana yazar mısın?.