Sonsuz Döngü

Burada şöyle bir durum da var: Sen ekrana ne zaman birşey yazsan, komple ekranı temizliyorsun, sonra birşeyler yazıyorsun ve sonra da gönderiyorsun. Bu gerekli olmayabilir. Mevcut ekrana sadece bir çizgi ilave edip sonra göndermek de işe yaraması lazım.

Bir de tam olarak hangi fonksiyon en çok işlemci yiyor anlamak için clear buffer, send buffer, drawline artık neyse her birisini tek tek zaman ölçümü yapabilirsin:

C++:
void loop()
{
    digitalWrite(BOS_BIR_GPIO, HIGH);
    u8g2.clearBuffer();
    digitalWrite(BOS_BIR_GPIO, LOW);
    
    // pals fazla sivri olmasin diye koydum
    delay(100);
}
 
Sen ekrana ne zaman birşey yazsan, komple ekranı temizliyorsun
Bu dediğini daha önce fark edip sadece gereken yerlere clearBuffer ekledim. Şuanda her defasında clearBuffer göndermek gibi bir durum yok.

Bir de tam olarak hangi fonksiyon en çok işlemci yiyor anlamak için clear buffer, send buffer, drawline artık neyse her birisini tek tek zaman ölçümü yapabilirsin:
Yaparım ama bunlardan birşey çıkacağını sanmam. Kodun toplamı zaten for döngüsü olmazsa 8ms sürüyor.
Buna dayanarak for döngüsündeki 63 ile sendBuffer'ın gönderildiği 8ms çarparsak zaten 500ms filan yapıyor. Bu durum gecikmeyi açıklıyor.
Benim derdim bu for döngüsü her yere karışıyor mu onu anlamak. Bunun içinde for döngüsünü kapatıp, sıkıntı çektiğim diğer kod bloğunu çalıştırarak zamanı takip edeceğim.
 
Kodun tamamı 8 ms sürüyor tamam. Ama hangi fonksiyon götürüyor bu zamanı? Eşit olarak paylaştığını sanmıyorum. Büyük ihtimalle bir tanesi yapıyor bunu.
 
Kodun tamamı 8 ms sürüyor tamam. Ama hangi fonksiyon götürüyor bu zamanı? Eşit olarak paylaştığını sanmıyorum. Büyük ihtimalle bir tanesi yapıyor bunu.
Tamam abi. Yarın bakacağım ona. Şimdi mesaiye başladım artık.
 
Kodun tamamı 8 ms sürüyor tamam. Ama hangi fonksiyon götürüyor bu zamanı? Eşit olarak paylaştığını sanmıyorum. Büyük ihtimalle bir tanesi yapıyor bunu.
Her ölçtüğümde farklı sonuç alıyorum yav. Dediğin gibi elemanları tek tek ölçtüm. 1-2ms hepsi. (Tabi yanlış ölçmediysem).
Ama u8g2.sendBuffer() tek başına 358ms sürüyor. Daha önce hepsinin toplamını 8ms bulup suçu for döngüsüne atmıştım.

C++:
void loop() {
 
    u8g2.clearBuffer();
   
    drawF(0, 0, 128, 64, 1, 1, 126, 62); //Ölçemedim
   
    u8g2.setFont(u8g2_font_nokiafc22_tu); // 2ms
   
    u8g2.drawStr(27, 30, "RESETLENIYOR..."); //2ms
   
    u8g2.drawFrame(29, 40, 63, 7); // 8ms
   
    u8g2.drawBox(30, 40, 6, 6); // 0ms
    digitalWrite(16, LOW);
    u8g2.sendBuffer(); // 358ms
    digitalWrite(16, HIGH);
    delay(200);
     
   
}

sendbuffer.png
 
Tamam işte, o kütüphanede bir şekilde bir ayar var herhalde. Fazla hızlı yazıp da LCD nin sınırlarını aşmamak için muhafazakar davranıyor. O ayarı bulup azaltmak lazım.
 
Tamam işte, o kütüphanede bir şekilde bir ayar var herhalde. Fazla hızlı yazıp da LCD nin sınırlarını aşmamak için muhafazakar davranıyor. O ayarı bulup azaltmak lazım.
Bir ara bakayım bulabilecek miyim?
 
Yalnız süreyi yanlılş ölçmüşsün :) GPIO low ile GPIO high arasını ölçmen lazım.
 
Bir tam cycle ölçtüm ya. Ozaman ikiye mi böleceğiz? :D

sendBuffer'ın hemen girişinde ne yaptın? pini low yaptın. sendBuffer'ın çıkışında ne yaptın? pini high yaptın. O zaman bu fonksiyon ne kadar sürmüştür?
 
sendBuffer'ın hemen girişinde ne yaptın? pini low yaptın. sendBuffer'ın çıkışında ne yaptın? pini high yaptın. O zaman bu fonksiyon ne kadar sürmüştür?

Resimde yanlış hesaplamışım ya. 150ms olacak :katil2:
Sınav sorusu olsa basit hatadan kalmıştık :D

sendbuffer.png
 
Ben resime bakınca 160 ms gibi görüyorum.
 
Ben resime bakınca 160 ms gibi görüyorum.
O kadar ince hesap yapacaksak, iki nokta arası 20ms. LOW kısımı tam 0 da desek, HIGH kısımda ancak 5ms taşmıştır.
155ms ye tatlıya bağlayalım :D
 
Neyse olayın mantığını anladın. Ve osiloskobu da daha sık kullanıyorsun artık :)
 
Neyse olayın mantığını anladın. Ve osiloskobu da daha sık kullanıyorsun artık :)
Evet aşağı yukarı anladım. Sadece şu trigger voltajı kafamda tam oturmadı. Ne zaman elle ayarlasam yakalamıyor.
Bende önce Auto ile sinyali yakalayıp sonra triggeri aktif ediyorum. Ama daha öğrenmem gereken şeyler var. 1KHz sinyal 48MHz sinyal neye göre seçiliyor flan. Ama şimdi anlatma. İşim düşünce öğreniyorum çünkü :D
 
Evet aşağı yukarı anladım. Sadece şu trigger voltajı kafamda tam oturmadı. Ne zaman elle ayarlasam yakalamıyor.
Bende önce Auto ile sinyali yakalayıp sonra triggeri aktif ediyorum. Ama daha öğrenmem gereken şeyler var. 1KHz sinyal 48MHz sinyal neye göre seçiliyor flan. Ama şimdi anlatma. İşim düşünce öğreniyorum çünkü :D

Normal trigger ile ilgili bug var zaten. Boşuna tırmalamıyorsun. Adamlara söyledim bakalım düzeltecekler. Düzeldiktan sonra tam düşündüğün gibi çalışacak normal trigger.
 
Normal trigger ile ilgili bug var zaten. Boşuna tırmalamıyorsun. Adamlara söyledim bakalım düzeltecekler. Düzeldiktan sonra tam düşündüğün gibi çalışacak normal trigger.
Yav bende diyorum ne kadar beceriksizim. Ne yapsam bir tutarsızlık oluyor. :D
 
Tamam işte, o kütüphanede bir şekilde bir ayar var herhalde. Fazla hızlı yazıp da LCD nin sınırlarını aşmamak için muhafazakar davranıyor. O ayarı bulup azaltmak lazım.
Konuyla ilgili bir link buldum.
Sanırım ekran tanımlaması sırasında hızı belirleyebiliyoruz. Ama telefondan bakınca bir şey anlayamadım.


Screenshot_20220421-212532.jpg
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,657
Mesajlar
97,313
Üyeler
2,438
Son üye
İbrahimSönmez

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top