Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: solidus - 22 Ağustos 2013, 19:01:26

Başlık: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: solidus - 22 Ağustos 2013, 19:01:26


Dim DUTY     As Byte
Dim FREKANS  As Word
.
.
DUTY=ERead 10:DelayMS 20
FREKANS=ERead 50:DelayMS 20
.
.
.
If KAYDET=0 Then
EWrite 10, [DUTY]:DelayMS 20
EWrite 50, [FREKANS]: DelayMS 20

16f877 işlemci ile yukarıdaki şekilde yazma ve okuma yapmak istiyorum.. ancak bu kodlarla duty değerini yazıp okumakta problem yaşamazken, frekans değerini okuma ve yazma yapamadım.. 1 haftadır neyi yanlış yaptığımı bulamadım. Bu konuda yardımlarınıza ihtiyacım var. Teşekkürler..
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: esensoy - 22 Ağustos 2013, 19:23:11
proton+ bilmem ama word genelde byte in 2 katı olur, yani byte 8 bit ise word 16 bittir,
sanırım siz 8 bitlik yazma ve okuma komutlarıyla 16 bitlik değişken yazmaya ve okumaya çalışıyorsunuz,
büyük ihtimalle frekansın düşük 8 bitini eeprom alanına yazıp okuyorsunuz
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: OG - 22 Ağustos 2013, 20:11:28
FREKANS  değişkenin word olduğundan 2 byte yer kaplar,
50 adresine yaz dediğinde 50 ve 51 nolu adreslere yazar.
50'ye FREKANS.LowByte degerini
51'e FREKANS.HighByte degerini yazar

Okumada da
FREKANS=ERead 50
dediğinizde 50 den okuduğunu FREKANS.LowByte a yerleştirir, 51 den okuduğunu FREKANS.HighByte degerine yerleştirir.

Buraya kadar kodlarınızda problem yok.

Eğer ki 51 nolu adrese başka bir müdahale yapıyorsanız (başka değerin kaydı falan) o zaman FREKANS.HighByte değerini bozmuş olursunuz.

Yani
EWrite 51, [abc]  gibi bir komutunuz varsa FREKANS'ın alanına girip onu bozmuş olursunuz.
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: solidus - 22 Ağustos 2013, 22:23:26
O halde okuma ve yazma ve sonuç için 2 sorunumuz var.. Birincisi;


FREKANS.LowByte=ERead 50:DelayMS 20
FREKANS.HighByte=ERead 51:DelayMS 200
.
.
.
If KAYDET=0 Then
EWrite 50, [FREKANS.LowByte]: DelayMS 20
EWrite 51, [FREKANS.HighByte]: DelayMS 20
Endif


şeklinde yazmak yeterli olacakmıdır ?

İkincisi Low ve High byte'ları okuduktan sonra bu bilgileri eproma yazılan bu değerleri nasıl görünür hale getirebilirim.. Daha açıkça sormak gerekirse bir hesaplama rutini var mıdır ?
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: OG - 22 Ağustos 2013, 22:44:39
İf şartın ne içindir bilemem ama okuma ve yazmanda hata yok, ilk verdiğin şekilde de olabilir son verdiğin şekilde de olabilir.  Önemli olan 51 no ya başka birşey yazmaman.
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: Maxim - 22 Ağustos 2013, 22:46:06
@solidus
hayır öyle yapmanıza gerek yok, kafanız karışmasın
sizin kod doğru, hata yok
fakat sadece şu : dan sonraki beklemeleri alt satıra alın belki onları görmüyor derleyici
* bu arada, okuma yaparken beklemeye gerek yok

şöyle bir deneyin


Dim DUTY     As Byte
Dim FREKANS  As Word

DUTY=ERead 10
FREKANS=ERead 50

If KAYDET=0 Then
EWrite 10, [DUTY]
DelayMS 10
EWrite 50, [FREKANS]
DelayMS 10

Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: solidus - 22 Ağustos 2013, 22:52:55
@Maxim,
frekans değişkeni word tipi olduğundan lowbyte ve high byte okunmalı ve yazılmalı değil mi ?
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: OG - 22 Ağustos 2013, 23:05:47
DelayMS 10

