pic basic pro pic18f452 fuse config sigorta ayarları
Pic18f serisi için proton basic ve ccs c kullanıyorum. Geçen yıl pbp ile pic16f887 için kodlama yapmıştım. Artık pic16f887 yetersiz kaldığı için pic18f452 kullanmaya karar verdim. Pic basic pro ile pic18f452 kullanabilmek için mcs ayarları ve inc dosyaları ayarları yapılması gerekiyor. Bu bilgilerden yola çıkarak pic18f4520 veya pic18f4550 gibi işlemcileri pic basic pro kullanabilirsiniz.
1- Öncelikle c:pbp klasörü içindeki kullanacağımız işlemcinin inc dosyasını düzenlemek gerekiyor. Ben pic18f452 kullandığım için 18F452.INC dosyasını notepad ile açıyoruz ve aşağıdaki satırlar karşımıza çıkar.
Görüldüğü gibi config satırlarını ; işareti ile kapattım. Neden derseniz mcs önce bu dosyaya bakıyor. Biz bu dosyayı kullanmayacağız. Biz proteus içindeki mpasm klasöründeki 18F452.INC dosyasını kullanacağız. Yani proteusu bilgisayarınıza kurmanızda fayda var. __Config satırlarını ; ile kapatıp dosyayı kaydedip kapatınız.
;****************************************************************
;* 18F452.INC *
;* *
;* By : Leonard Zerman, Jeff Schmoyer *
;* Notice : Copyright (c) 2005 microEngineering Labs, Inc. *
;* All Rights Reserved *
;* Date : 12/16/05 *
;* Version : 2.47 *
;* Notes : *
;****************************************************************
NOLIST
ifdef PM_USED
LIST
"Error: PM does not support this device. Use MPASM."
NOLIST
else
LIST
LIST p = 18F452, r = dec, w = -311, w = -230, f = inhx32
INCLUDE "P18F452.INC" ; MPASM Header
;__CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H
;__CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
;__CONFIG _CONFIG4L, _LVP_OFF_4L
NOLIST
endif
LIST
EEPROM_START EQU 0F00000h
BLOCK_SIZE EQU 8
2- Şimdi işler biraz karışmaya başlıyor :) c:program files içindeki proteus klasörü içindeki mpasm klasörünü buluyoruz. Bendeki dizin şu şekilde:
C:\Program Files\Labcenter Electronics\Proteus 8 Professional\Tools\MPASM
MPASM klasöründeki 18F452.INC dosyasını notepad ile açıyoruz ve dosyanın sonundaki bütün config ayarlarını açıksa ; ile kapatıyoruz. Bu satırların altındakiler kapatılır dosya kaydedilir ve kapatılır.
;----- CONFIG1H Options --------------------------------------------------
;----- CONFIG2L Options --------------------------------------------------
;----- CONFIG2H Options --------------------------------------------------
;----- CONFIG3H Options --------------------------------------------------
;----- CONFIG4L Options --------------------------------------------------
;----- CONFIG5L Options --------------------------------------------------
;----- CONFIG5H Options --------------------------------------------------
;----- CONFIG6L Options --------------------------------------------------
;----- CONFIG6H Options --------------------------------------------------
;----- CONFIG7L Options --------------------------------------------------
;----- CONFIG7H Options --------------------------------------------------
Bendeki düzenlediğim dosya satırları aşağıdaki gibi:
;----- CONFIG1H Options --------------------------------------------------
;_LP_OSC EQU H'F8' ; LP oscillator
;_LP_OSC_1H EQU H'F8' ; LP oscillator
;_XT_OSC EQU H'F9' ; XT oscillator
;_XT_OSC_1H EQU H'F9' ; XT oscillator
;_HS_OSC EQU H'FA' ; HS oscillator
_HS_OSC_1H EQU H'FA' ; HS oscillator
;_RC_OSC EQU H'FB' ; RC oscillator
;_RC_OSC_1H EQU H'FB' ; RC oscillator
;_EC_OSC EQU H'FC' ; EC oscillator w/ OSC2 configured as divide-by-4 clock output
;_EC_OSC_1H EQU H'FC' ; EC oscillator w/ OSC2 configured as divide-by-4 clock output
;_ECIO_OSC EQU H'FD' ; EC oscillator w/ OSC2 configured as RA6
;_ECIO_OSC_1H EQU H'FD' ; EC oscillator w/ OSC2 configured as RA6
;_HSPLL_OSC EQU H'FE' ; HS oscillator with PLL enabled/Clock frequency = (4 x FOSC)
;_HSPLL_OSC_1H EQU H'FE' ; HS oscillator with PLL enabled/Clock frequency = (4 x FOSC)
;_RCIO_OSC EQU H'FF' ; RC oscillator w/ OSC2 configured as RA6
;_RCIO_OSC_1H EQU H'FF' ; RC oscillator w/ OSC2 configured as RA6
;_OSCS_ON_1H EQU H'DF' ; Oscillator system clock switch option is enabled (oscillator switching is enabled)
;_OSCS_OFF_1H EQU H'FF' ; Oscillator system clock switch option is disabled (main oscillator is source)
;----- CONFIG2L Options --------------------------------------------------
_PWRT_ON_2L EQU H'FE' ; PWRT enabled
;_PWRT_OFF_2L EQU H'FF' ; PWRT disabled
_BOR_OFF_2L EQU H'FD' ; Brown-out Reset disabled
;_BOR_ON_2L EQU H'FF' ; Brown-out Reset enabled
;_BORV_45_2L EQU H'F3' ; VBOR set to 4.5V
;_BORV_42_2L EQU H'F7' ; VBOR set to 4.2V
;_BORV_27_2L EQU H'FB' ; VBOR set to 2.7V
;_BORV_20 EQU H'FF' ; VBOR set to 2.0V
_BORV_20_2L EQU H'FF' ; VBOR set to 2.0V
;----- 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'F1' ; 1:1
;_WDTPS_2_2H EQU H'F3' ; 1:2
;_WDTPS_4_2H EQU H'F5' ; 1:4
;_WDTPS_8_2H EQU H'F7' ; 1:8
;_WDTPS_16_2H EQU H'F9' ; 1:16
;_WDTPS_32_2H EQU H'FB' ; 1:32
;_WDTPS_64_2H EQU H'FD' ; 1:64
;_WDTPS_128_2H EQU H'FF' ; 1:128
;----- CONFIG3H Options --------------------------------------------------
_CCP2MX_OFF EQU H'FE' ; CCP2 input/output is multiplexed with RB3
_CCP2MX_OFF_3H EQU H'FE' ; CCP2 input/output is multiplexed with RB3
;_CCP2MX_ON EQU H'FF' ; CCP2 input/output is multiplexed with RC1
;_CCP2MX_ON_3H EQU H'FF' ; CCP2 input/output is multiplexed with RC1
;----- CONFIG4L Options --------------------------------------------------
_STVR_OFF_4L EQU H'FE' ; Stack Full/Underflow will not cause RESET
;_STVR_ON_4L EQU H'FF' ; Stack Full/Underflow will cause RESET
_LVP_OFF_4L EQU H'FB' ; Low Voltage ICSP disabled
;_LVP_ON_4L EQU H'FF' ; Low Voltage ICSP 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 (000200-001FFFh) code protected
_CP0_OFF_5L EQU H'FF' ; Block 0 (000200-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-0001FFh) code protected
_CPB_OFF_5H EQU H'FF' ; Boot Block (000000-0001FFh) 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 (000200-001FFFh) write protected
_WRT0_OFF_6L EQU H'FF' ; Block 0 (000200-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-0001FFh) write protected
_WRTB_OFF_6H EQU H'FF' ; Boot Block (000000-0001FFh) 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 (000200-001FFFh) protected from Table Reads executed in other blocks
_EBTR0_OFF_7L EQU H'FF' ; Block 0 (000200-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-0001FFh) protected from Table Reads executed in other blocks
_EBTRB_OFF_7H EQU H'FF' ; Boot Block (000000-0001FFh) not protected from Table Reads executed in other blocks
3- Şimdi bu satırların pbp ve mcs üzerindeki karşılıklarına bakalım. Gördüğünüz gibi her config satırındaki bana lazım olanları asm endasm arasına ekledim. Bütün 18f işlemciler için microchip 18f pdf dosyasını kullanarak fuse ayarlarınızı yapabilirsiniz. Bu kodlar ile pic18f452 portb bütün bitler 1 ve 0 olmaktadır tam bir test kodu yani, 8mhz kristal kullandım. 4mhz için xt açmalısınız MPASM klasöründeki 18F452.INC dosyasından.
ÖRNEK PBP KODU:
asm
__CONFIG _CONFIG1H, _HS_OSC_1H
__CONFIG _CONFIG2L, _BOR_OFF_2L & _BORV_20_2L & _PWRT_ON_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H
__CONFIG _CONFIG3H, _CCP2MX_OFF & _CCP2MX_OFF_3H
__CONFIG _CONFIG4L, _STVR_OFF_4L & _LVP_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, _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
define OSC 8
ADCON1 = 7
TRISA=000000
'TRISB=000000
TRISB = $00
TRISC=000000
TRISD=000000
TRISE=000000
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0
pause 500
BASLA:
PORTB=255
PAUSE 1000
PORTB=0
PAUSE 1000
GOTO BASLA
end
4- Şimdi bütün bu işlemleri yaptıysanız sıra mcs ayarı yapmaya geliyor:
Öncelikle view menüsünden compile and program options içindeki use PBPL seçiniz:
Daha sonra aynı menüden assembler seçilir ve proteus klasöründeki mpasm klasörü find manually ile mcsye gösterilir, use mpasm tiki şeçilip ok yapılır:
Şimdi mcs ile pic18f452 seçip yukarıdaki örnek kodu derlerseniz hex kodu oluşur. Ancak unutmayın 16f serisi için kod derleyeceğiniz zaman use pbpl ve use mpasm tiklerini kapatınız. 16f için bunlara gerek yoktur. Kolay gelsin.
NOT: Bilgisayarım 32 bit olduğu için 64 bit testi yapamadım. Ancak linkte mpasm ile 64 derleme yapılabileceği anlatılmış. Eğer bilgisayarınız 64 bit ise aşağıdaki linkteki bilgileri inceleyiniz:
http://etepic.com/index.php/topic,1687.0.html
Yorumlar
Yorum Gönder