picbasic pro da eprom kullanimi

Başlatan cesurcelik, 17 Şubat 2006, 12:24:03

cesurcelik

merhaba.
picbasic pro kullanarak 20 karakter uzunlugunda bir string i hyperterminal kullanarak pic ten eprom a yazip daha sonra epromdaki bilgileri okudugumda
yani
INCLUDE "MODEDEFS.BAS" 
DEFINE  CHAR_PACING 65000 
DEFINE OSC 20 
CONTROL CON $A0 
DPIN VAR PORTC.4 
CPIN VAR PORTC.3 
VALUE VAR BYTE[21] 
ADDRESS VAR BYTE

SERIN2 PORTC.7,396,[WAIT("Ee"),STR VALUE \ 21] 

ADDRESS=0                            
               WRITEX: 

FOR ADDRESS=0 TO 20 
I2CWRITE DPIN,CPIN,CONTROL,ADDRESS,[VALUE[ADDRESS]] 
PAUSE 10 
NEXT ADDRESS 

                        
              READX: 

FOR ADDRESS=0 TO 20 

I2CREAD DPIN,CPIN,CONTROL,ADDRESS,[VALUE] 
SEROUT2 PORTC.6,396,[#ADDRESS,":",VALUE[ADDRESS],10,13] 
NEXT ADDRESS 
LOOP:
GOTO LOOP
END

hyperterminalde gonderdigim string :
"EeZQXT CESUR DENEMEDIR"

hyperterminalden okudugum bilgi:


Òú
1:Q
2:X
3:T
4:
5:C
6:E
7:S
8:U
9:R
10:
11:D
12:E
13:N
14:E
15:M
16:E
17:D
18:I
19:R
20:

neden ilk address=0 ve o adres teki datayi goremiyorum,neden 0. bilgi('Z') bozuluyor?
yorumlariniz icin simdiden teşekkür ederim
mutlu gunler

fsan

merhaba cesurcelik,

SEROUT2 öncesi:
High PORTC.6
Pause 100

koyup bir denermisin?

SEROUT2 PORTC.6,396,[#ADDRESS,":",VALUE[ADDRESS],10,13]

ayrica merak ettigim baska bir sey:
yukaridaki VALUE[ADDRESS] parantezler; VALUE(ADDRESS) yapip birde o sekilde denermisin?

kolay gelsin

cesurcelik

merhaba fsan,
oncelikle cevabin icin teşekkür ederim
ilk once birinci onerini denedim
cevap:

0=ÿ
1=B
2=C
3=D
4=E
5=F
6=G
7=H
8=I
9=J
10=K
11=L
12=M
13=N
14=P
15=R
16=S
17=T
18=U
19=V
20=

sonuc ilk addresi simdi okuyorum fakat ilk address teki bilgi hala bozuk,
ikinci onerini de ayri olarak ve iki oneriyi birlestirerek denedim degisen birsey olmadi
cok teşekkür ederim

fsan

merhaba,
birde PAUSE 1000 yapip dene olmazsa SEROUT2 yerine HSEROUT kullanabilirsin.

cesurcelik

@fsan
merhaba,
oncelikle cok teşekkür ederim verdiginiz bilgiler icin,
onerilerinizi denedim ,sonuc degismedi,devereyi proteus da simule etmistim,gercek devreyi board a kurmadim buyuk ihtimal sorun donanimsal,
ayrica  harici eprom a proteusda  manual olarak bilgi yazabilirmiyim
veya  yazilan bilgiyi degistirebilirmiyim, tekrardan teşekkür ederim
mutlu gunler.

fsan

Alıntı yapılan: "fsan"merhaba cesurcelik,

SEROUT2 öncesi:
High PORTC.6
Pause 100

koyup bir denermisin?

SEROUT2 PORTC.6,396,[#ADDRESS,":",VALUE[ADDRESS],10,13]
kolay gelsin

Alıntı yapılan: "cesurcelik"@fsan
merhaba,
oncelikle cok teşekkür ederim verdiginiz bilgiler icin,
onerilerinizi denedim ,sonuc degismedi,devereyi proteus da simule etmistim, ayrica  harici eprom a proteusda  manual olarak bilgi yazabilirmiyim veya  yazilan bilgiyi degistirebilirmiyim, tekrardan teşekkür ederim
mutlu gunler.

@cesurcelik
Tekrar Merhaba kardes,
yukarida SEROUT2 öncesi koydugumuz Beklemeyi birde  

SERIN2  öncesi:
High PORTC.7
Pause 100

koyup deneyebilirmisin?

SERIN2 PORTC.7,396,[WAIT("Ee"),STR VALUE \ 21]

Sanirim Serin ilk gelen veriyi tam alamiyor o yüzden böyle oluyor


Harici eeprom a proteusda  manual olarak bilgi yazabilmek mümkünmüdür bilmiyorum ama deneyebilirsin

olmazsa;

Yeni bir text dosyasi olusturup, yukaridaki yazdigin mesajdaki harflerin hepsini tek, tek hex(byte) olarak o dosya icerisine kayit yap.  Sonra proteus'da eeprom modeli üstüne önce sol sonra sag tiklayip "initial  eeprom data" olarak bu text dosyayi göster.

cesurcelik

@fsan
ilk onerini denedim; sonucunda eeproma hic bir sey yazmiyor. ikinci onerine gelince
eeproma yazacagim bilgiyi
(dolayisiyla code ta i2cwrite kismini kaldirdim)
initial contents of memory kismina, notepad e yazdigim, gonderecegim datanin  code larini yazdim ''454142434445454748'' gibi..
ayrica EABCD... gibi kaydedip yukledigimde de, bu character leri eeprom da goremedim  ve epromdan okudugum  address bilgisi dolayisiyla her addresste ,0, sonuc okudum, her iki durumda da...
ayrica hocam
internal i2c memory sinde okudugum bilgi

0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................

0350: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0360: FF FF FF FF FF 41 42 43 44 45 46 47 48 49 4A 4B | .....ABCDEFGHIJK
0370: 4C 4D 4E 50 52 53 54 55 FF FF FF FF FF FF FF FF | LMNPRSTU........
0380: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................


0740: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0750: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0760: FF FF FF FF FF 41 42 43 44 45 46 47 48 49 4A 4B | .....ABCDEFGHIJK
0770: 4C 4D 4E 50 52 53 54 55 FF FF FF FF FF FF FF FF | LMNPRSTU........
0780: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0790: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................

seklinde
normalde,  gonderdigim datanin, i2c nin ilk adresinden itaibaren
yerlestirmesi gerekmiyormu?



ilgin icin cok teşekkür ederim

fsan

Alıntı yapılan: "cesurcelik"@fsan
ilk onerini denedim; sonucunda eeproma hic bir sey yazmiyor.
Merhaba,
program baslarinda TRISC tanimlamasi yaptinmi?
TRISC = %10X10XXX  ' X bitler 1 veya 0; 1=gris, 0=cikis
PORTC = 128 + 64 ' bit 7 ve 6 = 1  
Serin/Serout önüne koydugumuz "High portc.x" ve Beklemeleri kaldirip birde yukarida gibi yazip denermisin?
Alıntı Yap

ikinci onerine gelince
eeproma yazacagim bilgiyi
(dolayisiyla code ta i2cwrite kismini kaldirdim)
initial contents of memory kismina, notepad e yazdigim, gonderecegim datanin  code larini yazdim ''454142434445454748'' gibi..
ayrica EABCD... gibi kaydedip yukledigimde de, bu character leri eeprom da goremedim  ve epromdan okudugum  address bilgisi dolayisiyla her addresste ,0, sonuc okudum, her iki durumda da...
ayrica hocam
internal i2c memory sinde okudugum bilgi

0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................

0350: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0360: FF FF FF FF FF 41 42 43 44 45 46 47 48 49 4A 4B | .....ABCDEFGHIJK
0370: 4C 4D 4E 50 52 53 54 55 FF FF FF FF FF FF FF FF | LMNPRSTU........
0380: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................


0740: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0750: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0760: FF FF FF FF FF 41 42 43 44 45 46 47 48 49 4A 4B | .....ABCDEFGHIJK
0770: 4C 4D 4E 50 52 53 54 55 FF FF FF FF FF FF FF FF | LMNPRSTU........
0780: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0790: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................

seklinde
normalde,  gonderdigim datanin, i2c nin ilk adresinden itaibaren
yerlestirmesi gerekmiyormu?

Bak bunu düsümemistim iste sağol :)
Bu Hex dosylar icerisinde adres bilgiside sakliyor galiba bu yüzden notepad ile değil de herhangi bir hex editorlu program kullanmak lazim demekki. Bunu icprog veya baska bir programda kullandigin eeprom tipini secip orada hex bilgilerini yazabilirsin.

basarilar.

CaFFeiNe

@cesurcelik

http://picproje.org/index.php/topic,172&postdays=0&postorder=asc&highlight=seri&start=15

burada yazdıklarımı deneyebilirmisin daha öncede "dombilik" nikli arkadaşın buna benzer problemi vardı

cesurcelik

merhaba,

@fsan

trisc tanimlamasini ,seninde yazdigin gibi, yapmistim.


@CaFFeiNe
hocam verdiginiz linki inceledim,
ben stringi, vb de yazdigim kucuk bir programla   veya VbHex adli bir programla gonderiyorum, yani proteus un kendi terminalini kullanmiyorum ayrica compim in RX ,TX i ile pic in RX, TX i arasinda  1k lik direnc var.


ilginiz  ve degerli zamaniniz icin icten teşekkürler.

Lütfi AYYILDIZ

Bu satır problemini çözebilir.

DEFINE I2C_SLOW  1

8Mhz e kadar olan kristallerde bunu kullanmak gerekmiyor.Sen 20Mhz lik kristal kullanmışsın Bu da okuma ve yazmada problem yaratabilir.

cesurcelik

@cobra07
teşekkürler evet haklisin..  sorunu
DEFINE I2C_SLOW 1 kullanarak cozmustum..
mutlu gunler