FlexiTimer Zamanlayıcı Kütüphanesi

Başlatan SpeedyX, 22 Haziran 2024, 14:28:56

SpeedyX

Merhabalar,

Çok eskiden yazmış olduğum bir kütüphaneyi, belki birilerinin işini kolaylaştırabilir düşüncesiyle paylaşmak istiyorum.

Basit bir yazılımsal timer dizisi kütüphanesi diyebiliriz. Eğer sistemi doğru kurgularsanız tüm yazılımı bile bunun üzerine geliştirebilirsiniz ve bu sayede ana döngünüz çok basitleşebilir hatta sadece timer handler fonksiyonundan ibaret olabilir, örnek projeleri inceleyip esinlenebilirsiniz. Geliştirilecek birşeyler illa vardır, güzel fikirler gelirse zaman buldukça ekleriz.

FlexiTimer Zamanlayıcı Kütüphanesi
Herhangi bir gömülü sistem, işletim sistemi veya bare-metal ortamda çalışabilecek şekilde tasarlanmış hızlı ve verimli bir yazılım zamanlayıcı kütüphanesidir. Zamanlayıcı çözünürlüğü esnektir ve işlemci fonksiyon çağrılarının frekansına bağlıdır, bu da çeşitli kullanım durumları için yüksek hassasiyet sağlar.

URL : https://github.com/diffstorm/flexitimer

Örnek kullanım:
- Olayların kurulumu:
flexitimer_start(0, TIMER_TYPE_SINGLESHOT, 1000, ctrl_power_on); // 1 second
flexitimer_start(1, TIMER_TYPE_PERIODIC, 2000, read_sensors); // 2 seconds
flexitimer_start(2, TIMER_TYPE_SINGLESHOT, 5000, heating_on); // 5 seconds
flexitimer_start(3, TIMER_TYPE_PERIODIC, 500, check_faults); // Every 0.5 seconds
flexitimer_start(4, TIMER_TYPE_PERIODIC, 10, read_inputs); // Every 10 ms
- Ana döngü veya bir timer kesmesi:
while (1) {
    flexitimer_handler();
    usleep(1000); // Sleep for 1 millisecond (example)
}

Dikkat edilecek bir husus : Callback fonksiyonlarını beklemesiz (non-blocking) yada çok küçük (flag set etmek gibi) yazmak doğru bir yaklaşım olabilir.

Örnek Callback fonksiyonu:
void timer_callback_1(timer_id_t i)
{
    printf("Timer %d expired!\n", i);
}
...
flexitimer_start(0, TIMER_TYPE_SINGLESHOT, 5000, timer_callback_1);

Sağlıcakla..

MrDarK

Bu tarz projeleri video ile desteklediğimizde genç arkadaşların daha iyi anladığını düşünüyorum. Birde avantajları belirtmek için hatalı kullanılan yazılım parçaları vs bu şekilde temiz kurgulanmış sistemler şeklinde de verilebilir.

Paylaşınız çok değerli.
Picproje Eğitim Gönüllüleri ~ MrDarK