PIC Ve Seri Portla Bağlanan Harici Cihaz

Başlatan msimsek23, 03 Şubat 2005, 12:13:32

msimsek23

Elimde PC'ye  seri porttan bağlanan bir reader var.Ben visual basic'te bununla ilgili bir uygulama yaptım ama artık PC'yi aradan çıkartmak istiyorum.Advanced serial port monitör isimli bir programla verdiğim komutları ve cevapları hex olarak yakalayabiliyorum.

 Geçen hafta proton + complier'ın manuel'ini okudum ve çok hoşuma gitti.Yukarıda bahsettiğim işi bu complier ile yapmak istiyorum.Yani PIC'le devreyi oluşturucam ,devre çıkışına bir seri port (dişi) fiş takıcam.Readerı bağladığımda bağladığım butonlarla istediğim hex kodları göndericem cevapları alıp yine programla yorumlayıp sonuca göre LCD'ye yazdırıcam.Ne demek istediğimi az çok anlamışsınızdır.İstediğim şey nereden başlamak gerektiği.Sanırım en önemli nokta PIC'te seri port iletişimini kavrayabilmek.Fikirlerinizi bekliyorum.Tabiki örnek olabilecek kodlarınızıda.Teşekkür ediyorum...

serdarkaradeniz

Elindeki cihazın ne olduğunu bilmiyorum. Yalnız Pic ile PC 'yi haberleştirmek için Level Converter kullanmalısın (ST232CN gibi) Senin bu cihaz direk olarak 232 sinyal seviyesinde bir voltaj veriyorsa seninde pikli devrenebunu koyman gerekir. Yok cihaz haberleşmede 0 ile 5 vdc logic kullanıyorsa ozaman problem yok direk donanım olarak pic ile haberleşebilir. Gelelim olayın yazılım boyutuna bunun için senin cihazın protokolünü bilmelisin. Yani ne le veri okursun yazarsın gelen cevabın formatı nedir. heberleşme hızı nedir vs...

Mnemonic

bende arkadasıma katılıyorum bence buyuk ıhtımalle 232 entegre kullanmak gerekır cunku cıhazın dırek olarak pc'nın seri portuna takıldıgından bahsetmıs onemlı olan kısım bu degıl koyarsın araya gecer sadece voltajı konvert etmek ıcın kullanırsın
serı port uzerıne bır kac projeyle ugrastım bazen ufak tefek sorunlar cıkabılıyor bunun basındada kullandıgın pic osc hızının kullanmak ıstedıgın seri port hızına uyduramaman gibi mesela 4 mhz kristal kullanarak hızıda 9600 bpsd e tutatsan hemen hemen hıc sorun kalmıyor gerı kalan ıs senın kodunu guzel yazmanda kı zaten programcı oldugunu soyluyorsun bununda cok farkı yok bunuda yazarsın :)

msimsek23

Öncelikle cevaplar için teşekkür ederim.


 PIC microcontroller'lara yabancı değilim,daha önce yazılımda yaptım fakat bir şekilde ne evde nede iş yerinde pratik  elektronikle uğraşabileceğim mekan yok (elektronik mühendisi olmama rağmen :( ).Yani en son 1.5-2 sene önce pic'le bi program yazmıştım şu an aklımda kalan çok az şey var.Bu devrenin seri port iletişimi kullanması işi daha da farklı hale getiriyor.

Neyse konumuza dönersek,9600 baud rate bana da uygun gibi geldi.Keza ACR marka bu readerların(smart kart reader) daha farklı modelleriyle çalıştığımda 57600'e kadar geniş bir alanda çalıştığını gördüm( componentlerle kendiniz ayarlayabiliyordunuz.Ama bu readerın lojik çalışma seviyesi benimde şu an itibari ile bilmediğim bir özelliği.

 2 buton ve bir keypad kullanmayı düşünüyorum.Visual basic'te 2 butonla herşeyi halletmiştim.Yine aynı mantığı bu kez PIC'e uyarlıcam.Yani sayılar keypad ile girilecek,kontör yükle için bir buton kontör düşür için diğer buton.Devre açılır açılmaz PIC reader'a "uyanması" için 15-20 bytelık bir data yollayacak reader buna itafen bir cevap yollayacak.Gelen 8-10 byte'lık cevabı ben Proton +'ın "Mid" komutuyla parçalayıp yorumlucam ve devre bu şekilde keypad ten rakamların yazılması,bu girilen rakamların reader'ın anlayacağı hex kodlara dönüştürülmesi ve yollanması,buna karşılık bir cevap alınması ve cevabın incelenerek LCD'de  örneğin "50 kontör düştü,kartınızda 175 kontör kaldı" gibisinden monitörlenmesi.

 Devre aynen böyle çalışacak.Aslında bu satırları yazarken aklıma güzel bir fikir geldi.Eğer ben Visual basic'te yazdığım programı PC/SC komutlarıyla yazarsam (ki bu komutlar Microsoft'un çıkardığı evrensel komutlardır ) ve bu komutları destekleyen (hemen hepsi destekliyor) bütün readerlarda çalışır.Yapmam gereken programı PC/SC ile yazmak ve komutlar ve cevaplar byte dizisini bu şekilde yakalamak.

 Sizden ricam readerın lojik seviyesinin 5 ve 0 (TTL seviyesi) olduğunu kabul ederek proton + ' ta bir giriş yapmanız.(yani code olarak).Bu complier benim için yeni bir dil ve inanın kafamı toparlıyamıyorum.Fuse lar declareler.Yani seri port kullanımı watch dog timer'lar e birde kendi işim girince araya dağılmış durumdatım.Başınızı şişirdiysem kusura bakmayın.Görüşmek üzere....

msimsek23

Mnemonic serdarkaradeniz ses çıkmadı?Diğer arkadaşlar sizlerinde yardımlarınızı bekliyorum :?

mmengi

Hocam bu yazılım ve donanım olarak başlı başına bir proje. Sen bir şeyler yapmaya başla ki bizde elimizden geldiğince takıldığın yerlerde yardımcı olmaya çalışalım. Bende dahil olmak üzere bir çok arkadaşımızın kendi projelerine yetişmeye zamanı olmuyor ve birşeyler alıp vermek için buraya zaman ayırıyorlar bu yüzden mümkün mertebe elinizden geldiğince kendiniz yol almaya çalışın ve takıldığınız yerlerde yardım istemeye özen gösterin.