avatar_ete

Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?

Başlatan ete, 21 Nisan 2014, 19:35:20

ete

Sigorta Ayarları nedir ve Nasıl verilir?

Mikro denetleyicilerin (Ben kısaca İŞlemci diyorum) sahip olduğu bazı donanımsal özelliklerin açılıp kapatılması ve çalışması için gerekli olan bazı bilgilerin verilmesi amacı ile programınbaşında yada programı işlemciye yazarken verilen ayarlardır. Programın baş tarafına yerleştirilmesi tercih sebebidir.

Belli başlı sigorta ayarlarına birlikte bakalım.

- @ DEVICE PIC16F88   bu satırla hangi işlemcinin kullanılacağı belirlenmiş oluyor.

-@ DEVICE PIC16F88, INTRC_OSC_NOCLKOUT  bu satırla işlemcinin dahili osilatörünün kullanılacağı ve dışarı ayrıca clk çıkışı yapılmayacağı belirlenmiş oluyor. Diğer alternatifleri XT_OSC , bu yaklaşıl 6 Mhz harici kristal kullanılan sistemler için geçerlidir. HS_OSC ise 8 ve üzeri Frekanlar için geçerlidir. Unutmayın XT ve HS işlemciye kristal bağlandığı zaman kullanılabilir.

- @ DEVICE PIC16F88, WDT_OFF    işlemcilerde Türkçesi bekçi köpeği anlamına gelen bir sayac vardır. Her hangi bir nedenle işlemci bir yerde kilitlenirse bekçi köpeği hemen saymaya başlar ve süre sonunda işlemciyi resetleyerek kilitli kalmasını engeller. Ancak bazen de istenmeyen anlarda işlemciyi resetleyerek programın çalışmasını engelleyebilir.
İyice hakim olduğunuz programlarda bu sayacı aktif edebilirsiniz. Ama sorun çıkartıyorsa ki sürekli reset atıp programı baştan başlatır bu gibi durumlarda kapalı tutabilirsiniz. Açmak için WDT_ON, kapatmak için WDT_OFF vermeniz gerekir.

- @ DEVICE PIC16F88, PWRT_ON    İŞlemciye voltaj verilir verilmez şayet bu sayac aktif ise besleme voltajı belirli bir değerin üzerine çıkıncaya kadar işlemciyi çalıştırmaz. Faydalı bir özelliktir aktif tutulması önerilir. Kullanım alternatifleri PWRT_ON ve PWRT_OFF şeklindedir.

-@ DEVICE PIC16F88, MCLR_OFF  , her işlemcinin bir reset bacağı vardır. Bu MCLR pini olarak geçer. Bu pin aynı zamanda işlemciye programlama voltajının verildiği yerdir. MCLR pini pek çok işlemcide HIGH da tutulması gereken bir pindir. Ancak bazı işlemcilerde ise tercihli olarak reset pini fonksiyonu iptal edilebilir. İptal edilirse bildiğiniz bir GIRIS pini haline gelir. Bu pin yalnızca giriş olarak kullanılabilir. O da mümkün olan işlemcilerde. Bu nedenle data sheetlerine bakıp MCLR nin iptal edilip edilmediğini öğrenmeniz gerekir. Kullanım alternatifleri MCLR_ON ve MCLR_OFF şeklindedir.

-@ DEVICE PIC16F88, BOD_OFF  işlemcinin besleme voltajını kontrol eder çok düştüğü zaman işlemciye reset attırır.
Bazı işlemcilerde voltaj seviyeside girilmektedir. Genelde selenoid röle ve elektromekanik elemanların olduğu devrelerde kapalı tutulması önerilir. Açmak için BOD_ON verilmelidir.

-@ DEVICE PIC16F88, LVP_OFF, yeni nesil işlemcilerin hemen hepsinde 5v İLE programlanabilme özelliği vardır. Bu sigorta ayarı ile aktif hale gelir bu özellik. Genelde program içinde kullanmayız bu nedenle off da tutulması önerilir.

-Bu ayarların yanı sıra birde kod koruma ayarları vardır. Yazdığınız kodların başkası tarafından kopyalanmaması amacı ile kod korumaları aktif edilirler. Korumalar işlemciye göre farklılık arzedebilir. Eprom hafızasından tutunda bütün flash hafıza ile data hafızasını kod koruması ile koruyabilirsiniz.

