Rtos hakkında

Başlatan bulut_01, 02 Aralık 2017, 22:40:27

elt42at

#15
Merhaba arkadaşlar. Rtos konusu benim de cok ilgi duyduğum konudur. Pic18f serisi ile cok kez kullanmak isteyip te fırsatim olamamisti.


Normal bir kod döngüsünde delay için kullandığımız, işlemci calisma suresine dayanarak peş peşe NOP (no op.) kullanımı ile gecikme elde ettiğimizde TİMESHARİNG mantigi ile multiTask kurgusu calismalarimizda diger tasklar etkilenir. Ama cooperarive bir rtos mekanizmasinda scheaduler zamanlama mekanizmasi o anki task dan digerine vakti geldiginde gecmelidir. Ozetle diger tasklar mevcut task içindeki beklemeden etkilenmemelidir. Olabilecek en mantikli durum ise 5sn lik gecikme komutu diger tasklardan dolayi daha uzun bir bekletme süresi sağlayabilir.
Calisma arkadaslarimdan ogrendigim bilgilere göre, rtos calisan sistemlerde osTimer veya realTimeClock mekanizmadindan faydalanarak gecikmeler kurmaktir. OsWait gibi metodlar ile 1sn lik gecikme eklenen task, task yönetimi katmaninda sure tukenene kadar o taski cagirmayarak gerceklestirir.
Tum bu islemlerde ya iki zaman farki kontrolu yapilarak karar verilmekte diye biliyorum.
Daha alt seviye basit islemciler ile performansli calisma elde etmek için daha ilkel fonksiyonlar olabilir ama mevcut konu açısından benim yorumum, rtos da 3 tane task var ve 1 task icinde ki bekletme komutu diğer tasklari etkilememeli. Bana cooperative yerine timesharing mekanizmasinda olabilecek durum gibi geldi.

bulut_01

Hocam max süresinin ccs rtos da fazla bir esprisi yok o zaman işlevsel olarak da bir getirisi yok max süre içinde task görevinin bitmemesi durumunda.
YENİLMEZ..

mufitsozen

#17
Alıntı yapılan: bulut_01 - 03 Aralık 2017, 13:31:34
Hocam max süresinin ccs rtos da fazla bir esprisi yok o zaman işlevsel olarak da bir getirisi yok max süre içinde task görevinin bitmemesi durumunda.

Var, rtos scheduler'a donunce zamanda bir tasma oldugunu istatisklere koyuyor, bu sayede size tahmininizin yanlis oldugunu gostermesini saglayan bir makanizma kurup ornegin bir hata mesaji vermenize imkan veriyor.

TEMEL BIR KAIDE OLARAK, kullanim amacini siz anlamasiniz bile rtos fonksiyonlarindaki her parametre size kendi ek ve kontrollerinizi yapabilecek imkanlar veriyor.

Bunun icin ccs rtos fonksiyonlari ile ilgili dokumani real-time kavramlari bilerek incelemek zorundasiniz.





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

bulut_01

Tşk ederim hocam verdiğiniz bilgiler için rtos hakkında sayenizde birşeyler daha ögrenmiş olduk.
YENİLMEZ..

mufitsozen

#19
Alıntı yapılan: bulut_01 - 03 Aralık 2017, 14:32:03!
Tşk ederim hocam verdiğiniz bilgiler için rtos hakkında sayenizde birşeyler daha ögrenmiş olduk.

Tesekkure gerek yok, keske imkanlar cok daha elverisli olsa ve olmasi gerektigi sekilde bir bilgi paylasimi yapabilsem.


Sayin @bulut_01 sizin, yasiniz, egitiminiz, mesleginiz ve tecrubeniz vb hakkinda hicbir fikrim yok, ama eger guncel elektronik teknolojisi ile ilgileniyorsaniz size verecegim ilk ve acik ara birinci tavsiye ingilizce ogrenmeniz. Eger duzenli, surekli ve disiplinli olarak calisirsaniz yaklasik 2 sene icinde teknik ingilizcenizi yeterli seviyeye getirebilirsiniz.(sifirdan basladiginizi varsayarsak)

Aksi takdirde yapabilecekleriniz hobi seviyesini gecemez.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

mufitsozen

