eeprom'daki değişken sorunu

Başlatan cuneytsezmis1, 24 Ocak 2007, 20:46:33

cuneytsezmis1

arkadaşlar 16f628a da tmr1 i kullanarak dışardan gelen palsleri sayan bir sayıcı yaptım değeri lcd de gösteriyorum.saymada-göstermede falan problemim yok ama sayacın değerini pic in eepromuna yükledikten sonra pic in beslemesini kesip 2sn sonra tekrar veriyorum herşey normal.bikaçkere daha kesip veriyorum ne göreyim!! eepromdaki değer değişmiş.şaştım kaldım.trafolu 7805li besleme kullanıyorum.beslemeden kaynaklanabilirmi.yardımınıza ihtiyacım var.sağolun

aslan_korhan

Beslemeden dolayı EEPROM'un silineceğini pek sanmıyorum.
Programla ilgili bir sorun olabilir. Birde EEPROMa veri kayıt ederken biraz yavaş yazmasını sağla. araya Pause falan koy.
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

cuneytsezmis1

pause 50 yazmıştım.programda olsa daha 1.de yapmazmı hocam.programı defalarca kontrol ettim bişey göremedim.

aslan_korhan

İstersen programı buraya bir koy. İncelemesi daha kolay olur.

Bir kere doğru yazdıktan sonra yine bu veriyi doğru okuyorsan ve ancak ikinci okumada yanlışlık oluyorsa büyük bir ihtimal programdan.
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

ibrsel

Enerjiyi kesip tekrar verirken bu arada saydığın değer değişip eeproma kaydetmiş olmayasın..

yalnayak

okuma-yazma suresi tamamlanmadan enerji kesiliyorsa ki cok hizli yazma yaptirilmak istendiginde bu mumkun,yazımin ortasinda enerji kesilince eeproma coktan baska degerler yazılmıs oluyor.boyle durumlarda adreste ff yazmasi cogunluktadir.
bu yazım islemini en sonki yazim suresinin ustune cikarak deneyin.
yani biraz daha yavas yazdirin.
Kızımın iffeti batmakta rezîlin gözüne... Acırım tükürüğe billâhi, tükürsem yüzüne..! MEHMED AKİF ERSOY  Kardan Adaminla,GUNES'e calim mi satiyorsun?

Klein

Eğer reset ucunu vcc ye bağlamışsan   bunu yapar. bir reset yongası ya da rc reset devresi kurduğunda düzelir.

cuneytsezmis1

yardımlarınız için çok teşekkür ederim.gelen mesajları yeni okudum.yaptığım sayıcıları takmak için şehir dışına gitmiştim.sonuç tam hüsran.saymada yanlışlıklar,eepromdaki hatalar,kendi kendine çıkış vermeler ne ararsanız var.sayıcıyı kaldırıp duvara vurmak istedim ama o kadar emek verdim vuramadım.dediklerinizi okudum.programı ekliyorum bi bakarsınız.

Device = 16F628 ;KULLANILAN MİKRO İŞLEMCİ
DECLARE LCD_INTERFACE 4   ;4 HAT İLE LCD BAĞLANTISI SEÇME
DECLARE LCD_DTPIN PORTA.0 ;
DECLARE LCD_ENPIN PORTA.7 ;LCD ENABLE ÇIKIŞI
DECLARE LCD_RSPIN PORTA.4;LCD RS ÇIKIŞI

CONFIG WDT_OFF , PWRTE_ON , INTRC_OSC_NOCLKOUT ,LVP_OFF,MCLRE_ON,BODEN_OFF    ;KONFİGİRASYONLAR
	ALL_DIGITAL TRUE															 

PORTB_PULLUPS = ON ;PORTB PULLUP DİRENÇLERİ ETKİN DEĞİL
OPTION_REG.5=1
CMCON=7

T1CON.0=1
T1CON.1=1
PIE1.0=0

TRISA=%01100000
TRISB=%11001111
PORTA=0
PORTB=0
CIKIS1 VAR PORTB.4
CIKIS2 VAR PORTB.5
MENUB VAR PORTB.0
UPB VAR PORTB.2
DOWNB VAR PORTB.1
SETB VAR PORTB.3

GEC VAR BYTE
DEL VAR BYTE
ONDA VAR BYTE
SET1 VAR BYTE
SET1  =  EREAD 0
SET2 VAR BYTE
SET2  =  EREAD 20
TOPLAM VAR WORD
DIM TOPLAM_L AS TOPLAM.LOWBYTE
DIM TOPLAM_H AS TOPLAM.HIGHBYTE		
TOPLAM_L=0
TOPLAM_H=0
TMR1L=0
TMR1H=0
TOPLAM_L = EREAD 8
TOPLAM_H =  EREAD 10




SAYAC1 VAR WORD
SAYAC2 VAR WORD
SAYAC1  =  EREAD 4
SAYAC2  =  EREAD 6




PRINT AT 1,1,"PICPROJE"

PAUSE 3000
TMR1L = TOPLAM_L
TMR1H =  TOPLAM_H

