18F452 CONFIG SORUNU

Başlatan ~ENES~, 20 Ekim 2014, 22:46:03

~ENES~

değerli ete hocam ve arkadaşlar.. kullanmış olduğum 16f877nin hafızası dolunca 18f452ye geçmeye karar verdim fakat derleyici bir sürü hata veriyor pıc basıc kullanıyorum pbp 2.47 versiyonu ete hocamın önemli bilgiler konusunda okuduklarımı uyguladım pbp klasörü içinden confıg ayarlarını alıp basına @ koyarak MCS ye yapıştırdım pbp klasöründeki satırları ; ile kapattım ama yok bir led dahi yakamadım 18f452 ile rica etsem yardımcı olabilecek veya yol gösterebilecek arkadaşlara minnettar kalırım hayırlı çalışmalar dilerim...
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

#1
Benim kullandığım header ayarları aşağıdadır.
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H  ;  _HSPLL_OSC_1H       
    __CONFIG _CONFIG2L, _BOR_ON_2L  & _BORV_20_2L & _PWRT_OFF_2L
   __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
;    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
;    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H   
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_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

Ete

~ENES~

Hocam ozaman Inc dosyasini değilde mpasm içindeki config satirlarini mi kapatmamiz gerekiyor bu şekilde hata vermez mi ?
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

#3
18F serisi yalnızca MPASM kullanılarak derlenebilir. Sistem değişmiyor. 64 bit makinalar için ne yapılması gerekiyorsa aynısı 18F serisi için yapılmalı. PBP klasöründe yer alan 18F452.INC dosyası içinde altta yer alan config satırları kapatılarak geri kayıt edilmeli. Başka şey yapmaya gerek yok.

Öncelikle programını ve şemanı ver bakalım. İkincisi , bu yeni config satırlarını kullandığında derleme sırasında bir hata mesajı veriliyormu onuda belirtmende fayda var.
Bir mesaj çıkıyorsa ya ekran kopyasını ver yada hatanın ne olduğunu aynen yaz.

Böyle sanal ortamda arıza şumudur bumudur deyip boşuna çaba sarfetmeyelim.
Ayrıca denemeni gerçek devredem yoksa simuledemi yapıyorsun onuda belirt.

Bu arada PBP247 yi bence 260 ile değiştir. 260 ın birde a-b-c diye yamaları var onlarıda bul yükle.

Ete

~ENES~

hocam yine hata veriyor dosyalar ektedir... mpasm versiyonu 2.40 bunun bir sıkıntısı olur mu acaba ???
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Verdiğin programı ben derlemeye çalıştım. Verdiği tek hata TMR0 hatası. Zira bu işlemcide TMR0 hem 16bit hemde 8 bit seçilebiliyor. Bu yüzden de programda yazdığın TMR0=0 komut satırı hata verdiriyor. Zira TMR1 de olduğu gibi TMR0 registerine direk ulaşamıyorsun ama onun 8 bitlik iki bileşenine ulaşabiliyorsun. Yani TMR0=0 yerine TMR0L=0 ve TMR0H=0 yazman gerekiyor.
Bunun dışında bir hata vermeden derlendi. Senin hata mesajlarına bakıyorum bazılarını ilk defa görüyorum. BU nedenle nasıl oluştuğukonusunda en ufak bir bilgim yok. Ama mesajlara bakarsan sanki 18F452.INC dosyasıda bulunamamış. Bunun sebebi,
MCS de hem PBP klasörü hemde MPASM klasörünün yeri tam gösterilmemiş olabilir.
Ayrıca PBPklasörü içinde yer alan 18F452.INC dosyası içindekileri kapatacaksın.  Başkada bir şey yapmaya gerek yok. Derleme MPASM kullanılarak yapılacak hepsi bu.

Dediğim gibi versiyonu 260 olarak değiştrmeye bak.

Ete

~ENES~

#6
hocam çok teşekkür ederim yardımlarınız için dediğiniz gibi mpasm klasörünü tam bulamıyor gibiydi masaüstünden direk tanıtınca oldu sorun yok birde farklı bir programda denedim OPTION_REG=%00000101  komutunda hata verdi bu şekilde oran 1/64 olarak hesaplamaları yaptım acaba 18f serisinde bu komut kullanılmıyormu yada farklı bir kullanımı mı var bu konuda bilginiz varmıdır hocam... program ektedir
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

