Hallo,

Zitat von
Frank
An den
I2C Routinen liegt es auch, aber stimmt natürlich, die Bytefolge ist auch falsch. Das kommt noch zu dem von mir gesagten hinzu,habe ich doch ganz übersehen. Also erst Slave Adresse dann die 5 Byte.
na ja, auf high sollten die Pegel auch nach einem Pulse wieder gehen. Der Ausgangszustand sollte ja zu dem Zeitpunkt high sein. Bei meinen Routinen für die Micro nutze ich allerdings ein doppeltes toggle. Bewirkt das gleiche, ist aber (in diesem Fall nützlicherweise) etwas langsamer.
Ich hänge den rudimentären Code (Vorsicht! Basic++) für die generischen Rotinen mal an:
Code:
'-------------------------------------------------------------------
'-------------- Rudimentäre I2C Funktionen -------------------------
'-------------------------------------------------------------------
FUNCTION IICSTART()
SDA=off
SCL=off
END FUNCTION
'-------------------------------------------------------------------
FUNCTION IICSTOP()
SDA=off
SCL=on
SDA=on
END FUNCTION
'-------------------------------------------------------------------
FUNCTION IICREAD()
deact SDA
DATA=0
MASK=80h
#INSHIFT
SCL=on
if SDA=on then DATA=(Data or MASK)
SCL=off
MASK=MASK shr 1
if MASK <>0 then goto INSHIFT
'---- 9. Takt für ACKN bzw. NACKN ----------------------------------
'ACHTUNG! Je nach Erfordernis (letzte Leseoperation
'bei sequentiellem lesen?) muss danach ACKN oder NACKN
'aufgerufen werden! Daher ist (N)ACKN hier NICHT
'Bestandteil der Funktion!
END FUNCTION
'------------------------------------------------------------------
FUNCTION IICSEND(data ref DATA)
MASK=80h
#OUTSHIFT
SDA=(DATA and MASK)
SCL=on
SCL=off
MASK=MASK shr 1
if MASK<>0 then goto OUTSHIFT
'------------------------------- 9. Takt für ACKN -----------------
deact SDA
SCL = on
SCL = off
ackflag = not sda 'Ackn von Slave gesendet?
SDA= off
end function
'------------------------------------------------------------------
function ACKN()
SDA = OFF
TOG SCL
TOG SCL
END FUNCTION
'------------------------------------------------------------------
function NACKN()
SDA = ON
TOG SCL
TOG SCL
END FUNCTION
'------------------------------------------------------------------
Definitionen und Deklarationen sind nicht enthalten, können aber bei Bedarf von meiner HP geladen werden.
Grüße
Henrik
Lesezeichen