PIC'e PT2260 Nasıl Çözdürülür?

Başlatan selobaba06, 08 Eylül 2007, 21:59:39

selobaba06

Selam arkadaşlar,
Benim derdimde PIC 16F628 yada başka bir PIc ile Decoder yapmak. yani PT2260 encoder ile gönderilen adres ve data bilgisini PIC ile

çözdürüp Pic'in portlarına paralel olarak göndermek bir yerlerde manchester code protokolü diye birşeyler okudum ama bilgilerim

proğramı yazmaya yeterli değil. picbasic pro kullanıyorum. bu işi nasıl çözebilirim bilgisi olanlar lütfen acil yardımcı olurlarsa

sevinirim.
teşekkürler.

ete

Önce PT2260 ın data sheetini incelemekle işe başlaman gerek. İnceleyince göreceksin bir bitlik bir bilgi ki bu HIGH yada LOW yada FLOAT olabilir, 1024 clock palsine tekabul etmektedir. Sonra her gönderilen paket bilgisi arasında bir senkron bilgisi olduğunu göreceksin. İşin temeli burada başlıyor. Sen öncelikle senkron bilgisini yakalamaya çalışacaksın.
Sonra LOW yani sıfır bilgisinin 128 clock High, 384 clock LOW ve yeniden 128 Clock High ve 384 Clock Low bilgisinden oluştuğunu göreceksin.
Aynı şekilde HIGH yani Bir bilgisinin 384 clck High, 128 Clock Low ve yine 384 Clock High ve 128 Clock Low bilgisinden oluştuğunu göreceksin.
Bu aşamada Data bitlerinin başlangıcından 256 Clock (2x128) sonrasında sinyal seviyesine bakarsan,
ve hemen bu noktadan 512 Clock sonrasına yeniden  bakarsan;
Gördüğün değerler LOW+LOW ise Bit low dur.
Gördüğün değerler HIGH+HIGH  ise Bit High dır.
Gördüğün değerin ilki Low sonraki High ise Bit float dır (Yani Z bitidir)
Gördüğün gibi kod çözme işinde son derece hassas zamanlamalar söz konusudur. İşin nasıl yapılacağını kısaca yeniden toparlarsak ;
- önce kısa bir High ardından uzun bir low yakalayarak bunun senkron biti olduğunu anlayacaksın. Değilse yeniden senkron biti arayacaksın
- Senkron bitini yakalamış isen hemen ardından 256 clock palsi kadar bir gecikme koyup sinyalin seviyesine bakacak ve bunu bir yere kayıt edeceksin.
- Ardından 512 Clock palsi kadar bir gecikme daha koyup sinyalin seviyesine tekrara bakacaksın ve onuda bir yere kayıt edeceksin.
Sonra mukayeseni yapacaksın.
-LOW+LOW ise bit LOW
-HIGH + HIGH ise bit HIGH
- LOW + HIGH ise Bit Z yada Float dır.
Zamanları Clock palsi cinsinden verdim. Çünki PT2260 tek dirençli bir osilatör kullanır ve bu sinyalleri osilatör değerine bağlı olarak değişik frekanslarda verir. Yapılacak iş önce vericinin hangi osilatör frekansında bu dataları verdiğini bulmak yada hesaplamaktır. Ondan sonrası çok zor değil.

Bütün bunların yalnızca PBP ile yapılması mümkün ancak son derece zor. Zira komut gecikmeleri sana kolayca yapam gerekeni yaptırmayacaktır. Rahat etmek için işin içine ASM ninde girmesi en azından hassas zamanlamalar ASM de yapılmalıdır.
Bilgi seviyeni bilmiyorum. Ancak böyle bir işi yapmaya kalktığına göre bilgin iyi olmalı. Ben sana yolunu gösterdim gerisini sen halledersin artık. En azından bu işi kıvırıp kıvıramıyacağını kendin anlayabilirsin.

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

selobaba06

öncelikle açıklamalarınız için çok teşekkürler. lakin bu bahsettikleriz beni aşar gibi gözüküyor zira skop felan gerekli gibi geldi bana
PT2260 da 2M osilatör direnci kullanılıyor flot durumuna da gerek yok sadece LOW ve HIGH adres ve datayı oğrenmem yetecek.
Mikroelektronikanın microbasic inde manchester code kullanımını anlatmış ama detaylı bilgi yok sizinle nasıl konuşaşabiliriz? bende ankaradayım.
selobaba06@yahoo.com.tr a msn yada tel verebişlirmisiniz?
bilgiler benim için çok önemli
teşekkürler

ete

Manchester Kodu daha farklı bi kodlama sistemi. Benzer özellikler var. Sonuçta Manchester kodunda da her bit iki bitle ifade edilmektedir. Örneğin High=HIGH+LOW   (1=10)  , LOW=LOW+HIGH   (0=01) şeklinde.
Bütün bitlerin süresi aynı.

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

remzi

ETE ustam 8 adres bit 4 data bit ardındanda senkronize bitmi geliyor?
Eğer böyle ise adamlar senkron bitini neden sona koydular acaba?

ete

Sonda yada başta olması fark etmez.
Bir bilgi paketinin sonunda yer alan bir senkron biti kendisinden sonra gelen bilgi paketinin başında demektir aynı zamanda!!! öyle değilmi?.
Bu nedenle önemli olan senkron bitinin olması ve bu bitin yakalanmasıdır. Yeri önemli değildir.

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

remzi

Mesela bi tuşa basılı tuttuğumuzda birinci data paketi ile ikinci data paketi arasındaki bekleme süresi ne kadar?

ete

Data sheet de yazan bilgileri burada sormanız anlamsız. Her türlü bilgi orada var bakmayı alışkanlık haline getirin lütfen.

Sorduğun soru üzerine data sheete baktım ve şunları buldum.
Her bir data paketi code word denilen 12 bitlik adres ve data bilgisini ifade ediyor. Bu bilgi yollandıktan sonra araya bir senkron bilgisi koyuluyor. SOnra yeniden ikinci word bilgisi yollanıyor (aynı bilgi yeniden)
Sürelere gelince; önce sorunu cevaplayayım. 1 senkron bilgisi;
- 1/8 bit genişliğinde yani 4 clock palsi süresi kadar HIGH sinyali ve ardından 124 clcok palsi süresine sahip LOW sinyalinden oluşuyor. Toplam 128 clock pals süresi.
Süreleri clock palsi cinsinden vermişler çünki bu aletler sabit frekansla çalışmıyor. Seçtiğiniz dirence bağlı olarak clock frekansıda değişmektedir.
Diyelimki 100 KHz lik bir osc frekansınız var. O halde bir pals süreniz 1000000/100000 = 10 us dir.
Bu durumda senkron palsi süresi   128 x 10 = 1280 us = 1,28 ms olacaktır.
Bu süre iki bilgi arasındaki süre miktarıdır.

Bilgi paketi süresinide ben ilave edeyim;
1 bitlik bilgi süresi 32 clock pals'i kadar süre tutuyor.
Adres ve Data bilgisi toplamı 12 bit olduğuna göre,
12 x 32 = 384 clock palsi süresi kadar  tutacaktır. Önceki örneğimizde 1 clock süresi 10 us olunca bilgi paketi süresi;
10 x 384 = 3840 us = 3,84 ms olacaktır.

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

remzi

Datasheete bakma alışkanlığına sahibim. Soru sormadan önce baktım fakat bekleme süresi göremedim. Meğer bekleme süresi senkron bilgisi kadarmış.

Teşekkür ederim...