EEPROM PROTEUS HATASI

Başlatan Semiyun, 02 Ocak 2021, 23:07:59

Semiyun

İyi Günler

18F4550 kullandığım bir projede proteus ile simülasyon yaptığım zaman bu hatayı alıyorum.

[PIC18 EEPROM] PC=0x02CE. Modification of EECON1 whilst a read or write is in progress (RD or WR set) is not ambiguous and not supported. EECON1 is unmodified.

PROGRAMDA EEPROM İLE İLGİLİ KULLANDIĞIM KODLAR

sure değişkeni unsigned short olarak tanımlı

programın main kısmında yazılı:
sure=EEPROM_Read(0);

kaydetme butonunda yazılı:
EEPROM_Write(0,sure);

Programa eeprom satırlarını eklediğim zaman mikroc hata vermiyor ancak proteusda hata veriyor.

Bu sorun proteusdan mı kaynaklı yoksa ben mi biryerde yanlışlık yapıyorum ?

ete

Anladığım kadarı ile Eproma bir yazma emri verdikten hemen sonra henüz yazma işlemi tamamlanmadan yeni bir yazma yada okuma emri veriyorsunuz. Özellikle yazma işleminin en azından yeni bir komut vermeden önce 10 ms bekletilmesi gerekir. Bu süre zarfında yazma işlemi tamamlanır ve ardından yeni bir yazma yada okuma yapabilirsiniz demektir. Şayet bu şekilde bir zamanlama hatası yapıyorsanız bu bir derleme hatası değildir. Dolayısıyla derleyici bu hatayı görmez. Ama Proteus uygulayıcıdır ve hata uygulama anında ortaya çıkacağı için görür hatayı.
İki yazma yada yazmadan sonra okuma komutlarını verirken en azından 10 ms lik gecikme ekleyiniz programa. Okuma komutları gecikme istemez. Yanlızca yazma komutları ister.

Ete

Semiyun

Alıntı yapılan: ete - 03 Ocak 2021, 10:21:22Anladığım kadarı ile Eproma bir yazma emri verdikten hemen sonra henüz yazma işlemi tamamlanmadan yeni bir yazma yada okuma emri veriyorsunuz. Özellikle yazma işleminin en azından yeni bir komut vermeden önce 10 ms bekletilmesi gerekir. Bu süre zarfında yazma işlemi tamamlanır ve ardından yeni bir yazma yada okuma yapabilirsiniz demektir. Şayet bu şekilde bir zamanlama hatası yapıyorsanız bu bir derleme hatası değildir. Dolayısıyla derleyici bu hatayı görmez. Ama Proteus uygulayıcıdır ve hata uygulama anında ortaya çıkacağı için görür hatayı.
İki yazma yada yazmadan sonra okuma komutlarını verirken en azından 10 ms lik gecikme ekleyiniz programa. Okuma komutları gecikme istemez. Yanlızca yazma komutları ister.

Ete

Cevabınız için teşekkür ederim eeproma yazma işleminden sonra 300mslik bir gecikme var sorun şu ki daha yazma komutunu göndermeden proteus yukarıda yazdığım hatayı her saniye veriyor.16F serisi kullanırken hiç böyle bişey yapmamıştı acaba 18F serisinde başka bir ayar mı yapmak gerekiyor ?

dnaci

@Semiyun hatada eecon1 register hatası görülüyor. Normalde biz eproma yazarken veya okurken bu registeri kullanmayız, derleyiciler bizim yerimize bunu hallediyor. Burada ya derleyicide bir sıkıntı var bu işi yapmıyor yada proteusta bir sorun var. Mikroc sürümünüz nedir.

Semiyun

Alıntı yapılan: dnaci - 03 Ocak 2021, 19:16:14@Semiyun hatada eecon1 register hatası görülüyor. Normalde biz eproma yazarken veya okurken bu registeri kullanmayız, derleyiciler bizim yerimize bunu hallediyor. Burada ya derleyicide bir sıkıntı var bu işi yapmıyor yada proteusta bir sorun var. Mikroc sürümünüz nedir.

MikroC 7.6.0 sürümü, Proteus simülasyonunda program doğru çalışıyor sadece devamlı bu hatayı veriyor heralde proteusdan kaynaklı bir sorun.
 

dnaci

Bir proteus hatası o zaman. Devreniz gerçekte sorunsuz çalışacaktır. Ancak eeproma sürekli veri yazmanız ömrünü kısa sürede tamamlamasına sebeb olur. 100bin yazma yapılabilir eproma.

Semiyun

Alıntı yapılan: dnaci - 03 Ocak 2021, 20:00:08Bir proteus hatası o zaman. Devreniz gerçekte sorunsuz çalışacaktır. Ancak eeproma sürekli veri yazmanız ömrünü kısa sürede tamamlamasına sebeb olur. 100bin yazma yapılabilir eproma.
Sıkıntı yok hocam sadece set tusuna basıldığı zaman veriyi kaydedecek.İlgilendiğiniz için teşekkür ederim.

ete

Bu işlemcide sigorta ayarlarında ;
 __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
ayarı bulunuyor. Aşağıdaki açıklamaya bakarsanız ;
_WRTD_ON_6H          EQU  H'7F'; Data EEPROM is write-protected
_WRTD_OFF_6H         EQU  H'FF'; Data EEPROM is not write-protected

_WRTD_ON_6H şeklinde kullanırsanız eproma yazamazsınız. Muhtemelen hata budur.

_WRTD_OFF_6H şeklinde kullanılmalıdır.

Ete


dnaci

Alıntı yapılan: ete - 03 Ocak 2021, 21:16:49Bu işlemcide sigorta ayarlarında ;
 __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
ayarı bulunuyor. Aşağıdaki açıklamaya bakarsanız ;
_WRTD_ON_6H          EQU  H'7F'; Data EEPROM is write-protected
_WRTD_OFF_6H         EQU  H'FF'; Data EEPROM is not write-protected

_WRTD_ON_6H şeklinde kullanırsanız eproma yazamazsınız. Muhtemelen hata budur.

_WRTD_OFF_6H şeklinde kullanılmalıdır.

Ete


Hocam iyi bir noktaya değindiniz. Mikroc için config ayarlarına baktım öntanımlı olarak wrtd kapalı görülüyor. Mikroc config ekranı menü seçmeli tasarlanmış. @Semiyun  config ayarlarını da merak ettim şimdi.


Semiyun

Hocam ayarlar bu şekilde ayarlı.



dnaci

Sizde de olması gerektiği gibi bu ayarlar kapalı. Gerçek devrede deneme imkanınız oldumu?

Semiyun

Alıntı yapılan: dnaci - 04 Ocak 2021, 22:06:20Sizde de olması gerektiği gibi bu ayarlar kapalı. Gerçek devrede deneme imkanınız oldumu?
Gerçekde deneyemedim daha ama sanırım gerçekde problem olmayacak çünkü proteusda da çalışıyor hata verdiği halde.Sanırım proteus ile alakalı bir sorun.

Powered by EzPortal