16f84a ile çalışıyor ama 18f2520 ile aynı devre çalışmıyor.

Başlatan myprayer14, 26 Aralık 2014, 00:19:46

myprayer14

merhaba arkadaşlar. bir devre yapmak istiyorum pic ile. devre 16f serisinden 84a ile çalıştırdım. ama malum 18f ler yeni seriler. 18f2520 çalıştırmam istendi. bende aynen çalışır sandım. acaba genelde 18f ile özelde 2520ile ilgili bu devre için bilmem gerekenler özetle nedir ? aydınlatırsanız sevinirim. teşekkür ederim.

isis:

trisa=%00000111
trisc=%00000000


porta=0
portb=0
portc=0



symbol buton1=porta.0
symbol buton2=porta.1
symbol buton3=porta.2
symbol Led1=portc.0
symbol Led2=portc.1
symbol Led3=portc.2


motor:  if buton1=1  then
        high Led1
        else
        low Led1
        endif
       
        if buton2=1 then
        high led2
        else
        low Led2
        endif
       
        if buton3=1 then
        high Led3
        else
        low Led3
        endif
       
       
        goto motor
        end


Hattuşa

slm ben yardımcı olayım,
ne yapmak istediğinizi tam anlamadım ama butonun birisine bastığımızda motor bir yana diğerine bastığımızda da diğer yana dönmesini istediniz. ilk butonda anahtar olarak kullanılmak istendi, benim anladığım bu ve buna göre devreyi çalıştırdım. konu ile alakalı isis ve kod ektedir.

NOT: 16F serilerine göre 18F serilerinde en önemli konu sigorta ayarlarıdır. birde tüm giriş çıkışların analog ve dijital ayarları belirtilmelidir. başkaca 16F serilerinde çalışan tüm kodlar 18F serilerinde de rahatlıkla çalışır.

ete

