proteus animating süresi

Başlatan clusmy, 28 Nisan 2005, 12:38:28

clusmy

Bildiğiniz üzere proteus'ta simülasyon yaparken alt tarafta "animating" çıkıyor ve saymaya başlıyor.Ama bu süre normal süreye göre yaklaşık 12sn. kadar geride kalıyor.Bunun ayarı nereden yapılabilir.Yoksa bu geri kalma benim kullandığım sürümün bi sorunumu???Kullandığım sürüm release 6,5 sp5

CaFFeiNe

Alıntı yapılan: "clusmy"de1302 ile kurduğum saat devresi sürekli olarak 12 sn. geri sayıyor.kristalini 32khz olarak bağladım.programda sorun olduğunu sanmıyorum.sanırım proteus bağlantılarında sorun yaşıyorum.Bu konuda bilgisi olan varsa yardımlarını bekliyorum. Şimdiden teşekkürler

başka bir başlıktada bunu sormuştun sana cevap yazacaktım ama belki başka bir problem vardır diye yazmamıştım şimdi anlıyorumki sen proteustaki zamanı kolundaki saatle karşılaştırmışsın (senin ds1302 li devrende büyük ihtimalle problem yok) buradaki zamanın yavaş veya hızlı saymasını SYSTEM/SET ANIMATION OPTIONS/FRAMES PER SECOND ile ayarlayabilirsin mesela bu değeri 50 yap proteusun zamanı kolundaki saatten daha hızlı gidecek. bunun kolundaki süreyle aynı gidip gitmemesi önemli diil bu animasyonun akış hızıyla alakalı senin kullandığın versiyonda problem yok rahat ol

polianner

Merhabalar. Öncelikle forumunuzu bir süre okuyucu olarak takip ettim ve çok şeyler öğrendiğimi söyleyeyim, tabi öğrenecek daha çok şey var daha yolun başındayım. Böyle bir forumun oluşmasına katkısı olan herkezi gerçekten kutlarım. Bu benim ilk sorum olacak hatam varsa kusura bakmayın acemiliğime verin. Clusmy arkadaşımın sorduğu soruyla ve caffeine arkadaşımın cevabıyla bağlantılı olarak soruyu şu şekilde sormak istiyorum:
İsiste animasyonunu yaptığım bir zaman devresindeki zamanla, gerçek hayattaki devrenin zamanının aynı olabilmesi için bu ayarın veya ayarların kaç olması gerekir ki gerçek zaman similasyonlarını sağlıklı yapabileyim. Ben ne yaptımsa deneme yanılmayla birebir yapamadım. En yakın olarak 1 dakikada 2sn gibi sapma oluyor.  Örnek verecek olursam isiste  devremin dakika göstergesi  1 attığında gerçek hayatta yaptığım aynı devre ya 58 saniyede bir atıyor ya da 62 sn de 1 atıyor.

tnr

