Program çalışırken butonları algılama

Başlatan Electroman, 15 Ağustos 2013, 15:48:44

Electroman

Merhabalar,18f4550 kullanarak kendime bir metronom yapmaya çalışıyorum ve hızlandırıp yavaşlatma hariç programı tamamladım.Sıkıntım ise metronom çalışırken hızlandırma ve yavaşlatma amaçlı iki butonun basık olup olmadığını algılama.Kesmeleri gözden geçirdim ama rb0'ı tek buton ile kullanabildiğimden eledim, rb4-rb7 kesmesinde ise bildiğim kadarıyla hangi butondan basıldığı fark etmeksizin ortak kesme programına atlıyor oluşu ve butona basarken ayrı çekerken ayrı bir kesme oluşturması onunda elenmesine sebep oluyor.Son olarak tmr kesmelerini kullanarak belli sürelerde if ile butonların basık olup olmadığını kontrol etmek geldi ama daha önce böyle bir sistem yapmadığımdan algılamada ne kullanacağımdan emin olamadım sizce birden fazla buton algılamada ne kullanabilirim?

SBTECH

yaklaşık 100ms de bir butonların lojik seviyelerini kontrol edebilirsiniz.. Böyle bir uygulama yapmıştım 100 msn arada bir buton kaçırmaya sebep verirse süreyi 50 msn ye ye indirebilirsiniz.. yani cevabım timer kesmesi ..
Elektronik ilimdir..

Bayramsumbul

Merhabalar..Rb0 Kesmesi İle Yapılabilir.İki Butonu Diyot İle Birbirine Bağlayıp Rb0'a Ver(Katot uçlar Rb0'a,Anod uçlar butonlara).Rb1-Rb2 Pinlerine İse Butonları Ver Ama Diyotların Bağlantı Noktalarından Önce.Mantığı Gayet Basit.Açıklamaya Gerek Duymadım.
Zaten Butonlardan Elini Çekene Kadar.Kesmeye Girerde çıkarda.
Bir Elektronik Meraklısının Serüveni...

sadogan

Alıntı yapılan: Electroman - 15 Ağustos 2013, 15:48:44
Merhabalar,18f4550 kullanarak kendime bir metronom yapmaya çalışıyorum ve hızlandırıp yavaşlatma hariç programı tamamladım.Sıkıntım ise metronom çalışırken hızlandırma ve yavaşlatma amaçlı iki butonun basık olup olmadığını algılama.Kesmeleri gözden geçirdim ama rb0'ı tek buton ile kullanabildiğimden eledim, rb4-rb7 kesmesinde ise bildiğim kadarıyla hangi butondan basıldığı fark etmeksizin ortak kesme programına atlıyor oluşu ve butona basarken ayrı çekerken ayrı bir kesme oluşturması onunda elenmesine sebep oluyor.Son olarak tmr kesmelerini kullanarak belli sürelerde if ile butonların basık olup olmadığını kontrol etmek geldi ama daha önce böyle bir sistem yapmadığımdan algılamada ne kullanacağımdan emin olamadım sizce birden fazla buton algılamada ne kullanabilirim?
18F4550 de Rb0 dan başka Rb1,Rb2 de kesme mevcut.

selimkoc

Rb Change (Rb degişim kesmesinde pinin konumunu test ederek yapabilirsin.

ete

18F4550 işlemcinin 3 harici kesme pini vardır. Bunlar , PORTB.0 - PORTB.1 ve PORTB.2 pinleridir.
Bunlardan ikisini kullanabilirsin. Biraz data sheet incelemekle bu işi başarabileceğini düşünüyorum.
Bunların hepsi senin işini görür. INT0 yani PORTB.0 kesmesi için INTCON registeri 4. nolu biti, INT1 yani PORTB.1 kesmesi için INTCON3 registeri 3. nolu biti ve INT2 yani PORTB.2 kesmesi için INTCON3 registeri 4. nolu biti tarafından kontrol edilmektedir.
Bu kesmelerin yükselen kenar mı yoksa alçalan kenardamı kesme oluşturacağı INTCON2 registeri tarafından kontrol edilmektedir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Maxim

Tek analog girişten istediğiniz kadar buton kontrolü yapabilirsiniz

diot

Ben bazı klevye bi tuş takımlarında gördüğüm şu ki  bütün girişler birer diotla birleştirilip interrupt girişine verilmiş. yani 4 bitlik bir giriş varsa 4 girişten birer diot ile birleştirme yapılıp kesmeye uygun hale getirilip kesme girişine veriliyor. Bazı tuş takımlarındada 3 uçlu kontak bulunuyor. Bu tuşa bastığınızda 3 uc bir birine kısa devre oluyor. 3. uçlar kesme için kullanılıyor.

Okan AKÇA