ANA_1:
        EWRITE 20 , [ SET2 ]
         PAUSE 50
		CLS
        GOSUB LCD
        PAUSE 200
ANA_PROG:		
		
		GEC=0
		IF PORTB.7=1 THEN HAFIZA
		GOSUB SAY	
		DEL=0
		BUTTON MENUB,0,250,250,DEL,1,MENU1_A
		IF SETB=0 THEN
		TMR1L=0
		TMR1H=0
		TOPLAM=0
		SAYAC1=0
		SAYAC2=0
		GOTO ANA_1
		ENDIF
		
		IF TOPLAM<SET1+SAYAC1 THEN ANA_PROG
		CIKIS1=1
		TOPLAM_L=TMR1L
        TOPLAM_H=TMR1H
		SAYAC1=TOPLAM
		PRINT AT 2,15,">>"
		PAUSE 600
		PRINT AT 2,15,"  "
		CIKIS1=0
		TOPLAM_L=TMR1L
        TOPLAM_H=TMR1H
		SAYAC2=TOPLAM
		
ANA_PROG1:
		GEC=0
		IF PORTB.7=1 THEN HAFIZA
		GOSUB SAY	
		DEL=0
		BUTTON MENUB,0,250,250,DEL,1,MENU1_A
		IF SETB=0 THEN
		TMR1L=0
		TMR1H=0
		TOPLAM=0
		SAYAC1=0
		SAYAC2=0
		GOTO ANA_1
		ENDIF
		
		IF TOPLAM<SET2+SAYAC2 THEN ANA_PROG1
		
		CIKIS2=1
		PRINT AT 2,15,"<<"
		PAUSE 600
		PRINT AT 2,15,"  "
		CIKIS2=0
		TOPLAM_L=TMR1L
        TOPLAM_H=TMR1H
		SAYAC1=TOPLAM
		GOTO ANA_PROG
       
		
MENU1_A:		
	    CLS
		PRINT AT 1,1,"SET1 AYAR:"
        PRINT AT 1,14,"   "
		PAUSE 200
MENU1:
        DEL=0
		BUTTON MENUB,0,250,250,DEL,1,MENU2_A
        ONDA=SET1 DIG 0
        PRINT AT 1,13,#ONDA
        ONDA=SET1 DIG 1
        PRINT AT 1,12,#ONDA
        ONDA=SET1 DIG 2
        PRINT AT 1,11,#ONDA
        PAUSE 200
        IF UPB=0 THEN
		SET1=SET1+1
        GEC=0
		GOTO MENU1
		ENDIF
		IF DOWNB=0 THEN 
		SET1=SET1-1
        GEC=0
		GOTO MENU1
		ENDIF
		GEC=GEC+1
		IF GEC=40 THEN
		GEC=0
		GOTO ANA_1
		ENDIF
		GOTO MENU1

MENU2_A:		
	    EWRITE 0 , [ SET1 ]
         PAUSE 50
		GEC=0
		PRINT AT 1,1,"SET2 AYAR:"
        PRINT AT 1,14,"   "
		PAUSE 200
MENU2:
        DEL=0
		BUTTON MENUB,0,250,250,DEL,1,ANA_1
		ONDA=SET2 DIG 0
        PRINT AT 1,13,#ONDA
        ONDA=SET2 DIG 1
        PRINT AT 1,12,#ONDA
        ONDA=SET2 DIG 2
        PRINT AT 1,11,#ONDA
        PAUSE 200
        IF UPB=0 THEN 
		SET2=SET2+1
        GEC=0
		GOTO MENU2
		ENDIF
		IF DOWNB=0 THEN 
		SET2=SET2-1
        GEC=0
		GOTO MENU2
	 	ENDIF
		GEC=GEC+1
		IF GEC=40 THEN
		GEC=0
		GOTO ANA_1
		ENDIF
		GOTO MENU2



SAY:        
		TOPLAM_L=TMR1L
        TOPLAM_H=TMR1H
        PRINT AT 2,1,"TOPLAM:",#TOPLAM       
        IF PIR1.0=1 THEN
        PIR1.0=0
        CLS
        GOSUB LCD
        ENDIF
		RETURN

LCD:
        PRINT AT 1,1,"s1:"
        PRINT AT 1,11,"s2:"
        PRINT AT 1,7,"    "
        ONDA=SET1 DIG 0
        PRINT AT 1,6,#ONDA
        ONDA=SET1 DIG 1
        PRINT AT 1,5,#ONDA
        ONDA=SET1 DIG 2
        PRINT AT 1,4,#ONDA
        
        ONDA=SET2 DIG 0
        PRINT AT 1,16,#ONDA
        ONDA=SET2 DIG 1
        PRINT AT 1,15,#ONDA
        ONDA=SET2 DIG 2
        PRINT AT 1,14,#ONDA
		RETURN

HAFIZA:
		EWRITE 8 , [ TOPLAM_L ]
       
		EWRITE 10 , [ TOPLAM_H ]
		 
		
		EWRITE 4 , [ SAYAC1 ]
         
		EWRITE 6 , [ SAYAC2 ]
         
		

HAFIZA1:
        PAUSE 2000
GOTO ANA_1