Dökümanlar - Makaleler ve Projeler => Önemli Bilgiler => Konuyu başlatan: ete - 21 Nisan 2014, 19:35:20
Başlık: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 21 Nisan 2014, 19:35:20
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;
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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: mehmetemin - 22 Nisan 2014, 10:44:00
Kıymetli ustam paylaşımlarınız için daima çok teşekkürler ederim.
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 03 Haziran 2016, 12:22:40
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.
Ş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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: Mustafa48 - 25 Temmuz 2016, 16:58:22
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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 25 Temmuz 2016, 19:58:56
16F88 için olası sigorta ayarları aşağıdaki şekildedir.
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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: Mustafa48 - 26 Temmuz 2016, 09:56:58
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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 26 Temmuz 2016, 10:32:26
Elbette farklı olamaz. Hepsinde aynıdır. Ete
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: elektro77 - 28 Ocak 2020, 13:17:56
Yukarıdaki satırlarla 64 bit işletim sisteminde 18F4520 de, @ ile başlayanlar derlemede aşağıdaki hatayı veriyor. (https://i.ibb.co/zJ0s4pX/derleme-hatas.jpg) (https://ibb.co/zJ0s4pX)
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.
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 28 Ocak 2020, 14:02:43
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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: elektro77 - 03 Şubat 2020, 09:18:44
@ __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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 03 Şubat 2020, 09:43:30
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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: elektro77 - 03 Şubat 2020, 09:55:53
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.
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 03 Şubat 2020, 10:29:50
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
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: elektro77 - 03 Şubat 2020, 10:41:44
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: zeka43 - 11 Ocak 2025, 00:14:41
Hocam KT1 VAR PORTA.0 gibi bir tanımlama için derleyici hata veriyor acaba b.sayar 64bit olduğu için olabilir mi SYMBOL KT1 VAR PORTA yazınca hata vermiyor ama doğrusu ne olmalıdır
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 11 Ocak 2025, 11:26:00
Sorunu anlamak için hata veriyor demek yeterli değil . Hatayı da söylemen gerek. Böylece sorunun ne olduğunu anlayabilirdik. Hatta, Programın değişken tanımlama kısmınıda buraya koysaydın belkide senin göremediğin bir sorunu biz görebilirdik. Normal şartlarda bu tür tanımlama hata verdirmez. Ama derleyicinin kullandığı bazı sistem değişkenleri vardır ve bunları sen değişken adı olarak kullanırsan derlemede hata verir. KT1 de bunlardan birisi olabilir ama hiç duymadım bu ismi. Zaten Symbol olarak kullanınca hata vermiyor ise bu alternatifi elemek daha doğru olur.
İşin doğrusuna gelince, İşlemci pinlerine isim verirken SYMBOL kullanmak en doğrusudur.
Ete
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: zeka43 - 11 Ocak 2025, 20:49:35
TRISB = %11111111 ' Tüm PORTB pinlerini giriş olarak ayarla TRISA = %00011100 ' PORTA'nın 2, 3 ve 4. pinlerini giriş olarak ayarla PORTA = 0 ' PORTA'yı sıfırla
' Pinlere ve değişkenlere atamalar SYMBOL R = PORTA.2 ' 3 Faz Kontrol SYMBOL S = PORTA.3 ' 3 Faz Kontrol SYMBOL T = PORTA.4 ' 3 Faz Kontrol
SYMBOL SW0 = PORTB.0 ' KAT 0 Switch SYMBOL SW1 = PORTB.1 ' KAT 1 Switch SYMBOL SW2 = PORTB.2 ' KAT 2 Switch SYMBOL SW3 = PORTB.3 ' KAT 3 Switch
SYMBOL KT0 = PORTB.7 ' KAT 0 Buton SYMBOL KT1 = PORTB.6 ' KAT 1 Buton SYMBOL KT2 = PORTB.5 ' KAT 2 Buton SYMBOL KT3 = PORTB.4 ' KAT 3 Buton
SYMBOL INIS = PORTA.0 ' Motor İniş (önceden IN olarak tanımlanıyordu) SYMBOL CIKIS = PORTA.1 ' Motor Çıkış (önceden CIK olarak tanımlanıyordu)
' Buton Kontrol Döngüsü BUTON: INIS = 0 ' Motoru sıfırla CIKIS = 0 ' Motoru sıfırla IF KT0 = 1 THEN KAT0 IF KT1 = 1 THEN KAT1 IF KT2 = 1 THEN KAT2 IF KT3 = 1 THEN KAT3 GOTO BUTON
' KAT 0 Kontrolü KAT0: IF SW0 = 1 AND R = 1 AND S = 1 AND T = 1 THEN INIS = 1 ' Motor İniş ENDIF IF SW0 = 0 THEN GOTO BUTON GOTO KAT0
' KAT 1 Kontrolü KAT1: IF SW0 = 1 THEN SWC1 IF SW2 = 1 OR SW3 = 1 THEN SWIN1 GOTO BUTON
' KAT 2 Kontrolü KAT2: IF SW0 = 1 OR SW1 = 1 THEN SWC2 IF SW3 = 1 THEN SWIN2 GOTO BUTON
' KAT 3 Kontrolü KAT3: IF SW3 = 1 AND R = 1 AND S = 1 AND T = 1 THEN CIKIS = 1 ' Motor Çıkış ENDIF IF SW3 = 0 THEN GOTO BUTON GOTO KAT3
' KAT 1 Switch Kontrolü SWC1: IF R = 1 AND S = 1 AND T = 1 THEN CIKIS = 1 ' Motor Çıkış ENDIF IF SW1 = 0 THEN GOTO BUTON GOTO SWC1
' KAT 2 Switch Kontrolü SWC2: IF R = 1 AND S = 1 AND T = 1 THEN CIKIS = 1 ' Motor Çıkış ENDIF IF SW2 = 0 THEN GOTO BUTON GOTO SWC2
' KAT 1 Switch In Kontrolü SWIN1: IF R = 1 AND S = 1 AND T = 1 THEN INIS = 1 ' Motor İniş ENDIF IF SW1 = 0 THEN GOTO BUTON GOTO SWIN1
' KAT 2 Switch In Kontrolü SWIN2: IF R = 1 AND S = 1 AND T = 1 THEN INIS = 1 ' Motor İniş ENDIF IF SW2 = 0 THEN GOTO BUTON GOTO SWIN2 END
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: zeka43 - 11 Ocak 2025, 20:57:40
böyle yapınca bu hataları veriyor
ERROR Line 48: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 50: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 52: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 54: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 62: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 66: ID SWC1 is not a LABEL. (ASANSOR.pbp) ERROR Line 67: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 69: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 73: ID SWC2 is not a LABEL. (ASANSOR.pbp) ERROR Line 74: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 76: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 84: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 92: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 93: ID SWC1 is not a LABEL. (ASANSOR.pbp) ERROR Line 100: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 101: ID SWC2 is not a LABEL. (ASANSOR.pbp) ERROR Line 108: ENDIF without a matching IF..THEN. (ASANSOR.pbp) ERROR Line 116: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
@ ;__config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRT_ON & _MCLR_OFF & _LVP_OFF & _PROTECT_ON & _BOD_OFF
TRISB=%11111111
TRISA=%00011100
PORTA=0
CMCON=7
OPTION_REG.7=0
R var PORTA.2 '3 FAZ KONTROL
S var PORTA.3 '3 FAZ KONTROL
T var PORTA.4 '3 FAZ KONTROL
SW0 var PORTB.0 'KAT 0 SWİCH
SW1 var PORTB.1 'KAT 1 SWİCH
SW2 var PORTB.2 'KAT 2 SWİCH
SW3 var PORTB.3 'KAT 3 SWİCH
KT0 var PORTB.7 'KAT 0 BUTON
KT1 var PORTB.6 'KAT 1 BUTON
KT2 var PORTB.5 'KAT 2 BUTON
KT3 var PORTB.4 'KAT 3 BUTON
IN VAR PORTA.0 'MOTOR İNİŞ
CIK VAR PORTA.1 'MOTOR ÇIKIŞ
PAUSE 200
BUTON:
IN=0
CIK=0
IF KT0=1 THEN KAT0
IF KT1=1 THEN KAT1
IF KT2=1 THEN KAT2
IF KT3=1 THEN KAT3
GOTO BUTON
KAT0:
IF SW0=1 AND R=1 AND S=1 AND T=1 THEN
IN=1
ENDIF
IF SW0=0 THEN BUTON
GOTO KAT0
KAT1:
IF SW0=1 THEN SVC1
IF SW2=1 OR SW3=1 THEN SWIN1
GOTO BUTON
KAT2:
IF SW0=1 OR SW1=1 THEN SVC2
IF SW3=1 THEN SWIN2
GOTO BUTON
KAT3:
IF SW3=1 AND R=1 AND S=1 AND T=1 THEN
CIK=1
ENDIF
IF SW3=0 THEN BUTON
GOTO KAT3
SVC1:
IF R=1 AND S=1 AND T=1 THEN
CIK=1
ENDIF
IF SW1=0 THEN BUTON
GOTO SVC1
SVC2:
IF R=1 AND S=1 AND T=1 THEN
CIK=1
ENDIF
IF SW2=0 THEN BUTON
GOTO SVC2
SWIN1:
IF R=1 AND S=1 AND T=1 THEN
IN=1
ENDIF
IF SW1=0 THEN BUTON
GOTO SWIN1
SWIN2:
IF R=1 AND S=1 AND T=1 THEN
IN=1
ENDIF
IF SW2=0 THEN BUTON
GOTO SWIN2
END
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 11 Ocak 2025, 21:38:05
Sigorta ayarları ile alakası olmayan bir hata seninkisi. İlk hataya birlikte bakalım; IF KT0=1 THEN KAT0 bu satırda THEN komutundan sonra bir komut veya bilgi verirsen artık ENDIF kullanamazsın. Kural böyle. Bu satır iki şekilde doğru yazılabilir Birincisi IF KT0=1 THEN KAT0
İkincisi IF KT0=1 THEN GOTO KAT0 ENDIF İstediğin şekilde kullanabilirsin. Birincisi daha doğru olacaktır.
KAT1: IF SW0=1 THEN SWC1 satırındaki hata Etiket adın SVC1 iken sen buraya SWC1 yazıyorsun. Ya SVC1'i SWC1 şeklinde düzelt yada SWC1 yazısını SVC1 olarak düzelt
Sigorta ayarlarını kapatmışsın bu ayarlar olmadan o işlemci çalışmaz. BUTON: isimli etiketten bir önceki satıra PAUSE 200 ekle ki registerlerin yerleştirilmesi için işlemciye zaman vermiş olasın.
Toparlarsak hataların büyük kısmı fazladan kullandığın ENDIF komutu yüzünden onları silersen bir ksımından kurtulacaksın. Hataların geri kalanı ise SVCx şeklindeki etiket isimlerine SWCx şeklinde komutla ulaşmaya çalışmandan kaynaklanıyor. w harfini V olarak değiştir onlarda düzelecektir.
Ete
not : yukarıda verdiğin programı hatasız derleyen ile değiştirdim. Yalnızca hata veren yerleri düzelterek yaptım bunu.
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: zeka43 - 11 Ocak 2025, 23:55:49
Değerli bilgileriniz için çok teşekkür ederim. Ayrıca benim başka sorunlarım da var biraz uğraşacağım sanırım. Run etmek istediğimde 16f628 model not supported The ICD model selected is not supported bu this version of microcode studio. İf you would like tobuse this ICD model, you need tonpurchase microcode studio plus. You May compile without ICD by using compile only F10
Başlık: Ynt: Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?
Gönderen: ete - 13 Ocak 2025, 11:13:57
Hem derleyip hemde Debug (hata ayıklama işlemi) mu yapmak istiyorsun. Elinde ne var ne yapmak istiyorusn açıklamadığın için her şeyi sormak zorunda kalıyorum. Buraya bir mesaj koyduğun zaman etraflıca açıklaman gerekiyorki bizde ona göre yorum yapalım. Başlangıçta hata veriyor dedin çıktın ve kendince bir sebep ortaya koydun ve sonrandan istediğim bilgileri verince işin o kısmını kolayca atladık ve sorunun hiçde senin düşündüğün gibi olmadığını hep beraber anlamış olduk.
Bu son mesajını yazarken şöyle yazman gerekirdi tabiiki düşündüğüm yada tahminim doğru ise!!!.
Elimde ICD debug devresi var ve programı hem derleyip hemde hata ayıklama işlemini yapmak istyorum ama derleyici bu konuda hata veriyor. Hata da şu,.xxxxxxxx Şimdi bu noktada elinde gerçekten ICD modul varmı yoksa programı derlemek için bilmediğinden dolayı yanlış butonamı basıyorsun işte bunu tahmin etmek zor benim açımdan.
Ben hiç ICD kullanmadım. Detaylarını bilemiyorum ancak çok da gerekli olduğunu sanmıyorum. Programı normal F10 (Compile) butonu ile derleyip HEX dosyasını elde ettikten sonra onu ya deney boardına kurduğun gerçek devrede denersin yada Proteus programını kullanarak bilgisayarda simule ederek denersin. Varsa hataların anında ortaya çıkacaktır zaten.