mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C


I2C
Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Kann ich den avr at90s1200 direkt an nen i2c bis anschließen (quasi ein 
pin an sda und einen an sdl)?
zum lesen/schreiben würde ich dann jeweils das DDRn umsetzen. geht das?

mfg

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei http://www.atmel.com gibt es fertige app-notes, mit denen es nicht 
mehr schwer ist, sowas zu verwirklichen.

Autor: Robert Budde (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
wollte schon wieder meckern, aber die sind tatsächlich nicht mehr da...

Autor: crazy horse (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und die zweite

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ob das die aktuellsten waren, weiss ich nicht, die schlummern schon ein
paar Jahre in den letzten clustern. Die master-implementation habe ich
mal benutzt, die hat funktioniert.

Autor: Steffen Borkowski (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: günter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen Borkowski (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Robert Budde (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: günter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Robert Budde (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Robert Budde (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welches EEPROM hast du denn dran? Gibt welche mit write-protect-Eingang.
Ausserdem Adressierung beachtet?

Autor: Robert Budde (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
....)

Autor: Robert Budde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo thkais!

Wenn das klappen würde wäre das wirklich sehr sehr nett! 2313er habe
ich auch da so dass ich das direkt testen könnte.

Vielen Dank!
Robert

Autor: thkais (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.