ds1844 'un potlarının degerlerini bir turlu degistiremiyor

Başlatan seferuzan, 14 Şubat 2008, 13:23:11

seferuzan

define osc 4 

kontrol var byte 


pot_0 var byte 
pot_1 var byte 
pot_2 var byte 
pot_3 var byte 

pot_4 var byte 
pot_5 var byte 
pot_6 var byte 
pot_7 var byte 


seri_data var portd.0 
seri_clock var portd.1 

pause 1000 

kontrol = %01010000 

pot_0 = %00000000 
pot_1 = %01000000 
pot_2 = %10000000 
pot_3 = %11000000 

pot_4 = %00111111 
pot_5 = %01111111 
pot_6 = %10111111 
pot_7 = %11111111 

i2cwrite seri_data,seri_clock,kontrol,0,[0,0,0,0] 

basla:    
    
        i2cwrite seri_data,seri_clock,kontrol,0,[pot_0,pot_1,pot_2,pot_3] 
        
        pause 3000 
        
        i2cwrite seri_data,seri_clock,kontrol,0,[pot_4,pot_5,pot_6,pot_7] 
         pause 3000 
    goto basla 
end


bu kodu ds1844 için yazdım.sıra ile 3 er sn ara ile tüm potlara 0 ve maksimum değeri yüklüyor olması gerekiyor.ancak avometre ile direnç ölçme yaptığımda bir türlü istediğim degerleri ölçemiyorum.3,6 K gibi bir değer ölçülüyor.yardımcı olursanız sevinirim

rercan

i2cwrite seri_data,seri_clock,kontrol,0,[pot_4,pot_5,pot_6,pot_7]

yukardaki gibi kontrol byte ından sonra  0 (sıfır) ı kaldıi2cwrite

seri_data,seri_clock,kontrol,[pot_4,pot_5,pot_6,pot_7]

bu şekilde yaz.

cünkü control byte ından  sonra hemen  data byte gelmeli. oysa pbp  adress baytınıda   kontrol bytının devamında  sayıyor

yani şöyle işliyor  

start biti+ kontrol byte+ack+stop
start +adress+ack+stop
..
.
durum böyle  olunca

senin gönderdigin bilgiler  

kontrol+adress+data oluyor

oysa dallas  entegresi kontrol + data olarak calışıyor

kontrol byte  aynı zamanda adress byte ı dır.
kontrol byte ı yerine  secmek istedigin pot adresini yaz.

sonra  data yı yaz.

tekrar   olarak

i2cwrite ,sda,scl,kontrol,[veri]

dallas chipinde(hepsinde değil  ) adress byteı gerekmiyor.