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?
delay(0); veya yield(); ekleneyerek deneyin. Bu komutlar WDT sayacını sıfırlar.
Arduino kullanmıyorsanız vPortYield(); ekleyin.
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.
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ı
https://github.com/espressif/arduino-esp32/issues/2493 (https://github.com/espressif/arduino-esp32/issues/2493)
bu kod ile sorun çözülüyor disableCore0WDT();
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.
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?