Proteus LCD LM016L Sorunu

Başlatan polleme, 25 Nisan 2011, 00:09:07

polleme

Merhaba,

Bir süredir CCS C ve PIC 16F8xx serisi ile uygulamalar yaparak kendimi geliştirmeye çalışıyorum. Son bir haftadır gördüğüm bir problem var, neredeyse her detayı inceledim ama bir türlü bir çözüm oluşturamadım. Bana bir yol gösterecek kişi olursa minnettar olurum. Problem şöyle:

Serdar Çiçek'in CCS C kitabında yer alan uygulamalardan "RS232 Seri İletişim Uygulaması" kodlarını denemeye çalışıyorum. Kitabın CCS C kodları ve önceden derlenmiş .hex dosyasını Proteus dosyası ile birlikte Proteus'ta açıp deniyorum, .hex dosyası ve Proteus sağlıklı çalışıyor, hiç sorun yok, klavyeden girilen bilgiler LCD ekranda görülebiliyor. Gelgelelim C kodu üzerinde hiçbir değişiklik yapmadan onu CCS C derleyicisi ile derleyip yeni bir .hex dosyasını kendim yaratıp aynı Proteus dosyası ile çalıştırmaya kalktığımda RS232 simülasyon ekranında yazılım çıktısı görünüyor, klavyeden karakter girmemi istiyor ama girdiğim karakterler LCD ekranda gözükmüyor. Buradan derlenmiş yazılımın çalıştığını ama LCD ekranla ilgili bir sorun oluştuğunu düşünüyorum. Üzerinde çalıştığım tüm dosyalar aşağıdaki linktedir, o dosyaların içinde orj.hex dosyası, önceden derlenmiş olarak gelen ve LCD'yi çalıştıran dosyadır. Yorum ve yardımlarınızı bekleyeceğim. Şimdiden çok teşekkür ederim.

http://www.fileserve.com/file/JN4rjNf


JKramer

Drivers klasöründeki lcd.c dosyasını kullanarak derledim, çalışıyor. (v4.108) Tüm dosyaları (16f877a.h, lcd.c ve RS232 Seri Comm App.c) bir klasöre koyup projeyi öyle derleyin.

polleme

Akşam test edebileceğim. Sorun çözülürse uyumamı sağlamış olacaksınız. Şimdiden teşekkürler.

GreeN

Tamamen ccs c versiyonu ile alakalı. 4.114 ile derledim lcd ye yazdıramadı ama  4.093 ile derledim çalışıyor.
Terörü Lanetliyoruz.

polleme

Şu ana kadar CCS'in 4.093, 4.114, 4.119 ve 4.120 versiyonlarını denedim. Hiçbirinde LCD ekrandan çıktı alamıyorum. Proteus simülasyonunda RS232 ekran geliyor, bir tuşa basınca kesme olduğunu gösteren yeşil LED yanıyor, kısacası simülasyon ile ilgili bir sıkıntı yok, ama LCD ekrana çıktı gelmiyor. Önceden derlenmiş orjinal .hex dosyasını deneyince hemen çalışıyor ve LCD'ye görüntü geliyor. Derleme bitimince aşağıda mesaj ekranına şu uyarı geliyor:

Interrupts disabled during call to prevent re-entrancy (LCD_send_nibble)
Interrupts disabled during call to prevent re-entrancy (LCD_send_byte)

sizde de bu uyarılar geliyor mu? Proteus dosyası aynı olduğundan ve Proteus kullanırken sadece .hex dosyalarını değiştirip deneme yaptığımdan Proteus'ta bir sorun olduğunu düşünmüyorum. Büyük ihtimalle derleme sırasında oluşan bir problem var. Bir yorum yapabilecek olan arkadaşımız var mıdır?

Çok teşekkür ederim.

polleme

Yine Serdar Çiçek'ten farklı bir uygulamayı daha denedim, "Paralel LCD Uygulaması". Yine çalıştığım dosyaları aşağıdaki linke ekledim. Program çok basit bir şekilde LCD ekrana yazılar yazıyor. Orjinal dosya olan orj.hex ve Proteus dosyası ile hiçbir sorun yok, yazılar LCD ekrana çıkıyor. Ama kaynak dosyayı hiçbir değişiklik yapmadan CCS C 4.120 ile derleyip elde ettiğim .hex dosyası (yine linkteki dosyada var) ile LCD ekrana yazı çıkmıyor. Proteus'ta PIC'ın bacaklarında sinyal değişimleri görünüyor ama nedense ekrana yazı gelmiyor. Bu tür bir problemle daha önce karşılaşan var mı? Bir yardım lütfen.

http://www.fileserve.com/file/tbxraka

JKramer

O uyarılar kesme içinde çok zaman harcadığınız için çıkıyor, yeni öğrendiğiniz için şimdilik gözardı edebilirsiniz.

Sorun lcd.c dosyasından kaynaklanıyor. Muhtemelen sürümler arası bazı değişiklikler yapılmıştır; ben sizin kodunuzla beraber diğer dosyaları da yükledim, buradan devam edersiniz. İlerleyen zamanlarda lcd.c dosyasını inceleyip sorunu bulursunuz, şu anda vakit kaybetmeyin:

deneme.zip

polleme

Gönderdiğiniz LCD.C dosyası ile bende var olan arasındaki farklar aşağıdaki gibi, diğer arkadaşlarımızın da görebilmesi açısından eklemek istedim.

Comparing files LCD.C and LCD_eski.C
***** LCD.C
       lcd_send_nibble(3);
       delay_ms(5);
***** LCD_eski.C
       lcd_send_nibble(3);
       lcd_send_nibble(0);
       delay_ms(5);
*****

***** LCD.C
   lcd_send_nibble(2);
   for(i=0;i<=3;++i)
***** LCD_eski.C
   lcd_send_nibble(2);
   lcd_send_nibble(0);
   delay_ms(5);
   for(i=0;i<=3;++i)
*****

Denemeyi akşam yapacağım ama bu konu aklıma yattı.

Teşekkürler.

polleme

Evet çalıştı! Sorun gerçekten LCD.C dosyasında imiş. Sn. JKramer'in verdiği LCD.C dosyasını drivers klasörüne kopyalayıp C kodunu tekrar derler derlemez Proteus'ta LCD ekran çalıştı.

Bu durumda LCD.C dosyasını kullanırken dikkatli olmak gerektiği ortaya çıkıyor, her yeni CCS C kurulumunda yukarıdaki linkte yer alan LCD.C dosyasını kullanmak gerekecek. Benim için iyi bir tecrübe oldu.

JKramer'e ve diğer yorum yapan arkadaşlara çok teşekkür ederim.

muratyamak10

bende denedim arakadaşa çok teşekkür ederim yanlız bu seferde  ekrana y değerini 0 yazdı

CyberX-TR

Kac Gündür Bunla Urasıyodum Allah Razı Olsun :)