Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

PIC ile Klavye Yapmak....

Başlatan XErTuX, 03 Kasım 2008, 02:18:33

XErTuX


muhittin_kaplan

konu 3 de başlayıp 8 de kapanmış. sanırım cihazı yapmışsınız. yanlı zbenim öğrenmek istediğim Caps veya Scroll lockları nasıl yakalyorsunuz.

XErTuX

Yakalamak derken?

Lock ışıkları için pic'in herhangi bir bacağından çıkış alınabilir. Herhangi diğer bir harf gibi lock tuşları içinde make kodları var mesela caps-lock kodunu gönderdikten sonra gönderdiğiniz harfler büyük olarak çıkıyor taki caps-lock için break kodu gönderene kadar.
mesela ilgili harfin alt programını çağırınca:

call ctrl
call alt
call delete

' ctrl alt delete yapıp sistem menüsünü açıyor.

daha sonra

call ctrl_break
call alt_break
call delete_break  yazıp harflerden elimizi çekiyoruz tarzında.

Bu arada otomatik klavyeden sonra otomatik mouse yapmayı planlıyorum ama bunun için önce pc'den veri almayı çözmem gerek, klavye için varolan kendi klavyemi biosa tanıtıp windows ortamında benim otomatik klavyeye geçtiğim için sorun olmuyordu ama mouse yapımında kesinlikle ilk aşamada pc ile haberleşmek gerekiyor.

Bunun için Tagli ustam senden yardım bekliyorum sen tecrübelisin bilgi okumak konusunda, biraz kurcaladım interrupt konusunu fakat hala acemiyim.

Pic16f88 kullanıyorum sanırım sadece PORTB nin 0. biti interrupt biti.
Anlamadığım aynı zamanda o portu çıkış olarak kullanırken nasıl olucakta bilgi çıkarken bilgi geldiğini anliyacak? yada interrupt neye göre çalışır buna bir kaynak bulamadım PORTB interrupt'ı tamam şu şu şu yapılınca çalışıyor ama neye göre lojik 1 den 0 a geçerken mi 0 dan 1 e geçerken mi? ayrıca ufak bir program yazdım şuan okuldayım ama interrupt'a girince birdaha çıkamıyorum :SS


INTCON 1001000 dı sanırım

daha sonra

on interrupt goto bilgi

basla:
enable interrupt
PORTA= $FF
pause 250
PORTA= $00
pause 250
goto basla
disable interrupt

bilgi:
disable interrupt
PORTA= $FF
pause 100
PORTA= $00
pause 100
resume

Bu tarz bir program deneme amaçlı ilk önce porta 250msn zaman ile flip-flop yapıyor PORTB nin 0. biti pull-up ile + ya çekili iken. PORTB nin 0. bitini şaseye çektiğim zaman interrupt'a giriyor fakat çıkamıyor orada kalıyor kafayı yiyor anlamadım nasıl olacak.
Bilgi ve tecrüblerinizi yazarsanız sevinirim.

Tagli

O kadar da tecrübeli değilim :) Benim örnekte clock'u ben üretmediğim için RB0 hep giriş modundaydı, sadece klavyeye emir göndermeden önce bir süre için çıkışa ayarlayıp 0'a çekiyordum böylece klavye emir geleceğini anlayıp clock üretmeye başlıyordu.

Bence işi kolaylaştırmak için clock'u başka bir bacaktan üret ve daha önce de anlattığım gibi o bacağı aynı zamanda sürekli girişe ayarlı olan RB0'a bağla. Böylece sürekli TRIS'lerle oynayıp programda cambazlık yapmana gerek kalmaz.

RB0 kesmesinin bacaktaki seviye düşerken mi yoksa çıkarken mi oluşacağı OPTION_REG'den ayarlanabilir (bit 6, gerçi ben 16F876 datasheet'inden baktım ama muhtemelen seninkinde de aynıdır).

