16f1827 harici kristal kullanma

Başlatan blueboard, 08 Eylül 2017, 23:56:44

blueboard

Ete Hocam, 16f1827'de dahili kristali kullanırken _FOSC_INTOSC yazıyorduk. Dahili kristali değil de harici kristal kullanmak istersek nasıl yazmamız gerekir? Datasheet'ine baktım ama bir şey bulamadım.Teşekkür ederim.

Dahili kristale göre şunlar yazılı:
ASM
  __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_ON & _CPD_ON & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
  __config _CONFIG2, _WRT_ALL & _PLLEN_ON & _STVREN_ON & _LVP_OFF & _BORV_19 & _LVP_OFF
ENDASM

'DEFINE OSC 4
'OSCCON = %01101000          '4 mhz dahili osilatör, PLL off

DEFINE OSC 32
OSCCON= %11110000   'PLL enabled, Internal RC-8MHz

ete

#1
Cevap her zamanki gibi MPASM klasörü içinde yer alan P16F1827.INC dosyası içinde saklı. Bak ne diyor dosyadaki bilgiler;
;----- CONFIG1 Options --------------------------------------------------
_FOSC_LP         EQU  H'FFF8'    ; LP Oscillator, Low-power crystal connected between OSC1 and OSC2 pins
_FOSC_XT         EQU  H'FFF9'    ; XT Oscillator, Crystal/resonator connected between OSC1 and OSC2 pins
_FOSC_HS         EQU  H'FFFA'    ; HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins
_FOSC_EXTRC      EQU  H'FFFB'    ; EXTRC oscillator: External RC circuit connected to CLKIN pin
_FOSC_INTOSC     EQU  H'FFFC'    ; INTOSC oscillator: I/O function on CLKIN pin
_FOSC_ECL        EQU  H'FFFD'    ; ECL, External Clock, Low Power Mode (0-0.5 MHz): device clock supplied to CLKIN pin
_FOSC_ECM        EQU  H'FFFE'    ; ECM, External Clock, Medium Power Mode (0.5-4 MHz): device clock supplied to CLKIN pin
_FOSC_ECH        EQU  H'FFFF'    ; ECH, External Clock, High Power Mode (4-32 MHz): device clock supplied to CLKIN pin

Hemen anlaşılacağı üzere üstlerde yer alan LP,XT,ve HS seçenekleri senin aradığın seçenek oluyor. Farkları kenarındaki açıklamalarda mevcut seç birisini kullan.
Ete

blueboard


blueboard

#3
Ete Hocam, ilk satırda şu değişikliği yaptım.
ASM
  __config _CONFIG1, _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_ON & _CPD_ON & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
  __config _CONFIG2, _WRT_ALL & _PLLEN_ON & _STVREN_ON & _LVP_OFF & _BORV_19 & _LVP_OFF
ENDASM

Sanırım burada hata yok.Ama __config _CONFIG2, _WRT_ALL & _PLLEN_ON   kısmında PLLEN_OFF mu olmalıdır?

Kullanacağım kristal 4 MHz . Ayrıca alttaki satırdaki

'DEFINE OSC 4
'OSCCON = %01101000          '4 mhz dahili osilatör, PLL off

DEFINE OSC 32
OSCCON= %11110000   'PLL enabled, Internal RC-8MHz     ifadesinde
DEFINE OSC 32
OSCCON= %11110000 kısmını silip

DEFINE OSC 4
OSCCON = %01101000 mi yazmalıyım?

ete

PLL frekans katlaması için kullanılıyor ve maksimum 48 Mhz lik çalışma frekansına (bazı pic lerde 96 Mhz) kadar osilatör frekansı elde etmeni sağlıyor. Sen XT şeklinde sigorta ayarı verirsen ve 4mhz de çalışmak istiyor isen PLLEN_OFF olmalı.
DEFINE OSC 4 komut satırı programda kullanılan zamana bağlı komutların doğru çalışması için gerekli olan bir tanımlamadır.
Program XT sigorta ayarı ile 4Mhz kristal ile tam tamına 4 Mhz de çalışacak ise OSC 4 tanımlaması doğru oluyor.
Ama PLL yi enable edersen sistem 4x4=16 Mhz de çalışır ve o zaman Define OSC 16 yazman gerekir.
OSCCON registeri genelde dahili OSC kullandığın zaman dikkat etmrn ve ayarlama yapman gereken bir register. XT kullanınca OSCCON için kafa yorman gerekmiyor. Yalnız bu registerin 7 nolu biti PLL yi aktif hale getirebilir. Sigorta ayarlarından PLLEN_OFF vermiş isen ve OSCCON.7=1 verirsen bu PLL yeniden enable hale gelir otomatikman.
Sonuç olarak yalnızca Define OSC 4 yazman yeterli olacaktır.

Bu bilgilerin tamamı Data sheet den alınmıştır.

Ete


Powered by EzPortal