PİC ve RTOS

Başlatan feyzi, 16 Aralık 2010, 08:00:53

feyzi

RTOS konusunda basit bir uygulama bekliyoruz.Örneğin; klavyeden girilen değeri,GLCD veye LCD'de gösteren program.Öğrendiğim kadarıyla,LCD,GLCD,DS1820 gibi çevre elemanların sürücü programları C diliyle hazırlanmış.(picos18.com'dan indirilebiliyor.)Kullanıcı,istediği çevre birimi,basit birkaç komutla çalıştırabilecek. Konuya hakim olan arkadaşları,paylaşım için göreve davet ediyorum.Şimdiden tebrikler...
"insanların hayırlısı ,onlara faydalı olandır."  (H.Ş.)

Erol YILMAZ

Çalışan RTOS kodu örneği, Keil'in kendi RTOS'u olan Keil RTX için yazılmış...

#include <RTL.h>

OS_TID task1;
OS_TID task2;

U16 counter1;
U16 counter2;

__task void job1 (void);
__task void job2 (void);

__task void job1 (void) {
  task1 = os_task_create (job1,1);
  task2 = os_task_create (job2,1);

  while (1) {
    counter1++;
    os_dly_wait (10);
  }
}
       
__task void job2 (void) {
  while (1) {
    counter2++;
    os_dly_wait (20);
  }
}

int main (void) {

  os_sys_init (job1);
}

Erol YILMAZ

feyzi bir gelişme var mı?

PIC16 ve PIC18 de çalışan RTOS örneği isteyenler için,

http://www.pic24.ru/doku.php/en/osa/ref/download/intro

ben denedim, çalışıyor :)

feyzi

#3
Allegro Hocam! Şu sıralar, başka bir konuyla meşgulüm..RTOS bilgileri için de,teşekkür ederim.
"insanların hayırlısı ,onlara faydalı olandır."  (H.Ş.)

Erol YILMAZ

Alıntı yapılan: FxDev - 08 Mayıs 2011, 08:41:17
Allegro hocam selamlar, siz böyle yazdıkça beni de RTOS'lara karşı meraklandırdınız. Acaba bu güç kaynağı projemde bunu kullansam mı? Uygun olur mu? Hangi RTOS sürümünü önerirsiniz? 18F2520 yeterli bir PIC midir?


Yukarıda linkini verdiğim OSA giriş için gayet uygun.
18F2520 yeter de artar bile.
API lerini biraz inceleyin ve onları kullanın. Ama hemen öncesinde,
Daha önce nasıl kod yazmışım ben hüüüü... diyerek kafanızı dağlara taşlara vurmadan önce ambulans çağırın  ;)

RTOS ların nihayetinde hepsi birbirine benziyor ama PIC16 ve PIC18 de çalışabildiği için OSA,
PIC Mcu severler için iyi bi başlangıç noktası olacaktır...

Benim işime uyar mı? uymaz mı?
Genel olarak gördüğüm kadarı ile Dotmatrix led panel gibi (???) uygulamalar hariç çok uygun.
Neden öyle diyorum?
Dotmatrix led panellerde durumlardan ziyade panel bilgisinin periyodik olarak taşınması önem arz ediyor.
BU periyotlar arasında ise diğer! işler yapıldığı için sistem nispeten basit ve RTOS kullanımına gerek bırakmıyor.
Zaten işlemcinin de imkanları (öncelikle hız) kısıtlı ise RTOS bu sefer yük oluyor.


Salvo User Manual bir kitap gibi anlatmış RTOS mevzuatını.
http://www.pumpkininc.com/content/doc/manual/SalvoUserManual.pdf
Bölüm 2, tavsiye ederim.

Tagli

Hocam PIC18'in altı (PIC16 vs.) nasıl RTOS çalıştırıyor? Bu işin mantığı nedir? Farklı process'lerin var olabilmesi için stack'in değiştirilebilir olması gerekmiyor mu? Yani bana sanki bu düşük modellerde, çalışma sırasında yeni process'ler doğup eskileri ölemez gibi geliyor...

Kodları incelemedim ama aklıma gelen şey şu: Process'ler derleme sırasında oluşturuluyor ve çalışma anında değiştirilmiyor. Başka türlü nasıl olabileceğini aklımda canlandıramıyorum bir türlü. Durumu bir özetlersen sevinirim.
Gökçe Tağlıoğlu

feyzi

RTOS konusunda acizane şöyle bir teklifim var: Aynı işi yapan iki program(basit olsun), hem klasik metod ile, hem de RTOS ile yazılıp burada yayınlansın.RTOS'un programlamadaki
kolaylığını merak edenler anlasın...
"insanların hayırlısı ,onlara faydalı olandır."  (H.Ş.)

