Timer Sorusu

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,409
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.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,951
Mesajlar
118,748
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top