gerçek zamanlı interrupt define inthand

Başlatan akof, 13 Mayıs 2006, 23:45:34

akof

pbp da kesme oluşma anı ile kesme alt programının çalıştırılması arasında zaman farkı fazla olabilir, bunun nedeni pbp da bi komutun işemi bitmeden diğer komut çaılıştırılamıyor. yani bir pause veya serin komutu  çalışırken bir interrupt oluşturulursa kesme alt programına gidilmesi için çalışan  komutun işlevini bitirmesi gerekiyor.  

örneğin yazdığımız kodda RB.0 interrupt aktif. bir ledi yakıp söndüreceğiz(bu örnek)
pause 1000
komutu yürütülürken bir interrupt oluştu  200msn RB.0  daki tuşa bastık(ve çektik). pause komutu 1000msn sürdüğü için tuşa basıp çekmemiz süresince komut daha bitmedi. pause komutu bitince interrupt alt programı çalıştı. biz tuştan elimizi çektiğimiz halde interrupt etkisini göremedik.(bu etkiyi önelmek için for next içine pause 10 yazarak 100 döngü yapılabilir ama genede gerçek zamanlı bi interrupt oluşamıyor)

asm daki gibi kesme geldiği an alt programa dallanmak için  sanırım  pbp da kesme asm ile dallanılması gerekiyor. pbp da asm ile kesme oluşturmak için  

""""""""""http://www.melabs.com/resources/pbpmanual/9_0.htm adresinde bilgi var veya "define inthand" diye aratın""""""""""


define inthand ın kullanımı hakkında  tecrübesi olan arkadaslar biraz daha açıklaya bilir mi?
bu kullanımla asm daki gibi gerçek zamanlı bir interrupt oluşturabilrimiyiz.  yani pbp da uzun zaman alan komutlar bitmeden (pause 1000 gibi)  interrupt oluşturulabilir mi?

amacım öğrenmek

bunu lcd li bi saat de deniyeceğim.( amaç saat yapmak değil).

CaFFeiNe

hocam bence basic içine asm gömmeye uğraşmak yerine proton+ a geçebilirsin pbp ile birbirlerine komut olarak benzerler zorlanacağını zannetmem
ve proton+ da donanım kesmesi vardır yani dediğin gibi uzun süren bir bekleme komutu bile işletsen komutun bitmesini beklemeden kesmeye girer.

mhk

Proton güzel bir çözüm. Lakin illada pbp diyorsanız ve gecikme işlemlerinde çok fazla hassaslık aramıyorsanız, pause komutu kullanmak yerine iç içe döngüler kullanarak gecikme yapmak en mantıklısı. Kesmeler bu şekilde daha sağlıklı çalışacaktır. Hassas zamanlama uygulamalarında ise zaman kesmesini kullanabilirsiniz. RB0 kesmesi ile birlikte zaman kesmeside kullanılabilir.Sadece kesme alt programında kesme registerine bakıp hangi kesme olduğu anlaşılıp kullanılabilir.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana