PİC18F2520 AYARLARI

Başlatan kerem, 27 Eylül 2019, 12:21:12

kerem

mrb ete hocam 18f2520 ayarlarını şu şekilde yaptım. ve kücük bir program yaptım ama tam olarak çalışmadı. proteusta çalıştırdığım vakit sürekli olarak porta.0 pini high olarak gözüküyor. program derleniyor ama proteusta hata veriyor. proteus hataları aşağıdadır.yardımcı olursanız sevinirim.hatayı bulamadım


asm
 __CONFIG    _CONFIG1H,  _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
 __CONFIG    _CONFIG2H, _WDT_OFF_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

DEFINE OSC 4
OSCCON=%01100110 
CMCON=7
ADCON1=7

TRISA=%00000000
TRISB=%00000000
TRISC=%00000000
PORTA=0
PORTB=0
PORTC=0
BASLA:
pause 200
IF PORTB.0=1 THEN
HIGH PORTA.0=1
PAUSE 1000
LOW PORTA.0=0
PAUSE 500
WHILE PORTB.0=0 :WEND
ENDIF
GOTO BASLA   
END






ete

#1
Aşağıdaki programı dene bakalım.
TRISB değerine dikkat. PORTB.0 pinine buton bağlamışsın ama programda o pin Çıkış gözüküyor. Halbuki buton pinleri giriş olmalıdır.

ASM
    __CONFIG _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H    
    __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOREN_OFF_2L & _BORV_0_2L
    __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_64_2H
    __CONFIG _CONFIG3H, _CCP2MX_PORTBE_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_OFF_3H
    __CONFIG _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
    
    __CONFIG _CONFIG5L, _CP0_OFF_5L  & _CP1_OFF_5L & _CP2_OFF_5L & _CP0_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
ENDASM

DEFINE OSC 4
OSCCON=%01100100 
CMCON=7
ADCON1=7

TRISA=%00000000
TRISB=%00000001
TRISC=%00000000
PORTA=0
PORTB=0
PORTC=0
BASLA:
pause 200
IF PORTB.0=1 THEN
LATA.0=1
PAUSE 1000
LATA.0=0
PAUSE 500
WHILE PORTB.0=0 :WEND
PAUSE 100
ENDIF
GOTO BASLA  
END

Diğer bir konuda buton pininin boşta bırakılmış olması. Butona basınca Buton pinine HIGH verileceğine göre o pin LOW da beklemeli. Dolayısıyla buton pinin 10K üzerinden GND verilmelidir. Yani Pull-down yapılmalı. Yeri gelmişken belirteyim. Hiç bir zaman Butonları basınca HIGH verecek şekilde kullanmayın. AKsine basınca LOW verecek şekilde kullanın. Böylece özellikle PORTB pinlerinde yer alan dahili Pullup dirençlerinden yararlanabilirsiniz.
Aynı pini Pulluplı kullanmak istersek,
INTCON2.7=0 komutunu eklemen ve buton kontrol satırınıda ,
IF PORTB.0=1 yerine IF PORTB.0=0 şeklinde değiştirmen yeterli olacaktır.
Bu tür yeni nesil işlemcilerde bir port pini giriş ise kontrolü PORTX (PORTA veya PORTB gibi) şeklinde yapılır. Port pini çıkış ise PORX.x=1 şeklinde değil LATX.1=1 şeklinde kullanılır. Özetlersek çıkış işleminde LATA veya LATB veya LATC registeri giriş işlemlerinde ise PORTA veya PORTB veya PORTC registerleri kullanılır.


Ete

kerem

teşekkür ettim. ete hocam program  çalıştı. ama kafama bir şey takildi. pic18f2520 inc dosyasında ilk attığım örnekteki fuse ayarları vardı. ben o ayarları kullandım. şimdi baktım siz ayarları biraz artırmışsınız. yeni verdiğiniz ayarlar ne işe yarıyor. yada onları kullanmazsak problem yaşarmıyız?

ikincisi ise yeni işlemcilerle eski işlemcilerin farklarını anlatan bir pdf yada yazı var mı? çünkü pic18f serisi ile çalışmam gerekiyor onun için yeni nesil işlemcileri bilmem gerekiyor. teşekkür ettim.

ete

MBPASM klasörü içinde yer alan p18F2520.INC dosyasını yükleyip (MCS içinde yüklenebilir) altlara doğru satırlara bakarsan tüm sigorta ayarlarını ne işe yaradıklarını açıklayan satırlara ulaşabilirsin.

MPASM klasör Proteus klasöründe Tools alt kalsörü içinde yer alıyor yada haricen bir şekilde yüklenebilir.

Ete

Powered by EzPortal