Bakar mısınız, boşta kalan pinler çözüm üretmem gerek(?)

Başlatan zamzam23, 21 Şubat 2012, 09:44:23

zamzam23

Arkadaşlar,

Şimdi,projede bir ana kart var bir de tuşların olduğu küçük kart var. Bu iki kart birbirine yassı kablo ile bağlanıyor. Tuşların bağlantısı şu şekilde:

Problemim şu:
Ben tuşların oldugu kucuk kartı devreden ayırdıgımda, kartın çalısmasına devam etmesini istiyorum. fakat şöyle bir hata yapmısım. tuslara basılmaz iken, işlemcinin pinlerini topraga ceken 10K direncleri(R54), küçük karta koymusum. dolayısıyla kucuk kartı devreden ayırınca, işlemcinin ilgili pinleri bosta kalıyor.bu durumda kart bir müddet calısıyor sonra olur olmaz yerde kilitleniyor. Problem bahsettiğim seyden kaynaklanıyor çünkü tuşların bağlı oldugu pinleri çıkıs yapıp sıfır verdiğimde, kartı ayırdıgım zaman işlemci calısmasına devam ediyor.fakat bu durumda da tuşları tuş olarak kullanamıyorum.
işlemcim 18f4520, kullandıgım dil ccs c.

sizin öneriniz nedir? ne gibi birşey düşünebilirim.en son çare kartı yeniden çizmek. fakat ondan önce baska neler yapabilirim?

Ben şöyle birsey yaptım ancak tam bir cozum olmadı:

tusların 3 tanesını gerekmedıgı zamanlar cıkıs yapıyorum. fakat 1 tanesi sürekli tus olarak kalmalı ki o tusa bastıgım zaman, diğer 3 tusu tekrar giriş yapıp tus olarak kullanabileyim.fakat  o bosta kalan pin bile, işlemcinin kilitlenmesine yetiyor.

JKramer

İlgili pin'lerdeki (varsa) dahili pull-up'ları kullanmayı deneyebilirsiniz, bunun dışında kartı değiştirmeden yapabileceğiniz pek bir şey yok gibi. Bir de bu tip (pull-up veya pull-down) dirençler olabildiğince mikrodenetleyiciye yakın olmalı, bence siz kartı tekrar çizin.

Kabil ATICI

Ana kart üzerinde yeterli yerin varsa (kablo bağlantıların uygunsa) sıra direnç kullanabilirsin.(sipp)
ambar7

zamzam23

Alıntı yapılan: JKramer - 21 Şubat 2012, 10:06:25
İlgili pin'lerdeki (varsa) dahili pull-up'ları kullanmayı deneyebilirsiniz, bunun dışında kartı değiştirmeden yapabileceğiniz pek bir şey yok gibi. Bir de bu tip (pull-up veya pull-down) dirençler olabildiğince mikrodenetleyiciye yakın olmalı, bence siz kartı tekrar çizin.

hocam pinler portB de. dahili pullup var. fakat dereye bakarsanız, tuslar 1 gelince calısıyor. yanı bostayken pulldown yapmısım. dolayısıyla dahili pullup, "tusa sürekli basılı" anlamına gelır.ayrıca, kucuk tus kartı takılı iken de devrenın calısması gerektıgını dusunursek, kart takılıyken hem pulldown hem pullup yapılmıs olur pinler. bu da sorun cıkarabılır.denemedım ama cıkarır sanıyorum. ilginiz için teşekür ederim.

JKramer

Haklısınız, butonların çalışma şekline dikkat ettim de aşağıdakini gözden kaçırmışım:
Alıntı yapılan: zamzam23 - 21 Şubat 2012, 09:44:23
...
tusların 3 tanesını gerekmedıgı zamanlar cıkıs yapıyorum. fakat 1 tanesi sürekli tus olarak kalmalı ki o tusa bastıgım zaman, diğer 3 tusu tekrar giriş yapıp tus olarak kullanabileyim.fakat  o bosta kalan pin bile, işlemcinin kilitlenmesine yetiyor.

