Picproje Elektronik Sitesi

DERLEYİCİLER => MikroC - PIC => Konuyu başlatan: mert0701 - 04 Ocak 2018, 19:59:22

Başlık: Mikro C 16F877 EEPROM Okuma Yazma
Gönderen: mert0701 - 04 Ocak 2018, 19:59:22
Arkadaşlar Mikro C de 16F877a nın EEPROM una veri yazıp okumaya çalışıyorum ama bir türlü beceremedim. Bu konuda bilgisi olanlar yardım ederse sevinirim. Yazdığım kod ISIS simülasyonunda çalışırken PİC e yüklediğimde çalışmıyor. Forumlarda 16F877a nın EEPROM unda sorun olduğunu okudum, kimiside sorun yok yazıp okuyabiliyorum demiş. Sorun bende mi PİC te mi anlamadım. EEPROM a okuma yazmayı gerçeklemiş olanlardan (simülasyonda çalıştırmaktan bahsetmiyorum) yardım istiyorum. Kodlarımda sorun varmı? Şimdiden teşekkürler.

unsigned short veri = 0x09;
unsigned short address=0x00;

void main() {
ADCON1|=0x07;
CMCON|=0x07;
INTCON.GIE=0;
PORTC = 0x00;
TRISC = 0x00;

EEPROM_Write(address,veri);
Delay_ms(20);
PORTC = EEPROM_Read(address);
Delay_ms(500);
}
Başlık: Ynt: Mikro C 16F877 EEPROM Okuma Yazma
Gönderen: mehmet - 05 Ocak 2018, 01:28:30
Kontrolsüz şekilde E2PROM a veri yazmak
belli bir adetten sonra hücreleri öldürür.
Bu sayı ilgili mcu kataloğunda mevcuttur.

Burada bir butona basıp yazdırmak/okumak
daha uygun olacaktır. Muhtemelen son yazdığınız
değer kalıyor olmalı.
Geçici olarak yazma adresini değiştirip deneyin.
Başlık: Ynt: Mikro C 16F877 EEPROM Okuma Yazma
Gönderen: mg1980 - 05 Ocak 2018, 10:26:28
Ana fonksiyonda değil de ayrı bir yazma fonksiyonu oluşturup @mehmet'in dediği gibi bir butonla yazdırsanız veya bir sayaç çalıştırıp belirli bir sayıya ulaşınca yazdırsanız..ayrıca okuma için de biraz ara verseniz...
Başlık: Ynt: Mikro C 16F877 EEPROM Okuma Yazma
Gönderen: mert0701 - 05 Ocak 2018, 18:06:12
Verdiğiniz cevaplar için teşekkürler ancak normalde kodlarım bunlar değil normalde sonsuz döngü ve yazma fonksiyonu var. Okuma yazma yaptıramayınca basite indirgeyip bu kodları yazdım yani normalde iki tane pin girişine lojik1 gelirse yazma fonksiyonuna gidiyor sürekli yazdırmıyorum. Bu kodlarla sadece okuma yazma yaptırmaya çalışıyorum bu kodlarda sonsuz döngü yok zaten ve yazdırma işleminden sonra 20ms okuma işleminden sonra 500ms bekleme var. Birde osilatör frekansım 4 MHz bu frekans EEPROM a okuma yazma yaptırmak için düşük kalıyor olabilir mi? Ama araştırırken bir sitede 16f628 ile 4 MHz frekansla yazma okuma yaptırdıklarını gördüm. Ayrıca Mikro C derleyicisinin örneklerindeki EEPROM kodlarınıda 16f877 ye uyarlayıp denedim yine olmadı.
Başlık: Ynt: Mikro C 16F877 EEPROM Okuma Yazma
Gönderen: dursuncemal - 05 Ocak 2018, 20:56:54
ana menu icinde sonsuz dongun yok? bu sekilde tazarsan islemcin birkere okuyup porta yazar.port c deki veriyi led yardimi ile mi goruyorsun?



unsigned short veri = 0x09;
unsigned short address=0x00;

void main() {
ADCON1|=0x07;
CMCON|=0x07;
INTCON.GIE=0;
PORTC = 0x00;
TRISC = 0x00;

EEPROM_Write(address,veri);
Delay_ms(20);
PORTC = EEPROM_Read(address);
Delay_ms(500);

   while(TRUE)
   {
                         //sonsuz dongu
   }
}

Başlık: Ynt: Mikro C 16F877 EEPROM Okuma Yazma
Gönderen: mert0701 - 05 Ocak 2018, 22:05:28
Evet dursuncemal bey led ile görüyorum. Sonsuz döngü yapmamamın nedeni bu kodları okuma yazma yapacak mı  deneme amaçlı kullanmamdan dolayı vede EEPROM a sürekli veri yazamıyoruz belirli sayıda yazma ömrü var (bir yerde 350.000 defa diye okudum başka bir yerde 4.000.000 defa diye okudum). Bu kodlar deneme amaçlı normalde sonsuz döngü ve yazma fonksiyonu kullanıyorum.
Başlık: Ynt: Mikro C 16F877 EEPROM Okuma Yazma
Gönderen: dursuncemal - 06 Ocak 2018, 13:23:05
osilator frekansi eeproma yazmada 4mhz sorun yaratmaz micro c cok hakim oldugum bir derleyici degil fakat soyle bir goz atiim yazmamasi icin bir sebep bulamadim.devrenin calistigina emin ol ilk once portc deki ledleri flash yaptir osilatorunun calistigina emin ol.baskada bir sikinti gorunmuyor.