Proton harici EEPROM kullanma ile ilgili sorularım.

Başlatan M.A.A, 20 Nisan 2015, 12:10:17

ramazan5016

hocam ben ccs c dili ile pic programlıyorum.Basic deki pulsın komutu ccs c deki hangi komuta denk geliyor acaba.İnternette çoğunlukla basic dersleri var .Acaba ccs c yi bırakıp basic mi geçsem ki.

ramazan5016

Yani hocam tam olarak ccs c dilinde diyelim ki 50 kesme yaptık kaynaklarda 50 kesmede 10 milisaniye 1, 10 milisaniye 0 şeklinde kesme yapılıyor.Benim pice okutmak istediğim pulse değeri ise 2 milisaniye 1, 18 milisaniye sıfır şeklindeki bir sinyali nasıl pice tanıtacam.Kaynaklarda kesme süreleri eşit 10 mili saniye bir 10 milisaniye sıfır o yüzden burda tıkandım

Kesmeyi yanlış algılıyorsun.
İlk açılışta PORTB.0 yükselen kenarda kesme yaratacak şekilde kurulur. Sinyal geldiğinde kesme oluşur ve kesme içinde ilk iş tmr1 sıfırlanarak aktiv edilir ve kesme düşen kenarda oluşacak şekilde ayarlanır. Kesmeden çıkılır. Yeniden kesme oluştuğu zaman hemen TMR1 değeri bir değişkene aktarılır bu sana HIGH puls süresini verecektir aradığında budur zaten.

Bir başka yöntem de, yükselen kenarda kesme oluştuğunda tmr0 veya tmr1 sıfırlanır ve kenar düşünceye kadar orada beklenir kenar düşünce tmr değeri değişkene aktarılır buda sana high peryodunu verecektir.

Ete
 

ramazan5016

Anladım hocam çok teşekkür ederim bilgileriniz için. Şimdi bu dediklerinizden faydalanarak kesmeleri yeniden yazacam.Tekrar teşekür ederim.

M.A.A

#18
Denemeler de kayıt etme ve okuma konusunda başarılı olmuştum. Ancak bazı sıkıntılarla karşılaştım.

HBusIn $D1,$00,[Str BILGI\8] ' Read 8 bytes from DS1307

'Bu şekilde saniyede bir o anki tarih ve saati harici eeproma kayıt yapıyorum.

If BILGI[0]!=DEGISSN Then
    HBusOut $A0,EEADRES,[BILGI[4],BILGI[5],BILGI[6],BILGI[2],BILGI[1],BILGI[0]]
    DelayUS 100
    DEGISSN=BILGI[0]
    EEADRES=EEADRES+6
End If

'Bu şekilde de okuma yapıp ekrana basıyorum

    HBusIn $A1,EEADRES,[BILGI[4],BILGI[5],BILGI[6],BILGI[2],BILGI[1],BILGI[0]]   
    Print At 1,1," ", Hex2 BILGI[4],"/", Hex2 BILGI[5], "/", Hex2 BILGI[6] ,"  ",  Hex2 BILGI[2],":", Hex2 BILGI[1], ":", Hex2 BILGI[0], " "
    Print At 4,1,Dec5 EEADRES,"     


Bazı EEADRES değerlerinde ekrana basılan değerler beklediğim gibi çıkmıyor.

1-2-3
128-129-130-131
256-257
385-386-387
512-513-514-515
640-641
769-770-771
896-897-898-899
1024-1025
1153-1154-1155

Bu adreslerde sorun çıkıyor, sorun çıkan adresler periyodik olarak devam ediyor. Bunun nedeni ne olabilir ?

M.A.A

Ete Hocam işin içinden çıkamadım.

Gerçek devrede hem I2COut , hemde HBusOut da aynı sorunlar ile karşılaşıyorum. Isıs te denediğimde HBusOut hiç çalışmıyor. I2COut çalışıyor fakat gerçek devredeki aynı sorunlar oluyor.

Birçok deneme yaptım.Sonraki kayıt önceki kaydı bozuyor. Sorun yazmada.

http://s3.dosya.tc/server8/p32r1c/etepic_eeprom.rar.html

ete