Genel anlamda bunlar kullanılır. Şimdi bu ayarların nasıl verildiğine ve tüm ayar bilgilerini nerden elde edeceğimize bir bakalım.
Bilgisayarlar son dönemde 32 bit ve 64 bit makinalar olarak iki guruba ayrılıyorlar. Yeni nesil makinaların tamamı artık 64 bit olarak gelmektedir. Bu özellik programların derlenmesinide değiştirmektedir.
Detaylı bilgi için Önemli Bilgiler Başlığı altındaki Basic'e nasılbaşlanır konusunu okumanızı öneriyorum.

Sigorta ayarlarıda derlemenin 64 bit yada 32 bit yapılmasına göre değişiklik arzeder.
Önce 32 Bit derlemeyi verelim. Yukarıda verdiğim bütün sigorta ayarları 32 bit makina mantığına uygun ayarlardır.
BU ayarları, PBP klasörü içinde yer alan INC alt klasöründe Mxxxxx.INC dosyası içinde en başta görebilirsiniz.
xxxxx ifadesi 16F88 gibi işlemci adını ifade etmektedir. Mesela M16F88.INC. Gibi. Ancak dikkat edin bazı işlemcilerin özellikleri bir birinin aynı olduğu için gurup olarak tek INC dosyası verilmiş ve dosya adı gurup adı olarak verilmiştir. Örneğin 16F628 dosyası M16F62x.INC olarak, 16F689 , M16F6xx.INC şeklinde verilmiştir. Nasıl verildiği ise işlemcininkendi INC dosyasında gösterilmektedir.  (include 'M16F6xx.INC'   ; PM header şeklinde)
Orada gördüklerinizin tamamını @ DEVICE PIC16F88, CPD_OFF  formatı şeklinde verebilirsiniz. Burada , CPD_OFF ifadesi bahsi geçen INC dosyasından alınmıştır.


Makinası 64 bit olan kişiler veya  işlemcisi 18F serisinden olanlar derleme için MPASM assmbler'ını kullanmak zorundadırlar. Bu nedenle sigorta ayarları formatıda, MPASM ye uygun verilmelidir.
Bu formatı görmek için PBP klasörü içinde yer alan işlemci.INC dosyasına bakmanız yeterlidir. Mesela 16f88.INC gibi
Örnek olarak 16F88 işlemcisinin INC dosyasına bakalım.Alt satırlara doğru şunları göreceksiniz;

__config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF

bazen bu satırlar 3 tane bazen 2 tane olabilir. Bu size genel yaım formatını göstermektedir ve ASM komutu olarak verilmelidir. Yani aşağıdaki şekilde;
ASM
__config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
ENDASM
şeklinde verilmesi uygun olur.
Bu ayarları programa yazdığınız zaman işlemci.INC dosyasında ki aynı satırları noktalı virgül ile kapatıp geri kayıt etmeniz gerekir. AKsi halde derleme esnasında hem programa yazılan sigorta ayarları hemde INC dosyasındaki aynı satırlar değerlendirileceği için derleyici aynı işi iki defa yaptığına dair hata verir. Burası önemlidir. Kapatma işlemi noktalı virgül ile yapılmalıdır. ASM satırları yalnızca noktalı virgül ile kapatılırlar.

Şimdi farklı ayarları nereden bulacağımıza bakalım isterseniz.
MPASM klasörünün içinde Pişlemci.INC dosyasına bakmak gerekir. Mesela P16F88.INC gibi
Dosyanın en altına doğru bütün sigorta ayarları detaylı olarak verilmiştir. Oradaki ayarları kullanabilirsiniz.

Şİmdilik aklıma gelenler bunlar. Umarım bir faydası dokunur.

Ete

mehmetemin

Kıymetli ustam paylaşımlarınız için daima çok teşekkürler ederim.

ete

Pek çok kişi burada yazaılı olan açıklamaları okumasına ve uygulamasına rağmen hala derleme yapamadıklarını belirtmektedirler.

