Hallo,
warum bekomm ich bei der I²C Hardware kein ACK zurück????![]()
Benutze die M-Munit2.0 mit Basic++
Danke im vorraus, Michi
Code:DECLARE FUNCTION i2cstart() DECLARE FUNCTION i2cstop() DECLARE FUNCTION i2cdevselect(adress AS BYTE) DECLARE FUNCTION i2cbwrite(data AS BYTE) DECLARE FUNCTION i2cgetack() DEFINE SCL AS PORT [1] DEFINE SDA AS PORT [2] DEFINE temp AS BYTE ' Programmteil Print "IIC Test Programm" for temp = 1 to 255 Print "Scanning for I2C Device at " & temp i2cstart() pause 1 i2cdevselect(temp) pause 1 i2cgetack() i2cstop() next temp end ' Unterprogramme SUB i2cstart() SDA=1 SCL=1 pause 1 SDA=0 pause 1 SCL=0 END SUB SUB i2cstop() SDA=0 Pause 1 SCL=1 pause 1 SDA=1 END SUB FUNCTION i2cdevselect(adress AS BYTE) i2cbwrite(adress) END FUNCTION FUNCTION i2cgetack() DEFINE i2c_ack_timeout AS WORD SDA = 1 Deact SDA i2c_ack_timeout=0 Do i2c_ack_timeout=i2c_ack_timeout+1 'print i2c_ack_timeout & " | " & SDA if SDA = 0 then Print "SDA EMPFANGEN" Loop Until SDA = 0 Or i2c_ack_timeout = 5000 Pulse SCL SDA = 1 END FUNCTION FUNCTION i2cbwrite(data AS BYTE) define i2c_data8 ref data at bit[1] define i2c_data7 ref data at bit[2] define i2c_data6 ref data at bit[3] define i2c_data5 ref data at bit[4] define i2c_data4 ref data at bit[5] define i2c_data3 ref data at bit[6] define i2c_data2 ref data at bit[7] define i2c_data1 ref data at bit[8] SDA=i2c_data1 'print SDA pulse SCL SDA=i2c_data2 'print SDA pulse SCL SDA=i2c_data3 'print SDA pulse SCL SDA=i2c_data4 'print SDA pulse SCL SDA=i2c_data5 'print SDA pulse SCL SDA=i2c_data6 'print SDA pulse SCL SDA=i2c_data7 'print SDA pulse SCL SDA=i2c_data8 'print SDA pulse SCL END FUNCTION







Zitieren

Lesezeichen