dışardan lojik veri alıp pic'e kaydetmek ???

Başlatan koray692, 23 Mayıs 2017, 12:17:25

koray692

Merhaba arkadaşlar ben dışardan gelen bir dizi lojik veriyi pic in bir bacağından alıp sürelerini hesaplayıp bir array a kaydetmek istiyorum sonrada bu veriyi tekrar başka bacaktan istediğim zaman kullanmak istiyorum.Capture moduna baktım ancak onda bir periyodun zamanını veriyor aklıma şu geldi mesala lojik 1 gelirken timer saymaya başlasın lojik sıfır geldiğinde timer dursun başka bir timer lojik 0 ı saysın ve bir değişkene kaydetsin.En kolay yolu bu mudur sizce ? Nasıl yapabilirim en kolay yoldan.Yapacağım şey tam olarak televizyon kumandasını pic e bağlanmış diyota dogru tutatak her hangi bir tuşuna basacam ve kumanda dan çıkan kızıl ötesi ışınlardan giden veriyi pic in içine kaydetmiş olacam bu veriyi daha sonra başka bacaktan (kızıl ötesine bağlı) aldığım zaman kumandanın o tuşuna basılmış gibi televizyon ile iletişim kuracam. Analog dersinde modulasyon yapılıyordu ama bu şekilde işe yarar mı bilmiyorum ?

JOKERAS

Uzaktan kumandalar şu şekilde çalışır.


Sabit bir 36 veya 38Khz osilatör sinyali bir transistör ile yükseltilerek
IR diyota bellirlenmiş zamanlarda uygulanır..
Mesela..
36Khz, atıyorum 800us boyunca  IR diyota uygulanır 600us boyunca beklenir.
IR diyot 800us boyunca 36Khz osilatörün peryotlarında yanar söner.


Sizin İşlemci ayağına bağlayacağınız Diyot bu sinyalleri aynen alır.
Bu sinyali dedekte etmek zorlaşır.Çünkü siz,Hamal-Taşıyıcı dalgayı da almış olacaksınız.
36Khz ile Modüle edilmiş bir sinyal demeti ile karşı karşıya kalacaksınız.


Bunun için hazır IR alıcı gözler var onlardan kullanacaksınız.
https://www.google.com.tr/search?q=IR+receiver&client=opera&hs=eFp&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi_p-_P64XUAhXRIVAKHQcQD2QQ_AUICigB&biw=1236&bih=911#imgrc=b_1ra82mmY1RvM:


İşlemci ile Kumanda sinyalini dedekte etmek yakalamak için sayısız yöntem kullanılabilinir.
Capture modülü,External İnterrupt,Port Change İnterrupt vs vs.


Bence Timer Gate interruptı bu iş için biçilmiş kaftan.


İşlemcinin ilgili Portu sürekli dinlemededir.
Bir İnterrupt gelsede İnterrupt rutinine zıplasak diye bekler.
Tabii bu sırada Timer sürekli sayıp taşmakta.
Taaki bir İnteerupt oluşana kadar.İnterrupt oluştuğu anda PC İnterrupt rutinine girer ve Timer Gate İnterruptının
Polaritesini değiştrirr


Sürekli sayan Timer tam o sırada  durur.Bu Timer Gate interrutının özelliği.
Timer'in o anki değeri ile Polarite değiştikten sonraki değer karşılaştırılıp
belli bir tölerans ile karar verilir.
Haa bu bizim sinyalimiz değil bu bir parazit. O zaman at çöpe.
Taaki doğru Header sinyali gelene kadar.
Doğru hedaer geldiğinde Pgm akışı bir anda değişir.


Kumanda işinde en önemli nokta Header sinyalidir.
Katarın anahtarı,Frame in canıdır.Gerisi datadır.
Eğerki Header doğru alınmışsa diğerleri, yani datalar onu takip edecektir.
Dolayısı ile doğru alınmış bir header varsa dataların yanlış gelmesi mümkün değilidir.


Tabii bir de toplam Frame'in zamanı vardır.
Bu zaman aralığında gelmeyen Frame doğru bile olsa Korsan Frame olabilir!
Bunun için bir Timer veya sayıcı Time Out sayar.Hiç bir Frame sonsuza dek Başı kıçı açıkta,muallakta olamaz.


İşin kısacası belli bir zaman içinde gönderilen,yine kendi içinde belli zamanlara bölünmüş bir sinyal demetini
decode etmek.


Not:Forum bozulmuş, yazdığım bir yazıyı geri almak için "delete" ettiğimde yazıların bir kısmı küçülüyor.
Tuhaf tuhaf şeyler çıkıyor.İlgili mercilere duyurulur.