Software I²C Bus

Gast #72288
Lesenswert?

Hallo Leute

Ich will einen I²C Bus aufbauen (Softwaremässig), da mein AT902313
keine I²C Hardwaremässig hat. Ich hab leider auch nicht rausfinden
können welcher AVR das schon integriert hat.
Mich interessiert es aber auch das eben über die Software zu machen.
100kHz ist wohl die obere Grenze, mit der ich den Bus fahren darf.
Ist das wirklich so und wenn, wie kann ich denn diesen Takte ab besten
und stabil erzeugen.
Ich hatte eigentlich vor einfach die Daten auf dir Leitunge zu legen
und dann eine SCL Impuls zu senden. Ungefähr einfach so

cbi (PORTD,2);  //SCL = LOW
sbi (PORTD,3);  //SDA Slave Adresse Bit 6
sbi (PORTD,2);  //SCL = High

Würde das meine Hardware danach akzeptieren? oder ist der regelmässige
Takt wichtig?
Dazu kommt noch, das der Bus ja dann wohl mit der Taktfrequenz der MCU
laufen würde, oder zumindest viel schneller als 100KHz.

Also eigentlich wollte ich einfach nach einem Beispiel zum Software I²C
fragen - hab leider nix gefunde im Forum.

Bis dann Stephan
Gast #72289
Lesenswert?

1) googlen
2) suche
3) Datenblatt/blätter

*) Auf www.atmel.com gibts eine Übersicht aller (aktuellen) AVRs, die
mit X in der Spalte TWI haben einen hardware i2c-Bus (muß aus
lizenztechnischen Gründen anders benannt werden als bei Philips)

*) 100kHz sind absoluter Nonsens, entweder 10kHz oder 400kHz (hängt von
den Bauteilen ab mit denen du kommunizieren willst. Das sind jeweils
Max. Werte, langsamer ist immer erlaubt. Frequenzstabil braucht das
ganze überhaupt nicht zu sein. Kannst also ruhig in der main Routine
abarbeiten und dich jederzeit von Ints & Co aufhalten lassen.

*) zwischen sbi und cbi kommt ein rcall wait_routine, in der loopst du
halt ein paar hundert nops durch bis du auf tmin bist - oder du taktest
mit einem Uhren-Quarz (ca.32kHz), dann reichen zwei nops und du sparst
viel Strom ;-)

grüsse leo9
Gast #72293
Lesenswert?

Asche auf mein Haupt, die "alte" i2c-Spezifikation schreibt
tatsächlich 100kHz, ich hätte jede Wette verloren, dass nur 10kHz
erlaubt waren. Mittlerweile sind wohl die 400kHz Standard und
Neuentwicklungen können sogar 3,4MHz.

grüsse leo9
Gast #72294
Lesenswert?

Na vielen dank für die Infos

Ich hab mir die "Procyon avrlib" gezogen, das sieht da sehr
interessant aus. Leider stehe ich nun vor dem gleich Problem wie vor 2
Wochen. Ich weiss nicht, wie und wo ich den Suchpfad für die
Headerdateien im AVR GCC abändern kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren