dahili eeprom'mu yoksa harici eeprom'mu daha hızlı?

Başlatan tcitak, 21 Şubat 2004, 11:21:46

tcitak

Merhabalar,
Pic'in kendi içerisnde bulunan eepromdan sıralı bir şekilde bilgi okunup yazılabildiğine dair bir bilgiye edinemedim. O yüzden her yazdırma ve okuma işleminden sonra ~10ms kadar bekliyorum. Buda takdir ederseniz büyük bir zaman kaybı. Birinci sorum pic'in kendi dahili eepromundan sıralı bilgi alabiliyormuyum.?

Eğer cevap hayır olursa pic'in dışarısındaki bir eeprom'dan daha hızlı veri okumak mümkün. Çünkü pic dışarıdaki bir eepromdan ~1ms kadar bir sürede sıralı okuma ve yazma yapabiliyor.

Siz ne düşünüyorsunuz?

iyi çalışmalar.

mhk

Pic'in dahili eepromundan sıralı bilgi alıp okuman mümkün , lakin seninde bahsettiğin gibi okuma ve yazma süresi uzun. Ben pic için sıralı bilgi alacaksam ilk önce programın başında bunları dizi değişkenlere atayarak okuma ve yazma hızını artırdım. Harici seri eepromlarda bence yavaş. Örneğin okuyacağın yada yazacağın veri çoksa 8 K gibi her okumayı 1 ms de yapsa bu tamamı için yaklaşık 8 sn yapar. Paralel eeprom kullanmadım. Lakin bunların hızları yanlış hatırlamıyorsam us yada ns seviyelerinde. Buda sıralı okumada hızın önemli olduğu I/O portlarının ( paralel eepromda bayağı kullanılıyor ) önemsiz olduğu durumlarda yeterli olur sanırım. İyi çalışmalar.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

kesmez

eeprom eğer page write özeliği varsa misal 32 byte birden yazdırılabilir ve 5msn beklenilir. her byte için 5msn beklemeye gerek yok. okuma için bekleme süresi diye birşey yok, ancak harici eeprom kullanıyorsanız i2c veya spi haberleşmesinden kaynaklanan bir mecburi bekleme zamanı olacaktır.
24lc64 ün 32 byte birden yazdırma özelliği var..
"İnned dine indallahil İslam" (2-19)

yıldırım ak

Hemen hemen her eeprom chipinde page write özelliği var.

ancak byte veya page yazımından sonra eeprom tiplerine göre değişiklik göstermekle birlikte 24 serisi için 10 ms beklemen gerekir.
"... Bana kulluk et; Beni anmak için namaz kıl" (Taha 14)

elektromer

Alıntı yapılan: "tcitak"Merhabalar,
Pic'in kendi içerisnde bulunan eepromdan sıralı bir şekilde bilgi okunup yazılabildiğine dair bir bilgiye edinemedim. ......

....

Siz ne düşünüyorsunuz?

iyi çalışmalar.

Pic'in dahili epromuna sıralı veri yazdırmak için;

1. Yazdırılacak verileride RAM bloğunda sıralı olarak tanımla,
2. EEPROM yazma ve okuma rutinlerinde yazdıracağı byte kadar bir değeri sayıcıya aktar,
3. EEPROM yazma rutininde INDF ve FSR kullanarak sıralı bir şekilde okutup yazdırabilirsin..
Her şey gönlünüzce olsun..

elektromer

Pic'in içindeki EEPROMA sıralı veri yazıp okumak için FSR ve INDF registerleri kullanılarak yapılabilir.

1. EEPROM'a yazılacak verileri RAM tanımlamalarında sıralı olarak tanımlayın.
2. EEPROM yazma rutinleri içinde yazılacak byte sayısı kadar değeri SAYICI olarak kullanacağınız registere yükleyin.

En iyisi kısa bir örnek vermek ;

;************************************************************;
; PROGRAM ADI	   :	EEPROM sıralı veri yazma Programı
; DOSYA ADI	   :	deneme.asm
; YAZAN		   :	Elektromer
; TARİH		   : 	22 Eylül 2002	
; TARİH		   : 	18:55	
; İŞLEMCİ		   :	PIC 16F84
; SAAT HIZI (XTAL) 	   :	3.2768 MHz
;************************************************************;

	LIST	P=16F84,	R=HEX,	C=80
	ERRORLEVEL	-302
	#INCLUDE	"16f84.inc"

;
	LIST	__CONFIG _CP_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC

;************************************************************;
;	RAM tanımlamaları
;************************************************************;
	CBLOCK	0x10

	dakika		; Kayıt dakikası   (0x10)
	saat		; Kayıt saati        (0x11)
	gun		; Kayıt günü        (0x12)
	t_ic		; İçerideki ısı.      (0x13)
	t_dis		; Dışarıdaki ısı     (0x14)

	ENDC

; programların diğer bölümleri...


;************************************************************;
;       Data EEPROM'una Degisen veri yazilir.
;************************************************************;
E_YAZ	movlw	0x10		;
	movwf	fsr		;
	clrf	eeadr		;
	movlw	0x05		;
	movwf	sayici		;

E_YAZ1	movf	indf,w		;
	movwf	eedata		;
	bsf	status,rp0		;
	bsf	eecon1,wren	;
	movlw	0x55		;
	movwf	eecon2		;
	movlw	0xAA		;
	movwf	eecon2		;
	bsf	eecon1,wr		;
	bcf	eecon1,wren	;
	btfsc	eecon1,wr		;
	goto	$-1		;
	bcf	eecon1,eeif	;
	bcf	status,rp0		;
	incf	fsr,f		;
	incf	eeadr,f		;
	decfsz	sayici,f		;
	goto	E_YAZ1		;
	return			;

;************************************************************;
;       Data EEPROM'undan veri okunur.
;************************************************************;
E_OKU	movlw	0x10		;
	movwf	fsr		;
	clrf	eeadr		;
	movlw	0x05		;
	movwf	sayici		;

E_OKU1	bsf	status,rp0		;
	bsf	eecon1,rd		;
	bcf	status,rp0		;
	movf	eedata,w		;
	movwf	indf		;
	incf	fsr,f		;
	incf	eeadr,f		;
	decfsz	sayici,f		;
	goto	E_OKU1		;
	return			;


Not: Yazılımda hata varsa şimdiden özür dilerim. Sadece fikir vermek içindir.
Her şey gönlünüzce olsun..