Özellikle derleme esnasında alınan "Illegal Opcode" hatası tamamen MPASM sigorta ayarları ile PMASM (PBP assembler) sigorta ayarlarının bir biri ile uyuşmamasından kaynaklanmaktadır.
Bu nedenle bu açıklamayı yeniden detaylı olarak vermek istiyorum.
Kullandığımız derleyici PBP derleyicisidir. Bu derleyici derleme yaparken bir Assembler yardımcı prograöı kullanmak zorunda.
Bunu kendi assembleri olan PM assmebler kullanır ise yada kullanacak ise sigorta ayarlarınız 32 bit makinaya uygun sigorta aayrları şeklinde verilmelidir. Örnek verecek olur isek 16F628A işlemci için bu ayarlar tipik olarak aşaıdaki şekildedir.
@ DEVICE pic16F628A                                                   
@ DEVICE pic16F628A, WDT_OFF             
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT             
@ DEVICE pic16F628A, PROTECT_ON


Şayet derleme işlemi MPASM kullanarak yapılacak ise bu seferde sigorta ayarları bu sisteme uygun verilmelidir.
Peki hangisi ile derleme yapılacağına kim nasıl karar veriyor. Bu karaı makinanızın kaç bit çalıştığı belirliyor aslında.
PC şayet 32 bit ise PM assembler ile derleme yapılacak demektir. Bu zaten default seçimdir herhangi bir ayar gerektirmiyor.
PC şayet 64 bit ise MPASM ile derleme yapılmasını gerektirir. Bu durumda MCS içinde View menüsünde Compiler and Program Options seçeneği altında yer alan Assembler seçeneğinde sağdaki Use MPASM kutusu tıklanarak seçili hale getirilmesi gerekir.
Bu seçeneği seçtiğiniz zaman yapmanız gereken bir iki şey daha var. Yine MCS içinde sanki bir bas dosyası açıyormuş gibi,
C: ana klasörü altında yer alan PBP klasörü içinde 16F628A.INC  (yada siz hangiişlemci ile prgram derleyeceksiniz ona ait .INC dosyasını) dosyasını açın. Aşağılarda yer alan,
;        __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF komut satırını  bulun ve benim yaptığım gibi başına ;koyarak satırı iptal edin ve geri SAVE edin.

Programınıza geri dönün ve 32 bit için verilmiş sigorta ayarlarını ya silin yada onlarıda kapatıp etkisiz hale getirin.
Sonra şu satırı ilave ederek MPASM ye uygun sigorta ayarlarını ilave etmiş olun.
@ __config _BODEN_ON & _BOREN_ON & _CP_ON & _DATA_CP_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT
Bu aşamadan sonra artık derleme yapacak hale gelmiş olursunuz. Derle butonuna tıklayın va yapın . Her hangi bir hata mesajı çıkmıyorsa işlem tamam demektir.

Ete

Mustafa48

Ete hocam ben 64 bite yeni geçenlerdenim.  Yukarıdaki işlemleri harfiyen yaptım. 16F628a için tüm ayarlar gayet iyi çalışıyor.
16F88 için ise bir türlü çalıştıramadım. C/PBP içindeki 16f88.inc dosyasında gerekli işlemide yaptım olmadı. çalışmayan ayarlar ise şöyle
DATA_CP_ON  , INTRC_OSC_NOCLKOUT  .  Bu ayarları kaldırınca hata vermiyor fakat 'argument out off range hatası veriyor.
@__ config  _ boden........   sigorta satırını kaldırır isem Argument hatasıda vermiyor.  Aslında işin özünü öğrenmek istiyorum.
Sigorta ayarlarını işlemciler için bence çok önemli . bu işi tam olarak nasıl kavrayacağız. bir çok işlemcinin .inc dosyasını inceledim
datasheet lerine baktım ama tam olarak kavrayamadım.  Paylaşımlarınız için teşekkür ederim

ete

16F88 için olası sigorta ayarları aşağıdaki şekildedir.
@ __CONFIG  _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_IO
@ __CONFIG  _CONFIG2, _IESO_OFF & _FCMEN_OFF

Bunları dene istersen.

işin  özünü daha önce anlatmıştım. Madem ki 64 bit işlemcilerde derleme MPASM kullanılarak yapılıyor. O halde olası sigorta ayarlarını bu klasör içinde aramanız gerekir. Bunun için klasörü açın ve P16F88.INC dosyasını yükleyip (MCS de olabilir yada text editörlede yüklenebilir). Dosyanın alt tarafında bütün sigorta ayarları gösterilmiştir. Oraya bakarak kendi ayarınızı oluşturabilirsiniz.
Unutmayın başka işlemciler için P16Fxxxx.INC veya P18Fxxxx.INC şeklinde işlemci INC dosyasını açıp içinden ayarları alabilirsiniz.

Ete

Mustafa48

