1. sayfa
ds1820_read(); fonksiyonunu bulamıyor. Bunun geçtiği (kodlarını mesaj içerisinde paylaştığınız kütüphane) .h veya .c dosyasını bu fonskiyonu kullandığınız unit içerisinde üstte #include <dosyaadi.c> şeklinde projenize dahil etmeniz gerekiyor. |
ds18b20.c dosyası include edildi. Programın başında include <ds18b20. c> satırı var. O kısma defalarca baktım. Sürücü dosyası ds18b20.c olarak kayıtlı burada da hata yok. < Resime gitmek için tıklayın > //Bismillahirrahmanirrahim |
Hazır kurulu ccs yok bende ama ccsnin standart kütüphaneleri içindede ds1820.c var diye hatırlıyorum. İsim benzerliğinden dolayı kendi standart olanı önce görüyor olabilir. Bunu anlamanın kolay yolu sizin kullandığınız ds1820.c nin dosya ismini farklı bir şey yapın ve #include yaptığınız yerde bu yeni ismi kullanın. Yukarıdaki paylaştığınız kod örneğinde bir problem görünmüyor. |
Koda bakınca konu ile çok alakalı olmayan ama gereksiz / hatalı kullanım gözüme çarptı. while(TRUE) { enable_interrupts(INT_RDA2); // <<----- bu kısım gereksiz. Zaten yukarıda enable yapıldı. Başka yerdede disable yapılmıyor. genCounter++; |
Üstadım bu kodlar uğraştığınız geliştirme kartı ile birlikte gelen örnek kodlarmı? Gözüme #INT_RDA2 void rda2_isr(void) { ....... } içindeki kullanım çarptı. Kesme içerisinde do While kullanımı çok çok yanlış bir uygulama. |
Çalıştığım kartla birlikte bana gönderilen örnek kodlar. Saat üzerinde çalışan bir Firmware var. Sıcaklığı DS18B20'den mi alıyor yoksa SHT11'den mi aliyor bilmiyorum. Açıkçası şu aşamada hata veren ds1820_read fonksiyonuna odaklandığım için kesmelere dikkat etmedim. Kesme içinde sonsuz döngü kullanılması hatalı bir kullanım evet. Kesme fonksiyonun işi bittiğinde kesmeden çıkmayı engelleyecek bir şeydir bu. Belki de saatteki laglı çalışma bundan kaynaklanıyordur. Saniyeler bazen iki üç saniye takılıyor. 1,2,3,4 diye düzenli gitmiyor. Alette kod koruması yok, içindeki kodu okutup yedeğini aldım. O da kenarda duruyor. |
ds18b20.c dosyasının adını değiştirince düzeldi. |
Tahminimiz doğru çıktı, ama bu durum beni şaşırttı doğrusu. Derleyiciler sistemde aynı isimde kütüphaneler olduğunda, kaynak kodların bulunduğu klasördekine öncelik tanır ve onu import eder. CCS bu noktada farklı bir yol tercih etmiş demekki ![]()
Kart ile birlikte gelen kodların paylaştığınız kadarından edindiğim intibaya göre kötü kodlama / algoritma ve sistem kaynaklarının düzgün kullanılmaması gibi durumların geri kalan kütüphane ve örneklerdede olacağını tahmin ediyorum. Bu nedenle performans problemi çıkartacak farklı durumlar ile karşılaşmanız kuvvetle muhtemel.
Kodlara bakmadan, eğer her iki sensörde bağlı ise, bir tanesini biraz ısıtın, test uygulamalarında ekranda sıcaklık gösteren bir örnek varsa sonucu oradan gözlemleyebilirsiniz. Ayrıca SHT11 in nem ölçme özelliğide var. Örnek uygulamada nem ile ilgili bir şey varsa oradanda ayrıştırabilirsiniz. |
Saatin içindeki yazılımdan. Saati yapan adam çeşitli forumlarda fide kullanıcı adıyla yer alıyor. Burada yok sanırım. Bana söylediğine gore: < Resime gitmek için tıklayın > Hava yazan yerdeki sıcaklık bilgisi DS18B20'den geliyormuş. Alt satırda T yazan yerdeki sıcaklık SHT11'den geliyormuş. H yazan yer Nem(humidity), L de ortam ışığı miktarı. |
1. sayfa
Fonksiyonu çağırdığım şu if ifadesini /* */ ile devre dışı bırakıp compile ettiğimde hata ortadan kalkıyor.
Ürün bu:
https://fidenetgaraj.blogspot.com/2018/06/masaustu-dijital-saat-yapalm.html?m=1
Sorun nerede acaba?
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi ipli jeton -- 4 Mart 2024; 18:54:17 >
< Bu ileti mini sürüm kullanılarak atıldı >