18F2550 ile Led yakıp Söndürmek

Başlatan umberto, 20 Aralık 2009, 16:58:53

umberto

Selamlar

Pic 18F2550 ile çalışmaya yeni başladım. Fakat henüz porta.0 a bağlı ledi yakıp söndürmeyi başaramadım.

Bu konuda basitce bir pbp kodu nasıl olmalı ?
Teşekkürler

Not: Pic'e 20Mhz kristal bağlı

ete

18F serisinde program yazmak çok zor değil.Ama asılönemli olan sigorta ayarlarının doğru şekilde yapılmasıdır.
Bir de derleme işinde MPASM kullanılması gerekmektedir. Bunu yapmak için PBP 18F2550.inc dosyasında ufak bir tadilat da yapılması gerekiyor.

Önce programımızı yazalım.

DEFINE OSC  20
TRISA=0
TRISB=0
TRISC=0

CMCON=7 'analog komparatörler iptal edildi.
ADCON1=%00001111 'analog girişler digital yapıldı

pause 200

basla:

Toggle PortB.0
pause 200
goto basla
end

Normal şartlarda bu kodun çalışması gerek ve bize portB.0 da bağlı olan ledi bir yakıp bir söndürmesi gerekir.

Ancak sigorta ayarlarınıda doğru yapmak gerekiyor.
Şimdi ne gibi sigorta ayarları var onları inceleyelim.
;----- CONFIG1L Options --------------------------------------------------
_FOSC_HS_1H ' 20 Mhz kristal frekansı için HS seçildi

;----- CONFIG2L Options --------------------------------------------------
_PWRT_ON_2L   'power on timer enble yapıldı
_BOR_OFF_2L
_VREGEN_OFF_2L

;----- CONFIG2H Options --------------------------------------------------
_WDT_OFF_2H

;----- CONFIG3H Options --------------------------------------------------
_MCLRE_OFF_3H
_LPT1OSC_OFF_3H
_PBADEN_OFF_3H
_CCP2MX_OFF_3H

;----- CONFIG4L Options --------------------------------------------------
_STVR_OFF_4L
_LVP_OFF_4L
_ENHCPU_OFF_4L
_DEBUG_OFF_4L

;----- CONFIG5L Options --------------------------------------------------
_CP0_OFF_5L
_CP1_OFF_5L
_CP2_OFF_5L
_CP3_OFF_5L

;----- CONFIG5H Options --------------------------------------------------
_CPB_OFF_5H
_CPD_OFF_5H

;----- CONFIG6L Options --------------------------------------------------
_WRT0_OFF_6L         EQU  H'FF'    ; Disabled

_WRT1_OFF_6L         EQU  H'FF'    ; Disabled

_WRT2_OFF_6L         EQU  H'FF'    ; Disabled

_WRT3_OFF_6L         EQU  H'FF'    ; Disabled

;----- CONFIG6H Options --------------------------------------------------
_WRTB_OFF_6H         EQU  H'FF'    ; Disabled

_WRTC_OFF_6H         EQU  H'FF'    ; Disabled

_WRTD_OFF_6H         EQU  H'FF'    ; Disabled


;----- CONFIG7L Options --------------------------------------------------
_EBTR0_OFF_7L        EQU  H'FF'    ; Disabled

_EBTR1_OFF_7L        EQU  H'FF'    ; Disabled

_EBTR2_OFF_7L        EQU  H'FF'    ; Disabled

_EBTR3_OFF_7L        EQU  H'FF'    ; Disabled

;----- CONFIG7H Options --------------------------------------------------
_EBTRB_OFF_7H        EQU  H'FF'    ; Disabled

Bütün bunların Config olarak verilmesi ise aşağıdaki şekilde olacaktır,
asm
    __CONFIG _CONFIG1H, _FOSC_HS_1H
    __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L &  _VREGEN_OFF_2L 
    __CONFIG _CONFIG2H, _WDT_OFF_2H   
    __CONFIG _CONFIG3H, _MCLRE_OFF_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_OFF_3H    
    __CONFIG _CONFIG4L, _STVR_OFF_4L & _LVP_OFF_4L & _ENHCPU_OFF_4L & _DEBUG_OFF_4L    
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L  
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H  
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H  & _WRTD_OFF_6H 
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H  

endasm


tabiiki bu config ayarlaması programın en başına yerleştirilmesi gerekiyor.

