Timer Sorusu

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,206
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
5,922
Mesajlar
101,118
Üyeler
2,504
Son üye
yaxe22

Son kaynaklar

Son profil mesajları

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?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
Back
Top