ESP32 Döngü Gecikme Hatası

Başlatan berkay_91, 15 Ağustos 2021, 22:36:14

berkay_91

Merhaba, ESP32 kullanırken void loop() fonksiyonunun içerisine gecikme koymazsam hata veriyor, 5 ms gibi küçük gecikmeler eklediğimde döngünün içerisinde, çağırdığım fonksiyonlara erişip çok güzel çalışıyor. fakat bazen 5 ms büyük kayıplar yaşatıyor bunun önüne nasıl geçebilirim?

ahmet35

#1
delay(0); veya yield(); ekleneyerek deneyin. Bu komutlar WDT sayacını sıfırlar.

Arduino kullanmıyorsanız vPortYield(); ekleyin.

fyper

esp nin kendi iç fonksiyonları var onlar için delay ya da operasyon vb. koymak gerekiyor .  5ms den daha düşük denediniz mi?

github ta firmanın repo su var sorulmuş olabilir, konuyu orada da araştırmanız iyi olacaktır.

berkay_91

Alıntı yapılan: ahmet35 - 16 Ağustos 2021, 12:13:24delay(0); veya yield(); ekleneyerek deneyin. Bu komutlar WDT sayacını sıfırlar.

Arduino kullanmıyorsanız vPortYield(); ekleyin.

arduino derleyicisini kullanıyorum, yield(); komutu işe yaramadı


ahmet35

Bence WDT kapatmak iyi bir yöntem değil. Bunun yerine loop içerisideki fazla zaman harcayan fonksiyon, döngü vb. bulup, onun içerisine delay(0); eklemek daha iyi olur.

ozkarah

ESP8266'da bu problemle çok karşılaştım ama ESP32 çift çekirdekli ve hiç delay olmadan kare dalga üreten bir kod ile denedim, hiç kırılmadı.

Kodunuzu paylaşabilir misiniz?