Bütünbunlar ayarlandıktan sonra gelelim 18F255.inc dosyasındaki tadilat işine,
Bu dosya PBP klasörü içinde yer alır ve açılıp içinde yer alan config satırlarının başlarına ";" işareti koyularak satırlar iptal edilmeldir.
Bunun sebebi bu config satırlarının PBP içindeki inc dosyasında değil MPASM içindeki  P18F2550,inc dosyasında değerlendirilmesi zorunluluğudur.
Bu satırlar açık olursa iki defa aynı komut verilmiş olacağı için program hata verecektir.
Bu işlemler ayarlandıktan sonra inc dosyası yeniden yerine kayıt edilir. ve son olarak MCS de asm olarak MPASM seçilerek derleme yapılır.

E T E
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

umberto

ETE üstadım, ayrıntılı açıklaman ve tanımlamaların için çok teşekkür ederim.Yazmış olduğun işlemleri yaptım , MPASM'i de kurdum. Fakat kodu derlerken

Symbol not previously defined (_STVR_OFF_4L)
Symbol not previously defined (_ENHCPU_OFF_4L)

böyle bir hata alıyorum. Nerde yanlış yapıyorum ?

EKLEME:

Benim kullanmış olduğum MPASM klasöründe :

_STVR_OFF_4L       yerine  _STVREN_OFF_4L
_ENHCPU_OFF_4L   yerine  _XINST_OFF_4L

kullanılmış, kodda bunları değiştirince , Led yanıp sönmeye başladı :)

Çok teşekkür ederim ETE. Çalışmalar sırasında başka dikkat etmem gereken noktalar nelerdir , aklına kabaca gelen ipucları vb varsa onlarıda yazar mısın ?

Teşekkürler

ete

18F serisi ile çalışırken kesinlikle MPASM klasörü içinde bulunan P18Fxxx.inc dosyasını açıp dosyanın sonunda yer alan config ayarlarına bakmak gerekiyor.
Olası bütün ayarlar orada verilmiş durumda. hatta pek çoğunun ne olduğuna dair açıklamada mevcut. Oradaki bilgileri alıp config ayarlarınıza yerleştirdiğiniz zaman işiniz çözülmü olacaktır.Tabiiki ayarları doğru yapmak kaydı ile dediklerim geçerli.
Pek çok ayarı zaten kullanmayacaksınız.  

Yularıda verdiklerimi de ben MPASM den almıştım. Demek versiyon farklılığından farklar da oluşabiliyormuş. Her neyse verilen hata mesajıda böyle bir sembol önceden tanımlanmadı şeklinde ve hali ile bu tanımlamanın yanlış yada fazladan olduğunu gösteriyo. İyi akıl edip sizinki ile karşılaştırmış ve farkı gözlemlemişsiniz. Yapılacak hareket de bu idi.
Sorun çözülmüş.

Aklıma başka dikkat edilecek nokta gelmiyor. Aslında Microchip in yayınladığı bir PDF dosyasıda var bu konuda bütün 18F serisinin Config ayarlarını tek dosyada vermiş. Çok faydalı bir döküman. Ancak bürodaki bilgisayarımda kaldı. Daha sonra onuda buraya ekleyeceğim. En azından bir yere yükler link veririm yada bulabilirsem direk linkini veririm.

Ete

Not: Bir tane link  buldum.
http://hades.mech.northwestern.edu/images/e/e3/PIC18_config_settings.pdf
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

peoneak

Aynı led yakma programını bende denemeye calıstım MCS'de MPASM yardımıyla sorunsuz compile edebiliyorum. Isistede çalışıyor.
MCS'de compiler olarak tanımlanan C:\PBP247 klasorü altındaki 18F2550.INC 'nin içerisindeki config satırlarının başına ; koydum ve kaydettim.
Ama pic i programlamaya çalıştıgımda şöyle bir hata daha dogrusu uyarı cıkıyor. Ve bu şekilde programladıgımda pic çalışmıyor. Eksik birşeylermi yapıyorum. Neden olabilir.

(Ayrıyeten 18F2550.INC ile P18F2550.INC aynımı :) Aynı ise başında P olup olmaması MCS' de Compile' i etkilermi )

@   __CONFIG    _CONFIG1L, _PLLDIV_1_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
@   __CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H
@   __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_1_2H 
@   __CONFIG    _CONFIG3H, _PBADEN_OFF_3H
@   __CONFIG    _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L
@   __CONFIG    _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L

DEFINE OSC  4
TRISA=0
TRISB=0
TRISC=0

CMCON=7 'analog komparatörler iptal edildi.
ADCON1=%00001111 'analog girişler digital yapıldı

pause 200

basla:

Toggle PortB.0
pause 200
goto basla
end


Uyarı:


peoneak

Sorunu buldum. Benim programlayıcıda sorun varmıs.