SystemTick

Başlatan muhittin_kaplan, 27 Aralık 2012, 15:15:31

muhittin_kaplan

10mS lik kesmeler oluşturuyorum ve  SysTickValue adındaki global değişkenimi arttırıyorum. Burada yapmak istediğim main blogunda Saniyede bir Adc ölçeceğim her 5sn lcd ye bilgi gönderceğim. Nasıl bir algoritma kurayım ?

mufitsozen

Alıntı yapılan: muhittin_kaplan - 27 Aralık 2012, 15:15:31
10mS lik kesmeler oluşturuyorum ve  SysTickValue adındaki global değişkenimi arttırıyorum. Burada yapmak istediğim main blogunda Saniyede bir Adc ölçeceğim her 5sn lcd ye bilgi gönderceğim. Nasıl bir algoritma kurayım ?

Hangi MCU'yu kullaniyorsunuz?


eger 16f877a veya daha guclu bir PICise CCS Cnin RTOSunu kullanarak bir kac task olusturun.

ADCyi kontrol eden task'i 5 snye ayarlayin. ve bunun icinde okuma islemini baslatin. ADC'ye okuma komutunu verdikten sonra gelen "cevrim bitti" interruptunu yakalayin, ve bir queue arayiciligi ile ADC Okuyan baska bir taske  taske yollayin. burada islemi yapip, disariya bilgiyi yollayan task'e gondereceginiz bilgiyi queue edin. RS232 haberlesmisi icin TX ve RX'i interrupt ile yapin (orneklerde var)

zamanlamalar ile istediginiz gibi oynarsiniz, programinizda cok basit olur.

hemde 16f877a yerine ornegin 18f4550ye gecerseniz, programda cok kucuk bir degisiklikle yine calisir.

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

CLR

en basit olarak, bir tane volatile global register tanımla ve 5sn için içine 500 değerini yükle, systemtick 10ms olduğunda 1 azalt, main içinde de bu register 0 olmuş mu diye kontrol et , 0 ise lcd'ye yazdır ve registere tekrar 500 yükle. 
Knowledge and Experience are Power

muhittin_kaplan

Alıntı yapılan: mufitsozen - 27 Aralık 2012, 15:22:31
Hangi MCU'yu kullaniyorsunuz?


eger 16f877a veya daha guclu bir PICise CCS Cnin RTOSunu kullanarak bir kac task olusturun.

ADCyi kontrol eden task'i 5 snye ayarlayin. ve bunun icinde okuma islemini baslatin. ADC'ye okuma komutunu verdikten sonra gelen "cevrim bitti" interruptunu yakalayin, ve bir queue arayiciligi ile ADC Okuyan baska bir taske  taske yollayin. burada islemi yapip, disariya bilgiyi yollayan task'e gondereceginiz bilgiyi queue edin. RS232 haberlesmisi icin TX ve RX'i interrupt ile yapin (orneklerde var)

zamanlamalar ile istediginiz gibi oynarsiniz, programinizda cok basit olur.

hemde 16f877a yerine ornegin 18f4550ye gecerseniz, programda cok kucuk bir degisiklikle yine calisir.
Müfit Hocam Kullandığım işlemci Stm32F103 CoOS var ama RTOS çalışması yapmadım. Mümkün olursa anam babam sistemi yapacağım.

@uicroarm
Hemen deneyelim. Teşekkür ederim.