Tekrar program atana kadar PIC çalışmaması

Başlatan baran123, 05 Kasım 2016, 22:44:41

baran123

PIC18F46K80 kullanıyorum. Devrede enerji varken program atıyorum ve anında çalışmaya başlıyor burada bir problem yok.
Fakat içine program attıktan sonra devrenin enerjisini kesip tekrar veriyorum yazdığım program devreye girmiyor.
Tekrar program attığım an normal bir şekilde çalışıyor. Bunun sebebi ne olabilir ?

canbulut

birincisi programı bir yerden en başa dallandırın bakalım ne olacak. ikincisi fuse bitleri. üçüncüsü programdan değilde donanımdan da olabilirmi ?

baran123

Fuse bitleri şu şekilde
Program resmen hiç başlamıyor. Programın en başına LED koydum ama nafile yanmadı :(
Elimde şema yok. Sanırım fuse bitleri ile alakalı ?
#pragma config RETEN = OFF       // VREG Sleep Enable bit (Ultra low-power regulator is Disabled (Controlled by REGSLP bit))
#pragma config INTOSCSEL = HIGH  // LF-INTOSC Low-power Enable bit (LF-INTOSC in High-power mode during Sleep)
#pragma config SOSCSEL = DIG     // SOSC Power Selection and mode Configuration bits (High Power SOSC circuit selected)
#pragma config XINST = OFF       // Extended Instruction Set (Disabled)

// CONFIG1H
#pragma config FOSC = INTIO2    // Oscillator (Internal RC oscillator)
#pragma config PLLCFG = OFF     // PLL x4 Enable bit (Disabled)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor (Disabled)
#pragma config IESO = OFF       // Internal External Oscillator Switch Over Mode (Disabled)

// CONFIG2L
#pragma config PWRTEN = OFF     // Power Up Timer (Disabled)
#pragma config BOREN = OFF      // Brown Out Detect (Disabled in hardware, SBOREN disabled)
#pragma config BORV = 3         // Brown-out Reset Voltage bits (1.8V)
#pragma config BORPWR = ZPBORMV // BORMV Power level (ZPBORMV instead of BORMV is selected)

// CONFIG2H
#pragma config WDTEN = SWDTDIS  // Watchdog Timer (WDT enabled in hardware; SWDTEN bit disabled)
#pragma config WDTPS = 1048576  // Watchdog Postscaler (1:1048576)

// CONFIG3H
#pragma config CANMX = PORTB    // ECAN Mux bit (ECAN TX and RX pins are located on RB2 and RB3, respectively)
#pragma config MSSPMSK = MSK7   // MSSP address masking (7 Bit address masking mode)
#pragma config MCLRE = OFF      // Master Clear Enable (MCLR Disabled, RE3 Enabled)

// CONFIG4L
#pragma config STVREN = ON      // Stack Overflow Reset (Enabled)
#pragma config BBSIZ = BB2K     // Boot Block Size (2K word Boot Block size)

apsis

#3
@baran123 Hocam PWRTEN = ON yapar mısınız. İşlemciye enerji geldiğinde 72ms resette tutar.
"Makineye Beyin" MEKATRONİK

baran123


canbulut

yük çeken çıkışları iptal etmeyi deneyeiblirsiniz.

baran123

Alıntı yapılan: canbulut - 05 Kasım 2016, 23:18:29
yük çeken çıkışları iptal etmeyi deneyeiblirsiniz.
Hocam yük çeken çıkış yok şuanda. Sadece Ekran buton ve ledler var.

mehmet

#7
Bence en başa dön;
sakince led yakmayla başla...
(Yedeklerini almayı unutmadan...)

Ek:
OSCCON 'u kurcala biraz...(bit 2 ???)
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

canbulut

kristal ne durumda birde onu kontrol etseniz.

apsis

@baran123 WDTEN 'ı da kapatmanı öneririm. Açık olursa belirli periyotlarda bayrağını sıfırlamak gerek ve programınızın çalışmasına doğrudan etki eder
"Makineye Beyin" MEKATRONİK

baran123

Dahili 16MHz kullanıyorum PLL kapalı.
@mehmet hocam LED yakmaya çalışınca da aynı şey oluyor. (OSCCON = 0x72;)

baran123

while (!OSCCONbits.HFIOFS); de ekledim ama nafile
sanırım çıldırıcam :D

baran123


mehmet

#13
HFIOFS yi geçiyor mu? Bundan önce 1sn civarı beklet bakalım...

Ek:
SCS yi 0b00 yapınca?

Ek:2
Acaba?
DS80519A-page 4
http://ww1.microchip.com/downloads/en/DeviceDoc/80519a.pdf
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

baran123

@mehmet hocam dediğin gibi delay ekleyince çözüldü.
OSCCON = 0x70;
Delay_ms(1000);
while (!OSCCONbits.HFIOFS);

Herkese teşekkürler