Timer Sorusu

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,464
MCU da timer konusunda çok bilgili değilim. Biraz kurcaladım. Timer ı istediğim zamana kurup çalıştırıp durdurabiliyorum. Örneğin timer ı 1 sn ayarlayıp bir ledi yakıp söndürebiliyorum....

Sorunum şöyle;
bir butonum var ve buton ile üç farklı fonksiyon çalıştırıyorum. Butona her basışta bir sonraki fonksiyon devreye giriyor. Bu fonksiyonlarda 1-2-3 olsun. 3 ten sonra tekrar 1. fonksiyona geçiyorum. Hangi fonksiyonun aktif olduğu buton üzerindeki ışık ile sağlıyorum. 1. fonksiyon aktif ise 100ms on 900ms of yaparak ışığım bir kere göz kırpıyor. 2. fonksiyon aktif ise ışık iki defa 100ms göz kırpıyor. ben bunu daha önce arduino nun millis() fonksiyonu ile yazmıştım. Şimdi biraz daha low level bir şeyler yazabilirmiyim diye düşünüyorum. Bunun nasıl yaparım kafam karıştı. ışık he yandığında veya söndüğünde timer ın çalışma aralığını (compare register) değiştirmeliyim galiba... Hımm böyle bir deneyeyim...
 
Buton okumak için timer hardware'i kullanmak işi zorlaştırır gibime geliyor. Eğer butona çift tık veya uzun basma gibi fonksiyonlar ekleyeceksen, bunu bir state machine şeklinde yapmak daha kolay olur.
 
imdi biraz daha low level bir şeyler yazabilirmiyim diye düşünüyorum. Bunun nasıl yaparım kafam karıştı. ışık he yandığında veya söndüğünde timer ın çalışma aralığını (compare register) değiştirmeliyim galiba.
Basit/basic bir timer'ın min 2 registeri olur.
Birincisi sayaç/counter, diğeri kaça kadar sayacağı. Eski model piclerde tek register var.
Atıyorum 20000 de kesme üretsin istiyorsan sayaca 65535-20000 değerini yüklersin sayac 0xFFFF olunca kesme üretir.

Daha yeni mcularda kesmenin hangi değere gelince üretileceğini söylediğin bir register daha var.
Bu registere 20000 değerini yükler, sayacı sıfırlarsın. Sayaç 20000 olunca kesme üretilir gibi.

Buton okumak için timer hardware'i kullanmak işi zorlaştırır gibime geliyor. Eğer butona çift tık veya uzun basma gibi fonksiyonlar ekleyeceksen, bunu bir state machine şeklinde yapmak daha kolay olur.
Buton okumak vs. için bir state machine kullanmak ok. Hatta çoğu işte hayat kurtarır.
Ama hardware kullanmak işi zorlaştırmaz. Yazılımı biraz daha karmaşıklaştırır. Seri yazılmış bir kod yerine paralelmiş gibi çalışan kesmelere dayalı bir kod olur.
Ama pine 1sn basıldı mı diye başında beklemek zorunda kalınmaz.
Misal min 1 sn butona basıldı mı için, gelen ilk high/low kenarlı EXT INT/IC kesmesinde timer kurup ne yapıyorsak, işimize bakarız. Bir sonraki kesme timer kesmesi ise butona 1 sn basılmıştır. Bir sonraki kesme EXTINT/IC kesmesi ise butona 1 sn den kısa süre basılmıştır gibi.
 

Forum istatistikleri

Konular
7,443
Mesajlar
125,444
Üyeler
3,025
Son üye
can.ince

Son kaynaklar

Son profil mesajları

Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Back
Top