Tam gerçek zamanlı bir simülasyon yapmak bence zordur. Burada isis'in çalışmasını etkileyen birçok etken vardır, bunlardan en önemlisi işlemci hızıdır. Bilgisayarın işlemcisi düşük ise yapılan işlemler uzun sürebilir. Aynı zamanda çalışan diğer programlarda bu süreyi değiştirebilir. Örnek olarak pic'in 1usn'de yaptığı işlemi isis 1usn'de yapamaz; çünkü isis MOVLW komutunu icra etmesi için binlerce komut işlemesi gerekir(Windows'un komutları da cabası).

CaFFeiNe

Alıntı yapılan: "polianner"İsiste animasyonunu yaptığım bir zaman devresindeki zamanla, gerçek hayattaki devrenin zamanının aynı olabilmesi için bu ayarın veya ayarların kaç olması gerekir ki gerçek zaman similasyonlarını sağlıklı yapabileyim. Ben ne yaptımsa deneme yanılmayla birebir yapamadım. En yakın olarak 1 dakikada 2sn gibi sapma oluyor.  Örnek verecek olursam isiste  devremin dakika göstergesi  1 attığında gerçek hayatta yaptığım aynı devre ya 58 saniyede bir atıyor ya da 62 sn de 1 atıyor.



üstteki resme bir bakın counter timer componenti 1 dakika 19 saniyeyi gösterirken benim tuttuğum kronometre 32 saniyeyi gösteriyordu. (Frames per second 50 iken) ama bir daha dikkatli baktığınızda aşağıda ANIMATING: 00:01:19.95 yazdığını göreceksiniz componentte gördüğünüz değerle aynı yani isis kendi içerisinde bulunan saate göre gerçek zamanlı simülasyon yapıyor ve bu içindeki saatin çalışma hızınıda simulation speed kısmındaki değerlerle oynayarak değiştirebilirsiniz. İsisteki zamanı kolunuzdaki saate uyduramayabilirsiniz ama tasarladığınız zaman devresini gerçek hayatta yaparsanız (board üstünde mesela) kolunuzdaki saatle tuttuğunu göreceksiniz. simülasyon hızını kolunuzdaki saatle tutturmak o kadarda önemli diil gerçek hayatta tutar merak etmeyin simülasyon hızını bu şekilde değiştirebilmenin amacı çok hızlı çalışan devreleri yavaşlatabilmek veya tam tersi çok yavaş çalışan devreleri hızlandırabilmektir (tabiiki simülasyon ortamında gerçek hayatta tasarladığınız hızda çalışır) mesela bir devre tasarladınız atıyorum 1 ledi 10 ms yakıp 10 ms söndürecek ve bunu sürekli yapacaksınız gerçek hayatta led sürekli yanıyormuş gibi görünür ama isiste frames per second a mesela 1-2 gibi çok küçük bir değer girerseniz ledin yanıp söndüğünü görebilirsiniz. (bunu denemedim sadece örnek verdim)

polianner

Çok teşekkürler Caffeine arkadaşım. Anlattıklarından şunları öğrenmiş oldum:
1-Isiste similasyon speed değerleriyle oynamanın gerçek devrelerdeki hızla alakası yok çünkü adından belli similasyon hızı.
2-Yaptığımız zaman devresindeki zaman komutlarımızın  doğruluğunu da mesela saatin saniye göstergesi ile Animating süresi birebir aynı gidiyorsa
doğru yapmışız demektir ve gerçek devrede de doğru gidecek demektir.

Ben program denemelerimi picbasicpro da yapıyorum biliyorsunuz kesme komutları kullandığımızda bir de pause komutları kullandıkmı tasarladığımız zaman hesapları tutmuyor. Bunu anlamak için de isis similasyonlarındaki verdiğiniz bilgiler doğrultusunda artık anlayabiliyorum.
Tekrar teşekkürler. Saygılar.

CaFFeiNe

rica ederim bende proteusla ve picbasicle uğraşmaya yeni yeni başladım ve öğrendiklerimi buradaki arkadaşlarla paylaşmaya çalışıyorum.

birde picbasicte kesmeleri kullanırken pause gibi zaman alıcı komutları şu şekilde kullanın

pause 1000
yerine mesela

for x=1 to 100 : pause 10 : next x


buda aynı işi yapar (10*100=1000)

SpeedyX

selamlar, bir yanlışı düzeltmek istiyorum
yukarıdaki for-next döngüsü içindeki pause 10 ile pause 1000 aynı işi yapmaz.

Saygılar.

CaFFeiNe

100 kez pause 10 pause 1000 yapmıyormu? neden?

SpeedyX

senin dediğine göre de aşağıdaki kod tam 50sn gecikme yapıyor.
yrm_sn  movlw   d'5'     ; 1/2 SN GECIKME
        movwf   bek1
bk3     movlw   h'DD'
        movwf   bek2
bk0     movlw   h'FF'
        movwf   bek3
bk1     decfsz  bek3,F
        goto    bk1
bk2     decfsz  bek2,F
        goto    bk0
        decfsz  bek1,F
        goto    bk3
        return

movlw 100
movwf sayac
call yrm_sn
decfsz sayac,f
goto $-2
return

dombilik

for next döngüsünün komut işleme sürelerinide hesaba ilave etmek lazım diye düşünüyorum.doğrumu acaba?dolayısı ile pause 1000 ile diğer seçenek arasında zaman açısından fark oluşacaktır..
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40

CaFFeiNe

for x = 1 to 100 : next x

komutları derlendikten sonra işlemcide 18 komut tutmakta (aslında okadarda değil) 100*18 ~= 1800 komut yani 4MHz te 1800us yaklaşık 2milisaniye yapar pause 1000 komutu pause 1002 komutuna dönüşmüş gibi olur çalışma frekansı yükseldikçe sapma azalır fakat frekans 32Khz gibi çok düşük olursa pause 1000 komutu yaklaşık pause 1220 gibi bişeye dönüşebilir (sapma ~220milisaniye)

çok düşük hızlarda çalışılmadığını düşünerek ikiside işinizi görür demek istemiştim (sonuçta pause komutları ile RTC yapmaya uğraşmayız değilmi)

ayrıntıya girmediğim için yazdıklarım yanlış anlaşılmış olabilir