PIC programlarken sabit degerleri nasıl aktarırım.

Başlatan yuppi, 10 Nisan 2005, 15:40:37

yuppi

Herkese kolay gele.
Proton kullanıyorum.Ve program içinde sabit bir yer varmı dataları yazıp derlenen hex dosyasının gerekli adresinde olsun ve programlıyacagım programda oradan okusun.
Bundan kastım ewrite komutu değil pic programlarken pic in eepromuna  aktarılmasını istiyorum.

ete

Anladığım kadarı ile Pic'in Data hafızasında belirli adresleri kendi işlerin için kullanmak istiyorsun. Buralara bilgi yazıp sonradan bunları eeproma aktarmak istiyorsun.

Bu iş için kullanabileceğin komut    <POKE adres,Data>  datayı okumak için ise   Peek adres,data  şekilinde. Peki direkt eeproma yazıp ordan kullanmayı neden istemiyorsun. Mutlaka bir sebebin vardır.

Pic Basic Pro da değişken tanımlayıp bunu istediğin bir adreste tutabiliyorsun. Proton'da bu iş yapılırmı bilmiyorum. Olsa idi bana göre tam istediğin seçenek olacak idi. Zira bir adresi kullandığın zaman pic'in aynı adresi data depolamak içinde kullanmaması gerekir. Bunun yolu programın başında bunu tanımlamak.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

yuppi

Aslında cevabını okuyunca, sormak istedigimle alakalı bir soru sormadıgımı fark ettim.Aslında yapmak istedigim seninde dedigin gibi pic eepromuna bunları direk yazmak.Ama Bu data ları programın neresine koyacagımı bulamadım.Yani programı hazırlarken data ve  ewrite komutu ile bunları programla eeproma yazıp ordan da okuta biliyorum ama bu dataların eeproma yazılma işini programa yaptırmak istemiyorum.pic programlarken yazmak istiyorum.Umarım anlatabilmişimdir derdimi.

ete

Bu gibi durumlarda ben genelde programın en başına yani normal program döngüsünün dışına bu komutu yazıyorum. DOlayısıyla pic'i çalıştırdığın zaman yalnızca bir kere bu komut çalıştırılıyor ve datalar eeproma yazılıyor.  Tabiiki program içinde bu dataları değiştiriyor isen ve pic'i durdurup sonradan yeniden çalıştırıyor isen ve her çalıştırdığında yeniden bir önceki dataları kullanmak istiyor isen bunun çözümü yok veya şöyle bir çözüm var. Yalnızca bir kere bu dataları eWrite ile program başında ver ve pic'e kayıt et. Daha sonra programda tadilat yapıp ewrite bölümünü picden çıkart ve yalnızca programı pic'e kayıt et. Böylece pic'i durdurup yeniden çalıştırsan bile bir önceki dataların silinmemiş olacaktır.

Diğer bir yöntem de,
Pic'e programı kayıt ederken alt kısımda eeprom data değerleride görülüyor. Bu kısıma istediğin adrese datalarını HEX olarak kendin direkt yazabilirsin. Pic'i programladığın zaman bu datalar doğruca pic'in eepromuna yazılır.

Kolay Gelsin
ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

yuppi

Teşekkürler.
Sanırım başka caremiz yok gibi.

mhk

sanırım programlayabileceğin pic'in eepromuna dataları dışardan girmek istiyorsun. Umarım doğru anladım. Bunun en kolay yolu pic'i programlaraken kulandığın programlayıcının data eepromuna programlama esnasında istediğin data adresine bilgi grerek yapabilirsin.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

yuppi

Aslında dogru anlamışsın.Ama epic kullanıyorum ve onada dışarından şu dosyayıda datalara yaz diye bir bölüm bulamdım sadece 313 versiyonunda data nın silinmemesi için bir bolum var şu an onu kullanıyorum.

CaFFeiNe

yuppi arkadaşım EEPROM komutu işini görebilir yanılmıyorsam

sezgin05

Yukarıdaki okuduklarıma bakılırsa program her açılışta eeproma bilgi yazacak ve çalışma sırasında da o bilgileri okuyacak.Bu ise eepromun belirli bir ömrü olan süreyi azaltacak.
Bunun yerine programa sadece eepromdan okuma komutu verilip yazma işlemi ise bir kereye mahsus programlama sırasında yapılmalı.Yani programlama sırasında picin eeprom bölgesine manuel olarak yazılmalı.Örneğin ICProg da programlanacak HEX açılır.Alt kısımda EEPROM bölgesi boştur.Eli le buraya ilgili adreslere Hexadecimal türünden sayılar girilir.Kolay gelsin.

SpeedyX

@sezgin05
pbp de EEPROM komutuda o işi yapıyor.

bigbey

Sayın arkadaşlar
PIC in EEPROM'una programla bilgi yazmak isterseniz.
pıc 16f877 EEPROM adres başlangıcı HEX 2100

bu şekilde MPLAB da yazarsanız sabit bilgiler bir sefere mahsus EEPROMA yazılmış olur.

LIST		P=16F877
		INCLUDE		"P16F877.INC"
;***********************************************
 __config(_CP_OFF & _PWRTE_OFF & _XT_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF)
;***********************************************
		ORG		H'00'
		GOTO		START
START
;BU BÖLÜMDE PROGRAMINIZI YAZIN

	NOP
	GOTO	START

;******************************************************
		ORG	0X2100

;BU BÖLÜMDE GİRMEK İSTEDİĞİNİZ DATAYI YAZIN
	DT	"BEKLESENE"


		END

Kod verirken # butonuna 2 kere tıklayıp vereceğimiz kodları 2 tırnak arasına alalım öyle verelim "]kod["
TA6R

yuppi

Biraz geç oldu ama nasıl yaptığımı yazayım.
EData $00,$00,$12,$20,$03,$02,$00,$00
...
..
.
bu formatta yazılıyor.Programlayıcı bu dataları ilk adresten itibaren pic in epromuna yazıyor.