Hatta buna bile gerek yok, proton onu hallediyor.
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: homer380 - 22 Ağustos 2013, 23:06:43
word olduğu için 2'ye bölmeniz gerek. Ki bölünmüş daha sonra değer okuyup word cevirebilirsiniz. oda şöyle olur

Eread 50, [FREKANS.LowByte]: DelayMS 20
Eread 51, [FREKANS.HighByte]: DelayMS 20

frekans=(frekans.highbyte<<8)+frekans.lowbyte

Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: OG - 22 Ağustos 2013, 23:09:05
Proton bölme işlemini kendisi yapıyor. Yani en üstteki mesajdaki hali de doğru, bölerek yüklense de doğru.
Word değil Dword olsa da yapıyor. Gereken byte kadar ayırıp adresi 1 arttırarak yazar/okur.
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: solidus - 22 Ağustos 2013, 23:10:02
@ OG,
Hocam kafam karıştı.. küçücük bi örnek vermeniz mümkün müdür ?
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: homer380 - 22 Ağustos 2013, 23:10:37
protonu gittikçe sevmeye başlıyorum. ::)
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: solidus - 22 Ağustos 2013, 23:14:10
Saç baş yolduruyor bazen :(
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: OG - 22 Ağustos 2013, 23:30:40
Yazdıkların doğru,

DUTY=ERead 10
FREKANS=ERead 50
.
.
.

EWrite 10, [DUTY]
EWrite 50, [FREKANS]


Veya

FREKANS.LowByte=ERead 50
FREKANS.HighByte=ERead 51
.
.
.
EWrite 50, [FREKANS.LowByte]
EWrite 51, [FREKANS.HighByte]

Hepsi doğru.

Saç baş yolduran yerler saçma sapan basit şeyler,
Mesela satırı çok uzun tutmayın, satırdan sonra boşluklar bırakmayın, derleyici bazen oraları okuyamıyor.

@ETE hocanın yazdıklarını incelerken hep derdim, niye böyle dip dibe yazıyor, TAB falan kullanmıyor diye. Protonda benim başıma geldi, verilen boşluklar bazı zamanlarda derleyici tarafından okunamıyor olsa gerek hatalı sonuç verebiliyor.

Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: Gökhan BEKEN - 23 Ağustos 2013, 01:05:16
Merak ettim de bu eeprom hangi seri?
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: OG - 23 Ağustos 2013, 01:31:27
Dahili eeprom.



Yoksa arkadaş harici epromu mu sordu..
;D
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: solidus - 24 Ağustos 2013, 11:01:56
Dahili eeprom du arkadaşlar.. 16f877 nin dahili eepromu..
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: solidus - 24 Ağustos 2013, 20:09:07
İlginçtir ama eeproma direk yazmak mümkün olmadığı için yazılması gereken değişkenin son halini başka bir değişkene atayıp bu şekilde yazmayı başardım.. Garip bir tecrübe oldu benim için.. Konu çözülmüştür. İlginize teşekkür ederim..
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: Gökhan BEKEN - 24 Ağustos 2013, 22:55:36
Başka değişken dediğiniz değişkenin türü ne?
Başlık: Ynt: WORD tipi değişkeni Eproma yazma ve okuma..
Gönderen: Maxim - 25 Ağustos 2013, 10:43:41
Alıntı yapılan: solidus - 24 Ağustos 2013, 20:09:07
İlginçtir ama eeproma direk yazmak mümkün olmadığı için yazılması gereken değişkenin son halini başka bir değişkene atayıp bu şekilde yazmayı başardım..
Garip bir tecrübe oldu benim için.. Konu çözülmüştür. İlginize teşekkür ederim..

bence sizin sistemde bir tuhaflık var
ben son 7 senedir her tür picin eepromuna, proton+ ile direk byte-word-dword-float yazabiliyorum