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
Bei http://www.atmel.com gibt es fertige app-notes, mit denen es nicht mehr schwer ist, sowas zu verwirklichen.
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
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.
@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
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
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
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
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
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
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.
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
welches EEPROM hast du denn dran? Gibt welche mit write-protect-Eingang. Ausserdem Adressierung beachtet?
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
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 ....)
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
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.
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.