Teşekkür ediyorum. MPASM suit altında bulunan xx.ınc dosyalarını inceledim ve tüm sigorta ayarlarını
buldum . Örneğin 16F88 de INTRC_OSC_NOCLKOUT  şeklinde olmadığını   doğrusunun  bu" _INTRC_CLKOUT"
şekilde olduğunu gördüm . MPASM deki bu değerler herkesde farklı değildir umarım

ete


elektro77

;ASM
;   __CONFIG _CONFIG1H, _OSC_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
;   __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
;   __CONFIG _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_OFF_3H
;   __CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
;ENDASM
@__CONFIG _CONFIG1H, _OSC_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
@__CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
@__CONFIG _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
@__CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L

Yukarıdaki satırlarla 64 bit işletim sisteminde 18F4520 de, @ ile başlayanlar derlemede aşağıdaki hatayı veriyor.


fakat asm/endasm içinde olanlarda sorun yok. INC dosyalarında gerekli tüm değişiklikleri yaptım.
yukarıdaki notlara göre @ ile başlayanlarda da hatasız derlenebilmesi lazım değil mi. Yoksa biryerlerde hatamı yapıyorum.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Verilen hata mesajı değil ikaz mesajı. Doğrusunu yapmak için @ işereti ile _CONFIG... ile başlayan satır arasına bir boşluk ekleyin. Şöyle olmalı @ _CONFIG  , sizinki @_CONFIG şeklinde.


Ete

elektro77

@ __CONFIG _CONFIG1H, _OSC_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
@ __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
@ __CONFIG _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
@ __CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
boşluk koymak sorunu düzeltti teşekkür ederim.
Fakat
yukarıdaki ayarlarla 18f4520 de aşağıdaki hatayı alıyorum.
Error:Overwriting previous adress contents. (önceki adres içeriğinin üzerine yazma hatası)

Inc dosyasından aşağıdaki satırları kapattım. Anlamadığım şey kulandığım sigorta satırlarımı kapatmalıyım. yoksa hepsinimi?

;==========================================================================
;
;       Configuration Bits
;
;   NAME            Address
;   CONFIG1H        300001h
;   CONFIG2L        300002h
;   CONFIG2H        300003h
;   CONFIG3H        300005h
;   CONFIG4L        300006h
;   CONFIG5L        300008h
;   CONFIG5H        300009h
;   CONFIG6L        30000Ah
;   CONFIG6H        30000Bh
;   CONFIG7L        30000Ch
;   CONFIG7H        30000Dh
;
;==========================================================================

; The following is an assignment of address values for all of the
; configuration registers for the purpose of table reads
_CONFIG1H        EQU  H'300001'
_CONFIG2L        EQU  H'300002'
_CONFIG2H        EQU  H'300003'
_CONFIG3H        EQU  H'300005'
_CONFIG4L        EQU  H'300006'
_CONFIG5L        EQU  H'300008'
_CONFIG5H        EQU  H'300009'
_CONFIG6L        EQU  H'30000A'
_CONFIG6H        EQU  H'30000B'
_CONFIG7L        EQU  H'30000C'
_CONFIG7H        EQU  H'30000D'

;----- CONFIG1H Options --------------------------------------------------
_OSC_LP_1H           EQU  H'F0'    ; LP oscillator
_OSC_XT_1H           EQU  H'F1'    ; XT oscillator
_OSC_HS_1H           EQU  H'F2'    ; HS oscillator
_OSC_RC_1H           EQU  H'F3'    ; External RC oscillator, CLKO function on RA6
_OSC_EC_1H           EQU  H'F4'    ; EC oscillator, CLKO function on RA6
_OSC_ECIO6_1H        EQU  H'F5'    ; EC oscillator, port function on RA6
_OSC_HSPLL_1H        EQU  H'F6'    ; HS oscillator, PLL enabled (Clock Frequency = 4 x FOSC1)
_OSC_RCIO6_1H        EQU  H'F7'    ; External RC oscillator, port function on RA6
_OSC_INTIO67_1H      EQU  H'F8'    ; Internal oscillator block, port function on RA6 and RA7
_OSC_INTIO7_1H       EQU  H'F9'    ; Internal oscillator block, CLKO function on RA6, port function on RA7

_FCMEN_OFF_1H        EQU  H'BF'    ; Fail-Safe Clock Monitor disabled
_FCMEN_ON_1H         EQU  H'FF'    ; Fail-Safe Clock Monitor enabled

