optik kontrol ile pic e dış kesme yaptırılır mı? tartışalım lütfen... lazım =)

Başlatan muratguenduez, 01 Eylül 2015, 17:11:56

muratguenduez

merhabalar,

örneğin bir stream var elimde, bunu dış kesme ile durdrumak istiyorum, daha önceki konularda ete hocamın acıklamasında okumuştum, sleep pause gibi komutlar var kaldığı yerden devam ediyo ama zaman ne girersek okadar bekliyor yani uyurken kontrol edemiyorum. ben isterim ki herhangi bi anda kesmeyi optik olarak versem yani özel bi frekans girsem optikden, pic ile bu durumu kesme olarak algılatabilirmiyim?? sonra yine aynı optik girişten aynı sinyal ile tekrar kaldığı yerden devam etmesini istiyorum. evet optik aç kapa kumandaya benziyor ama istediğim şey program akışı bozulmasın timerlar delay komutları falan resetlenmesin.. böyle bişey mümkün müdür acaba? mesela kumandayı 555le yapsam (ucuz olsun diye), yok illa pic mi gerekir yine kumanda için?

kullandığım pic 16f88.

ete hocam bilgilerindne faydalanmak isterim =)

ete

Sorunu çok iyi anlamış değilim. Ancak cevabını genel anlamda vereceğim sende kendine pay çıkaracaksın.
Pic işlemcinin kesme kaynakları bellidir. Dışarıdan giriş yolu ile yaratılacak kesme türleri;
1. RB0 kesmesi : PORTB.0 pini düşen kenarda yada yükselen kenarda kesme oluşturacak şekilde ayarlanabilir.
Senin optik kaynağın bunu sağladığı müddetçek PORTB.0 pini üzerinden kesme yaratabilirsin.

2. PORTB.4-7 arası pinlerin giriş olarak ayarlanmış olanların konum değiştirmesi durumunda kesme oluşturulur
Bu pinlerden biri veya bir kaçı ile optik yolla kesme oluşturabilirsin.

Burada önemli olan stream dediğin şeyin ne olduğu ve durdurma kelimesinin ne anlama geldiğidir. Bunu anlamadım doğrusu.
Bu streamin durdurulması ile optik kontrolün ne bağlantısı var onuda anlamadım. Anlamadım derken anladığım bazı noktalar var ama doğru algıladığımdan emin olamadım. Stream denilen şey ,frekansı olan bir kare dalga sinyali gibi düşünülebilir. Bu sinyali akışını optik yolla durdurup gerekirse yeniden başlatmak istiyorsun sanırım. Anladığım bu ve doğru ise yukarıda açıkladığım sistemlerden birisi ile yapabilirsin.

Ete


muratguenduez

Stream dan kastim calisan bi program algoritma yazdigimkz yazilimin tamami.  Kesme islemcinin main programini herhangi bir anda durduruyor, kesme alt programini calistirip isi bitince main programi kestigi yerden devam esiyor. Optik kontrol istegim ise uzaktan kumanda gibi dusunmemiz ir ile foto transiatoru pic uzerinde surcem. Ama ir dis isiklardan da etkileniyor. Ozel bi frekans tanimlamam gerekiyor ki ona ozel kumanda oldugunu anlasin. Bunu normal inputttan da yapabilirim ama kesmenin kaldigi yerden devam ettirmesi cok isime gelir. Mesela master reset var ya hocam, ona benzer ayni mantik master pause diye bisey yok mu mesela :) sanki osc nin durup devam etmesi gibi kafamda canlaniyor.  Umarim anlatabilmisimdir sana zahmet veriyorum :)

ete

Çok fazla bilinmeyeni olan sanal bir konu. Üzerinde tartışmak zor.
Bir programı askıya almak için bir bit değişkenini KESME içinde TOGGLE yapmak yeterli.
Bir sinyal gelince kesme oluşsun ve orada  TOGGLE DUR diye bir komut olsun.
Ana program içinde WHILE DUR=1:pauseus 1:wend
şeklinde bir komutun olursa ikinci bir sinyal gelinceye kadar program orada çakılır kalır.
Bu işi kesme içinde de yapmak mümkün ama programı uzun müddet kesme içinde bırakmak yanlış olur.
Bence bir bit değişkeni ile bu işi halletmek daha uygun gibi.

Ete


muratguenduez

Yani soyle bisey yapsam,

#int- rs{
While (1){
Delay_ms(200) // bunu butona basili kalirsa hemen geri cikmasin diye koydum
If input(pin_rb1) break;
}}


Interrupt enable pin rb1
Enable global

Main()
{
...delay_ms(30000) // burda mesela 17. saniyede kesme gelecek
Output_high(pin_a5);
}

Disardayim hocam telefondan yaziyom imla hatalari illaki vardir :) tekar basinca benim kestigim delayms(30000) kaldigi 17 sanoyeden itibaren 13 sanoye daha beklicem dimi?

Powered by EzPortal