16F84A işlemcisi hemen hemen hiç önemli bir özelliği olmayan işlemcidir. Bunun yanında 18F2550 ise bir çok özelliği olan işlemcidir.  Bir işlemcide pinler üzerinde birden fazla özellik var ise kullanmadıklarımızı kapatmak yada iptal etmek zorundayız. Aksi halde kullanım amacımızı aksatan durumlar ortaya çıkar. Buna en güzel örneklerden birisi COMPARATOR dediğimiz özelliktir. Komparatör bir karşılaştırıcıdır. Opamp larda sıklıkla kullanılan bir özelliktir. Bir pinden girilen voltajı diğer pinden girilen ile karşılaştırarak çıkış veren bir sistemdir. Komparatör özelliği olan işlemcilerde bu özellik default (önseçimli) olarak seçilmiş durumda açılır. Yani aksine bir tedbir almazsanız işlemci pinleri komparatör olarak çalışır. Aynı pinleri digital giriş çıkış amaçlı kullanmak isterseniz komparatör özelliğini kapatmanız gerekir. Aksi halde pinler beklendiği gibi çalışmaz.
Benzer şekilde Analog pinlerde aynı aksaklığı yaratabilirler. Bu nedenle ADC ölçümü yapmayacak iseniz bu özelliğide kapatmanız gerekir. Bütün bunlar şunu göstermektedir. Çok iyi bir Data Sheet okuyucusu olmanız gerekiyor. İllaki İngilizce bilgisi gerekmiyor. Bir kaç standart kelimeyi anlayın yeter. Nedir bunlar. "Comparator Off"  gibi kompartör kapatma kelimesini tanımanız gerekiyor. Benzer şekilde pinlerin tamamını Digital yapan komutu değerini ilgili registere vermeniz gerekiyor.
Şimdi gelelim seçilen işlemciye, 18F2550 de ne özellikler var birlikte bakalım. Simulasyonda bile pinlere bakınca AN0-AN1 gibi analog pinleri olduğunu görebiliyoruz. Ama en iyisi Data Sheet'ine bakmaktır. Data Sheet de 1. sayfada alta kısımda bir tablo göreceksiniz. O tabloya bakınca;
İşlemcinin hafıza kapasitelerininden sonra 24 ad giriş çıkış pini, 10 adet ADC pini olduğunu, 2 tane CCP pini yani HPWM çıkış pini olduğunu, USART özelliği ve sonuçta 2 adet comparatör pini olduğunu görebiliyoruz. Bizi ilgilendiren kısımları bunlar.
Bu durumda pinleri giriş çıkış işlemleri yapabilmemiz için işlemcinin ADC özelliğini ve Comparatör özelliğini iptal etmemiz gerekecektir.
Önce Comparatör özelliğine bakalım.
Comparatör sayfasına gidersek (Sayfa 264) orada Tablo 22-1 de komparatör seçenekleri görülmekte olup üstte sağ tarafta duran seçenekte Comparatör off seçeneğinde CM2:CM0 bitlerine %111 değerinin verilmesi gerektiği kolaylıkla anlaşılabilmektedir.
Bu bitler CMCON registerinin ilk 3 biti olduğu için CMCON=%00000111 değerini vermekle komparatör özelliğini iptal etmiş olacağız.
Bundan sonra ADC özelliğini iptal etmek için ADC sayfasına gidiyoruz (Sayfa 253) Burada ADCON0 ve ADCON1 registerleri kullanacağımız registerler olup özellikle ADCON1 registeri bizi ilgilendiren register dir. Bit0-Bit3 aralığındaki bitler ise Analog pinlerin kurulumunu sağlamaktadır. Orada verilen tabloda bütün bitlerin "D" yani Digitl olması için ilgili bitlere %1111 değerinin verilmesi gerektiği kolaylıkla görülebilmektedir. Bakın hiç lisan bilgisi gerekmeden neyin nasıl yapılacağını kolaylıkla anlayabiliyoruz. Yeterki ne yapmak istediğinizi bilin.
Bu durumda ADCON1=%00001111 değerini vererek bu özelliğide devre dışı bırakmış oluyoruz.
Bundan sonra artık işlemciyi aynen 16F84A gibi kullanabilirsin. Ama buna geçmeden sigorta ayarlarında değinmekte yarar görüyorum.
18F serisinde çok fazla özellik olduğu gibi sigorta ayarlarıda diğerlerine göre farklılık arzeder ve bunlarında doğru şekilde ayarlanması gerekir. Pek çok kişi bu ayarlardan kaçmaktadır. Haşbuki üzerine gidip hangi ayarın ne işe yaradığını teker teker araştırmak en doğrusudur.
Detaya girmeyeyim diyorsanız zaten PBP klasörü içindeki 18F2550.INC dosyası içinde işinize yarıcayacak bir ayar dizisi vardır. Bakalım neymiş bu ayar dizisi;
       __CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
        __CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
        __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L & _VREGEN_ON_2L
        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
        __CONFIG    _CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
        __CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L

Tabiiki PBP formatında bunları kullanabilmek için başına bir ASM sonunda da ENDASM komutu eklemek gerekecektir.
Bunuda programın başına ekledinizmi işiniz tamam demektir.
Tabiiki iş bu kadar kolay değil. Zira bu sigorta ayarlarında seçilen OSC tipi PLL ile birlikte HS tipi OSC yani yüksek frekans seçilmiş. Bu 10Mhz ve yukarısı OSC tipleri için seçilmesi gereken bir özellik. PLL kristal frekansının 4ile çarpılmasını sağlar. Böylece 10Mhz kristal kullanıyorsanız işlemci frekansını 40 Mhz yapar. Data sheet de bu işlemcinin maksimum 48 Mhz de çalışabileceği belirtilmiş. Bunun için 48/4=12Mhz lik kristal kullanmak ve PLL yi aktive etmek gerekecektir.

