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