18F26K22 Sigorta Ayarı

Başlatan aRci, 08 Ağustos 2024, 09:59:06

aRci

Merhaba;
16F26K22 ile 64Mhz de çalıştırmak istiyorum. alttaki kodlar bunun için doğrumudur.
Ayrıca Portb.4 pini giriş olarak çalışmıyor dahili pull-up dirençleri aktif diğer portblerde pull-uplar aktif olarak çalışıyor sadece pb4 çalışmıyor galiba pin bozuk. kodlarda bununla ilgili eksik varmı bakarmısınız.

ASM    
 __CONFIG _CONFIG1H, _FOSC_INTIO67_1H & _PLLCFG_ON_1H & _PRICLKEN_ON_1H & _FCMEN_OFF_1H & _IESO_OFF_1H            
 __CONFIG _CONFIG2L, _PWRTEN_ON_2L & _BOREN_ON_2L & _BORV_285_2L     
 __CONFIG _CONFIG2H, _WDTEN_ON_2H & _WDTPS_1024_2H                                       
 __CONFIG _CONFIG3H, _PBADEN_OFF_3H & _HFOFST_OFF_3H & _T3CMX_PORTB5_3H & _P2BMX_PORTC0_3H & _MCLRE_EXTMCLR_3H    
 __CONFIG _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L    
 __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L    
 __CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H   
 __CONFIG _CONFIG6L, _WRT0_ON_6L & _WRT1_ON_6L     
 __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H    
 __CONFIG _CONFIG7L, _EBTR0_ON_7L & _EBTR1_ON_7L    
 __CONFIG _CONFIG7H, _EBTRB_ON_7H 
endasm


    OSCCON = %01111000      '8*4 mhz internal clock, PLL on
    OSCCON2.4= 0
    OSCTUNE= %01000000
    define OSC 64
    INTCON=%00000000
    INTCON2.7=0
    
    PIE1= %00100001
    PIR1= %00000000
    RCSTA= %10010000
    TXSTA= %00100100
    BAUDCON=%01001010

    ANSELA           = 0'%00000011
    ANSELB           = 0
    ANSELC           = 0 
    
    Porta            = 0
    portb            = %11110001
    portc            = %10100100
    
    TRISA            = %00000011
    TRISB            = %11110111  'B portu giriş yapıldı
    TRISC            = %10000111  'C portu 3 giriş/4'ü çıkış yapıldı
'===============================================================================
'===============================================================================    
    Symbol BtY       = Porta.0
    Symbol BtA       = Porta.1
    symbol MtrDogu   = Porta.2
    symbol MtrBati   = Porta.3
    Symbol Rl1       = Porta.4
    
    symbol Bzr       = PORTA.6 'Buzzer
    
    'Symbol SimRst    = Portb.3
    Symbol Gr0       = Portb.4
    Symbol Gr1       = Portb.5
    Symbol Gr2       = Portb.6
    Symbol Gr3       = Portb.7
    
    Symbol SDA       = PORTC.0
    Symbol SCL       = PORTC.1
    Symbol BtM       = PORTC.2 'okuma bacağı
    symbol Led       = PORTC.3 'Led
    
    WPUB             = %11110111

ete

	
	ASM    
	 __CONFIG _CONFIG1H, _FOSC_INTIO67_1H & _PLLCFG_ON_1H & _PRICLKEN_ON_1H & _FCMEN_OFF_1H & _IESO_OFF_1H            
	 __CONFIG _CONFIG2L, _PWRTEN_ON_2L & _BOREN_ON_2L & _BORV_285_2L     
	 __CONFIG _CONFIG2H, _WDTEN_ON_2H & _WDTPS_1024_2H                                       
	 __CONFIG _CONFIG3H, _PBADEN_OFF_3H & _HFOFST_OFF_3H & _T3CMX_PORTB5_3H & _P2BMX_PORTC0_3H & _MCLRE_EXTMCLR_3H    
	 __CONFIG _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L    
	 __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L    
	 __CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H   
	 __CONFIG _CONFIG6L, _WRT0_ON_6L & _WRT1_ON_6L     
	 __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H    
	 __CONFIG _CONFIG7L, _EBTR0_ON_7L & _EBTR1_ON_7L    
	 __CONFIG _CONFIG7H, _EBTRB_ON_7H 
	endasm
	 
	 
	    OSCCON = %01111000      '16*4 mhz internal clock, PLL on
	    OSCCON2=%10000000

	    OSCTUNE= %01000000
	    define OSC 64
	    INTCON=%00000000
	    INTCON2.7=0
	    
	    PIE1= %00100001
	    PIR1= %00000000
	    RCSTA= %10010000
	    TXSTA= %00100100
	    BAUDCON=%01001010
	 
	    ANSELA           = 0'%00000011
	    ANSELB           = 0
	    ANSELC           = 0 
	    
	    Porta            = 0
	    portb            = %11110001
	    portc            = %10100100
	    
	    TRISA            = %00000011
	    TRISB            = %11110111  'B portu giriş yapıldı
	    TRISC            = %10000111  'C portu 3 giriş/4'ü çıkış yapıldı
	'===============================================================================
	'===============================================================================    
	    Symbol BtY       = Porta.0
	    Symbol BtA       = Porta.1
	    symbol MtrDogu   = Porta.2
	    symbol MtrBati   = Porta.3
	    Symbol Rl1       = Porta.4
	    
	    symbol Bzr       = PORTA.6 'Buzzer
	    
	    'Symbol SimRst    = Portb.3
	    Symbol Gr0       = Portb.4
	    Symbol Gr1       = Portb.5
	    Symbol Gr2       = Portb.6
	    Symbol Gr3       = Portb.7
	    
	    Symbol SDA       = PORTC.0
	    Symbol SCL       = PORTC.1
	    Symbol BtM       = PORTC.2 'okuma bacağı
	    symbol Led       = PORTC.3 'Led
	    
	    WPUB             = %11110111