Proton için söyleyecek lafım yok. Bağlantıda ve programda bir sorun göremedim. Yalnızca bazen dizi değişkenlerini bu tür komutlar kabul etmeyebiliyor. Ancak hata vermiyorsa kabul ediyor demektir.
Yinede o değişkenleri tek değişkenlere aktarıp öyle bir yazma denemesi yapmanı öneririm.

Ete

M.A.A

Yazarken ve okurken tek değişkene aktardım sorun düzelmedi, ds1307 yi iptal edip sadece EEPROM u bağladım gene düzelmedi hocam.

ete

Yapacak bir şey yok maalesef.
Sırf göreyim diye PBP da basit program yazdım ve 24LC512 eproma istediğim gibi yazıp okuyabildim.
PBP da bu sorunsuz çalışıyor. Tabiiki simulasyonda çalışıyor gerçek devrede denemedim ama çalışacağından eminim.

Ete

M.A.A

Bende dün PBP  için gerekli programları kurdum, kodu PBP ya çevirmeye çalıştım ama çok yerde takıldım. Protona çok alışmıştım, şimdi PBP ya geçmek baya zor olacak nu yüzden Proton da hazır kod kullanmadan IIC kullanmayı denemeyi düşünüyorum

Maxim

hangi versiyon proton yüklü? ve programda interrupt kullanılıyormu?

M.A.A

#25
Versiyon : 3.5.2.7
Normalde interrupt kullanıyorum ama EEPROM yazmada sorun çıkınca, her şeyi kapatıp sadece EEPROM a yazma, okuma ve LCD ekrana basma yapıyorum. Sorun devam ediyorum.
Mesela çoklu yazmada 128 nolu adrese yazması gerekeni 0 nolu adrese yazıyor. Tekli olarak 128 e yazdığım doğru yere yazıyor.

Maxim

öncelikle kullandığın versiyon çok eski
500 tane güncelleme yapıldı, şu anki son versiyon 3.5.7.7
yeni versiyona geçmen şart bi kere.

daha önce hiç tecrübem olmadı ama sormak isterim
external eeproma yazarken bekleme yapılması gerekmiyormu?

hbusin-out komutunun bitrate hız ayarı var ona baktınızmı?
Declare Hbus_Bitrate


M.A.A

Deneme sürümü olmayan versiyon elimde bu var maalesef, diğer versiyonlara baktım biraz önce linkler eski.

hbusin-out komutları donanımsal IIC kullanmak için diye biliyorum, gerçek devrede bu komutlar ile denedim. ISIS denemelerinde bu komutlar ile Ds1307 den bile veri alamadım.

Declare Hbus_Bitrate 100,400 ve 1000 olarak gerçek devrede  denedim, bekleme süresi olarak 10Ms ve 100Ms olarak denemeler yaptım, sonuç değişmedi.

Isıs te  I2COut-In komutlarını kullanarak deneme yapıyorum. Isiste IIC Debugger bağlayıp sorunlu olan yerleri inceledim, her şey doğru görünüyor.

Isıs ve Proton dosyasını önceki mesajlarda paylaşmıştım.

Maxim

#28
buradaki örneği inceleyin..
http://www.protonbasic.co.uk/content.php/4534-DS1307-Real-Time-Clock-Interfacing-with-Proton

kullandığınız versiyon 4.5 sene önceki
dolayısı ile yeni versiyonu bir şekilde bulmanız şart

M.A.A

Alıntı yapılan: Maxim - 19 Şubat 2016, 13:40:33
buradaki örneği deneyin..
http://www.protonbasic.co.uk/content.php/4534-DS1307-Real-Time-Clock-Interfacing-with-Proton

Yanlış anlattım galiba. Gerçek devrede ve Isıste I2COut-In komutları ile DS1307 de sorunum yok, rahat bi şekilde kullanıyorum.
Gerçek devrede hbusin-out komutları ile DS1307 yi kullanabiliyorum Isıs te kullanamıyorum çalışmıyor.

EEPROM yazma sorunum hem gerçek devrede hem hbusin-out hemde I2COut-In komutları ile oluyor, ISIS te hbusin-out komutları hiç çalışmazken  I2COut-In komutları ile sorunlu çalışıyor.

Siz dosyaları dosyaları indirip denediniz mi ?

Powered by EzPortal