Sigorta ayarları detayları için; MPASM klasörü içinde yer alan P18F2550.INC dosyası içine bakılmalıdır. Söz konusu dosya yine MCS içinde açılarak incelenebilir.

Ete

myprayer14

Çok teşekkür ederim cevaplarınız için. Pic öğrenmeye yeni başladığım için daha yolun başındayım. Ete bey hiç sıkılmadan açıkladığından konuyu ayrıca etkilendim. Eğer bende bu düzeyde pic  bilgisine sahip olursam sizin gibi olmak hedefimdir artık. Devreyi comparatör ve adc özelliğini iptal ettiğimde çalışır hale getirdim. Ancak şu sigorta ayarlarını dediğiniz gibi "asd-endasm" koyarak kodun başına yerleştirdiğimde hatalar aldım. Açıkçası sigorta ayarlarının da neden gerekli olduğu aklıma yatmadı. Bu ayarların neden gerekli ve nasıl yapılması gerektiği hakkında bir yazınız varsa oradan bakayım daha fazla sizi meşgule etmeyeyim. Ve bana bu pic basic pro öğrenme yolunda nasıl bir yol haritası izlemem gerektiğini ayrıca belirtirseniz mesrur olurum. Hayırlı günler...


Hattuşa

sayın ete hocam;

yeni bir başlık altında işlemcilere ait config ayarlarının isimlerine göre ne işe yaradıklarını anlatan bir konu olsa inanın faydalı olacaktır. mesela;
Alıntı Yap__CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
        __CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
        __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L & _VREGEN_ON_2L
        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
        __CONFIG    _CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
        __CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L

de bahsi geçen PBADEN, CCP2MX, LVP,STVREN; XINST vblerinin işlevlerini anlatan açık bir yazı işimize yarayacaktır. yoksa benim gibi yarım yamalaklar bilmediğini off konuma getirip, tırmalayıp durur. hocam datasheette yazıyor diyebilirsiniz ama aramızda benim gibi özürlüler var...

ete

Sigorta ayarları işlemcinin bazı özelliklerini kullanmak amacı ile geliştirilmiş bir ön ayar sistemidir. Hem program içine koyulabilirler hemde pic'e program atılırken ayarlanabilirler. Bu konudaki geniş bilgiyi aşağıdaki linkten öğrenebilirsin.

http://etepic.com/index.php/topic,1687.0.html

Basic konusunda yayınlanmış derslerim var. Onları 1 den başlayarak ve sindire sindire okuyup deneyerek öğrenebilirsin.
Bu sitedeki pek çok kişi o derslerden kısa sürede öğrenmiş durumda sende öğrenebilirsin.

Ete

Hattuşa

Alıntı yapılan: ete - 27 Aralık 2014, 13:34:28
Sigorta ayarları işlemcinin bazı özelliklerini kullanmak amacı ile geliştirilmiş bir ön ayar sistemidir. Hem program içine koyulabilirler hemde pic'e program atılırken ayarlanabilirler. Bu konudaki geniş bilgiyi aşağıdaki linkten öğrenebilirsin.

http://etepic.com/index.php/topic,1687.0.html

Basic konusunda yayınlanmış derslerim var. Onları 1 den başlayarak ve sindire sindire okuyup deneyerek öğrenebilirsin.
Bu sitedeki pek çok kişi o derslerden kısa sürede öğrenmiş durumda sende öğrenebilirsin.

Ete


ete hocam k. bakmayın verdiğiniz adresi nasıl kaçırdım bilmiyorum. ama şu var ki gerek bu siteyi gerekse sizin 13 dersinizi sürekli okuyorum. hocam derslerin pdf formatında çıktısını aldım kitap haline dönüştürdüm (şuan tek eksiğim kaynatıp suyunu içmek kaldı  ;D)
şaka bir yana elleriniz dert görmesin ustam.

Powered by EzPortal