_IESO_OFF_1H         EQU  H'7F'    ; Oscillator Switchover mode disabled
_IESO_ON_1H          EQU  H'FF'    ; Oscillator Switchover mode enabled

;----- CONFIG2L Options --------------------------------------------------
_PWRT_ON_2L          EQU  H'FE'    ; PWRT enabled
_PWRT_OFF_2L         EQU  H'FF'    ; PWRT disabled

_BOREN_OFF_2L        EQU  H'F9'    ; Brown-out Reset disabled in hardware and software
_BOREN_ON_2L         EQU  H'FB'    ; Brown-out Reset enabled and controlled by software (SBOREN is enabled)
_BOREN_NOSLP_2L      EQU  H'FD'    ; Brown-out Reset enabled in hardware only and disabled in Sleep mode (SBOREN is disabled)
_BOREN_SBORDIS_2L    EQU  H'FF'    ; Brown-out Reset enabled in hardware only (SBOREN is disabled)

_BORV_0_2L           EQU  H'E7'    ; Maximum setting
_BORV_1_2L           EQU  H'EF'    ; 
_BORV_2_2L           EQU  H'F7'    ; 
_BORV_3_2L           EQU  H'FF'    ; Minimum setting

;----- CONFIG2H Options --------------------------------------------------
_WDT_OFF_2H          EQU  H'FE'    ; WDT disabled (control is placed on the SWDTEN bit)
_WDT_ON_2H           EQU  H'FF'    ; WDT enabled

_WDTPS_1_2H          EQU  H'E1'    ; 1:1
_WDTPS_2_2H          EQU  H'E3'    ; 1:2
_WDTPS_4_2H          EQU  H'E5'    ; 1:4
_WDTPS_8_2H          EQU  H'E7'    ; 1:8
_WDTPS_16_2H         EQU  H'E9'    ; 1:16
_WDTPS_32_2H         EQU  H'EB'    ; 1:32
_WDTPS_64_2H         EQU  H'ED'    ; 1:64
_WDTPS_128_2H        EQU  H'EF'    ; 1:128
_WDTPS_256_2H        EQU  H'F1'    ; 1:256
_WDTPS_512_2H        EQU  H'F3'    ; 1:512
_WDTPS_1024_2H       EQU  H'F5'    ; 1:1024
_WDTPS_2048_2H       EQU  H'F7'    ; 1:2048
_WDTPS_4096_2H       EQU  H'F9'    ; 1:4096
_WDTPS_8192_2H       EQU  H'FB'    ; 1:8192
_WDTPS_16384_2H      EQU  H'FD'    ; 1:16384
_WDTPS_32768_2H      EQU  H'FF'    ; 1:32768

;----- CONFIG3H Options --------------------------------------------------
_CCP2MX_PORTBE_3H    EQU  H'FE'    ; CCP2 input/output is multiplexed with RB3
_CCP2MX_PORTC_3H     EQU  H'FF'    ; CCP2 input/output is multiplexed with RC1

_PBADEN_OFF_3H       EQU  H'FD'    ; PORTB<4:0> pins are configured as digital I/O on Reset
_PBADEN_ON_3H        EQU  H'FF'    ; PORTB<4:0> pins are configured as analog input channels on Reset

_LPT1OSC_OFF_3H      EQU  H'FB'    ; Timer1 configured for higher power operation
_LPT1OSC_ON_3H       EQU  H'FF'    ; Timer1 configured for low-power operation

_MCLRE_OFF_3H        EQU  H'7F'    ; RE3 input pin enabled; MCLR disabled
_MCLRE_ON_3H         EQU  H'FF'    ; MCLR pin enabled; RE3 input pin disabled

;----- CONFIG4L Options --------------------------------------------------
_STVREN_OFF_4L       EQU  H'FE'    ; Stack full/underflow will not cause Reset
_STVREN_ON_4L        EQU  H'FF'    ; Stack full/underflow will cause Reset

_LVP_OFF_4L          EQU  H'FB'    ; Single-Supply ICSP disabled
_LVP_ON_4L           EQU  H'FF'    ; Single-Supply ICSP enabled

_XINST_OFF_4L        EQU  H'BF'    ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
_XINST_ON_4L         EQU  H'FF'    ; Instruction set extension and Indexed Addressing mode enabled

