I2C

Gast #1494
Lesenswert?

Hallo!

Suchen gerade auf der atmel-Page erfolglos die App-Note. Kann mir
jemand die originale Implementation posten oder eine andere gute
Variante? Habe zwar eine gefunden aber die ist glaub ich eine
selbstgestrickte sehr unflexible ohne Angaben zum Timing usw.

Danke!

Gruß
Robert
Gast #1498
Lesenswert?

@crazy horse
Ich habe vor einiger Zeit die AppNotes 320 und 322 heruntergeladen und
mit 300 und 302 verglichen. Die einzige Änderung: die Zeichenfolge I2C
wurde gegen SPI ausgetauscht. Der Rest ist identisch.

Steffen
Gast #1499
Lesenswert?

Hallo Steffen

I2C und SPI sind zwei unterschiedliche Verbindungs-Möglichkeiten
(u.a./ z.B. I2C benötigt nur 2 Leitungen / bei SPI muß man für jeden
Slave eine extra Leitung schalten, usw. )

Günter
Gast #1500
Lesenswert?

Hallo Günter
Mein Posting war wohl zu sehr aus dem hohlen Bauch heraus.
Ich habe jetzt nochmal gewühlt, um zu sehen, was ich nun eigentlich
verglichen habe. Und zwar handelte es sich um die AppNotes 300 und 302.
Allerdings aus verschiedenen Jahren. In der Version von 1997 ging es um
I²C Anwendungen, und in der Version von 2003 um TWI- Master und Slave.
Für beide Versionen gilt das oben gesagte (Ich übernehme aber keine
Garantie dafür!).

Steffen
Gast #1501
Lesenswert?

Hallo!

Also ich hab mir jetzt die ganzen Quellcodes angeguckt. Dann nochmal
das Datenblatt des Tiny26 studiert und das USI gesehen. Durch das
automatisierte Shiften und den Zähler sollte es ja wesentlich
rationeller gehen. Allerdings sind da tausend und eine Möglichkeiten
und ich blicke im Momment noch nicht durch wie ich effizient eine
Start- bzw. Stop-Condition generiere und gleichzeitig das USI ausnutze.
Kann mit da jemand mit ein paar Zeilen aushelfen? Selbe austesten wird
sehr kompliziert da ich weder Eingabe noch LCD-Ausgabe habe und somit
nur die Leds des STK500 nutzen kann um zu sehen obs funzt.

Danke!

Gruß
Robert
Gast #1502
Lesenswert?

Hallo Steffen

TWI (Two-Wire-Interface) entspricht I²C (Inter-IC-Bus) oder auch
IIC-Bus
... alles das gleiche

Atmel verwendet die Bezeichnung TWI
Phillips (die Entwickler des Inter-IC-Bus)verwendet I²C

Nur nochmals zu Komplettierung

Falls weitere / gezielte Fragen (Software / Hardware)zu I²C ... bittte
melden

Günter
Gast #1503
Lesenswert?

Hallo!

So, hab es jetzt mal mit dem App-Note 300 versucht ohne das USI. Leider
funzt das ganze nicht wirklich. Infos: Tiny26 (auch mal nen anderen
genommen) angeschlossen an STK500. Darüber soll entweder ein Fehler
oder der Inhalt der Speicherzelle $0000 ausgegeben werden die zuvor
beschrieben wurde. Taktfrequenz ist 1 Mhz onchip. Der Tiny läuft auch.
Verkabelt ist soweit ich das sehe alles korrekt. Wäre sehr nett wenn
mal jemand den Code überfliegen könnte. Beim schreiben schmeißt er wohl
keinen Fehler raus, dafür aber komplett beim Lesen. Das kann auch
eigentlich schon aufgrund der ähnlichen Sequenzen nicht sein.

Gruß
Robert
Angehängte Dateien:
Gast #1504
Lesenswert?

Ich habs Programm nur überflogen, sieht nicht schlecht aus. Nur zu
beachten: Nach dem Schreibbefehl ist das EEPROM für ca. 5ms "tot",
d.h. meldet sich nicht mit ACK zurück. Das ist die Zeit, die es zum
Schreiben braucht. Im Datenblatt steht zwar nur drin, daß das nACK nur
bei einer Schreiboperation zurückgegeben würde, ich denke aber, bei
einem Lesezugriff ist das genauso. Mach mal eine Verzögerungsschleife
von min. 5 ms zwischen Schreib- und Lesezugriff, dann sollte es
klappen.
Gast #1505
Lesenswert?

Danke!

Also ich hab jetzt per Warteschleife eine exakt 7,5ms dauernde Pause
zwischen dem Lese- und dem Schreib-Zugriff eingefügt. Jetzt habe ich
$FF als Ergebnis. Das hatte ich vorher auch schon wenn ich die
Fehler-Abfragen nicht drin hatte. Problem: Nun habe ich überhaupt keine
Anhaltpunkte mehr was falsch sein könnte...

Gruß
Robert
Angehängte Dateien:
Gast #1507
Lesenswert?

Hi!

Also das EEPROM ist ein neues 24C65 von Microchip. Es hat keinen
Writeprotect-Pin und die Adressierung ist 000 (alle Ax-Pins mit Masse
verbunden). Das EEPROM hat programmierbare Schreibschutz-Möglichkeiten,
aber da dürfte ja nichts aktiviert sein.

Gruß
Robert
Gast #1508
Lesenswert?

Ich habe noch irgendwo einen I²C-Code für einen 2313 herumliegen, da
kann man über die serielle Schnittstelle Kommandos ans EEPROM schicken.
Ich such Dirs am Wochenende mal raus (in den Tiefen der Festplatte
....)
Gast #1510
Lesenswert?

Hallo,
im Anhang das Programm.
Aber bitte nicht auf den Stil schauen - das ist eines meiner ältesten
Programme, außerdem habe ich es aus einer anderen Anwendung
herausgeschält. Fehlermeldungen werden nicht ausgegeben, der I²C-Bus
erwartet ein EEPROM mit der Adresse $A0.
Ich habe das Programm mit einem 24C256 getestet, es funktioniert.
r = lesen, anschließend vierstellig Adresse und zweistellig die Anzahl
w = schreiben, s.o.
e = löschen.
Alle Zahlenangaben in Hex.
Beispiel:
r000010 (die Bildschirmausgabe ist dann R-0000-10) liest ab Adresse
$0000 16 Bytes.
Angehängte Dateien:

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