Sigorta ayarların doğru yalnızca OSCCON2 ayarını değiştirdim.
Bu şekilde 64 Mhz de çalışması gerekir.
PORTB.4 pini özel bir pin değil senin işlemcide bu pin bozuk olsa gerek.

Bu işlemcide GIRIŞ port registeri PORTX (PORTA - PORTB...) ile kontrol ediliyor.

Çıkış pinleri ise LATx (LATA - LATB-LATC..) registeri ile kontrol edilmektedir.
Bir pini örneğin PORTC.2 pininden HIGH çıkarmak için LATC.2=1 şeklinde bir komut kullanmak gerekir. PORTC.2=1 burada çalışmayacaktır.
Sen hiç LAT komutu kullanmamışsın sorun olabilir. Çıkış pinlerini LAT olarak değiştir.

Ete

aRci

Cevap için teşekkürler. LAT komutunu hiç kullanmadım bir problemde görmedim aslında porta 2-5 arası çıkı olarak kullanıyorum çıkışları HIGH - LOW olarak sürebiliyorum. Ama tekrar kontrol edeceğim.

portb 4-7 giriş olarak tanımladım sadece bu pin çalışmadı. bir şekilde bozmuş olmalıyım.

Burada ilk defa BOR ve WDT kullanıyorum ilk açılışta düşük voltajdan dodlayı iç kristal tam olarak çalışmadan program çalışmaya başlıyor gibi normalda ki hızın çok altında çok yavaş çalıştığına tanık oldum.

Devre beslemesi Güneş paneli olacak ve gün doğarken voltajın yavaş yükselmesi devrenin çalışmasını bu şekilde etkiliyor.

BOR ve WDT kullanımım hakkında bilgi verebilirmisiniz.

ete

LAT konusunda data sheetlerde gereken bilgi var. Kesin olarak girişler PORTX çıkışlar LATX olarak yapılmalıdır deniliyor. Ancak sanırım derleyicilerde bu konuda tedbir alınmış ve sen LAT yerine PORT kullansan bile derlerken gereken ayarlamaları yapıyor. Başka türlü açıklanamaz.
Bende önceden sürekli kontrol ediyordum. Çıkışlarda PORTX çalışıyor ama çalışmadığı yerleride gördüm. Bu nedenle en doğrusu LATX olarak kullanmak. Tercih senin elbette.

BOR sigortası işlemci besleme voltajı belirli seviyeye gelinceye kadar işlemciyi RESET de tutar.
Belirlenen seviye aşıldığında işlemci start alır. Eski tip işlemciler bu voltaj seviyesi 2 V seviyelerinde idi hatırladığım çokda emin değilim. Ama yenilerde birden fazla voltaj seviyesi verilerek sigorta ayarlarından seçim yaptırılıyor. Bu sigorta işlemci voltajının anlık düşümlerini tespit edebilir ve düşme halinde işlemciye RESET atabilir.Anlık güç çeken elemanların olduğu devrelerde BOR seviyesi düşük alınmalıdır.

WDT adı üzerinde bekçi köpeğimiz. Ben bu sayacı pek kullanmam. O nedenle detaylı açıklama veremeyeceğim. Ancak şöyle bir örnek vereyim. Uyku moduna soktuğun bir işlemciyi ya harici bir kesme yada WDT ile uykudan çıkartman mümkün olabiliyor. Harici kesme kullanamadığın durumlarda bu sayacı belirli bir zaman dilimine ayarlayark o süre sonunda uyku modundan çıkmasını sağlayabilirsin.

Ete

Powered by EzPortal