BU işlemcide option registeri yok. Olmayan bu register görevleri çeşitli başka registerler tarafından paylaşılmış durumda,
Option_reg.7= pullup ları akitive ederdi bu işlemcide INTCON2.7 bu işi yapıyor.
Option_reg.6= PortB.0 kesmesi kenar seçimi yapardı bu iş yine INTCON2.6 registeri tarafından yapılıyor.
TMR0 bölme oranlarını ayarlıyordu bu işi TMR0CON registeri yapıyor artık.

Ete

~ENES~

Anladim hocam Mevla sizden razi olsun sayenizde çok şey öğrendik .. Hocam sitede 18f ve dspic serileriyle alakali bir baslik altında grup kursak nasil olur hem gozumuzde fazla buyutmeyiz bazi projeleri (örn. Grafik LCD kullanimi) hem de farklı işlemcileri taniyip kullanma firsati buluruz ne dersiniz ...
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Bu sitede çok fazla şey bana bakıyor. Ben yaparsam oluyor yapmazsam çok a kişi müdahele ediyor. Hali ile her fazlalık benim üzerime yüük demektir. Yeni bir gurup açma fikri bana cazip gelmiyor bu aşamada. Zaten henüz o işlemcilerle bende hiç çalışmadım. Çalışmaya niyetlenelim keşfedelim dersek bir sürü zaman harcamak lazım diğerleri ile birlikte yetişebileceğimi pek sanmıyorum şimdilik.

Ete

~ENES~

Hocam tmr0 kesmesini birtürlü açamıyorum komutun kullanım şekli bu değilmi ? T0CON=%11000101 '1/64 bölme oranı...
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

F®T

#11
TMR0L=0:TMR0H=0  'TMR0 DEĞERİ SIFIRLANIR
INTCON.2=0  'TMR0 BAYRAGI
INTCON.5=0 'TMR0 TASMA KESMESİNİ AKTIF ETME
INTCON.7=0 'TUM GENEL KESMELERİ DEVREYE ALMA
T0CON.7=0  'TMR0 KESMESİNİ AÇMA KAPAMA


bunlardan sonra devreye almak için

INTCON.2=0  'TMR0 BAYRAGI SIFIRLARSIN
INTCON.5=1 'TMR0 TASMA KESMESİNİ AKTIF EDERSİN
INTCON.7=1 'TUM GENEL KESMELERİ DEVREYE ALIRSIN
T0CON.7=1  'TMR0 KESMESİNİ AÇARSIN

ON INTERRUPT GoTo KESME

bu şekilde açması lazım.

BASLA:
-
-
-
-
GOTO BASLA

daha sonra kesme içinde

kesme:

INTCON.5=0 'TMR0 TASMA KESMESİ DEVRE DIŞI BIRAKILIR

programını yazarsın
-
-
-


TMR0L=0:TMR0H=0  'TMR0 DEĞERİ SIFIRLANIR
INTCON.2=0  'TMR0 BAYRAGINI SIFIRLARSIN
INTCON.5=1 'TMR0 TASMA KESMESİNİ AKTIF EDERSİN

RESUME
ENABLE

Bu şekil bir dene bakalım.ayrıca simülasyon dosyanıda bir sonraki mesajda koyarsan daha faydalı olur.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

~ENES~

F.t hocam tesekkur ederim yarin deneyip sonucu yazacagim .. Merak ettiğim bir konu var bu registerlere verilen değerler olsun komutlar olsun bunlar datasheette mi var inceledim baya ama bulamadim mesela yine 18f452 de rb0 kesmesigibi 2 tane daha harici kesme varmis bunlara nnasil ulasacagimizi nerden bakip anlayabiliriz hocam ..
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Sen soruyorsun biz datasheet e bakıp cevap veriyoruz. Dilimde tüy bitti her şey data sheet de yazıyor oraya bakmayı öğrenin diye. Interrupts bölümüne bakarsan orada Intcon registerlerini görebilirsin. Intcon , Intcon1 diye adlandırılmışlar onların bitlerine bakarsan göreceksin her şeyi.

Ete

F®T

enes1153 ete hocamın dediği gibi data sheet te her şey mevcur bu işi merak etmeden öğrenmek çok zor.önce data sheet okumasını öğrenmek lazım.zaten geriye bişey kalmıyor.sorduğun soru port b değişiklik kesmesi için REGISTER 8-1: INTCON REGISTER kısmında herşey açık olarak görebilirsin.tmr0 gibi aynı mantık ile iş yapacaksın.sadece  ıntcon 0,3 ve 7 nolu bitleri ile çalışacaksın.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal