Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: AKAY989 - 29 Aralık 2022, 13:59:02

Başlık: Seri haberleşen Sensör okuma aralığını ayarlama
Gönderen: AKAY989 - 29 Aralık 2022, 13:59:02
Herkese merhaba iyi çalışmalar
dht22 ile tek kablolu seri haberleşme yapıyorum
Sensör data sheet inde sensör okuma hızını 2 ms olarak belirtmiş üretici.
Aynı zamanda yazılımımda ds1307 ile zaman uygulaması da mevcut.
while(1) { delay_ms(1000); . . . . . } veya ms(2000) yapinca sorun cozuluyor ancak
sonsuz dongu icerisindeki menu time vs hepsi sekteye ugruyor.
gecikmeyi kaldırdıgımda ise 255-245, 255-246, 255,244 gibi degerler cikiyor, oynuyor surekli
(245,246 sicaklik degeri; unsigned int16 olarak biraktim float yapmadim gozlemlemek icin)
okuma sıklıgını ayarlayabilmek için önerilerinize danışmak istiyorum
tesekkur ederim
Başlık: Ynt: Seri haberleşen Sensör okuma aralığını ayarlama
Gönderen: uzaylivolkan - 29 Aralık 2022, 15:16:23
Multitasking işlemlerine, FreeRTOS bakabilirsiniz.
Aşağıdaki linkteki örneği inceleyebilirsiniz.
Arduino Rtos Kullanımı (https://elektronikatolyem.com/2020/08/03/arduino-rtos-kullanimi-nasil-yapilir/)

 Rtos  (https://forum.arduino.cc/t/dht22-esp32-multitasking/981901)

Millis Fonksiyonu inceleyebilirsin.
 Millis Fonksiyonu Nedir  (https://gelecegiyazanlar.turkcell.com.tr/konu/egitim/arduino-201/millis-fonksiyonu-nedir-ve-nerelerde-kullanilir)
Başlık: Ynt: Seri haberleşen Sensör okuma aralığını ayarlama
Gönderen: werdan - 29 Aralık 2022, 15:32:17
millis fonksiyonundan zaman değeri çekilir bir if koşulu ile 2 sn olduğunda bu fonksiyona gir şeklinde ordan istediğin işlemleri yaptırıp sonra zaman farkını alıp her 2 sn de bir kontrol edebilirsiniz

Başlık: Ynt: Seri haberleşen Sensör okuma aralığını ayarlama
Gönderen: AKAY989 - 29 Aralık 2022, 15:49:16
Degerli arkadaslar satirlar dolusu kod oldugu icin yanlislikla sensoru okudugum giris portunu giris olarak tanimladigim kodu silmisim.
Bundan dolayi 2 gundur tek bir yere odaklaniyorum ayri ayri dogru yazdigim her kod icinde hata aliyordum.
Dedigim gibi tanimli bir rtc entegrem oldugundan dolayi onun uzerinden sn lik okuma yapiyorum.
Kodu asagiya birakiyorum, iyi calismalar bol kazanclar..

if(sensorokumazamani==snn){
baslamasinyali();          //sensor okuma fonksiyonu
sensorokumazamani=snn+1 ;
if(sensorokumazamani>59){ fazlasureler=sensorokumazamani-59; sensorokumazamani=fazlasureler;}}