_DEBUG_ON_4L         EQU  H'7F'    ; Background debugger enabled, RB6 and RB7 are dedicated to In-Circuit Debug
_DEBUG_OFF_4L        EQU  H'FF'    ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins

;----- CONFIG5L Options --------------------------------------------------
_CP0_ON_5L           EQU  H'FE'    ; Block 0 (000800-001FFFh) code-protected
_CP0_OFF_5L          EQU  H'FF'    ; Block 0 (000800-001FFFh) not code-protected

_CP1_ON_5L           EQU  H'FD'    ; Block 1 (002000-003FFFh) code-protected
_CP1_OFF_5L          EQU  H'FF'    ; Block 1 (002000-003FFFh) not code-protected

_CP2_ON_5L           EQU  H'FB'    ; Block 2 (004000-005FFFh) code-protected
_CP2_OFF_5L          EQU  H'FF'    ; Block 2 (004000-005FFFh) not code-protected

_CP3_ON_5L           EQU  H'F7'    ; Block 3 (006000-007FFFh) code-protected
_CP3_OFF_5L          EQU  H'FF'    ; Block 3 (006000-007FFFh) not code-protected

;----- CONFIG5H Options --------------------------------------------------
_CPB_ON_5H           EQU  H'BF'    ; Boot block (000000-0007FFh) code-protected
_CPB_OFF_5H          EQU  H'FF'    ; Boot block (000000-0007FFh) not code-protected

_CPD_ON_5H           EQU  H'7F'    ; Data EEPROM code-protected
_CPD_OFF_5H          EQU  H'FF'    ; Data EEPROM not code-protected

;----- CONFIG6L Options --------------------------------------------------
_WRT0_ON_6L          EQU  H'FE'    ; Block 0 (000800-001FFFh) write-protected
_WRT0_OFF_6L         EQU  H'FF'    ; Block 0 (000800-001FFFh) not write-protected

_WRT1_ON_6L          EQU  H'FD'    ; Block 1 (002000-003FFFh) write-protected
_WRT1_OFF_6L         EQU  H'FF'    ; Block 1 (002000-003FFFh) not write-protected

_WRT2_ON_6L          EQU  H'FB'    ; Block 2 (004000-005FFFh) write-protected
_WRT2_OFF_6L         EQU  H'FF'    ; Block 2 (004000-005FFFh) not write-protected

_WRT3_ON_6L          EQU  H'F7'    ; Block 3 (006000-007FFFh) write-protected
_WRT3_OFF_6L         EQU  H'FF'    ; Block 3 (006000-007FFFh) not write-protected

;----- CONFIG6H Options --------------------------------------------------
_WRTC_ON_6H          EQU  H'DF'    ; Configuration registers (300000-3000FFh) write-protected
_WRTC_OFF_6H         EQU  H'FF'    ; Configuration registers (300000-3000FFh) not write-protected

_WRTB_ON_6H          EQU  H'BF'    ; Boot block (000000-0007FFh) write-protected
_WRTB_OFF_6H         EQU  H'FF'    ; Boot block (000000-0007FFh) not write-protected

_WRTD_ON_6H          EQU  H'7F'    ; Data EEPROM write-protected
_WRTD_OFF_6H         EQU  H'FF'    ; Data EEPROM not write-protected

;----- CONFIG7L Options --------------------------------------------------
_EBTR0_ON_7L         EQU  H'FE'    ; Block 0 (000800-001FFFh) protected from table reads executed in other blocks
_EBTR0_OFF_7L        EQU  H'FF'    ; Block 0 (000800-001FFFh) not protected from table reads executed in other blocks

_EBTR1_ON_7L         EQU  H'FD'    ; Block 1 (002000-003FFFh) protected from table reads executed in other blocks
_EBTR1_OFF_7L        EQU  H'FF'    ; Block 1 (002000-003FFFh) not protected from table reads executed in other blocks

_EBTR2_ON_7L         EQU  H'FB'    ; Block 2 (004000-005FFFh) protected from table reads executed in other blocks
_EBTR2_OFF_7L        EQU  H'FF'    ; Block 2 (004000-005FFFh) not protected from table reads executed in other blocks

_EBTR3_ON_7L         EQU  H'F7'    ; Block 3 (006000-007FFFh) protected from table reads executed in other blocks
_EBTR3_OFF_7L        EQU  H'FF'    ; Block 3 (006000-007FFFh) not protected from table reads executed in other blocks

