Dijital Bilgi Seçme(Dönüştürme)

Başlatan SCHOTTKY, 05 Aralık 2004, 16:40:07

fsan

SCHOTTKY,
diyelimki girislerin hepsini srayla scan edip girislerdeki 60 bitlik veriyi PICde bir 60 elementli array degiskenine doldurduk.

Scan var bit[60]
***************
n var byte
cnt var byte
****************

for n = 0 to 3
low n
for cnt = 0 to 15
porta = cnt
pause 1
************************
Scan[n*16+cnt] = porta.5
************************
if (n = 3) and (cnt = 11) then exit_loop
next
high n
next

exit_loop:
** 60 giris scan edildi ve program buraya dallandi
** Aray degiskeni Scan[1..60] giristeki 0,1 bilgiler ile dolduruldu

programda geriye kalan kisim ise bazi if, then, else, sag/sol kaydirma islemleri ile hesaplanir

yukaridaki semada PIC te internal 4-MHz osc kullanirsan 7 tane pin artiyor bunlarin 6 sini kullanarak istedigin 6-bit digital cikisi elde edebilirsin.

kolay gelsin

SCHOTTKY

Çok teşekkür ederim fsan.

Ama ben bu işlemi PIC ile yapmak istemiyorum.Yapmasına yaparım benim de işime gelir ama maaliyetli olur devre.Çünkü toplam 60-bit var.Bunların hepsini bir PIC vermem gerekiyor.Yani bana 60 girişli veya 2x30 girişli bir PIC lazım.Kullanırsam 16f877 kullanmayı düşünüyorum.Anlayacağın işler iyice karışıyor.

O yüzden başka bir yöntem bulmalıyım.Bulamazsam diyot matris kullanacağım.Hem ucuz olur hem de uğraştırmaz.Gerçi 60 bit in diyot matrisinin baskılı devresini çıkarmak herşekilde insanı uğraştırır ama :) yine de daha pratik geliyor bana.

ahmetu

nerden çıktı şimdi bu 60 bitlik pic olayı şemada 60 bacaklı picmi varda ben göremedim yoksa dört tane 4067 + pic16f628 mi var hem 60 bitlik matrix için bir kucak diyot gider görende güler :lol:

Veli B.

Ben daha basit olan SHIFT REGISTER olayını merak ettim.Eğer paylaşırsan öğrenmek isterim.

fsan

bende 60 bitlik diot matrix olayini :)

z

60 ledli vumetrenin led cikislarini PIC ile okumaya benzer bir projeden bahsediyorsunuz.

Bu 60 biti ureten sensorden yada devreden bahsederseniz belki o kisma  daha uygun cozum getirilebilir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

arslan74

Selam,

Bu iş için genellikle piyasada 74hc165 yada 74hc166 kullanılıyor. Bunlar 8 bit paralel to serial shift register.

74166 için çalışma mantığı söyle. Bacaklara bağlı olan 8 bit paralel bigileri önce PL(paralel load)bacağı ile shift register yüklüyorsun.
Sonra her Clock verişinde bilgileri bir ileri kaydırır. Bilgileri serial data out ucunda okuyorsun. Yani 3 adresdeki bigiyi mı okuyacaksın o zaman sadece 3 puls veriyorsun sonra cıkıştaki bilgi 3 adresdei bilgi oluyor. 60 kanal içn ise 8 adet entegreleri birbirine seri bağlayacaksın sana 8x8 yani 64 adet bilgi girişin olur. Sonra entegrelerin Data out cıkışını diğerin data in girişine bağlayacaksın. Entegrelerin bütün clock ve PL ucları birbirlerine paralel bağlayacaksın.

Yani 64 yada ne kadar bilgi girişi istersen hiç önmeli değil bütün bilgilerine 3 bacak ile ulaşib okuyabileceksin. PIC'in SPI desteği var ise bu bilgileri okumak için özel yazılım yazmana bile gerek. PIC bunu donanımsal olarak olarak okur.

Kolay gelsin.

SCHOTTKY

katana,
benim ihtiyacım olan 60(daha doğrusu 50, son 10 bit i kullanmaktan vazgeçtim)bit i tek bir bite çevirmekti.O da şu şekilde;

1111111000 gibi bit dizilerinin en sondaki 1 bitini bulmaktı.Yani
0000001000 haline getirmekti.XOR kapılarıyla bu işi kolaylıkla hallettim.

Şimdi sırada bu dönüştürülmüş olan 50 bit in içerisindeki tek olan 1 bitinin kaçıncı sırada olduğunu bulup, bunu 16F877 entegresine ikilik düzende(6-bitlik)göndermek.

Veli B.

50 bitlik sonucu 8 bitlik 7 değişkene paylaştır.kaskat olarak her değişkeni FF ten çıkar(Kalan 2 bitlik sonuç olduğu için 7. değişkeni FF ile değil 2 ile işleme sokacaksın) .Kalan sonuç sana o değişken içerisindeki karşılığını tam olarak verecektir.7 lik bir counter ile hangi değişke içinde olaağını da tespit edebilirsin.İstatistik ile genel olarak msb ye yada lsb yakınlığını belirlersen işleme o taraftan başlatırsın ve bu sana ortalama olarak %50 hız kazandırır.