Hallo Peter!
Danke für deine Antwort!
Allerdings bekomme selbst in Assembler nichtmal 200khz hin, weil jeder
Befehl entsprechnd Zykluszeit benötigt. Ausser ich aktiviere X2 modus.
Hier mal ein kleiner Auschnitt der sende routine.
I2C_WBYTE:
PUSH PSW
MOV R3,#08h ;Zähler zur Ausgabe von 8 Bits
;### Schleifenbeginn #####
WB_LOP:
RLC A ;Bit vom Akku ins carry-bit schieben
MOV SDA,C ;Carry-Bit auf Datenleitung ablegen
SETB SCL ;Clock-Takt HIGH Bit wird gesendet
LCALL _4us ;SCL High-Time
CLR SCL ;Clock-Takt LOW es können neue Daten auf SDA
angelegt werden.
CLR SDA ;Datenleitung zurücksetzen
DJNZ R3,WB_LOP ;Wiederhole solange bis das Datenbyte gesendet
wurde
SETB SDA ;9 bit für Acknoweldge
SETB SCL ;Bereit zum empfang des Acknowledge-Bit
MOV C,SDA ;Acknowledge-Bit muss Low sein
LCALL _4us ;SCL High-Time
CLR SCL ;Clock-Takt LOW es können neue Daten auf SDA
angelegt werden.
CLR SDA ;Datenleitung zurücksetzen
POP PSW
RET
Vielleicht hast Du noch einen Tipp wie man das senden schneller machen
kann.
Mfg
Norad