Hallo Jungs (und Mädels evtl.),
ich spiele gerade mit dem INA260 von TI und habe ein Problem mit der I2C Abfrage. Wenn ich das Datenblatt richtig verstehe muss ich erst den Adresspointer setzen und dann mit GESETZTEM R/W Bit die Slave-Adresse schicken um die 2 Datenbytes abzuholen.
Nun ist mir nicht bekannt das Bascom sowas unterstützen würde. Bei I2CRECEIVE wird anscheinend kein R/W Bit gesetzt wenn die Adresse geschickt wird.
CodeBox BascomAVR
Der Kauderwelsch nach dem Adressbyte ist für mich auch nicht wirklich erklärbar. Eigentlich sollte Bascom 1 Byte senden (die Adresse) und 2 Byte empfangen (die Daten). Selbst mit dem gesetzten R/W Bit sollte nicht sowas passieren. Aber naja...ist nebensächlich.
Ich habe euch mal den Code zusammengestutzt mit dem ich das teste:
CodeBox BascomAVR
Wäre super wenn jemand einen Lösungsansatz oder eine Idee hätte mit der man beim Senden das R/W gesetzt bekommt.
Gruß,
Florian
ich spiele gerade mit dem INA260 von TI und habe ein Problem mit der I2C Abfrage. Wenn ich das Datenblatt richtig verstehe muss ich erst den Adresspointer setzen und dann mit GESETZTEM R/W Bit die Slave-Adresse schicken um die 2 Datenbytes abzuholen.
Nun ist mir nicht bekannt das Bascom sowas unterstützen würde. Bei I2CRECEIVE wird anscheinend kein R/W Bit gesetzt wenn die Adresse geschickt wird.
CodeBox BascomAVR
i2creceive &B10000000,i2c_amp(1),1,2,#4
Der Kauderwelsch nach dem Adressbyte ist für mich auch nicht wirklich erklärbar. Eigentlich sollte Bascom 1 Byte senden (die Adresse) und 2 Byte empfangen (die Daten). Selbst mit dem gesetzten R/W Bit sollte nicht sowas passieren. Aber naja...ist nebensächlich.
Ich habe euch mal den Code zusammengestutzt mit dem ich das teste:
CodeBox BascomAVR
$regfile = "xm128a4udef.dat" $hwstack = 128 $swstack = 128 $framesize = 64 Config Submode = New '### Externe Dateien Einbinden $lib "xmega.lib" $external _xmegafix_clear $external _xmegafix_rol_r1014 '### Quartz definieren $crystal = 32000000 Config Osc = Enabled , 32mhzosc = Enabled Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 '### interrupt Priorität Config Priority = Roundrobin , Vector = Application , Hi = Enabled , Med = Enabled , Lo = Enabled '### I2C HW Init Open "twic" For Binary As #4 Config Twic = 100000 I2cinit #4 Dim Twi_start As Byte '### VAR dim i2c_amp(2) as Byte dim I2C_AMP_1 as Byte at i2c_amp(1) overlay dim I2C_AMP_2 as Byte at i2c_amp(2) overlay '### I2C Init ### i2cstart #4 i2cwbyte &B10000000,#4 i2cwbyte &H00,#4 i2cwbyte &B01100111,#4 i2cwbyte &B00100111,#4 i2cstop #4 'Reg auf Current i2cstart #4 i2cwbyte &B10000000,#4 i2cwbyte &b00000001, #4 i2cstop #4 '################# '### MAIN-Loop ### '################# Do Waitms 300 'Reg lesen i2cstart #4 i2creceive &B10000000,i2c_amp(1),1,2,#4 i2cstop #4 loop
Wäre super wenn jemand einen Lösungsansatz oder eine Idee hätte mit der man beim Senden das R/W gesetzt bekommt.
Gruß,
Florian