Pic ile 125 kHz sinyal okunabilir mi?

Başlatan yilmaz.kk, 27 Şubat 2015, 23:21:06

yilmaz.kk

  Arkadaşlar selamlar;
Pic ile 125 kHz' lik bir  sayısal sinyali bit bit okuyabilir miyim? Pic 16f serisi, 20 Mhz osilatör kullanıldığı varsayılsın. Sinyal TTL seviyede olsun.

Pic her dört adımda bir işlem yaptığından hızı 5 Mhz' e düşüyor. Çok küçük kesmeler yaptığımızda (örneğin prescaler 1, TMR değişkenini 251 yaptığımızda 1 Mhz lik bir interrupt elde ederiz teorik olarak), kesmelere komutlar yazarsak çalışmıyor, ya da ben çalıştıramadım.
Bu şekilde kullanımla her 1 usn de bir girişi kontrol edip 8 usn boyunca sinyal gelmişmi gelmemiş mi diye takip edebilirim diye düşünmüştüm fakat olmadı.

Bu tarz bir çalışma yapan arkadaş öneri ve tecrübelerini paylaşırsa sevinirim.

İyi akşamlar.

ete

125 Khz lik sinyalin peryodu 8us dir Bunun yarısı HIGH ve yarısı LOW olsa 4us + 4us şeklinde bir sinyal oluşur.
Normalde frekans sayarak bu sinyali okuyabilirsin. Yada bu sinyalin peryodunu ölçebilirsin.
Bit bit okumak terimini anlayamadığım için daha fazla yorum yapamıyorum. Elbette böyle bir sinyali hassas işleyebilmek için işlemci frekansının mümkün olduğunca yüksek değerde olması gerekir. 48-64 Mhz lerden bahsediyorum. 18F serisi PLL kullanarak bu frekanslara çıkabilmektedir.

Ete

yilmaz.kk

  Peki hocam;
18f serisi ile interrupt yaparak bu sinyali okuyabilir miyiz? Bit bit dediğim olay. Mesala 30 bitlik bir sinyal geliyor. Her bir bit 1 us olduğunu varsayarsak bunu okuma yapabilir miyiz?

  Benim aklıma takılan 1 us lik interrrupt ayarladığımızda, interrupta girdiğimizde sayacı artırıp işlem yaptığımızda her bir komutu 1 cycle da tamamladığı için diğer interrupta yetişemeyebilir mi?

Örneğin arduino ile kesme yaptığımda onun osilatörü 16 mhz olmasına rağmen ve her bir cycle da bir komut işlemesine rağmen 10 khz üzeri sinyaller için kesme de başarı sağlayamadım. Kendi arayüzü ile işlem yaptığım için olabilir diye de düşündüm.

Benim merak ettiğim gerçekten bu işlem bu piclerle yapılabilir mi? 64 Mhz pll yaptığımızda yine 16 Mhz hızında komut işleyecek.

Biraz uzun oldu ama umarım derdimi anlatabilmişimdir.

İlginize teşekkürler.

ete

Pic leri ve donanımsal özelliklerini çok iyi tanımadığını düşünüyorum.
Gelen sinyali timer kullanarak okuyamayız.
Ama INT0 (yada PortB.0) kesmesi kullanarak okuyabiliriz. Bu kesme ilgili pinden giren sinyalin yapacağın ayarlama ile her yükselen kenarında yada her düşen kenarında sana kesme oluşturabilir. Bak hiç timer kullanmadık. İşlemci frekansına bağlı olarak iki kesme arasındaki zaman elbette önemlidir. ama 20 Mhz de çalışanbir işlemci bir komut çevrimi 0,2us olur.  Bu frekans ile senin sinyal çok rahat bir şekilde Puls olarak sayılabilir.
Ancak sanırım sen üzerinde bilgi bitleri taşıyan bir sinyali okumaktan bahsediyorsun. Bunu, işin niteliğini öğrenmeden söylemek zor. Sinyal bitlerini test etmeye kalktığın zaman işin içine komut gecikmeleri girer. Bu gecikmeler derleyiciye bağlı olarak senin işini engelleyebilir. Ama ASM de kesin olarak halledilebilir diye düşünürüm.
Şayet puls sayma gibi bir amacın yok ise ve gelen bitlerin süreleri senin için önem taşıyor ise yapılacak iş önce bütün süreleri bir dizi değişkenine yerleştirmek ve sonra index değişkeni kullanarak süreleri test etmek olmalıdır.
Bu teknik daha ziyade RF veya IR kumanda sinyallerinin okunmasında kullanılıyor.
Gerçi 125 Khz lik böyle bir sinyal duymadım.