;----- CONFIG7H Options --------------------------------------------------
_EBTRB_ON_7H         EQU  H'BF'    ; Boot block (000000-0007FFh) protected from table reads executed in other blocks
_EBTRB_OFF_7H        EQU  H'FF'    ; Boot block (000000-0007FFh) not protected from table reads executed in other blocks


;----- DEVID Equates --------------------------------------------------
_DEVID1          EQU  H'3FFFFE'
_DEVID2          EQU  H'3FFFFF'

;----- IDLOC Equates --------------------------------------------------
_IDLOC0          EQU  H'200000'
_IDLOC1          EQU  H'200001'
_IDLOC2          EQU  H'200002'
_IDLOC3          EQU  H'200003'
_IDLOC4          EQU  H'200004'
_IDLOC5          EQU  H'200005'
_IDLOC6          EQU  H'200006'
_IDLOC7          EQU  H'200007'

        LIST
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Hataya bakılırsa PBP klasörü içinde yer alan Pic18F4520.INC dosyasındaki satırları kapatmamışsın.
Başka bir INC dosyasında yada Başka bir işlemciye ait dosyadaki satırları kapatmış olabilirsin.

Zaten verdiğin INC dosyası MPASM içindeki dosya bunda kapattı isen yanlış yeri kapatmışsın.

Ete

elektro77

Evet haklıymışsınız Ete hocam yanlış picin ayarlarını kapatmışım.
Fakat mpasm içinden de aşağıdaki satırları kapatmaz isem bu sefer başka hatalar veriyor.
Mpasm den aşağıdaki satırları ve pbp ınc lerinden  4520 config satırlarını kapatınca hatasız derleme yapabildim.

;==========================================================================
;
;       Configuration Bits
;
;   NAME            Address
;   CONFIG1H        300001h
;   CONFIG2L        300002h
;   CONFIG2H        300003h
;   CONFIG3H        300005h
;   CONFIG4L        300006h
;   CONFIG5L        300008h
;   CONFIG5H        300009h
;   CONFIG6L        30000Ah
;   CONFIG6H        30000Bh
;   CONFIG7L        30000Ch
;   CONFIG7H        30000Dh
;
;==========================================================================
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Sistemi çok iyi anlamadın sanırım.
Derleme esnasında derleyici aşağıdakileri teker teker kontrol ediyor.
1. Program içindeki sigorta ayarlarını
2. PBP klasörü içindeki INC dosyasındaki sigorta ayarlarını
3. MPASM içindeki INC dosyasındaki sigorta ayarlarını. Bu sonuncudakini yanlızca karşılaştırma yapmak için kullanıyor. Yani programda vermiş isen bu üçüncü dosyadakilerle eşleşen varmı diye bakıyor.
Sonuç olarak 1 ve 2 den birinde sigorta ayarı verilmeli ama yalnızca birinde verilmelidir.
3. cü dekilerle karşılaştırıp hangilerinin aktif edileceğine karar veriyor derleyici.

İlk iki noktada aynı sigorta ayarını ikinci defa verirsen owerwriting hatasını veriyor Yani öncekinin üzerine yazıyorum diyor.

MPASM deki INC dosyasına kesinlikle dokunmaman gerekiyor. Kapalı olanları adamlar kapatmış zaten. Sen oynarsan işin temeli bozulmuş olacaktır. Bu başka hataları dolaylı yoldan ortadan kaldırmak gibi bir şey oluyor. Bence yanlış iş yapıyorsun.
Ancak MPASM içindeki P18f4520.INC dosyasına bakıyorum "Configuration Bits" başlığı altındaki satırlar zaten kapalı orada. Sen bir şekilde önce açmışsın sonra kapamışsın sanırım. O satırlar bitlerin adres bilgisini kullanıcılara vermek için koyulmuş ve derlemede kullanılmayan satırlar dolaysıyla zaten kapalı. Her neyse yaptığın iş doğru diyebliriz şu anda. Başka bir şeye dokunma ve yaptığın işe de dikkat et lütfen.

Ete

elektro77

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

silver_wolf

Selam @ete
PIC12F683 için aşağıdaki kodu yazdım ama include dosyasını değiştirmedim. MPLABX ve PBPX 3.0.7.1 kodu derledi.

Acaba PBP 2.60'ta da derler mi?

Saygılar

#config
   __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF
#endconfig

Powered by EzPortal