PIB BASIC BİLENLERE SORU!!!

Katılım
26 Ağu 2008
Mesajlar
124
Puanları
1
Yaş
40
pause ile pauseus komutları;

pause 1=1ms

pauses1=1us

burasını anladım.peki bu duruma göre kesmelerde pauseus kullanmak her zaman avantajlı,hatta her zaman daha avantajlı gibi görunuyor. avantajı olan şeyin hep bir dezavantajı da oluyor hayatta :) pauseus'un dezavantajı nedir pause komutuna göre ? daha çok enerji çekiyormuş bildiğime göre,bu önemsenmesi gereken kadar buyuk bir enerjimi ?
 
Bence bunlar batıl inançlar arkadaşlar yani yine bence pauseye göre daha çok akım çekiyor olsa bile ne kadar fazla akım çekecek bütünü akım olsa bir ledin ön direnci ile birlikte çektiği akımı çekemeyecek ( led derken cep telefonlarında kullanılan mikro ledleri kast etmek istiyorum )
Diyorlar ki pic basic asm ve c ye göre yavaş çalışıyor tamam normaldir zaten yavaş çalışması, neden normaldir ? adam asm ile bir Lcd ekrana merhaba yazmak için 40 küsür satır komut yazmış merak edenler için tek tek sayıp sonucunu burada paylaşabilirim Altaş yayıncılığın ileri pic16f84 programlama kitabında ama pic basic ile bunu bir satırda çözmüş.
Başka bir sorun daha örneğin asm ile bir registere 10 yükleyelim diğer bir registere de 1000 ve bu iki sayıyı çarpıp sonucu 3. bir registere kaydedelim sonra 2 ye bölüp sonucu 4.registere kaydedip bu registerleri ekranda gösterelim bakalım asm mi daha çok kod üretecek basic mi hiç kuşkusuz ki asm ye daha çok komut yazmak icap edecek de gerçekten merak ediyorum...Asm bilgim bunları yapacak kadar olmadığı için de hiç deneyemedim ???
Ama o konuda bir tuhaflıkta yok değil şu anda elimde sağlıklı bir kaynak olduğuna inandığım bir kitap var ve bu kitabın içerisinde pause ve pauseus komutlarının işlendiği sayfayı açtım ikisini de karşılaştırdım sonuç şu...
Pauseus komutu programı parametresi ile belirtilen mikrosaniye süresince durdurur süre16 bitliktir bu nedenle bir gecikme süresi 65535 us dir 1mili saniyeden biraz fazla olabilir.Diğer gecikme komutlarında (NAP ve SLEEP ) olduğu gibi mikro denetleyiciyi düşük güç moduna sokmaz pauseus komutu çalışınca diğerlerine göre daha fazla güç harcar ancak süre diğerlerine göre daha hassastır.
Aynı muhabbeti pause komutu içinde yazmış sadece bilinen şu var pauseus mikro saniye cinsinden pause ise milisaniye cinsinden programı durduruyor bu da demek oluyor ki pause ve pauseus komutu kendi aralarında daha çok güç harcama değil Nap ve Sleep komutlarına göre daha çok güç harcıyormuş
Dez avantajı konusuna gelince hiç bir fikrim yok sadece elimde kitap var ve güç harcamaları orada yazılmış daha önceden dikkatimi çekmişti aklımda kalmış açtım kitabı bakıp yazdım buraya :D Diğer asm ve c ye kıyaslamasını da aynı sizin duyduğunuz gibi bende duymuştum onu da arada belirtmek için yazdım bilgilerinize
Hayırlı çalışmalar dileklerimle...
 
UZUN açıklaman için teşekkürler kardeş.ancak uzun kodlarda pauseus un çektiği akımı hesaplamak gerekebilir diye düşündüm.yani göz ardı edilmesi gereken bişey olsaydı,kitaplar yazmazdı daha çok akım çektiğini :) zaten şu da doğruki pauseus komutu genelde kesme kullandığımız programlarda kullanılıyor.çünkü pause komutu içinde gelen bir kesmeyi program göremez.pause de ms bazında gecikme yaptıgı için;bu kesmeler için bazen uzun bir süre olabiliyor.pauseus us oldugundan,pauseusu kesmelerde kullanmak daha mantıklı geliyor.herneyse bunu bir köşeye bırakalım şimdi :D benim yeni bir sorum daha var,bilgilerimde yanlış var sanırım.alttaki sorum hakkında umarım yardımınız dokunur.