#20
Alıntı yapılan: elt42at - 03 Aralık 2017, 10:01:35

Daha alt seviye basit islemciler ile performansli calisma elde etmek için daha ilkel fonksiyonlar olabilir ama mevcut konu açısından benim yorumum, rtos da 3 tane task var ve 1 task icinde ki bekletme komutu diğer tasklari etkilememeli. Bana cooperative yerine timesharing mekanizmasinda olabilecek durum gibi geldi.
Bir task'daki bekleme zaten obur taskleri etkilemez. Performans, cooperative, timesharing kelimelerinin sozluk anlamlarindan bakip, mantik yurutmeye calismak yerine bu terimlerin meslek icindeki anlamini ogrenerek kullanmak lazim.

Hepimizin anlayacagi dille anlatmak gerekirse:

Mesela bir konusmada "irade-i cuzz-iyye" tabirini kullandiniz, bende sozluge baktim, hur irade, ozgur secim filan diyor, kalkip size o zaman mantiken esirlerin yada mahkumlarin irade-i cuzz-iyyesi olmaz diyebilirmiyim. Onu birakin irade kelimesinin bile gunluk hayatta kullanimi(ne iradesiz adamsin gibi) ve ilahiyattaki anlami arasindaki farklari kisa ve basit bir sekilde aciklamak mumkun degil.

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

ahmet_zxc

bana kalırsa senin ulaşmaya çalıştığın rtos değil super loop.


kimlenbu

@mufitsozen , CCS yazılınca code composer studio sandım.


Gene de izlenmesini tavsiye ederim, en azından kafada "delay kullandım, beklememesi lazımdı" diye sorular kalmaz :)


https://training.ti.com/ti-rtos-workshop-series

mufitsozen

Alıntı yapılan: ahmet_zxc - 04 Aralık 2017, 09:04:10
bana kalırsa senin ulaşmaya çalıştığın rtos değil super loop.
Sayin @ahmet_zxc , galiba benden baska herkes bu "super loop' biliyor.

Rica etsem benim icin bu konudan biraz bahsedebilirmisiniz, varsa ingilizce kaynak gosterebilirmisiniz?
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

ahmet_zxc

Alıntı yapılan: mufitsozen - 07 Aralık 2017, 18:20:41
Sayin @ahmet_zxc , galiba benden baska herkes bu "super loop' biliyor.

Rica etsem benim icin bu konudan biraz bahsedebilirmisiniz, varsa ingilizce kaynak gosterebilirmisiniz?
ne demek üstat emrin olur.

doyurucu bilgi(senin için) veriyor mu bilemedim.. ama doküman aşağıda. ayrıca google kitaparda arayınca da baya bişeyler çıkıyor.

https://en.wikibooks.org/wiki/Embedded_Systems/Super_Loop_Architecture
https://stackoverflow.com/questions/44429456/what-is-super-loop-in-embedded-c-programming-language
http://www.keil.com/forum/14158/super-loop/
http://www.includehelp.com/c/the-super-loop-architecture-for-embedded-c-programming.aspx

ayrıca pic mi döver atmel mi benzeri kapışma olayları rtos ve super loop ta da var..

https://www.embeddedrelated.com/showarticle/951.php

bulut_01

Rtos ile kücük bir örnek yazdım görev1 max süresi içinde işlemini bitiremez ise rtos_overrun() komutu altında led yakıyorum yanlız şöyle bir durum var görev1 max zamanı içindede bitirse overrun aktif oluyor bitirmesede overrun aktif oluyor bu overrun komutunda yanlış yaptıgım birsey mi var ?

#use rtos(timer=0,minor_cycle=100us,statistics)                            // rtos ayarı
 
 
#task(rate=100us,max=100us)
void Gorev1 (){

  // if(sayac<=0){
 //for(sayac=0;sayac<50000;sayac++){
 output_toggle(pin_a0);
 
 }

#task(rate=100us,max=100us)
void Gorev2 (){

output_toggle(pin_a1);

if(rtos_overrun(Gorev1)){
output_high(pin_a2);
}}

YENİLMEZ..

bulut_01

Bu komut hakkında kimsenin bir fikri yok mu? Ovverrun( ) 
YENİLMEZ..