Keil RTX kullanarak kesme içinde task çağırma?

Başlatan superconductor, 27 Eylül 2014, 10:30:26

superconductor

Stm32f4 üzerinde rtx öğrenmeye çalışıyorum. Rtos içinde donanım kesmelerini direk kullanmak doğrumudur? Örneğin harici kesme rutini içinde bir task çağırdığım zaman sistem çakılıyor.
void EXTI0_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line0) != RESET)
  {
    
    GPIO_ToggleBits(GPIOD,GPIO_Pin_12);
    os_evt_set (0x0001, t_print_task);
    
    EXTI_ClearITPendingBit(EXTI_Line0);
  }
}


task'i bu şekilde çağırdığımda çakılıyor ne yapmam gerekir?


superconductor

#1
Teşekkür ederim hocam çalıştı şimdi. Rtx benim çok hoşuma gitti hocam uzun vadede düşünürsek rtx ile zaman kaybetme dermisiniz bu konuda görüşünüz nedir?

Örneklerde task çağırırken, (os_evt_set (0x0001, t_task);) tüm task lere 0x0001 bayrağı parametre geçilmiş. Bu bayrak tam olarak ne işe yarıyor?

Task içinde os delay kullanıyorum. OS_TICK'i 1000 olarak değiştirdim. OS_ROBINTOUT'u 1 olarak değiştirdim. Örneğin task içinde 5ms bekleyip yine aynı task'i çağırdığımda, taskin periyodu 6ms oluyor. Task bittiği anda 1ms eklenmeden çağırabilmek mümkünmü?

Erol YILMAZ

Alıntı yapılan: gerbay - 27 Eylül 2014, 23:18:43
OS_TICK i çok artırmanız demek scheduler ın o kadar çok interrupt a girmesi ve task ları, semaphoreları, eventleri vs. taraması demek.

Schedular taraması,
İlgili Timer int'in içinde,
Schedular Delay ile
ve Görev değişimi sırasında taranıyor diye biliyorum.

Bu doğru mu ve başka bir tarama noktası var mı ?

Erol YILMAZ

Schedular Timer int içinde yapılan bu RTOS işlemleri başka bir durumda da yapılıyor mu ?

Sadece Schedular Timer int içinde mi yapılıyor ?

Misal bir görev bitip, başka bir göreve geçeceği zaman bu RTOS işlemleri tekrar çalışıyor mu?