Hallo! Ist es möglich mit einem AT89C51ED2 einen Takt für I2C zu erzeugen der größer als 100khz ist? Ich würde gerne einen Takt zwischen 200 und 400 khz erzeugen wollen aber der AT89C51ED2 scheint da nicht geeignet zu sein. Wäre nett wenn jemand eine Antwort hätte. MfG Norad
Norad wrote: > Ich würde gerne einen Takt zwischen 200 und 400 khz erzeugen wollen aber > der AT89C51ED2 scheint da nicht geeignet zu sein. Der ED2 hat kein HW-I2C, Du mußt es in SW machen (nur Single Master möglich). In Assembler sind 400kHz kein Problem. Peter
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
moin moin, welche Taktfrequenz benutzt Du? Die schnellste Variante: ;IN: I2C := [A] ;OUT: CY := ACK I2C_WBYTE: REPT 8 RLC A MOV I2C_SDA, C SetB I2C_SCL CLR I2C_SCL EndR SetB I2C_SDA SetB I2C_SCL MOV C, I2C_SDA CLR I2C_SCL RET mfg Pieter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.