Kesmeden çıkmamasının sebebi kesme bayrağının kalkık kalmasıdır. Bu bayrak INTCON register'ının 1. bitinde bulunur (tabi senin cihazda farklı olabilir); bir kesme şartları sağlandığı zaman kalkar ve RB0 kesmesi açıksa programı kesme vektörüne götürür. Ancak kesmeden sonra kendi kendine inmez, bunu senin indirmen gerekir kesmeden çıkmadan önce. Aksi taktirde kesmeden çıkar çıkmaz (yani GIE biti tekrar 1 olur olmaz) bayrak 1 olarak kaldığı için tekrardan kesmeye girer.

Veri okumada kesmeyi her bit için kullanmıştım. Bir sayaç koydum ve her düşen seviyede kesmeye gidip gelen biti bir register'da kaydırdım. Her kesmede sayacı bir azalttım ve sıfırlanınca da eski değerine getirip işlemin tamamlandığını gösteren başka bir biti 1 yaptım. Hiç birşey yapmadan dönen ana döngüde de bu tamamlanma bitini kontrol edip ona göre işlem yaptırdım. Gerçi istersen ilk düşüşü belirledikten sonra diğer tüm bitleri kesme bölümünden çıkmadan da halledebilirsin (düşüşü kesme kullanmadan test ederek). Ancak bu sırada PIC başka işlem yapamaz. Yine de zaman konusunda sıkıntın yoksa bu yöntemi kullanman daha kolay olabilir.
Gökçe Tağlıoğlu

XErTuX

Çok sağol
 kafamda birşeyler oluştu bugün yarın uygulamaya başlicam.

timtim

Uzun zamandır pic le uğraşmıyordum. Yakın zamanda tam da bu konuyla ilgili bi merak başladı. XErTuX hocam tebrik ediyorum amacınıza ulaşmışsınız ancak benim anlamadığım bazı yerler var. Sizinle aynı sorunları yaşayarak zaman kaybetmemek için çalışmanızı sakıncası yoksa bizimle paylaşır mısınız? Benim için çok faydalı olacağını düşünüyorum. Şimdiden teşekkürler.

eseneren

Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

electronblue

xerturk:

Son Aktif Olma Zamanı:
    27 Aralık 2009, 21:14:42

timtim

Pic konusunu ETE hocamın derslerini takip ederek ve internetten bol bol araştırma yaparak öğrenmeye devam ediyorum. Biraz daha araştırma yapıp bu konu başlığı altında baştan sona her aşamasını anlatan bir pic klavye projesini tamamlamak istiyorum. Takıldığım yerlerde herkesin yardımını bekliyor olacağım. İşe Ulusdan pic 16F877 alarak başladım bile. :)

muhittin_kaplan

Önce Ledleri yak söndür. Sonrasında yardım ederiz.

timtim

Led konusunu geçen sene halletmiştim. pic16f628 (di galiba) rgb (3 adet kırmızı, 3 adet yeşil, 3 adet mavi) ledleri software olarak oluşturduğum PWM ile sürerek her renge giren bir gece lambası yapmıştım. Kesmelerle renk değişim süresini artırıp azaltıyordum. Ama aradan geçen zamanda nerdeyse herşeyi unutmuşum :S

muhittin_kaplan

Şimdi bir adet 18f2550 alıp deneyin. hazır kodlar var. onlar işiniz görür. swordfish de kullandığım usb klavye kodları işinizi görür muhtemel.

timtim

Aman Allahım! Üstad ilginiz ve yardımınız için çok teşekkür ederim. Yarın ilk işim 18f2550 almak olacak. Yaklaşık 10 gündür internette araştırmadığım site toplamadığım kaynak kalmamıştı. Öğrenmek ve uygulamak için gerekli alt yapıyı hazırlıyordum. Bu müthiş oldu. Ancak hazır hex dosyasını alıp kullanmakdan ziyade işin mantığını ve kodları da öğrenmek isterim. Şimdi sabahı sabırsızlıkla beklemeye kaldı iş :)

timtim

Bu gün 1 sorun olduğunu fark ettim:S Elimdeki pic programlayıcı 18f2550'yi programlayamıyor. 16f877 ile birşeyler yapmaya çalışıyorum. Pic basic pro ile bu işi yapabilir miyim acaba?

t2

16f877 ile ps2 klavye yapılabilir kanaatindeyim. Tabi öncelkikle ps2 girişi olan bir bilgisayar gerekecek.