pic kristal frekansı

Başlatan sekoli, 17 Eylül 2008, 12:23:36

sekoli

Selamlar,

2 adet sorum olacak,

1. Pic in içindeki kristalin frekansı (16f628 için sanırım 4 Mhz) ile yazdığımız interrupt fonksiyonunun çağrılma sıklığı arasındaki bağıntı nasıldır? Bu çağrılma sıklığı nasıl ayarlanır?

2. Eğer dışarıdan bir kristal bağlar isem nasıl bir CONFIG yazmam gerekiyor, yada ayrıca ayarlamam gereken şeyler var mı?

Teşekkürler

Klein

İnterrupt'tan kasıt zamanlayıcı kesmesi (timer interrupt) ise ,  dahili osilatör de kullansanız harici osilatör de kullansanız, muhakkak ki frekansla bağlantısı olacaktır. Bu kesmenin sıklığını ,  varsa ön bölücü değerleri , zamanlayıcı değeri ve kristal frekansı belirler.

Erol YILMAZ

Alıntı yapılan: "sekoli"
1. Pic in içindeki kristalin frekansı (16f628 için sanırım 4 Mhz) ile yazdığımız interrupt fonksiyonunun çağrılma sıklığı arasındaki bağıntı nasıldır? Bu çağrılma sıklığı nasıl ayarlanır?

Ilk once zanları ortadan kaldıralım.

Microchip PIC16F628A datasheeti olmadan PIC16F628A ile tasarımlarınız  eksik olur.
Ilk once yapılması gereken Datasheeti açıp okumaya başlamak olacaktır.

Microchip PIC16F628A datasheetinde diyor ki,

Internal and external oscillator options
- Precision Internal 4 MHz oscillator factory
calibrated to ±1%
- Low Power Internal 37 kHz oscillator
- External Oscillator support for crystals and
resonators.

ve
Dual Speed Internal Oscillator:
- Run-time selectable between 4 MHz and
37 kHz


Yani dahili olarak 4 Mhz ve 37 kHz lik osilatör seçeneği varmış.

Interrupt olarak TIMER0 sayıcı kesmesinden bahsettiğinizi varsayarsak, bu sayıcı 8 bittir. 255 e kadar sayar ve 0 a düşer. Bu esnada bir kesme
oluşturur. Yalnız bu sayıcı Clock bilgisini değişik yerlerden alabilir ve Pre - Scale işlemine tabi tutabilir.

Pre - Scale işlemi kısaca gelen sinyalin frekansını bölmektir.
Sinyal Pre - Scale işleminden geçer, ondan sonra Clock sinyali olarak kabul edilir ve Sayıcıyı sürekli arttırır. 255 den 0 a düştüğü anda kesme
isteği oluşturur.

Bu Pre - Scale değeri ayarlanabilir !

ve Sayıcının değerine mudahele edilebilir !


255 den 0 a düşerken kesme
oluşturan bu sayıcıya kesme esnasında mesela 200 değeri atarsak
55 clock sinyali sonra kesme isteği oluşturacaktır. bu atamayı yapmaz isek, 255 clock sonra kesme isteği oluşturacaktır.

• 8-bit timer/counter
• Read/Write capabilities
• 8-bit software programmable prescaler
• Internal or external clock select
• Interrupt on overflow from FFh to
• Edge select for external clock

sekoli

Alıntı yapılan: "Allegro"
Yani dahili olarak 4 Mhz ve 37 kHz lik osilatör seçeneği varmış.

Interrupt olarak TIMER0 sayıcı kesmesinden bahsettiğinizi varsayarsak, bu sayıcı 8 bittir. 255 e kadar sayar ve 0 a düşer. Bu esnada bir kesme
oluşturur. Yalnız bu sayıcı Clock bilgisini değişik yerlerden alabilir ve Pre - Scale işlemine tabi tutabilir.

Pre - Scale işlemi kısaca gelen sinyalin frekansını bölmektir.
Sinyal Pre - Scale işleminden geçer, ondan sonra Clock sinyali olarak kabul edilir ve Sayıcıyı sürekli arttırır. 255 den 0 a düştüğü anda kesme
isteği oluşturur.

Bu Pre - Scale değeri ayarlanabilir !

ve Sayıcının değerine mudahele edilebilir !


255 den 0 a düşerken kesme
oluşturan bu sayıcıya kesme esnasında mesela 200 değeri atarsak
55 clock sinyali sonra kesme isteği oluşturacaktır. bu atamayı yapmaz isek, 255 clock sonra kesme isteği oluşturacaktır.

Verdiğiniz bilgiler için çok teşekkür ederim. Konuyla ilgili bazı şeyleri daha iyi anlamış oldum. Bununla breaber merak ettiğim bir iki hususu daha açıklayabilirseniz çok sevinirim.

1. Şimdi TIMER0 sayacının 255 e kadar sayıp, her 255 oldugundada bir kesme oluşturduğunu anlamış oldum. Peki örneğin bu kesmenin her 1 saniyede tetiklenmesi için nasıl bir hesap yapmalıyım ve sanırım bu hesap sonucunda prescaler değerini ayarlayacağım. Eğer doğru düşünüyorsam HITEC c de bu prescaler in nasıl ayarlandığını anlatabilir misiniz lütfen?

2. Eğer pic'e harici bir kristal bağlarsam, TIMER0 için bu kristali kullanmasını nasıl sağlayacağım.

Yardımlarınız için tekrar teşekkürler,
Saygılarımla