podlaczylem do ATEMGI16 ten nieszczesny przetwornik na I2C i zaprogramowalem Atmege w Bascomie
przetwornik przesyla dwa bajty z opdpowiedzia - najpierw bardziej znaczacy a potem mniej znaczacy
problem w tym ze ten mniej znaczacy plywa -wartosci wygladaja jakby byly losowe
nie ma reguly co do monotonicznosci wartosci pokazywanej
ma moze ktos jakis pomysl czego tomoze byc wina?
przesylam listing programu w bascomie do komunikacji po I2C z ADS7828
$crystal = 8000000
Config Sda = Portc.1
Config Scl = Portc.0
I2cinit
Config I2cdelay = 10
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portd.7 , Rs = Portc.7
Dim K11 As Byte , K12 As Byte , K13 As Word , K14 As Word , K15 As Word , N1 As Single
Dim K21 As Byte , K22 As Byte , K23 As Word , K24 As Word , K25 As Word , N2 As Single
Dim Zapis As Byte , Komenda1 As Byte , Komenda2 As Byte , Odczyt As Byte
Zapis = &B10010000
Odczyt = &B10010001
Komenda1 = &B10000100
Komenda2 = &B11010100
Do
I2cstart
I2cwbyte Zapis
I2cwbyte Komenda1
I2cstart
I2cwbyte Odczyt
I2crbyte K11 , Ack
I2crbyte K12 , Nack
I2cstop
'I2cstart
'I2cwbyte Zapis
'I2cwbyte &B10000000
'I2cstop
I2cstart
I2cwbyte Zapis
I2cwbyte Komenda2
I2cstart
I2cwbyte Odczyt
I2crbyte K21 , Ack
I2crbyte K22 , Nack
I2cstop
'I2cstart
'I2cwbyte Zapis
'I2cwbyte &B11010000
'I2cstop
K13 = K11 * 256
K23 = K21 * 256
K14 = K12 + K13
K24 = K22 + K23
K15 = 5 * K14
K25 = 5 * K24
N1 = K15 / 4096
N2 = K25 / 4096
'N1 = N1 * 100
'N2 = N2 * 100
Cls
Locate 1 , 1
'Lcd Bin(k12)
Lcd N1
Locate 2 , 1
'Lcd Bin(k22)
Lcd N2
Waitms 250
Loop
End
przetwornik przesyla dwa bajty z opdpowiedzia - najpierw bardziej znaczacy a potem mniej znaczacy
problem w tym ze ten mniej znaczacy plywa -wartosci wygladaja jakby byly losowe
nie ma reguly co do monotonicznosci wartosci pokazywanej
ma moze ktos jakis pomysl czego tomoze byc wina?
przesylam listing programu w bascomie do komunikacji po I2C z ADS7828
$crystal = 8000000
Config Sda = Portc.1
Config Scl = Portc.0
I2cinit
Config I2cdelay = 10
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portd.7 , Rs = Portc.7
Dim K11 As Byte , K12 As Byte , K13 As Word , K14 As Word , K15 As Word , N1 As Single
Dim K21 As Byte , K22 As Byte , K23 As Word , K24 As Word , K25 As Word , N2 As Single
Dim Zapis As Byte , Komenda1 As Byte , Komenda2 As Byte , Odczyt As Byte
Zapis = &B10010000
Odczyt = &B10010001
Komenda1 = &B10000100
Komenda2 = &B11010100
Do
I2cstart
I2cwbyte Zapis
I2cwbyte Komenda1
I2cstart
I2cwbyte Odczyt
I2crbyte K11 , Ack
I2crbyte K12 , Nack
I2cstop
'I2cstart
'I2cwbyte Zapis
'I2cwbyte &B10000000
'I2cstop
I2cstart
I2cwbyte Zapis
I2cwbyte Komenda2
I2cstart
I2cwbyte Odczyt
I2crbyte K21 , Ack
I2crbyte K22 , Nack
I2cstop
'I2cstart
'I2cwbyte Zapis
'I2cwbyte &B11010000
'I2cstop
K13 = K11 * 256
K23 = K21 * 256
K14 = K12 + K13
K24 = K22 + K23
K15 = 5 * K14
K25 = 5 * K24
N1 = K15 / 4096
N2 = K25 / 4096
'N1 = N1 * 100
'N2 = N2 * 100
Cls
Locate 1 , 1
'Lcd Bin(k12)
Lcd N1
Locate 2 , 1
'Lcd Bin(k22)
Lcd N2
Waitms 250
Loop
End