Forum: Mikrocontroller und Digitale Elektronik AT89C2051 I2C Timing


von Benshee (Gast)


Lesenswert?

Hallo

Ich Wollte mal ein paar anfängerfragen stellen.

Würde das gerne in Assembler 8051 programmieren.

Muss ich dem I2C sagen das ich ihn im normalen Geschwindigkeitsmodus bis 
100kBit/s laufen lassen will? Oder macht der das schon gleich, und kann 
dann gleich meine adresse senden und dann die Daten zum Slave.

Im Datenblatt steht ja bis zu 100kBit/s, das heist also das ich irgend 
eine langsammere Geschwindigkeit nehmen kann.

Wenn ich zwei mal eine 1 übertragen will, muss ich dann die SDA Leitung 
von 0 auf 1 und dann wieder 0 und 1 setzten oder kann ich sie 1 lassen 
und dann einfach SCL 01010101 usw. setzen??

Wie schlimm ist es wenn die LOW und high Signale  von SCL oder SDA 
verschieden lang sind aber immernoch es so im Rahmen bleibt das SDA 1 
dann SCL 010, also das erst das SDA verändert wird und dann SCL 010 und 
dann wieder SDA verändert wird und dann wieder SCL 010.

Muss dieses Acknowledge-Bit sofort abgefragt werden oder kann es auch 
paar ms dauern bis ich SCL auf 1 setze und dann mit meinem 
Mikrocontroller schaue ob der Slave die SDA Leitung runter zieht? Wie 
lange zieht er es runter ??

Wenn der Slave meinem Master was sendet, wie kann ich die 001101 an 
einem Pin dann eigentlich in ein 8-Bit register schreiben ?? muss ich 
nach anzahl der empfangenen Bits das Register mit AND oder OR Logisch 
ändern ??

Vielen Dank , English ist nicht gerade meine Stärke

von E. B. (roquema) Benutzerseite


Lesenswert?

Seit wann hat der 89C2051 ein integriertes I2C-Interface?
Das musst du schon per Software selbstmachen. Da kannst du das Timing 
dann selbst bestimmen.
Hier kannst du dir einen Code generieren.
http://www.erikbuchmann.de  --> Codegenerator

Hier eine Atmel-AppNote zum I2C Bus:
http://www.atmel.com/dyn/resources/prod_documents/DOC0593.PDF

Etwas technisches Englisch solltest du dir aneignen, sonst kommst du 
nicht weit...

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
Noch kein Account? Hier anmelden.