Ete


yilmaz.kk

  Yükselen ya da düşen kenarda kesme yapmak bitlerin ard arda sıfır sıfır sıfır veya bir bir bir gelmesi durumunda sakınca yaratabilir. Dolayısıyla bu kullanımın uygun olmadığı kanaatindeyim.
   Problemi size doğru aktaramamış olabilirim. Şöyle söyleyelim elimizde 110100001001 gibi sayısal bir sinyal olsun. Her bir bit 8 us süresince geldiğini varsayalım. Bunu portb kesmesi ile nasıl okuyacağız.
  Ben timer kesmelerini kullanarak 1 us lik zamanlarda giriş portunu kontrol etmeyi ve 8 kontrolde de girişte bir sinyali varsa bitin 1 olduğunu tespit edebiliriz diye düşünüyorum. Burada yanlış olan yaklaşımı anlayamadım.
  Bu soruyu sormamdaki amacım eğer picler bu hızlara hiç erişemiyorsa boş yere zaman kaybı yaşamayayım.

İyi günler.

ete

Sorununu çok iyi açıklayamadığın için olası ihtimaller üzerinde durdum.
Bilgi taşıyan bitleri elbette süre bazında değerlendirmek gerekir. Bitişik bitlerde olsa okuyup 8'e bölmek ve sonuçta kaç bit peş peşe anlamak da bir çözüm olabilir. Bu şekilde bir bit okuma ihtiyacı duymadım şimdiye kadar. Uğraştığım işlerde genellikle bir bit iki farklı bitle ifade edildiğinden birer atlayarak bitleri okuyup işimi görmüştüm.
Picler bu işi yapabilir ancak işlemci frekansı mümkün olduğunca yüksek olmalıdır.
Ete


onurinci

eğer RF ID TAG okuyacaksanız, 125khz'yi bir alıcı çözümler ,alıcıdan çıkan bilgileri MCU ile yorumlayabilirsiniz,Pic^'ten elbette Frekans okuyucu oluyor,fakat bu frekansın içinde taşınan bitleri okuyabilmek için alıcı şart.

yilmaz.kk

@onurinci
Alıntı yapılan: onurinci - 28 Şubat 2015, 20:39:41
eğer RF ID TAG okuyacaksanız, 125khz'yi bir alıcı çözümler ,alıcıdan çıkan bilgileri MCU ile yorumlayabilirsiniz,Pic^'ten elbette Frekans okuyucu oluyor,fakat bu frekansın içinde taşınan bitleri okuyabilmek için alıcı şart.
Alıcıdan kastınız nedir?

@ete
Alıntı yapılan: ete - 28 Şubat 2015, 15:49:35
Sorununu çok iyi açıklayamadığın için olası ihtimaller üzerinde durdum.
Uğraştığım işlerde genellikle bir bit iki farklı bitle ifade edildiğinden birer atlayarak bitleri okuyup işimi görmüştüm.

Herhalde siz de manchester encode decode işlemi yaptınız?

Teşekkürler.




ete

Yalnız manchester değil piyasadaki rf ve Ir şifreleme entegrelerinin hemen hepsi tek bit çok bit ile tanımlar. Hepsi ile uğraştım.

Onurinci , size Rfid kodu çozecekseniz o işi kendi alıcısı yapar demek istedi. Yani refid işinde bir kartınız var ve verici olarak çalışır. Bunun birde alıcısı vardır. Üzerinde hem sinyali alıp hemde kodu çözecek entegresei mevcuttur. Çözülen kod size ya SPI yada RS232 portu üzerinden aktarılır.msiz kodu çözmekle uğraşmazsınız. Yalnızca gelen bilgiyi alıp değerlendirirsiniz bunu demek istedi.

Ete

Powered by EzPortal