TMR0 kesmesinde sayımı if else ile yakalayamamak

Başlatan dyonizos, 11 Temmuz 2012, 04:38:07

dyonizos

Bir gün girmedim konu nerelere gitmiş :)
bu kadar bilgili arkadaşları saygıyla selamlıyorum ancak ben hala bu pointer olayını Proton ile nasıl yapabileceğimi eğerki pointer değilde her bir değişken için ayrıca timer a değer vermem gerekirse daha önce sorduğum gibi ilk deger 200 ms ise ve ikinci 202ms ise sonraki timer değerini 2ms olarak vermek gerekmeyecekmi? 
bu durumda 13-14 degiskenlerde bu zaman farklarını hesaplatmak için baya bir aritmetik işlem gerekir gibi geliyor.

camby

taglı ve uicroarm,

aslında c ve asm kodlarını kapıstırmamıza gerek yok , bılıyoruz avantajlarını ve dezavantajlarını. Aslında C'yı kullanmak ıcın fırsat arıyorum ve c yazan arkadaslar , c'yı yazarken asmde oldugunu dusundugum avantajları kullanabılıyorlarmı onu merak edıyordum.

Ben cok krıtık ıslerde kesme cıkısı stackleri degıstııp kesme donusu farklı yere gıdıyorum. Ornegın modbus byte kesmesı ve aynı anda modbus frame kesmesı beklerken buyuk bı fonksıyonun ıcındekı ısı yarım bırakıp baska yerden devam etmem gerekıyor.

Benzer olarak sızın ındex benımde dolaylı adresleme elemanları olarak adlandırdıgım donanımı 3ünü bırden aynı zamanda kullanmam gerekıyor. Hatta 3. Yetmıyor , baska yerde kullandıgım bı ındexı yedekleyıp tekrar kullanıp yedegı gerı yuklemem gerekbılıyor. Bu durumda stack yedeklemeye benzer olara tek bır donanımsal ındex ıle yedekleyerek n sayıda ındex kullanabılecıgımı de farkettım. Mesela c'de de 3ten fazla bu elemanı kullanınca nasıl sonuclar uretecek endıselendırıyor benı. Yoksa ındexı de kullanıcı mı yedeklıyor.

Genel olarak c'de yazacagım kodun arka planda ureteceklerı endıselendırıyor benı.

Uicroarm.
10 sene asm yazdıysan sende bu cekınce muhakkak olmustur dıye tahmın edıyorum.

Bi yandan konuyu acan arkadasa da yardımcı olmamız lazım: ).






CLR

Camby, Asmyi yeterine öğrendiysen bırak yoksa ileride C öğrendiğinde üzülürsün niye erken öğrenmedim diye. Asm programcıları biraz zaman konusunda cimridir ve çok detaycıyızdır. Ama sana en önemli kuralı söylüyeyim ne kadar çok detaya takılırsan asıl amacını unutursun ve başarısız olursun. Önemli olan en az komut sayısı ile en iyi programı yazmak değil, Amaç hatasız , kararlı, anlaşılır, taşınabilir bir kod yazmaksa C dili doğru tercihtir.
Mesela asmde işi ilerlettiğimde paso macro kullanıyordum macro'da lüx istersen asm komut sayından feregat etmen gerekir, C'de bir çeşit asm'nin macrosu gibi düşünebilirsin, asm'ye göre bir kaç satır asm kod fazla çalışabilir ama sana kazandırlıkları yanında kaybettiklerin hiç bişey.
Knowledge and Experience are Power

Tagli

Yukarıda değinmiştim gerçi ama tekrar vurgulama gereği hissettim: 3 - 5 cycle'ın hesabı yapılır hale gelinmişse ya program yanlış bir mantıkla yazılmış ya da işlemci yanlış seçilmiş demektir.
Gökçe Tağlıoğlu