write_program_eeprom Kullanımı

Başlatan Mytolocia, 28 Eylül 2016, 13:35:32

Mytolocia

Merhabalar ;

Üzerinde çalıştığım projede PIC18F25j11 in eepromuna bytelar halinde veriler yazdırmak ve fonksiyon içinde tekrar okumak istiyorum. Daha önceden kullandığım 16F873'de işler çok daha basitti ve "write_eeprom(address)" -"read_eeprom(address)" komutları ile yazdırıp okuyabiliyorduk.

CCS manual'ından okuduğum kadarıyla yazdığım adreste önceden bir veri varsa üzerine yazmak yerine dump bir değer yazıyor ve o adresten tekrar veri okumak istediğimizde anlamsız veriler döndürüyor. Eğer eepromdan bir yer silmek istersek "block"lar halinde 1024 byte birden siliyor.  Aşağıdaki basit kod ile PIC içerisindeki belli adreslere main fonksiyonu içinde değerler yazdırıp onları okumak istedim fakat anlamsız veriler elde ediyorum. Yardımcı olabilirseniz sevinirim.

#include <main.h>
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <LCD.c>

int16 bilgi;

void main()
{


write_program_eeprom(16000,15);
write_program_eeprom(16001,25);
   while(TRUE)
   {

      bilgi = read_program_eeprom(16000);
      printf(lcd_putc,"\f%Lu",bilgi);
      delay_ms(500);
      bilgi = read_program_eeprom(16001);
      delay_ms(500);

   }

}


Main.h

#include <18F25J11.h>
#device ADC=10
#use delay(xtal,crystal=4MHz)



CCS 5.049 kullanıyorum.

Mytolocia


elektronikDelisi

printf fonksiyonu ile lcd'ye yazdırmak yerine değeri check eder misiniz?
if(read_program_eeprom(16000)==15)
{
// herhangi bir led yakma işlemi. LCD içermeyen bir komut.
}

kodda her hangi bi sıkıntı yok. aklıma iki hata geliyor. Birincisi LCD yazdırma değişken tipi sıkıntı olabilir. Bunu anlamak için yukardaki gibi test edebilirsiniz.
İkincisi donanım ile sıkıntı olabilir. Donanım ile çalışmadan önce Simülasyon programları ile kontrol ettiniz mi?

Kolay Gelsin.
aramızda bir elektrik var..