feyzi

Yapacağınız örnek çalışmayı merakla bekliyoruz...
"insanların hayırlısı ,onlara faydalı olandır."  (H.Ş.)

fahri-

ccs4104 ve ccs4120 ile derleyicileri ile 2 gündür OSA rtos u derlemeye çalışıyorum. sanradan farkettimki ccc4104 derlemiyor hata veriyor(OSA sitesinde belirtmişler zaten). ccs4120 ile derlemeyi hatasız becerdim. Ama derlenen kod pic de çalışmıyor. ccs4120 denenmemiş bir versiyonmuş. Bu konuda çalışan arkadaşlara duyurulur.
(Diğer versiyonlarla deneme işini de sonraya bıraktım. )   

teknikelektronikci

firat rtos yazini okudum cok basarili yalniz bakinca rtos kullanmak cok avantajli geliyor sanki yapmak istediklerini daha basit kodlar ile yapabilyiorsun öyle degilmi ? veya daha az kod yazarak
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

Erol YILMAZ

TimerTick ler arası eğer 1 mS üzerinde ise (ben genelde 10 mS kullanıyorum) ufak tefek gecikmeleri direkt olarak,
Dişe dokunur seviyede ise o zaman RTOS servisini kullanarak yapıyorum.

mufitsozen

Alıntı yapılan: gerbay - 18 Mayıs 2011, 00:05:42
hocam geçenlerde vxWorks üzerinde yüksek hızlı bir uart dan gönderilen byte ların arasına mikrosaniye boşluk koymam gerekti ben de eski usul yapmak zorunda kaldım. sistem timerTick den çok küçük gecikmeler için ben de eski yöntemle devam ediyorum. Sanırım başka bir yolu da yok gibi.. Ya da var diyen varsa yazsa da biz de öğrensek.

@gerbay, seri portu programlarken "2 stop bit" koy, alici "stop bit lerin sayisina bakmaz, 1 stop bitde frame'i bitiri", ama gonderen 1 bit zamani kadar extra bekler.

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

mufitsozen

Benim mesleki yasamim boyunca beni hic aldatmayan yegane gosterge, iste o icine sinmeme duygusudur. Cunki insandaki sezgi/sezi yetenegi neden oldugunu soylemeden bu sekilde yaptiginin daha duzgun bir yolu daha oldugunu sana hatirlatir!

Onun icin temel kaide ilk oncelik "make work!" ama ondan sonra geri donup, midene agri yapan butun data structure'lar, ve/veya algorithmleri daha duzgun? yada kaliteli? yada sik/zarif? bir cozumle duzeltmektir.

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

CoşkuN

Alıntı yapılan: gerbay - 17 Mayıs 2011, 21:34:46

Bir de benim ayrıca eklemek istediğim birşey var. Eğer bu işleri ciddi anlamda profosyonelce yapmayı düşünüyorsanız kendi C++ (C demiyorum, C++ diyorum) rutinlerinizi yazmanızda ve C++ a geçmenizde çok büyük avantajlar var..

Bu kısmı pek anlamadım, biraz açar mısınız? Örneğin PIC'ler için C++ derleyicisi yok bildiğim kadarıyla. Kaldı ki gömülü sistemlerde C++ kullanımı henüz çok kısıtlı.

mufitsozen

Alıntı yapılan: CoşkuN - 18 Mayıs 2011, 14:46:45
Alıntı yapılan: gerbay - 17 Mayıs 2011, 21:34:46

Bir de benim ayrıca eklemek istediğim birşey var. Eğer bu işleri ciddi anlamda profosyonelce yapmayı düşünüyorsanız kendi C++ (C demiyorum, C++ diyorum) rutinlerinizi yazmanızda ve C++ a geçmenizde çok büyük avantajlar var..

Bu kısmı pek anlamadım, biraz açar mısınız? Örneğin PIC'ler için C++ derleyicisi yok bildiğim kadarıyla. Kaldı ki gömülü sistemlerde C++ kullanımı henüz çok kısıtlı.
PIC icin C++ compiler'lar var, ornegin:

                     http://www.sourceboost.com/Products/BoostCpp/Overview.html

http://www.ibm.com/developerworks/rational/library/459.html web sitesinden bir alinti:

vast majority of developers of embedded systems use C, C++, Ada or Java as programming languages (70 percent will be using C in 2002, 60 percent C++, 20 percent Java, 5 percent Ada). It is not unusual to see more than one language in an embedded system, in particular C and C++ together, or C and Java. C is supposed to be more efficient and closer to the platform's details, while Java or C++ are (supposedly) more productive thanks to object-oriented concepts. However, it should be noted that embedded systems programmers are not object devotees!
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.