AD5204

Başlatan Yasin, 26 Temmuz 2014, 02:20:56

Yasin

AD5204, 4 kanal dijital pot. entegresini PBP ile kontrol edemiyorum. A, B, C, D isimli değişkenlerimi entegreye yükleyemiyorum. Yardımcı olursanız sevinirim.

ete

Aslında çalışmanı buraya koyman daha doğru olurdu. Böylece bakım nerede hata yaptığını söyleyebilirdik.
Koymadığına göre genel anlamda olması gerekenleri anlatmak gerekiyor.
Bu digital potansiyometre içinde 4 adet pot mevcut. Bunların seçimini POT_NUM isimli değişken ile yapacağımızı varsayalım.
POT_NUM=%00000000  ise 1 nolu pot seçilmiş olacak (RDAC#1)
POT_NUM=%00000001  ise 2 nolu pot seçilmiş olacak
POT_NUM=%00000010  ise 3 nolu pot seçilmiş olacak
POT_NUM=%00000011  ise 4 nolu pot seçilmiş olacak

Entegrenin PR ve SHDN pinleri PULLUP ile HIGH'a çekilecek.
Bu aşamadan sonra aşağıdaki komutlarla potlara komuta etmek mümkün olur.
Bu arada CS pinine Chip_Select ucu diyelim. Bu pin pic de bir pine bağlanacak adınada Chip_Select denilecek.
CLK pini yine bir pic pinine bağlanacak adına CLK denilecek.
SDI pini bir pic pinine bağlanacak ve adına DTA denilecek. Bu esasa göre komutlarımız şöyle olmalı,

CHIP_SELECT=0
SHIFTOUT DTA,CLK,1,[POT_NUM,POT_DATA]
CHIP_SELECT=1

Hangi pot'a değer vermek istiyor isek o pata ait numarayı POT_NUM değişkenine yerleştireceğiz.
Pot normal şartlarda sıfır dahil 256 kademe değer alabiliyor. (0-255 arası) Verilecek pot değerinide POT_DATA isimli değişkene yerleştirip yukarıdaki komut satırları ile direk pota yazabiliriz.
Mesela 1 nolu potu tam orta konuma getirelim.

POT_NUM=0
POT_DATA=127
CHIP_SELECT=0
SHIFTOUT DTA,CLK,1,[POT_NUM,POT_DATA]
CHIP_SELECT=1

Şeklinde bu değerleri ilgili pota yazmış oluruz.

Dene ve sonucıda burada bildirki yaptığımız işin doğru olup olmadığını bizde anlayalım.

Ete

Yasin

#2
İlk önce şöyle denedim:

POTKONTROL:
CS=0
SHIFTOUT DTA,CLK,1,[%00000000,VOLUME]
SHIFTOUT DTA,CLK,1,[%00000001,BALANCE]
SHIFTOUT DTA,CLK,1,[%00000010,TREBLE]
SHIFTOUT DTA,CLK,1,[%00000011,BASS]
CS=1
RETURN


Çalışmayınca tek veri yazmayı denedim:

POTKONTROL:
CS=0
SHIFTOUT DTA,CLK,1,[%00000000,VOLUME]
CS=1
RETURN


Her iki kod ile denememde PIC'in pot için ayrılmış çıkışlarında hiç bir hareket yok.

ete

Kodlarda hata yok. Tabiiki programın geri kısmına ve bağlantı şemasınada bakmak gerekir. Entegrenin 2 tane data pini mevcut. SDI ve SDO. Kullanman gereken SDI pinidir. Ayrıca SHDN ve PR pinlerine pullup yapılması gerekmektedir. Bu şekilde çalışması gerekir. Yinede çalışmıyorsa entegre bozuk olabilir. Yada pic programının çalıştığından emin olmak gerekir.

Ete

Yasin

Alıntı yapılan: ete - 26 Temmuz 2014, 12:36:47
Kodlarda hata yok. Tabiiki programın geri kısmına ve bağlantı şemasınada bakmak gerekir. Entegrenin 2 tane data pini mevcut. SDI ve SDO. Kullanman gereken SDI pinidir. Ayrıca SHDN ve PR pinlerine pullup yapılması gerekmektedir. Bu şekilde çalışması gerekir. Yinede çalışmıyorsa entegre bozuk olabilir. Yada pic programının çalıştığından emin olmak gerekir.

Ete

Devreyi Isis'te deniyorum. Bağlantılar doğru. Çözemedim gitti.

Yasin

#5
Hex'in kayıt yerindeki karışıktan dolayı pot çalışmıyormuş. Bu sorunu düzelttikten sonra şu kodu denedim:

POTKONTROL:
CS=0
SHIFTOUT DTA,CLK,1,[%00000000,VOLUME]
SHIFTOUT DTA,CLK,1,[%00000001,BALANCE]
SHIFTOUT DTA,CLK,1,[%00000010,TREBLE]
SHIFTOUT DTA,CLK,1,[%00000011,BASS]
CS=1
RETURN


Yukarıdaki kodda sadece potun 4. kanalına veri yazabiliyordu. Bende şöyle yaparak sorunu çözdüm:

POTKONTROL:
CS=0
SHIFTOUT DTA,CLK,1,[%00000000,VOLUME]
CS=1
CS=0
SHIFTOUT DTA,CLK,1,[%00000001,BALANCE]
CS=1
CS=0
SHIFTOUT DTA,CLK,1,[%00000010,TREBLE]
CS=1
CS=0
SHIFTOUT DTA,CLK,1,[%00000011,BASS]
CS=1
RETURN

Powered by EzPortal