Özel Mesaj (Online)


PIC BASIC BİLENLERE SORU???
« : 09 Kasım 2008 15:45:40 »
Bu mesajı alıntı ile cevaplaAlıntı




FOR i=0 TO 10
PAUSEUS 5000
NEXT

YUKARIDAKİ DÖNGÜ İLE;

FOR i=0 TO 100
PAUSEUS 500
NEXT

DÖNGÜLERİNİN BEKLEME SÜRESİ OLARAK FARKI OLDUKÇA FAZLA.ALTTAKİ DÖNGÜDE PROGRAM ÇOK KISA SÜREDE DÖNGÜYÜ TAMAMLARKEN ÜSTTEKİ DAHA UZUN ZAMANDA TAMAMLIYOR.YANİ ALTAKİ BEKLEME COK AZ YAPIYOR.MATEMATİKSEL OLARAK ARADA FARK YOK GİBİ;

YANİ 1. DE 10 KERE 5000us YAP VE ATLA DİYORUZ
2.DE 100 KERE 500us YAP VE ATLA DİYORUZ

PEKİ BEKLEME SÜRELERİ NEDEN FARKLI ÇIKIYOR?
 
her bir işin işlem sırası var
sabah kalk, kahvaltı yap, işe git, öğlen yemek ye, akşam eve gel gibi

işlemcidede bir kaç işlem bir arada olmaz her bir iş adım adım yapılıyr bu durum gayet normal
bir döngüde 10 kere işlem yapıyor gibi görünsende daha fazla
bir döngüdede 100 kere işlem yapıyor
doğal olarak zamanlarda değişiklik olur
 
Bence olay For ile next arasında olan döngü ile alakalı değil tamam birinde 10 diğerinde 100 defa döngüye giriyor normalde eşit çıkması gerekir gibi görünüyor ama çıkmıyorsa olay bence pauseus komutunda alttakinde 500 mikro saniye beklediği için döngüyü daha çabuk bitirip işin içinden çıkıyor olabilir
Hiç denemedim böyle birşeyi ama eşit çıkması gerekir diye düşünüyorum eğer eşit çıkmıyorsa birçok nedene de bağlı olabilir mesela osc frekansı sebep olabilir picbasicde komutların tasarım kalitesi olabilir olabilirde olabilir yani ama şu ihtimali de yok değil ölçümü yada kıyaslamayı yaparken bir problem yaşıyor olabilirsiniz yada bir yanlışlık söz konusu da olabilir
 
slm tüm katılıcılara,
arkadaşım hiç uzatmaya gerek pause,pauseus veya delayms, delayus gibi editörlerin macro kodlarını kullanmaya,
Hardware timer ları kullanmanı tavsiye ederim interrupt lı veya serbest olarak istediğin gibi kullanabilirsin. o komutları kullanırken başka işlem yapamazsın bilgin olsun, ayrıca editörlerin kendileri kullanımları için ayırdıkları timerlar vardır, dikkat et buna her timer ı da kullanamssın.
atomik düzeyde enerji farkı olabilir.
 
Pic her komutu 4 mhz de yaklaşık olarak 1-2 us gibi bir sürde işler.

sizde ise 1nci uygulama daha kısa süre sonlanması gerekir.

10 Kere 5000 e sayıyor burda kayıp

10 x 2 us = 20 us

aşağıdakinde ise 100 x 2 us = 200 us

ama bunu gecikmeyi anlamak biraz zordur. Eğer Proteus vs. gibi bir program kullanıyorsanız ; programın çok ince bekleme ve uygulama süreleri vardır bunlara bir gözatmalısınız.
 

Forum istatistikleri

Konular
129,903
Mesajlar
931,168
Kullanıcılar
452,787
Son üye
Azemm333
Geri
Üst