Merhabalar,bu pic ile ilgili standart config ayarları elinde olan varsa payalaşailirse eğer çok sevinirim.Protonda bu ayarların nereden yapılacağını biliyorum fakatseçenkelerin anlamlarını bilmediğim doğru bir config kuramıyorum,iyi çalışmalar herkese.
18F452'nin config ayarları pek karışık sayılmaz. Datasheet'inin "Special Features of the CPU" bölümünde config bitlerinin görevleri açıklanmış. Eğer özellikle anlamadıkların varsa burada isimlerini ver, bildiğim kadarıyla yardımcı olmaya çalışayım.
Ekleme: Aslında ayarların bir çoğuna dokunmana gerek de olmayabilir. Mesela ben assembly'de bu ayarları kullanıyorum:
CONFIG OSC = HS, OSCS = OFF, PWRT = ON, BOR = OFF, WDT = OFF, STVR = OFF, LVP = OFF
En basitinden bütün config ayarları;
Device=18F4550
XTAL=48
@CONFIG_REQ
@__config config1l, PLLDIV_1_1 & CPUDIV_1_1
@__CONFIG config1h, FOSC_XTPLL_XT_1 & FCMEM_OFF_1 & IESO_OFF_1
@__CONFIG config2l, PWRT_ON_2 & BOR_OFF_2 & VREGEN_OFF_2
@__CONFIG config2h, WDT_OFF_2
@__CONFIG config3h, MCLRE_OFF_3 & LPT1OSC_OFF_3 & PBADEN_OFF_3 & CCP2MX_OFF_3
@__CONFIG config4l, STVREN_OFF_4 & LVP_OFF_4 & ICPRT_OFF_4 & XINST_OFF_4 & DEBUG_OFF_4
@__CONFIG config5l, CP0_OFF_5 & CP1_OFF_5 & CP2_OFF_5 & CP3_OFF_5
@__CONFIG config5h, CPB_OFF_5 & CPD_OFF_5
@__CONFIG config6l, WRT0_OFF_6 & WRT1_OFF_6 & WRT2_OFF_6 & WRT3_OFF_6
@__CONFIG config6h, WRTB_OFF_6 & WRTC_OFF_6 & WRTD_OFF_6
@__CONFIG config7l, EBTR0_OFF_7 & EBTR1_OFF_7 & EBTR2_OFF_7 & EBTR3_OFF_7
@__CONFIG config7h, EBTRB_OFF_7 & _DEVID1 & _DEVID2 & _IDLOC0
İlginiz için teşekkür ederim,iki mesajdan eidndiğim bilgilere dayanarak aşağıdaki ayarları yaptım.
Şu an müdahale etmediğim seçenekler;
BORV,WDTPS,CCP2MUX,DEBUG
BU seçenkleri nasıl ayarlayacağıma dairde bir fikriniz varsa paylaşırsanız sevinirim.Şu anki ayarları aşağıda bulabilirsiniz.
Config_Start
OSC = HS ; HS
OSCS = OFF ; Disabled
PWRT = On ; Enabled
BOR = OFF ; Disabled
WDT = OFF ; Disabled
STVR = OFF ; Disabled
LVP = OFF ; Disabled
CP0 = OFF ; Disabled
CP1 = OFF ; Disabled
CP2 = OFF ; Disabled
CP3 = OFF ; Disabled
CPB = OFF ; Disabled
CPD = OFF ; Disabled
WRT0 = OFF ; Disabled
WRT1 = OFF ; Disabled
WRT2 = OFF ; Disabled
WRT3 = OFF ; Disabled
WRTB = OFF ; Disabled
WRTC = OFF ; Disabled
WRTD = OFF ; Disabled
EBTR0 = OFF ; Disabled
EBTR1 = OFF ; Disabled
EBTR2 = OFF ; Disabled
EBTR3 = OFF ; Disabled
EBTRB = OFF ; Disabled
Config_End
buradaki programı yükleyiniz
https://www.picproje.org/index.php/topic,32231.0.html
Yukarıdaki kodları bu programda yazmıştım zaten maxim hocam sağolun ilginiz için,bana 18F452 için doğru bir confagirasyon nasıl yapılır o lazımdı.
doğru bir konfigurasyon diye birşey yoktur aslında
config ayarları duruma göre değişir çünkü, devreye - tasarıma göre değişmesi lazım onların
zaten öyle olmasaydı fabrika en doğrusunu sabit olarak programlar bize satardı.
yukarıda sorulan BORV,WDTPS,CCP2MUX,DEBUG
özelliklerin açıklamaları şöyle
BORV:
brown-out voltajının değeri
yani BOR açık olsun dedikten sonra , pic beslemesi hangi voltajın altına düşerse reset olsun ?
4.5 voltmu, 4.2 voltmu ? ......
WDTPS:
watch dog timer açıldıktan sonra, timerın postscaler değeri ?
1:1
1:2
1:64
diye
timerın bölücüsü yani, wdt kullanılmayacaksa zaten kapatılmalıdır, o zamanda bu değerin bir espirisi kalmaz zaten.
CCP2MUX,
ccp2 girişinin hangi ayakta olması ?
portB.3 mü ? portC.1 mi ? (öyle olması lazım)
DEBUG
bunu enable edersek picin 2 ucu debug pinleri için ayrılır, sadece o iş için kullanılır
portb.6 ve portb.7 olması lazım
ayrıca 18F452 mature product görünüyor artık
yani tarih olmuş
microchip onun yerine 18F4520 tavsiye ediyor, ayak balantıları falan aynı olmalı
18F452 artık üretilmiyor heralde
o yüzden fiyatı kendii sitesinde ~6$ 18F452/IP pdip kılıfı
halbuki 18F4520 aynısı ~4$ (hemde çok daha üstün özellikleri var)
eski ürünler daha pahalı oluyor benim bildiğim.
mesela gene 16F84 var bir türlü vazgeçilmez olan, o da ~4$ falan
not: genel bilgi olsun diye yazdım .
MAXIM hocam ayrıntılı bilgileriniz için teşekkür ederim,emeğinize sağlık çok faydalı bilgiler vemişsiniz kafamdaki sorulara cevap oldu,iyi günler dilerim.
Selam arkadaşlar.
Ben şuan Proton ile PLL osc kısmında takılmış durumdayım.
Elimde 452 var. 452 ye 10Mhz kristal osc bağlı.
Config ayarlarım ;
@CONFIG_REQ
@__CONFIG Config1H, OSCS_OFF_1 & HSPLL_OSC_1 <----------- Görüneceği üzre HSPLL
@__CONFIG Config2L, BOR_OFF_2 & BORV_20_2 & PWRT_OFF_2
@__CONFIG Config2H, WDT_OFF_2 & WDTPS_128_2
@__CONFIG Config3H, CCP2MX_ON_3
@__CONFIG Config4L, STVR_OFF_4 & LVP_OFF_4 & DEBUG_OFF_
programlayıcım ICD2 dede kontrol ediyorum HSPLL x 4 in osc . Ama pic 40Mhz çalışmıyor.
Xtal=10Mhz ve Xtal=40Mhz tanımlamalarını denedim. Hiç bir değişim yok. Nerede hata yapıyorum acaba?
Declare PLL_Req = On
Alıntı yapılan: Maxim - 07 Mart 2011, 14:54:2018F452 artık üretilmiyor heralde
o yüzden fiyatı kendii sitesinde ~6$ 18F452/IP pdip kılıfı
halbuki 18F4520 aynısı ~4$ (hemde çok daha üstün özellikleri var)
INT-EL (http://direnc.net/main/products.asp?cat_ID=397&sub_cat_ID=231)'de durum tam tersi, yani 18F452 daha ucuz. Dorukan'da ise fiyatları aynı. Diğer yerleri bilmiyorum.
@maxim usta;
Declare PLL_Req = On yazdığım anda.Kristal değeri 10MHz olmalı ki 4 ile çarpılsın.Ve declare işlemi göz ardı edilecektir diyor.
Bende 4Mhz XT takılı bu durumu nasıl aşarız?
Ve birde protonda 48MHz seçemiyoruz.En fazla 40Mhz.
18F452'nin azami hızı 40 MHz zaten, yani 48 MHz olamaz.
XTPLL diye bir seçenek olmadığını ben de yeni farkediyorum, daha önceden dikkatimi çekmemişti. Ama ben olsam 4 MHz kristali HSPLL seçeneği ile denerdim. Birkaç gün önce 18F452'yi HS ayarlı iken yanlışlıkla 4 MHz kristal ile çalıştırdım. Görünürde güzel (tabi yavaş) çalıştı ama uygulamada hassas bir zamanlama olmadığından tam doğru çalışıp çalışmadığını anlayamadım.
Arkadaşlar Bu config ayarlarında PLL ne demek. OSC tipini XT seçince ne oluyor XTPLL yapınca ne oluyor. Yada HS ile HSPLL arasındaki fark nedir. Nasıl işler. Ne gibi durumlarda kullanılır. Beni bilgilendirirseniz sevinirim. :)
Alıntı yapılan: QarizmaCocuq - 07 Mart 2011, 20:59:47
@maxim usta;
Declare PLL_Req = On yazdığım anda.Kristal değeri 10MHz olmalı ki 4 ile çarpılsın.Ve declare işlemi göz ardı edilecektir diyor.
Bende 4Mhz XT takılı bu durumu nasıl aşarız?
Ve birde protonda 48MHz seçemiyoruz.En fazla 40Mhz.
hiç 18F452 kullanmadım önce onu söyleyeyim,
datasheetine bakınca 4xPLL olduğu yazıyor başkada birşey yok
demekki xtal * 4 olacak
dolayısı ile 18F4550 deki gibi 48mhz yapamayız diye düşünüyorum
10mhz osc + PLL kullanırsak o zaman hızımız 40mhz olacaktır .
4mhz osc + PLL kullanırsak o zaman hızımız 16mhz olacaktır .
son olarak protonda bildiğim kadarıyla 48mhz seçmiyoruz zaten
mesela 10mhz + pll =40mhz olacak ya
biz protona xtal 40 değil ..
xtal 10mhz yazıyoruz.
Alıntı yapılan: Maxim - 07 Mart 2011, 21:44:13
Alıntı yapılan: QarizmaCocuq - 07 Mart 2011, 20:59:47
@maxim usta;
Declare PLL_Req = On yazdığım anda.Kristal değeri 10MHz olmalı ki 4 ile çarpılsın.Ve declare işlemi göz ardı edilecektir diyor.
Bende 4Mhz XT takılı bu durumu nasıl aşarız?
Ve birde protonda 48MHz seçemiyoruz.En fazla 40Mhz.
hiç 18F452 kullanmadım önce onu söyleyeyim,
datasheetine bakınca 4xPLL olduğu yazıyor başkada birşey yok
demekki xtal * 4 olacak
dolayısı ile 18F4550 deki gibi 48mhz yapamayız diye düşünüyorum
10mhz osc + PLL kullanırsak o zaman hızımız 40mhz olacaktır .
4mhz osc + PLL kullanırsak o zaman hızımız 16mhz olacaktır .
son olarak protonda bildiğim kadarıyla 48mhz seçmiyoruz zaten
mesela 10mhz + pll =40mhz olacak ya
biz protona xtal 40 değil ..
xtal 10mhz yazıyoruz.
Hımmm bende sorumu 4550 için sormuştum tamamdır hocam.Görüyorum ki artık CCS ye geçme zamanım gelmiş.
birbirimizi doğru anladığımızı düşünmüyorum .
hemen bazı noktaları netleştirmek istiyorum .
"protonda 48mhz seçemiyoruz" demişsin (ben söylemedim, sen öyle yazmışsın)
halbuki protonda xtal 48mhz seçeneği var.
ben şöyle söyledim (yada yanlış anladım o yüzden böyle cevapladım)
18F452 yi, 18F4550 deki gibi 48mhz yapamayız ..
şimdi bu,
protonda 48mhz seçeneği olmadığı anlamına gelmiyor
bir kere ben 18F452 için yorum yapmıştım, halbuki sen 18F4550 ile igileniyormuşsun, anlayamadım.
18F4550 ye geçersek eğer,
kodun başına xtal 48mhz yazabiliyoruz ama
tam emin olmamakla beraber, 18F4550 de PLL biraz farklı, 48mhz kullanmak için 20mhz kristal takıp xtal 20 diyoruz ve pll ayarları ile pici 48mhz çalıştırıyoruz. İlgileniyor isen detayları buluruz.
peki protonda xtal için hangi seçenekler var ?
işte cevabı burada :
(http://img707.imageshack.us/img707/6041/adszqui.png)
Mucit23 hocam datasheeti de 4 mhz kristal osilatör üstü değerlerde HS 4 e kadar ise XT seçin demişler,aralrındaki fark ve kullanım alanları bunlar.
PLL ise bunların çarpan değerleri,siz PLL değerini girerseniz eğer 10 mhz lik kristal osilatörünüzü 4 ile çarpar,40 olarak kullanır.
Ben kod yazarken kodlarla ilgili tanımlamaları F1 tuşuna basarak helpine bakarım ve karşıma çıkan help de de şunlar yazılı.
(http://i1103.hizliresim.com/2011/3/8/876.jpg) (http://goo.gl/mc9cY)
Senin paylaştığın döküman bende bulunmamakta.Ben 48Mhz yazamıyoruzu bunu(resimdeki) kastederek söyledim.He yoksa 48MHz yazdığım ve derlediğimde hiçbir sorun olmadı.Şimdi asıl sorun şu;
CCS de usb uygulaması yaptığımda 4Mhz lik XT ile CCS de USB çalıştırdım.Hiç bir sorun yok.
Biz 4 MHz XT ile Protonda 48Mhz e ulaşabilirmiyiz?4550 nin datasheetinde ne varsa uygulamaya çalıştım ancak Protonda picin 48Mhz de çalışdığından tam emin değilim.
sanırım eski versiyon sendeki
ben o tanımlamaları 3.5.1.2 nin helpinden aldım (artık pdf olarak help)
4mhz ile * pll = 48mhz ile usb olurmu ??
bilmiyorum araştırıcam
Alıntı yapılan: Maxim - 08 Mart 2011, 01:20:32
sanırım eski versiyon sendeki
ben o tanımlamaları 3.5.1.2 nin helpinden aldım (artık pdf olarak help)
4mhz ile * pll = 48mhz ile usb olurmu ??
bilmiyorum araştırıcam
CCS de şu şekilde yazdığımda oldu..
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOBROWNOUT // 4 MHZ
uykulu uykulu ne dediğimi bilemedim
ccs de oluyorsa protondada olacaktır ,çünkü fuse veya pll tanımları derleyiciye özel değilki, picin kendine has şeyler.
aynı şekilde protonda da yapılacaktır eminim
edit:
bu şekilde 4mhz osc ile usb 48mhz olarak çalışıyor olmalı
yanlız xtal bölümüne 4 mü? 48 mi yazmalıyız ondan emin değilim tam .
Device 18F4550
Xtal 48
Config_Start
PLLDIV = 1 ; No prescale (4 MHz oscillator input drives PLL directly)
CPUDIV = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
USBDIV = 2 ; USB clock source comes from the 96 MHz PLL divided by 2
FOSC = XTPLL_XT ; XT oscillator, PLL enabled, XT used by USB
Config_End
Bu şekilde çalıştı....20Mhz OSC takılı....
Device=18F4550
Config_Start
PLLDIV = 5 ; Divide by 5 (20 MHz oscillator input)
CPUDIV = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
USBDIV = 2 ; USB clock source comes from the 96 MHz PLL divided by 2
FOSC = HSPLL_HS ; HS oscillator, PLL enabled, HS used by USB
FCMEN = OFF ; Fail-Safe Clock Monitor disabled
IESO = OFF ; Oscillator Switchover mode disabled
PWRT = On ; PWRT enabled
BOR = OFF ; Brown-out Reset disabled in hardware and software
VREGEN = OFF ; USB voltage regulator disabled
WDT = OFF ; HW Disabled - SW Controlled
MCLRE = OFF ; RE3 input pin enabled; MCLR disabled
LPT1OSC = OFF ; Timer1 configured for higher power operation
PBADEN = OFF ; PORTB<4:0> pins are configured as digital I/O on Reset
CCP2MX = OFF ; CCP2 input/output is multiplexed with RB3
STVREN = OFF ; Stack full/underflow will not cause Reset
LVP = OFF ; Single-Supply ICSP disabled
ICPRT = OFF ; ICPORT disabled
XINST = OFF ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
Debug = OFF ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
CP0 = OFF ; Block 0 (000800-001FFFh) not code-protected
CP1 = OFF ; Block 1 (002000-003FFFh) not code-protected
CP2 = OFF ; Block 2 (004000-005FFFh) not code-protected
CP3 = OFF ; Block 3 (006000-007FFFh) not code-protected
CPB = OFF ; Boot block (000000-0007FFh) not code-protected
CPD = OFF ; Data EEPROM not code-protected
WRT0 = OFF ; Block 0 (000800-001FFFh) not write-protected
WRT1 = OFF ; Block 1 (002000-003FFFh) not write-protected
WRT2 = OFF ; Block 2 (004000-005FFFh) not write-protected
WRT3 = OFF ; Block 3 (006000-007FFFh) not write-protected
WRTB = OFF ; Boot block (000000-0007FFh) not write-protected
WRTC = OFF ; Configuration registers (300000-3000FFh) not write-protected
WRTD = OFF ; Data EEPROM not write-protected
EBTR0 = OFF ; Block 0 (000800-001FFFh) not protected from table reads executed in other blocks
EBTR1 = OFF ; Block 1 (002000-003FFFh) not protected from table reads executed in other blocks
EBTR2 = OFF ; Block 2 (004000-005FFFh) not protected from table reads executed in other blocks
EBTR3 = OFF ; Block 3 (006000-007FFFh) not protected from table reads executed in other blocks
EBTRB = OFF ; Boot block (000000-0007FFh) not protected from table reads executed in other blocks
Config_End
Xtal=48