mufitsozen

Alıntı yapılan: zamzam23 - 21 Şubat 2012, 10:25:17
hocam pinler portB de. dahili pullup var. fakat dereye bakarsanız, tuslar 1 gelince calısıyor. yanı bostayken pulldown yapmısım. dolayısıyla dahili pullup, "tusa sürekli basılı" anlamına gelır.ayrıca, kucuk tus kartı takılı iken de devrenın calısması gerektıgını dusunursek, kart takılıyken hem pulldown hem pullup yapılmıs olur pinler. bu da sorun cıkarabılır.denemedım ama cıkarır sanıyorum. ilginiz için teşekür ederim.

Programinizda kucuk bir degisiklik yapin,

  • kullandiginiz 4 pinide dahili pullup yapiniz
  • programa yapacaginiz bir ek ile eger 4 pin birden belli bir sureden(ornegin 15sn/30sn yada 1dk) daha cok basili gibi algilaniyorsa bunun kart takili olmadigi icin oldugunu varsayin ve girdileri kaale almayiniz
  • eger bu dort tustan herhangi biri bir kere bile basili degil diye bir girdi alirsaniz birinci basamakdaki kontrolu tekrar yapmaya baslayiniz

iki durumlu bir mantikla (two states) bunu yapabilirsiniz, program icin yeterli bos yeriniz oldugu varsayimi ile

kolay gelsin
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

zamzam23

Alıntı yapılan: mufitsozen - 21 Şubat 2012, 10:56:44
Programinizda kucuk bir degisiklik yapin,

  • kullandiginiz 4 pinide dahili pullup yapiniz
  • programa yapacaginiz bir ek ile eger 4 pin birden belli bir sureden(ornegin 15sn/30sn yada 1dk) daha cok basili gibi algilaniyorsa bunun kart takili olmadigi icin oldugunu varsayin ve girdileri kaale almayiniz
  • eger bu dort tustan herhangi biri bir kere bile basili değil diye bir girdi alirsaniz birinci basamakdaki kontrolu tekrar yapmaya baslayiniz

iki durumlu bir mantikla (two states) bunu yapabilirsiniz, program icin yeterli bos yeriniz oldugu varsayimi ile

kolay gelsin

hocam teşekkür ederim. şimdi bunu üzerinde calısıyorum yalnız şöyle bir durum var.
pinler,kart takılı iken normalde, 10K ile pulldown. ben bu pinleri dahili pullup yaparsam, pinlerde 2.5V okuyorum. ve pic bunu logic 1 algılıyor. kritik seviyede oldugu için bunu bi logic 1, bi logic 0 olarak algılaması muhtemel midir?
dediğinizi yaparsam şu oluyor:
pinler sürekli 5V.
kart takılı olsa da olmasada.

iki durum söz konusu:
1-) küçük kart takılı iken
2-)küçük kart takılı değil iken

bu iki durumda da pinler bos kalmamalı ve ayrıca da tusları kullanabılmelıyım.




mozkan87

Eğer imkanınız var ise küçük karta gelen gnd ile Vdd nin yerini değiştirin ve yazılımdan pullup ları aktif edin ve butonlar GND ye çekildiği zaman çalışacak şekilde ilgili yazılım kısmını düzeltin. Kolay gelsin.

CaFFeiNe

üretim adedi yüksek değilse kart üzerine dirençler uzay montajda yapılabilir

z

İşlemcinin kendi pull up dirençlerini devreye sok.
Tuş kartındaki tuş ile Gnd arasındaki 10K ları sök.
Tuşlara bağlı 1K ların +5v a giden uçlarını Gnd ye bağla.

Tuşa basıldığını  H olarak algılayan mevcut yazılımı, yeni duruma göre L olarak algılayacak şekle dönüştür.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

papsukkal

işte bir öneri daha

yazılıma girebiliyorsan eğer loj.1 ile değil de loj.0 ile butonu aktif et ve küçük tuş kartını yeniden düzenle. dahili pull-up dirençlerinden faydalanabilirsin böylece